Oracle AWR入门(1)

一、ASH
若是一个普通的会话(我是指没有大量地耗费资源),则对于性能调整来说无足轻重。但若该会话在活动时大量占用了资源(比如:CPU,内存,I/O等),该会话信息的丢失,将无法评测当时的系统瓶颈究竟是什么。令DBA高兴的是,oracle10g中保留下了v$session_wait中的这些信息。
在10g中新出现了一个视图:v$session_wait_history。这个视图保存了每个活动session在v$session_wait中最近10次的等待事件。但这对于一段时期内的数据库性能状况的监测是远远不够的,为了解决这个问题,在10g中还新添加了一个视图:v$active_session_history。这就是ASH(active session history)。
典型的情况下,为了诊断当前数据库的状态,需要最近的五到十分钟的详细信息。然而,由于记录session的活动信息是很费时间和空间的,ASH采用的策略是:保存处于等待状态的活动session的信息,每秒从v$session_wait中采样一次,并将采样信息保存在内存中。

二、AWR

ASH的采样数据是保存在内存中。而分配给ASH的内存空间是有限的,当所分配空间占满后,旧的记录就会被覆盖掉;而且数据库重启后,所有的这些ASH信息都会消失。这样,对于长期检测oracle的性能是不可能的。在Oracle10g中,提供了永久保留ASH信息的方法,这就是AWR(auto workload repository)。
由于全部保存ASH中的信息是非常耗费时间和空间的,AWR采用的策略是:每小时对v$active_session_history进行采样一次,并将信息保存到磁盘中,并且保留7天,7天后旧的记录才会被覆盖。这些采样信息被保存在视图wrh$_active_session_history中。而这个采样频率(1小时)和保留时间(7天)是可以根据实际情况进行调整的,这就给DBA们提供了更加有效的系统监测工具。
AWR永久地保存系统的性能诊断信息,由SYS用户拥有。一段时间后,你可能想清除掉这些信息;有时候为了性能诊断,你可能需要自己定义采样频率来获取系统快照信息。Oracle 10g在包dbms_workload_repository中提供了很多过程,通过这些过程,你可以管理快照并设定基线(baselines)。
其实,AWR记录的信息不仅是ASH,还可以收集到数据库运行的各方面统计信息和等待信息,用以诊断分析。
AWR的采样方式是,以固定的时间间隔为其所有重要的统计信息和负载信息执行一次采样,并将采样信息保存在AWR中。
可以这样说:ASH中的信息被保存到了AWR中的视图wrh$_active_session_history中。ASH是AWR的真子集。

三、总结
这样,我们就知道了ASH和AWR产生的原因和功能。ASH保存了系统最新的处于等待的会话记录,可以用来诊断数据库的当前状态;而AWR中的信息最长可能有1小时的延迟,所以其采样信息并不能用于诊断数据库的当前状态,但可以用来作为一段时期内数据库性能调整的参考。
对于这些视图间的继承关系图:

其中视图dba_hist_active_sess_history是wrh$_active_session_history和其他几个视图的联合展现,通常通过这个视图进行历史数据的访问。

Rman备份恢复命令

一、backup操作
备机集
1.设置备份标记
backup database tag=’full_bak1′;
注:每个标记必须唯一,相同的标记可以用于多个备份只还原最新的备份。

2.设置备份集大小(一次备份的所有结果为一个备份集,要注意备份集大小)
backup database maxsetsize=100m tag=’datafile1′;
注:maxsetsize限定备份集的大小。所以必须大于数据库总数据文件的大小,否则会报错。
RMAN-06183: datafile or datafile copy larger than MAXSETSIZE: file# 1 /data/oradata/system01.dbf

3.设置备份片大小(磁带或文件系统限制)
run {
allocate channel c1 type disk maxpicecsize 100m format ‘/data/backup/full_0_%U_%T’;
backup database tag=’full_0′;
release channel c1;
}
可以在allocate子句中设定每个备份片的大小,以达到磁带或系统限制。
也可以在configure中设置备份片大小。
Configure channel device type disk maxpiecesize 100 m;
configure channel device type disk clear;

