数据库恢复顾问
Data Recovery Advisor的命令行选项
1. 启动 RMAN 进程并连接到目标
$ rman target=/
2. 假设发生了某个错误,希望找出原因,使用 list failure 命令:
RMAN> list failure;
如果没有错误,该命令将返回以下消息:
no failures found that match specification
如果有错误,将显示如下更具说明性的消息:
142 HIGH OPEN 15-JUL-07 One or more non-system datafiles are missing
该消息表明某些数据文件已丢失,由于这些数据文件属于 SYSTEM 以外的表空间,该表空间脱机。该错误相当严重,因此优先级设为 HIGH,每个故障都有一个故障 ID,以方便各个故障的识别和解决,例如,可以发出以下命令来了解故障 142 的详细信息:
RMAN> repair failure;
Do you really want to execute the above repair (enter YES or NO)?
输入YES,操作将继续执行:
如果不希望提示;而是希望继续进行并修复,没有任何提示,在RMAN 提示符下使用 repair failure noprompt 即可
cp $ORA10g_HOME/rdbms/lib/ssbbded.o $ORA11g_HOME/rdbms/lib
cp $ORA10g_HOME/rdbms/lib/sbbdpt.o $ORA11g_HOME/rdbms/lib
cp $ORA10g_HOME/rdbms/mesg/bbedus.msb to $ORA11g_HOME/rdbms/mesg
cp $ORA10g_HOME/rdbms/mesg/bbedus.msg to $ORA11g_HOME/rdbms/mesg
su - oracle11g
cd $ORACLE_HOME/rdbms/lib
chown oracle11g:oinstall ssbbded.o
chown oracle11g:oinstall sbbdpt.o
chmod 644 ssbbded.o
chmod 644 sbbdpt.o
cd $ORACLE_HOME/rdbms/mesg
chown oracle11g:oinstall bbedus.msb
chown oracle11g:oinstall bbedus.msg
chmod 644 bbedus.msb
chmod 644 bbedus.msg
编译安装bbed
cd $ORACLE_HOME/rdbms/lib
make -f ins_rdbms.mk $ORACLE_HOME/rdbms/lib/bbed
做个链接到oracle二进制命令目录里:
ln ./bbed $ORACLE_HOME/bin/bbed
2. 模拟坏块
SQL> create tablespace test01 datafile '/u02/app/oracle11g/oradata/orcl11g/test01.dbf' size 1m;
SQL> create table test(id number,name varchar2(30)) tablespace test01;
SQL> insert into test select rownum,object_name from dba_objects where rownum insert into test select rownum,object_name from dba_objects where rownum commit;
SQL> select count(*) from test;
SQL> select segment_name,file_id,block_id from dba_extents where segment_name='TEST';
使用rman对其进行备份:
ls -l /u01/app/oracle/oradata/orcl/test01.dbf
vi /u01/app/oracle/temptest/filelist.txt
加入以下内容:
1 /u01/app/oracle/oradata/orcl/test01.dbf
vi /u01/app/oracle/temptest/par.bbd
加入以下内容:
blocksize=8192
listfile=/u01/app/oracle/temptest/filelist.txt
mode=edit
bbed parfile=/u01/app/oracle/temptest/par.bbd
Password:
BBED: Release 2.0.0.0.0 - Limited Production on Sat Nov 27 23:34:25 2010
Copyright (c) 1982, 2005, Oracle. All rights reserved.
************* !!! For Oracle Internal Use only !!! ***************
BBED> set file 1
BBED> show
BBED> modify 1000 file 1 block 17-----------------破坏块
Warning: contents of previous BIFILE will be lost. Proceed? (Y/N) y
BBED> verify
BBED> quit
查看破坏结果:
adrci exec="show homes; show incident"
例如,使用命令行功能查看告警日志:
adrci exec="set homepath diag/rdbms/orcl/orcl; set editor vi; show alert -V"
使用脚本:
adrci set homepath diag/rdbms/orcl/orcl;
adrci> show homepath;
当有多个当前主目录的情况下执行ips命令(创建一个意外事件包)将报错,所以必须用set homepath命令设置单个ADR主目录路径,才能用ips命令创建意外事件包
查看命令列表
可以在adrci命令行上输入help命令查看可以使用那些adrci命令
查看预警日志
在11G中,预警日志文件以文本格式和XML格式的文件存储,分别在ADR的主目录下,和trace目录下,可以使用adrci命令来查看XML格式的告警日志如
adrci> show alert;
adrci将当前的日志文件的完整内容传输到/tmp目录中,可以使用-tail选项的show alert命令查看预警日志文件的20到30条消息,如
adrci> show alert -tail 100
查看告警日志中是否存在ORA-600错误:
adrci> show alert -p "MESSAGE TEXT LIKE %ORA-600%"
adrci中可以使用spool例如:
adrci> spool /u01/app/oracle/temptest/strip_alert.log
adrci> show alert
adrci> spool off
列出跟踪文件以及查看意外事件:
adrci> show tracefile
adrci> show incident
adrci> show incident -mode detail -p "incident_id=113769"
show incident命令有两个选项,分别是谓词串-p和方式-mode,可以使用谓词串来指定各字段名,可在谓词中使用的所有的字段名的列表通过describe incident来显示: