ITPub博客

首页 > 数据库 > Oracle > 【DATAGUARD】Oracle19c dataguard新特性及部署

【DATAGUARD】Oracle19c dataguard新特性及部署

原创 Oracle 作者:xysoul_云龙 时间:2020-03-14 08:51:20 2 删除 编辑

本次我们主要一起学习dataguard


新特性

oracle19c

  • 通过自动将还原点从主节点复制到备用节点,简化了将物理备用节点闪回在主节点上捕获的时间点的过程.
  • 在主数据库上执行闪回或时间点恢复时,处于mount模式的备用数据库可以自动遵循在主数据库上执行的相同恢复过程
  • 可以在活动数据防护备用数据库上同时启用 Oracle 数据库内存列存储和数据保护多实例重做应用。
  • DML操作可以在活动数据保护备用实例上执行。当在ADG备用数据库上运行无效的PL/SQL对象时,该对象将自动重新编译。
  • Fast-Start-Failover (FSFO) 新特性.主库挂了,备库快速启动
    oracle18c
  • 在角色更改期间,数据库缓冲区缓存状态现在保持在Oracle活动数据保护备用服务器上
  • 现在可以在Oracle Active Data Guard备用数据库上动态创建全局临时表.
  • 一个新的初始化参数ADG_ACCOUNT_INFO_TRACKING扩展了对用户帐户安全的控制,以防止登录攻击跨生产数据库和所有Oracle活动数据保护备用数据库。参见Oracle数据库参考
  • 一个新的视图V$DATAGUARD_PROCESS(替代V$MANAGED_STANDBY)提供了可查询的信息,以验证重做是否从主数据库传输并应用于备用数据库.
  • 私有临时表(也称为本地临时表)的元数据可以存储在内存中。这允许在只读数据库上启用专用临时表,从而允许报表应用程序在Oracle活动数据保护备用数据库上运行。
  • 数据库取消记录已扩展为两种新模式:用于负载性能的备库Nologging和用于数据可用性的Standby Nologging。这些模式为在Oracle活动数据保护环境中使用提供了更好的支持,而不会显著增加生成的重做量
  • 现在可以使用一个RMAN命令RECOVER standby database通过网络刷新备用数据库。
  • 对使用DBMS_ROLLING PL/SQL包执行的升级的Data Guard代理支持进行了增强。
  • 多实例重做应用现在支持块更改跟踪

部署

开启归档

select name,log_mode,force_logging from gv$database;
alter database force logging;
  • 从Oracle Database 18c开始,引入了以下两个新的nologging子句,它们可以执行非日志记录操作,同时可以使Active Data Guard备用数据库接收到所有数据,从而防止FORCE 方式生成大量重做日志导致性能下降。

  • ALTER DATABASE SET STANDBY NOLOGGING FOR DATA AVAILABILITY; —模式使批量加载操作通过其自身与备用数据库的连接将加载的数据发送到每个备用数据库。提交会延迟,直到所有Active Data Guard备用数据库通过 recover 方式将数据应用完成。

  • ALTER DATABASE SET STANDBY NOLOGGING FOR LOAD PERFORMANCE;
    —模式与先前的模式类似,不同之处在于,如果网络无法跟上数据加载到主数据库的速度,则加载过程可以停止将数据发送到备用数据库。在此模式下,备用数据库可能缺少数据,但每个Active Data Guard备用数据库都会在recover过程中自动从主数据库中提取数据。

primary 参数
show parameter db_unique_name
ALTER SYSTEM SET LOG_ARCHIVE_CONFIG='DG_CONFIG=(mydb19c,mydbdg)' SID='*';
ALTER SYSTEM SET LOG_ARCHIVE_DEST_1='LOCATION=/arch VALID_FOR=(ALL_LOGFILES,ALL_ROLES) DB_UNIQUE_NAME=mydb19c' SID='*';
ALTER SYSTEM SET LOG_ARCHIVE_DEST_2='SERVICE=mydbdg LGWR ASYNC REOPEN NET_TIMEOUT=300 VALID_FOR=(ONLINE_LOGFILE,PRIMARY_ROLE) DB_UNIQUE_NAME=mydbdg' SID='*';
alter system set LOG_ARCHIVE_DEST_STATE_1=enable;
alter system set LOG_ARCHIVE_DEST_STATE_2=enable;
ALTER SYSTEM SET STANDBY_FILE_MANAGEMENT =AUTO SID='*';
ALTER SYSTEM SET FAL_SERVER='MYDBDG' SID='*';
alter system set DB_FILE_NAME_CONVERT='/u01/app/oracle/oradata/MYDBDG','/u01/app/oracle/oradata/MYDB19C','/u01/app/oracle/oradata/MYDBDG','/u01/app/oracle/oradata/mypdb' scope=spfile;
alter system set LOG_FILE_NAME_CONVERT='/u01/app/oracle/oradata/MYDBDG','/u01/app/oracle/oradata/MYDB19C' scope=spfile; 
ALTER SYSTEM SET LOG_ARCHIVE_FORMAT='%t_%s_%r.arc' SCOPE=SPFILE;
ALTER SYSTEM SET LOG_ARCHIVE_MAX_PROCESSES=30;

