环境参数
操作系统及版本:CentOS release 6.5 (Final)
oracle主机名:oracle.slb.com IP 地址:192.168.239.31
dataguard主机名:dataguard.slb.com IP 地址:192.168.239.32
cascade dg 主机名:cascade.slb.com IP 地址:192.168.239.33
oracle 软件版本:11.2.0.4.0
一、主库建立 oracle 数据库 slb
配置 /etc/hots 文件
三台机器都要配置
192.168.239.31 oracle.slb.com oracle
192.168.239.32 dataguard.slb.com dataguard
192.168.239.33 cascade.slb.com cascade
[root@slb ~]# vi /etc/hosts
二、安装相关rpm包
三台同样操作
传输相关rpm包到/home,目录下
进入相关目录进行rpm安装
[root@slb ~]# cd /home/rpm/
[root@slb rpm]# rpm -ivh * --force
三、配置相关系统参数
三台同样操作
[root@cascade rpm]# vi /etc/sysctl.conf
添加以下内容:
fs.file-max = 6815744
fs.aio-max-nr = 1048576
net.ipv4.ip_local_port_range = 9000 65500
net.core.rmem_default = 262144
net.core.rmem_max = 4194304
net.core.wmem_default = 262144
net.core.wmem_max = 1048576
kernel.sem = 250 32000 100 128
kernel.shmmni = 4096
使系统参数生效
[root@slb rpm]# sysctl -p
四、设置系统安全限制参数
三台同样操作
[root@cascade rpm]# vi /etc/security/limits.conf
添加以下内容:
oracle soft nproc 2047
oracle hard nproc 16384
oracle soft nofile 1024
oracle hard nofile 65536
oracle soft stack 10240
oracle hard stack 10240
五、oracle 登录配置
三台同样操作
[root@dataguard rpm]# vi /etc/pam.d/login
添加以下内容:
session required pam_limits.so
六、更改系统配置文件
三台同样操作
[root@cascade rpm]# vi /etc/profile
添加以下内容:
if [ $USER = "oracle" ]; then
if [ $SHELL = "/bin/ksh" ]; then
ulimit -p 16384
ulimit -n 65536
else
ulimit -u 16384 -n 65536
fi
fi
七、添加用户组及用户
三台机器同样操作
[root@cascade rpm]# groupadd oinstall
[root@cascade rpm]# groupadd dba
[root@cascade rpm]# groupadd oper
[root@cascade rpm]# useradd -g oinstall -G dba,oper oracle
设置 oracle 用户密码(注意密码的复杂度,大小写英文加数字加符号)
[root@cascade rpm]# passwd oracle
八、创建数据库软件安装目录
三台机器同样操作
[root@slb rpm]# mkdir -p /home/oracle/app/oracle
[root@slb home]# chown -R oracle.oinstall /home/oracle/app
[root@slb home]# chmod -R 775 /home/oracle/app
九、配置oracle用户环境变量
Oracle 主机
[root@slb ~]# vi /home/oracle/.bash_profile
ORACLE_SID=slb
export ORACLE_SID
ORACLE_BASE=/home/oracle/app/oracle
export ORACLE_BASE
ORACLE_HOME=$ORACLE_BASE/product/11.2.0/db_1
export ORACLE_HOME
PATH=$PATH:$ORACLE_HOME/bin
export PATH
dataguard 主机
[root@dataguard rpm]# vi /home/oracle/.bash_profile
添加以下内容
ORACLE_SID=dg
export ORACLE_SID
ORACLE_BASE=/home/oracle/app/oracle
export ORACLE_BASE
ORACLE_HOME=$ORACLE_BASE/product/11.2.0/db_1
export ORACLE_HOME
PATH=$PATH:$ORACLE_HOME/bin
export PATH
cascade 主机
[root@cascade rpm]# vi /home/oracle/.bash_profile
添加以下内容
ORACLE_SID=casdg
export ORACLE_SID
ORACLE_BASE=/home/oracle/app/oracle
export ORACLE_BASE
ORACLE_HOME=$ORACLE_BASE/product/11.2.0/db_1
export ORACLE_HOME
PATH=$PATH:$ORACLE_HOME/bin
export PATH
十、将oracle 软件传到服务器并解压
三台机器同样操作
[root@slb home]# unzip p13390677_112040_Linux-x86-64_1of7.zip
[root@slb home]# unzip p13390677_112040_Linux-x86-64_2of7.zip
……
十一、授权 oracle 用户操作 database 目录
[root@slb home]# chown -R oracle.oinstall database
十二、使用oracle用户进行数据库软件安装
三台机器同样操作
[root@slb home]# su – oracle
[oracle@slb ~]$ cd /home/database
[oracle@slb database]$ ./runInstaller
十三、安装oracle软件
将勾清除
报错点Yes
跳过软件更新,点击next
只安装软件,点击next
选择单实例数据库安装,点击next
默认选项,点击next
安装企业版软件,点击next
点击next
点击next
点击next
安装相应rpm包
[root@dataguard home]# rpm -ivh pdksh-5.2.14-30.x86_64.rpm --force –nodeps
点击check again 按钮
仍然报错,但实际已安装,oracle 软件抽抽了,勾选ignore all,点击next
点击yes
Install
执行相应脚本
使用root用户登录linux
[root@slb home]# /home/oracle/app/oraInventory/orainstRoot.sh
[root@slb home]# /home/oracle/app/oracle/product/11.2.0/db_1/root.sh
点击ok
Close
十四、使用dbca创建数据库
[root@slb home]# su – oracle
[oracle@slb ~]$ dbca
点击Next
点击Next
点击next
点击next
勾取消,点击next
点击next
点击next
勾选归档模式,启用归档,点击next
点击next
选择字符集,点击next
点击next
点击finish
点击ok
点击exit
完成数据库安装
十五、安装监听
[oracle@slb ~]$ netca
点击next
点击next
点击next
点击next
点击next
点击next
点击next
点击next
点击next
点击next
点击next
点击next
点击next
点击next
点击next
点击next
点击change login
输入system密码,建库时创建的,点击ok
点击next
点击next
点击next
点击next
点击finish
十六、主库创建备库所用的standby control file
创建备份目录
[oracle@slb ~]$ mkdir -p /home/oracle/dg_backup
创建备库的控制文件
SQL> alter database create standby controlfile as '/home/oracle/dg_backup/const.bkp';
十七、主库全库备份用以在备库还原恢复数据库
[oracle@slb ~]$ rman target /
备份脚本如下:
run {
allocate channel c1 type disk;
allocate channel c2 type disk;
backup as compressed backupset incremental level 0 database format '/home/oracle/dg_backup/full_%s_%t_%p.bkp';
sql 'alter system switch logfile';
backup archivelog all format '/home/oracle/dg_backup/arc_%s_%t_%p.bkp';
}
将备份集传递到dataguard端
十八、备库创建pfile文件
进入dbs目录
[oracle@dataguard dbs]$ cd /home/oracle/app/oracle/product/11.2.0/db_1/dbs/
复制模板文件并重命名
[oracle@dataguard dbs]$ cp init.ora initdg.ora
十九、编辑pfile文件并创建相应目录
[oracle@dataguard dbs]$ vi initdg.ora
修改内容如下:
db_name='slb'
memory_target=500M
processes = 150
audit_file_dest='/home/oracle/app/oracle/admin/dg/adump'
audit_trail ='db'
db_block_size=8192
db_domain=''
db_recovery_file_dest='/home/oracle/app/oracle/fast_recovery_area'
db_recovery_file_dest_size=2G
diagnostic_dest='/home/oracle/app/oracle'
dispatchers='(PROTOCOL=TCP) (SERVICE=DGXDB)'
open_cursors=300
remote_login_passwordfile='EXCLUSIVE'
undo_tablespace='UNDOTBS1'
# You may want to ensure that control files are created on separate physical
# devices
control_files = ('/home/oracle/app/oracle/oradata/dg/control01.ctl', '/home/oracle/app/oracle/oradata/dg/control02.ctl')
compatible ='11.2.0.4.0'
创建相关目录
[oracle@dataguard ~]$ mkdir -p /home/oracle/app/oracle/admin/dg/adump
[oracle@dataguard ~]$ mkdir -p /home/oracle/app/oracle/oradata/dg
[oracle@dataguard ~]$ mkdir -p /home/oracle/app/oracle/fast_recovery_area
二十、将数据库启动到nomount状态并恢复standby controlfile
启动数据库到nomount状态
RMAN> startup nomount
恢复standby 控制文件
RMAN> restore controlfile to '/home/oracle/app/oracle/oradata/dg/control01.ctl' from '/home/oracle/dg_backup/const.bkp';
RMAN> restore controlfile to '/home/oracle/app/oracle/oradata/dg/control02.ctl' from '/home/oracle/dg_backup/const.bkp';
二十一、将数据库启动到mount状态并加载备份集文件
将数据库启动到mount状态
RMAN> startup mount
加载备份及文件
RMAN> catalog start with '/home/oracle/dg_backup';
二十二、将数据文件重命名并进行还原
创建相关脚本
Vi restore.sh
# profile
export ORACLE_SID=dg
export ORACLE_BASE=/home/oracle/app/oracle
export ORACLE_HOME=$ORACLE_BASE/product/11.2.0/db_1
if [ -f /tmp/rename.rman ];then
rm -rf /tmp/rename.rman;
fi
sqlplus -S /nolog << EOF
conn / as sysdba
set trimspool on;
set linesize 120;
set pagesize 2000;
set newpage 1;
set heading off;
set feedback off;
set term off;
spool /tmp/rename.rman;
select 'run {' from dual;
select 'set newname for datafile '|| file#||' to ''/home/oracle/app/oracle/oradata/dg/'||substr(name,instr(name,'/',-1)+1)||''';' as isql from
v\$datafile;
select 'set newname for tempfile '|| file#||' to ''/home/oracle/app/oracle/oradata/dg//'||substr(name,instr(name,'/',-1)+1)||''';' as isql from
v\$tempfile;
select 'restore database;' from dual;
select 'switch datafile all;' from dual;
select 'switch tempfile all;' from dual;
select '}' from dual;
spool off;
EOF
为脚本授权执行权限
[oracle@dataguard ~]$ chmod +x restore.sh
二十三、运行restore脚本
[oracle@dataguard ~]$ ./restore.sh
此脚本输出在临时文件/tmp/rename.rman中,故在rman中运行此脚本以还原数据库
RMAN> @/tmp/rename.rman
完成还原
二十四、恢复数据库
RMAN> recover database;
二十五、创建spfile并重启数据库到mount状态
SQL> shutdown immediate
SQL> create spfile from pfile;
SQL> startup mount
二十六、配置主、备库静态监听
主库配置静态监听
进入监听目录
/home/oracle/app/oracle/product/11.2.0/db_1/network/admin
编辑listener.ora 文件
添加以下内容:
SID_LIST_LISTENER=
(SID_LIST=
(SID_DESC=
(GLOBAL_DBNAME=slb)
(SID_NAME=slb)
(ORACLE_HOME=/home/oracle/app/oracle/product/11.2.0/db_1)
)
)
Reload 监听
[oracle@slb admin]$ lsnrctl reload
查看主库监听状态
[oracle@slb admin]$ lsnrctl status
主库静态监听配置完成
备库配置静态监听
进入监听目录
/home/oracle/app/oracle/product/11.2.0/db_1/network/admin
编辑listener.ora 文件
添加以下内容:
SID_LIST_LISTENER=
(SID_LIST=
(SID_DESC=
(GLOBAL_DBNAME=dg)
(SID_NAME=dg)
(ORACLE_HOME=/home/oracle/app/oracle/product/11.2.0/db_1)
)
)
Reload 监听
[oracle@dataguard admin]$ lsnrctl reload
查看主库监听状态
备库静态监听配置完成
二十七、配置tnsnames.ora文件
主库备库同样配置
Vi tnsnames.ora
配置信息如下:
SLB =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = slb.slb.com)(PORT = 1521))
)
(CONNECT_DATA =
(SERVICE_NAME = slb)
)
)
DG =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = dataguard.slb.com)(PORT = 1521))
)
(CONNECT_DATA =
(SERVICE_NAME = dg)
)
)
测试连通性
[oracle@slb admin]$ tnsping slb
[oracle@slb admin]$ tnsping dg
二十八、备库配置数据库参数
SQL> alter system set db_unique_name='dg' scope=spfile;
SQL> alter system set log_archive_config='DG_CONFIG=(slb,dg)' scope=spfile;
SQL> alter system set fal_server='slb' scope=spfile;
SQL> alter system set fal_client='dg' scope=spfile;
SQL> alter system set standby_file_management=auto scope=spfile;
SQL> alter system set db_file_name_convert='/home/oracle/app/oracle/oradata/slb','/home/oracle/app/oracle/oradata/dg' scope=spfile;
SQL> alter system set log_file_name_convert='/home/oracle/app/oracle/oradata/slb','/home/oracle/app/oracle/oradata/dg' scope=spfile;
重启备库到mount状态,以使以上参数生效
SQL> shutdown immediate
SQL> startup mount
二十九、主库配置数据库参数并将密码文件传输到备库上进行重命名
修改主库数据库参数
SQL> alter system set log_archive_config='DG_CONFIG=(slb,dg)';
SQL> alter system set log_archive_dest_2='SERVICE=dg LGWR ASYNC VALID_FOR=(ONLINE_LOGFILE,PRIMARY_ROLE) DB_UNIQUE_NAME=dg';
传输密码文件到备库上进行重命名
[oracle@slb dbs]$ scp orapwslb oracle@dataguard:/home/oracle/app/oracle/product/11.2.0/db_1/dbs/orapwdg
三十、备库创建standby logfile
由于主库日志是3组,故备库standby logfile group 需要4组,将主库的日志重建,大小均设为1G
SQL> alter database add standby logfile group 4 '/home/oracle/app/oracle/oradata/dg/rest01.log' size 1G;
SQL> alter database add standby logfile group 5 '/home/oracle/app/oracle/oradata/dg/rest02.log' size 1G;
SQL> alter database add standby logfile group 6 '/home/oracle/app/oracle/oradata/dg/rest03.log' size 1G;
SQL> alter database add standby logfile group 7 '/home/oracle/app/oracle/oradata/dg/rest04.log' size 1G;
三十一、备库启动实时日志应用进程
SQL> alter database recover managed standby database using current logfile disconnect from session;
主库切换日志,验证备库是否应用
SQL> alter system switch logfile;
查看主备库告警日志
主库日志
备库日志
Oracle + dataguard 配置完成
三十二、配置cascade dataguard listener.ora和tnsnames.ora
[oracle@cascade admin]$ vi listener.ora
更新listener.ora为
LISTENER =
(DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = cascade.slb.com)(PORT = 1521))
(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))
)
)
ADR_BASE_LISTENER = /home/oracle/app/oracle
SID_LIST_LISTENER=
(SID_LIST=
(SID_DESC=
(GLOBAL_DBNAME=casdg)
(SID_NAME=casdg)
(ORACLE_HOME=/home/oracle/app/oracle/product/11.2.0/db_1)
)
)
Reload listener
[oracle@cascade admin]$ lsnrctl reload
查看监听状态
[oracle@cascade admin]$ lsnrctl status
配置tnsnames.ora文件
DG =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = dataguard.slb.com)(PORT = 1521))
)
(CONNECT_DATA =
(SERVICE_NAME = dg)
)
)
CASDG =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = cascade.slb.com)(PORT = 1521))
)
(CONNECT_DATA =
(SERVICE_NAME = casdg)
)
)
三十三、修改dataguard tnsnames.ora文件
更改为以下内容:
SLB =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = slb.slb.com)(PORT = 1521))
)
(CONNECT_DATA =
(SERVICE_NAME = slb)
)
)
DG =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = dataguard.slb.com)(PORT = 1521))
)
(CONNECT_DATA =
(SERVICE_NAME = dg)
)
)
CASDG =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = cascade.slb.com)(PORT = 1521))
)
(CONNECT_DATA =
(SERVICE_NAME = casdg)
)
)
三十四、将dataguard端的密码文件传递到cascade dataguard,并进行重命名操作
[oracle@dataguard dbs]$ scp orapwdg oracle@cascade:/home/oracle/app/oracle/product/11.2.0/db_1/dbs/orapwcasdg
三十五、在cascade 端还原恢复slb数据库
【见dataguard还原恢复slb数据库相关步骤】
三十六、cascade 端设置数据库系统参数
SQL> alter system set db_unique_name='casdg' scope=spfile;
SQL> alter system set fal_server='dg' scope=spfile;
SQL> alter system set fal_client='casdg' scope=spfile;
SQL> alter system set standby_file_management=auto scope=spfile;
SQL> alter system set db_file_name_convert='/home/oracle/app/oracle/oradata/dg','/home/oracle/app/oracle/oradata/casdg' scope=spfile;
SQL> alter system set log_file_name_convert='/home/oracle/app/oracle/oradata/dg','/home/oracle/app/oracle/oradata/casdg' scope=spfile;
三十七、创建cascade 端standby logfile group并重启数据库
SQL> alter database add standby logfile group 4 '/home/oracle/app/oracle/oradata/casdg/redost01.log' size 1g;
SQL> alter database add standby logfile group 5 '/home/oracle/app/oracle/oradata/casdg/redost02.log' size 1g;
SQL> alter database add standby logfile group 6 '/home/oracle/app/oracle/oradata/casdg/redost03.log' size 1g;
SQL> alter database add standby logfile group 7 '/home/oracle/app/oracle/oradata/casdg/redost04.log' size 1g;
重启数据库到mount状态
三十八、dataguard 端修改数据库参数
SQL> alter system set log_archive_config='DG_CONFIG=(slb,dg,casdg)';
SQL> alter system set log_archive_dest_2='SERVICE=casdg LGWR ASYNC VALID_FOR=(STANDBY_LOGFILES,STANDBY_ROLE) DB_UNIQUE_NAME=casdg';
三十九、cascade 端开启日志应用进程并进行同步校验
SQL> alter database recover managed standby database disconnect from session;
主库切换日志
SQL> alter system switch logfile;
主库日志信息如下:
Dataguard 库日志信息如下:
Cascade 库日志信息如下:
相关oracle + dataguard + cascade dataguard 架构数据库已搭建完成
本文地址:https://www.chensj.net/?post=97
未标注转载均为本站远程,转载请注明文章出处: