目录
序言
本文详细描述了oracle数据库其中一项高可用性,叫做dataguard。这个功能实现了一个数据库的远程实时备份,我们当今在使用云平台上建虚拟机,你完全可以通过两台云上的虚拟机做到实时容灾,非常适用于中小型且采用oracle作为数据库的旧信息系统,通过这个技术,可以无需通过以前的软件开发商,自己把系统搬迁到云上的虚拟机,软件代码无需重新编译。
本文在介绍整个配置过程的同时,也引入一些oracle其他方面的小知识,并且会不定期更新,在这里每一条命令或脚本都是经常实际测试的。
实验部署环境
两台安装windows server 2016标准版,
主库(机器名win1,IP地址:192.168.5.210)安装oracle11g软件,并创建数据库,创建的数据库实例名为zzgd。tnsname.ora上连接串为primary,oracle软件安装路径为C:\oracle,zzgd实例安装路径为D:\oracle\oradata\zzgd,默认的快速闪回区路径为:C:\oracle\flash_recovery_area
备库(机器名windg,IP地址:192.168.5.211)安装oracle11g软件,不创建数据库。tnsname.ora上连接串为standby,oracle软件安装路径为C:\oracle。
一、主库配置
(一)设置归档模式
SQL>startup mount;
SQL>alter database archivelog;
SQL>alter database force logging;
SQL>alter database open;
小知识点:一些查询命令
SQL> Archive log list
数据库日志模式 存档模式
自动存档 启用
存档终点 C:\oracle\flash_recovery_area
最早的联机日志序列 6
下一个存档日志序列 8
当前日志序列 8
SQL> select log_mode,force_logging from v$database;
LOG_MODE FORCE_
------------------------ ------
ARCHIVELOG YES
#查看归档
SQL> show parameter db_recover
NAME TYPE VALUE
------------------------------------ ---------------------- ------------------------------
db_recovery_file_dest string C:\oracle\flash_recovery_area
db_recovery_file_dest_size big integer 3912M
SQL> show parameter log_archive
NAME TYPE VALUE
------------------------------------ ---------------------- ------------------------------
log_archive_config string
log_archive_dest string
log_archive_dest_1 string location=
C:\oracle\flash_recovery_area
log_archive_dest_state_9 string enable
log_archive_duplex_dest string
log_archive_format string ARC%S_%R.%T
NAME TYPE VALUE
------------------------------------ ---------------------- ------------------------------
log_archive_local_first boolean TRUE
log_archive_max_processes integer 4
log_archive_min_succeed_dest integer 1
log_archive_start boolean FALSE
log_archive_trace integer 0
SQL>
(二)创建备库standby的redo
SQL> select * from v$logfile order by group#;
alter database add standby logfile group 4 'D:\ORACLE\ORADATA\ZZGD\REDO04.LOG' size 50m;
alter database add standby logfile group 5 'D:\ORACLE\ORADATA\ZZGD\REDO05.LOG' size 50m;
alter database add standby logfile group 6 'D:\ORACLE\ORADATA\ZZGD\REDO06.LOG' size 50m;
alter database add standby logfile group 7 'D:\ORACLE\ORADATA\ZZGD\REDO07.LOG' size 50m;
(三)配置pfile参数文件
在sys用户下配置,使用show parameters可以验证,很多参数需要重启数据库
alter system set log_archive_config = 'DG_CONFIG=(primary,standby)' scope=spfile;
alter system set log_archive_dest_1 = 'LOCATION=C:\oracle\flash_recovery_area VALID_FOR=(ALL_LOGFILES,ALL_ROLES) DB_UNIQUE_NAME=primary' scope=spfile;
alter system set log_archive_dest_2 = 'SERVICE=standby LGWR SYNC VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=standby' scope=spfile;
alter system set log_archive_dest_state_1 = ENABLE;
alter system set log_archive_dest_state_2 = ENABLE;
alter system set fal_server=standby scope=spfile;
alter system set fal_client=primary scope=spfile;
alter system set standby_file_management=AUTO scope=spfile;
alter system set log_file_name_convert='D:\ORACLE\ORADATA\ZZGD','D:\ORACLE\ORADATA\ZZGD' scope=spfile;
alter system set db_file_name_convert='D:\ORACLE\ORADATA\ZZGD','D:\ORACLE\ORADATA\ZZGD' scope=spfile;
alter system set db_unique_name=primary;
#停止服务
shutdown immediate;
#启动服务
startup;
(四)导出参数的文件
#把参数文件导出到d盘,随便命名,但是后缀名要.ora
create pfile='d:\initora.ora' from spfile;
此文件详细打开列出下表,红色部分根据你的路径规则和命名方式不同,可以修改,如zzgd,你可以是orcl;primary,你可以是pri;standby,你可以是stdxxx。
zzgd.__db_cache_size=486539264 zzgd.__java_pool_size=16777216 zzgd.__large_pool_size=16777216 zzgd.__oracle_base='C:\oracle'#ORACLE_BASE set from environment zzgd.__pga_aggregate_target=503316480 zzgd.__sga_target=754974720 zzgd.__shared_io_pool_size=0 zzgd.__shared_pool_size=218103808 zzgd.__streams_pool_size=0 *.audit_file_dest='C:\oracle\admin\zzgd\adump' *.audit_trail='db' *.compatible='11.2.0.0.0' *.control_files='d:\oracle\oradata\zzgd\control01.ctl','C:\oracle\flash_recovery_area\zzgd\control02.ctl' *.db_block_size=8192 *.db_domain='' *.db_name='zzgd' *.db_recovery_file_dest='C:\oracle\flash_recovery_area' *.db_recovery_file_dest_size=4102029312 *.diagnostic_dest='C:\oracle' *.dispatchers='(PROTOCOL=TCP) (SERVICE=zzgdXDB)' *.db_unique_name=primary *.fal_client='PRIMARY' *.fal_server='STANDBY' *.local_listener='LISTENER_ZZGD' *.log_archive_config='DG_CONFIG=(primary,standby)' *.log_archive_dest_1='LOCATION=C:\oracle\flash_recovery_area VALID_FOR=(ALL_LOGFILES,ALL_ROLES) DB_UNIQUE_NAME=primary' *.log_archive_dest_2='SERVICE=standby LGWR SYNC VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=standby' *.log_archive_dest_state_1='ENABLE' *.log_archive_dest_state_2='ENABLE' *.log_file_name_convert='D:\ORACLE\ORADATA\ZZGD','D:\ORACLE\ORADATA\ZZGD' *.memory_target |