Oracle與SQL SERVER概念--d_第1頁
Oracle與SQL SERVER概念--d_第2頁
Oracle與SQL SERVER概念--d_第3頁
Oracle與SQL SERVER概念--d_第4頁
Oracle與SQL SERVER概念--d_第5頁
全文預覽已結(jié)束

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

1、Oracle 與SQL SERVER概念 - ·Oracle的服務和數(shù)據(jù)庫 相當于 MS SQL的數(shù)據(jù)庫服務; ·Oracle的服務= 后臺進程+相關(guān)內(nèi)存 ·數(shù)據(jù)庫= 數(shù)據(jù)文件的集合 Oracle的服務完全可以與數(shù)據(jù)庫文件脫離開來;Oracle中的Schema與MS SQL中的數(shù)據(jù)庫。 Schema“方案”是一個用戶所擁有所有對象的集合。 “對象”包括表、視圖、實例化視圖、序列、過程、函數(shù)、程序包、同義詞。 Oracle類似于MSSQL的數(shù)據(jù)庫大致過程如下: ·建立數(shù)據(jù)庫表空間(相當于MSSQL的數(shù)據(jù)庫的數(shù)據(jù)文件) ·建立臨時表空間(相單于MS

2、SQL的數(shù)據(jù)庫的事務日志文件) ·建立用戶,它的缺省空間和臨時表空間是剛建立的兩個表空間 ·給用戶授權(quán),最起碼得角色權(quán)限是Connect的角色 ·以該用戶登陸,創(chuàng)建自己的表、視圖、實例化視圖、序列、過程、函數(shù)、程序包、同義詞等。 關(guān)于Oracle Manager Server與MS SQL的Enterprise manager - DBA Studio工具提供了與MS SQL的Enterprise manager同樣的功用,但應該說兩者有很大的區(qū)別。 對于一般是用來說,DBA Studio工具已經(jīng)足夠了。但這里有必要對Oracle Manager Server解釋

3、一下: 它是Oracle管理分布式數(shù)據(jù)庫的服務,注意她是服務。 它缺省并不安裝 它需要有自己管理所需要的資料庫。在某個數(shù)據(jù)庫中需要建立相應的用戶 它的登陸需要身份驗證,注意這里的身份驗證,與管理所需要的資料庫的用戶不是一個概念,也不是數(shù)據(jù)庫中的SYS,system; 它的默認用戶是oem_temp sysman > 使用她,在管理端要啟動Manager Server服務和智能代理服務(OracleAgent),被管理的數(shù)據(jù)庫服務器要啟動智能代理服務(oracleagent). 關(guān)于Oracle的SYS,system的用戶與MSSQL的Master比較 - MSSQL的Master數(shù)據(jù)庫儲

4、存了當前數(shù)據(jù)庫服務的一些配置信息,如數(shù)據(jù)庫設備、字符集、數(shù)據(jù)文件、登陸帳號、擁有的數(shù)據(jù)庫、整個服務參數(shù)配置等信息。 Oracle的sys存儲了Oracle服務或者實例的信息及所有用戶的數(shù)據(jù)字典信息。 Oracle的system用戶擁有數(shù)據(jù)字典是視圖信息,有了這些視圖,我們查詢數(shù)據(jù)庫的信息就特別方便。缺省情況下,system用戶擁有DBA系統(tǒng)角色權(quán)限, 而sys不僅擁有DBA的權(quán)限還擁有sysdba的權(quán)限。 DBASYSDBA系統(tǒng)角色的區(qū)別: 首先說明一下oracle服務的創(chuàng)建過程:創(chuàng)建實例、啟動實例、創(chuàng)建數(shù)據(jù)庫(SYSTEM表空間是必需的) 其次啟動過程:實例啟動、裝載數(shù)據(jù)庫、打開數(shù)據(jù)庫 Or

