Oracle Backup(三):数据库归档设置

oracle结束一个联机重做日志的写入并开始写入另一个联机重做日志时,会发生日志切换。如果数据库处于ARCHIVELOG模式下,日志切换的结果是生成联机重做日志的副本,这个副本叫做归档日志,数据库在介质恢复的期间,会采用归档日志来执行恢复。

第一章 归档模式切换

1.1. 查看日志是否归档

#方法一:
SQL> archive log list;
Database log mode          Archive Mode
Automatic archival         Enabled
Archive destination        /backup/redo/archive/
Oldest online log sequence     9
Next log sequence to archive   11
Current log sequence           11
#方法二:
SQL> select LOG_MODE from v$database;

LOG_MODE
------------
ARCHIVELOG

说明数据库处于归档模式。

1.2. 归档模式切换

#将归档模式切换了非归档模式
SQL> shutdown immediate;
Database closed.
Database dismounted.
ORACLE instance shut down.
SQL> startup mount;
ORACLE instance started.

Total System Global Area  784998400 bytes
Fixed Size          2257352 bytes
Variable Size         515903032 bytes
Database Buffers      264241152 bytes
Redo Buffers            2596864 bytes
Database mounted.
SQL> alter database noarchivelog;

Database altered.

SQL> alter database open;

Database altered.

SQL> archive log list;
Database log mode          No Archive Mode
Automatic archival         Disabled
Archive destination        /backup/redo/archive/
Oldest online log sequence     9
Current log sequence           11

#将非归档模式转换为归档模式
SQL> shutdown immediate;
Database closed.
Database dismounted.
ORACLE instance shut down.
SQL> startup mount;
ORACLE instance started.

Total System Global Area  784998400 bytes
Fixed Size          2257352 bytes
Variable Size         515903032 bytes
Database Buffers      264241152 bytes
Redo Buffers            2596864 bytes
Database mounted.

SQL> alter database archivelog;

Database altered.

SQL> alter database open;

Database altered.

SQL> archive log list;
Database log mode          Archive Mode
Automatic archival         Enabled
Archive destination        /backup/redo/archive/
Oldest online log sequence     9
Next log sequence to archive   11
Current log sequence           11

第二章 归档设置

2.1. 默认归档路径

如果没有配置归档日志存放的位置,那么归档日志默认会存放到闪回区域。日志文件默认存放在flash_recovery_area里保存,通过recover参数,查看路径和空间大小。

SQL> show parameter recover;

NAME                     TYPE    VALUE
------------------------------------ ----------- ------------------------------
db_recovery_file_dest            string  /u01/app/fast_recovery_area
db_recovery_file_dest_size       big integer 4182M
db_unrecoverable_scn_tracking        boolean     TRUE
recovery_parallelism             integer     0
#还有个参数,也可以查看
SQL> show parameter db_recover;

NAME                     TYPE    VALUE
------------------------------------ ----------- ------------------------------
db_recovery_file_dest            string  /u01/app/fast_recovery_area
db_recovery_file_dest_size       big integer 4182M
#个人理解recover和db_recover参数的区别是,前者是针对实例的,后者是针对数据库的,所以后者没有recovery_parallelism这个和实例有关的参数,个人理解,仅供参考;

如果你将日志模式设置成归档,当时没有修改路径和db_recovery_file_dest_size参数,数据库运行一段时间就会报ORA-00257: archiver error. Connect internal only, until freed.错误,此时查看V$FLASH_RECOVERY_AREA_USAGE视图:

SQL> set linesize 100
SQL> col file_type for a20;
SQL> select * from v$flash_recovery_area_usage;

FILE_TYPE        PERCENT_SPACE_USED PERCENT_SPACE_RECLAIMABLE NUMBER_OF_FILES
-------------------- ------------------ ------------------------- ---------------
CONTROL FILE                  0             0       0
REDO LOG                  0             0       0
ARCHIVED LOG              0             0       0
BACKUP PIECE                  0             0       0
IMAGE COPY                0             0       0
FLASHBACK LOG                 0             0       0
FOREIGN ARCHIVED LOG          0             0       0

7 rows selected.

