先从上一篇容灾看起,先安装单实例dg,所以主库一些前置操作在上一篇完成了
要求
操作系统:Oracle Linux 7.6x86_64
数据库架构:Oracle 19c RAC+dataguard
源数据库:Oracle19c RAC(itpuxdb)
源库库IP :192.168.238.10/11/12
目标库IP:192.168.238.13 (备库)
oracle数据库运行环境准备
1.准备4台主机 (3RAC)
2.安装4个Linux系统
3.下载Oracle19c版本
oracle19c DG环境准备过程
配置hosts
echo "192.168.238.10 p19c01">>/etc/hosts
echo "192.168.238.11 p19c02">>/etc/hosts
echo "192.168.238.12 p19c03">>/etc/hosts
echo "192.168.238.13 p19c04">>/etc/hosts
关闭防火墙
systemctl stop firewalld.service
systemctl disable firewalld.service
配置目录
umount /oracle
mkdir /opt/oracle
mount /dev/sad3 /opt/oracle
vi /etc/fstab
mount /dev/sda3 /opt/oracle xfs defaults 0 0
配置yum环境
最好网上搜一下yum网络源配置
这个视频学的
mkdir /mnt/linux
mount /dev/cdrom /mnt/linux
cd /etc/yum.repos.d
mkdir bk
mv *.repo bk/
echo "[EL]">>/etc/yum.repos.d/itpux.repoecho "name =Linux7.xDVD">>/etc/yum.repos.d/itpux.repo
echo "baseurl=file:///mnt/linux">>/etc/yum.repos.d/itpux.repo
echo "gpgcheck=0">>/etc/yum.repos.d/itpux.repoecho "enabled=1">>/etc/yum.repos.d/itpux.repo
cat /etc/yum.repos.d/itpux.repo
准备预先先安装的包:
rpm -ivh oracle-database-preinstall-19c-1.0-1.el7.x86_64.rpm
Oracle Linux 7 (x86_64) Latest | Oracle, Software. Hardware. Complete.(下载连接)
根据提示安装所需要的包:
yum -y install compat-libstdc++-33 ksh libaio-devel
修改密码
passwd oracle
手工目录授权
chown -R oracle:oinstall /opt/oracle
chmod -R 775 /opt/oracle
安装oracle-database-server:
rpm -ivh oracle-database-ee-19c-1.0-1.x86_64.rpm
检查环境:
su-oracle
ps -ef|grep smon
echo $ORACLE HOME
Isnrctl status
环境变量配置:
su - oralce
echo "export LANG=en_US" >> ~/.bash_prefile
echo "export ORACLE_BASE=/opt/oracle" >> ~/.bash_prefile
echo "export ORACLE_HOEM=$ORACLE_BASE/product/19c/dbhome_1" >> ~/.bash_prefile
echo "export ORACLE_UNQNAME=itpuxdg" >> ~/.bash_prefile
echo "export ORACLE_SID=itpuxdb1" >> ~/.bash_prefile
echo "export NLS_LANG=AMERICAN_AMERICA.ZHS16GBK;export NLS_LANG" >> ~/.bash_prefile
echo "exoprt PATH=.:$PATH:$HOME:/bin:$ORACLE_HOME/bin" >> ~/.bash_prefile
source ~/.bash_profile
env |grep ORACLE
准备备库监听配置(70)
vi /opt/oracle/product/19c/dbhome_1/network/admin/listener.ora
LISTNER =
(DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = 备库主机名)(PORT = 1521)
(ADDRESS = (PROTOCOL = TCP)(KEY = EXTPROC1521)
)
SID_LIST_LISTENER=
(SID_LIST =
(SID_DESC =
(GLOBAL_DBNAME = itpuxdg)
(SID_NAME = itpuxdg)
(ORACLE_HOME = /opt/oracle/product/19c/dbhome_1)
)
)
oracle19c RAC DG 创建过程
主库配置
01.enable force logging
alter database force logging;
02.enable archivelog mode
alter system set cluster_database=false scope=spfile
alter system set db_recovery_file_dest_size=10g;
alter system set db_recovery_file_dest='+data';
startup mount;
alter database archivelog;
alter system set cluster_database=true scope=spfile
alter database open;
03.create standby redolog
alter database add standby logfile thread 1 group 5 '+data' size 200M;
alter database add standby logfile thread 1 group 6 '+data' size 200M;
alter database add standby logfile thread 1 group 7 '+data' size 200M;
alter database add standby logfile thread 1 group 8 '+data' size 200M;
alter database add standby logfile thread 1 group 9 '+data' size 200M;
alter database add standby logfile thread 2 group 10 '+data' size 200M;alter database add standby logfile thread 2 group 11 '+data' size 200M;
alter database add standby logfile thread 2 group 12 '+data' size 200M;
alter database add standby logfile thread 2 group 13 '+data' size 200M;
alter database add standby logfile thread 2 group 14'+data' size 200M;
主备库监听tnsnames.ora:
vi /opt/oracle/product/19c/dbhome_1/network/admin/tnsnames.ora
itpuxdb =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.65)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVER_NAME = itpuxdb)
)
)
备库
itpuxdg =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.70)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVER_NAME = itpuxdg)
)
)
准备备库密码文件
cd /opt/oracle/product/19c/dbhome_1/dbs
orapwd FILE=orapwitpuxdg password=ITPUX-123 FORMAT=12.2
登录
sqlplus "sys/ITPUX-123@itpuxdg as sysdba"
主库
create pfile='/opt/oracle/pfile.ora' from spfile;
主库参数(重启生效)(itpuxdb主库 itpuxdg备库)
alter system set db_unique_name='itpuxdb' scope=spfile;
alter system set LOG_ARCHIVE_CONFIG='DG _CONFIG=(itpuxdb,itpuxdg)’scope=both;
alter system set LOG_ARCHIVE_DEST_1='LOCATION=USE_DB_RECOVERY_FILE_DEST
VALID_FOR=(ALL_LOGFILES,ALL_ROLES)DB_UNIQUE_NAME=itpuxdb' scope=both;
alter system set LOG_ARCHIVE_DEST_2='SERVICE=itpuxdg LGWR ASYNC
VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=itpuxdgscope=both;
alter system set fal_client='itpuxdb' scope=both;
alter system set FAL_SERVER='itpuxdg' scope=both;
alter system set DB_FILE_NAME_CONVERT='/opt/oracle/oradata/ITPUXDG','+data/itpuxdb' scope=spfile sid='*';
alter system set LOG_FILE_NAME_CONVERT='/opt/oracle/oradata/ITPUXDG','+data/itpuxdb' scope=spfile sid='*';
alter system set standby_file_management=AUTO scope=both;
备库参数
db_unique _name='itpuxdg'
LOG_ARCHIVE_CONFIG='DG CONFIG=(itpuxdg,itpuxdb)'
LOG_ARCHIVE_DEST_1='LOCATION=USE_DB_RECOVERY_FILE_DEST
VALID_FOR=(ALL_LOGFILES,ALL_ROLES) DB_UNIQUE_NAME=itpuxdg
LOG_ARCHIVE_DEST_2='SERVICE=itpuxdb LGWR ASYNC
VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE _NAME=itpuxdb
fal_client='itpuxdg'
FAL_SERVER='itpuxdb'
DB_FILE_NAME_CONVERT='+data/itpuxdb','/opt/oracle/oradata/ITPUXDG'
LOG_FILE_NAME_CONVERT='+data/itpuxdb',"/opt/oracle/oradata/ITPUXDG
standby_file_management=AUTO
db_recovery_file_dest_size=10737418240
db_recovery file_dest='/opt/oracle'
oracle19c RAC DG创建过程
mkdir -p /opt/oracle/app/oracle/admin/itpuxdg/adump
mkdir -p /opt/oracle/oradata/ITPUXDG
mkdir -p /opt/oracle/oradata/ITPUXDG/datafile
mkdir -p /opt/oracle/oradata/ITPUXDG/onlinelog
mkdir -p /opt/oracle/oradata/ITPUXDG/tempfile
启动到nomunt;
sqlplus "sys/ITPUX-123@itpuxdg as sysdba"
startup pfile='/opt/oracle/pfile.ora' nomount;
create spfile from pfile='/opt/oracle/pfile.ora';
shutdown immediate;
startup nomount;
创建dataguard数据库
rman target sys/ITPUX-123@itpuxdb auxiliary sys/ITPUX-123@itpuxdgduplicate target database for standby from active database;
检查测试
检查dataguard状态:
select NAME,OPEN_MODE,PROTECTION_MODE,DATABASE_ROLE,SWITCHOVER_STATUS
from v$database;
启动dataguard数据同步
sqlplus "/as sysdba"
alter database recover managed standby database disconnect from session
关闭dataguard数据同步:
alter database recover managed standby database cancel;
启动adg模式的备库
alter database open;
alter database recover managed standby database disconnect from session;
主库测试:
alter system switch logfile;
主备库检查dataguard状态:
SELECT UNIQUE THREAD#, MAX(SEQUENCE#) OVER(PARTITION BY THREAD#) LAST
FROM V$ARCHIVED_LOG;
dataguard数据同步测试
主库:
create tablespace fgedu66 datafile '+data' size 10m autoextend off;
create user fgedu66 identified by fgedu66 default tablespace fgedu66;
grant dba to fgedu66;
conn fgedu66/fgedu66
create table fgedu66.itpux01(c1 varchar2(10),c2 number);
insert into itpux01 values('itpux01','1');
insert into itpux01 values('itpux02','2');
commit;
select * from fgedu66.itpux01;
alter system switch logfile;
备库检查:
select *from fgedu66.itpux01;
检查dataguard状态:
SELECT UNIQUE THREAD#, MAX(SEQUENCE#) OVER(PARTITION BY THREAD#) LAST
FROM V$ARCHIVED_LOG;
检查dataguard日志
tail -100f /opt/oracle/diag/rdbms/itpuxdg/itpuxdb/trace/alert _itpuxdg.log
tail -100f /opt/oracle/app/oracle/diag/rdbms/itpuxdb/itpuxdb1/trace/alert _itpuxdb1.log