亚洲韩日午夜视频,欧美日韩在线精品一区二区三区,韩国超清无码一区二区三区,亚洲国产成人影院播放,久草新在线,在线看片AV色

您好,歡迎來到思海網(wǎng)絡(luò),我們將竭誠為您提供優(yōu)質(zhì)的服務(wù)! 誠征網(wǎng)絡(luò)推廣 | 網(wǎng)站備案 | 幫助中心 | 軟件下載 | 購買流程 | 付款方式 | 聯(lián)系我們 [ 會(huì)員登錄/注冊(cè) ]
促銷推廣
客服中心
業(yè)務(wù)咨詢
有事點(diǎn)擊這里…  531199185
有事點(diǎn)擊這里…  61352289
點(diǎn)擊這里給我發(fā)消息  81721488
有事點(diǎn)擊這里…  376585780
有事點(diǎn)擊這里…  872642803
有事點(diǎn)擊這里…  459248018
有事點(diǎn)擊這里…  61352288
有事點(diǎn)擊這里…  380791050
技術(shù)支持
有事點(diǎn)擊這里…  714236853
有事點(diǎn)擊這里…  719304487
有事點(diǎn)擊這里…  1208894568
有事點(diǎn)擊這里…  61352289
在線客服
有事點(diǎn)擊這里…  531199185
有事點(diǎn)擊這里…  61352288
有事點(diǎn)擊這里…  983054746
有事點(diǎn)擊這里…  893984210
當(dāng)前位置:首頁 >> 技術(shù)文章 >> 文章瀏覽
技術(shù)文章

Oracle8i與MS SQL SERVER之比較

添加時(shí)間:2012-11-14 16:54:48  添加: 思海網(wǎng)絡(luò) 
1、關(guān)于數(shù)據(jù)庫的概念 
我怎么找到或者創(chuàng)建自己的數(shù)據(jù)庫
Oracle的數(shù)據(jù)庫的概念已經(jīng)完全不同于MS SQL

Oracle的服務(wù)和數(shù)據(jù)庫,相當(dāng)于MS SQL的數(shù)據(jù)庫服務(wù)
Oracle的服務(wù)=后臺(tái)進(jìn)程+相關(guān)內(nèi)存

數(shù)據(jù)庫=數(shù)據(jù)文件的集合
而且Oracle的服務(wù)是完全可以與數(shù)據(jù)文件脫離開來的
那么MS SQL的數(shù)據(jù)庫,在Oracle哪兒能找到呢,
Oracle的Schema,Schema的中文意思:方案,意思是一個(gè)用戶所擁有所有對(duì)象的集合
這里的對(duì)象包括表、視圖、實(shí)例化視圖、序列、過程、函數(shù)、程序包、同義詞
(下面我會(huì)詳細(xì)解釋這其中的一些陌生的概念)

所以我們要建立一個(gè)在Oracle中的類似于MS SQL的數(shù)據(jù)庫:大致過程
·建立數(shù)據(jù)表空間(相當(dāng)于MS SQL的數(shù)據(jù)庫的數(shù)據(jù)文件)
·建立臨時(shí)表空間(相當(dāng)于MS SQL的數(shù)據(jù)庫的事務(wù)日志文件)
·建立用戶,他的卻省表空間和臨時(shí)表空間是剛建立的兩個(gè)表空間
·給用戶授權(quán),最起碼的角色權(quán)限是Connect 的角色
·以該用戶登陸,創(chuàng)建自己的表、視圖、實(shí)例化視圖、序列、過程、函數(shù)、程序包、同義詞等

2、關(guān)于Oracle Manager Server與MS SQL的Enetrprise manager
應(yīng)該說這兩者有很大的差別,DBA Studio工具提供了與MS SQL的Enetrprise manager同樣的功用,
DBA Studio工具對(duì)一般使用來說已經(jīng)足夠了。
但這里有必要對(duì)Oracle Manager Server解釋一下
·它是Oracle 管理分布式數(shù)據(jù)庫的服務(wù),注意他是服務(wù)
·它卻省并不安裝
·它需要有自己管理所需要的資料庫,在某個(gè)數(shù)據(jù)庫中需要建立相應(yīng)的用戶
·它的等錄需要身份驗(yàn)證,注意這里的身份驗(yàn)證,與管理所需要的資料庫的用戶是不是一個(gè)概念,
也不是數(shù)據(jù)庫中的Sys和、system用戶,它的卻省用戶是oemtemp
·它的功能有
·使用它,在管理端要啟動(dòng)Manager Server服務(wù)和智能代理服務(wù)(OracleAgent),被管理的數(shù)據(jù)庫服務(wù)器
要啟動(dòng)智能代理服務(wù)(OracleAgent)

