oracle 容灾库日常维护 ,健康检查脚本 以及常见问题分析

1.日常维护

1.停止Standby
select process, status from v$managed_standby; --查看备库是否在应用日志进行恢复
alter database recover managed standby database cancel;
shutdown immediate;
 
2.切换到只读模式
-----由shutdown模式切换到只读模式-------
startup nomount;
alter database mount standby database;
alter database open read only;
-----由应用日志模式切换到只读模式-------
alter database recover managed standby database cancel;-- 取消日志应用
alter database open read only;
 
3.切换回管理恢复模式
startup nomount;
alter database mount standby database;
alter database recover managed standby database disconnect from session;-- 启动日志应用
alter database recover managed standby database using current logfile disconnect from session;
 
4.主库和备库之间角色切换
4.1 主库切换为备库
alter database commit to switchover to physical standby;
alter database commit to switchover to physical standby with session shutdown;-- 主库有会话连接的时候
shutdown immediate
startup nomount;
alter database mount standby database;
alter database recover managed standby database disconnect from session;
 
4.2 从库切换为主库
alter database commit to switchover to primary;
shutdown immediate;
startup
alter system switch logfile;
 
5.备库自动使用主库传过来的日志进行恢复
alter database recover automatic standby database;
 
6.更改保护模式
alter database set standby database to maximize protection;
alter database set standby database to maximize availability;
alter database set standby database to maximize performancen;
 
7.取消自动恢复模式
alter database recover managed standby database cancel;
alter database recover managed standby database finish;
alter database recover managed standby database finish force;



转自:http://blog.csdn.net/robbie1314520/article/details/8267283

2. 检查脚本 check script:

Primary Site Script

===============================================================================

-- This script is to be run on the Primary of a Data Guard Physical Standby Site

set echo off
set feedback off
column timecol new_value tstamp
column spool_extension new_value suffix
select to_char(sysdate,'Mondd_hhmi') timecol from sys.dual;
column output new_value dbname
select value || '_' output from v$parameter where name = 'db_name';

-- Output the results to this file

spool dg_Primary_diag_&&dbname&&tstamp
set lines 132
set pagesize 500
set numformat 999999999999999
set trim on
set trims on

-- Get the current Date

alter session set nls_date_format = 'DD-MON-YYYY HH24:MI:SS';
set feedback on
select systimestamp from dual;

扫描二维码关注公众号,回复: 1558940 查看本文章

-- Primary Site Details
set heading off
set feedback off
select 'Primary Site Details' from dual;
select '********************' from dual;
set heading on
set feedback on

col db_unique_name format a15
col flashb_on format a10

select DB_UNIQUE_NAME,DATABASE_ROLE DB_ROLE,FORCE_LOGGING F_LOG,FLASHBACK_ON FLASHB_ON,LOG_MODE,OPEN_MODE,
GUARD_STATUS GUARD,PROTECTION_MODE PROT_MODE
from v$database;

-- Current SCN - this value on the primary and standby sites where real time apply is in place should be nearly the same

set heading off
set feedback off
select 'Primary Site last generated SCN' from dual;
select '*******************************' from dual;
set heading on
set feedback on

select DB_UNIQUE_NAME,SWITCHOVER_STATUS,CURRENT_SCN from v$database;

set heading off
set feedback off
select 'Standby Site last applied SCN' from dual;
select '*****************************' from dual;
set heading on
set feedback on

select DEST_ID, APPLIED_SCN FROM v$archive_dest WHERE TARGET='STANDBY';


-- Incarnation Information
--

set heading off
set feedback off
select 'Incarnation Destination Configuration' from dual;
select '*************************************' from dual;
set heading on
set feedback on

select INCARNATION# INC#, RESETLOGS_CHANGE# RS_CHANGE#, RESETLOGS_TIME, PRIOR_RESETLOGS_CHANGE# PRIOR_RS_CHANGE#, STATUS,FLASHBACK_DATABASE_ALLOWED FB_OK from v$database_incarnation;

-- Archivelog Destination Details
--

set heading off
set feedback off
select 'Archive Destination Configuration' from dual;
select '*********************************' from dual;
set heading on
set feedback on

-- Current Archive Locations
--

