设置数据库归档模式:
SQL> startup mount
ORACLE instance started.
Total System Global Area 236000356 bytes
Fixed Size 451684 bytes
Variable Size 201326592 bytes
Database Buffers 33554432 bytes
Redo Buffers 667648 bytes
Database mounted.
SQL> archive log list
Database log mode No Archive Mode
Automatic archival Disabled
Archive destination /u01/oracle/dbs/arch
Oldest online log sequence 8
Current log sequence 10
SQL> alter database archivelog;
Database altered.
SQL> alter database open;
Database altered.
SQL> archive log list
Database log mode Archive Mode
Automatic archival Disabled
Archive destination /u01/oracle/dbs/arch
Oldest online log sequence 8
Next log sequence to archive 10
Current log sequence 10
•
自动归档:LOG_ARCHIVE_START=TRUE
•
手动归档:LOG_ARCHIVE_START=FALSE
•
在决定归档模式(自动或手动)之前,必须将数据库设置为ARCHIVELOG 模式。
•
如果未切换到ARCHIVELOG 模式,将导致ARCn 无法复制重做日志文件。
•
启用归档进程之前,应彻底关闭数据库(使用正常、立即或事务处理选项)。
注:如果由于某种原因导致归档进程(ARCn) 失败,一旦事务处理活动填满了所有重做日志,Oracle 服务器就会停止。将数据库设置为ARCHIVELOG 模式将通知Oracle 服务器不要覆盖联机重做日志,除非这些日志已经归档。因此,联机重做日志的归档必须与系统中的事务处理活动(生成重做日志)保持同步。
使用LOG_ARCHIVE_MAX_PROCESSES 参数最多可指定十个ARCn 进程。
将LOG_ARCHIVE_START 设置为TRUE 后,Oracle 例程将按照LOG_ARCHIVE_MAX_PROCESSES 定义的数量启动多个归档进程。可以衍生更多归档进程,只要不超过由LOG_ARCHIVE_MAX_PROCESSES 设置的值,也可随时终止归档进程.
SQL> show parameter archive
…
…
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
log_archive_duplex_dest string
log_archive_format string %t_%s.dbf
log_archive_max_processes integer 2
log_archive_min_succeed_dest integer 1
log_archive_start boolean TRUE
log_archive_trace integer 0
remote_archive_enable string true
standby_archive_dest string ?/dbs/arch
SQL> !ps -ef | grep arch
…
…
oracle 4457 1 0 11:04 ? 00:00:00 ora_arc0_lll
oracle 4459 1 0 11:04 ? 00:00:00 ora_arc1_lll
SQL> alter system set log_archive_max_processes=4 scope=memory;
System altered.
SQL> !ps -ef | grep oracle
…
…
oracle 4457 1 0 11:04 ? 00:00:00 ora_arc0_lll
oracle 4459 1 0 11:04 ? 00:00:00 ora_arc1_lll
oracle 4463 3379 0 11:04 ? 00:00:00 oraclelll (DESCRIPTION=(LOCAL=YES)(ADDRESS=(PROTOCOL=beq)))
oracle 4473 1 0 11:05 ? 00:00:00 ora_arc2_lll
oracle 4475 1 0 11:05 ? 00:00:00 ora_arc3_lll
…
…
SQL>
手动启动archive log mode
SQL> show parameter log_archive_start
NAME TYPE VALUE
------------------------------------ ----------- --------------------
log_archive_start boolean FALSE
SQL> alter system archive log start to '/u01/oradata/lll/aa/';
#
如果不指定目标目录则缺省归档到Archive destination(archive log list命令中所指示的)目录,若该目录不存在则归档到/ORACLE_HOME/dbs下。
System altered.
SQL> !ps -ef | grep oracle
。。。 。。。
oracle 8615 1 0 07:06 ? 00:00:00 ora_arc0_lll
oracle 8617 1 0 07:06 ? 00:00:00 ora_arc1_lll
SQL> archive log list
Database log mode Archive Mode
Automatic archival Enabled
Archive destination /u01/oracle/dbs/arch
Oldest online log sequence 8
Next log sequence to archive 10
Current log sequence 10
SQL> alter system switch logfile;
System altered.
SQL> alter system switch logfile;
System altered.
SQL> alter system switch logfile;
System altered.
$ ll /u01/oradata/lll/aa
total 21656
-rw-r----- 1 oracle oinstall 22109696 May 9 11:11 1_12.dbf
-rw-r----- 1 oracle oinstall 31744 May 9 11:11 1_13.dbf
-rw-r----- 1 oracle oinstall 3072 May 9 11:12 1_14.dbf
ALTER SYSTEM ARCHIVE LOG
手动归档是由server process来执行归档操作.
SQL> alter system archive log stop;
System altered.
SQL> archive log list;
Database log mode Archive Mode
Automatic archival Disabled
Archive destination /u01/oracle/dbs/arch
Oldest online log sequence 13
Next log sequence to archive 15
Current log sequence 15
SQL> alter system archive log current to '/u01/oradata/lll/aa/';
#
不指定目标则用缺省路径
System altered.
SQL> !
[oracle@localhost ~]$ ls /u01/oradata/lll/aa
1_15.dbf
Tips:
如果archive log文件没有足够的存储空间了存储新数据的时候,oracle将无法工作。所以在做数据导入导出之类的工作前最好先确认这个空间是否足够。
注意:在执行alter system archive log current时会发生switch logfile。
SQL> select group#,status from v$log;
GROUP# STATUS
---------- ----------------
1 CURRENT
2 INACTIVE
3 ACTIVE
SQL> alter system archive log current;
System altered.
SQL> select group#,status from v$log;
GROUP# STATUS
---------- ----------------
1 ACTIVE
2 CURRENT
3 INACTIVE
归档目录参数
•
使用LOG_ARCHIVE_DEST_n 最多可指定十个归档目标。在企业版中才有效,在Oracle8i 中,您最多可定义5 个目标。LOG_ARCHIVE_DEST 和LOG_ARCHIVE_DUPLEX_DEST(备份目录)参数是另一种指定目录方法,不推荐使用。
log_archive_dest_1 = "LOCATION=/archive1"
:使用并且只能是本地磁盘。
log_archive_dest_2 = "SERVICE=standby_db1"
:使用远程备用数据库,service的值为tnsnames.ora中定义的服务名。只能为每个远程数据库指定一个归档目标。
必须为至少一个目标指定
LOCATION
参数。
log_archive_dest_1="LOCATION=/archive/ MANDATORY REOPEN"
log_archive_dest_2="SERVICE=standby_db1 MANDATORY REOPEN=600"
log_archive_dest_3="LOCATION=/archive2/ OPTIONAL"
•
MANDATORY
表示必须成功完成归档到该目标的操作才可以覆盖联机重做日志文件。
•
OPTIONAL
表示即使联机重做日志文件尚未成功地归档到该目标,也可以重新使用。这是缺省设置。
•
REOPEN
属性定义发生故障时是否必须重新尝试归档到目标。如果为关键字REOPEN指定了值,如REOPEN=600,则若发生故障,在经过指定时间(以秒计)后,归档程序将尝试写入该目标。缺省值为300 秒。归档到目标的尝试次数没有限制。归档中的所有错误将在主站点的alert文件中报告。
•
如果未指定REOPEN,则可选目标(指定了optional参数)上的错误将被记录并忽略。不再将重做日志发送到这些目标。在归档成功之前,强制目标上的错误将导致无法重新使用联机重做日志。只要归档不成功,归档目标的状态就设置为ERROR。
•
可以使用联机重做日志文件之前需要成功归档的目标数量是根据以下设置决定的:
定义为MANDATORY 的目标的数量
LOG_ARCHIVE_MIN_SUCCEED_DEST
参数的值。该参数用于为需要归档的本地目标数指定一个下限值。如果该值小于强制本地目标的数量,则它对归档行为没有影响。如果该值大于强制本地目标的数量,则本地归档目标的数量必须至少等于该值,才可以重新使用联机重做日志文件。
例:假定LOG_ARCHIVE_MIN_SUCCEED_DEST 设置为2 。如果强制本地目标的数量为3,则必须归档这3 个位置,才可以重新使用联机重做日志文件。相反,如果强制本地归档目标的数量为1,则必须至少归档1 个可选本地归档目标,才可以重新使用联机重做日志文件。也就是说,LOG_ARCHIVE_MIN_SUCCEED_DEST 可以用于归档到一个或多个可选强制目标,但反过来不行。
LOG_ARCHIVE_DEST_STATE_n
参数:
例:
LOG_ARCHIVE_DEST_STATE_2 = DEFER
LOG_ARCHIVE_DEST_STATE_2 = ENABLE
ALTER SYSTEM SET log_archive_dest_state_3 = ENABLE;
ALTER SYSTEM SET log_archive_dest_state_3 = DEFER;
•
归档目标的状态可以动态地进行更改。缺省情况下,归档目标是ENABLE 状态,表明Oracle 服务器可以使用该目标。
•
归档目标的状态可以通过设置相应的LOG_ARCHIVE_DEST_STATE_n 参数来进行修改。例如,要在发生错误时暂时停止归档到强制位置,可以将该目标的状态设置为DEFER。在参数文件中可能定义了一个目标,但它设置为DEFER。当另一目标出现错误或需要维护时,可以启用该目标。
注:如果一个目标的状态设置为DEFER,则不会执行归档到该目标的操作。如果该目标的状态更改为ENABLE,则必须手动将所有缺失的日志归档到该目标。
•
使用LOG_ARCHIVE_FORMAT 可在文件名中包括日志序列号和线程号。
文件名选项
•
%s
或%S:包括日志序列号,作为文件名的一部分。
•
%t
或%T:包括线程号,作为文件名的一部分。
•
使用%S 可通过在值的左侧用0 来填补空位使该值长度保持固定。
相关视图
V$ARCHIVED_LOG
V$LOG_HISTORY
V$DATABASE
V$ARCHIVE_PROCESSES
V$ARCHIVE_DEST
转载于:https://blog.51cto.com/luotaoyang/317163