3、關(guān)于Oracle 的Sys、System的用戶與MS SQL的master的比較
MS SQL的master數(shù)據(jù)庫存儲(chǔ)了當(dāng)前數(shù)據(jù)庫服務(wù)的一些配置信息如
數(shù)據(jù)庫設(shè)備(在MS SQL已經(jīng)弱化)、字符集、數(shù)據(jù)文件、登陸帳號(hào)、擁有的數(shù)據(jù)庫、整個(gè)服務(wù)參數(shù)配制等信息

Oracle的Sys存儲(chǔ)Oracle服務(wù)或者實(shí)例的信息及所有用戶的數(shù)據(jù)字典信息
這一點(diǎn)不同于MS SQL,MS SQL每一個(gè)數(shù)據(jù)庫擁有自己的對(duì)象的數(shù)據(jù)字典信息
System用戶擁有數(shù)據(jù)字典是視圖信息,有了這些視圖,我們的查詢數(shù)據(jù)庫的信息就特別方便
卻省情況下,system用戶擁有DBA系統(tǒng)角色權(quán)限,而sys不僅擁有DBA 的權(quán)限還擁有SysDBA的權(quán)限

DBA、SysDBA這兩個(gè)系統(tǒng)角色有什么區(qū)別呢

在說明這一點(diǎn)之前我需要說一下Oracle服務(wù)的創(chuàng)建過程
·創(chuàng)建實(shí)例
·啟動(dòng)實(shí)例
·創(chuàng)建數(shù)據(jù)庫(system表空間是必須的)
啟動(dòng)過程
·實(shí)例啟動(dòng)
·裝載數(shù)據(jù)庫
·打開數(shù)據(jù)庫

SysDBA,是管理Oracle實(shí)例的,它的存在不依賴于整個(gè)數(shù)據(jù)庫完全啟動(dòng),
只要實(shí)例啟動(dòng)了,他就已經(jīng)存在,以SysDBA身份登陸,裝載數(shù)據(jù)庫、打開數(shù)據(jù)庫
只有數(shù)據(jù)庫打開了,或者說整個(gè)數(shù)據(jù)庫完全啟動(dòng)后,DBA角色才有了存在的基礎(chǔ)!

4、Oracle中新的數(shù)據(jù)庫對(duì)象:實(shí)例化視圖、快照、序列、程序包、同義詞、抽象的數(shù)據(jù)類型

·實(shí)例化視圖又稱顯形圖:實(shí)例化說明他有自己的存儲(chǔ)空間,視圖:說明他的數(shù)據(jù)來源于其他表數(shù)據(jù)。
實(shí)例化視圖中的數(shù)據(jù),設(shè)置為隔一段時(shí)間更新數(shù)據(jù),更新的模式可以定義為完全更新和增量更新
·快照基本上同實(shí)例化視圖,只不過數(shù)據(jù)來源不同,快照數(shù)據(jù)來愿于遠(yuǎn)程數(shù)據(jù)庫,而實(shí)例化視圖則來源于本地?cái)?shù)據(jù)表
·序列,相當(dāng)于MS SQL中的identity列,他是一個(gè)數(shù)字順序列表
·程序包:他是過程、函數(shù)、全局變量的集合,他封裝了私有變量、私有過程和私有函數(shù)
 如:dbms_out包
·同義詞:是對(duì)數(shù)據(jù)庫中的對(duì)象的別名,同義詞可以是全局的也可以是私有的(屬于某個(gè)用戶的)
 如:Tab,col等
·抽象的數(shù)據(jù)類型,類似于C中的結(jié)構(gòu)體或Pascal記錄類型
關(guān)于類型,這里還有一個(gè)題外話:A Tab%RowType,這是一個(gè)特別的抽象的數(shù)據(jù)類型,該類型的分量就是TAB的字段
B Tab.TName%Type,這定義了一個(gè)和tab的字段TNAME相同的數(shù)據(jù)類型的變量,想想他有什么好處



5、Oracle數(shù)據(jù)庫連接和MS SQL遠(yuǎn)程連接
兩者都是為了實(shí)現(xiàn)分布式數(shù)據(jù)庫的操作。
兩者都能實(shí)現(xiàn)分布式事務(wù),參見MS SQL的聯(lián)機(jī)幫助