column host_name format a30 tru
column version format a10 tru
select INSTANCE_NAME,HOST_NAME,VERSION,ARCHIVER from v$instance;

column destination format a35 wrap
column process format a7
column archiver format a8
column dest_id format 99999999

select DEST_ID,DESTINATION,STATUS,TARGET,ARCHIVER,PROCESS,REGISTER,TRANSMIT_MODE
from v$archive_dest
where DESTINATION IS NOT NULL;

column name format a22
column value format a100
select NAME,VALUE from v$parameter where NAME like 'log_archive_dest%' and upper(VALUE) like 'SERVICE%';

set heading off
set feedback off
select 'Archive Destination Errors' from dual;
select '**************************' from dual;
set heading on
set feedback on

column error format a55 tru
select DEST_ID,STATUS,ERROR from v$archive_dest
where DESTINATION IS NOT NULL;

column message format a80
select MESSAGE, TIMESTAMP
from v$dataguard_status
where SEVERITY in ('Error','Fatal')
order by TIMESTAMP;

-- Redo Log configuration
-- The size of the standby redo logs must match exactly the size on the online redo logs

set heading off
set feedback off
select 'Data Guard Redo Log Configuration' from dual;
select '*********************************' from dual;
set heading on
set feedback on

select GROUP# STANDBY_GROUP#,THREAD#,SEQUENCE#,BYTES,USED,ARCHIVED,STATUS from v$standby_log order by GROUP#,THREAD#;

select GROUP# ONLINE_GROUP#,THREAD#,SEQUENCE#,BYTES,ARCHIVED,STATUS from v$log order by GROUP#,THREAD#;

-- Data Guard Parameters
--
set heading off
set feedback off
select 'Data Guard Related Parameters' from dual;
select '*****************************' from dual;
set heading on
set feedback on

column name format a30
column value format a100
select NAME,VALUE from v$parameter where NAME IN ('db_unique_name','cluster_database','dg_broker_start','dg_broker_config_file1','dg_broker_config_file2','fal_client','fal_server','log_archive_config','log_archive_trace','log_archive_max_processes','archive_lag_target','remote_login_password_file','redo_transport_user') order by name;


-- Redo Shipping Progress

set heading off
set feedback off
select 'Data Guard Redo Shipping Progress' from dual;
select '*********************************' from dual;
set heading on
set feedback on

select systimestamp from dual;

column client_pid format a10
select PROCESS,STATUS,CLIENT_PROCESS,CLIENT_PID,THREAD#,SEQUENCE#,BLOCK#,ACTIVE_AGENTS,KNOWN_AGENTS
from v$managed_standby order by CLIENT_PROCESS,THREAD#,SEQUENCE#;

host sleep 10

select systimestamp from dual;

select PROCESS,STATUS,CLIENT_PROCESS,CLIENT_PID,THREAD#,SEQUENCE#,BLOCK#,ACTIVE_AGENTS,KNOWN_AGENTS
from v$managed_standby order by CLIENT_PROCESS,THREAD#,SEQUENCE#;

host sleep 10

select systimestamp from dual;

select PROCESS,STATUS,CLIENT_PROCESS,CLIENT_PID,THREAD#,SEQUENCE#,BLOCK#,ACTIVE_AGENTS,KNOWN_AGENTS
from v$managed_standby order by CLIENT_PROCESS,THREAD#,SEQUENCE#;


set heading off
set feedback off
select 'Data Guard Errors in the Last Hour' from dual;
select '**********************************' from dual;
set heading on
set feedback on

select TIMESTAMP,SEVERITY,ERROR_CODE,MESSAGE from v$dataguard_status where timestamp > systimestamp-1/24;
spool off

================================================================================

Standby Site Script

================================================================================

-- This script is to be run on the Standby of a Data Guard Physical Standby Site

set echo off
set feedback off
column timecol new_value tstamp
column spool_extension new_value suffix
select to_char(sysdate,'Mondd_hhmi') timecol from sys.dual;
column output new_value dbname
select value || '_' output from v$parameter where name = 'db_name';

-- Output the results to this file

spool dg_Standby_diag_&&dbname&&tstamp
set lines 132
set pagesize 500
set numformat 999999999999999
set trim on
set trims on

-- Get the current Date

