2007年06月14日
9i使用flashback流程
os:redhat 4.3
oracle:9iR2
1、使用sys身份執行
2、設定字典檔存放地方(功用在於反解oracle的內建16位元編碼的資料為我們能瞭解的字元)
3、開始增加解譯的檔案,除了redo log之外archive檔也可,我就以redo log 檔為例了
4、開始進行增加進來檔案的分析 (start_logmnr還有別的參數可縮短範圍,請自行查尋相關資料)
5、查尋的view
6、可利用flashback配合scn後查尋特定表格資料
心得:
1、9i的flashback有每5分鍾才會同步一次scn,所以當超過這次的scn到下次新的scn產生之前,查尋flashbck是找不到資料(10g已有改進),如要精準的話,最好用scn來回覆資料
2、要使用flashback的話不一定要開起archived mode,不過你就只能查redo log file裡的資料了,不過如很快的redo log都交換過一圈後,你也查不到之前的資料了哦
3、重要的參數有undo_management、undo_retention、undo_tablespace,其中undo_retention的 單位為秒,預設值為3小時,但如交易很多時,也會有可能把flashback裡的資料給清除。因為flashback的運作是先進先出,當空間不夠時就會 把舊的移除了,所以出問題時要快點處理。
4、如真的超過flashback的時間的話,就只好把logminer查出來的sql_undo的資料,配合spool匯成一個檔案,再進行DML了
5、如使用PL/SQL Developer操作時發生ORA-07445:exception encountered的話,這是PL/SQL Developer的問題,請改用sqlplus或別的軟體試看看了
6、只要平台、字元編碼都相同,是可以由相同的字典檔進行分析
7、如有新的table加入後,字典要重新建立,不然無法新加的物件無法進行反解譯
| 1、$ORACLE_HOME/rdbms/admin/dbmslm.sql 2、$ORACLE_HOME/rdbms/admin/dbmslmd.sql |
2、設定字典檔存放地方(功用在於反解oracle的內建16位元編碼的資料為我們能瞭解的字元)
| SQL>alter system set utl_file_dir='/u01/app/oracle/logminer' scope=spfile; SQL>startup open force; SQL>execute dbms_logmnr_d.build(dictionary_filename => 'testlogminer.ora',dictionary_location => '/u01/app/oracle/logminer'); |
3、開始增加解譯的檔案,除了redo log之外archive檔也可,我就以redo log 檔為例了
| SQL> execute dbms_logmnr.add_logfile(LogFileName => '/u01/app/oracle/oradata/binhu/redo02.log',Options => dbms_logmnr.NEW); -- 第一次加入檔案 SQL> execute dbms_logmnr.add_logfile(LogFileName => '/u01/app/oracle/oradata/binhu/redo01.log',Options => dbms_logmnr.addfile); -- 如還要再新增的話,就要改用addfile |
4、開始進行增加進來檔案的分析 (start_logmnr還有別的參數可縮短範圍,請自行查尋相關資料)
| SQL> execute dbms_logmnr.start_logmnr(DictFileName => '/u01/app/oracle/logminer/testlogminer.ora'); |
5、查尋的view
| SQL>select scn,cscn,to_char(timestamp,'yyy-mm-dd hh24:mi:ss'),to_char(commit_timestamp,'yyyy-mm-dd hh24:mi:ss'),table_space,username,sql_redo,sql_undo,session_info from v$logmnr_contents where username='HR'; |
6、可利用flashback配合scn後查尋特定表格資料
| SQL> select * from hr.testflash as of scn 493636; -- 由flashback裡查尋到的資料 JOB_ID JOB_TITLE MIN_SALARY MAX_SALARY ---------- ----------------------------------- ---------- ---------- AD_PRES President 20000 40000 FI_ACCOUNT Accountant 4200 9000 AC_MGR Accounting Manager 8200 16000 AC_ACCOUNT Public Accountant 4200 9000 SA_MAN Sales Manager 10000 20000 SA_REP Sales Representative 6000 12000 PU_MAN Purchasing Manager 8000 15000 PU_CLERK Purchasing Clerk 2500 5500 ST_MAN Stock Manager 5500 8500 ST_CLERK Stock Clerk 2000 5000 SH_CLERK Shipping Clerk 2500 5500 JOB_ID JOB_TITLE MIN_SALARY MAX_SALARY ---------- ----------------------------------- ---------- ---------- IT_PROG Programmer 4000 10000 MK_MAN Marketing Manager 9000 15000 MK_REP Marketing Representative 4000 9000 HR_REP Human Resources Representative 4000 9000 PR_REP Public Relations Representative 4500 10500 16 rows selected. SQL> select * from hr.testflash; --現在資料庫裡的資料 JOB_ID JOB_TITLE MIN_SALARY MAX_SALARY ---------- ----------------------------------- ---------- ---------- FI_ACCOUNT Accountant 4200 9000 AC_MGR Accounting Manager 8200 16000 AC_ACCOUNT Public Accountant 4200 9000 SA_MAN Sales Manager 10000 20000 SA_REP Sales Representative 6000 12000 PU_MAN Purchasing Manager 8000 15000 PU_CLERK Purchasing Clerk 2500 5500 ST_MAN Stock Manager 5500 8500 ST_CLERK Stock Clerk 2000 5000 SH_CLERK Shipping Clerk 2500 5500 IT_PROG Programmer 4000 10000 JOB_ID JOB_TITLE MIN_SALARY MAX_SALARY ---------- ----------------------------------- ---------- ---------- MK_MAN Marketing Manager 9000 15000 MK_REP Marketing Representative 4000 9000 HR_REP Human Resources Representative 4000 9000 PR_REP Public Relations Representative 4500 10500 15 rows selected. |
心得:
1、9i的flashback有每5分鍾才會同步一次scn,所以當超過這次的scn到下次新的scn產生之前,查尋flashbck是找不到資料(10g已有改進),如要精準的話,最好用scn來回覆資料
2、要使用flashback的話不一定要開起archived mode,不過你就只能查redo log file裡的資料了,不過如很快的redo log都交換過一圈後,你也查不到之前的資料了哦
3、重要的參數有undo_management、undo_retention、undo_tablespace,其中undo_retention的 單位為秒,預設值為3小時,但如交易很多時,也會有可能把flashback裡的資料給清除。因為flashback的運作是先進先出,當空間不夠時就會 把舊的移除了,所以出問題時要快點處理。
4、如真的超過flashback的時間的話,就只好把logminer查出來的sql_undo的資料,配合spool匯成一個檔案,再進行DML了
5、如使用PL/SQL Developer操作時發生ORA-07445:exception encountered的話,這是PL/SQL Developer的問題,請改用sqlplus或別的軟體試看看了
6、只要平台、字元編碼都相同,是可以由相同的字典檔進行分析
7、如有新的table加入後,字典要重新建立,不然無法新加的物件無法進行反解譯
引用URL
http://cgi.blog.roodo.com/trackback/3468629