Oracle 19c 单实例adg 一主一备搭建
首次搭建oracle adg,整理了搭建主备的步骤及遇到的问题
主库配置
开启主库监听
lsnrctl start
开启归档模式
--先查看当前的归档模式
archive log list;
--当 database log mode显示为no archive mode即为已经需要开启归档,请按照如下操作步骤开启归档
shutdown immediate
startup mount;
--创建归档日志文件目录
mkdir -p /data3/archivedata
--设置归档文件并开启归档
alter system set log_archive_dest_1='/data3/archivedata';
alter database archivelog;
alter database open;
确保主库 force logging mode
alter database force logging;
SQL> select force_logging from v$database;
FORCE_LOGGING
---------------------------------------
YES
拷贝主库密码文件到备库
scp $ORACLE_HOME/dbs/orapworcl oracle@103.163.8.155:$ORACLE_HOME/dbs/orapworcldg
配置tnsnames.ora并拷贝到备库
# tnsnames.ora Network Configuration File: /data/oracle/oracle/db/product/19.4/n
etwork/admin/tnsnames.ora
# Generated by Oracle configuration tools.
LISTENER_ORCL =
(ADDRESS = (PROTOCOL = TCP)(HOST = 103.163.8.157)(PORT = 1521))
ORCL =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST =103.163.8.157 )(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = orcl)
)
)
ORCLDG =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST =103.163.8.155 )(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = orcldg)
)
)
--将tnsnames.ora
scp tnsnames.ora传到备库
tnsnames.ora 103.163.8.155:/data/oracle/db/product/19.3/network/admin
到备库后修改LISTENER_ORCL的host值
# tnsnames.ora Network Configuration File: /data/oracle/oracle/db/product/19.4/network/admin/tnsnames.ora
# Generated by Oracle configuration tools.
LISTENER_ORCL =
(ADDRESS = (PROTOCOL = TCP)(HOST = 103.163.8.155)(PORT = 1521))
ORCL =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST =103.163.8.157 )(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = orcl)
)
)
ORCLDG =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST =103.163.8.155 )(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = orcldg)
)
)
主库中创建pfile文件,并传到备库中
SQL> create pfile='/home/oracle/mespfile.ora' from spfile;
File created.
cd /home/oracle
scp mespfile.ora 103.163.8.155:/home/oracle
在主库中增加参数
alter system set log_archive_config='DG_CONFIG=(orcl,orcldg)' scope=both;
alter system set log_archive_dest_2='SERVICE=orcldg async lgwr valid_for=(online_logfiles,primary_role) db_unique_name=orcldg' scope=both;
alter system set fal_server=orcldg scope=both;
alter system set fal_client=orcl scope=both;
alter system set standby_file_management=auto scope=both;
主库做全备,并拷贝至备库
创建存放备份文件的目录
mkdir -p /data3/backup
rman全备
rman target /
run{
allocate channel c1 device type disk;
allocate channel c2 device type disk;
backup database format '/data3/backup/backdata_%d_%T_%U.bak';
sql 'alter system archive log current';
backup archivelog all format '/data3/backup/archlog_%d_%T_%U.bak';
backup current controlfile format '/data3/backup/cntrl_%s_%p_%s.bak';
release channel c1;
release channel c2;
}
执行备份过程中报如下错误
--执行rman备份报RMAN-03009 ORA-19502
RMAN-03009: failure of backup command on c1 channel at 01/09/2024 11:02:54
ORA-19502: write error on file "/data/oracle/oracle/backup/backdata_ORCL_20240109_142g57o9_1_1.bak", block number 3560576 (block size=8192)
ORA-27072: File I/O error
Additional information: 4
Additional information: 3560576
Additional information: 565248
channel c1 disabled, job failed on it will be run on another channel
released channel: c1
released channel: c2
RMAN-00571: ===========================================================
RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ===============
RMAN-00571: ===========================================================
RMAN-03009: failure of backup command on c2 channel at 01/09/2024 11:02:57
ORA-19502: write error on file "/data/oracle/oracle/backup/backdata_ORCL_20240109_132g57n6_1_1.bak", block number 5339904 (block size=8192)
ORA-27072: File I/O error
Additional information: 4
Additional information: 5339904
Additional information: 430080
上述问题是由于磁盘空间不够导致rman备份失败。在新的目录创建备份目录并重新执行命令,备份正常
[oracle@jcyjs4 oracle]$ rman target /
Recovery Manager: Release 19.0.0.0.0 - Production on Tue Jan 9 11:27:30 2024
Version 19.3.0.0.0
Copyright (c) 1982, 2019, Oracle and/or its affiliates. All rights reserved.
connected to target database: ORCL (DBID=1573120881)
RMAN> run{
2> allocate channel c1 device type disk;
allocate channel c2 device type disk;
backup database format '/data3/backup/backdata_%d_%T_%U.bak';
sql 'alter system archive log current';
backup archivelog all format '/data3/backup/archlog_%d_%T_%U.bak';
3> 4> 5> 6> 7> backup current controlfile format '/data3/backup/cntrl_%s_%p_%s.bak';
release channel c1;
8> 9> release channel c2;
10> }
using target database control file instead of recovery catalog
allocated channel: c1
channel c1: SID=3632 device type=DISK
allocated channel: c2
channel c2: SID=3874 device type=DISK
Starting backup at 2024-01-09 11:27:46
channel c1: starting full datafile backup set
channel c1: spec