6、Oracle回滾段和MS SQL的數(shù)據(jù)庫事務(wù)日志文件
  回滾段提供了事物回滾需要使用的數(shù)據(jù)變化以前的映象.這些映象是按條目存儲(chǔ)的,
如果這些條目過少,一個(gè)事務(wù)等待另一個(gè)事務(wù)的幾率增大,就會(huì)影響數(shù)據(jù)庫的性能
卻省安裝時(shí),提供一個(gè)系統(tǒng)回滾段他在System表空間.為了提高性能system 表空間
不應(yīng)存儲(chǔ)有任何數(shù)據(jù)字典信息以外的信息.

MS SQL數(shù)據(jù)庫事務(wù)日志文件功能雷同于回滾段,只不過他是同特定的數(shù)據(jù)庫密切相關(guān)的

7、關(guān)于數(shù)據(jù)表的管理
·超大型數(shù)據(jù)表的管理
  一個(gè)數(shù)據(jù)表,尤其是那種流水帳表,長年累月后急劇膨脹,最后影響查詢性能
 怎么辦,Oracle和MS SQL都提供了一種方法,把數(shù)據(jù)文件及其索引存放在一個(gè)特定的
 數(shù)據(jù)文件或表空間里,但這個(gè)還是不能解決問題,怎么辦,開發(fā)人員只能給表添加
 時(shí)間的標(biāo)志:如CWSJ2000(財(cái)務(wù)數(shù)據(jù)2000),CWSJ2001,CWSJ2002, 這種命名方式,
 確實(shí)能提高查詢性能,但是給開發(fā)帶來了不少的麻煩(浪潮財(cái)務(wù)就是這樣做的),
 而且當(dāng)你不知道數(shù)據(jù)在哪個(gè)表中的時(shí)候,你要聯(lián)合這么表進(jìn)行查詢,豈不長哉!
 Oracle提供了很好的手段解決了這個(gè)問題:表及索引分區(qū)存儲(chǔ)。按字段值的范圍
 進(jìn)行分區(qū)存儲(chǔ).具體做法不在說明。

·Oracle索引組織表和MS SQL簇索引表
 兩者的數(shù)據(jù)存放順序都是按照索引值的順序存放的。

·無事務(wù)回滾概念的表,對(duì)這種表的操作不村在事務(wù)的概念
記得以前MySQL是不提供事務(wù)的回滾(不知現(xiàn)在有否變化)
而Oracle提供了建表參數(shù)nologging,使對(duì)該表的操作不參與事物的回滾

·索引
Oracle提供了多種MS SQL沒有的索引類型
··位圖索引,
比方說性別:僅有男女
第1條記錄:男
  第2條記錄:男
第3條記錄:女
  第4條記錄:男
  第5條記錄:女
  第6條記錄:男
  .........
那它的索引:110101............

看這種索引多節(jié)省空間,它適用于字段值是的已知幾個(gè)中的一個(gè)

··基于函數(shù)或者說表達(dá)式的索引,這個(gè)功能可謂強(qiáng)大

8、外連接
·MS SQL SERVER 支持兩種形式表間連接
①從Sybase繼承來的形式:
字段1 *= 字段2 (左連接)
字段1 =* 字段2 (右連接)
沒有這種形式的全外連接語法
②標(biāo)準(zhǔn)的外連接語法
left [outer] join on 邏輯表達(dá)式
  right [outer] join on 邏輯表達(dá)式
full [outer] join (全外連接) on 邏輯表達(dá)式
這里的邏輯表達(dá)式 可以是很復(fù)雜的表達(dá)式例如 :A.ID=B.ID AND (A.Parebt_ID=1 OR A.Parent_ID=2)

需要提醒大家的是:你寫的查詢語句報(bào)告過這樣的錯(cuò)誤
 Joined tables cannot be specified in a query containing outer join operators. Joined tables cannot be specified in a query containing outer join operators. View or function 'dbo.VU_CAF_BILLS' contains joined tables
這句話告訴你,你查詢語句引用的視圖或者子查詢也用到了外連接,但是引用視圖或者子查詢外連接語法與你的外連接語法不一直導(dǎo)致的
 例如:select A.[ZONE],A.FLAG,A.FlagDesc,A.CAF_NO
  from dbo.VU_CAF_BILLS A,TU_Flag
  where A.CAF_NO*=TU_Flag.ObjNo
 視圖dbo.VU_CAF_BILLS的外連接語法是標(biāo)準(zhǔn)的SQL語法,而本語句中的外連接語法卻是Sybase式的外連接語法。