4.备份集的保存策略
backup database keep forever; –永久保留备份文件
backup database keep until time=’sysdate+30′; –保存备份30天

5.重写configure exclude命令
backup databas noexclude keep forever tag=’test backup’;

6.检查数据库错误
backup validate database;
使用RMAN来扫描数据库的物理/逻辑错误,并不执行实际备份。

7.跳过脱机,不可存取或只读文件
backup database skip readonly;
backup database skip offline;
backup database skip inaccessible;
backup database ship readonly skip offline ship inaccessible;

8.强制备份
backup database force;

9.基于上次备份时间备份数据文件
1>只备份添加的新数据文件
backup database not backed up;
2>备份”在限定时间周期内”没有被备份的数据文件
backup database not backed up since time=’sysdate-2′;

10.备份操作期间检查逻辑错误
backup check logical database;
backup validate check logical database;

11.生成备份副本
backup database copies=2;

12.备份控制文件
backup database device type disk includ current controlfile;

建立映像副本
1、建立数据文件映像副本
RMAN>backup as copy format=’c:\df_5.dbf’ datafile 5; 或者
RMAN>copy datafile 5 to ‘c:\df_5.dbf’ ;
2、建立控制文件映像副本
RMAN>backup as copy format=’c:\demo.ctl’ current controlfile; 或者
RMAN>copy current controlfile to ‘c:\demo.ctl’;
3、建立归档日志映像副本
RMAN>backup as copy format=’c:\arc10.log’ archivelog sequence 10; 或者
RMAN>copy archivelog ‘c:\demo\archive\arc00020_012345.001’ to ‘c:\arc20.log’;
4、并行化建立映像副本
RMAN>configure device type disk parallelism 3;
RMAN>backup as copy format =’c:\df_%f.dbf’ datafile 5,6,7 ;
RMAN>configure device type disk clear;
5、指定映像副本标记
RMAN>backup as copy format=’c:\df_%f.dbf’ datafile 5 tag=df_5; 或者
RMAN>copy datafile 5 to ‘c:\df_%f.dbf’ tag=df_5;

二、RMAN恢复操作
RMAN完全恢复
1、恢复数据库
1)、所有数据文件被删除
c:\rman target sys/oracel@test nocatalog
RMAN>startup force mount
RMAN> run {
restore databse ;
recover database;
sql ‘alter database open’ ;
}
2)、数据文件所在磁盘出现硬件故障
RMAN> run {
startup force mount;
set newname for datafile 1 to ‘c:\demo\system01.dbf’;
set newname for datafile 2 to ‘c:\demo\dundotbs01.dbf’;
set newname for datafile 3 to ‘c:\demo\sysaux01.dbf’;
set newname for datafile 4 to ‘c:\demo\users01.dbf’;
set newname for datafile 5 to ‘c:\demo\example01.dbf’;
set newname for datafile 6 to ‘c:\demo\test0.dbf’;
restore database;
switch datafile all;
recover database;
sql ‘alter database open ‘;
}
2、恢复SYSTEM表空间的数据文件
1)、SYSTEM表空间的数据文件被误删除
RMAN>run {
startup force mount;
restore datafile 1;
recover datafile 1;
sql ‘alter database open’ ;
}
2)、SYSTEM表空间数据文件所在的磁盘出现故障
RMAN> run {
startup force mount;
set newname for datafile 1 to ‘c:\demo\system01.dbf’;
restore datafile 1;
switch datafile 1;
recover datafile 1;
sql ‘alter database open’;
}
3、在OPEN状态下恢复关闭后意外丢失数据文件
1)、数据文件被删除
RMAN>run {
startup force mount;
sql ‘alter database datafile 4 offline’;
sql ‘alter database open ‘;
restore datafile 4;
recover datafile 4;
sql ‘alter database datafile 4 online’;
}
2)、数据文件所在的磁盘出现损坏
RMAN>run {
startup force mount;
sql ‘alter database datafile 4 offline’;
sql ‘alter database open ‘;
set newname for datafile 4 to ‘c:\demo\user01.dbf’;
restore datafile 4;
switch datafile 4;
recover datafile 4;
sql ‘alter database datafile 4 online’;
}
4、在OPEN状态下恢复打开时意外丢失的数据文件
1)、数据文件被误删除
RMAN>run {
sql ‘alter database datafile 4 offline’;
restore datafile 4;
recover datafile 4;
sql ‘alter database datafile 4 online’;
}
2)、数据文件所在磁盘出现故障
RMAN>run {
sql ‘alter database datafile 4 offline’;
set newname for datafile 4 to ‘c:\demo\user01.dbf’;
restore datafile 4;
switch datafile 4 ;
recover datafile 4;
sql ‘alter database datafile 4 online’;
}
5、在OPEN状态下恢复未备份的数据文件(创造新数据文件后没有进行过备份)
1)、数据文件被误
RMAN>run {
startup force mount;
sql ‘alter database datafile 7 offline ‘;
sql ‘alter database open’;
restore datafile 7;
recover datafile 7;
sql ‘alter database datafile 7 online’;
}
2)、数据文件所在磁盘出现故障
RMAN>run {
startup force mount;
sql ‘alter database datafile 7 offline ‘;
sql ‘alter database open’;
set newname for datafile 7 to ‘c:\demo\user04.dbf’;
restore datafile 7;
switch datafile 7;
recover datafile 7;
sql ‘alter database datafile 7 online’;
}