5、acle中新的數(shù)據(jù)庫對象:實例化視圖、快照、序列、程序包、同義詞、抽象的數(shù)據(jù)類型 - ·實例化視圖又稱顯形圖:實例化說明它有自己的存儲空間;視圖:說明它的數(shù)據(jù)源于其他表數(shù)據(jù)。 ·實例化視圖中的數(shù)據(jù),設置為隔一段時間更新數(shù)據(jù),更新的模式可以定義為完全更新和增量更新。 ·快照基本上同實例化視圖,只不過數(shù)據(jù)來源不同,快照數(shù)據(jù)來源于遠程數(shù)據(jù)庫,而實例化視圖來源于本地數(shù)據(jù)表 ·序列,相當于MSSQL中的identify列,它是一個數(shù)字順序列表 ·程序包:它是過程、函數(shù)、全局變量的集合;它封裝了私有變量、私有過程和私有函數(shù)。如:DBMS_OUT包 

6、3;同義詞:是對數(shù)據(jù)庫中的對象的別名,同義詞可以是全局的也可以是私有的(屬于某個用戶的)如:tab,col等 ·抽象的數(shù)據(jù)類型:類似于C中的結(jié)構(gòu)體或Pascal記錄類型。 Oracle數(shù)據(jù)庫連接和 Mssql遠程連接 - 兩者都是為了實現(xiàn)分布式數(shù)據(jù)庫的操作,兩者都能實現(xiàn)分布式事務 Oracle回滾斷和MSSQL的數(shù)據(jù)庫事物日志文件 - 回滾段提供了事務回滾需要使用的數(shù)據(jù)變化以前的映象,這些映象是按條目儲存的,如果這些條目過少,一個事務等待另一個事務的幾率 增大,就會影響數(shù)據(jù)庫的性能。缺省安裝時,提供一個系統(tǒng)回滾段它在system表空間。 為了提高性能,system表空間不應儲存有任何

7、數(shù)據(jù)字典信息以外的信息。 MSSQL數(shù)據(jù)庫事務日志文件功能類同于回滾段,只不過它是同特定的數(shù)據(jù)庫密切相關(guān)的。 關(guān)于數(shù)據(jù)表的管理 - 超大型數(shù)據(jù)表的管理: oracle和MsSQL都提供了一種“把數(shù)據(jù)文件及其索引存放在一個特定的數(shù)據(jù)文件或表空間里”方法 Oracle將表及索引分區(qū)儲存,即按字段值的范圍進行分區(qū)存儲。 ·Oracle索引組織表和Sqlserver簇索引表 :兩者的數(shù)據(jù)存放順序都是按照索引值的順序存放的 ·無事務回滾概念的表,對這種表的操作不存在事務的概念;ORacle提供了建表參數(shù)nologging,使對該表的操作不參與事務的回滾。 ·索引:oracl

8、e提供了多種MSSQL沒有的索引類型,如:位圖索引等 外連接 =- ·MSSQL支持兩種形式表之間連接 (1)從SYSBASE繼承來的形式: 1)字段1*=字段2(左連接) 2)字段1=*字段2(右連接) 3)沒有這種形式的全外連接語法 (2)標準的外連接語法: 1)leftouter join on 邏輯表達式 2)rightouter join on 邏輯表達式 3)fullouter jion (全外連接) on 邏輯表達式 ·Oracle不支持標準的外連接語法,也沒有全外連接(這是他的缺陷)。 1)字段1=字段2(+)(左連接) 2)字段1(+)=字段2(右連接)

9、·使用外連接語句的用處 (1)不想因為表連接而使主表數(shù)據(jù)行丟失 (2)查找某條記錄在表A存在,而在B表不存在,按常規(guī)做法用not in(select.查詢語句)語法。 使用not in 最大的缺點就是速度慢,原因是每行都去做select查詢語句;而使用如下語句則會更好: select tu_company.* from TU_company left join TU_Comp_agent on TU_company.id=tu_comp_pCode where TU_comp_agent.id is null; 觸發(fā)器 = ·MSSQL僅有表的觸發(fā)器,而且觸發(fā)時機不夠豐富,

