Oracle19c ADG搭建

一、环境配置

1、主机环境

类型主机名IP
主库p19c192.168.229.150
备库p19cstd192.168.229.151

这里选择做两个19c单机环境

tip:数据库服务名与主机名一致

  • 19c的安装可以参考以下教程,教程是以p19c为例,在安装p19cstd时,需要将所有的p19c替换成p19cstd
    Oracle 19c静默安装教程

2、host文件配置

配置hostname:

# 主库
hostnamectl set-hostname p19c
# 备库
hostnamectl set-hostname p19cstd

配置hosts文件:

cat <<EOF>>/etc/hosts
#Public IP
192.168.229.150     p19c
192.168.229.151     p19cstd
EOF

二、主库配置

1、 开启归档

  • 查看oracle归档状态
archive log list

在这里插入图片描述

  • 关闭数据库,并启动到mount状态
shutdown immediate;
startup mount;

在这里插入图片描述

  • 修改归档位置
mkdir -p /u01/app/archive
chown -R oracle:oinstall /u01/app/
# 在sql中执行,修改归档位置
alter system set log_archive_dest_1='location=/u01/app/archive';

在这里插入图片描述
在这里插入图片描述

  • 启用归档模式和强制归档
alter database archivelog;
alter database force logging;
alter database open;

在这里插入图片描述

  • 查看修改后的归档状态
archive log list;

在这里插入图片描述

  • 切换在线日志,验证归档是否正常
alter system switch logfile;
!ls /u01/app/archive

在这里插入图片描述

2、redo日志

  • 查询现有redo日志的数量
select group#,type,member from v$logfile;

在这里插入图片描述

  • 查询现有redo日志的容量
select group#,bytes/1024/1024 as MB,status from v$log;

在这里插入图片描述

  • 创建standby日志组,容量要和redo相同,数量是redo当前数量+1
mkdir -p /u01/app/oradata/P19C
chown -R oracle:oinstall /u01/app/
alter database add standby logfile
  group 6 ('/u01/app/oradata/P19C/standby_redo04.log') size 200m reuse,
  group 7 ('/u01/app/oradata/P19C/standby_redo05.log') size 200m reuse, 
  group 8 ('/u01/app/oradata/P19C/standby_redo06.log') size 200m reuse, 
  group 9 ('/u01/app/oradata/P19C/standby_redo07.log') size 200m reuse;

在这里插入图片描述

  • 确认状态
select group#,status,used from v$standby_log;

在这里插入图片描述

3、传输口令文件和参数文件

root用户执行:

chown oracle:oinstall /opt

口令文件:

cd $ORACLE_HOME/dbs 
cp orapwp19c /opt/orapwp19cstd

参数文件:

sqlplus / as sysdba 
create pfile from spfile;
exit
cd $ORACLE_HOME/dbs
vim initp19c.ora

*.db_unique_name='p19c'
*.log_archive_config='dg_config=(p19c,p19cstd)'
*.fal_client='p19c'
*.fal_server='p19cstd'
*.log_archive_dest_1='LOCATION=/u01/app/archive valid_for=(all_logfiles,all_roles) db_unique_name=p19c'
*.log_archive_dest_2='service=p19cstd lgwr async valid_for=(online_logfiles,primary_role) db_unique_name=p19cstd'
*.log_archive_format='%t_%s_%r.arc'
*.db_file_name_convert='/u01/app/oradata/P19CSTD/','/u01/app/oradata/P19C/'
*.log_file_name_convert='/u01/app/oradata/P19CSTD/','/u01/app/oradata/P19C/'
STANDBY_FILE_MANAGEMENT=AUTO

在这里插入图片描述
启用新的参数文件:

备份之前的spfile

# 如果报错可能是没有opt下的创建文件的权限,给一下权限就好
create pfile='/opt/spfile.bak' from spfile;

在这里插入图片描述
启用新的

shutdown immediate;
create spfile from pfile;
startup;

在这里插入图片描述

传输文件到备库:
备库执行:

chown oracle:oinstall /opt

在这里插入图片描述

# 这一步报错一般也是目标服务器中ORACLE用户没有在opt下创建文件的权限
scp /opt/orapwp19cstd oracle@p19cstd:/opt
scp $ORACLE_HOME/dbs/initp19c.ora oracle@p19cstd:/opt/initp19cstd.ora

在这里插入图片描述

4、配置TNS文件

cd $ORACLE_HOME/network/admin/

netmgr,配置tns,监听

