千家信息网

Oracle12C 单实例dataguard配置

发表于:2026-11-03 作者:千家信息网编辑
千家信息网最后更新 2026年11月03日,Oracle用户环境变量配置:ORACLE_BASE=/orcl/app/oracleORACLE_HOME=$ORACLE_BASE/product/12.2.0/db_1ORACLE_SID=or
千家信息网最后更新 2026年11月03日Oracle12C 单实例dataguard配置

Oracle用户环境变量配置:


ORACLE_BASE=/orcl/app/oracle

ORACLE_HOME=$ORACLE_BASE/product/12.2.0/db_1

ORACLE_SID=orcl

export ORACLE_BASE ORACLE_HOME ORACLE_SID

PATH=$ORACLE_HOME/bin:$PATH

export PATH

export NLS_LANG=american_america.AL32UTF8


主库:


1. 将primary数据库设置为force logging模式

select force_logging from v$database;

alter database force logging;


2. 创建密码文件(如果没有)

orapwd file=$ORACLE_HOME/dbs/orapworcl password=syspassword entries=30;


3. 将主库至于归档模式

shutdown immediate;

startup mount;

alter database archivelog;

alter database open;


4. disabled selinux

cat /etc/selinux/config | grep 'SELINUX'


5. 配置standby redo log

select GROUP#,BYTES/1024/1024 size_M,STATUS,ARCHIVED from v$log; # 查询当前日志组大小


alter database add standby logfile group 4 ('/orcl/app/oracle/oradata/orcl/standbyrd01.log') size 200M;

alter database add standby logfile group 5 ('/orcl/app/oracle/oradata/orcl/standbyrd02.log') size 200M;

alter database add standby logfile group 6 ('/orcl/app/oracle/oradata/orcl/standbyrd03.log') size 200M;

alter database add standby logfile group 7 ('/orcl/app/oracle/oradata/orcl/standbyrd04.log') size 200M;


alter database drop standby logfile group 4; # 删除

select group#,thread#,sequence#,archived,status from v$standby_log; # 验证


6. 生成控制文件

alter database create standby controlfile as '/orcl/app/oracle/oradata/orcl/orcldg01.ctl';


7. 生成初始化参数文件

create pfile from spfile;


vi $ORACLE_HOME/dbs/initorcl.ora(添加以下内容)


*.log_file_name_convert='/orcl/app/oracle/oradata/orcl/','/orcl/app/oracle/oradata/orcl/'

*.db_unique_name='orcl1'

*.fal_client='orcl1'

*.fal_server='orcldg'

*.log_archive_config='DG_CONFIG=(orcl1,orcldg)'

*.log_archive_dest_1='LOCATION=/orcl/app/oracle/oradata/orcl/ VALID_FOR=(ALL_LOGFILES,ALL_ROLES) DB_UNIQUE_NAME=orcl1'

*.log_archive_dest_2='SERVICE=orcldg LGWR ASYNC VALID_FOR=(ALL_LOGFILES,PRIMARY_ROLES) DB_UNIQUE_NAME=orcldg'

*.log_archive_dest_state_1='ENABLE'

*.log_archive_dest_state_2='ENABLE'

*.standby_file_management='AUTO'

*.remote_login_passwordfile='EXCLUSIVE'

*.log_archive_format=%t_%s_%r.arc


create spfile from pfile='initorcl.ora'


8. 修改listener.ora文件

LISTENER =

(DESCRIPTION_LIST =

(DESCRIPTION =

(ADDRESS = (PROTOCOL = TCP)(HOST = nginx01)(PORT = 1521))

(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))

)

)


SID_LIST_LISTENER =

(SID_LIST =

(SID_DESC =

(GLOBAL_DBNAME = orcl)

(SID_NAME = orcl)

)

)


ADR_BASE_LISTENER=/orcl/app/oracle

9. 修改tnsnames.ora文件

ORCL =

(DESCRIPTION =

(ADDRESS = (PROTOCOL = TCP)(HOST = nginx01)(PORT = 1521))

(CONNECT_DATA =

(SERVER = DEDICATED)

(SERVICE_NAME = orcl)

)

)



ORCLDG =

(DESCRIPTION =

(ADDRESS = (PROTOCOL = TCP)(HOST = nginx01-dg)(PORT = 1521))

(CONNECT_DATA =

(SERVER = DEDICATED)

(SERVICE_NAME = orcldg)

)

)


10. shutdown immediate