添加 standby log

select group#,thread#,bytes/1024/1024,members from v$log;
col member for a50
select group#,member from v$logfile
alter database add standby logfile group 4 ('/u01/app/oracle/oradata/MYDB19C/stdbredo1.log') size 200m;
alter database add standby logfile group 5 ('/u01/app/oracle/oradata/MYDB19C/stdbredo2.log') size 200m;
alter database add standby logfile group 6 ('/u01/app/oracle/oradata/MYDB19C/stdbredo3.log') size 200m;
alter database add standby logfile group 7 ('/u01/app/oracle/oradata/MYDB19C/stdbredo4.log') size 200m;
--查看standby log
select group#,thread#,bytes/1024/1024,status from v$standby_log;

配置listener/tnsnames

--primary and standby
--vi $ORACLE_HOME/network/admin/tnsnames.ora
MYDB19C =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.80.216)(PORT = 1521))
    (CONNECT_DATA =
      (SERVICE_NAME = mydb19c)
      (UR = A)
  )  
 )
MYDBDG =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.80.217)(PORT = 1521))
    (CONNECT_DATA =
     (SERVICE_NAME = mydbdg)
     (UR = A)
   )  
 )
--standby vi $ORACLE_HOME/network/admin/listener.ora
SID_LIST_LISTENER =
  (SID_LIST =
    (SID_DESC =
      (GLOBAL_DBNAME = mydbdg)
        (ORACLE_HOME = /u01/app/oracle/product/19.0.0/dbhome_1)
      (SID_NAME = mydbdg)
    )  
  )

创建验证用户

create user c##dgmima identified by dgmima2019;
grant sysoper to c##dgmima;
alter system set redo_transport_user=c##dgmima sid='*';

拷贝相关文件

create pfile='/home/oracle/pfile2020.ora' from spfile;
scp /home/oracle/pfile2020.ora 192.168.80.217:/home/oracle
scp $ORACLE_HOME/dbs/orapwmydb19c 192.168.80.217:/u01/app/oracle/product/19.0.0/dbhome_1/dbs/orapwmydbdg

standby pfile,注意数据库唯一名

*.audit_file_dest='/u01/app/oracle/admin/mydbdg/adump'
*.audit_trail='none'
*.compatible='19.0.0'
*.control_files='/u01/app/oracle/oradata/MYDBDG/control01.ctl','/u01/app/oracle/oradata/MYDBDG/control02.ctl'
*.db_block_size=8192
*.db_file_name_convert='/u01/app/oracle/oradata/MYDB19C','/u01/app/oracle/oradata/MYDBDG','/u01/app/oracle/oradata/mypdb','/u01/app/oracle/oradata/MYDBDG'
*.db_files=200
*.db_name='MYDB19C'
*.db_unique_name='MYDBDG'
*.diagnostic_dest='/u01/app/oracle'
*.dispatchers='(PROTOCOL=TCP) (SERVICE=mydbdgXDB)'
*.enable_pluggable_database=true
*.fal_server='MYDB19C'
*.local_listener=''
*.log_archive_config='DG_CONFIG=(mydb19c,mydbdg)'
*.log_archive_dest_1='LOCATION=/arch VALID_FOR=(ALL_LOGFILES,ALL_ROLES) DB_UNIQUE_NAME=mydbdg'
*.log_archive_dest_2='SERVICE=mydb19c LGWR ASYNC REOPEN NET_TIMEOUT=300 VALID_FOR=(ONLINE_LOGFILE,PRIMARY_ROLE) DB_UNIQUE_NAME=mydb19c'
*.log_archive_dest_state_1='ENABLE'
*.log_archive_dest_state_2='ENABLE'
*.log_archive_format='%t_%s_%r.arc'
*.log_archive_max_processes=30
*.log_file_name_convert='/u01/app/oracle/oradata/MYDB19C','/u01/app/oracle/oradata/MYDBDG'
*.nls_language='AMERICAN'
*.nls_territory='AMERICA'
*.open_cursors=300
*.pga_aggregate_target=200m
*.processes=300
*.remote_login_passwordfile='EXCLUSIVE'
*.sga_target=1178m
*.standby_file_management='AUTO'
*.undo_tablespace='UNDOTBS1'

