Oracle数据库可以运行在2种模式下:归档模式(archivelog)和非归档模式(noarchivelog)
归档模式可以提高Oracle数据库的可恢复性,生产数据库都应该运行在此模式下,归档模式应该和相应的备份策略相结合,只有归档模式没有相应的备份策略只会带来麻烦。
本文简单介绍如何启用和关闭数据库的归档模式。
0.查看数据库处于归档或非归档模式
SQL>archive log list;
1.shutdown normal或shutdown immediate关闭数据库
SQL>shutdown immediate;
2.启动数据库到mount状态
SQL>startup mount;
3.启用或停止归档模式
如果要启用归档模式,此处使用:
SQL>alter database archivelog;
如果需要停止归档模式,此处使用:
SQL>alter database noarchivelog;
4.修改相应的初始化参数
Oracle10g之前,你还需要修改初始化参数使数据库处于自动归档模式。
在pfile/spfile中设置如下参数:log_archive_start = true。重启数据库此参数生效,此时数据库处于自动归档模式。
SQL>alter system set log_archive_start=true scope=spfile;
SQL>shutdown immediate;
SQL>startup;
也可以在数据库启动过程中,手工执行:
SQL>archive log start
使数据库启用自动归档,但是重启后数据库仍然处于手工归档模式。
另外,可以指定归档日志的存放路径:
SQL>alter system set log_archive_dest_1='location=e:\oradata\archivelog'; //
立即生效
归档日志文件的命名方法:
SQL>alter system set log_archive_format=%%ORACLE_SID%%%t_%s.arc
以上alter system set操作会在数据库的spfile@sid.ora和init@sid.ora 文件中新增以下参数
*.log_archive_dest_1='LOCATION=/oracle/oradata/szdb/archive'
*.log_archive_format=%%ORACLE_SID%%%t_%s.arc
*.log_archive_start=TRUE
注意:1) *.log_archive_dest_1定义的文件夹必须是实际存在的,并且oracle用户是有写权限的
2) @sid代表数据库的实际sid
强制系统进行日志切换:
SQL>alter system switch logfile;
//可马上观察到归档日志的产生语句已处理。
归档一个已满,但没有归档的联机重做日志
SQL> archive log next
归档所有已满,但没有归档的联机重做日志
SQL> archive log all
注意:一个事务即使不被提交,也会被写入到重做日志中
5.从Oracle10g开始,log_archive_start参数已经废除,只要启动数据库的归档模式,Oracle就会启用自动归档。
删除归档日志文件的方法:
1. 手动删除老的日志文件。
2. 使用Rman的crosscheck彻底从数据库删除
rman target rman/rman@rman
crosscheck archivelog all;
delete expired archivelog all;
删除最好成绩不要全部删除,
将早最早的ARCHIVELOG日志删除,
然后:
rman
rman>connect target/
rman>connect catalog rman/rman@rman
rman>crosscheck archivelog all;
rman>quit
然后执行归档备份就可以了.
归档模式可以提高Oracle数据库的可恢复性,生产数据库都应该运行在此模式下,归档模式应该和相应的备份策略相结合,只有归档模式没有相应的备份策略只会带来麻烦。
本文简单介绍如何启用和关闭数据库的归档模式。
0.查看数据库处于归档或非归档模式
1.shutdown normal或shutdown immediate关闭数据库
2.启动数据库到mount状态
3.启用或停止归档模式
如果要启用归档模式,此处使用:
如果需要停止归档模式,此处使用:
4.修改相应的初始化参数
Oracle10g之前,你还需要修改初始化参数使数据库处于自动归档模式。
在pfile/spfile中设置如下参数:log_archive_start = true。重启数据库此参数生效,此时数据库处于自动归档模式。
SQL>shutdown immediate;
SQL>startup;
也可以在数据库启动过程中,手工执行:
使数据库启用自动归档,但是重启后数据库仍然处于手工归档模式。
另外,可以指定归档日志的存放路径:
归档日志文件的命名方法:
以上alter system set操作会在数据库的spfile@sid.ora和init@sid.ora
*.log_archive_dest_1='LOCATION=/oracle/oradata/szdb/archive'
*.log_archive_format=%%ORACLE_SID%%%t_%s.arc
*.log_archive_start=TRUE
注意:1) *.log_archive_dest_1定义的文件夹必须是实际存在的,并且oracle用户是有写权限的
2) @sid代表数据库的实际sid
强制系统进行日志切换:
归档一个已满,但没有归档的联机重做日志
归档所有已满,但没有归档的联机重做日志
注意:一个事务即使不被提交,也会被写入到重做日志中
5.从Oracle10g开始,log_archive_start参数已经废除,只要启动数据库的归档模式,Oracle就会启用自动归档。
删除归档日志文件的方法:
1. 手动删除老的日志文件。
2. 使用Rman的crosscheck彻底从数据库删除
rman target rman/rman@rman
crosscheck archivelog all;
delete expired archivelog all;
删除最好成绩不要全部删除,
将早最早的ARCHIVELOG日志删除,
然后:
rman
rman>connect target/
rman>connect catalog rman/rman@rman
rman>crosscheck archivelog all;
rman>quit
然后执行归档备份就可以了.