6、恢复表空间
1)、表空间被删除
RMAN>run {
sql ‘alter tablespace users offline for recover’;
restore tablespace users;
recover tablespace users;
sql ‘alter tablespace users online’;
}
2)、表空间的数据文件所在磁盘出现故障
RMAN>run {
sql ‘alter tablespace users offline for recover’;
set newname for datafile 4 to ‘c:\demo\user01.dbf’;
restore tablespace users;
switch tablespace users;
recover tablespace users;
sql ‘alter tablespace users online’;
}
7、数据块介质恢复
RMAN>blockrecover device type disk datafile 5 block 20,21,100 ;

RMAN不完全恢复
1、基本时间恢复
c:\set nls_date_format=yyyy-dd-mm hh24:mi:ss
c:\rman target sys/dddddd@train nocatalog
RMAN>run{
startup force mount;
set until time=’2010-09-09 13:00:00′;
restore database;
recover database;
sql ‘alter database open resetlogs’;
}
2、基于SCN恢复
RMAN>run {
startup force mount;
set until scn=123456;
restore database;
recover database;
sql ‘alter database open resetlogs’;
}
3、基于日志序列号恢复
RMAN>run {
startup force mount;
set until sequence=58;
restore database;
recover database;
sql ‘alter database open resetlogs’;
}
4、基于备份控制文件恢复
c:\set nls_date_format=yyyy-dd-mm hh24:mi:ss
c:\rman target sys/oracle@test nocatalog
RMAN>startup force nomount;
RMAN>set dbid=1113606269;
RMAN>restore controlfile from autobackup maxseq 6;
RMAN>alter database mount;
RMAN>run {
set until time=’2010-09-5 12:00:08′;
restore database;
recover database;
sql ‘alter database open resetlogs;
}
当执行了上述4种不完全恢复之后,建议删除早期的所有备份,并重新备份数据库
RMAN>run {
delete noprompt backup;
delete noprompt copy;
backup database format=’c:\backup\%d_%s.bak’;
sql ‘alter system archive log current’;
}

Rman管理命令

一、相关查询命令
1.List 当前RMAN所备份的数据库
RMAN> list incarnation;
汇总查询:–如果备份文件多的话多用这两个list命令可以对备份文件有个总体了解。
1.1. list backup summary; –概述可用的备份
B 表示backup
A 表示Archivelog、 F 表示full backup、 0,1,2 表示incremental level备份
A 表示可用AVALIABLE、 X 表示EXPIRED
这个命令可以派生出很多类似命令,例如
list backup of database summary
list backup of archivelog all summary
list backup of tablespace users summary;
list backup of datafile n,n,n summary
这些命令可以让我们对已有的备份文件有一个整体,直观的了解。

