測試ACTIVE DATAGUART出現ORA-01111等錯誤

在新建完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'

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
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實驗可能就是因爲這一步的參數設置沒有修改纔會提示錯誤,那時候因爲沒有實時看日誌記錄沒有了解到關鍵所在,以後再做每一步實驗的時候都需要把警告和跟蹤文件實時看一遍,才能更好去分析和解決問題。


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章