vim tnsnames.ora
LISTENER_P19C =
  (ADDRESS = (PROTOCOL = TCP)(HOST = p19c)(PORT = 1521))

P19C =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = p19c)(PORT = 1521))
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = p19c)
    )
  )

P19CSTD =
  (DESCRIPTION =
    (ADDRESS_LIST =
      (ADDRESS = (PROTOCOL = TCP)(HOST = p19cstd)(PORT = 1521))
    )
    (CONNECT_DATA =
      (SERVICE_NAME = p19cstd)
    )
  )

在这里插入图片描述

5、静态监听

cd $ORACLE_HOME/network/admin
vi listener.ora
LISTENER =
  (DESCRIPTION_LIST =
    (DESCRIPTION =
      (ADDRESS = (PROTOCOL = TCP)(HOST = p19c)(PORT = 1521))
      (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))
    )
  )

SID_LIST_LISTENER =
  (SID_LIST =
    (SID_DESC =
     (GLOBAL_DBNAME = p19c)
     (ORACLE_HOME = /u01/app/oracle/product/19.3.0)
     (SID_NAME = p19c)
    )
   )

监听重载

lsnrctl reload

在这里插入图片描述

  • 测试监听是否配资成功
tnsping p19c
tnsping p19cstd

在这里插入图片描述

三、备库配置

1、创建必要文件夹

mkdir -p /u01/app/archive
chown -R oracle:oinstall /u01/app/

mkdir -p /u01/app/oradata/P19CSTD
chown -R oracle:oinstall /u01/app/

mkdir -p /u01/app/oracle/admin/p19cstd/adump

2、配置参数文件

cd /opt
cp orapwp19cstd initp19cstd.ora $ORACLE_HOME/dbs

cd $ORACLE_HOME/dbs
vim initp19cstd.ora

*.audit_file_dest='/u01/app/oracle/admin/p19cstd/adump' 
*.control_files='/u01/app/oradata/P19CSTD/control01.ctl','/u01/app/oradata/P19CSTD/control02.ctl'  
*.db_unique_name='p19cstd' 
*.log_archive_config='dg_config=(p19cstd,p19c)' 
*.fal_client='p19cstd' 
*.fal_server='p19c' 
*.log_archive_dest_1='LOCATION=/u01/app/archive valid_for=(all_logfiles,all_roles) db_unique_name=p19cstd' 
*.log_archive_dest_2='service=p19c lgwr async valid_for=(online_logfiles,primary_role) db_unique_name=p19c' 
*.log_archive_format='%t_%s_%r.arc' 
*.db_file_name_convert='/u01/app/oradata/P19C/','/u01/app/oradata/P19CSTD/' 
*.log_file_name_convert='/u01/app/oradata/P19C/','/u01/app/oradata/P19CSTD/'


在这里插入图片描述
在这里插入图片描述

3、启动备库到nomount

export ORACLE_SID=p19cstd
sqlplus / as sysdba 
shutdown immediate
create spfile from pfile; 
startup nomount;

# 修改参数standby_file_management
alter system set standby_file_management=MANUAL;

在这里插入图片描述

4、配置TNS文件

cd $ORACLE_HOME/network/admin/

tnetmgr,配置tns,监听

vim tnsnames.ora
# 文件内容如下
LISTENER_P19CSTD =
  (ADDRESS = (PROTOCOL = TCP)(HOST = p19cstd)(PORT = 1521))

P19CSTD =
  (DESCRIPTION =
    (ADDRESS_LIST =
      (ADDRESS = (PROTOCOL = TCP)(HOST = p19cstd)(PORT = 1521))
    )
    (CONNECT_DATA =
      (SERVER = DEDICATED)	
      (SERVICE_NAME = p19cstd)
    )
  )


P19C =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = p19c)(PORT = 1521))
    (CONNECT_DATA =
      (SERVICE_NAME = p19c)
    )
  )

5、配置静态监听

cd $ORACLE_HOME/network/admin
vi listener.ora

# 文件内容如下
LISTENER =
  (DESCRIPTION_LIST =
    (DESCRIPTION =
      (ADDRESS = (PROTOCOL = TCP)(HOST = p19cstd)(PORT = 1521))
      (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))
    )
  )

SID_LIST_LISTENER =
  (SID_LIST =
    (SID_DESC =
     (GLOBAL_DBNAME = p19cstd)
     (ORACLE_HOME = /u01/app/oracle/product/19.3.0)
     (SID_NAME = p19cstd)
    )
   )

监听重载

lsnrctl reload

在这里插入图片描述

  • 测试监听是否配资成功
