ORA-16019: cannot use db_recovery_file_dest with LOG_ARCHIVE_DEST or LOG_ARCHIVE_DUPLEX_DEST
By default Oracle 10g will use the Flash Recovery Area for archivedlogs and recovery related files。the parameter log_archive_dest_10 is reserved for the Flash Recovery Area and is set to 'LOCATION=USE_DB_RECOVERY_FILE_DEST' by default.
oracle 10g 闪回日志和归档日志默认共用一个闪回区,其中参数log_archive_dest_10被保留,用于通过loaction单独指定归档目录.
归档的三个路径参数;
LOG_ARCHIVE_DEST:指定归档文件存放的路径,该路径只能是本地磁盘,默认为’’。
LOG_ARCHIVE_DEST_n:默认值为’’。Oracle最多支持把日志文件归档到10个地方,n从1到10。归档地址可以为本地磁盘,或者网络设备。
DB_RECOVERY_FILE_DEST:指定闪回恢复区路径。
三者关系:
1、 如果设置了DB_RECOVERY_FILE_DEST,就不能设置LOG_ARCHIVE_DEST,默认的归档日志存放于DB_RECOVERY_FILE_DEST指定的闪回恢复区中。可以设置LOG_ARCHIVE_DEST_n,如果这样,那么归档日志不再存放于DB_RECOVERY_FILE_DEST中,而是存放于LOG_ARCHIVE_DEST_n设置的目录中。如果想要归档日志继续存放在DB_RECOVERY_FILE_DEST中,可以通过如下命令:alter system set log_archive_dest_1=’location=USE_DB_RECOVERY_FILE_DEST’;
2、 如果设置了LOG_ARCHIVE_DEST,就不能设置LOG_ARCHIVE_DEST_n和DB_RECOVERY_FILE_DEST。如果设置了LOG_ARCHIVE_DEST_n,就不能设置LOG_ARCHIVE_DEST。也就是说,LOG_ARCHIVE_DEST参数和DB_RECOVERY_FILE_DEST、LOG_ARCHIVE_DEST_n都不共存。而DB_RECOVERY_FILE_DEST和LOG_ARCHIVE_DEST_n可以共存。
3、 LOG_ARCHIVE_DEST只能与LOG_ARCHIVE_DUPLEX_DEST共存。这样可以设置两个归档路径。LOG_ARCHIVE_DEST设置一个主归档路径,LOG_ARCHIVE_DUPLEX_DEST设置一个从归档路径。所有归档路径必须是本地的。
4、 如果LOG_ARCHIVE_DEST_n设置的路径不正确,那么Oracle会在设置的上一级目录归档。比如设置LOG_ARCHIVE_DEST_1=’location=C:\archive1’,而OS中并没有archive1这个目录,那么Oracle会在C盘归档。
在工作中我们有时需要开启闪回恢复区,但之前已经设有归档,当我们设置db_recovery_file_dest时会报如上错误,该错误意思是不能同时设置归档目录和闪回恢复区。
SQL> show parameter archive
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
archive_lag_target integer 0
log_archive_config string
log_archive_dest string /oradata/arch =========〉现在数据库里已经设置归档目录
SQL> alter system set db_recovery_file_dest_size='600m' scope=both;
System altered.
SQL> show parameter recover
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
db_recovery_file_dest string
db_recovery_file_dest_size big integer 600M
recovery_parallelism integer 0
SQL>
SQL> alter system set db_recovery_file_dest='/oradata/flashback' scope=both; =========〉不清空log_archive_dest时无法设置闪回恢复区
alter system set db_recovery_file_dest='/oradata/flashback' scope=both
*
ERROR at line 1:
ORA-02097: parameter cannot be modified because specified value is invalid
ORA-16019: cannot use db_recovery_file_dest with LOG_ARCHIVE_DEST or LOG_ARCHIVE_DUPLEX_DEST
清空归档目录:
SQL> alter system set log_archive_dest='' scope=both;
System altered.
SQL> alter system set db_recovery_file_dest='/oradata/flashback' scope=both; ========〉清空归档目录后,就可以正常设置闪回恢复区了
System altered.
By default Oracle 10g will use the Flash Recovery Area for archivedlogs and recovery related files。the parameter log_archive_dest_10 is reserved for the Flash Recovery Area and is set to 'LOCATION=USE_DB_RECOVERY_FILE_DEST' by default.
oracle 10g 闪回日志和归档日志默认共用一个闪回区,其中参数log_archive_dest_10被保留,用于通过loaction单独指定归档目录.
归档的三个路径参数;
LOG_ARCHIVE_DEST:指定归档文件存放的路径,该路径只能是本地磁盘,默认为’’。
LOG_ARCHIVE_DEST_n:默认值为’’。Oracle最多支持把日志文件归档到10个地方,n从1到10。归档地址可以为本地磁盘,或者网络设备。
DB_RECOVERY_FILE_DEST:指定闪回恢复区路径。
三者关系:
1、 如果设置了DB_RECOVERY_FILE_DEST,就不能设置LOG_ARCHIVE_DEST,默认的归档日志存放于DB_RECOVERY_FILE_DEST指定的闪回恢复区中。可以设置LOG_ARCHIVE_DEST_n,如果这样,那么归档日志不再存放于DB_RECOVERY_FILE_DEST中,而是存放于LOG_ARCHIVE_DEST_n设置的目录中。如果想要归档日志继续存放在DB_RECOVERY_FILE_DEST中,可以通过如下命令:alter system set log_archive_dest_1=’location=USE_DB_RECOVERY_FILE_DEST’;
2、 如果设置了LOG_ARCHIVE_DEST,就不能设置LOG_ARCHIVE_DEST_n和DB_RECOVERY_FILE_DEST。如果设置了LOG_ARCHIVE_DEST_n,就不能设置LOG_ARCHIVE_DEST。也就是说,LOG_ARCHIVE_DEST参数和DB_RECOVERY_FILE_DEST、LOG_ARCHIVE_DEST_n都不共存。而DB_RECOVERY_FILE_DEST和LOG_ARCHIVE_DEST_n可以共存。
3、 LOG_ARCHIVE_DEST只能与LOG_ARCHIVE_DUPLEX_DEST共存。这样可以设置两个归档路径。LOG_ARCHIVE_DEST设置一个主归档路径,LOG_ARCHIVE_DUPLEX_DEST设置一个从归档路径。所有归档路径必须是本地的。
4、 如果LOG_ARCHIVE_DEST_n设置的路径不正确,那么Oracle会在设置的上一级目录归档。比如设置LOG_ARCHIVE_DEST_1=’location=C:\archive1’,而OS中并没有archive1这个目录,那么Oracle会在C盘归档。
在工作中我们有时需要开启闪回恢复区,但之前已经设有归档,当我们设置db_recovery_file_dest时会报如上错误,该错误意思是不能同时设置归档目录和闪回恢复区。
SQL> show parameter archive
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
archive_lag_target integer 0
log_archive_config string
log_archive_dest string /oradata/arch =========〉现在数据库里已经设置归档目录
System altered.
SQL> show parameter recover
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
db_recovery_file_dest string
db_recovery_file_dest_size big integer 600M
recovery_parallelism integer 0
SQL>
SQL> alter system set db_recovery_file_dest='/oradata/flashback' scope=both; =========〉不清空log_archive_dest时无法设置闪回恢复区
alter system set db_recovery_file_dest='/oradata/flashback' scope=both
*
ERROR at line 1:
ORA-02097: parameter cannot be modified because specified value is invalid
ORA-16019: cannot use db_recovery_file_dest with LOG_ARCHIVE_DEST or LOG_ARCHIVE_DUPLEX_DEST
清空归档目录:
SQL> alter system set log_archive_dest='' scope=both;
System altered.
SQL> alter system set db_recovery_file_dest='/oradata/flashback' scope=both; ========〉清空归档目录后,就可以正常设置闪回恢复区了
System altered.
SQL> archive log list
Database log mode Archive Mode
Automatic archival Enabled
Archive destination USE_DB_RECOVERY_FILE_DEST =========〉查看归档目录,发现归档使用闪回恢复区
Oldest online log sequence 116
Next log sequence to archive 118
Current log sequence 118
解决方法:
SQL>alter system set log_archive_dest_1='location=/oradata/arch' scope=both; ========>设置归档目录
SQL> alter system archive log current;
System altered.
SQL> select name,thread#,status,backup_count,completion_time,is_recovery_dest_file from v$archived_log;
NAME THREAD# S BACKUP_COUNT COMPLETION_T IS_
------------------------------------------------------------ ---------- - ------------ ------------ ---
/oradata/arch/1_116_844338348.dbf 1 A 0 10-AUG-14 NO
/oradata/flashback/SHRNC/archivelog/2014_08_10/o1_mf_1_117_9 1 A 0 10-AUG-14 YES
ygbzlw3_.arc
/oradata/arch/1_118_844338348.dbf 1 A 0 10-AUG-14 NO
Database log mode Archive Mode
Automatic archival Enabled
Archive destination USE_DB_RECOVERY_FILE_DEST =========〉查看归档目录,发现归档使用闪回恢复区
Oldest online log sequence 116
Next log sequence to archive 118
Current log sequence 118
解决方法:
SQL>alter system set log_archive_dest_1='location=/oradata/arch' scope=both; ========>设置归档目录
SQL> alter system archive log current;
System altered.
SQL> select name,thread#,status,backup_count,completion_time,is_recovery_dest_file from v$archived_log;
NAME THREAD# S BACKUP_COUNT COMPLETION_T IS_
------------------------------------------------------------ ---------- - ------------ ------------ ---
/oradata/arch/1_116_844338348.dbf 1 A 0 10-AUG-14 NO
/oradata/flashback/SHRNC/archivelog/2014_08_10/o1_mf_1_117_9 1 A 0 10-AUG-14 YES
ygbzlw3_.arc
/oradata/arch/1_118_844338348.dbf 1 A 0 10-AUG-14 NO
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/29446986/viewspace-1248773/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/29446986/viewspace-1248773/