10、如插入觸發(fā)器不區(qū)分單條插入還是多條插入;也不區(qū)分插入前觸發(fā)還是插入后觸發(fā)。碰到 多條數(shù)據(jù)的插入,需要使用游標處理每條插入的數(shù)據(jù)。 ·Oracle提供的觸發(fā)器不僅有基于表的觸發(fā)器,而且還有其它類型的,例如數(shù)據(jù)庫計的觸發(fā)器:數(shù)據(jù)庫的啟動、數(shù)據(jù)庫關(guān)閉。對于表級的觸發(fā)器 區(qū)分單條插入還是多條插入,也區(qū)分插入前觸發(fā)還是插入后觸發(fā) 表數(shù)據(jù)復制 - ·庫內(nèi)數(shù)據(jù)復制 ·MSSQL Insert into 復制表名稱 select 語句(復制表已經(jīng)存在) select 字段列表 into 復制表名 from 表(復制表不存在) ·Oracle Insert into 復制

11、表名稱 select 語句(復制表已經(jīng)存在) create table 復制表名稱 as select 語句(復制表不存在) ·文本文件轉(zhuǎn)入,轉(zhuǎn)出的批量處理 ·MSSQL BCP命令行程序 ·Oracle SQLLDR命令行程序 多表更新、刪除 - 一條更新語句是不能更新多張表的,除非使用觸發(fā)器隱含更新,這里的意思是說:根據(jù)其他表數(shù)據(jù)更新你要更新的表。 ·MSSQL update a set 字段1=B表子段表達式,字段2=B表子段表達式,。from B where 邏輯表達式 ·ORACLE update a set 字段1=(Select子

12、段表達式 from B where .),字段2=(Select子段表達式 from B where .),.from B where 邏輯表達式 就以上問題來看假如A需要多個子段更新,MSSQL更簡練! 關(guān)于存儲過程或函數(shù)中使用的臨時表 - 兩者都有這個功能。臨時表最主要的好處是,操作不留任何痕跡、不產(chǎn)生日志,所以速度快。 ·MSSQL Create table #表名(.),或者select 字段表達式列表 INTo #表名稱 FRom 表名稱前加#,這些臨時表都是旨在一個數(shù)據(jù)庫連接會話期間有效。 ·ORACLE create global temporary tabl

13、e,加上global就是全局的臨時表(所有數(shù)據(jù)庫連接會話都是可見的),否則為私有(在一個數(shù)據(jù)庫連接會話期間有效)。 動態(tài)執(zhí)行SQL語句 - ·在存儲過程中的參數(shù)中傳遞一個表名或者在過程體力動態(tài)生成一個SQL語句。 MSSQL: 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: (1)程序包DBMS_SQL,執(zhí)行一

14、個語句的過程: 打開游標(OPen_cursor,對于非查詢語句,無此過程) 分析語句(parse) 綁定變量(bind_variable) 執(zhí)行語句(execute) 關(guān)閉游標(close_cursor,對于排序查詢語句,無此過程) (2)Execute immediate ls_SQL 數(shù)據(jù)庫備份和恢復 - MSSQL: (1)數(shù)據(jù)庫導入導出DTS工具,如果數(shù)據(jù)源和目的都是MSSQL則可以完全復制數(shù)據(jù)庫的結(jié)構(gòu)(表、視圖、索引、觸發(fā)器、規(guī)則、默認、存儲過程、自定義函數(shù)、表數(shù)據(jù)等) (2)數(shù)據(jù)庫備份和還原命令: BackUp database Restore database 導出的數(shù)據(jù)文件還可以壓縮,數(shù)據(jù)庫備份和還原方式可以是增量和完全的。 (3)數(shù)據(jù)庫的附加attach 只要數(shù)據(jù)庫的原始數(shù)據(jù)和日志文件沒有破壞,就可以使用命令:SP_ADDACH_DB.這種情況有時候回出現(xiàn)問題:比方說你見了登陸帳號, 不是使用缺省的登陸帳號SA,由于登陸帳號的信息存放在master數(shù)據(jù)庫中,所以使用原

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論