10g的DATA GUARD的一个主要特点就是引入了log_archive_config参数,如果缺少这个参数,可能会导致归档路径被禁用。
看别人建立DATA GUARD时碰到了这个问题,当时觉得比较有意思,于是特意重现一下。
当前是一个已经配置好的DATA GUARD,为了模拟错误,先将这个参数设置为空:
SQL> alter system set log_archive_config = '';
System altered.
SQL> alter system switch logfile;
System altered.
SQL> show parameter archive_dest_2
NAME TYPE VALUEITPUB个人空间x*O})q8T
------------------------------------ ----------- ------------------------------ITPUB个人空间3U m;Dd~w
log_archive_dest_2 string SERVICE=standby LGWR SYNC VALI
mo1iIl\q9f0 D_FOR=(ONLINE_LOGFILES,PRIMARY
d-q4M5S%Ju0 _ROLE) DB_UNIQUE_NAME=standby
nI%V:K7o3q&|0SQL> alter system set log_archive_dest_2 = 'SERVICE=standby ARCH ASYNC VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=standby';
System altered.
SQL> alter system switch logfile;
System altered.
日志切换后,alert文件中并没有任何的错误,包含重新设置log_archive_dest_2参数后再次执行切换日志,alert文件中仍然看不到预期的错误。
导致问题无法重现的原因可能是由于系统中已经设置过log_archive_config参数了,虽然现在置为空,但是这个参数的生效可能会一直保留,于是尝试重启数据库:
SQL> shutdown immediate
7d;HU"vjE9^/r2Zrv0Database closed.