高可用性数据库方案DataGuard部署

DataGuard是甲骨文推出的一种高可用性数据库方案,是一种数据库级别的HA方案,最主要功能是容灾、数据保护、故障恢复等。

1,服务器资源-相同操作系统,硬件资源,安装Oracle
主服务器:xx.xx.xx.70
备服务器:xx.xx.xx.71

2,DB_UNIQUE_NAME区分主备库标识
db_unique_name: primary库(orcl)、standby库(orcls)

alter system set db_unique_name='orcls' scope=both;
show parameter db_unique_name

主服务器搭建测试数据库:taxtestdev

sqlplus / as sysdba
create tablespace taxtest datafile 'D:\app\administrator\oradata\orcl\taxtest.dbf' size 100m  autoextend on  next 50m maxsize unlimited  extent management local;
create user taxtestdev identified by FFF default tablespace taxtest temporary tablespace temp;
grant connect,resource,dba to taxtestdev;

3,配置监听器-略
4,配置tns文件
主库:

ORCLS=(DESCRIPTION =
        (ADDRESS_LIST =
            (ADDRESS = (PROTOCOL = TCP)(HOST = xx.xx.xx.71)(PORT = 1521))
        )
        (CONNECT_DATA =
          (SERVICE_NAME = ORCL)
        )
    )


备库:

ORCLS=(DESCRIPTION =
        (ADDRESS_LIST =
            (ADDRESS = (PROTOCOL = TCP)(HOST = xx.xx.xx.70)(PORT = 1521))
        )
        (CONNECT_DATA =
          (SERVICE_NAME = ORCL)
        )
    )
    


5,主库设置归档模式

shutdown immediate;
startup mount;
alter database archivelog;
alter database open;
archive log list;


设置数据库口令文件的使用模式

alter system set remote_login_passwordfile=EXCLUSIVE scope=spfile;
shutdown immediate;
startup;

6,授权处理

orapwd FILE=D:\app\administrator\product\11.2.0\dbhome_1\database\pwdorcl.ora password=pwdxxxx entries=5;


#将密钥文件传输到备库相同位置

7,创建与主库同样数量和大小的standby logfile
#查询主库

select thread#,group#,members,bytes/1024/1024 from v$log;


#备库创建standby logfile

alter database add standby logfile group 11('D:\app\administrator\oradata\orcl\redo01_stb.log') size 50M;
alter database add standby logfile group 12('D:\app\administrator\oradata\orcl\redo02_stb.log') size 50M;
alter database add standby logfile group 13('D:\app\administrator\oradata\orcl\redo03_stb.log') size 50M;
alter database add standby logfile group 14('D:\app\administrator\oradata\orcl\redo04_stb.log') size 50M;
select group#,thread#,sequence#,archived,status from v$standby_log;


显示格式,每行数据长度,每次显示的行数;

set linesize 300;
set pagesize 30;

8,参数设置
主库参数设置

alter system set log_archive_config='dg_config=(orcl,orcls)' scope=BOTH;
alter database set standby database to maximize availability;
alter system set LOG_ARCHIVE_DEST_1='LOCATION=D:\app\administrator\oradata\orcl\archivelog VALID_FOR=(ALL_LOGFILES,ALL_ROLES) db_unique_name=orcl' SCOPE=spfile;
alter system set log_archive_dest_2='SERVICE=orcls LGWR ASYNC VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) db_unique_name=orcls' SCOPE=spfile;
alter system set log_archive_dest_state_1=enable scope=spfile;


--启用日志传送

alter system set log_archive_dest_state_2=enable scope=spfile;
alter system set FAL_SERVER='orcl' SCOPE=spfile;
alter system set FAL_CLIENT='orcl' SCOPE=spfile;


--进程数

alter system set log_archive_max_processes=30 scope=both;


--自动文件管理模式

alter system set standby_file_management=auto scope=spfile;


--启用OMF功能:

alter system set db_create_file_dest='D:\app\administrator\oradata\orcl\archivelog' scope=spfile;


--主备文件存放路径转换

alter system set db_file_name_convert='D:\app\administrator\oradata\orcl','D:\app\administrator\oradata\orcl' scope=spfile;
alter system set log_file_name_convert='D:\app\administrator\oradata\orcl','D:\app\administrator\oradata\orcl' scope=spfile;


--配置取消延迟

ALTER DATABASE RECOVER MANAGED STANDBY DATABASE NODELAY;

备库参数设置

