β

Oracle 杂记(18-03-21)

Rainy's Blog 19 阅读

归档日志的三个路径

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

所以设置 LOG_ARCHIVE_DEST_n 的位置:

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 会存在冲突。

查看当前的闪回区配置:

show parameter DB_RECOVERY_FILE_DEST

路径存在,大小为 50G。

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

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

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

DB_RECOVERY_FILE_DEST LOG_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

alter system set db_recovery_file_dest=''
alter system set log_archive_dest_1=''

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

alter system set db_recovery_file_dest=''
alter system set log_archive_dest=''

这样就会解决冲突。

pfile 与 spfile 的互转

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

RAC 环境下,修改遭遇:

ORA-16019: cannot use LOG_ARCHIVE_DEST_1 with LOG_ARCHIVE_DEST or LOG_ARCHIVE_DUPLEX_DEST

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

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

根据 spfile 创建 pfile:

create pfile='init.ora' from spfile

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

随后利用该 pfile 启动:

startup pfile='<pfile path>'

然后生成 spfile:

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

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

redo 日志重建

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

查看 redo 文件位置:

select * from v$logfile;

查看当前 redo 日志状态:

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

删除状态为 INACTIVE 的日志组:

alter database drop logfile group 1;

若状态不为 INACTIVE,则执行:

alter system switch logfile;

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

删掉后进行重建:

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

参考

-EOF-

归档日志的三个路径

之前配置 RAC 开启归档模式时没有指定归档目录,默认放在闪回区,造成超过闪回区大小

作者:Rainy's Blog
不忘初心,记录时光,走向成长。
原文地址:Oracle 杂记(18-03-21), 感谢原作者分享。

发表评论