ORA-16019: cannot use LOG_ARCHIVE_DEST_1 with LOG_ARCHIVE_DEST or LOG_ARCHIVE_DUPLEX_DEST
这是一个很经典的问题,主要是由于log_archive_dest与log_archive_dest_n这两个参数是不能够同时设置值、共存的。
如何解决?大致的思想就是把其中一个参数去掉,注释掉,无非就是pfile,spfile两个相互转换吧
按照如下:
sqlplus /nolog或者sqlplus / as sysdba,以空闲的实例连接进去
已连接到空闲例程。
然后用文本编辑器打开init.ora,去掉或者注释掉log_archive_dest这行设置,启动db.
SQL> startup pfile='/oracle/oracle/product/10.2.0/db_1/dbs/inittest4.ora'
ORACLE instance started.
Total System Global Area 1224736768 bytes
Fixed Size 2083560 bytes
Variable Size 352322840 bytes
Database Buffers 855638016 bytes
Redo Buffers 14692352 bytes
Database mounted.
Database opened.
Oracle已正常open。
下面把spfile create 切换回去
SQL> create spfile='/oracle/oracle/product/10.2.0/db_1/dbs/spfiletest4.ora' from pfile='/oracle/oracle/product/10.2.0/db_1/dbs/inittest4.ora';
File created.
关闭数据库,重启数据库即可。
SQL> shutdown immediate;
Database closed.
Database dismounted.
ORACLE instance shut down.
SQL> startup mount;
ORACLE instance started.
Total System Global Area 1224736768 bytes
Fixed Size 2083560 bytes
Variable Size 352322840 bytes
Database Buffers 855638016 bytes
Redo Buffers 14692352 bytes
Database mounted.
SQL> alter database archivelog; (本例中数据库开启了归档)
Database altered.
SQL> alter database open;
Database altered.
总结:
1.数据库的参数不能随意更改,尤其scope=spfile,需要重启db的。
2.如果要改scope=spfile,重启db的,最好用create pfile='path' from spfile或者简单的copy spfile来备份更改之前的spfile参数文件,这个非常重要
3.在“已连接到空闲例程”的状态下,是可以create pfile from spfile的,这点以后注意,以idle的方式连进数据库的时候就已经可以读到spfile的“内容”了,你可以"create pfile from spfile"给弄出来。
如何正确设置参数:
1 如果我们想设置log_archive_dest 这个参数的时候,我们应该如何操作:
1.1清空db_recover_file_dest 和 log_archive_dest_n 参数,因为这2个参数和log_archive_dest参数冲突:
SQL> alter system set db_recovery_file_dest='';
System altered.
SQL> alter system set log_archive_dest_1='';
System altered.
1.2修改log_archive_dest参数,注意这里写的是直接路径,没有location选项。 因为我们之前清空了冲突的两个参数,所以可以随便修改,不会报错了。
SQL> alter system set log_archive_dest='/oradata/arch';
System altered.
SQL> show parameter db_recovery;
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
db_recovery_file_dest string
db_recovery_file_dest_size big integer 5G
SQL> show parameter log_archive_dest
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
log_archive_dest string /oradata/arch
log_archive_dest_1 string
log_archive_dest_10 string
2 如果我们想从log_archive_dest 这个参数 切换回log_archive_dest_1参数,操作也是一样,
2.1 先清空该参数
SQL> alter system set log_archive_dest='';
System altered.
2.2 修改相应的log_archive_dest_1参数:
SQL> alter system set log_archive_dest_1="location=/oradata/arch";
System altered.
SQL> alter system set DB_RECOVERY_FILE_DEST='/oradata/arch';
System altered.
SQL> show parameter db_recovery;
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
db_recovery_file_dest string /oradata/arch
db_recovery_file_dest_size big integer 5G
SQL> show parameter log_archive_dest
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
log_archive_dest string
log_archive_dest_1 string location=/oradata/arch
log_archive_dest_10 string
log_archive_dest_2 string
这是一个很经典的问题,主要是由于log_archive_dest与log_archive_dest_n这两个参数是不能够同时设置值、共存的。
如何解决?大致的思想就是把其中一个参数去掉,注释掉,无非就是pfile,spfile两个相互转换吧
按照如下:
sqlplus /nolog或者sqlplus / as sysdba,以空闲的实例连接进去
已连接到空闲例程。
SQL> create pfile='/oracle/oracle/product/10.2.0/db_1/dbs/inittest4.ora' from spfile;
File created.然后用文本编辑器打开init.ora,去掉或者注释掉log_archive_dest这行设置,启动db.
SQL> startup pfile='/oracle/oracle/product/10.2.0/db_1/dbs/inittest4.ora'
ORACLE instance started.
Total System Global Area 1224736768 bytes
Fixed Size 2083560 bytes
Variable Size 352322840 bytes
Database Buffers 855638016 bytes
Redo Buffers 14692352 bytes
Database mounted.
Database opened.
Oracle已正常open。
下面把spfile create 切换回去
SQL> create spfile='/oracle/oracle/product/10.2.0/db_1/dbs/spfiletest4.ora' from pfile='/oracle/oracle/product/10.2.0/db_1/dbs/inittest4.ora';
File created.
关闭数据库,重启数据库即可。
SQL> shutdown immediate;
Database closed.
Database dismounted.
ORACLE instance shut down.
SQL> startup mount;
ORACLE instance started.
Total System Global Area 1224736768 bytes
Fixed Size 2083560 bytes
Variable Size 352322840 bytes
Database Buffers 855638016 bytes
Redo Buffers 14692352 bytes
Database mounted.
SQL> alter database archivelog; (本例中数据库开启了归档)
Database altered.
SQL> alter database open;
Database altered.
总结:
1.数据库的参数不能随意更改,尤其scope=spfile,需要重启db的。
2.如果要改scope=spfile,重启db的,最好用create pfile='path' from spfile或者简单的copy spfile来备份更改之前的spfile参数文件,这个非常重要
3.在“已连接到空闲例程”的状态下,是可以create pfile from spfile的,这点以后注意,以idle的方式连进数据库的时候就已经可以读到spfile的“内容”了,你可以"create pfile from spfile"给弄出来。
如何正确设置参数:
1 如果我们想设置log_archive_dest 这个参数的时候,我们应该如何操作:
1.1清空db_recover_file_dest 和 log_archive_dest_n 参数,因为这2个参数和log_archive_dest参数冲突:
SQL> alter system set db_recovery_file_dest='';
System altered.
SQL> alter system set log_archive_dest_1='';
System altered.
1.2修改log_archive_dest参数,注意这里写的是直接路径,没有location选项。 因为我们之前清空了冲突的两个参数,所以可以随便修改,不会报错了。
SQL> alter system set log_archive_dest='/oradata/arch';
System altered.
SQL> show parameter db_recovery;
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
db_recovery_file_dest string
db_recovery_file_dest_size big integer 5G
SQL> show parameter log_archive_dest
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
log_archive_dest string /oradata/arch
log_archive_dest_1 string
log_archive_dest_10 string
2 如果我们想从log_archive_dest 这个参数 切换回log_archive_dest_1参数,操作也是一样,
2.1 先清空该参数
SQL> alter system set log_archive_dest='';
System altered.
2.2 修改相应的log_archive_dest_1参数:
SQL> alter system set log_archive_dest_1="location=/oradata/arch";
System altered.
SQL> alter system set DB_RECOVERY_FILE_DEST='/oradata/arch';
System altered.
SQL> show parameter db_recovery;
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
db_recovery_file_dest string /oradata/arch
db_recovery_file_dest_size big integer 5G
SQL> show parameter log_archive_dest
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
log_archive_dest string
log_archive_dest_1 string location=/oradata/arch
log_archive_dest_10 string
log_archive_dest_2 string