创建相关目录

mkdir -p /u01/app/oracle/admin/mydbdg/adump
mkdir -p /u01/app/oracle/oradata/MYDBDG

启动数据库

export ORACLE_SID=mydbdg
create spfile from pfile='/home/oracle/pfile2020.ora';
startup nomount;

开始复制数据库

rman target sys/oracle@mydb19c auxiliary sys/oracle@mydbdg
run {
allocate channel prmy1 type disk;
allocate channel prmy2 type disk;
allocate channel prmy3 type disk;
allocate channel prmy4 type disk;
allocate auxiliary channel stby1 type disk;
allocate auxiliary channel stby2 type disk;
allocate auxiliary channel stby3 type disk;
allocate auxiliary channel stby4 type disk;  
duplicate target database for standby from active database nofilenamecheck;
}

启动恢复进程

--备端启动恢复进程mrp0
alter database recover managed standby database using current logfile disconnect from session;
--备端查询是否有mrp0进程
select name,pid,role,action,group#,thread#,sequence#,delay_mins from v$dataguard_process;
--切换主库归档,观察备库归档日志同步是否正常。
alter system archive log current;
--关闭介质恢复的方法:
ALTER DATABASE RECOVER MANAGED STANDBY DATABASE CANCEL;
--启动数据库
alter database open;
alter pluggable database all open;

开启DML 重定向

--注意,备库如果不提交,主库及其他备库无法查看,备库可以查看。提交后都可以查看
ALTER SESSION ENABLE ADG_REDIRECT_DML;
--系统级别
alter system ENABLE ADG_REDIRECT_DML;

DG环境克隆数据库

克隆数据库必须为只读模式

远程克隆参考:
create database link <LINK_NAME> connect to system identified by xxxxxxxx using '<LINK_NAME>';
alter systm set STANDBY_PDB_SOURCE_FILE_DBLINK='db_link';
alter pluggable database <DB_NAME> open read only;
create pluggable database <DB_NAME> from <ALIAS>@<LINK_NAME>;

装载数据库

--装载,必须使用xml方式,参数才生效
--其他库卸载
alter pluggable database <PDB_NAME> unplug into '/home/oracle/<CDB_NAME>/<PDB_NAME>.xml';
backup as copy pluggable database <PDB_NAME> format '/backup/<PDB_NAME>';
--备库,设置以下参数,备端设置路径与主端原有文件一致
alter system set standby_pdb_source_file_directory='/backup/<PDB_NAME>';
--主库
create pluggable database <PDB_NAME> as clone using '/<PATH>/<PDB_NAME>.xml' copy;
--or
 create pluggable database <PDB_NAME> as clone using '/home/oracle/<CDB_NAME>/<PDB_NAME>.xml' copy source_file_directory='+sparse/<PATH>/DATAFILE';

参考

  • Using standby_pdb_source_file_dblink and standby_pdb_source_file_directory to Maintain Standby Databases when Performing PDB Remote Clones or Plugins (Doc ID 2274735.1)
  • Data Guard Impact on Oracle Multitenant Environments (Doc ID 2049127.1)

Fast-Start-Failover (FSFO) 新特性

需要配置《Data Guard Broker》 ,主备需开启闪回。请参考其他文档

pdb 故障迁移及切换

可参考

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/29487349/viewspace-2680148/,如需转载,请注明出处,否则将追究法律责任。

全部评论
主要从事数据库相关工作,其他操作系统、中间件等也有涉及,热衷分享、开源,支持国产,期待中华民族全面的伟大复兴。岁月老将至,如有幸在江湖中留点踪迹,也是欣慰。 【文盲筱烨】好读书爱运动的IT技术爱好者 微博:文盲筱烨 微信公众号:筱烨视点

注册时间:2014-02-15

  • 博文量
    179
  • 访问量
    784457