归档文件将闪回目录占满,此时数据库就hang住了,解决办法就是修改db_recovery_file_dest_size的大小或者是清除一些不用的归档日志。

注:在oracle11.2.0版本以上已经将V$FLASH_RECOVERY_AREA_USAGE废弃掉了,取而代之的是V$RECOVERY_AREA_USAGE这个视图;

这里写图片描述

2.2. 修改归档位置

当执行show parameter LOG_ARCHIVE_DEST命令时,我们可以看到很多参数。

SQL> show parameter log_archive_dest;

NAME                     TYPE    VALUE
------------------------------------ ----------- ------------------------------
log_archive_dest             string
log_archive_dest_1           string  LOCATION=/backup/redo/archive/
log_archive_dest_10          string
log_archive_dest_11          string
log_archive_dest_12          string
log_archive_dest_13          string
log_archive_dest_14          string
log_archive_dest_15          string
log_archive_dest_16          string
log_archive_dest_17          string
log_archive_dest_18          string

NAME                     TYPE    VALUE
------------------------------------ ----------- ------------------------------
log_archive_dest_19          string
log_archive_dest_2           string
log_archive_dest_20          string
log_archive_dest_21          string
log_archive_dest_22          string
log_archive_dest_23          string
log_archive_dest_24          string
log_archive_dest_25          string
log_archive_dest_26          string
log_archive_dest_27          string
log_archive_dest_28          string

NAME                     TYPE    VALUE
------------------------------------ ----------- ------------------------------
log_archive_dest_29          string
log_archive_dest_3           string
log_archive_dest_30          string
log_archive_dest_31          string
log_archive_dest_4           string
log_archive_dest_5           string
log_archive_dest_6           string
log_archive_dest_7           string
log_archive_dest_8           string
log_archive_dest_9           string
log_archive_dest_state_1         string  enable

NAME                     TYPE    VALUE
------------------------------------ ----------- ------------------------------
log_archive_dest_state_10        string  enable
log_archive_dest_state_11        string  enable
log_archive_dest_state_12        string  enable
log_archive_dest_state_13        string  enable
log_archive_dest_state_14        string  enable
log_archive_dest_state_15        string  enable
log_archive_dest_state_16        string  enable
log_archive_dest_state_17        string  enable
log_archive_dest_state_18        string  enable
log_archive_dest_state_19        string  enable
log_archive_dest_state_2         string  enable

NAME                     TYPE    VALUE
------------------------------------ ----------- ------------------------------
log_archive_dest_state_20        string  enable
log_archive_dest_state_21        string  enable
log_archive_dest_state_22        string  enable
log_archive_dest_state_23        string  enable
log_archive_dest_state_24        string  enable
log_archive_dest_state_25        string  enable
log_archive_dest_state_26        string  enable
log_archive_dest_state_27        string  enable
log_archive_dest_state_28        string  enable
log_archive_dest_state_29        string  enable
log_archive_dest_state_3         string  enable

NAME                     TYPE    VALUE
------------------------------------ ----------- ------------------------------
log_archive_dest_state_30        string  enable
log_archive_dest_state_31        string  enable
log_archive_dest_state_4         string  enable
log_archive_dest_state_5         string  enable
log_archive_dest_state_6         string  enable
log_archive_dest_state_7         string  enable
log_archive_dest_state_8         string  enable
log_archive_dest_state_9         string  enable

我们可以看到三类参数,log_archive_dest、log_archive_dest_n、log_archive_dest_state;
log_archive_dest和log_archive_dest_n的区别:
使用log_archive_dest参数最多可设置2个归档路径,通过log_archive_dest设置一个主归档路径,通过LOG_ARCHIVE_DUPLEX_DEST 参数设置一个从归档路径。所有的路径必须是本地的,该参数的设置格式如下:
LOG_ARCHIVE_DEST = ‘/disk1/archive’
LOG_ARCHIVE_DUPLEX_DEST = ‘/disk2/archive’
LOG_ARCHIVE_DEST_n 参数可以设置最多10个不同的归档路径,通过设置关键词location或service,该参数指向的路径可以是本地或远程的。