tnsping p19c
tnsping p19cstd

在这里插入图片描述

四、构建DG

1、验证监听

主库:

sqlplus sys/123@p19c as sysdba
sqlplus sys/123@p19cstd as sysdba

备库:

sqlplus sys/123@p19c as sysdba
sqlplus sys/123@p19cstd as sysdba

在这里插入图片描述

在这里插入图片描述

2、主库登入rman,复制数据库至备库

rman target sys/123@p19c auxiliary sys/123@p19cstd

构建备库

run {
allocate channel ch001 type disk;
allocate channel ch002 type disk;
allocate channel ch003 type disk;
allocate channel ch004 type disk;
allocate auxiliary channel ch005 type disk;
allocate auxiliary channel ch006 type disk;
duplicate target database for standby from active database nofilenamecheck using compressed backupset;
release channel ch001;
release channel ch002;
release channel ch003;
release channel ch004;
release channel ch005;
release channel ch006;
}

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

3、检验并开启实时同步

  • 备库执行
# 查询备库状态是否已经mount:
select open_mode from v$database;

在这里插入图片描述

# 打开备库
alter database open;

检查文件:

select name from v$datafile;

select name from v$tempfile;

select group#,type,member from v$logfile order by 2,1;

在这里插入图片描述
开启日志应用(即开启实时同步):

alter database recover managed standby database using current logfile disconnect;

检查数据同步状态:
通过判断transport lag和apply lag两个参数的DATUM_TIME值来判断备库是否在应用主库的日志文件
如果多次查询DATUM_TIME值保持不变,则说明备库已经停止从主库接收数据了

select name,value,TIME_COMPUTED,DATUM_TIME from v$dataguard_stats;

检查MRP进程状态:

select process,status from v$managed_standby;

查看数据库打开状态:
READ ONLY WITH APPLY代表ADG启动成功

select open_mode from v$database;

在这里插入图片描述
到这里已经完成了ADG的搭建了

4、测试同步

随便创建一个表,在插入一些数据,然后用备库查询看是否能查询到
注意:主库数据插入之后需要提交之后备库才能查看到

在这里插入图片描述
在这里插入图片描述
备库进行查看:
在这里插入图片描述
同步成功

  • 16
    点赞
  • 33
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
要在Oracle 19c搭建ADG(Active Data Guard),需要执行以下步骤: 1. 在主数据库上启用归档模式: ``` SQL> ALTER DATABASE ARCHIVELOG; ``` 2. 创建一个备用数据库的实例: ``` $ export ORACLE_SID=ORACLE_19C_ADG $ sqlplus / as sysdba SQL> CREATE SPFILE FROM PFILE; ``` 3. 将主数据库的备份复制到备用服务器上,并在备用服务器上还原备份: ``` $ scp /backup/maindb/* oracle@adg_server:/backup/adg/ $ cd /backup/adg/ $ unzip maindb_backup.zip $ export ORACLE_SID=ORACLE_19C_ADG $ rman target / RMAN> DUPLICATE DATABASE FOR STANDBY FROM ACTIVE DATABASE SPFILE SET db_unique_name='ORACLE_19C_ADG' SET LOG_ARCHIVE_DEST_2='SERVICE=ORACLE_19C ASYNC VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=ORACLE_19C' SET fal_client='ORACLE_19C' SET fal_server='ORACLE_19C_ADG' NOFILENAMECHECK; ``` 4. 配置主数据库的tnsnames.ora文件和备用数据库的tnsnames.ora文件,以便它们互相访问。 5. 在主数据库上创建一个log shipping连接,并将日志传输到备用数据库: ``` SQL> ALTER SYSTEM SET LOG_ARCHIVE_DEST_2='SERVICE=ORACLE_19C_ADG ASYNC VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=ORACLE_19C_ADG' SCOPE=BOTH; SQL> ALTER SYSTEM SET LOG_ARCHIVE_DEST_STATE_2=ENABLE SCOPE=BOTH; ``` 6. 在备用数据库上启用日志应用: ``` SQL> ALTER DATABASE RECOVER MANAGED STANDBY DATABASE DISCONNECT FROM SESSION; ``` 完成上述步骤后,ADG就已经搭建完成了。可以使用以下命令检查ADG的状态: ``` SQL> SELECT DATABASE_ROLE FROM V$DATABASE; ``` 如果返回的结果为“PHYSICAL STANDBY”,则表示ADG已经成功搭建

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

不会编程的喵星人

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

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

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

打赏作者

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

抵扣说明:

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

余额充值