·Oracle不支持標(biāo)準(zhǔn)的外連接語法,也沒有全外連接,這是它的缺陷
 字段1 = 字段2(+) (左連接)
字段1(+) = 字段2 (右連接)

·使用外連接語句的用處
①不想因?yàn)楸磉B接而使主表數(shù)據(jù)行丟失,這一點(diǎn)毋庸多說
①找某條記錄在A表存在,而在B表不存在,按常規(guī)做法使用not in (select 查詢子句)語法,
使用not in 最大的缺點(diǎn)速度慢,原因是每個(gè)數(shù)據(jù)行都去做:select 查詢子句
而使用下面的語法:
 select TU_COMPANY.*
 from TU_COMPANY left join TU_Comp_Agent on TU_COMPANY.ID=TU_Comp_Agent.CompCode
 where TU_Comp_Agent.Id is null

9、觸發(fā)器
·從我了解到的,MS SQL SERVER,僅有表的觸發(fā)器,而且觸發(fā)時(shí)機(jī)不夠豐富
如插入觸發(fā)在子,不區(qū)分單條插入還是多條插入,也不區(qū)分插入前觸發(fā)還是插入后觸發(fā)
碰到多條數(shù)據(jù)的插入,需要使用游標(biāo)處理每條插入的數(shù)據(jù)

·Oracle提供的觸發(fā)器不僅有基于表的觸發(fā)器,而且其他類型的,例如數(shù)據(jù)庫級(jí)的觸發(fā)器:數(shù)據(jù)庫啟動(dòng)、數(shù)據(jù)庫關(guān)閉
對(duì)于表級(jí)的觸發(fā)器,區(qū)分單條插入還是多條插入,也區(qū)分插入前觸發(fā)還是插入后觸發(fā)
 
10、表數(shù)據(jù)復(fù)制
·庫內(nèi)數(shù)據(jù)復(fù)制
 ·MS SQL Server
Insert into 復(fù)制表名稱 select 語句 (復(fù)制表已經(jīng)存在)
  select 字段列表 into 復(fù)制表名稱 from 表 (復(fù)制表不存在)
 ·Oracle
  Insert into 復(fù)制表名稱 select 語句 (復(fù)制表已經(jīng)存在)
  create table 復(fù)制表名稱 as select 語句 (復(fù)制表不存在)
 
·文本文件轉(zhuǎn)入、轉(zhuǎn)出的批量處理
·MS SQL Server
BCP命令行程序
·Oracle
  SQLLDR命令行程序
11、多表更新、刪除
一條更新語句是不能更新多張表的,除非使用觸發(fā)器隱含更新,我這里說的意思是:根據(jù)其他表數(shù)據(jù)更新你要更新的表
一般形式:
·MS SQL Server
 update A
 SET 字段1=B表字段表達(dá)式,
  字段2=B表字段表達(dá)式
from B
WHERE 邏輯表達(dá)式
·Oracle
 update A
 SET 字段1=(select 字段表達(dá)式 from B WHERE ...),
  字段2=(select 字段表達(dá)式 from B WHERE ...)
WHERE 邏輯表達(dá)式
 
 從以上來看,感覺oracle沒有ms sql好,主要原因:假如A需要多個(gè)字段更新,MS_SQL語句更簡(jiǎn)練

你知道剛學(xué)數(shù)據(jù)庫的人怎么做上面這件事情嗎,他們使用游標(biāo)一條一條的處理


12、關(guān)于存儲(chǔ)過程或函數(shù)中使用的臨時(shí)表,兩者都提供了這個(gè)功能
臨時(shí)表,最主要的好處是,操作不留任何痕跡、不產(chǎn)生日志,
所以速度快
 ·MS SQL SERVER
  CREATE TABLE #表名稱(........) 或者 SELECT 字段表達(dá)式列表 INTO #表名稱 FROM
  表名稱前加#即可,這些臨時(shí)表都是只在一個(gè)數(shù)據(jù)庫連接會(huì)話期間有效
  
·Oracle
  create [Global] Temporary Table ,加上[Global]就是全局的臨時(shí)表(所有數(shù)據(jù)庫連接會(huì)話都是可見的),
  不則為私有的(在一個(gè)數(shù)據(jù)庫連接會(huì)話期間有效)



13、兩者都提供了自己的桌面版的數(shù)據(jù)庫
 ·MS SQL SERVER 毋庸我多說了
  基本上桌面版的數(shù)據(jù)庫提供的功能跟服務(wù)器版的功能沒多大區(qū)別
  缺少的全文搜索服務(wù)功能