LOG_ARCHIVE_DEST_1 = ‘LOCATION = /disk1/archive’
LOG_ARCHIVE_DEST_2 = ‘LOCATION = /disk2/archive’
LOG_ARCHIVE_DEST_3 = ‘LOCATION = /disk3/archive’
如果要归档到远程的standby数据库,可以设置service:LOG_ARCHIVE_DEST_4 = ‘SERVICE = standby1’;可见,这两个参数都可以设置归档路径,不同的是后者可以设置远程归档到standby端,而前者只能归档到本地,且最多同时归档到2个路径下。另外log_archive_dest_state_n指定对应的log_archive_dest_n的状态。
如果我的归档位置没有更改过,此时修改log_archive_dest或者log_archive_dest_n会出现什么问题呢。

SQL> alter system set log_archive_dest='location=d:/dest_1';
alter system set log_archive_dest='location=d:/dest_1'
*
第 1 行出现错误:
ORA-02097: 无法修改参数, 因为指定的值无效
ORA-16018: 无法将 LOG_ARCHIVE_DEST 与 LOG_ARCHIVE_DEST_n 或
DB_RECOVERY_FILE_DEST 一起使用
SQL> alter system set log_archive_dest_1='location=d:/dest_1';
系统已更改。

也就是在设置了 db_recovery_file_dest后可以设置log_archive_dest_n不能设置log_archive_dest,反过来设置了 log_archive_dest就不能db_recovery_file_dest和log_archive_dest_n;
log_archive_dest_n最多可以设置10组,还有如下参数
{ null_string |
{ LOCATION=path_name | SERVICE=service_name }
[ MANDATORY ]
[ REOPEN[=seconds] ]
[ DELAY[=minutes] ]
[ NOREGISTER ]
[ TEMPLATE=template ]
[ ALTERNATE=destination ]
[ MAX_FAILURE=count ]
[ SYNC | ASYNC ]
[ AFFIRM | NOAFFIRM ]
[ NET_TIMEOUT=seconds ]
[ VALID_FOR=(redo_log_type,database_role) ]
[ DB_UNIQUE_NAME ]
[ MAX_CONNECTIONS=count ]
[ COMPRESSION={ENABLE|DISABLE} ]
}

AFFIRM和NOAFFIRM设置是否确认将归档信息写入到磁盘中;
ALTERNATE和NOALTERNATE设置是否在归档目录无法写入时,将归档写入到另外的地方;
ARCH和LGWR设置是ARCn进程写归档还是LGWR进程写归档;
DELAY和NODELAY设置STANDBY数据库是否延迟应用归档日志;
DEPENDENCY和NODEPENDENCY参数在归档文件可以直接被其他STANDBY数据库访问时,其他的STANDBY在归档文件可用时是否还需要传输归档;
LOCATION和SERVICE设置本地归档或归档到STANDBY数据库;
MANDATORY和OPTIONAL设置归档路径是强制的还是可选的;
MAX_FAILURE和NOMAX_FAILURE参数设置归档失败后,连接重试的最大次数;
NET_TIMEOUT和NONET_TIMEOUT设置LGWR进程写归档信息时等待的秒数;
QUOTA_SIZE和NOQUOTA_SIZE设置归档目录可以使用的空间大小;
QUOTA_USED和NOQUOTA_USED显示归档目录以及使用的空间大小;
REGISTER和NOREGISTER设置是否在目标站点记录归档日志的位置;
REOPEN和NOREOPEN设置在归档失败后是否进行重试;
SYNC和ASYNC设置LGWR进程写IO操作是否同步进行;
LOG_ARCHIVE_DEST_STATE_n:
这个参数是设置每组的状态
Values:

enable

Specifies that a valid log archive destination can be used for a subsequent archiving operation (automatic or manual). This is the default.

defer

Specifies that valid destination information and attributes are preserved, but the destination is excluded from archiving operations until re-enabled.

alternate

Specifies that a log archive destination is not enabled but will become enabled if communications to another destination fail.

归档文件的命名规则,请参考我的另外一篇blog:
http://blog.csdn.net/dbdoctor/article/details/50942331

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值