容灾:
创建一个备份数据库,当正在使用的数据库坏了,使用容灾技术,可以将备份数据库当成主数据库使用,(我当成克隆)
Oracle数据库运行环境准备(单机版dg 搭建)
1.准备2台主机
2.安装2个linux系统 (7.6 x86_64)
3.下载Oracle19c版本
后面还有rac搭建dg 所以空出两个ip 正好不需要更改配置文件的ip
ip | 主机名 | 主/备 |
192.168.238.10 | p19c01 | 主 |
192.168.238.13 | p19cdg | 备 |
Oracle19c DG环境准备
配置hosts文件
echo "ip 主机名" >> /etc/host (节点一)
echo "ip 主机名" >> /etc/host (节点二)
关闭防火墙(两节点)
systemctl stop firewalled.service
systemctl disable firewalled.service
配置目录(两节点)
umount /oracle
mkdir /opt/oracle (备)
mount /dev/sda1 /opt/oracle
vi /etc/fstab
mount /dev/sda1 /opt/oracle xfs defaults 0 0
配置yum环境
最好网上搜一下yum网络源配置
这个视频学的
mkdir /mnt/linux
mount /dev/cdrom /mnt/linux
cd /etc/yum.repos.d
mkdir br
mv *.repo bk/
echo "[EL]" >> /etc/yum.repos.d/itpux.repo
echo "name = Linux 7.x DVD" >> /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.repo
echo "enabled=1" >> /etc/yum.repos.d/itpux.repo
cat /etc/yum.repos.d/itpux.repo
准备预先安装的包:(备)
rpm -ivh oracle-database-preinstall-19c-1.0-1.e17.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-servrer:
rem -ivh oracle-database-ee-19c-1.0-1.x86_64.rpm
检查环境:
su - oracle
ps -ef|grep smon
echo $ORACLE_HOME
lsnrctl 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
准备备库监听配置
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 = 数据库名)
(SID_NAME = 数据库实例名)
(ORACLE_HOME = /opt/oracle/product/19c/dbhome_1)
)
)
oracle19c DB创建过程
01.enable force logging
alter database force logging;
02.enable archivelog mode
alter system set db_recovery_file_dest_size=10g;
alter system set db_recovery_file_dest='/opt/oracle';
startup mount;
alter database archivelog;
alter database open;
alter system swtch logfile;
03.create standby redolog
alter database add stan logfile group 4 '/opt/oracle/oradata/ITPUXDB/strdo04.log'
size 200m;
alter database add stan logfile group 5 '/opt/oracle/oradata/ITPUXDB/strdo05.log'
size 200m;
alter database add stan logfile group 6 '/opt/oracle/oradata/ITPUXDB/strdo06.log'
size 200m;
alter database add stan logfile group 7 '/opt/oracle/oradata/ITPUXDB/strdo07.log'
size 200m;
主备库监听tnsnames.ora :
vi /opt/oracle/product/19c/dbhome_1/network/admin/tnsnames.ora
itpuxdb =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = ip)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVER_NAME = 实例名)
)
)
备库
itpuxdb =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = ip)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVER_NAME = 实例名)
)
)
准备数据库密码文件
主库:
orapwd file=/opt/oracle/product/19c/dbhome_1/dbs/orapwitpuxdb password=ITPUX-123
备库:
cd /opt/oracle/product/19c/dbhome_1/dbs/
scp IP:/opt/oracle/product/19c/dbhome_1/dbs/orapwitpuxdb
mv orapwitpuxdb orapwitpuxdg
登录
sqlplus "sys/ITPUX-123@itpuxdg as sysdba"
主库:
create pflie = '/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='ITPUXDG',ITPUXDB' scope=spfile;
alter system set LOG _FILE_NAME_CONVERT='ITPUXDG','ITPUXDB' scope=spfile;
alter system set standby_file_management=AUTO scope=both;
备库参数:
cd /opt/oracle
vi pfile.ora
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='ITPUXDB','ITPUXDG'
LOG_FILE_NAME_CONVERT='ITPUXDB','ITPUXDG'
standby_file_management=AUTO
oracle19c DG创建过程
创建目录
mkdir -p /opt/oracle/admin/itpuxdg/adump
mkdir -p /opt/oracle/oradata/ITPUXDG
启动到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@itpuxdg
duplicate 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 dataabse open;
alter database recover managed standby database disconnect from session;
主库测试:
alter system switch logfile;
主备库检查dataguard状态
select NAME,OPEN_MODE,PROTECTION_MODE,DATABASE_ROLE,SWITCHOVER_STATUS from v$database;
dataguard数据同步测试
主库:
create tablespace xgedu66 datafile '/opt/oracle/oradata/ITPUXDB/xgedu66.dbf' size 10m autoextend off;
create user xgedu66 identified by xgedu66 default tablespace xgedu66;
grant dba to xgedu66;conn xgedu66/xgedu66;
create table xgedu66.itpux01(c1 varchar2(10),c2 number);
insert into itpux01 values('itpux01','1');
insert into itpux01 values('itpux02','2');
commit;
select * from xgedu66.itpux01;
alter system switch logfile;
备库检查:(fgedu66)
select * from fgedu66.itpux01;
检查dataguard状态:
select NAME,OPEN_MODE,PROTECTION_MODE,DATABASE_ROLE,SWITCHOVER_STATUS from v$database;
检查dataguard日志
tail -100f /opt/oracle/diag/rdbms/itpuxdg/itpuxdb/trace/alert_itpuxdg.log
tail -100f /opt/oracle/diag/rdbms/itpuxdg/itpuxdg/trace/alert_itpuxdg.log