2009年05月19日
oracle snapshot controlfile 測試
一直以來都沒有注意 snapshot 的作用,利用點時間來測看看是否跟文件說的一樣
1、先做個驗證碼
[oracle@c52 dbs]$ md5sum snapcf_rac1.f
2c6acd61155c2deb2d71c3c79f3080a9 snapcf_rac1.f
2、進 rman 做備份 (文件是說每次rman的備份都會先把變化寫到 snapshot裏,再同步controlfile,以避免影響到db效能)
RMAN> backup current controlfile;
3、再查看驗證碼
oracle@c52 dbs]$ md5sum snapcf_rac1.f
3d643f0245f26c97ede2de738873aae6 snapcf_rac1.f
4、從上來看,確時有修改。來試看看如檔案權限不對會如何
[root@c52 dbs]# chown root:root snapcf_rac1.f
[root@c52 dbs]# chmod 000 snapcf_rac1.f
[root@c52 dbs]# ll
---------- 1 root root 18497536 May 19 21:58 snapcf_rac1.f
5、再次做rman
RMAN> backup current controlfile;
Starting backup at 19-MAY-09
allocated channel: ORA_DISK_1
channel ORA_DISK_1: SID=114 instance=rac1 device type=DISK
channel ORA_DISK_1: starting full datafile backup set
channel ORA_DISK_1: specifying datafile(s) in backup set
including current control file in backup set
channel ORA_DISK_1: starting piece 1 at 19-MAY-09
channel ORA_DISK_1: finished piece 1 at 19-MAY-09
piece handle=/u01/app/oracle/product/11.1.0/db_1/dbs/0okfes3r_1_1 tag=TAG20090519T220026 comment=NONE
channel ORA_DISK_1: backup set complete, elapsed time: 00:00:16
Finished backup at 19-MAY-09
RMAN> exit
6、再次查看
-rw-r----- 1 oracle dba 18497536 May 19 22:00 snapcf_rac1.f
結論:沒想到把權限改為都不可讀寫跟owner為root都沒有什影響=.="
最後還是會產生新的snapshot controlfile
[oracle@c52 dbs]$ md5sum snapcf_rac1.f
2c6acd61155c2deb2d71c3c79f3080a9 snapcf_rac1.f
2、進 rman 做備份 (文件是說每次rman的備份都會先把變化寫到 snapshot裏,再同步controlfile,以避免影響到db效能)
RMAN> backup current controlfile;
3、再查看驗證碼
oracle@c52 dbs]$ md5sum snapcf_rac1.f
3d643f0245f26c97ede2de738873aae6 snapcf_rac1.f
4、從上來看,確時有修改。來試看看如檔案權限不對會如何
[root@c52 dbs]# chown root:root snapcf_rac1.f
[root@c52 dbs]# chmod 000 snapcf_rac1.f
[root@c52 dbs]# ll
---------- 1 root root 18497536 May 19 21:58 snapcf_rac1.f
5、再次做rman
RMAN> backup current controlfile;
Starting backup at 19-MAY-09
allocated channel: ORA_DISK_1
channel ORA_DISK_1: SID=114 instance=rac1 device type=DISK
channel ORA_DISK_1: starting full datafile backup set
channel ORA_DISK_1: specifying datafile(s) in backup set
including current control file in backup set
channel ORA_DISK_1: starting piece 1 at 19-MAY-09
channel ORA_DISK_1: finished piece 1 at 19-MAY-09
piece handle=/u01/app/oracle/product/11.1.0/db_1/dbs/0okfes3r_1_1 tag=TAG20090519T220026 comment=NONE
channel ORA_DISK_1: backup set complete, elapsed time: 00:00:16
Finished backup at 19-MAY-09
RMAN> exit
6、再次查看
-rw-r----- 1 oracle dba 18497536 May 19 22:00 snapcf_rac1.f
結論:沒想到把權限改為都不可讀寫跟owner為root都沒有什影響=.="
最後還是會產生新的snapshot controlfile
引用URL
http://cgi.blog.roodo.com/trackback/9028739
回應文章 

您好:
拜讀您精簡的文章,猶如蜻蜓點水,總覺得意猶未盡。
我是一位專案開發人員,目前維護的系統是以.NET 1.1開發搭配9i,困擾我很久的是Oracle execution plan偶而不明原因的變動導致整體效率低下(雖然罰站是我的專長,老是罰站腿也會酸)。
嘗試固定plan的方式,但是總無效,只要sql語句一變動,即是固定plan也回天乏術。
我還是覺得8i以來plan stable的方式是可行的,只是以我一介ap開發人員想法子弄懂db內部參數實在太難為了。
我自認oracle這方面功力不差,調整plan的功力還算ok,還沒有調不出來sql,只是這個db變動性太大,plan偶而變化一下後果實在很麻煩。
你可否推薦幾本或是一些網站有關於plan穩定詳盡的設定方式,我參考了對岸,也請ORACLE顧問,最後發現自己動手真的比較實在。
感謝您
glenn sun
Posted by glenn
at 2009年05月22日 17:16
小弟是有看了一些書跟文件,但大同小異,都是介照工具為主,除非你要去深入了解oracle的運算方式,這類的文件在www.itpub.net上面有oracle內部的訓練文件,你可找來看看(小弟手上沒有)我的解決方案,就是建立監控系統,把有問題的sql寄給我,在9i中沒有像10g以上有歷史sql的功能可用,能得到現場的情況,變成非常的重要了
Posted by 睡貓
at 2009年05月22日 20:11
在11g有oracle有對plan提出了一個解決方案,那就是在採用新的plan時,會對舊有的plan做比較,效能比舊的好時才會用新的,也許你可diy在9i中實做出來~不過我覺的資料會變動,固定plan在資料有大量的變動時,反而會得到錯誤的plan
而且會慢應該是那種歷史資料的大表才會發生吧,配合用partition跟materialized views看能不能解決
Posted by 睡貓
at 2009年05月22日 20:20

你說的與小弟不謀而合,materialized views的確是個可以考慮的作法,而這個作法目前我也在實作中。
顧問實在是不能盡信,幾次談下來才發現他其實不會加HINT,會議過程居然還上網找資料,在眾目睽睽之下跟我說可以用某個HINT(譬如USE_NL之類)。
我傻住了,還以為這是顧問的基本功,我全盤皆輸,發誓不再指望原廠。
mv的實作有問題稍晚再跟您請教,partition目前我還抗拒著,畢竟您也知道後續的維護功力比建立還重要與繁雜的多。
tuning通常都在系統上線後才會去面對的,當面對著接近200行的SQL,只能苦笑.....有機會在跟您聊
Posted by glenn
at 2009年06月12日 10:06
在11g之前的partition的維謢確時是麻煩,因為不會自動產生新的partition,不過倒是可以用pl/sql自動去執行產生新的partition的sql。另外我維護久了,有時要做適當的反正規化,簡單來說就是空間換時間,這部份就要看自已對於羅輯跟業務的了解程度。
Posted by 睡貓
at 2009年06月12日 11:54