對(duì)Oracle 11g中的XML正確理解
你是否對(duì)正確理解Oracle 11g中XML的的實(shí)際操作感到十分頭疼?如果是這樣子的話,以下的文章將會(huì)給你相應(yīng)的解決方案,以下的文章主要是介紹正確理解Oracle 11g中XML的方法,以下就是相關(guān)內(nèi)容的具體描述。
作為一名獨(dú)立的Oracle數(shù)據(jù)庫顧問,以及某數(shù)據(jù)庫技術(shù)網(wǎng)站特約的備份和恢復(fù)以及數(shù)據(jù)庫設(shè)計(jì)專家,Brian Peasland對(duì)Oracleshen數(shù)據(jù)庫有著充分的了解。他用了幾天的時(shí)間來幫助公司和個(gè)人更充分地利用Oracle的旗艦數(shù)據(jù)庫管理系統(tǒng)
對(duì)于最新版的 Oracle 11g版,我們對(duì)Peasland進(jìn)行訪談,了解一些 Oracle的計(jì)劃變更和升級(jí)的信息。
在這篇訪談中,Peasland討論了為什么他沒有大量利用Oracle 11g中計(jì)劃的XML升級(jí),并且談?wù)摿?這樣的一個(gè)事實(shí),即他曾經(jīng)交談的很多用戶都希望下一個(gè)版本的PL/SQL可以包含一種更好的方式來追蹤PL/SQL呼叫棧。Peasland還為那些準(zhǔn)備 考取10g的Oracle認(rèn)證專家考試的人們提出了一些建議,還為數(shù)據(jù)庫新手和老手們,以及想要正確搞定Database 10g的人們提出了一些關(guān)鍵詞。
Oracle說他的旗艦數(shù)據(jù)庫管理系統(tǒng)的下一個(gè)版本——Oracle Database 11g——包括新的有關(guān)XML升級(jí)。他們把注意力集中在XML DB上,還包括了一個(gè)新的XML二進(jìn)制數(shù)據(jù)和新的XML索引。這些種類的更新重要嗎?為什么或者為什么不呢?
Brian Peasland:對(duì)我來說,數(shù)據(jù)庫中大多數(shù)的XML的內(nèi)容都不十分重要,因?yàn)閄ML是以層次格式組織的,這一點(diǎn)在20世紀(jì)80年代得到了證明,數(shù)據(jù)的層 次格式不支持快速的有效率的數(shù)據(jù)檢索。當(dāng)他們開始把XML格式應(yīng)用到關(guān)系型數(shù)據(jù)庫的時(shí)候,我一直覺得很迷惑。
我們不能簡(jiǎn)單地在一個(gè)表中查尋一點(diǎn)XML數(shù) 據(jù),并且與其它的相比又快又簡(jiǎn)單。通常這樣做意味著你必須把數(shù)據(jù)散開。我從來不喜歡把XML放到數(shù)據(jù)庫里面,我也從來沒有必要這么做。我確實(shí)知道有些人需 要這樣做,并且這樣做也對(duì)他們特殊的應(yīng)用程序有意義。
但是他們存儲(chǔ)XML更像是有些人在數(shù)據(jù)庫中存儲(chǔ)Word文檔或者存放.wav文件。他們沒有把它作為 以后可供查詢的共有數(shù)據(jù)來存儲(chǔ)。他們想要真正地存儲(chǔ)XML為完整的文件,不是一段一段的數(shù)據(jù)。
為什么你提到的那些人要把XML作為完整文件存儲(chǔ)?
Peasland:例如,新版本的微軟Office將會(huì)把XML作為它的標(biāo)準(zhǔn)格式。取代原先數(shù)據(jù)庫中使用的Word類型的資本文件格式,也許他 們想要在數(shù)據(jù)庫中將這種新的XML格式作為文檔存儲(chǔ)。雖然,他們可以運(yùn)行類似Oracle文本這樣的工具來進(jìn)行快速文檔的快速搜索。但是這是一種與我所見 到的一些人想要嘗試的方式——他們想要將綜合數(shù)據(jù),例如員工列表,以XML格式存儲(chǔ)在數(shù)據(jù)庫中——完全不同的使用。對(duì)我來說,那些代表了項(xiàng)目實(shí)體的屬性和 數(shù)據(jù)行應(yīng)該存儲(chǔ)在一個(gè)關(guān)系表中。
你希望在Database 11g或者其它Oracle的未來版本的數(shù)據(jù)庫管理系統(tǒng)中,PL/SQL發(fā)生什么變化?
Peasland:許多人這些天都在詢問一種更簡(jiǎn)單的方式來追蹤PL/SQL呼叫棧。實(shí)話實(shí)說,我也不確定為什么,但是我確實(shí)遇到了想要這樣做 的人。一個(gè)家伙不禁想要追蹤,還想要能夠存儲(chǔ)它。DBMS_DEBUG的bug工具已經(jīng)存在很長(zhǎng)一段時(shí)間了,用它,你可以追蹤你的PL/SQL呼叫棧,但 是它非常難以使用。SQL開發(fā)人員已經(jīng)在這方面進(jìn)行努力了。但是數(shù)據(jù)庫中有一些這樣的東西還是比較好的。
你個(gè)人還希望看到什么其它的PL/SQL變化?
Peasland:我曾期待的一個(gè)變化就是在SQL Server中真的可以讓某些事情變得非常簡(jiǎn)單,但是在Oracle的PL/SQL中就不是這樣了。在SQL Server中,我可以做一個(gè)存儲(chǔ)過程,讓它剛好能夠吐出那些數(shù)據(jù),就好像那是查詢自身一樣。
在Oracle中,為了完成這一點(diǎn),你必須用特殊的數(shù)據(jù)類型 作為你的參數(shù)然后再把它查詢出來。你必須使用Ref游標(biāo)或者其它類似的什么東西。這有一點(diǎn)麻煩,但是如果你可以做的話,也是不錯(cuò)的。其他的平臺(tái)允許你這樣 做,但是Oracle就不可以。
你對(duì)SQL Developer有什么看法,相比較類似產(chǎn)品而言?
Peasland:我喜歡SQL Developer的一個(gè)原因就是我能夠在SQL Developer中做一些快速的查詢,方式與在SQL Server中一樣。SQL Developer的能力可以解釋我的查詢的部分內(nèi)容,但是讓人會(huì)把他留在那里,留給那些不注釋它們的實(shí)例再次呼叫,這種一種用于不同測(cè)試目標(biāo)的調(diào)試和運(yùn) 行查詢的良好方式——絕對(duì)不是用于產(chǎn)品使用,而是一種開發(fā)者的工具。
你的網(wǎng)站包括了一些注意文檔,用來幫助人們通過Oracle 10g的Oracle認(rèn)證專家考試。你給那些計(jì)劃通過考試的人有些什么建議?
Peasland:我要告訴大家的一件大事就是,一,閱讀有關(guān)新特性的文檔,因?yàn)閹缀跤嘘P(guān)考試的所有內(nèi)容都在文檔中。這非常重要。還有我了解人 們都害怕文檔,但是我喜歡這種方式,因?yàn)槲业拇蟛糠謫栴}的答案(作為SearchOracle.com的網(wǎng)站專家)都是從文檔中尋找到正確答案的。閱讀文檔,因?yàn)樗梢宰屇闶煜ご祟愂虑椤A硗庖患虑榫褪?,練?xí)你學(xué)到的,因?yàn)楫?dāng)你練習(xí)的時(shí)候,你就會(huì)開始學(xué)習(xí)一些新特性工作的進(jìn)出方式。
然后,主動(dòng)嘗試去打破 一些東西。很明顯,你會(huì)希望在測(cè)試系統(tǒng)上做這件事情,這個(gè)系統(tǒng)只有你可以訪問,其他人都無法訪問,因?yàn)槟悴幌氪驍_其他任何人的工作。在嘗試打破一些東西的 時(shí)候,你會(huì)學(xué)習(xí)到新的特性。
你的網(wǎng)站還介紹了一些有關(guān)違反策略和保衛(wèi)Oracle 10g安全的信息。有沒有什么好辦法可以確保Oracle 10g正常啟動(dòng)?
Peasland:有一項(xiàng)針對(duì)每個(gè)人的策略侵害,即使你是直接在機(jī)器外安裝Oracle,就是有一些供應(yīng)的包可以對(duì)公眾開放,這意味著數(shù)據(jù)庫中 的每個(gè)人都可以使用它們。擁有可以使用這些包的能力會(huì)導(dǎo)致安全漏洞。例如,有這樣的一個(gè)包叫做UTL_File。它讓存儲(chǔ)過程中的某些人可以與數(shù)據(jù)庫所在 的文件系統(tǒng)進(jìn)行交互。
你也許不想要寫入文件,因?yàn)檫@樣會(huì)帶來潛在的危險(xiǎn)。還有,一些著名的Oracle專家明確指出,像UTL_File這樣的東西會(huì)讓人 們探測(cè)數(shù)據(jù)庫。我們聽說類似這樣的安全漏洞總是存在的,它也不是Oracle獨(dú)有的。數(shù)據(jù)庫中的用戶應(yīng)該有最低權(quán)限的概念,意思是他們應(yīng)該只擁有完成任務(wù) 所需要的最低限度的權(quán)限。上述的相關(guān)內(nèi)容就是對(duì)理解Oracle 11g中的XML的描述,希望會(huì)給你帶來一些幫助在此方面。
【編輯推薦】