當前位置:成語大全網 - 新華字典 - sqlserver和oracle主要有什麽區別

sqlserver和oracle主要有什麽區別

1,oracle支持多種操作系統,sql server只支持windows。

2,oracle給dba更多的靈活性,可以根據實際情況調整參數,使妳的應用的性能最佳,因而帶來壹個缺點是很難上手;sql server則相反,當然很容易上手。

體系結構

oracle的文件體系結構為:

數據文件 .dbf(真實數據)

日誌文件 .rdo

控制文件 .ctl

參數文件 .ora

sql server的文件體系結構為:

.mdf (數據字典)

.ndf (數據文件)

.ldf (日誌文件)

www.2cto.com

oracle存儲結構:

在oracle裏有兩個塊參數pctfree(填充因子)和pctused(復用因子),可控制塊確定塊本身何時有,何時沒有足夠的空間接受新信息(對塊的存儲情況的分析機制)

這樣可降低數據行連接與行遷移的可能性。塊的大小可設置(oltp塊和dss塊)

在oracle中,將連續的塊組成區,可動態分配區(區的分配可以是等額的也可以是自增長的)可減少空間分配次數

在oraclel裏表可以分為多個段,段由多個區組成,每個段可指定分配在哪個表空間裏(段的類型分為:數據段、索引段、回滾段、臨時段、cash段。oracle裏還可對表進行分區,可按照用戶定義的業務規則、條件或規範,物理的分開磁盤上的數據。

這樣大大降低了磁盤爭用的可能性。

oracle有七個基本表空間:

·system表空間(存放數據字典和數據管理自身所需的信息)

·rbs回滾表空間

·temp臨時表空間

·tools交互式表空間

·users用戶默認表空間

·indx索引表空間

·dbsys福數據表空間

不同的數據分別放在不同的表空間(數據字典與真實數據分開存放),在oracle裏基表(存儲系統參數信息)是加密存儲,任何人都無法訪問。只能通過用戶可視視圖查看。

sql server 存儲結構

以頁為最小分配單位,每個頁為8k(不可控制,缺乏對頁的存儲情況的分析機制),可將8個連續的頁的組成壹個‘擴展’,以進壹步減少分配時所耗用的資源。(分配缺乏靈活性),在sql server裏數據以表的方式存放,而表是存放在數據庫裏。

sql server有五個基本數據庫: www.2cto.com

·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中的字符串連接為 string1‖string2 ,sql中為string1+string2.

集合操作:在sql中只有union(並操作),oracle中包含minus(差操作)、interect(交操作)、union(並操作)。

索引:sql的索引分為聚集索引和非聚集索引,還包括全文索引;

oracle的索引包括:b+樹索引,bitmap位圖索引,函數索引,反序索引,

主鍵索引,散列索引,本地索引。 www.2cto.com

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提供了7種備份機制,具有聯機備份功能,有誌門的備份機子。

oracle的日誌默認有3個,先寫入1號日誌,滿了後再寫入2號日誌,2號滿了再寫入3號日誌,3號滿了後oracle將自動備分1號日誌的內容,然後清空後寫入新的日誌信息,且oracle的日誌有多路復用功能,我們可以為日誌創建多個鏡像,把相同的日誌信息同時寫入多個日誌文件中,這樣可以防止磁盤損壞造成的數據丟失。

sql server對每個數據庫只能分配壹個日誌文件。且當日誌填滿後,日誌將停止工作,等待人工幹預,而無法自動重用。 www.2cto.com

oracle的控制文件記錄了數據庫文件的物理位置和有效性,在每次打開oracle系統都將自動對數據進行驗證,查看其有效性,防止數據的丟失,這體現了oracle對數據管理的嚴密性。

sql server無此安全機制,只用在使用到了數據庫的信息後,系統才去查找數據是否存在。

oracle的參數文件init.ora是可調的,既我們可以根據數據庫的規模調整oracle對系統資源的使用情況,以達到最合理的資源分配,讓oracle達到最佳的性能。

sql server的配置參數是內定的不可調整,它對系統資源的分配是固定的,不受擁護控制,因此無法同時處理大量用戶的需求,這限制了它只能作為中,小型數據庫。

oracle以塊為最小存儲單位,以區為單位分配空間,用戶可以根據需要自己定義塊的大小,且區可以按等額或遞增進行分配,這可以大大減少系統的i/o操作提高數據庫的性能。

sql server中以頁為單位或使用擴展類型以8頁為壹單位進行空間分配而無法人工幹預,當遇到頻繁存儲或大數據量存儲時,系統將頻繁進行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在創建表時用戶可以精確定義數據存放的表空間,甚至可以把壹張表分開存放在多個表空間中,這樣可以將數據量龐大的表按某些字段分開存放,這將給查詢帶來極高的效率。

www.2cto.com

隨著信息技術的飛速發展,數據處理不僅在數量上要求越來越大,而且在質量上也要求越來越高。

操作系統的穩定對數據庫來說是十分緊要的,在數據庫可操作平臺上,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 2000是壹個具備完全web支持的數據庫產品,提供了可擴展標記語言核心支持以及internet上和防火墻外進行查詢的能力,具有可伸縮性、靈活性、擴充性好,而且價格便宜等特點,而oracle則有著可靠安全性,速度比sql server快上百倍,但其價格在實施中卻比sql server它高出了幾百倍。

其實各行業考慮選擇那種數據庫,是由數據庫的特點以及根據自己的業務需求和基礎設施綜合考慮來決定的。