sql server和oracle的區別

2021-05-21 21:02:33 字數 1419 閱讀 7802

1.oracle為客戶端開啟會話有兩種方式:共享服務和專用服務。在專用服務情況下,***為連線請求建立新程序(unix環境下是process,windows下我想應該是thread吧);共享服務情況下,***將客戶請求交給dispatcher,由dispatcher安排多客戶的作業。sql server在預設情況下自動為客戶端連線建立執行緒,當有非常多的客戶連線時,sql server可以使用執行緒池管理多會話,這類似於oracle的共享服務。 

2.oracle的記憶體管理分三塊:sga、pga、uga;在msdn中並沒有提及怎樣控制sql server的記憶體分配,只是提到sql server的虛擬位址空間分成緩衝池占用空間和其餘空間,且sql server有動態記憶體管理機制。 

3. oracle的例項一次只能管理乙個資料庫,資料庫在集群環境下可由多個例項管理。而sql server單個例項一次能管理多個資料庫。oracle資料庫儲存方式有os檔案、裸分割槽、asm等,sql server的資料庫儲存只能是系統檔案。 

4. oracle資料庫包含表空間,表空間可以使用多個檔案儲存資料,表空間就類似於sql server中的檔案組。區是物理連續上連線的儲存空間,區中包括最小i/o單位——塊(oracle)或頁(sql server)。但sql server頁大小是8kb,區包含8個頁;oracle不同表空間可以有不同的塊大小,區的大小和保護塊的數量也不固定。sql server的頁由乙個資料庫物件獨佔,物理儲存的資料庫物件只有索引和表兩種;而oracle中的段由資料庫物件定義,且其儲存的物件複雜得多,有表段、索引段、回滾段、臨時段等等,所以在乙個聚簇段中的塊可能被多個表使用。 

5. oracle使用freelist管理可以塊,通過設定pctfree和pctused控制快在何種條件下可用;sql server使用gam、sgan記錄可用頁,使用pfs跟蹤頁的使用狀況。 

6. sql server的表有兩種方式組織資料的物理儲存,一種是無序的堆組織,這oracle是類似的;另一種是由聚簇索引決定資料排序方式,oracle也可有索引組織方式,但不同於sql server,它依鍵排序資料,不增加乙個索引用於聚簇,不會有額外的開銷。此外,oracle的聚簇表是多表儲存在相同段上,像sql server的混合區可以包含不同表的頁,但oracle的聚簇表是一組含有相同列的表可以儲存在相同的塊中,聚簇表的可以有索引或hash方式組織資料 

7. oracle建立表分割槽會建立不同的段,sql server 2005通過分割槽方案將不同分割槽儲存到不同的檔案組。oracle有三種分割槽方法,sql server使用分割槽函式。oracle 11g中還將加入時段分割槽、系統分割槽等。 

8. sql server的索引只有b-樹,oracle有b-樹、位圖、函式、位圖連線和可擴充套件索引。 

9. oracle的重做日誌與sql server的事務日誌都使用迴圈寫入策略,oracle使用多個重做日誌檔案,sql server也可使用多個日誌檔案,但將日誌檔案分成多個虛擬日誌,以虛擬日誌為單位進行迴圈。

資料遷移 從SqlServer到Oracle

要把sqlserver中的資料遷移到oracle有多種方法。如果資料量小,可以直接使用sql語句生成器 sqldatatoscript.exe 直接生成sql語句。如果資料量大,建議使用sql loader工具進行資料遷移。具體步驟如下 1.建立中間庫表。之所以需要建立中間庫表是因為,sqlserv...

SQLServer表結構轉換成Oracle表結構

function sqlserver 表結構轉換成oralce 表結構,不支援索引以及自動增長 取消影響行數 set nocount on 建立表名游標 declare table cursor cursor for select convert varchar 300 x.name name,co...

oracl 分頁語句

select from select rownum en,ta.from select ri.info detail type,ri.info num,rmx.reagent num,ri.info batch,ri.info lot,ri.info icebox,ri.info store dat...