·Oracle
  Oracle Lite 8,我就看過人家用Oracle lite 8做過海關(guān)報(bào)關(guān)系統(tǒng)
 補(bǔ)充:Sybase 提供了桌面版的Sybase SQL anywhere
14、動(dòng)態(tài)執(zhí)行SQL語句
 ·MS SQL SERVER 7.0好象沒有這個(gè)功能,MS SQL SERVER 2000已經(jīng)這個(gè)功能。
  你是不是想在存儲(chǔ)過程的參數(shù)中傳遞一個(gè)表名或者在過程體里動(dòng)態(tài)
  生成一個(gè)SQL語句,你會(huì)發(fā)現(xiàn)很難辦到。看了下面的例子:你以前的問題全解決了
  declare @count int
  declare @SQL nvarchar(200)
  set @SQL = N'select count(*) from sysobjects'
  exec sp_executesql @SQL,N'@i int output',@count output
 
 
·Oracle提供了兩種方法實(shí)現(xiàn)這個(gè)功能
  ①程序包DBMS_SQL,執(zhí)行一個(gè)語句的過程:
   打開游標(biāo)(open_cursor,對(duì)于非查詢語句,無此過程)
   分析語句(Parse)
   綁定變量(bind_variable)
   執(zhí)行語句(execute)
   關(guān)閉游標(biāo)(close_cursor,對(duì)于非查詢語句,無此過程)
  ②execute immediate ls_SQL

15、數(shù)據(jù)庫備份和恢復(fù)
兩者都提供了很強(qiáng)的數(shù)據(jù)庫的備份和恢復(fù)能力,Oracle提供了更多的手段,
Orace宣稱她的數(shù)據(jù)庫是不可摧毀的也不是瞎吹牛
·MS SQL SERVER
 ①數(shù)據(jù)庫的倒入倒出DTS工具,如果數(shù)據(jù)源和目的都是MS SQL SERVER則可以完全復(fù)制數(shù)庫的結(jié)構(gòu)
 (包括表、視圖、索引、觸發(fā)子、規(guī)則、默認(rèn)、存儲(chǔ)過程、用戶定義函數(shù)、表數(shù)據(jù))
 ②數(shù)據(jù)庫備份和恢復(fù)命令
  backup database
  restore database
  倒出的數(shù)據(jù)文件還可以壓縮的,這一點(diǎn)不同于Sybase
  而且這種數(shù)據(jù)庫備份和恢復(fù)的方式可以是增量的和完全的
 
 ③數(shù)據(jù)庫的附加Attach
  只要數(shù)據(jù)庫的原始數(shù)據(jù)和日志文件沒有損壞,就可以
  命令:SP_ATTACH_DB
  這種情況,有時(shí)候會(huì)出問題:比方說你鍵了登陸帳號(hào),不是使用缺省的登陸帳號(hào)sa,
  由于登陸帳號(hào)的信息存放在master數(shù)據(jù)庫中,所以你使用原來建立的帳號(hào)就登陸不上,
  所以要做一些后補(bǔ)工作

·Oracle
 ①倒出倒入工具exp和imp工具
  倒入倒出的參數(shù)何其多
②冷備份或者稱脫機(jī)備份,備份的時(shí)候數(shù)據(jù)庫是停止的
  備份所有的數(shù)據(jù)文件、日志文件、控制文件
 ③熱備份或者聯(lián)機(jī)備份
  數(shù)據(jù)庫處在ARCHIVELOG模式,注意缺省情況下都是ARCHIVELOG
  恢復(fù)時(shí)可以選擇完全恢復(fù)、時(shí)間點(diǎn)恢復(fù)、SCN點(diǎn)恢復(fù)、用戶自由干預(yù)的CANCEL恢復(fù)
  可以說他的熱備份的恢復(fù)功能是非常之強(qiáng)大的
關(guān)鍵字:Oracle、數(shù)據(jù)庫
分享到:

頂部 】 【 關(guān)閉
版權(quán)所有:佛山思海電腦網(wǎng)絡(luò)有限公司 ©1998-2024 All Rights Reserved.
聯(lián)系電話:(0757)22630313、22633833
中華人民共和國增值電信業(yè)務(wù)經(jīng)營許可證: 粵B1.B2-20030321 備案號(hào):粵B2-20030321-1
網(wǎng)站公安備案編號(hào):44060602000007 交互式欄目專項(xiàng)備案編號(hào):200303DD003  
察察 工商 網(wǎng)安 舉報(bào)有獎(jiǎng)  警警  手機(jī)打開網(wǎng)站