1.2.list backup by file;–按照文件类型分别列出
分别为:数据文件列表、归档日志列表、控制文件列表、SPFILE列表

1.3.list backup;
这个命令列出已有备份集的详细信息。

1.4.list expired backup;
列出过期的备份文件

1.5.list copy;
列出copy文件
list copy of database;
list copy of controlfile;
list copy of tablespace users;
list copy of datafile n,n,n;
list copy of archivelog all;
list copy of archivelog from scn 10000;
list copy of archivelog until sequence 12;

2. List 相关文件的信息
list backup of {archivelog, controlfile, database, datafile, spfile, tablespace};
list backup of database; –full,incremental,tablespace,datafile

2.1服务器参数文件:
list backup of spfile;

2.2 控制文件:
list backup of controlfile;

2.3 数据文件:
list backup of datafle n,n,n,n;

2.4表空间:
list backup of tablespace tablespace_name;–表空间对应的backup

2.5归档日志:
list backup of archivelog {all, from, high, like, logseq, low, scn, sequence, time, until};
list backup of archivelog all;
list backup of archivelog until time ‘sysdate-1’;
list backup of archivelog from sequence 10;
list backup of archivelog until sequence 10;
list backup of archivelog from scn 10000;
list backup of archivelog until scn 200000;

list archivelog from scn 1000;
list archivelog until scn 2000;
list archivelog from sequence 10;
list archivelog until sequence 12;

二、RMAN常用检查命令
1、report常用命令总结备忘
report用于判断数据库当前可恢复状态、以及数据库已有备份的信息。最常使用的是report obsolete; report schema;
report {device, need, obsolete, schema, unrecoverable}
report schema;
report obsolete;
report unrecoverable;
report need backup;
report need backup days=3; –报告最近3天内没有备份的文件
report need backup redundancy=3; –报告冗余次数小于3的数据文件。
report need backup recovery window of 2 days;

1.1.report schema;
报告数据库模式

1.2.report obsolete;
报告已丢弃的备份集(配置了保留策略)。

1.3.report unrecoverable;
报告当前数据库中不可恢复的数据文件(即没有这个数据文件的备份、或者该数据文件的备份已经过期)

1.4.report need backup;
报告需要备份的数据文件(根据条件不同)
report need backup days=3;
–最近三天没有备份的数据文件(如果出问题的话,这些数据文件将需要最近3天的归档日志才能恢复)
report need backup incremental=3;
–需要多少个增量备份文件才能恢复的数据文件。(如果出问题,这些数据文件将需要3个增量备份才能恢复)
report need backup redundancy=3;
–报告出冗余次数小于3的数据文件
–例如数据文件中包含2个数据文件system01.dbf和users01.dbf.
–在3次或都3次以上备份中都包含system01.dbf这个数据文件,而users01.dbf则小于3次
–那么,报告出来的数据文件就是users01.dbf
–即,报告出数据库中冗余次数小于 n 的数据文件
report need backup recovery window of 2 days;
–报告出恢复需要2天归档日志的数据文件

2、crosscheck 命令
2.1 备份集有两种状态A(Available,RMAN认为该项存在于备份介质上)X(Expired,备份存在于控制文件或恢复目录中,但是并没有物理存在于备份介质上)
   
2.2 crosscheck 的目的是检查RMAN 的目录以及物理文件,如果物理文件不存在于介质上,将标记为Expired。如果物理文件存在,将维持Available。如果原先标记为Expired的备份集再次存在于备份介质上(如恢复了损坏的磁盘驱动器后),crosscheck将把状态重新从Expired标记回Available。
  
2.3 crosscheck 输出分两部分。第一部分列出确定存在于备份介质上的所有备份集片,第二部分列出不存在于备份介质上的备份集片,并将其标记为Expired。当设置备份保存策略后,一个备份过期,crosscheck之后标记为丢弃的备份状态依旧为availabel,要删除丢弃备份delete obsolete。
  