set feedback on
select systimestamp from dual;

-- Standby Site Details
set heading off
set feedback off
select 'Standby Site Details' from dual;
select '********************' from dual;
set heading on
set feedback on

col db_unique_name format a15
col flashb_on format a10

select DB_UNIQUE_NAME,DATABASE_ROLE DB_ROLE,FORCE_LOGGING F_LOG,FLASHBACK_ON FLASHB_ON,LOG_MODE,OPEN_MODE,
GUARD_STATUS GUARD,PROTECTION_MODE PROT_MODE
from v$database;

-- Current SCN - this value on the primary and standby sites where real time apply is in place should be nearly the same

select DB_UNIQUE_NAME,SWITCHOVER_STATUS,CURRENT_SCN from v$database;

-- Incarnation Information
--

set heading off
set feedback off
select 'Incarnation Destination Configuration' from dual;
select '*************************************' from dual;
set heading on
set feedback on

select INCARNATION# INC#, RESETLOGS_CHANGE# RS_CHANGE#, RESETLOGS_TIME, PRIOR_RESETLOGS_CHANGE# PRIOR_RS_CHANGE#, STATUS,FLASHBACK_DATABASE_ALLOWED FB_OK from v$database_incarnation;


set heading off
set feedback off
select 'Archive Destination Configuration' from dual;
select '*********************************' from dual;
set heading on
set feedback on
-- Current Archive Locations
--

column host_name format a30 tru
column version format a10 tru
select INSTANCE_NAME,HOST_NAME,VERSION,ARCHIVER from v$instance;

column destination format a35 wrap
column process format a7
column archiver format a8
column dest_id format 99999999

select DEST_ID,DESTINATION,STATUS,TARGET,ARCHIVER,PROCESS,REGISTER,TRANSMIT_MODE
from v$archive_dest
where DESTINATION IS NOT NULL;

column name format a22
column value format a100
select NAME,VALUE from v$parameter where NAME like 'log_archive_dest%' and upper(VALUE) like 'SERVICE%';

set heading off
set feedback off
select 'Archive Destination Errors' from dual;
select '**************************' from dual;
set heading on
set feedback on

column error format a55 tru
select DEST_ID,STATUS,ERROR from v$archive_dest
where DESTINATION IS NOT NULL;

column message format a80
select MESSAGE, TIMESTAMP
from v$dataguard_status
where SEVERITY in ('Error','Fatal')
order by TIMESTAMP;

-- Redo Log configuration
-- The size of the standby redo logs must match exactly the size on the online redo logs

set heading off
set feedback off
select 'Data Guard Redo Log Configuration' from dual;
select '*********************************' from dual;
set heading on
set feedback on

select GROUP# STANDBY_GROUP#,THREAD#,SEQUENCE#,BYTES,USED,ARCHIVED,STATUS from v$standby_log order by GROUP#,THREAD#;

select GROUP# ONLINE_GROUP#,THREAD#,SEQUENCE#,BYTES,ARCHIVED,STATUS from v$log order by GROUP#,THREAD#;

-- Data Guard Parameters
--
set heading off
set feedback off
select 'Data Guard Related Parameters' from dual;
select '*****************************' from dual;
set heading on
set feedback on

column name format a30
column value format a100
select NAME,VALUE from v$parameter where NAME IN ('db_unique_name','cluster_database','dg_broker_start','dg_broker_config_file1','dg_broker_config_file2','fal_client','fal_server','log_archive_config','log_archive_trace','log_archive_max_processes','archive_lag_target','remote_login_password_file','redo_transport_user') order by name;

-- Managed Recovery State

set heading off
set feedback off
select 'Data Guard Apply Status' from dual;
select '***********************' from dual;
set heading on
set feedback on

select systimestamp from dual;

column client_pid format a10
select PROCESS,STATUS,CLIENT_PROCESS,CLIENT_PID,THREAD#,SEQUENCE#,BLOCK#,ACTIVE_AGENTS,KNOWN_AGENTS
from v$managed_standby order by CLIENT_PROCESS,THREAD#,SEQUENCE#;

host sleep 10

select systimestamp from dual;

