星期四, 4月 02, 2015

db block corruption 預防

Oracle ASM 如果用軟體式的mirror, 建議開啟以下兩個參數
避免發生db block corruption 的問題


*.db_block_checking='MEDIUM'  --With DB_BLOCK_CHECKING, in-memory intra-block check validation
*.db_block_checksum='typical'

另一參數 DB_LOST_WRITE_PROTEC(11g) ,  避免系統認為已寫入 , 但卻是未寫入之情形
DB_LOST_WRITE_PROTECT=TYPICAL

@update at 2016/1/29
在11g 以後, 可以僅僅設定DB_ULTRA_SAFE=DATA_ONLY,
效果也跟以上的設定一樣, 折損效能大概10%


ref: https://docs.oracle.com/cd/B28359_01/server.111/b28320/initparams064.htm


當發生block corruption 之後如何修復特定Oracle block?
可以參考以下文章
[轉載] Oracle blockrecover limits
http://jaychu649.blogspot.tw/2015/01/oracle-blockrecover-limits.html

如果真的毀了, 就使用以下SQL unload data
SQL>
set heading off
set lines 1000
set pagesize 0
set termout off
set trimspool on
set linesize 9999
set term off
set feedback off
spool /mnt/DATA.lst
set colsep ","
--下面這行是告訴oracle 忽略corruption blocks, 沒有忽略的話會造成報錯.
alter session set events '10231 trace name context forever, level 10';
select * from USER.TABLE;
spool off

於2018/4/26 補充
如果您的環境是9i , alter session set events '10231 trace name context forever, level 10';  也適用
執行完畢記得下 ALTER SYSTEM SET EVENTS='10231 trace name context off'; 關掉

ref:
http://t.askmaclean.com/thread-5478-1-1.html

沒有留言:

LinkWithin-相關文件

Related Posts Plugin for WordPress, Blogger...