客户的电话吵醒了熟睡的我,我想这是大多数dba的状态,没办法,客户误操作,更改了某些参数造成db起不来了。
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,以空闲的实例连接进去
已连接到空闲例程。
SQL> create pfile=‘d:\init.ora‘ from spfile;
文件已创建。
然后用文本编辑器打开init.ora,去掉、注释掉log_archive_dest这行设置,启动db.
SQL> startup pfile=‘d:\init.ora‘;
ORACLE 例程已经启动。
Total System Global Area 419430400 bytes
Fixed Size 1249320 bytes
Variable Size 125833176 bytes
Database Buffers 285212672 bytes
Redo Buffers 7135232 bytes
数据库装载完毕。
数据库已经打开。
Oracle被正常的打开了,好了,有救了。把spfile create 回去oracle_home\db_1\database\...
SQL> create spfile=‘C:\oracle\product\10.2.0\db_1\database\SPFILEBANGEL.ORA‘ from pfile=‘D:\INIT.ORA‘;
文件已创建。
然后就ok了。
总结:
这件事情告我们两点
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"给弄出来。