alter system set LOG_ARCHIVE_DEST_1='' SCOPE=spfile;
alter system set log_archive_dest_2='SERVICE=orcls LGWR ASYNC VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) db_unique_name=orcl' SCOPE=spfile;
alter system set log_archive_dest_state_1=enable scope=spfile;
alter system set log_archive_dest_state_2=enable scope=spfile;
alter system set FAL_SERVER='orcl' SCOPE=spfile;
alter system set FAL_CLIENT='orcl' SCOPE=spfile;
alter system set log_archive_max_processes=30 scope=both;
alter system set standby_file_management=auto scope=spfile;
alter system set db_create_file_dest='D:\app\administrator\oradata\orcl\archivelog' scope=spfile;
alter system set db_file_name_convert='D:\app\administrator\oradata\orcl','D:\app\administrator\oradata\orcl' scope=spfile;
alter system set log_file_name_convert='D:\app\administrator\oradata\orcl','D:\app\administrator\oradata\orcl' scope=spfile;
ALTER DATABASE RECOVER MANAGED STANDBY DATABASE NODELAY;

显示参数

show parameter log_archive_dest_state_2

9,复制数据库
备库进入nomount:

shutdown immediate;
startup nomount;


主库目录下cmd执行:
 

rman target sys/pwdxxxx@orcl auxiliary sys/pwdxxxx@orcls nocatalog
RMAN>
DUPLICATE TARGET DATABASE FOR STANDBY FROM ACTIVE DATABASE DORECOVER NOFILENAMECHECK;

10,备库启动实时应用

shutdown immediate
startup mount;
alter database recover managed standby database using current logfile disconnect from session;

ALTER DATABASE RECOVER MANAGED STANDBY DATABASE cancel;
ALTER DATABASE OPEN;
ALTER DATABASE RECOVER MANAGED STANDBY DATABASE USING CURRENT LOGFILE DISCONNECT FROM SESSION;


11,检查命令

set linesize 300
col name for a60


--查看主备库状态:

select database_role,open_mode from v$database;


--主备库检查当前日志序号一致

archive log list;


--切换日志检查是否同步

ALTER SYSTEM SWITCH LOGFILE;


--查询主备日志

select thread#,max(sequence#) from v$archived_log group by thread#;


--查询监控视图

select process,status,client_process,thread#,sequence# from v$managed_standby;


--检查同步进程执行情况

SELECT thread#, dest_id, gvad.status, error, fail_sequence FROM gv$archive_dest gvad, gv$instance gvi WHERE gvad.inst_id = gvi.inst_id AND destination is NOT NULL ORDER BY thread#, dest_id;


--检查alert日志文件
-----------------------------------------------------------------------------------------------------
测试脚本

create table taxtestdev.test as select level id,'lottu' name from dual connect by level <= 3;
select * from taxtestdev.test;

insert into taxtestdev.test(aa) values('55');
commit;
select * from taxtestdev.test;


-----------------------------------------------------------------------------------------------------
问题:alert日志中出现Private Strand Flush Not Complete的处理方法
处理:

alter system set db_writer_processes=4 scope=spfile;


-----------------------------------------------------------------------------------------------------
问题:ORA-00600[kcratr_scan_lastbwr]错误处理
处理:恢复文档

shutdown immediate
startup mount
recover database
alter database open


-----------------------------------------------------------------------------------------------------
问题:开启实时应用redo报错ora-01153
处理:

ALTER DATABASE RECOVER MANAGED STANDBY DATABASE cancel;
ALTER DATABASE OPEN;
ALTER DATABASE RECOVER MANAGED STANDBY DATABASE USING CURRENT LOGFILE DISCONNECT FROM SESSION;


-----------------------------------------------------------------------------------------------------
问题:ORA-16055: FAL request rejected问题出现,日志无法正常传输。
处理:检查log_archive_dest_2是否配置正确,网络是否畅通;
-----------------------------------------------------------------------------------------------------
问题:ORA-16047: DGID mismatch between destination setting and standby
处理:备库执行db_unique_name错误,修改

alter system set db_unique_name='orcls' scope=both;
show  parameter db_unique_name


重启数据库
-----------------------------------------------------------------------------------------------------
问题:ora-10456:cannot open standby database; media recovery session may be in progress
处理:备库执行

alter database recover managed standby database cancel;
ALTER DATABASE OPEN;
ALTER DATABASE RECOVER MANAGED STANDBY DATABASE USING CURRENT LOGFILE DISCONNECT FROM SESSION;


-----------------------------------------------------------------------------------------------------
问题:备库日志序号为0,备库日志无法接收,无法应用等
处理:主库执行,连接 RMAN 清空日志
删除所有归档日志

rman target /  
RMAN> crosscheck archivelog all;  
RMAN> DELETE ARCHIVELOG ALL COMPLETED BEFORE 'SYSDATE'; 

清除记录:
 

select count(*) from v$archived_log;
execute sys.dbms_backup_restore.resetCfileSection(11);
select count(*) from v$archived_log;

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

阿杰技术

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值