在新建完Physical standby之後,想測試一下ACTIVE DATAGUARD的效果,在新建Tablespace和datafile的時候,會出現以下錯誤:
打開備庫提示:
SQL> alter database open;
alter database open
*
ERROR at line 1:
ORA-10458: standby database requires recovery
ORA-01157: 無法標識/鎖定數據文件 5 - 請參閱 DBWR 跟蹤文件
ORA-01111: 數據文件 5 名稱未知 - 請重命名以更正文件
ORA-01110: 數據文件 5:
'E:\APP\ORACLE\PRODUCT\11.2.0\DBHOME_1\DATABASE\UNNAMED00005'
備庫日誌提示如下錯誤:
Mon Dec 22 22:19:27 2014
MRP0 started with pid=28, OS id=4436
started logmerger process
Mon Dec 22 22:19:32 2014
Managed Standby Recovery not using Real Time Apply
MRP0: Background Media Recovery terminated with error 1111
Errors in file e:\app\oracle\diag\rdbms\standby\orcldb\trace\orcldb_pr00_7040.trc:
ORA-01111: name for data file 5 is unknown - rename to correct file
ORA-01110: data file 5: 'E:\APP\ORACLE\PRODUCT\11.2.0\DBHOME_1\DATABASE\UNNAMED00005'
ORA-01157: cannot identify/lock data file 5 - see DBWR trace file
ORA-01111: name for data file 5 is unknown - rename to correct file
ORA-01110: data file 5: 'E:\APP\ORACLE\PRODUCT\11.2.0\DBHOME_1\DATABASE\UNNAMED00005'
Slave exiting with ORA-1111 exception
Errors in file e:\app\oracle\diag\rdbms\standby\orcldb\trace\orcldb_pr00_7040.trc:
ORA-01111: name for data file 5 is unknown - rename to correct file
ORA-01110: data file 5: 'E:\APP\ORACLE\PRODUCT\11.2.0\DBHOME_1\DATABASE\UNNAMED00005'
ORA-01157: cannot identify/lock data file 5 - see DBWR trace file
ORA-01111: name for data file 5 is unknown - rename to correct file
ORA-01110: data file 5: 'E:\APP\ORACLE\PRODUCT\11.2.0\DBHOME_1\DATABASE\UNNAMED00005'
Recovery Slave PR00 previously exited with exception 1111
...
Mon Dec 22 22:01:45 2014
File #5 added to control file as 'UNNAMED00005' because
the parameter STANDBY_FILE_MANAGEMENT is set to MANUAL
The file should be manually created to continue.
MRP0: Background Media Recovery terminated with error 1274
Errors in file e:\app\oracle\diag\rdbms\standby\orcldb\trace\orcldb_pr00_5020.trc:
ORA-01274: cannot add datafile 'E:\APP\ORACLE\ORADATA\ORCLDB\TBSDATA1.DBF' - file could not be created
Managed Standby Recovery not using Real Time Apply
Recovery interrupted!
Recovered data files to a consistent state at change 1078919
Errors in file e:\app\oracle\diag\rdbms\standby\orcldb\trace\orcldb_pr00_5020.trc:
ORA-01274: cannot add datafile 'E:\APP\ORACLE\ORADATA\ORCLDB\TBSDATA1.DBF' - file could not be created
日誌提示了在備庫參數STANDBY_FILE_MANAGEMENT是設置爲手工模式,需要手工去把新建的數據文件複製到備庫上,需要把這個值設置爲auto後操作新增Tablespace和datafile。現在想解決備庫同步的問題需執行以下:
1,把主庫新建datafile數據文件offline後複製一份出來
SQL> alter database datafile 'E:\APP\ORACLE\ORADATA\ORCLDB\TBSDATA1.DBF' offline;
Database altered.
2,因爲主庫控制文件已經有變化,需要重建備庫standby控制文件
關閉實例後掛載
SQL> shutdown immediate;
Database closed.
Database dismounted.
ORACLE instance shut down.
SQL> startup mount;
新建備庫控制文件,並重命名3份
SQL> alter database create standby controlfile as 'e:\control01.ctl';
Database altered.
open主庫如提示ora-01113,mount狀態執行
SQL> recover datafile 5;
SQL> alter database open;
3,關閉備庫實例
SQL> shutdown immediate;
4,把剛纔offline的數據文件和3份控制文件拷貝到備庫相應路徑
5,掛載備庫(如出現ora-00214的情況把最新的控制文件複製3份就可以了)
SQL> startup
SQL> alter database mount standby database;
SQL> select name from v$datafile;
NAME
----------------------------------------------------------------------
E:\APP\ORACLE\ORADATA\ORCLDB\DATAFILE\O1_MF_SYSTEM_B9HLJHCV_.DBF
E:\APP\ORACLE\ORADATA\ORCLDB\DATAFILE\O1_MF_SYSAUX_B9HLJHGZ_.DBF
E:\APP\ORACLE\ORADATA\ORCLDB\DATAFILE\O1_MF_UNDOTBS1_B9HLJHH9_.DBF
E:\APP\ORACLE\ORADATA\ORCLDB\DATAFILE\O1_MF_USERS_B9HLJHJ7_.DBF
E:\APP\ORACLE\ORADATA\ORCLDB\TBSDATA1.DBF
6,執行應用歸檔
SQL> alter database recover managed standby database disconnect from session;
查看歸檔應用情況
SQL> select name,sequence#,applied from v$archived_log;
7,添加主庫備庫參數standby_file_management後用pfile啓動並生成spfile
STANDBY_FILE_MANAGEMENT=AUTO
SQL> show parameter STANDBY_FILE_MANAGEMENT
NAME TYPE VALUE
------------------------------------ ----------- ---------------
standby_file_management string AUTO
8,重新再試一下新建datafile。
切換日誌
SQL> alter system switch logfile;
System altered.
打開備庫read only with apply
SQL> alter database recover managed standby database cancel;
Database altered.
SQL> alter database open;
Database altered.
SQL> alter database recover managed standby database using current logfile disconnect from session;
Database altered.
SQL> select open_mode from v$database;
OPEN_MODE
--------------------
READ ONLY WITH APPLY
新建datafile
SQL> alter tablespace tbs_test add datafile 'e:\app\oracle\oradata\orcldb\tbsdata2.dbf' size 10m;
備庫日誌提示:
Tue Dec 23 01:17:38 2014
Successfully added datafile 6 to media recovery
Datafile #6: 'E:\APP\ORACLE\ORADATA\STANDBY\DATAFILE\O1_MF_TBS_TEST_B9JNKKW0_.DBF'
NAME
---------------------------------------------------------------------
E:\APP\ORACLE\ORADATA\ORCLDB\DATAFILE\O1_MF_SYSTEM_B9HLJHCV_.DBF
E:\APP\ORACLE\ORADATA\ORCLDB\DATAFILE\O1_MF_SYSAUX_B9HLJHGZ_.DBF
E:\APP\ORACLE\ORADATA\ORCLDB\DATAFILE\O1_MF_UNDOTBS1_B9HLJHH9_.DBF
E:\APP\ORACLE\ORADATA\ORCLDB\DATAFILE\O1_MF_USERS_B9HLJHJ7_.DBF
E:\APP\ORACLE\ORADATA\ORCLDB\TBSDATA1.DBF
E:\APP\ORACLE\ORADATA\STANDBY\DATAFILE\O1_MF_TBS_TEST_B9JNKKW0_.DBF <-- 這個名字怎麼這樣?可能要設置一下什麼東西吧。
新建用戶和表實時測試查詢
SQL> create user tbs_user1 identified by oracle default tablespace tbs_test;
User created.
SQL> grant connect,resource to tbs_user1;
Grant succeeded.
備庫查詢
SQL> select * from test1;
ID
----------
1
Active DataGuard 測試成功。
小結:之前做的active DG實驗可能就是因爲這一步的參數設置沒有修改纔會提示錯誤,那時候因爲沒有實時看日誌記錄沒有了解到關鍵所在,以後再做每一步實驗的時候都需要把警告和跟蹤文件實時看一遍,才能更好去分析和解決問題。