设为首页 收藏本站
查看: 1800|回复: 0

[经验分享] OCP读书笔记(9)

[复制链接]

尚未签到

发表于 2015-6-16 12:38:51 | 显示全部楼层 |阅读模式
  数据库恢复顾问
  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> list failure 142 detail;
  该命令将向您显示错误的确切原因
  3. 向Data Recovery Advisor 寻求帮助:



RMAN> advise failure;
  以上命令的响应将对错误进行详细的解释,并说明如何纠正该错误:
首先,该 Advisor 对错误进行了分析,在以上的例子中,错误很明显数据文件丢失,接下来,Advisor 建议了一个策略在该案例中,这也是相当简单的:还原和恢复文件(V$IR_MANUAL_CHECKLIST 也显示了该信息)
  4. 预览修复任务将执行的操作:



RMAN> repair failure preview;
  5. 发出以下命令来执行实际的修复:



RMAN> repair failure;
  Do you really want to execute the above repair (enter YES or NO)?
输入YES,操作将继续执行:
  如果不希望提示;而是希望继续进行并修复,没有任何提示,在RMAN 提示符下使用 repair failure noprompt 即可



RMAN> repair failure noprompt;
  处理坏块
  1. 安装bbed
  11g安装OracleDatabase 11g中缺省的未提供BBED库文件,但是可以用10g的文件编译出来
需要先从10g中复制如下文件到相应目录然后再执行连接命令:
  复制Oracle 10g库文件



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对其进行备份:



rman target /
RMAN> backup tablespace test01 format='/u01/app/oracle/backup/rmanbk/%d_%s.dbf';
RMNA> shutdown immediate
  然后使用bbed工具编辑数据文件,修改里面的部分内容
  查看test01.dbf的大小:



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
  查看破坏结果:



SQL>startup
SQL>select count(*) from test; --error
  主动的运行状况检查
在 Oracle 数据库 11g 中,RMAN 中的一个新命令VALIDATE DATABASE 检查数据库块中的物理损坏操作,如果检测到损坏,将记录到自动诊断信息库中,然后,RMAN 将生成输出:



RMAN> validate database;
  vi /u01/app/oracle/diag/rdbms/orcl/orcl/trace/orcl_ora_7885.trc
  发现17号块发生损坏
  3. 使用rman进行恢复:



RMAN> list failure;
RMAN> advise failure;
RMAN> repair failure preview;
RMAN> repair failure noprompt;
sqlplus / as sysdba
SQL> select count(*) from test;
  还可以验证特定的表空间,数据文件,以及数据文件中的一个块:



RMAN> validate tablespace users;
RMAN> validate datafile 1;
RMAN> validate datafile 4 block 56;
  VALIDATE 命令的验证范围远远不只是数据文件,您可以验证 spfile、controlfilecopy、恢复文件快速恢复区,等等
  ADR:自动诊断资料库
  1. ADR目录设置:通过参数diagnostic_dest设置
    如果设置了ORACLE_BASE,diagnostic_dest设置为ORACLE_BASE的值
    如果没有设置ORACLE_BASE,diagnostic_dest默认设置为$ORACLE_HOME/log



SQL> show parameter diagnostic_dest;
  2. ADR目录结构:
  ADR_BASE/diag/product_type/product_id/instance_id
  3. ADR中的子目录:
  alert:包含实例的预警日志(XML格式)
cdump:包含核心文件
hm:包含Health Monitor报表
incident:包含每个意外事件的子目录,每个意外事件的子目录中还包含该意外事件的所有跟踪转出
incpkg:包含你为传到Oracle Support而创建的意外事件包
ir:包含为每个实例创建的意外事件报表
trace:存储用户会话跟踪文件
  通过查询V$DIAG_INFO视图,找出所有与ADR有关的位置:



SQL> select name, value from v$diag_info;
  4. 如何查看和解决ADR中的问题
  可以通过命令行工具adrci和database control中的support workbench来访问ADR中的数据
  adrci:通过adrci工具可以查看数据库的诊断数据,还可以把意外事件和问题信息打包成ZIP文件发送给Oracle Support,诊断数据包括跟踪和转储文件,预警日志文件以及oracle database 11g的新Health Monitor报表等数据,可以使用交互式和脚本方式使用adrci
  以命令行方式使用adrci:



[iyunv@oracle ~]# su - oracle
[oracle@oracle ~]$ adrci
  输入help可以查看帮助
  在命令行中执行adrci命令:
