關於Flashback的小測試(r10筆記第15天)
對於Oracle的Flashback來說,在11g裡面有了一個很細微的變化,可以說是一個很不錯的福利,那就是開啟閃回不需要重啟資料庫至mount狀態下,歸檔模式下open狀態就可以開啟,關閉。
但是有一點自己也記不太清楚了,那就是有時候資料庫開啟/關閉很容易,有的時候卻需要額外花點功夫。今天索性花了點時間理了理。
檢視是否開啟閃回資料庫,可以簡單使用下面的方式。
SQL> select database_role,flashback_on from v$database; DATABASE_ROLE FLASHBACK_ON -------------------------------- ------------------------------------ PHYSICAL STANDBY YES
如果要關閉,就需要一個命令即可。 SQL> alter database flashback off; Database altered. 我在備庫上測試的情況如下:
在open狀態下,嘗試開啟丟擲了ORA-00153的錯誤。 SQL> alter database flashback on; alter database flashback on * ERROR at line 1: ORA-01153: an incompatible media recovery is active 隱隱記得在有些資料庫中是可以直接開啟的,為什麼在這個環境就不行了?
難道是閃回區設定有問題?
檢視閃回區的使用率,可以看到閃回區是沒有問題的。
SQL> select * from v$flash_recovery_area_usage
FILE_TYPE PERCENT_SPACE_USED PERCENT_SPACE_RECLAIMABLE NUMBER_OF_FILES
ORA-1153 trying to turn on Flashback for Physical Standby Database (Doc ID 1286863.1)
Solution如下
In order to enable the flashback, the recovery has to be stopped.
You can use the following command to stop the recovery on standby database
SQL> alter database recover managed standby database cancel;
- Enable Flashback :
SQL> alter database flashback on;
- Start the managed recovery again
SQL> alter database recover managed standby database disconnect from session;
當然在操作的時候,發現日誌中竟然丟擲了Kernel相關的小錯誤。
Managed Standby Recovery not using Real Time Apply
Parallel Media Recovery started with 64 slaves
Wed Sep 07 10:29:01 2016
Errors in file /U01/app/oracle/diag/rdbms/snewtest2/newtest2/trace/newtest2_pr03_67053.trc:
ORA-27090: Unable to reserve kernel resources for asynchronous disk I/O
Additional information: 3
Additional information: 128
Additional information: 166023704
Warning: recovery process PR03 cannot use async I/O
這個問題,自己在以前的部落格也討論過:關於aio設定的討論 當然Oracle有下面的連結可供參考,對於核心引數的設定還是有一些很詳細的建議。 Oracle Validated Configuration: http://linux.oracle.com/pls/apex/f?p=102:2:2007385298933639::NO::P2_VC_ID:426 比如文件中的建議為: fs.aio-max-nr= 3145728 當然我們可以檢視當前系統的aio配置情況。 [oracle@snewtest2 trace]$ cat /proc/sys/fs/aio-max-nr 65536 修改這個核心引數的設定,即可生效,這個問題就引刃而解了。 sysctl -w fs.aio-max-nr=3145728
當然關於aio的設定,想了解更多,可以參考。
https://www.pythian.com/blog/troubleshooting-ora-27090-async-io-errors/
而為什麼Flashback on,off在有些資料庫可以很輕鬆的使用呢,發現對於主庫可以隨意切換,對於備庫需要先停止應用日誌,開啟Flashback database,再繼續開啟日誌應用。 SQL> alter database flashback off; Database altered. SQL> alter database flashback on; Database altered.