一、 什么是Oracle归档模式:
Oracle数据库有联机重做日志,这个日志是记录对数据库所做的修改,比如插入,删除,更新数据等,对这些操作都会记录在联机重做日志里。一般数据库至少要有2个联机重做日志组。当一个联机重做日志组被写满的时候,就会发生日志切换,这时联机重做日志组2成为当前使用的日志,当联机重做日志组2写满的时候,又会发生日志切换,去写联机重做日志组1,就这样反复进行。
如果数据库处于非归档模式,联机日志在切换时就会丢弃. 而在归档模式下,当发生日志切换的时候,被切换的日志会进行归档。比如,当前在使用联机重做日志1,当1写满的时候,发生日志切换,开始写联机重做日志2,这时联机重做日志1的内容会被拷贝到另外一个指定的目录下。这个目录叫做归档目录,拷贝的文件叫归档重做日志。
数据库使用归档方式运行时才可以进行灾难性恢复。
二、如何启动和关闭归档模式
1) pfile和spfile 参数中有关归档模式的选项(init.ora)
log_archive_start = true ##归档模式是自动还是手工,true为自动,false为手工
log_archive_dest_1 = "location=D:/Oracle/oradata/oradb/archive" ##归档日志文件所保存的路径,可以设定多个路径
log_archive_format = "%%ORACLE_SID%_%T%_TS_%S.ARC" ##归档日志文件的命名方法,
2) 如果是用spfile方式启动的实例,需要动态设定参数,依照下面步骤:
SQL> conn / as sysdba;
SQL> alter system set log_archive_format='arc_%t_%s_%r.dbf' scope=spfile;
System altered.
SQL> alter system set log_archive_dest_1 = "location=/opt/app/oracle/oradata/arclog" scope=spfile;
System altered.
SQL> startup force mount;
SQL> alter database archivelog; ##起用归档模式
SQL> alter database open; ##打开数据库
SQL> archive log list -- 观看日志文件点
SQL> alter system switch logfile;
##强制系统进行日志切换,可马上观察到归档日志的产生语句已处理。
SQL> archive log list
3) 如果是用pfile方式启动的实例,首先要在init.ora 文件中添加上面选项,再依照下面步骤
编辑init.ora文件,增加三个参数
log_archive_start = true
log_archive_dest_1 = "location=/opt/app/oracle/oradata/arclog"
log_archive_format = "arc_%t_%s_%r.dbf"
SQL> conn / as sysdba;
SQL> shutdown immediate;
SQL> startup pfile=’%oracle_home%/init.ora mount;
SQL> alter database archivelog; ##起用归档模式
SQL> alter database open; ##打开数据库
4)停止归档:
SQL> conn / as sysdba;
SQL> shutdown immediate;
SQL> startup mount;
SQL> alter database noarchivelog; --关闭归档模式
SQL> alter database open;