select PROCESS,STATUS,CLIENT_PROCESS,CLIENT_PID,THREAD#,SEQUENCE#,BLOCK#,ACTIVE_AGENTS,KNOWN_AGENTS
from v$managed_standby order by CLIENT_PROCESS,THREAD#,SEQUENCE#;

host sleep 10

select systimestamp from dual;

select PROCESS,STATUS,CLIENT_PROCESS,CLIENT_PID,THREAD#,SEQUENCE#,BLOCK#,ACTIVE_AGENTS,KNOWN_AGENTS
from v$managed_standby order by CLIENT_PROCESS,THREAD#,SEQUENCE#;


set heading off
set feedback off
select 'Data Guard Apply Lag' from dual;
select '********************' from dual;
set heading on
set feedback on

column name format a12
column lag_time format a20
column datum_time format a20
column time_computed format a20
SELECT NAME, VALUE LAG_TIME, DATUM_TIME, TIME_COMPUTED
from V$DATAGUARD_STATS where name like 'apply lag';

-- If there is a lag remove the comment for the select below
--SELECT * FROM V$STANDBY_EVENT_HISTOGRAM WHERE NAME = 'apply lag' AND COUNT > 0;

set heading off
set feedback off
select 'Data Guard Gap Problems' from dual;
select '***********************' from dual;
set heading on
set feedback on

select * from v$archive_gap;

set heading off
set feedback off
select 'Data Guard Errors in the Last Hour' from dual;
select '**********************************' from dual;
set heading on
set feedback on

select TIMESTAMP,SEVERITY,ERROR_CODE,MESSAGE from v$dataguard_status where timestamp > systimestamp-1/24;
spool off

3.############### 常见问题1

https://blog.csdn.net/huangliang0703/article/details/46558995

由dg中的db_file_name_convert参数不生效想到的db_file_create

 

-》 就是说,如果db_file_create这个参数有值,那么就是启用了omf(oracle的一种自动文件管理方式) 它的优先级要高于convert参数设置。

oracle搭建dg过程中涉及到一个参数db_file_name_convert

这个参数在备库库参数中是成对出现的,比如主库数据文件有两个路径

+DATA和+DATAA两个路径,'+DATA/orcl/datafile/user01.dbf',‘+DATAA/ocrl/datafile/user05.dbf''

本地路径为/oradata/orcl/datafile/

此时备库该参数这样写

alter system set DB_FILE_NAME_CONVERT='+DATA/orcl/datafile/','/oradata/orcl/datafile/', '+DATAA/orcl/datafile/','/oradata/orcl/datafile/', scope=spfile;    

设置完搭建测试dg备库日志同步没有问题,主库创建一个表空间,备库没有跟随生成,或者在一个其他位置$ORACLE_HOME/dbs下生成一个uname的文件

检查convert 参数没有问题,检查STANDBY_FILE_MANAGEMENT为auto

没有问题

后来查询oracle官方文档发现我的db_create_file='/u01....'

是这个参数在起作用。

就是说,如果db_file_create这个参数有值,那么就是启用了omf(oracle的一种自动文件管理方式)

它的优先级要高于convert参数设置。

另外在备库正常运行的过程中STANDBY_FILE_MANAGEMENT参数是auto;如果是维护状态要改为mananul,比如上面我要删掉那个uname的文件。

 
 
4、 ###############################
 

-》db_file_name_convert   在日常运维 生效 ,主库新加数据文件,备库也根据配置 增加数据文件位置

-》log_file_name_convert    在日常运维 不生效,主库新加日志文件, 备库不会根据配置 新加日志。

                                          只在搭建DG 环境时候,生效

分类: Oracle

2011-05-28 22:28:49

 
问题:今天就dataguard从库参数中的db_file_name_convert和log_file_name_convert两个参数的作用和别人争论了很久,只知道这两个参数用来转换路径,但是不知道具体怎么工作。

     回来后上网查这两个参数的具体作用,一无所获。看来只有靠自己,通过分析主从库的参数文件、控制文件,总结了一些结论。只是自己的结论,是否准确尚不知道,如果有错误,欢迎指出。
 
从库参数文件中db_file_name_convert和log_file_name_convert的作用:
 
下面通过跟踪恢复从库的过程来分析这两个参数文件的作用:
1.dataguard的主库完全备份数据库;

