1、备份恢复结构:
当执行备份恢复操作时,经常需要提供数据文件的动态信息,为了获得数据文件的动态信息,可以产销动态性能视图:v$datafile和v$datafile_header。
其中 v$datafile 的动态信息来自于控制文件;
而v$datafile_header 的动态信息来自于数据文件的头部。在数据库正常运行的情况下,这两个动态性能视图的检查点scn的值是一致的,但是如果数据文件出新损坏,并且转储了数据文件备份,那么v$datafile_header可以确定应用重做的起始scn值,而v$datafile 可以确定应用重做的结束scn值。
看下面的示例:
select a.name , a.checkpoint_change# "起始scn值",b.checkpoint_change# "结束scn值"
from v$datafile_header a , v$datafile b where a.file#=b.file# ;
单实例环境中,只有一个特定重做线程,在rac环境中,包含多个重做线程,每个重做线程至少包含两个日志组,通过查询动态性能视图 v$log可以显示重做线程的所有日志组信息。包括:日志组编号,日志成员个数,日志组状态,尺寸,日志序列
select group#,members,sequence#,status,bytes,first_change# from v$log where thread#=1;
查看当前数据库的信息:
select dbid,name,log_mode,current_scn from v$database;
dbid:用于描述数据库的唯一数值。
name:描述当前数据库的名字。
log_mode:用于描述日志的操作模式。
current_scn:标识数据库的当前scn。
查询日志组成员的信息:
select member,status from v$logfile where group#=1;
通过查询动态性能视图v$controlfile可以显示当前数据库的所有控制信息:
select name from v$controlfile;
查看归档日志信息:
select name,first_change#,next_change# from v$archived_log where thread#=1;
(thread#意思是redo thread number 只有一个redo线程所以值都唯一)
name:标识归档日志文件名。
first_change#:归档日志起始scn。
next_change#:本归档日志的结束scn,也是下一个归档日志文件的起始scn。
2、备份控制文件:
使用alter database backup controlfile to trace命令,oracle会将控制文件的信息,备份到服务器进程跟踪文件(trace file)中,如果控制文件一旦损坏,我们就可以用跟踪文件重建控制文件。
控制文件多元化:
一个视图:v$controlfile,一个参数:control_files
配置实例恢复参数:
fast_start_mttr_target:指定实例恢复的最大时间。通过它控制检查点checkpoint发生的频率。
log_checkpoint_timeout:指定发出检查点的时间间隔,单位是秒。
log_checkpoint_interval:用于指定发出检查点的重做日志块的间隔。单位是 操作系统数据块。
上面这三个参数现在都主要用第一个,后两个是为了与早期版本保留的参数,一般现在不用了。操作:
alter system set fast_start_mttr_target=1000;
视图:v$instance_recovery: 可以监视实例恢复的动态信息,操作:
select actual_redo_blks,target_redo_blks,estimated_mttr from v$instance_recovery;
actual_redo_blks:用于标识当前情况下实例恢复需要的redo块个数。
target_redo_blks:当前情况下实例恢复最多需要的redo块个数。
estimated_mttr:用于标识实例恢复需要用的时间。
降低实例恢复的时间:
因为实例恢复主要是redo时间和undo时间,所以为了降低实例恢复的时间,应该调整redo和undo时间。
redo的操作时由smon完成的,为了降低实例的恢复时间可以启动多个恢复进程,由初始化参数recovery_parallelism控制,修改后重启生效。
alter system set recovery_parallelism=3 scope=spfile;
undo也是由smon控制的,参数fast_start_parallel_rollback最大的平行回滚进程的数量,同个设置这个参数可以加快undo操作;
fast_start_parallel_rollback的取值有三个,分别是false,low,high。取false表示不用parallel rollback;low表示2倍的cpu的个数,high表示4倍的cpu的个数。
alter system set fast_start_parallel_rollback = high;
动态性能视图:v$fast_start_servers 可以监视执行undo操作的进程信息。
改变数据库日志归档的模式,只能在mount阶段进行,不能打开数据库具体操作如下:
先关闭shutdown immediate——再挂载startup mount——改变日志操作模式alter database archivelog——打开数据库:alter database open。
归档模式转变成archivelog的时候自动 启动ARCn进程,在10g之前要想自动启动ARCn进程,必须将参数log_archive_start设置为true。
归档日志的名称格式:由静态初始化参数(设置后重启生效):log_archive_format确定,如:alter system set log_archive_format='%s_%t_%r.log' scope=spfile;
具体什么意思呢?且听我慢慢说,首先要知道什么事匹配符,就是这几个%s, %t,%r 的东西,每个都有特定含义:
%s——日志序列号;
%S——日志序列号(带有前导0);
%t——重做线程号;
%T重做线程号(带有前导0);
%a——活动id号;
d%——数据库id号;
r%——resetlogs的id值。
如果LGWR进程切换了日志,那么归档日志就会接下来生成一个类似于22_1_5222517960.log的归档日志,其中22是日志序列号,1是重做线程号,522...0是resetlogs的编号。如果归档日志存放在快速恢复区,那么归档日志文件不会采用log_archive_format的格式。
参数log_archive_dest_n:其中n表示1到10之间的数,用于指定归档日志的位置。不仅可以指定本地的,也可以指定远程的位置。
操作:alte system set log_archive_dest_1='location=c:\demo\archive';——location关键词表示在本地设置。
alter system set log_archive_dest_2='location=d:\demo\archivcwe';
alter system set log_archive_dest_3='service=standby'; ——service关键词表示在远程节点设置归档位置。
参数:log_archive_dest_state_n:用于控制某个归档位置的可用性,默认值为enable,表示某位置可用,defer时表示末位置暂时不可用。
参数:log_archive_max_processes:用于控制归档进程个数。当启用archivelog模式的时候,默认为两个,你可以自己改变为更少或者更多。
参数:log_archive_min_succeed_dest:控制本地归档的最小成功个数,如:alter system set log_archive_min_succeed_dest=2;执行此句后,如果本地生成的归档日志少于两个,那么重做日志将不能被覆盖。
操作:archive log list :显示日志操作模式,显示最后一个本地归档位置,还有当前日志序列号。
操作:显示归档日志信息: select name,sequence#,first_change# from v$archived_log;
name——日志文件名,frist_change#——日志起始scn。
操作:显示归档日志位置:select dest_name,destination,status from v$archive_dest;
dest_name——归档位置参数名,destination——归档位置,如果是本地归档,显示操作系统目录,如果是远程归档,显示网络服务名,status——用于标识归档位置的状态。
操作:select thread# , sequence# , first_change#, first_time , switch_change# from v$loghist;
thread#——标识重做线程号,sequence#——日志序列号;first_change#——日志序列号对应的起始scn;first_time——用于标识起始scn发生的时间。switch_change#——标识日志切换时的scn值。
操作:查看所有归档进程的信息:select process, status , log_sequence, stat from v$archive_processes;
process——标识所有ARCn进程的编号;status——标识ARCn进程的状态(active——活动,stoped——未启动;Possible values are: STOPPED
, SCHEDULED
, STARTING
, ACTIVE
, STOPPING
, andTERMINATED
.),log_sequence——用于标识正在进行归档的日志序列号;state——标识ARCn进程的工作状态( Possible keywords are IDLE
or BUSY
.)。