分类: Oracle
2013-08-19 15:26:19
一、非归档转为归档模式方法:
热备份:
先要把服务置为归档方式,查看当前是否采用了归档方式用:
SQL>archive log list;
SQL>
在数据库中系统文件夹下有日志文件:REDO01.LOG 等.
使用非归档方式时,三个REDO文件写满后会自动地去从第一个又开始写.
把第一个REDO里的内容都覆盖掉,不做备份.这就是非归档模式
在热备份的方式下,一定要设为归档方式,所谓归档方式就是在第一个被覆盖之前,把原来里面的所有的内容都备份到一个指定的路径下.以便于以后我们要恢复时,使用备份的归档日志进行恢复.所以日志文件分为两类,一类是实例名目录下的联机的REDO01.LOG等三个文件,再有就是我们选择归档后,形成的归档日志文件.
归档日志一定要处理归档方式,就是Archive Mode,而不是No Archive Mode
归档的路径默认在我们的数据库系统的USE_DR_RECOVERY_FILE_DEST路径下.
所以我们要进行热备份时,要选择归档,如下设置:
把归档方式改为启用,自动的.
SQL>ALTER system SET log_archive_start=true scope=spfile
SQL>shutdown immediate
SQL>startup mount 打开控制文件,不打开数据文件
SQL>alter database archivelog 将数据库切换到归档方式
SQL>ALTER database open;
SQL>archive log list;
二、归档日志爆满清理步骤
两种方法:
1、配置RMAN自动管理ARCHIVELOG。也可在RMAN中将数据备份到磁带上,然后将过期的ARCHIVELOG删除;
2、可以手工来处理,步骤如下
1)将/oracle下的相关ARCHIVELOG日志文件移到别的文件系统下(保留一段时间的ARCHIVELOG日志即可,其他的可移走,用系统命令 mv移走)。然后打包、压缩,备份到介质上,此时可将这些移出的文件删除。注意:别在原来的/oracle打包了,否则空间占满了就有些麻烦了。
2)以oracle用户登录,执行rman target /。如有多个实例此时执行rman target 用户名/密码@实例名,进入rman
3)在rman中执行
RMAN>list archivelog all; /*列出所有的归档日志文件
RMAN>crosscheck archivelog all; /*与物理归档日志文件保持同步,之前移走了一部分文件,因此执行此命令后会在/oracle目录下找不到的归档日志标记为expired
RMAN>list expired archivelog all; /*列出所有expired(过期)的归档日志文件,此时你就可看到移走的归档日志文件均被标记为expired
RMAN>delete expired archivelog all; /*在oracle中删除所有过期的expired文件
RMAN>list archivelog all; /*再列出所有的归档日志文件,就可发现移走的日志文件被删掉了
RMAN>exit /*退出