生产环境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. 归档空间满了,可能导致数据库宕机。(定期巡检或者设置告警可规避它)
综上,开归档利大于弊!
欢迎收藏,转发!