Oracle 杂记(18-03-21)

归档日志的三个路径

之前配置 RAC 开启归档模式时没有指定归档目录,默认放在闪回区,造成超过闪回区大小,临时将闪回区大小 db_recovery_file_dest_size 设置为 50G,随着数据量增大,并不能解决根本问题。

所以设置 LOG_ARCHIVE_DEST_n 的位置:

1
alter system set log_archive_dest_1='location=+ARCHIVE_LOG' scope=spfile sid='*';

重启数据库报错:

ORA-16019: cannot use db_recovery_file_dest with LOG_ARCHIVE_DEST or LOG_ARCHIVE_DUPLEX_DEST

由于修改进 spfile,导致无法启动,此时参照第二部分 pfile 与 spfile 互转恢复。

原因是 DB_RECOVERY_FILE_DEST LOG_ARCHIVE_DEST LOG_ARCHIVE_DEST_n 会存在冲突。

查看当前的闪回区配置:

1
show parameter DB_RECOVERY_FILE_DEST

路径存在,大小为 50G。

查看 LOG_ARCHIVE_DEST ,可以看到此参数设置了路径。

不难看出,因而造成了配置 LOG_ARCHIVE_DEST_1 时出现冲突。

归档日志的路径设置顺序为:

DB_RECOVERY_FILE_DESTLOG_ARCHIVE_DEST_n 不存在的时候,会读取 LOG_ARCHIVE_DEST 的路径,当 DB_RECOVERY_FILE_DEST 存在时,会被 DB_RECOVERY_FILE_DEST 覆盖,此时要指定独立归档日志路径,需要设置 LOG_ARCHIVE_DEST_n 参数来优先覆盖。

若要配置 LOG_ARCHIVE_DEST ,则需要清空 DB_RECOVERY_FILE_DEST LOG_ARCHIVE_DEST_n

1
2
alter system set db_recovery_file_dest=''
alter system set log_archive_dest_1=''

若要配置 LOG_ARCHIVE_DEST_N,则需要清空 LOG_ARCHIVE_DESTDB_RECOVERY_FILE_DEST

1
2
alter system set db_recovery_file_dest=''
alter system set log_archive_dest=''

这样就会解决冲突。

pfile 与 spfile 的互转

涉及 spfile 的更改,可能导致下次重启数据库报错。

RAC 环境下,修改遭遇:

1
ORA-16019: cannot use LOG_ARCHIVE_DEST_1 with LOG_ARCHIVE_DEST or LOG_ARCHIVE_DUPLEX_DEST

出现此问题的原因是 log_archive_dest_ndb_recovery_file_destlog_archive_dest_1 不能同时设置。存在冲突。

这是就需要根据 spfile 重建 pfile,删除错误配置项,用 pfile 启动后再根据 pfile 重新创建 spfile。

根据 spfile 创建 pfile:

1
create pfile='init.ora' from spfile

一般位于 $ORACLE_HOME/dbs 下,也可以指定路径来生成。

随后利用该 pfile 启动:

1
startup pfile='<pfile path>'

然后生成 spfile:

1
create spfile='<spfile path>' form pfile='<pfile path>';

如果默认是以 spfile 启动,此时就可以成功启动 spfile。

redo 日志重建

早上发现某测试库实例挂掉,查看 alert 日志:

查看 redo 文件位置:

1
select * from v$logfile;

查看当前 redo 日志状态:

1
select group#,members,bytes/1024/1024,status from v$log;

删除状态为 INACTIVE 的日志组:

1
alter database drop logfile group 1;

若状态不为 INACTIVE,则执行:

1
alter system switch logfile; 

此时可以在文件系统中删除物理路径下的物理日志文件。

删掉后进行重建:

1
alter database add logfile group 1 ('/u01/app/oracle/oradata/orcl/group1redo1.log', '/u01/app/oracle/oradata/orcl/group1redo2.log') size 300M;

参考

-EOF-

本博客所有文章除特别声明外,均采用 CC BY-NC-ND 4.0 许可协议。转载请注明出处! © 雨落
  1. 1. 归档日志的三个路径
  2. 2. pfile 与 spfile 的互转
  3. 3. redo 日志重建
  4. 4. 参考