标签云
asm恢复 bbed bootstrap$ dul kcbzib_kcrsds_1 kccpb_sanity_check_2 kcratr_nab_less_than_odr MySQL恢复 obet ORA-00312 ORA-00704 ORA-00742 ORA-01110 ORA-01200 ORA-01555 ORA-01578 ORA-01595 ORA-600 2662 ORA-600 2663 ORA-600 3020 ORA-600 4000 ORA-600 4137 ORA-600 4193 ORA-600 4194 ORA-600 16703 ORA-600 kcbzib_kcrsds_1 ORA-600 KCLCHKBLK_4 ORA-600 kcratr_nab_less_than_odr ORA-15042 ORA-15196 ORACLE 12C oracle dul ORACLE PATCH Oracle Recovery Tools oracle加密恢复 oracle勒索 oracle勒索恢复 oracle异常恢复 ORACLE恢复 Oracle 恢复 ORACLE数据库恢复 oracle碎片 OSD-04016 YOUR FILES ARE ENCRYPTED 比特币加密文章分类
- MongoDB (1)
- MongoDB恢复 (1)
- Others (2)
- 中间件 (2)
- WebLogic (2)
- 操作系统 (112)
- 数据库 (1,884)
- DB2 (22)
- MySQL (82)
- Oracle (1,709)
- Data Guard (53)
- EXADATA (8)
- GoldenGate (24)
- ORA-xxxxx (168)
- ORACLE 12C (72)
- ORACLE 18C (6)
- ORACLE 19C (15)
- ORACLE 21C (3)
- Oracle 23ai (8)
- Oracle ASM (73)
- Oracle Bug (8)
- Oracle RAC (56)
- Oracle 安全 (6)
- Oracle 开发 (28)
- Oracle 监听 (29)
- Oracle备份恢复 (662)
- Oracle安装升级 (108)
- Oracle性能优化 (62)
- 专题索引 (5)
- 勒索恢复 (91)
- PostgreSQL (37)
- pdu工具 (7)
- PostgreSQL恢复 (13)
- SQL Server (34)
- SQL Server恢复 (14)
- TimesTen (7)
- 达梦数据库 (5)
- 达梦恢复 (3)
- 生活娱乐 (2)
- 至理名言 (11)
- 虚拟化 (2)
- VMware (2)
- 软件开发 (51)
- Asp.Net (9)
- JavaScript (12)
- PHP (2)
- 小工具 (34)
- MongoDB (1)
-
最近发表
- 记录19c ASM磁盘掉线触发ORA-59048故障处理
- aix平台Oracle数据库由于断电无法启动故障处理
- 断电引起ORA-600 3005故障处理
- 记录一次云存储资源到期之后引起的数据库恢复
- Firebird 损坏数据库数据抢救工具—firebirdext
- Oracle 19c 202610补丁(RUs+OJVM)-19.33
- 由于con$.con#值达到极限,触发数据库增加约束报ORA-600 12807错误
- MongoDB 离线提取工具—mongoext
- .bres勒索病毒加密数据库dmp文件可恢复
- ORA-600 krsm_mrp_rebuild_lf_list.lno_mismatch
- 记录一次0丢失的ORA-00354: 损坏重做日志块标头故障恢复
- 不当数据库恢复操作导致一个月数据丢失
- obet快速修复oracle 位图损坏块
- 不太常见的10.2.0.1的oracle redo损坏恢复
- obet forcecopy功能抢救硬件故障中的数据文件
- kcratr_nab_less_than_odr和system坏块故障处理
- 通过obet 恢复system坏块,打开数据库
- obet dbv功能完整说明
- 分享一例运行在aix上的sap系统数据库恢复过程
- OBET-Oracle Block Editor Tool使用说明
分类目录归档:数据库
shell监控dataguard备库是否正常应用日志
一直在思索怎么去监控dg比较方便,又能够做到比较适用.想到了几种方法:
1.使用主备库两边的alert日志,但是这样的方法需要配置ssh,用来一个节点获取另外一个节点的alert日志
2.通过查询v$archived_log或者其他相关视图,然后主备库进行比较,但是这个需要访问另外一个库,需要另外库的登录信息
3.通过查询备库的v$archived_log视图,粗略评估dg是否工作正常.
这里我选择了3,dg的监控大部分时候是为了让人及时的发现日志应用异常,然后人工干预处理,从而减少修改gap或者重建dg的概率.而这个额监控可以在很大程度上发现dg应用归档日志异常,从而确定dg是否工作正常,如果发现工作异常,及时处理,可以减少很多工作量,甚至拯救你的数据.
#!/bin/bash
source ~/.bash_profile
#check time(M)
export CHECK_M=120
export RESULT_FILE=/tmp/dg_switch_check.log
$ORACLE_HOME/bin/sqlplus -silent "/ as sysdba" <<XFF>/tmp/check_dg.log
set pagesize 0 feedback off verify off heading off echo off
select ceil((sysdate-next_time)*24*60) "M"
from v\$archived_log
where applied='YES' AND SEQUENCE#=(SELECT MAX(SEQUENCE#)
FROM V\$ARCHIVED_LOG WHERE applied='YES');
exit;
XFF
GET_M=`cat /tmp/check_dg.log`
rm /tmp/check_dg.log
if [ ${CHECK_M} -lt ${GET_M} ];
then
echo "check dataguard time:`date`">$RESULT_FILE
echo "The last time application archivelog happened in $GET_M minutes ago">>$RESULT_FILE
else
echo ''>$RESULT_FILE
fi
针对这样的脚本,根据你的dg归档切换的频率,设置监控dg的最近一次日志应用与当前时间差,然后判断dg是否工作正常.根据监控程序的特点,可以通过判断结果集文件,然后邮件/短信或者其他方式处理.
发表在 Data Guard, Linux
2 条评论
因v$archived_log视图记录异常导致dg MRP进程异常
版本信息
操作系统Linux 4.8 x86 数据库版本ORACLE 9.2.0.4
alert日志报错
MRP进程出现异常报ORA-00310/ORA-00334错误
………… Media Recovery Log /u01/oracle/oradata/lunar/arch/1_75.dbf Media Recovery Log /u01/oracle/oradata/lunar/arch/1_76.dbf Media Recovery Log /u01/oracle/oradata/lunar/arch/1_77.dbf Media Recovery Log /u01/oracle/oradata/lunar/arch/1_78.dbf Media Recovery Log /u01/oracle/oradata/xifenfei/redo02.log MRP0: Background Media Recovery terminated with error 310 Thu Nov 8 07:44:39 2012 Errors in file /u01/oracle/admin/lunar/bdump/lunar_mrp0_25625.trc: ORA-00310: archived log contains sequence 85; sequence 79 required ORA-00334: archived log: '/u01/oracle/oradata/xifenfei/redo02.log' Recovery interrupted. MRP0: Background Media Recovery process shutdown
trace文件
*** SESSION ID:(17.13) 2012-11-08 07:24:12.986 Background Managed Standby Recovery process started *** 2012-11-08 07:24:18.023 Managed Recovery: Active posted. *** 2012-11-08 07:41:03.171 Media Recovery Log /u01/oracle/oradata/lunar/arch/1_64.dbf Media Recovery Log /u01/oracle/oradata/lunar/arch/1_65.dbf Media Recovery Log /u01/oracle/oradata/lunar/arch/1_66.dbf Media Recovery Log /u01/oracle/oradata/lunar/arch/1_67.dbf Media Recovery Log /u01/oracle/oradata/lunar/arch/1_68.dbf Media Recovery Log /u01/oracle/oradata/lunar/arch/1_69.dbf Media Recovery Log /u01/oracle/oradata/lunar/arch/1_70.dbf Media Recovery Log /u01/oracle/oradata/lunar/arch/1_71.dbf Media Recovery Log /u01/oracle/oradata/lunar/arch/1_72.dbf Media Recovery Log /u01/oracle/oradata/lunar/arch/1_73.dbf Media Recovery Log /u01/oracle/oradata/lunar/arch/1_74.dbf Media Recovery Log /u01/oracle/oradata/lunar/arch/1_75.dbf Media Recovery Log /u01/oracle/oradata/lunar/arch/1_76.dbf *** 2012-11-08 07:41:39.083 Media Recovery Log /u01/oracle/oradata/lunar/arch/1_77.dbf *** 2012-11-08 07:44:39.171 Media Recovery Log /u01/oracle/oradata/lunar/arch/1_78.dbf Media Recovery Log /u01/oracle/oradata/xifenfei/redo02.log Background Media Recovery terminated with error 310 ORA-00310: archived log contains sequence 85; sequence 79 required ORA-00334: archived log: '/u01/oracle/oradata/xifenfei/redo02.log' ----- Redo read statistics for thread 1 ----- Read rate (ASYNC): 21990Kb in 1221.38s => 0.02 Mb/sec Longest record: 1Kb, moves: 0/92129 (0%) Change moves: 34869/213735 (16%), moved: 2Mb ---------------------------------------------- *** 2012-11-08 07:44:39.404 Managed Recovery: Not Active posted. Background Media Recovery process shutdown *** 2012-11-08 07:44:39.406
猜想数据库恢复需要sequence为79的归档日志,但是该归档日志对应的为文件为redo02.log,而该redo02的seq为85所以使得MRP进程异常
使用rman尝试恢复
RMAN> recover database ; Starting recover at 08-NOV-12 using target database controlfile instead of recovery catalog allocated channel: ORA_DISK_1 channel ORA_DISK_1: sid=8 devtype=DISK starting media recovery unable to find archive log archive log thread=1 sequence=79 RMAN-00571: =========================================================== RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS =============== RMAN-00571: =========================================================== RMAN-03002: failure of recover command at 11/08/2012 08:12:48 RMAN-06054: media recovery requesting unknown log: thread 1 scn 12286829427051
测试证明rman也无法正常的恢复该异常问题
验证猜想
SQL> select name from v$archived_log where SEQUENCE#=79;
NAME
-------------------------------------------------------------------
/u01/oracle/oradata/lunar/arch/1_79.dbf
/u01/oracle/oradata/xifenfei/redo02.log
/u01/oracle/oradata/lunar/arch/1_79.dbf
SQL> select dest_id,name from v$archived_log where SEQUENCE#=79;
DEST_ID NAME
---------- ---------------------------------------------------
2 /u01/oracle/oradata/lunar/arch/1_79.dbf
1 /u01/oracle/oradata/xifenfei/redo02.log
1 /u01/oracle/oradata/lunar/arch/1_79.dbf
SQL> select sequence#,group# from v$log;
SEQUENCE# GROUP#
---------- ----------
86 1
85 2
87 3
SQL> select member from v$logfile where group#=2;
MEMBER
---------------------------------------------------------------
/u01/oracle/oradata/xifenfei/redo02.log
通过查询上面相关视图,证实了猜想是因为redo log被注册进入了v$archived_log导致该故障,解决该问题的思路是把redo log file从备库控制文件的v$archived_log视图中拿掉.具体方法是:
1.如果主库正常,那直接生成standby controlfile来实现
2.如果主库也是相同情况,那么先重建主库控制文件,然后重建standby controlfile来实现(该方法需要维护窗口)
解决问题思路
--查询主库,确定主库正常 SQL> select name from v$archived_log where SEQUENCE#=79; NAME ------------------------------------------------------------ /u01/oracle/oradata/xifenfei/archive/1_79.dbf lunar --重新创建standby controlfile ############################################################### 注:如果主库和备库的数据文件路径不完全一致, 建议通过设置db_file_name_convert来直接实现备库数据文件路径的转换, 而不建议通过alter database rename file来实现重命名 ############################################################### SQL> ALTER DATABASE CREATE STANDBY CONTROLFILE AS 2 '/u01/oracle/oradata/lunar/control01.ctl' reuse; Database altered. --重新启动备库 SQL> startup nomount; ORACLE instance started. Total System Global Area 353441008 bytes Fixed Size 451824 bytes Variable Size 184549376 bytes Database Buffers 167772160 bytes Redo Buffers 667648 bytes SQL> alter database mount standby database; Database altered. --开启日志应用 SQL> alter database recover managed standby database disconnect from session; Database altered. --alert日志 Thu Nov 8 08:28:16 2012 Completed: alter database recover managed standby database di Thu Nov 8 08:28:20 2012 Restarting dead background process QMN0 QMN0 started with pid=13 Thu Nov 8 08:29:45 2012 Fetching gap sequence for thread 1, gap sequence 79-87 Trying FAL server: xifenfei Media Recovery Log /u01/oracle/oradata/lunar/arch/1_79.dbf Media Recovery Log /u01/oracle/oradata/lunar/arch/1_80.dbf Media Recovery Log /u01/oracle/oradata/lunar/arch/1_81.dbf Media Recovery Log /u01/oracle/oradata/lunar/arch/1_82.dbf Media Recovery Log /u01/oracle/oradata/lunar/arch/1_83.dbf Media Recovery Log /u01/oracle/oradata/lunar/arch/1_84.dbf Media Recovery Log /u01/oracle/oradata/lunar/arch/1_85.dbf Media Recovery Log /u01/oracle/oradata/lunar/arch/1_86.dbf Media Recovery Log /u01/oracle/oradata/lunar/arch/1_87.dbf Media Recovery Log /u01/oracle/oradata/lunar/arch/1_88.dbf Media Recovery Waiting for thread 1 seq# 89
发表在 Data Guard
一条评论
使用dbms_pumpdata执行expdp操作
使用dbms_pumpdata执行expdp操作
set serverout on
declare
h1 number; -- Datapump handle
dir_name varchar2(30); -- Directory Name
job_status VARCHAR2(30);
begin
dir_name := 'DATA_PUMP_DIR';
h1 := dbms_datapump.open(
operation =>'EXPORT', --是export还是impport
--导出表配置
job_mode =>'TABLE', --job_mode可以为SCHEMA/TABLE等
--导出用户配置
job_mode =>'SCHEMA',
remote_link => NULL, --是否使用dblink导出(就是NETWORK_LINK)
job_name =>'TABLE_XFF' --job_name expdpjob的名称
);
dbms_datapump.add_file(handle =>h1,
filename => 'XIFENFEI.DMP',
directory => dir_name,
filetype => DBMS_DATAPUMP.KU$_FILE_TYPE_DUMP_FILE,
reusefile => 1); -- value of 1 instructs to overwrite existing file
dbms_datapump.add_file(handle =>h1,
filename => 'XIFENFEI.LOG',
directory => dir_name,
filetype => DBMS_DATAPUMP.KU$_FILE_TYPE_LOG_FILE,
reusefile => 1);
--导出表配置
dbms_datapump.metadata_filter(handle =>h1,
name => 'TABLE_FILTER',
value => 'CHF.T_XIFENFEI');
--导出用户配置
dbms_datapump.metadata_filter (handle => dp_handle,
name => 'SCHEMA_EXPR',
value => 'IN (''CHF'')');
-- Start the job.
dbms_datapump.start_job(h1);
dbms_datapump.wait_for_job (handle => dp_handle,
job_state => job_status);
dbms_output.put_line ('DataPump Export - '||to_char(sysdate,'DD/MM/YYYY HH24:MI:SS')||' Status '||job_status);
begin
dbms_datapump.detach(handle => h1);
end;
end;
/

加我微信(17813235971)
加我QQ(107644445)

