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也可使用多個日志文件,但將日志文件分成多個虛擬日志,以虛擬日志為單位進行循環。