小議20080304Oracle技術日

yangtingkun發表於2008-03-04

和一個整合商的銷售有約,借這個機會參加了今天的Oracle的技術日。恰好這個技術日的主題是11g的新特性,最近一段時間也一直對11g的新特性比較感興趣。簡單記錄一下這個會議的收穫。

 

 

剛開始的時候,看到Oracle方面主講的谷博士,就覺得有些眼熟,似乎是個熟人,但是又不確定。後來早退的時候,在門口簽到的地方碰到了他,聊了幾句,發現果然是熟人,是我前一家公司的同事。只不過當時他就是BI專案的技術負責人了,而我還是個剛剛入門的新手(現在也是剛剛入門而已,只不過不算新手了)。他當時是FenngDiablo2DBLIFE的領導。Fenng就不用我介紹了;diablo2db2的高手,也是itpub的版主;DBLIFE也是ITPUB資料庫管理區的元老之一,可能知道的人不多,但是Fenngbiti應該一定記得,他後來考研了,不知道畢業之後是否還從事資料庫方面的工作。

扯遠了,總之無論處於哪一點,我對谷博士都是比較尊重的。不過既然是做技術的,對待問題就要嚴謹,有錯誤就一定要指出來,不能因為是熟人而在技術是非上打折扣。

還是先說收穫吧,這次的培訓介紹11g的新的“選件”分為8個方面:RATreal application testing)、DATA GUARDFLASHBACK ARCHIVECOMPRESSRACPARTITIONSECURITYMANAGEMENT

之所以這個技術日要根據這些方面來介紹新特性和新功能,最主要的原因是這些選件是需要額外的License的。這一點可以說是今天參加會議的最大收穫了。RACPARTITIONOEM就不說了,這些以前就是需要License的;而RAT這種新增功能需要License也屬正常;但是DATA GUARD增加了恢復時開發資料庫的功能後就需要額外的License,似乎比較黑。而FLASHBACK的歸檔和壓縮功能居然也需要單獨的License,而這以前都是Oracle本身提供的功能,不需要額外付費的。

除了瞭解License的變化外,就是對Oracle的安全性方面有了一個初步的瞭解。不但瞭解了現有的ADVANCED SECURITYLABEL SECURITYVAULT的功能,還初步瞭解了11g新增功能AUDIT VAULT。個人感覺,AUDIT VAULT是把系統安全性和AUDIT的功能整合在一起,給使用者提供了一個預警、記錄、跟蹤功能的總和。

簡單說一下今天谷博士描述錯誤的地方。其實絕大部分的知識點本身沒有問題,出現錯誤的地方大部分在於他所舉的例子。

第一個問題是在提到閃回特性的時候,博士舉了個例子,以前有人由於在更新的時候忘記了新增條件限制,從而更新了表中所有的記錄。等到一段時間後,在別人發現所有記錄的值都一樣時,才找到這個人,所幸的是,當時的命令視窗沒有關閉,因此透過回滾解決了這個問題。這個事情多半是真事,但是估計谷博士也是聽別人描述的,很可能描述的和實際情況有差距。因為這裡面存在問題。如果當時這個SQL語句沒有提交的話,那麼在Oracle中,其他會話是無法看到未提交資料的,而如果別人已經看到了資料被修改,那麼顯然SQL已經提交,那麼肯定最後不是透過回滾解決的問題。

下一個問題也是在介紹閃回特性的時候,博士提到了閃回表操作可以恢復TRUNCATE操作。但是在我印象中,11g中閃回表的操作也是無法恢復TRUNCATE的,除非是將整個資料庫閃回到TRUNCATE之前。

另外一個問題出現在介紹RESULT CACHE特性時,谷博士說,如果第一個查詢計算在座20歲的人有多少個,21歲的人有多少個……,Oracle會進行一個GROUP BY操作,在將結果返回的同時,將結果集記錄在結果集快取區中。如果下次查詢一共有多少人時,可以透過快取區中的結果直接計算得到。這裡博士顯然也物化檢視的查詢重寫功能搞混了。這是物化檢視的查詢重寫功能所提供的。當然快取結果集也是可以作為其他查詢的中間結果集的,但是這要求快取結果集對應的SQL語句,必須是查詢SQL語句的一個完整部分。也就是說只有按下面的方法書寫計算所有人總數的SQL,才能使用前面那個SQL的快取結果集:SELECT SUM(CN) FROM (SELECT /*+ RESULT_CACHE */ AGE, COUNT(*) CN FROM PEOPLE),而如果只是SELECT COUNT(*) FROM PEOPLE肯定是不會使用前面一個SQL的查詢結果集的。

在介紹RAC資料庫的可伸縮性時,多次強調了RAC新增節點可以不停機。確實,如果在以前配置的時候就考慮到了升級的情況,RAC新增節點確實可以做到不停機。但是對於絕大部分情況,停機仍然是不可避免的,比較很多的初始化引數需要停機進行修改。

還有一個問題,是在介紹閃迴歸檔時,谷博士認為如果對錶中的記錄的操作錯誤,且表隨後執行了其他正確的操作,只要設定了閃迴歸檔,就可以將表中的資料閃回到錯誤操作之前,然後跳過錯誤的操作,甚至是執行執行正確的操作來替代錯誤操作,然後可以繼續應用後面一系列正確的操作。我還沒有仔細研究閃迴歸檔的功能,但是根據我對Oracle的理解來判斷,這種方式幾乎是不可能的。資料一旦發生了變化,就不可能再次應用原有的修改了。除非Oracle在這裡將修改轉化為了邏輯方式。

谷博士似乎目前是從事銷售的工作,如果作為一個銷售人員,出現上面提到的這些細節錯誤似乎還可以理解。不過作為Oracle的工作人員,在這種技術日活動上公開演講時,出現這麼多的錯誤實在是不太應該。

 

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/4227/viewspace-200312/,如需轉載,請註明出處,否則將追究法律責任。

相關文章