時(shí)間:2015-06-28 00:00:00 來(lái)源:IT貓撲網(wǎng) 作者:網(wǎng)管聯(lián)盟 我要評(píng)論(0)
體系結(jié)構(gòu)
ORACLE的文件體系結(jié)構(gòu)為:
數(shù)據(jù)文件 .DBF (真實(shí)數(shù)據(jù))
日志文件 .RDO
控制文件 .CTL
參數(shù)文件 .ORA
SQL SERVER的文件體系結(jié)構(gòu)為:
.MDF (數(shù)據(jù)字典)
.NDF (數(shù)據(jù)文件)
.LDF (日志文件)
ORACLE存儲(chǔ)結(jié)構(gòu):
在ORACLE里有兩個(gè)塊參數(shù)PCTFREE(填充因子)和PCTUSED(復(fù)用因子),可控制塊確定塊本身何時(shí)有,何時(shí)沒有足夠的空間接受新信息(對(duì)塊的存儲(chǔ)情況的分析機(jī)制)
這樣可降低數(shù)據(jù)行連接與行遷移的可能性。塊的大小可設(shè)置(OLTP塊和DSS塊)
在ORACLE中,將連續(xù)的塊組成區(qū),可動(dòng)態(tài)分配區(qū)(區(qū)的分配可以是等額的也可以是自增長(zhǎng)的)可減少空間分配次數(shù)
在ORACLEl里表可以分為多個(gè)段,段由多個(gè)區(qū)組成,每個(gè)段可指定分配在哪個(gè)表空間里(段的類型分為:數(shù)據(jù)段、索引段、回滾段、臨時(shí)段、CASH段。ORACLE里還可對(duì)表進(jìn)行分區(qū),可按照用戶定義的業(yè)務(wù)規(guī)則、條件或規(guī)范,物理的分開磁盤上的數(shù)據(jù)。
這樣大大降低了磁盤爭(zhēng)用的可能性。
ORACLE有七個(gè)基本表空間:
·SYSTEM表空間(存放數(shù)據(jù)字典和數(shù)據(jù)管理自身所需的信息)
·RBS回滾表空間
·TEMP臨時(shí)表空間
·TOOLS交互式表空間
·USERS用戶默認(rèn)表空間
·INDX索引表空間
·DBSYS福數(shù)據(jù)表空間
不同的數(shù)據(jù)分別放在不同的表空間(數(shù)據(jù)字典與真實(shí)數(shù)據(jù)分開存放),在ORACLE里基表(存儲(chǔ)系統(tǒng)參數(shù)信息)是加密存儲(chǔ),任何人都無(wú)法訪問(wèn)。只能通過(guò)用戶可視視圖查看。
SQL SERVER 存儲(chǔ)結(jié)構(gòu)
以頁(yè)為最小分配單位,每個(gè)頁(yè)為8K(不可控制,缺乏對(duì)頁(yè)的存儲(chǔ)情況的分析機(jī)制),
可將8個(gè)連續(xù)的頁(yè)的組成一個(gè)‘?dāng)U展’,以進(jìn)一步減少分配時(shí)所耗用的資源。(分配缺乏靈活性),在SQL SERVER里數(shù)據(jù)以表的方式存放,而表是存放在數(shù)據(jù)庫(kù)里。
SQL SERVER有五個(gè)基本數(shù)據(jù)庫(kù):
·master(數(shù)據(jù)字典)
·mode(存放樣版)
·tempdb(臨時(shí)數(shù)據(jù)庫(kù))
·msdb(存放調(diào)度信息和日志信息)
·pubs(示例數(shù)據(jù)庫(kù))
真實(shí)數(shù)據(jù)與數(shù)據(jù)字典存放在一起。對(duì)系統(tǒng)參數(shù)信息無(wú)安全機(jī)制。
ORACLE登入管理:
·SYSTEM/MANAGER (初始帳戶)
·SYS/CHANGE_ON_NSTALL
·INSTALL/ORACLE(安裝帳戶)
·SCOTT/TIGER(示例數(shù)據(jù)庫(kù),測(cè)試用)
在ORACLE里默認(rèn)只有三個(gè)系統(tǒng)用戶,ORACLE是通過(guò)用戶登入。
SQL SERVER登入管理:
·SQL SERVER身份驗(yàn)證
·WINDOWS 身份驗(yàn)證
在SQL SERVER里是通過(guò)WINDOWS用戶帳戶或是用SQL SERVER身份驗(yàn)證連接數(shù)據(jù)庫(kù)的。
SQL不是一種語(yǔ)言,而是對(duì)ORACLE數(shù)據(jù)庫(kù)傳輸指令的一種方式。
SQL中NULL既不是字符也不是數(shù)字,它是缺省數(shù)據(jù)。ORACLE提供了NVL函數(shù)來(lái)解決。
ORACLE中的字符串連接為 string1‖string2 ,SQL中為string1+string2.
集合操作:在SQL中只有UNION(并操作),ORACLE中包含MINUS(差操作)、
INTERECT(交操作)、UNION(并操作)。
索引:SQL的索引分為聚集索引和非聚集索引,還包括全文索引;
ORACLE的索引包括:B+樹索引,Bitmap位圖索引,函數(shù)索引,反序索引,
主鍵索引,散列索引,本地索引。
ORACLE的數(shù)據(jù)類型比較復(fù)雜,有基本數(shù)據(jù)類型,衍生型,列對(duì)象型,表對(duì)象型,結(jié)構(gòu)體型;SQL中的數(shù)據(jù)比較簡(jiǎn)單,只有一些簡(jiǎn)單的基本數(shù)據(jù)類型無(wú)法提供事務(wù)操作。
在SQL中如果一個(gè)事務(wù)從開始執(zhí)行到結(jié)束時(shí)了錯(cuò)了,它就會(huì)回滾到開始之前;
在ORACLE中它采用的是定點(diǎn)回滾,就是該事務(wù)函數(shù)化和精確錯(cuò)誤定位,用savepoint標(biāo)記保存點(diǎn),用Rollback標(biāo)記回滾錯(cuò)誤的保存點(diǎn)。
在SQL中循環(huán)只有WHILE一種這用起來(lái)不靈活,在ORACLE中有多種循環(huán)(LOOP循環(huán)、WHILE循環(huán)、FOR循環(huán))。
在SQL中游標(biāo)的使用比較復(fù)雜,不能同時(shí)打開一個(gè)以上的游標(biāo),因?yàn)樗挥幸粋€(gè)全局變量@@Fast_statues而且聲明游標(biāo)也麻煩,關(guān)閉游標(biāo)時(shí)也不清除內(nèi)存的;ORACLE中游標(biāo)是以提高速度全部統(tǒng)一的單項(xiàng)游標(biāo),可以允許多用戶異步讀取,而且聲明比較簡(jiǎn)單,就一句declare cursor游標(biāo)名 is select 語(yǔ)句就可以了。
容錯(cuò)機(jī)制:SQL中的錯(cuò)誤機(jī)制比較復(fù)雜,沒有提供錯(cuò)誤描述;ORACLE中容錯(cuò)類型有三種,一個(gè)是預(yù)定義錯(cuò)誤,一個(gè)是非預(yù)定義錯(cuò)誤,一個(gè)是用戶自定義,其中在自定義錯(cuò)誤中它有兩個(gè)是在SQL中不有的,那就是SQLCODE 錯(cuò)誤號(hào)、SQLERRM錯(cuò)誤描述。
文件體系結(jié)構(gòu):SQL中有.MDF(主要數(shù)據(jù)文件)、.NDF(擴(kuò)展文件,可以有多個(gè))、
.LDF(日志文件,可以有多個(gè),存放在聯(lián)機(jī)重做日志數(shù)據(jù),這里的日志文件有一個(gè)缺點(diǎn)就是如果日志文件已填小巧玲瓏的話,SQL將自動(dòng)停止運(yùn)行并等待人工干預(yù),所以要經(jīng)常監(jiān)控日志的情況保證系統(tǒng)的穩(wěn)定運(yùn)行)。ORACLE中有.DBF(主要數(shù)據(jù)文件)、.RDO(日志文件,用來(lái)做災(zāi)難性的數(shù)據(jù)備份)、.CTL(控制文件,將數(shù)據(jù)庫(kù)的物理文件映射到了數(shù)據(jù)字典中的邏輯表空間和連機(jī)重做日志文件上去,確保數(shù)據(jù)的一致性)、.ORA(參數(shù)文件)。
. SQL只能是本機(jī)備份本機(jī)的數(shù)據(jù)庫(kù),無(wú)法聯(lián)機(jī)備份,而且備份壓縮很低,占用了大量空間;ORACLE提供了7種備份機(jī)制,具有聯(lián)機(jī)備份功能,有志門的備份機(jī)子。
Oracle的日志默認(rèn)有3個(gè),先寫入1號(hào)日志,滿了后再寫入2號(hào)日志,2號(hào)滿了再寫入3號(hào)日志,3號(hào)滿了后Oracle將自動(dòng)備分1號(hào)日志的內(nèi)容,然后清空后寫入新的日志信息,且Oracle的日志有多路復(fù)用功能,我們可以為日志創(chuàng)建多個(gè)鏡像,把相同的日志信息同時(shí)寫入多個(gè)日志文件中,這樣可以防止磁盤損壞造成的數(shù)據(jù)丟失。
SQL Server對(duì)每個(gè)數(shù)據(jù)庫(kù)只能分配一個(gè)日志文件。且當(dāng)日志填滿后,日志將停止工作,等待人工干預(yù),而無(wú)法自動(dòng)重用。
Oracle的控制文件記錄了數(shù)據(jù)庫(kù)文件的物理位置和有效性,在每次打開Oracle系統(tǒng)都將自動(dòng)對(duì)數(shù)據(jù)進(jìn)行驗(yàn)證,查看其有效性,防止數(shù)據(jù)的丟失,這體現(xiàn)了Oracle對(duì)數(shù)據(jù)管理的嚴(yán)密性。
SQL Server無(wú)此安全機(jī)制,只用在使用到了數(shù)據(jù)庫(kù)的信息后,系統(tǒng)才去查找數(shù)據(jù)是否存在。
Oracle的參數(shù)文件init.ora是可調(diào)的,既我們可以根據(jù)數(shù)據(jù)庫(kù)的規(guī)模調(diào)整Oracle對(duì)系統(tǒng)資源的使用情況,以達(dá)到最合理的資源分配,讓Oracle達(dá)到最佳的性能。
SQL Server的配置參數(shù)是內(nèi)定的不可調(diào)整,它對(duì)系統(tǒng)資源的分配是固定的,不受擁護(hù)控制,因此無(wú)法同時(shí)處理大量用戶的需求,這限制了它只能作為中,小型數(shù)據(jù)庫(kù)。
Oracle以塊為最小存儲(chǔ)單位,以區(qū)為單位分配空間,用戶可以根據(jù)需要自己定義塊的大小,且區(qū)可以按等額或遞增進(jìn)行分配,這可以大大減少系統(tǒng)的I/O操作提高數(shù)據(jù)庫(kù)的性能。
SQL Server中以頁(yè)為單位或使用擴(kuò)展類型以8頁(yè)為一單位進(jìn)行空間分配而無(wú)法人工干預(yù),當(dāng)遇到頻繁存儲(chǔ)或大數(shù)據(jù)量存儲(chǔ)時(shí),系統(tǒng)將頻繁進(jìn)行I/O操作使工作效率低下。
Oracle中的SQL語(yǔ)句書寫規(guī)范且提供了完整的函數(shù)和數(shù)據(jù)類型。Oracle提供了健全的錯(cuò)誤機(jī)制,用戶可以輕松的獲得錯(cuò)誤位置和錯(cuò)誤原因而加以修改。用戶還可以自己定義所須的錯(cuò)誤類型,用以檢查邏輯錯(cuò)誤。Oracle中對(duì)數(shù)據(jù)類型的轉(zhuǎn)換和游標(biāo)的定義也十分方便。因此,我們對(duì)代碼的書寫和維護(hù)也比SQL Server方便許多。
SQL Server使用類C語(yǔ)言,不易維護(hù)和查看代碼。SQL Server包含的數(shù)據(jù)類型太少,無(wú)法定義結(jié)構(gòu)體,數(shù)組,對(duì)象。SQL Server無(wú)法定義流程機(jī)制,類型轉(zhuǎn)換也極不方便,SQL Server中對(duì)游標(biāo)定義十分復(fù)雜,且當(dāng)用戶定義的多個(gè)游標(biāo)同時(shí)打開時(shí)系統(tǒng)卻只有一個(gè)游標(biāo)變量,這是SQL SERVER中一個(gè)嚴(yán)重的缺陷。
ORACLE中用戶可以根據(jù)數(shù)據(jù)需要在創(chuàng)建塊時(shí)定義填充因子(空閑空間的百分比)和復(fù)用因子(當(dāng)塊的存儲(chǔ)數(shù)據(jù)所占的空間下降到這個(gè)百分比之下時(shí),塊才重新標(biāo)記為可用)。用戶可以根據(jù)記錄變化頻率和數(shù)據(jù)量的大小設(shè)置合適的填充因子和空閑因子。
SQL SERVER只有填充因子,而它的定義與ORACLE剛好相反,它定義的是剩余可用空間的百分比。而SQL SERVER中沒有復(fù)用因子,當(dāng)頁(yè)中數(shù)據(jù)低于填充因子,但剩余的空間已經(jīng)不可能再插入新的數(shù)據(jù),但頁(yè)還是標(biāo)記為可用的,當(dāng)系統(tǒng)要寫入新數(shù)據(jù)都要訪問(wèn)這個(gè)頁(yè)而浪費(fèi)時(shí)間,這種頁(yè)稱為廢頁(yè),將使系統(tǒng)插入新數(shù)據(jù)時(shí)浪費(fèi)大量時(shí)間查找可用的頁(yè)。
ORACLE在創(chuàng)建表時(shí)用戶可以精確定義數(shù)據(jù)存放的表空間,甚至可以把一張表分開存放在多個(gè)表空間中,這樣可以將數(shù)據(jù)量龐大的表按某些字段分開存放,這將給查詢帶來(lái)極高的效率。
=========================================================================================
隨著信息技術(shù)的飛速發(fā)展,數(shù)據(jù)處理不僅在數(shù)量上要求越來(lái)越大,而且在質(zhì)量上也要求越來(lái)越高。
操作系統(tǒng)的穩(wěn)定對(duì)數(shù)據(jù)庫(kù)來(lái)說(shuō)是十分緊要的,在數(shù)據(jù)庫(kù)可操作平臺(tái)上,Oracle可在所有主流平臺(tái)上運(yùn)行,Oracle數(shù)據(jù)庫(kù)采用開放的策略目標(biāo),它使得客戶可以選擇一種最適合他們特定需要的解決方案??蛻艨梢岳煤芏喾N第三方應(yīng)用程序、工具。對(duì)開發(fā)商來(lái)說(shuō)是很大的支持。而SQL Server卻只能在Windows上運(yùn)行了,這個(gè)就顯得比較單調(diào)了,但SQL Sever在Window平臺(tái)上的表現(xiàn),和Windows操作系統(tǒng)的整體結(jié)合程度,使用方便性,和Microsoft開發(fā)平臺(tái)的整合性都比Oracle強(qiáng)的很多。但Windows操作系統(tǒng)的穩(wěn)定性及可靠性大家是有目共睹的,再說(shuō)Microsoft公司
關(guān)鍵詞標(biāo)簽:oracle,sqlserver
相關(guān)閱讀
熱門文章 Oracle中使用alter table來(lái)增加,刪除,修改列的語(yǔ)法 oracle中使用SQL語(yǔ)句修改字段類型-oracle修改SQL語(yǔ)句案例 誤刪Oracle數(shù)據(jù)庫(kù)實(shí)例的控制文件 為UNIX服務(wù)器設(shè)置Oracle全文檢索
人氣排行 oracle中使用SQL語(yǔ)句修改字段類型-oracle修改SQL語(yǔ)句案例 Oracle中使用alter table來(lái)增加,刪除,修改列的語(yǔ)法 ORACLE SQL 判斷字符串是否為數(shù)字的語(yǔ)句 ORACLE和SQL語(yǔ)法區(qū)別歸納(1) oracle grant 授權(quán)語(yǔ)句 ORACLE修改IP地址后如何能夠使用 如何加速Oracle大批量數(shù)據(jù)處理 Oracle刪除表的幾種方法