生产环境Oracle RAC下如何开归档?

1 检查是否开启了归档

如果数据库服务器上有多个实例,通过ps -ef|grep pmon查看后,要指定SID,假设实例名为instance1

su – oracle
export ORACLE_SID=instance1
sqlplus /as sysdba
SQL> archive log list;
发现归档模式为NOARCHIVELOG,即归档没开

2 设置恢复目录/归档目录(仅节点1)

- 正确设置
  归档文件可以放在本地,也可以放在asm共享磁盘中,RAC环境要放ASM中。
  
- 如果是ASM
  SQL>alter system set log_archive_dest_1='location=+DATA';
  
- 如果是文件系统
  SQL>alter system set log_archive_dest_1='location=/archivelog';
  
- 错误设置
  SQL>alter system set db_recovery_file_dest_size=500g;
  SQL>alter system set db_recovery_file_dest='+DATA';
  
  原因分析:如果归档盘是500g,快满的时候就需要手动增加容量;
  如果归档空间满了,数据库就会报归档错误,应用无法连接。

- 设置数据库为非集群模式(仅节点1)
  SQL>show parameter cluster
  SQL>alter system set cluster_database=false scope=spfile;
  
- 节点1和2关闭数据库
  关闭数据库,启动后mount(仅节点1)
  SQL>shutdown immediate
  
- 仅在节点1操作
  SQL>startup mount
  SQL>alter database archivelog;
  SQL>alter database open;
  
- 查看归档状态
  SQL>archive log list;
  
设置数据库为集群模式(仅节点1)
SQL>alter system set cluster_database=true scope=spfile;
此前是在节点1操作,节点2并没有开启归档,选择打开集群模式后,重新数据库,节点二也就打开了归档.

重启数据库,并打开(仅节点1)
节点1:
SQL>shutdown immediate;
SQL>startup
先等节点一启动完成后,再启动节点二

节点2:
SQL>startup

检查节点2的归档模式:
SQL>archive log list;

3 测试是否生成归档日志(仅节点1)

归档文件作用:日志挖掘/备份恢复数据库时使用
SQL>alter system switch logfile;
SQL>/
SQL>/
SQL>/
SQL>exit

su - grid
asmcmd
查看归档文档 
ls -l DATA/DBNAME/ONLINELOG

4 为什么要开归档?

归档日志是Oracle对数据事务处理的全记录,即Oracle对数据操作的所有操作顺序与操作内容。

Oracle归档文件是数据库中REDO日志的备份文件(满足一定条件会触发归档),它提供了一种可以重用的数据恢复的结构。

【优点】

有了归档日志,就能知道Oracle具体在什么时间做了什么。

在归档未丢失时,Oracle可以根据归档日志,将数据库还原到任意时间点。试想备份一般是全备和增量备份,如果在两次备份的中间时间点,数据被误删,没有归档就无法恢复。

RMAN实时备份数据需要开归档;配置DataGuard必须开归档,数据库基本能保证零丢失。

日志挖掘和分析:通过对在线日志的归档,可以在数据丢失时进行数据恢复、部分操作也只有在归档模式下才能实施、分析日志内容等。

【缺点】

\1. 占用大量磁盘空间;(可以配置归档删除策略,定期删除)

\2. 占用部分系统资源(归档进程对资源消耗有限)

\3. 归档空间满了,可能导致数据库宕机。(定期巡检或者设置告警可规避它)

综上,开归档利大于弊!

欢迎收藏,转发!

posted @ 2023-07-27 10:19  寻梦99  阅读(783)  评论(0编辑  收藏  举报