體系結構
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的參數文件init ora是可調的 既我們可以根據數據庫的規模調整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它高出了幾百倍
lishixinzhi/Article/program/Oracle/201311/18988