为了在命令行中执行adrci命令,可以使用参数exec,调用adrci时,必须在脚本中使用以下的语法:
adrci exec="command[;command]...."
  例如,如果想要在一个命令行中使用两条adrci命令:show homes和show incident,可以使用以下的语法:



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来显示:



sdrci> describe incident
  主动的运行状况检查
  虽然数据库自动进行激活检查,但最好是定期主动运行检查器,检测至今尚未影响数据库的潜在故障激活检查只在故障影响数据库时才执行,比如说在用户试图从某个讹误数据块中检索数据时才执行激活检查,但是,如果用户没有在数据块讹误后访问它,则该讹误的数据块不会自动导致数据库的故障预警,手动检查有助于捕捉这种可能在某个繁忙时间发作,潜在地降低数据库可用性的隐蔽故障
  可使用Database Control或PL/SQL程序包dbms_hm来进行手动数据库检查,此外,还可以用新的RMAN命令validate进行数据库讹误检查
  1.用dbms_hm程序包进行手动检查
  Oracle通过dbms_hm程序包来进行Health Monitor,使用dbms_hm程序包的run_check过程进行主动健康检查
desc dbms_hm
  下面列出run_check过程的不同参数所代表的含义
check_name:数据库检查名,这是一个必需的参数,而且一定要与v$hm_check视图中的检查名匹配
run_name:这是一个可选的参数,它允许指定检查运行名
timeout:可选,可以用检查能运行的时间长度设置限制
input_params:这是一个输入参数,控制检查的运行,可查询v$hm_check_param视图查看各种类型的输入
  实验:使用dbms_hm来进行数据文件完整性的检查:
  (1). 使用rman对数据库进行备份:
rman target /
backup database format='/u02/backup/rmanbk/%d_%s.dbf';
  (2). 删除users01.dbf:
cd $ORACLE_BASE/oradata/orcl11g
rm -rf users01.dbf
  (3). 使用dbms_hm进行检测:
exec dbms_hm.run_check('DB Structure Integrity Check', 'testrun1');
  Health Monitor在此数据库实例的ADR主目录中保存其所有数据库检查的报告,show hm_run命令显示ADR中登记的所有检查器运行的摘要,它们是可以从v$hm_run视图看到的相同的检查器运行,给出show hm_run命令的样例结果:
adrci> show hm_run
  可使用adrci命令show report查看Health Monitor执行的一个特定检查的详细报告:
adrci> show report hm_run testrun1
  所有Health Monitor报告都存储在v$hm_run视图中,使用dbms_hm程序包首先生成报告:
  var v_output clob
begin
  :v_output := dbms_hm.get_run_report('testrun1');
end;
/
  打印报告:
  set long 100000
set pages 0
print :v_output
  可以直接查询v$hm_run视图获得检查的信息:
select name, check_name, run_mode, status from v$hm_run;
  2.使用Database Control进行手动检查
  可以按照下面的步骤通过Database Control进行Health Monitor检查:
(1) 单击Database主页上的Advisor Central(顾问中心);
(2) 单击Checkers(检查器)转到Checkers子页;
(3) 单击你想运行的检查器;
(4) 为检查器运行输入每个参数的值;
(5) 单击Run(运行),在确认你的选择后,再次单击Run开始检查
  3.用RMAN命令validate进行手动检查
  在以前的Oracle数据库版本中,可以使用backup … validate命令检验备份,本质上,这条命令帮助检查数据文件中的逻辑和物理块内讹误(intrablock corruption),同时还检查数据文件是否可以被RMAN备份,这条命令并不执行实际的备份,它只是检验数据库文件,使你在用RMAN备份这些数据文件时保证具有可用的合法的备份
  Oracle Database 11g有一条名为validate的新命令,它在语义上与旧的backup … validate命令具有类似的选项,但可以进行更细粒度的检验。backup … validate命令只能在数据库层面上使用,而validate命令可以在备份集、表空间、数据文件的层面上完成相同的工作,甚至可以在数据块层次上使用,甚至可以用它来检查闪回恢复区或所有恢复文件的完整性
  可以使用RMAN中的Data Recovery Advisor的list failure、advise failure和repair failure命令查看故障并处理它们
  实验:
  rman target /
RMAN> validate database;
RMAN> list failure;
RMAN> advise failure ;
RMAN> repair failure;
  

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-77953-1-1.html 上篇帖子: 闪回flashback#ocp试验# 下篇帖子: OCP原则
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表