11. 传输控制文件、初始化参数文件、监听文件、密码文件到备机

cd /orcl/app/oracle/product/12.2.0/db_1/network/admin

scp listener.ora nginx01-dg:/orcl/app/oracle/product/12.2.0/db_1/network/admin

scp tnsnames.ora nginx01-dg:/orcl/app/oracle/product/12.2.0/db_1/network/admin

scp sqlnet.ora nginx01-dg:/orcl/app/oracle/product/12.2.0/db_1/network/admin


cd /orcl/app/oracle/oradata/orcl

scp orcldg01.ctl nginx01-dg:/orcl/app/oracle/oradata/orcl/


cd /orcl/app/oracle/product/12.2.0/db_1/dbs

scp initorcl.ora nginx01-dg:/orcl/app/oracle/product/12.2.0/db_1/dbs/initorcl.ora

scp orapworcl nginx01-dg:/orcl/app/oracle/product/12.2.0/db_1/dbs/orapworcl


12. 在主库上RMAN备份恢复到standby:


1. 主库启动到mount状态,备库启动到nomount状态

2. rman target sys/abcd1234@orcl auxiliary sys/abcd1234@orcldg

3. duplicate target database for standby nofilenamecheck from active database; # 主备机目录一致使用nofilenamecheck参数


备库:


1. disabled selinux

cat /etc/selinux/config | grep 'SELINUX'


2. 创建目录

mkdir -p /orcl/app/oracle/oradata/orcl/

mkdir -p /orcl/app/oracle/admin/orcl/adump


3. 修改主库传过来的初始化参数文件initorcl.ora文件


*.control_files='/orcl/app/oracle/oradata/orcl/orcldg01.ctl','/orcl/app/oracle/oradata/orcl/orcldg02.ctl'

*.log_file_name_convert='/orcl/app/oracle/oradata/orcl/','/orcl/app/oracle/oradata/orcl/'

*.db_unique_name='orcldg'

*.fal_client='orcldg'

*.fal_server='orcl1'

*.log_archive_config='DG_CONFIG=(orcl1,orcldg)'

*.log_archive_dest_1='LOCATION=/orcl/app/oracle/oradata/orcl/ VALID_FOR=(ALL_LOGFILES,ALL_ROLES) DB_UNIQUE_NAME=orcldg'

*.log_archive_dest_2='SERVICE=orcl1 LGWR ASYNC VALID_FOR=(ALL_LOGFILES,PRIMARY_ROLES) DB_UNIQUE_NAME=orcl1'

*.log_archive_dest_state_1='ENABLE'

*.log_archive_dest_state_2='ENABLE'

*.standby_file_management='AUTO'

*.log_archive_format=%t_%s_%r.arc

*.remote_login_passwordfile='EXCLUSIVE


4. listener.ora和tnsnames.ora文件不用做任何修改


5. 启动(rman备份恢复完成后)


alter database mount standby database;

alter database open read only;

alter database recover managed standby database disconnect from session;

alter database set standby database to maximize availability;


6. 查询验证


select switchover_status,open_mode,database_role,db_unique_name,protection_mode,protection_level from v$database;

select SEQUENCE#,FIRST_TIME,NEXT_TIME ,APPLIED from v$archived_log order by 1;

select max(sequence#) from v$log;


7. 关机

alter database recover managed standby database cancel;

shutdown immediate;


文件 参数 配置 备份 密码 模式 状态 目录 控制 查询 生成 验证 一致 内容 变量 大小 数据 数据库 日志 环境 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 云之行互联网科技 新华互联网科技学校 美国互联网保险保险科技 今日互联网科技 华宇互联网科技 智网互联网科技 广州宏创互联网科技 佰商互联网科技有限公司 成都仁贤领冠互联网科技有限公司 互联网系的金融科技公司 互联网为啥属于高科技 崇明区互联网教育科技售后服务 本届互联网博览会上的黑科技 中国科技和美国互联网 悟空问答互联网科技 唐山双旺合互联网科技产业园 杭州融税互联网科技有限公司 互联网科技大会大佬 华人运通互联网科技公司 河南商务圈互联网科技有限公司 互联网加科技 广州百单互联网科技有限公司 安控科技rtu产品工业互联网 温州喔噻互联网科技有限公司 华服互联网科技官网 互联网科技和法律行业 朱啸虎曾投资哪些互联网科技企业 互联网科技包装股 普陀区互联网教育科技管理办法 互联网高科技行业有哪些企业
0