oracle 归档日志

来源:互联网 发布:php java 前景 编辑:程序博客网 时间:2024/06/03 21:36

 归档的日志文件

1)概念
数据库一般有多个重做日志组,对数据库的操作会记录在重做日志中,重做日志组满时会切换,同时根据是否归档模式确定将日志丢弃或拷贝到某一目录下,这个过程叫做归档,相应的日志被称为归档日志。

2)分类

1.非归档模式

a.不适用与生产数据库

b.创建数据库时,缺省的日志管理模式为非归档模式

c.当日志切换,检查点产生后,联机重做日志文件即可被重新使用

d.联机日志被覆盖后,介质恢复仅仅支持到最近的完整备份

e.不支持联机备份表空间,一个表空间损坏将导致整个数据库不可用,需要删除掉损坏的表空间或从备份恢复

f.对于操作系统级别的数据库备份需要将数据库一致性关闭

g.应当备份所有的数据文件、控制文件(单个)、参数文件、密码文件、联机日志文件(可选)

2.归档模式

a.能够对联机日志文件进行归档,生产数据库强烈建议归档

b.在日志切换时,下一个即将被写入日志组必须归档完成之后,日志组才可以使用

c.归档日志的Log sequence number信息会记录到控制文件之中

d.必须有足够的磁盘空间用于存放归档日志

e.Oracle 9i 需要设置参数log_archive_start=true 才能够进行自动归档

编辑参数文件init.ora,设置以下参数 
#
 设置数据库自动归档 
log_archive_start = true
#
 设置归档日志文件的目录,该目录必须事先已建立,并有大量可利用的空间 
log_archive_dest_1="location=%oracle_base%\ oradata\%oracle_sid%\archive"
#
 设置归档日志文件名的格式。%s表示顺序号,%t表示线程号。 
log_archive_format = "%oracle_sid%%T%S.ARC"

 f.支持热备份,且当某个非系统表空间损坏,数据库仍然处于可用状态,且支持在线恢复

  g.使用归档日志能够实现联机或脱机时点恢复(即可以恢复到指定的时间点、指定的归档日志或指定的SCN

3)查询是否处于归档模式

SQL> ARCHIVE LOG LIST --查看数据库是否处于归档模式

           Database log mode No Archive Mode

           Automatic archival Disabled

           Archive destination USE_DB_RECOVERY_FILE_DEST

           Oldest online log sequence 14

           Current log sequence 16
或者
SQL> SELECT log_mode FROM v$database; --查看数据库是否处于归档模式

           LOG_MODE

           ------------

           NOARCHIVELOG     


4)开启归档模式

    ()非归档到归档模式

       a.一致性关闭数据库(shutdown [immediate | transactional |normal])

       b.启动到mount阶段(startup mount)

       c.切换到归档模式(alter database archivelog [manual])

       d.切换到open阶段(alter database open)

       e.对数据做一个完整备份(full backup)

       --演示非归档到归档模式

           SQL> ARCHIVE LOG LIST --查看数据库是否处于归档模式

           Database log mode No Archive Mode

           Automatic archival Disabled

           Archive destination USE_DB_RECOVERY_FILE_DEST

           Oldest online log sequence 14

           Current log sequence 16

           SQL> SHUTDOWN IMMEDIATE; --一致性关闭数据库

           Database closed.

           Database dismounted.

           ORACLE instance shut down.

           SQL> STARTUP MOUNT; --启动到mount状态

           ORACLE instance started.

           Total System Global Area 251658240 bytes

           Fixed Size 1218796 bytes

           Variable Size 75499284 bytes

           Database Buffers 171966464 bytes

           Redo Buffers 2973696 bytes

           Database mounted.

           SQL> ALTER DATABASE ARCHIVELOG; --切换到自动归档模式

           Database altered.

           SQL> ALTER DATABASE OPEN; --切换到open状态

           Database altered.

           SQL> ARCHIVE LOG LIST; --查看数据库的归档状态

               Database log mode Archive Mode--已置为归档模式

               Automatic archival Enabled--对日志进行自动归档

               Archive destination USE_DB_RECOVERY_FILE_DEST

               Oldest online log sequence 14

               Next log sequence to archive 16

               Current log sequence 16
(二)归档模式切换到非归档模式(步骤同非归档到归档模式仅仅是c步骤使用alter database noarchivelog,演示省略)

       a.一致性关闭数据库(shutdown [immediate | transactional |normal])

       b.启动到mount阶段(startup mount)

       c.切换到归档模式(alter database noarchivelog )

       d.切换到open阶段(alter database open)

       e.对数据做一个完整备份(full backup)

      

    (三)手动归档

       手动归档时需要将日志模式切换为alter database archivelog manual

       再使用alter system archive log current | all 实现归档

       注意:

           手动归档模式下不支持stanby数据库

           在alter database archivelog模式下也可以实现对日志的归档   

           SQL> ALTER DATABASE ARCHIVELOG MANUAL; --将日志模式切换为手工归档模式

           Database altered.

           SQL> ALTER DATABASE OPEN; --打开数据库

           Database altered.

           SQL> ALTER SYSTEM ARCHIVE LOG CURRENT; --对当前的日志进行归档(建议在mount阶段完成)

           System altered.

           SQL> ALTER SYSTEM ARCHIVE LOG ALL; --对所有的日志进行归档

           alter system archive log all

           *

           ERROR at line 1:

           ORA-00271: there are no logs that need archiving --没有需要归档的日志


0 0
原创粉丝点击