2.4 示例:
   crosscheck backup
   crosscheck backup of datafile 1;
   crosscheck backup of tablespace users;
   crosscheck backup of controfile;
   crosscheck backup of controlfile;
   crosscheck backup tag=’SAT_BACKUP’;
   crosscheck backup completed after ‘sysdate – 2’
   crosscheck backup completed between ‘sysdate – 5’ and ‘sysdate -2 ‘
   crosscheck backup device type sbt;
   crosscheck archivelog all;
   crosscheck archivelog like ‘%ARC00012.001’
   crosscheck archivelog from sequence 12;
   crosscheck archivelog until sequence 522;

3、validate 命令
3.1 validate 命令验证备份集片是否能够被还原 
3.2 list backup summary; 得到了备份集得主键ID如40,然后validate backupset 40;

三、备份保存策略以及change ,delete命令
0.带delete参数的change 命令删除备份集,从备份介质,并且从控制文件和恢复目录中删除。
   change backupset 117,118 delete;
   change backuppiece 1304 delete;
   change archivelog until logseq =544 delete;
  
1.两类策略:恢复窗口备份保存策略(recovery windows backup retension policy) 基于时间
      备份冗余备份保存策略(backup redundancy backup retension policy) 基于备份的数量
两类策略互相排斥
   
2.即使使用了备份保存策略,备份到期并不删除,只是在RMAN目录中标记为丢弃,看到的状态依旧为available;要查看标记为丢弃的备份 report obsolete,只有使用delete obsolete才真正物理删除。
  
3.configure retension policy to recovery window of 7 days;configure retension policy to redundancy 3;显示结果 show all;
   
4.查看到期丢弃的备份时,可能需要手工保存一些备份,可以使用change 命令带keep 参数,使用这个命令后,那些被修改的备份将被认为是个long-term backup,不在受保存策略影响也就是说delete obsolete 也不删除。
  
5.要使备份时候不受保存策略影响 ,使用带keep参数的backup 命令
   backup database keep forever;
   backup database keep 5 days;
  
6.change 命令功能
   可以修改备份为永久保存并将以及该备份的相关的日志保存下来,保证总能将备份恢复到当前时间点
   change backupset 31 keep forever logs;
   可以设置备份丢弃的新日期 ,将备份在多保存7 天,7 天后将删除
   change backupset 32 keep until time ‘sysdata + 7’ logs;
   change 可以将备份集设置为unavailable
   change backupset 33 unavailable;
   标记为unavailable状态的备份集并不参与crosscheck;

四、CONFIGURE常用命令总结备忘
4.1 显示当前的配置信息
4.1.1 RMAN> show all;
RMAN 配置参数为:
CONFIGURE RETENTION POLICY TO REDUNDANCY 1; # default
CONFIGURE BACKUP OPTIMIZATION OFF; # default
CONFIGURE DEFAULT DEVICE TYPE TO DISK; # default
CONFIGURE CONTROLFILE AUTOBACKUP OFF; # default
CONFIGURE CONTROLFILE AUTOBACKUP FORMAT FOR DEVICE TYPE DISK TO ‘%F’; # default
CONFIGURE DEVICE TYPE DISK PARALLELISM 1 BACKUP TYPE TO BACKUPSET; # default
CONFIGURE DATAFILE BACKUP COPIES FOR DEVICE TYPE DISK TO 1; # default
CONFIGURE ARCHIVELOG BACKUP COPIES FOR DEVICE TYPE DISK TO 1; # default
CONFIGURE MAXSETSIZE TO UNLIMITED; # default
CONFIGURE ENCRYPTION FOR DATABASE OFF; # default
CONFIGURE ENCRYPTION ALGORITHM ‘AES128’; # default
CONFIGURE ARCHIVELOG DELETION POLICY TO NONE; # default
CONFIGURE SNAPSHOT CONTROLFILE NAME TO ‘D:\ORACLE\PRODUCT\10.2.0\DB_1\DATABASE\SNCFDBA.ORA’; # default

4.1.2 查询RMAN设置中非默认值:
SQL> select name,value from v$rman_configuration;

