|
Lesson 3
[php]
3 Oracle Backup and Recovery Configuration
* After completing this lesson, you should be able to do the following:
Identify recovery implications of operating in NOARCHIVE mode
Describe the differences between ARCHIVELOG and NOARCHIVELOG modes
Configure a database for ARCHIVELOG mode and automatic archiving
Use init.ora parameters to configure multiple destinations for archived log files and multiple archive processes
Perform manual archive of logs
* Redo Log
Redo Log History
NOARCHIVELOG mode下,没有历史日志保存,循环写的方式将覆盖较早的日志
ARCHIVELOG mode下保存归档日志,可用于介质恢复media recovery
确省安装为NOARCHIVELOG mode,可以修改
NOARCHIVELOG mode
采用循环写方式
checkpoint产生后,redo log file可以即刻被重复使用
一旦redo log被覆盖,介质恢复只能完成到上次的完整备份
当表空间故障引起无法使用时,数据库将无法操作直至该表空间被删除或者整个数据库使用备份进行了恢复
当系统关闭后只需要进行OS命令备份数据
每次备份必须包括:数据文件/redo log文件/control文件等所有数据库文件
-- 备份redo log用于copy database并且用RESETLOGS打开新数据库
恢复时将丢失上次完整备份以后的操作
无法执行ONLINE备份(热备份)
恢复时必须恢复数据文件/redo log文件/control文件
可以使用exp文件恢复,但将导致不完整恢复而丢失部分数据和事务操作
ARCHIVELOG mode
一个填满的redo log file无法使用直至发生checkpoint使其被ARCn执行了归档,control文件的redo log history中将记录这个log sequence
归档日志将用于介质恢复,实例可恢复到任意时间的最近的数据库更改
数据库要求必须处于ARCHIVELOG模式,可用命令更改
归档日志要求有足够的OS资源
ARCHIVELOG模式可以保证在需要介质恢复时不丢失数据
可以执行ONLINE备份(热备份)
除SYSTEM表空间之外的表空间发生故障时,可以ONLINE恢复
多个onlne日志组保证online redo log在重用前执行了归档
可以恢复一个损坏的文件,在数据库在线或者离线时,可以恢复up-to-date
可以进行point-in-time恢复
可以恢复到指定的归档日志文件
可以恢复到指定的SCN -- 但不能恢复到指定的checkpoint
参数LOG_ARCHIVE_DEST = filename定义归档日志位置,注意不能指向raw device. -- 缺省=$ORACLE_HOME/dbs
参数LOG_ARCHIVE_DUPLEX_DEST = filename or device name定义归档文件的备份地址,可用ALTER SYSTEM设定,注意不能指向raw device.
注意上述两个参数不能指定远程归档,建议使用下面的参数设定
参数LOG_ARCHIVE_DEST_n(1-5)定义最多5个不同的归档日志位置
格式: LOG_ARCHIVE_DEST_n = "Keyword='directory' Options Attribute"
需要Oracle8i版本以上 ????
Keyword:
LOCAL='directory' 必须是本地有效路径,不能是NFS路径(网络映射)
SERVICE='dircetory' 经过NET8可以访问的远程数据库(同TNSNAMES.ORA中的别名相同)
每个远程数据库只能指定一个归档路径
只对STANDBY数据库有效,不能用于其他地方 -- 依据???
Options
MANDATORY 表示online redo log在被覆盖之前必须成功地归档到指定路径
若只设置了一个DEST,此时V$ARCHIVE_DEST中查到为OPTIONAL -- why?????
使用LOG_ARCHIVE_DEST_n时,必须至少一个是MANDATORY的
OPTIONAL 表示即使没有成功地归档到指定路径,online redo log也可以重用
LOG_ARCHIVE_DEST缺省为MANDATORY方式,而LOG_ARCHIVE_DUPLEX_DEST为OPTIONAL方式
Attribute
REOPEN 指定了归档到指定路径失败后重试的时间(秒),缺省=300秒,失败信息记录在警告日志文件中
若不指定,对OPTIONAL路径的错误将被记录并忽略,以后的redo log文件将不再归档到该目录
对MANDATORY路径的错误将在成功归档前防止online redo log的重用(停止等待直至成功)
控制enable: LOG_ARCHIVE_DEST_STATE_n = ENABLE 从defer转换成enable时,需要将原有未归档到此路径的归档日志手工拷贝
DEFER 缺省是ENABLE
命令: ALTER SYSTEM SET LOG_ARCHIVE_DEST_n = '...' -- 注意不能用null,但可以用''替代 ????结果????
参数LOG_ARCHIVE_FORMAT = extension定义归档日志文件名格式 -- 缺省格式是????
%s or %S 将日志的Sequence Number作为文件名一部分,%S表示定长,左补零 -- 定长的宽度???
%t or %T 将线程号作为文件名一部分
参数LOG_ARCHIVE_MIN_SUCCEED_DEST定义online redo log允许重用前必须成功归档的本地路径(keyword=LOCAL)最小个数
ONLINE REDO LOG在被覆盖之前必须成功地归档到的LOCAL路径个数>=GREATEST(MANDATORY,LOG_ARCHIVE_MIN_SUCCEED_DEST)
当LOG_ARCHIVE_MIN_SUCCEED_DEST>MANDATORY意味着LOG_ARCHIVE_MIN_SUCCEED_DEST-MANDATORY个OPETIONAL的路径也必须成功归档
更改归档模式
在MOUNT状态下, SQL> ALTER DATABASE [ ARCHIVELOG | NOARCHIVELOG ] -- 重点
-- 注意:需要用户有ALTER SYSTEM权限
-- 因为要将模式记录在control file中,所以必须在mount EXCLUSIVE状态下执行
OEM --> Backup Manager—>Logfile—>Enable/disable automatic archiving or logfile
NOARCHIVELOG --> ARCHIVELOG 备份所有数据文件和控制文件 -- 如果没有备份将会使得恢复时后面的归档日志无法使用
Multiple Archive Processes
LOG_ARCHIVE_START TRUE 设定系统自动执行归档,仅对ARCHIVELOG模式有效,注意要求数据库正常关闭后才可ENABLE
启动时ARCn进程启动的数量依赖于LOG_ARCHIVE_MAX_PROCESSES
-- True情况下,在命令行更改为false是否有效????
FALSE 缺省值,设定归档需要DBA手工执行(如:使用SQL*Plus, SQL Worksheet, or Backup Manager)
失败情况下系统将挂起
如果该参数在启动时设置=FALSE,在OPEN状态下可使用命令启动(且每次重启实例时都需要手工干预):
SQL> ALTER SYSTEM ARCHIVE LOG START TO '/u04/Oracle/TEST/log';
-- 注意不是ALTER DATABASE
-- 它会覆盖LOG_ARCHIVE_DEST么????
Disabling Archive Processing
SQL> ALTER SYSTEM ARCHIVE LOG STOP; -- 在NOARCHIVELOG状态下无效???
LOG_ARCHIVE_MAX_PROCESSES 设定当自动归档时(LOG_ARCHIVE_START=TRUE),ARCn的最大进程数,MIN=1,MAX=10
DBA可在INSTANCE life期间增加或者删除ARCn进程(但必须保持至少一个,否则系统在日志填满时挂起)
SQL> ALTER SYSTEM SET LOG_ARCHIVE_MAX_PROCESSES=n; -- 动态修改ARCn的进程个数
Archiving Log Files Selectively
SQL> ALTER SYSTEM ARCHIVE LOG [options] -- 若OPTION指定的log已经归档,将发生什么????
THREAD 归档指定线程中的redo log file group(for Oracle Parallel Server)
SEQUENCE n 归档指定online redo log file group中的log sequence number
CHANGE n 归档指定SCN
GROUP 归档指定的online redo log file group
CURRENT 归档指定线程中的当前redo log file group -- 先做LOG SWITCH???
LOGFILE 归档指定日志文件的redo log file group member
NEXT 归档未被归档的最老的online redo log file group
ALL 归档所有未归档的online redo log file groups
START 设置自动归档有效
TO 指定redo log file group归档的位置
STOP 设置手工归档
* Obtaining Archive Log Information
相关动态视图
V$ARCHIVED_LOG 从控制文件中获取归档日志文件信息 -- V$LOG_HISTORY包含此视图中的部分信息(ARCHIVELOG mode)
RECID NUMBER Archived Log编号,从1顺序增长
STAMP NUMBER
NAME VARCHAR2(513) 归档日志名称
THREAD# NUMBER 线程号
SEQUENCE# NUMBER log sequence number
RESETLOGS_CHANGE# NUMBER RestLog时的SCN号
RESETLOGS_TIME DATE 上次resetlog时间
FIRST_CHANGE# NUMBER 该Archive log中的第一个SCN号 -- 找到每个Archive Log包含的SCN
FIRST_TIME DATE 该Archive log中的第一个SCN时间戳
NEXT_CHANGE# NUMBER 下一个Archive log中的第一个SCN号
NEXT_TIME DATE 下一个Archive log中的第一个SCN时间戳
BLOCKS NUMBER Archive log的OS block number
BLOCK_SIZE NUMBER Archive log的OS block size
ARCHIVED VARCHAR2(3)
DELETED VARCHAR2(3)
COMPLETION_TIME DATE 完成归档时间
V$ARCHIVE_DEST 描述当前实例的归档目标的路径/状态/模式/错误信息等
DEST_ID NUMBER
STATUS VARCHAR2(9) VALID/DEFERRED/ERROR/INACTIVE -- 只要归档发生错误,STATUS=ERROR
VALID 目的地ENABLE,并且noerror
DEFERRRED 目的地被禁止
ERROR 目的地有错
INACTIVE 目的地未定义 ???
BINDING VARCHAR2(9) MANDATORY/OPTIONAL
NAME_SPACE VARCHAR2(7)
TARGET VARCHAR2(7) PRIMARY/STANDBY
REOPEN_SECS NUMBER 重试的秒数
DESTINATION VARCHAR2(256) 归档位置
FAIL_DATE DATE
FAIL_SEQUENCE NUMBER 错误的序列号
FAIL_BLOCK NUMBER
ERROR VARCHAR2(256) 对STATUS='ERROR'的描述
V$DATABASE 当前ARCHIVE状态
DBID NUMBER
NAME VARCHAR2(9)
CREATED DATE
RESETLOGS_CHANGE# NUMBER
RESETLOGS_TIME DATE
PRIOR_RESETLOGS_CHANGE# NUMBER
PRIOR_RESETLOGS_TIME DATE
LOG_MODE VARCHAR2(12) ARCHIVELOG/NOARCHIVELOG
CHECKPOINT_CHANGE# NUMBER
ARCHIVE_CHANGE# NUMBER
CONTROLFILE_TYPE VARCHAR2(7)
CONTROLFILE_CREATED DATE
CONTROLFILE_SEQUENCE# NUMBER
CONTROLFILE_CHANGE# NUMBER
CONTROLFILE_TIME DATE
OPEN_RESETLOGS VARCHAR2(11)
VERSION_TIME DATE
OPEN_MODE VARCHAR2(10) READ WRITE/READ ONLY
V$ARCHIVE_PROCESSES 当前例程的各个ARCn进程的状态,始终10条记录: ARC0-ARC9
PROCESS NUMBER ARCn进程编号
STATUS VARCHAR2(10) ACTIVE/STOPPED 活动的/无该进程
LOG_SEQUENCE NUMBER 当前正在归档的日志编号
STATE VARCHAR2(4) BUSY/IDLE 正在ARCHIVE/空闲
ARCHIVE LOG LIST
数据库日志模式 Database log mode Archive mode
自动归档 Automatic archival Enabled
归档目标 Archive destination /oracle/backup/archive/ -- 仅显示其中的一个
最早的联机日志序列 Oldest online log sequence 1304
下一个要归档的日志序列 Next log sequence to archive 1305 -- 仅在ARCHIVELOG模式下显示
当前日志序列 Current log sequence 1305 -- 当前log file的日志序列号
--- 1/2 ---
[/php] |
|