2.将主库的完全备份复制到从库的相应位置

3.恢复从库,下面到了最关键部分了

1>用主库的备份来恢复从库,可以想到从库恢复出来中的控制文件和主库的控制一样。但是我们要记住,主从库的数据文件路径、联机日志路径不同;如果从库恢复出的控制文件和主库的控制文件相同是绝对不行的。那怎么不呢?

2> 最关键的参数要用到了,那就是db_file_name_convert和log_file_name_convert
  从库通过主库的备份恢复控制文件---> 恢复控制文件时,oracle查看从库参数文件中的db_file_name_convert和log_file_name_convert参数---->将主库保存数据文件、联机日志的路径 转换成从库保存数据文件、联机日志的路径---->生成从库的控制文件
 
所以,db_file_name_convert和log_file_name_convert这两个参数像桥梁一样,来完成转换dataguard的主库和从库数据文件和联机日志保存路径不同的问题。

###########6

https://blog.csdn.net/surperping/article/details/7902267

第一步:查看standby同步情况,通过如下语句:select sequence#,applied from v$archived_log order by sequence#;

发现好几天的归档日志都没有应用。

第二步:查看告警日志,显示如下信息:

MRP0: Background Media Recovery process shutdown (kehudb)
Sat May 28 14:10:04 2011
Completed: alter database recover managed standby database disconnect from session
Sat May 28 14:10:13 2011
alter database recover managed standby database disconnect from session
Sat May 28 14:10:13 2011
Attempt to start background Managed Standby Recovery process (kehudb)
MRP0 started with pid=23, OS id=18081
Sat May 28 14:10:13 2011
MRP0: Background Managed Standby Recovery process started (kehudb)
Managed Standby Recovery not using Real Time Apply
MRP0: Background Media Recovery terminated with error 1111
Sat May 28 14:10:18 2011
Errors in file /u01/oracle/admin/kehudb/bdump/kehudb_mrp0_18081.trc:
ORA-01111: name for data file 10 is unknown - rename to correct file
ORA-01110: data file 10: '/u01/oracle/product/10.2.0/db/dbs/UNNAMED00010'
ORA-01157: cannot identify/lock data file 10 - see DBWR trace file
ORA-01111: name for data file 10 is unknown - rename to correct file
ORA-01110: data file 10: '/u01/oracle/product/10.2.0/db/dbs/UNNAMED00010'
Sat May 28 14:10:18 2011
Errors in file /u01/oracle/admin/kehudb/bdump/kehudb_mrp0_18081.trc:
ORA-01111: name for data file 10 is unknown - rename to correct file
ORA-01110: data file 10: '/u01/oracle/product/10.2.0/db/dbs/UNNAMED00010'
ORA-01157: cannot identify/lock data file 10 - see DBWR trace file
ORA-01111: name for data file 10 is unknown - rename to correct file
ORA-01110: data file 10: '/u01/oracle/product/10.2.0/db/dbs/UNNAMED00010'

以上问题主要是因为:Standby_file_management参数设置STANDBY_FILE_MANAGEMENT =MANUAL造成不会自动管理数据文件,比如主库增加了数据文件,备库不会自动增加,若设置为AUTO即可实现自动管理。

可以查看备库一下:

SQL>show parameter  Standby_file_management

 STANDBY_FILE_MANAGEMENT =MANUAL

可以通过如下语句在备库执行:

1)调整standby_file_management参数为AUTO
SQL> alter system set standby_file_management=auto;

第三步:

在这种故障场景下,我们可以通过调整数据文件的方法在备库端进行处理,查看主库和备库数据文件对比一下是否一致。

SQL> select name from v$datafile;

NAME
----------------------------------------------------------------------
/oradata/twwww01.dbf
/oradata/users01.dbf
/oradata/system01.dbf
/oradata/sysaux01.dbf
/u01/oracle/product/10.2.0/db/dbs/UNNAMED00010

通过以上参数设置后,还必须做如下处理才能解决以上问题

SQL> alter database create datafile  '/u01/oracle/product/10.2.0/db/dbs/UNNAMED00010' as '/oradata/twwww03.dbf';

Database altered.

猜你喜欢

转载自www.cnblogs.com/feiyun8616/p/9167724.html
今日推荐