體系結構
ORACLE的文件體系結構為
數據文件 DBF (真實數據)
日志文件 RDO
控制文件 CTL
參數文件 ORA
SQL SERVER的文件體系結構為
MDF (數據字典)
NDF (數據文件)
LDF (日志文件)
ORACLE存儲結構
在ORACLE裡有兩個塊參數PCTFREE(填充因子)和PCTUSED(復用因子)可控制塊確定塊本身何時有何時沒有足夠的空間接受新信息(對塊的存儲情況的分析機制)
這樣可降低數據行連接與行遷移的可能性塊的大小可設置(OLTP塊和DSS塊)
在ORACLE中將連續的塊組成區可動態分配區(區的分配可以是等額的也可以是自增長的)可減少空間分配次數
在ORACLEl裡表可以分為多個段段由多個區組成每個段可指定分配在哪個表空間裡(段的類型分為數據段索引段回滾段臨時段CASH段ORACLE裡還可對表進行分區可按照用戶定義的業務規則條件或規范物理的分開磁盤上的數據
這樣大大降低了磁盤爭用的可能性
ORACLE有七個基本表空間
·SYSTEM表空間(存放數據字典和數據管理自身所需的信息)
·RBS回滾表空間
·TEMP臨時表空間
·TOOLS交互式表空間
·USERS用戶默認表空間
·INDX索引表空間
·DBSYS福數據表空間
不同的數據分別放在不同的表空間(數據字典與真實數據分開存放)在ORACLE裡基表(存儲系統參數信息)是加密存儲任何人都無法訪問只能通過用戶可視視圖查看
SQL SERVER 存儲結構
以頁為最小分配單位每個頁為K(不可控制缺乏對頁的存儲情況的分析機制)
可將個連續的頁的組成一個擴展以進一步減少分配時所耗用的資源(分配缺乏靈活性)在SQL SERVER裡數據以表的方式存放而表是存放在數據庫裡
SQL SERVER有五個基本數據庫
·master(數據字典)
·mode(存放樣版)
·tempdb(臨時數據庫)
·msdb(存放調度信息和日志信息)
·pubs(示例數據庫)
真實數據與數據字典存放在一起對系統參數信息無安全機制
ORACLE登入管理
·SYSTEM/MANAGER (初始帳戶)
·SYS/CHANGE_ON_NSTALL
·INSTALL/ORACLE(安裝帳戶)
·SCOTT/TIGER(示例數據庫測試用)
在ORACLE裡默認只有三個系統用戶ORACLE是通過用戶登入
SQL SERVER登入管理
·SQL SERVER身份驗證
·WINDOWS 身份驗證
在SQL SERVER裡是通過WINDOWS用戶帳戶或是用SQL SERVER身份驗證連接數據庫的
SQL不是一種語言而是對ORACLE數據庫傳輸指令的一種方式
SQL中NULL既不是字符也不是數字它是缺省數據ORACLE提供了NVL函數來解決
ORACLE中的字符串連接為 string‖string SQL中為string+string
集合操作在SQL中只有UNION(並操作)ORACLE中包含MINUS(差操作)
INTERECT(交操作)UNION(並操作)
索引SQL的索引分為聚集索引和非聚集索引還包括全文索引
ORACLE的索引包括B+樹索引Bitmap位圖索引函數索引反序索引
主鍵索引散列索引本地索引
ORACLE的數據類型比較復雜有基本數據類型衍生型列對象型表對象型結構體型SQL中的數據比較簡單只有一些簡單的基本數據類型無法提供事務操作
在SQL中如果一個事務從開始執行到結束時了錯了它就會回滾到開始之前
在ORACLE中它采用的是定點回滾就是該事務函數化和精確錯誤定位用savepoint標記保存點用Rollback標記回滾錯誤的保存點
在SQL中循環只有WHILE一種這用起來不靈活在ORACLE中有多種循環(LOOP循環WHILE循環FOR循環)
在SQL中游標的使用比較復雜不能同時打開一個以上的游標因為它只有一個全局變量@@Fast_statues而且聲明游標也麻煩關閉游標時也不清除內存的ORACLE中游標是以提高速度全部統一的單項游標可以允許多用戶異步讀取而且聲明比較簡單就一句declare cursor游標名 is select 語句就可以了
容錯機制SQL中的錯誤機制比較復雜沒有提供錯誤描述ORACLE中容錯類型有三種一個是預定義錯誤一個是非預定義錯誤一個是用戶自定義其中在自定義錯誤中它有兩個是在SQL中不有的那就是SQLCODE 錯誤號SQLERRM錯誤描述
文件體系結構SQL中有MDF(主要數據文件)NDF(擴展文件可以有多個)
LDF(日志文件可以有多個存放在聯機重做日志數據這裡的日志文件有一個缺點就是如果日志文件已填小巧玲珑的話SQL將自動停止運行並等待人工干預所以要經常監控日志的情況保證系統的穩定運行)ORACLE中有DBF(主要數據文件)RDO(日志文件用來做災難性的數據備份)CTL(控制文件將數據庫的物理文件映射到了數據字典中的邏輯表空間和連機重做日志文件上去確保數據的一致性)ORA(參數文件)
SQL只能是本機備份本機的數據庫無法聯機備份而且備份壓縮很低占用了大量空間ORACLE提供了種備份機制具有聯機備份功能有志門的備份機子
Oracle的日志默認有個先寫入號日志滿了後再寫入號日志號滿了再寫入號日志號滿了後Oracle將自動備分號日志的內容然後清空後寫入新的日志信息且Oracle的日志有多路復用功能我們可以為日志創建多個鏡像把相同的日志信息同時寫入多個日志文件中這樣可以防止磁盤損壞造成的數據丟失
SQL Server對每個數據庫只能分配一個日志文件且當日志填滿後日志將停止工作等待人工干預而無法自動重用
Oracle的控制文件記錄了數據庫文件的物理位置和有效性在每次打開Oracle系統都將自動對數據進行驗證查看其有效性防止數據的丟失這體現了Oracle對數據管理的嚴密性
SQL Server無此安全機制只用在使用到了數據庫的信息後系統才去查找數據是否存在
Oracle的參數文件initora是可調的既我們可以根據數據庫的規模調整Oracle對系統資源的使用情況以達到最合理的資源分配讓Oracle達到最佳的性能
SQL Server的配置參數是內定的不可調整它對系統資源的分配是固定的不受擁護控制因此無法同時處理大量用戶的需求這限制了它只能作為中小型數據庫
Oracle以塊為最小存儲單位以區為單位分配空間用戶可以根據需要自己定義塊的大小且區可以按等額或遞增進行分配這可以大大減少系統的I/O操作提高數據庫的性能
SQL Server中以頁為單位或使用擴展類型以頁為一單位進行空間分配而無法人工干預當遇到頻繁存儲或大數據量存儲時系統將頻繁進行I/O操作使工作效率低下
Oracle中的SQL語句書寫規范且提供了完整的函數和數據類型Oracle提供了健全的錯誤機制用戶可以輕松的獲得錯誤位置和錯誤原因而加以修改用戶還可以自己定義所須的錯誤類型用以檢查邏輯錯誤Oracle中對數據類型的轉換和游標的定義也十分方便因此我們對代碼的書寫和維護也比SQL Server方便許多
SQL Server使用類C語言不易維護和查看代碼SQL Server包含的數據類型太少無法定義結構體數組對象SQL Server無法定義流程機制類型轉換也極不方便SQL Server中對游標定義十分復雜且當用戶定義的多個游標同時打開時系統卻只有一個游標變量這是SQL SERVER中一個嚴重的缺陷
ORACLE中用戶可以根據數據需要在創建塊時定義填充因子(空閒空間的百分比)和復用因子(當塊的存儲數據所占的空間下降到這個百分比之下時塊才重新標記為可用)用戶可以根據記錄變化頻率和數據量的大小設置合適的填充因子和空閒因子
SQL SERVER只有填充因子而它的定義與ORACLE剛好相反它定義的是剩余可用空間的百分比而SQL SERVER中沒有復用因子當頁中數據低於填充因子但剩余的空間已經不可能再插入新的數據但頁還是標記為可用的當系統要寫入新數據都要訪問這個頁而浪費時間這種頁稱為廢頁將使系統插入新數據時浪費大量時間查找可用的頁
ORACLE在創建表時用戶可以精確定義數據存放的表空間甚至可以把一張表分開存放在多個表空間中這樣可以將數據量龐大的表按某些字段分開存放這將給查詢帶來極高的效率
=========================================================================================
隨著信息技術的飛速發展數據處理不僅在數量上要求越來越大而且在質量上也要求越來越高
操作系統的穩定對數據庫來說是十分緊要的在數據庫可操作平台上Oracle可在所有主流平台上運行Oracle數據庫采用開放的策略目標它使得客戶可以選擇一種最適合他們特定需要的解決方案客戶可以利用很多種第三方應用程序工具對開發商來說是很大的支持而SQL Server卻只能在Windows上運行了這個就顯得比較單調了但SQL Sever在Window平台上的表現和Windows操作系統的整體結合程度使用方便性和Microsoft開發平台的整合性都比Oracle強的很多但Windows操作系統的穩定性及可靠性大家是有目共睹的再說Microsoft公司的策略目標是將客戶都鎖定到Windows平台的環境當中只有隨著Windows性能的改善SQL Server才能進一步提高從操作平台這點上Oracle是完全優勝於SQL Server的了
從資料上可以看到Oracle的安全認證獲得最高認證級別的ISO標准認證而SQL Server並沒有獲得什麼安全認證這方面證明了Oracle的安全性是高於SQL Server的
購買一個產品首先考慮的當然是產品的性能了當考慮性能的同時當然少不了究竟要花多少錢在這產品也是個很關鍵的問題要建立並運行一個數據庫系統不僅僅包含最初購置軟件硬件的費用還包含了培訓及以後維護的費用Orcale數據庫的價格是遠比SQL Server數據庫要高為什麼Oracle數據庫比SQL Server數據庫價格上要高出那麼多一方面Oracle的初始花費相對較高特別是在考慮工具軟件的時候Oracle很多工具軟件需要另外購買與Microsoft提供免費的SQL Server工具軟件相比Oracle更顯價格的不菲但由於SQL Server只能在Windows下運行的原因普遍認為SQL Server數據庫的可靠性是比較差的Oracle的性能優勢體現在他的多用戶上而SQL Server的性能優勢在多用戶上就顯得力不從心了
操作上SQL Server明顯要比Orcale簡單如果你用過Java和DOTNET的開發平台區別的基本就是Oracle和SQL Server不同Oracle的界面基本是基於Java的大部分的工具是Dos界面的甚至SQLPlus也是 SQL Server是跟VB一樣全圖形界面很少見到DOS窗口SQL Server中的企業管理器給用戶提供一個全圖形界面的集成管理控制台來集中管理多個服務器Oracle也有自己的企業管理器而且它的性能在某些方面甚至超過了SQL Server的企業管理器但它安裝較為困難
Orcale數據庫和SQL Server數據庫那個更快?其實是一個很難答的問題因為存在許多不定因素包括處理類型數據分布以及硬件基礎設施等
SQL Server 是一個具備完全Web支持的數據庫產品提供了可擴展標記語言核心支持以及Internet上和防火牆外進行查詢的能力具有可伸縮性靈活性擴充性好而且價格便宜等特點而Oracle則有著可靠安全性速度比SQL Server快上百倍但其價格在實施中卻比SQL Server它高出了幾百倍
其實各行業考慮選擇那種數據庫是由數據庫的特點以及根據自己的業務需求和基礎設施綜合考慮來決定的
From:http://tw.wingwit.com/Article/program/Oracle/201311/18988.html