4.2. 常用的configure选项
4.2.1 保存策略 (retention policy)
configure retention policy to recovery window of 7 days;
configure retention policy to redundancy 5;
configure retention policy clear;
CONFIGURE RETENTION POLICY TO NONE;
第一种recover window是保持所有足够的备份,可以将数据库系统恢复到最近七天内的任意时刻。任何超过最近七天的数据库备份将被标记为obsolete。
第二种redundancy 是为了保持可以恢复的最新的5份数据库备份,任何超过最新5份的备份都将被标记为redundancy。它的默认值是1份。
第三四:NONE 可以把使备份保持策略失效,Clear 将恢复默认的保持策略

4.2.2 备份优化 backup optimization
configure backup optimization on;
configure backup optimization off;
configure backup optimization clear;
–默认值为关闭,如果打开,rman将对备份的数据文件及归档等文件进行一种优化的算法。

4.2.3 默认设备 default device type
configure default device type to disk;
configure default device type to stb;
configure default device type clear;
–是指定所有I/O操作的设备类型是硬盘或者磁带,默认值是硬盘,磁带的设置是CONFIGURE DEFAULT DEVICE TYPE TO SBT;

4.3.4 控制文件 controlfile
configure controlfile autobackup on;
configure controlfile autobackup format for device type disk to ‘/cfs01/backup/conf/conf_%F’;
configure controlfile autobackup clear;
configrue controlfile autobackup format for device type disk clear;
configrue snapshot controlfile name to ‘/cfs01/backup/snapcf/scontrofile.snp’;
–是配置控制文件的快照文件的存放路径和文件名,这个快照文件是在备份期间产生的,用于控制文件的读一致性。
configrue snapshot controlfile name clear;
–强制数据库在备份文件或者执行改变数据库结构的命令之后将控制文件自动备份,默认值为关闭。这样可以避免控制文件和catalog丢失后,控制文件仍然可以恢复。

4.3.5 并行数(通道数) device type disk|stb pallelism n;
configure device type disk|stb parallelism 2;
configure device type disk|stb clear; –用于清除上面的信道配置
configure channel device type disk format ‘e/:rmanback_%U’;
configure channel device type disk maxpiecesize 100m
configure channel device type disk rate 1200K
configure channel 1 device type disk format ‘e/:rmanback_%U’;
configure channel 2 device type disk format ‘e/:rmanback_%U’;
configure channel 1 device type disk maxpiecesize 100m
–配置数据库设备类型的并行度。

4.3.6 生成备份副本 datafile|archivelog backup copies
configure datafile backup copies for device type disk|stb to 3;
configure archivelog backup copies for device type disk|stb to 3;
–是设置数据库的归档日志的存放设备类型
configure datafile|archivelog backup copies for device type disk|stb clear
BACKUP DEVICE TYPE DISK DATABASE FORMAT ‘/disk1/backup/%U’, ‘/disk2/backup/%U’, ‘/disk3/backup/%U’;
–是配置数据库的每次备份的copy数量,oracle的每一次备份都可以有多份完全相同的拷贝。

4.3.7 排除选项 exclude
configure exclude for tablespace ‘users’;
configrue exclude clear;
–此命令用于将指定的表空间不备份到备份集中, 此命令对只读表空间是非常有用的。

4.3.8 备份集大小 maxsetsize
configure maxsetsize to 1G|1000M|1000000K|unlimited;
configure maxsetsize clear;

4.3.9 其它选项 auxiliary
CONFIGURE AUXNAME FOR DATAFILE 1 TO ‘/oracle/auxfiles/aux_1.f’;
CONFIGURE AUXNAME FOR DATAFILE 2 TO ‘/oracle/auxfiles/aux_2.f’;
CONFIGURE AUXNAME FOR DATAFILE 3 TO ‘/oracle/auxfiles/aux_3.f’;
CONFIGURE AUXNAME FOR DATAFILE 4 TO ‘/oracle/auxfiles/aux_4.f’;
CONFIGURE AUXNAME FOR DATAFILE 1 CLEAR;
CONFIGURE AUXNAME FOR DATAFILE 2 CLEAR;
CONFIGURE AUXNAME FOR DATAFILE 3 CLEAR;
CONFIGURE AUXNAME FOR DATAFILE 4 CLEAR;