最近做了一个生产库11g ADG 的安装,这里把安装用到的东西整理一下。很多东西都在 wait4friend 以前的文章提到过,这次就算整理打包了。
1 服务器安装
1.1 操作系统安装
操作系统为 CentOS 5.8 x86_64
注意:
1. 为满足Oracle安装需求,设置系统swap空间至少为内存1.5倍,最大16G
2. 磁盘规划部分,请参见下文 操作系统设置-->创建目录 部分
3. 建议hostname分别设置为DBSRV1和DBSRV2,和ADG环境数据库名称保持一致
1.2 操作系统设置
1.2.1 修改共享内存
vi /etc/fstab
tmpfs /dev/shm tmpfs defaults,size=3276M 0 0
为了启用Oracle 11g AMM特性,此处size至少设置为物理内存的80%
mount -o remount /dev/shm
1.2.2 安装必要的包
yum -y install binutils compat-db compat-gcc-34 compat-gcc-34-c++ compat-libstdc++-33 elfutils-libelf-devel gcc gcc-c++ glibc-* libXp.so.6 libXt.so.6 libXtst.so.6 libgcc_s.so.1 ksh libXp libaio-devel numactl numactl-devel sysstat unixODBC unixODBC-devel pdksh
如果:pdksh包yum不到,需要手工安装
# rpm -e ksh 如果和 ksh有冲突,可以把ksh卸载掉
# rpm -i pdksh-5.2.14-37.el5.i386.rpm
# rpm -i pdksh-5.2.14-37.el5.x86_64.rpm
1.2.3 临时禁用防火墙
chkconfig iptables off
service iptables stop
sed -i 's/SELINUX=enforcing/SELINUX=disabled/' /etc/selinux/config
1.2.4 内核参数
########################################
vi /etc/sysctl.conf
kernel.shmmni = 4096
kernel.sem = 250 32000 100 128
fs.file-max = 6815744
fs.aio-max-nr = 1048576
net.ipv4.ip_local_port_range = 9000 65500
net.core.rmem_default = 4194304
net.core.rmem_max = 4194304
net.core.wmem_default = 262144
net.core.wmem_max = 1048576
/sbin/sysctl -p
########################################
vi /etc/security/limits.conf
# Added for Oracle Shell Limits
oracle soft nproc 2047
oracle hard nproc 16384
oracle soft nofile 1024
oracle hard nofile 65536
grid soft nproc 2047
grid hard nproc 16384
grid soft nofile 1024
grid hard nofile 65536
########################################
vi /etc/pam.d/login
# Added for Oracle Shell Limits
session required /lib/security/pam_limits.so
session required pam_limits.so
1.2.5 创建用户
groupadd oinstall
groupadd dba
groupadd asmdba
groupadd asmadmin
groupadd asmoper
useradd -g oinstall -G dba,asmdba -d /home/oracle -s /bin/bash -m oracle
echo oracle | passwd --stdin oracle
useradd -g oinstall -G dba,asmdba,asmadmin,asmoper -d /home/grid -s /bin/bash -m grid
echo grid | passwd --stdin grid
1.2.6 创建目录
目录名称 | 用途 | 其他 |
/u01 |
|
|
/u01/app |
|
|
/u01/app/grid | $GI_BASE |
|
/u01/app/grid_home | $GI_HOME |
|
/u01/app/oracle | $ORACLE_BASE,安装数据库软件 |
|
/u01/app/oracle /product/11.2.0/dbhome_1 | $ORACLE_HOME |
|
/u01/app/oraInventory | 数据库软件的配置信息 |
|
/u01/oradata |
| 选用Raid 5或Raid 1+0 |
/u01/oradata/<SID> | 指定实例的数据文件 |
|
/u01/redo |
| 优先选用Raid 1+0,并且和/u01/oradata处于不同磁盘组 |
/u01/redo/<SID> | 指定实例的在线日志文件 |
|
|
|
|
/u02 |
| 用于备份和数据泵的目录,最好和/u01/oradata处于不同磁盘组 |
/u02/archivelog |
|
|
/u02/archivelog/<SID> | 指定实例的归档日志文件 |
|
/u02/rmanbackup | RMAN备份文件 |
|
/u02/dpdump | 数据泵使用的目录 | 修改默认目录对象SYS.DATA_PUMP_DIR 为这个地址 |
|
|
|
/home/oracle | oracle用户根目录 |
|
/home/oracle/script | oracle用户日常使用脚本 |
|
/home/grid | grid用户根目录 |
|
mkdir -p /u01/app/oracle
mkdir -p /u01/app/grid
mkdir -p /u01/app/grid_home
mkdir -p /u01/oradata
mkdir -p /u01/redo
mkdir -p /u02/archivelog
mkdir -p /u02/rmanbackup
mkdir -p /u02/dpdump
mkdir -p /home/oracle/script
mkdir -p /home/oracle/upload
mkdir -p /home/grid/upload
chown -R oracle:oinstall /home/oracle
chown -R grid:oinstall /home/grid
chown -R oracle:oinstall /u01
chown -R oracle:oinstall /u02
chown -R grid:oinstall /u01/app/grid
chown -R grid:oinstall /u01/app/grid_home
chmod -R 775 /u01
chmod -R 775 /u02
1.2.7 环境变量
涉及文件
Ø rlwrap_static_x64
# cp ./rlwrap_static_x64 /usr/bin/
# chmod +x /usr/bin/rlwrap*
# ln -s /usr/bin/rlwrap_static_x64 /usr/bin/rlwrap
# vi /home/oracle/.bash_profile
export ORACLE_BASE=/u01/app/oracle
export ORACLE_HOME=${ORACLE_BASE}/product/11.2.0/dbhome_1
export ORACLE_HOME_LISTNER=${ORACLE_HOME}
export ORACLE_PATH=${ORACLE_HOME}/rdbms/admin
export ORACLE_SID=bill
export PATH=${PATH}:${ORACLE_HOME}/bin
export LD_LIBRARY_PATH=${LD_LIBRARY_PATH}:${ORACLE_HOME}/lib
export SQLPATH=~/script
export NLS_LANG=AMERICAN_AMERICA.ZHS16GBK
alias sqlplus='rlwrap sqlplus'
alias rman='rlwrap rman'
alias dgmgrl='rlwrap dgmgrl'
# vi /home/grid/.bash_profile
export ORACLE_BASE=/u01/app/grid
export GI_HOME=/u01/app/grid_home
export ORACLE_HOME=${GI_HOME}
export ORACLE_HOME_LISTNER=${ORACLE_HOME}
export ORACLE_PATH=${ORACLE_HOME}/rdbms/admin
export ORACLE_SID=+ASM
export PATH=${PATH}:${ORACLE_HOME}/bin
export LD_LIBRARY_PATH=${LD_LIBRARY_PATH}:${ORACLE_HOME}/lib
export SQLPATH=~/script
export NLS_LANG=AMERICAN_AMERICA.ZHS16GBK
alias ct='crs_stat -t'
alias asmcmd='rlwrap asmcmd'
1.3 GRID软件安装
本节的操作如无特殊说明,都是使用grid用户执行。
涉及文件
Ø my_grid_install_swonly.rsp
Ø p10404530_112030_Linux-x86-64_3of7.zip
1.3.1 静默安装配置
确认并修改静默安装配置文件my_grid_install_swonly.rsp
配置文件要特别注意,ORACLE_HOME不能在ORACLE_BASE路径下面。(oracle用户的要求相反,ORACLE_HOME要在ORACLE_BASE下面)
grep -E '^(ORACLE_HOSTNAME|INVENTORY_LOCATION|SELECTED_LANGUAGES|oracle.install.option|ORACLE_BASE|ORACLE_HOME|oracle.install.asm.OSDBA|oracle.install.asm.OSOPER|oracle.install.asm.OSASM)' ~/upload/my_grid_install_swonly.rsp
# 主机名称
ORACLE_HOSTNAME=xxxxxx
#
INVENTORY_LOCATION=/u01/app/oraInventory
#
SELECTED_LANGUAGES=en
# 仅安装软件
oracle.install.option=CRS_SWONLY
#
ORACLE_BASE=/u01/app/grid
#
ORACLE_HOME=/u01/app/grid_home
#
oracle.install.asm.OSDBA=asmdba
oracle.install.asm.OSOPER=asmoper
oracle.install.asm.OSASM=asmadmin
1.3.2 静默安装软件
注意:-responseFile参数必须使用绝对路径
$ ./runInstaller -silent -ignoreSysPrereqs -ignorePrereq -responseFile /home/grid/upload/my_grid_install_swonly.rsp
顺利执行完安装之后,还是以root身份运行配置文件
# /u01/app/oraInventory/orainstRoot.sh
# /u01/app/grid_home/root.sh
重点来了,当执行root.sh之后,有提示信息要求看log文件的,一定要看。日志最后有这样的内容
To configure Grid Infrastructure for a Stand-Alone Server run the following command as the root user:
/u01/app/grid_home/perl/bin/perl -I/u01/app/grid_home/perl/lib -I/u01/app/grid_home/crs/install /u01/app/grid_home/crs/install/roothas.pl
To configure Grid Infrastructure for a Cluster execute the following command:
/u01/app/grid_home/crs/config/config.sh
大意就是说,如果是安装standalone的,要运行roothas.pl,如果是RAC,运行config.sh。这里是安装单机的,执行
# /u01/app/grid_home/crs/install/roothas.pl
1.3.3 静默配置监听
安装Grid之后,监听以及数据库的启动都由has来负责,所以在grid用户下建立监听。这里可以自动注册(如果先安装Oracle,然后安装Grid,就涉及到手工注册等一系列问题)
$ netca -silent -responseFile /u01/app/grid_home/assistants/netca/netca.rsp
虽然数据库会自动注册监听,但如果要使用 RMAN 的 duplicate 命令创建备库,备库必须首先处于 NOMOUNT 状态。在 NOMOUNT 状态下,数据库实例不会自动注册监听,这种场景必须配置静态监听。
$ vi /u01/app/grid_home/network/admin/listener.ora
增加下列内容(ORACLE_HOME部分指定的是oracle用户的$ORACLE_HOME,因为后面要配置DG,这里使用了dbsrv1作为服务名称)
SID_LIST_LISTENER =
(SID_LIST =
(SID_DESC =
(GLOBAL_DBNAME = dbsrv1)
(ORACLE_HOME = /u01/app/oracle/product/11.2.0/dbhome_1)
(SID_NAME = bill)
)
)
静态监听配置完成之后,暂时不要重启Listener,因为现在还没有安装Oracle软件。
1.4 ASM安装
1.4.1 驱动安装
本节的操作如无特殊说明,都是使用root用户执行。
涉及文件(和系统内核统一版本)
Ø oracleasm-support-2.1.7-1.el5.x86_64.rpm
Ø oracleasm-2.6.18-308.el5-2.0.5-1.el5.x86_64.rpm
Ø oracleasmlib-2.0.4-1.el5.x86_64.rpm
安装ASM
# rpm -ivh *.rpm
默认安装顺序和上面文件列表的排序一致
配置ASM
# oracleasm configure –i
在提示输入用户和组信息的时候,输入grid和asmadmin
创建ASM磁盘
这里使用4个盘做DATA,2个盘做ARC。fdisk分区过程略
# oracleasm createdisk DATA1 /dev/sda5
# oracleasm createdisk DATA2 /dev/sda6
# oracleasm createdisk DATA3 /dev/sda7
# oracleasm createdisk DATA4 /dev/sda8
# oracleasm createdisk FRA1 /dev/sda9
# oracleasm createdisk FRA2 /dev/sda10
查看ASM磁盘
# oracleasm scandisks
# oracleasm listdisks
1.4.2 ASM实例创建
本节的操作如无特殊说明,都是使用grid用户执行。
ASM实例的创建,可以在静默安装GRID当中配置,也可以使用命令行独立配置。这里使用命令行方式。我使用的是ASMLib磁盘,指定了ORCL:*作为发现路径
$ asmca -silent -configureASM -sysAsmPassword 888888 -asmsnmpPassword 888888 -diskString 'ORCL:*' -diskGroupName DATA -diskList 'ORCL:DATA1,ORCL:DATA2' -redundancy EXTERNAL -compatible.asm 11.2 -compatible.rdbms 11.2
$ asmca -silent -createDiskGroup -sysAsmPassword 888888 -diskString 'ORCL:*' -diskGroupName FRA -diskList 'ORCL:FRA1,ORCL:FRA2' -redundancy EXTERNAL -compatible.asm 11.2 -compatible.rdbms 11.2
1.5 数据库软件安装
本节的操作如无特殊说明,都是使用oracle用户执行。
涉及文件
Ø my_db_install_swonly.rsp
Ø p10404530_112030_Linux-x86-64_1of7.zip
Ø p10404530_112030_Linux-x86-64_2of7.zip
1.5.1 卸载数据库(可选)
$ dbca -silent -deleteDatabase -sourceDB bill
$ rm -rf $ORACLE_BASE
# rm -f /etc/oraInst.loc /etc/oratab
# rm -rf /tmp/Ora*
# cd /usr/local/bin/
# rm -f coraenv dbhome oraenv
1.5.2 静默安装配置
确认并修改静默安装配置文件my_db_install_swonly.rsp(绝大部分参数已经修改过)
grep -E '^(oracle.install.option|ORACLE_HOSTNAME|UNIX_GROUP_NAME|INVENTORY_LOCATION|SELECTED_LANGUAGES|ORACLE_HOME|ORACLE_BASE|oracle.install.db.InstallEdition|oracle.install.db.isCustomInstall|oracle.install.db.DBA_GROUP|oracle.install.db.OPER_GROUP|DECLINE_SECURITY_UPDATES)' ~/upload/my_db_install_swonly.rsp
# 仅安装数据库软件
oracle.install.option=INSTALL_DB_SWONLY
# 主机名称
ORACLE_HOSTNAME=xxxxxx
UNIX_GROUP_NAME=oinstall
INVENTORY_LOCATION=/u01/app/oraInventory
# 安装过程语言
SELECTED_LANGUAGES=en
# 目录
ORACLE_HOME=/u01/app/oracle/product/11.2.0/dbhome_1
ORACLE_BASE=/u01/app/oracle
# 安装企业版
oracle.install.db.InstallEdition=EE
# 默认安装组件
oracle.install.db.isCustomInstall=false
# 用户组
oracle.install.db.DBA_GROUP=dba
oracle.install.db.OPER_GROUP=oinstall
# 这个必须设置为true
DECLINE_SECURITY_UPDATES=true
1.5.3 静默安装软件
注意:-responseFile参数必须使用绝对路径
$ ./runInstaller -silent -force -responseFile /home/oracle/upload/my_db_install_swonly.rsp
安装过程中查看日志来了解进度
$ tail -f /u01/app/oraInventory/logs/installActions*.log
最后步骤是用root身份执行下面两个文件,和GUI安装一样。如果前面安装了Grid软件,那这里只有root.sh需要执行。
# bash /u01/app/oracle/oraInventory/orainstRoot.sh
# bash /u01/app/oracle/product/11.2.0/dbhome_1/root.sh
1.6 数据库安装
本节的操作如无特殊说明,都是使用oracle用户执行。
涉及文件
Ø my_dbca_createdb.rsp
1.6.1 定制模版文件
默认静默安装使用的是General_Purpose.dbc这个模版文件。对于生产数据库,我们需要更细粒度的配置,所以我们可以选择自定义模版的方式。如果不使用默认安装,注意修改TEMPLATENAME参数。
注意:模版文件需要放在$ORACLE_HOME/assistants/dbca/templates/
1.6.2 静默安装配置
确认并修改静默安装配置文件my_dbca_createdb.rsp或者my_dbca_createdb_asm.rsp(注意修改GDBNAME,SID,TOTALMEMORY和密码)
grep -E '^(GDBNAME|SID|TEMPLATENAME|SYSPASSWORD|SYSTEMPASSWORD|DATAFILEDESTINATION|RECOVERYAREADESTINATION|STORAGETYPE|DISKGROUPNAME|RECOVERYGROUPNAME|CHARACTERSET|NATIONALCHARACTERSET|MEMORYPERCENTAGE|TOTALMEMORY)' ~/upload/my_dbca_createdb_asm.rsp
# 数据库名称
GDBNAME = "bill"
SID = "bill"
# 自定义模版文件名称
TEMPLATENAME = " General_Purpose.dbc "
# ASM配置
STORAGETYPE=ASM
DISKGROUPNAME=DATA
RECOVERYGROUPNAME=FRA
# 初始化密码
SYSPASSWORD = "888888"
SYSTEMPASSWORD = "888888"
# 数据库使用的中文字符集
CHARACTERSET = "ZHS16GBK"
# 默认就是AL16UTF16
NATIONALCHARACTERSET= "AL16UTF16"
# Oracle实例将使用物理内存
TOTALMEMORY = "2800"
1.6.3 静默安装数据库
注意:-responseFile参数必须使用绝对路径
$ dbca -silent -responseFile /home/oracle/upload/my_dbca_createdb_asm.rsp
1.6.4 检查参数(可选)
根据具体需要,对参数进行调整(这里使用的是FS)
-- undo
alter database datafile '/u01/oradata/bill/undotbs01.dbf' resize 80m;
alter database datafile '/u01/oradata/bill/undotbs01.dbf' autoextend on next 10m maxsize unlimited;
-- users
alter database datafile '/u01/oradata/bill/users01.dbf' resize 10m;
alter database datafile '/u01/oradata/bill/users01.dbf' autoextend on next 1m maxsize unlimited;
-- enable AMM
alter system set memory_max_target=2800m scope=spfile;
alter system set memory_target=2800m scope=spfile;
alter system set sga_target=0 scope=spfile;
alter system set pga_aggregate_target=0 scope=spfile;
-- misc
alter system set processes=500 scope=spfile;
alter system set open_cursors=300;
alter system set undo_retention=86400;
alter system set db_recovery_file_dest_size=8G;
alter system set recyclebin=off scope=spfile;
alter system set sec_case_sensitive_logon = false;
-- archive log
alter system set log_archive_format = '%T_%S_%r.arc' scope=spfile;
alter system set log_archive_dest_1='LOCATION=/u02/archivelog/bill/';
alter system set log_archive_dest_1='LOCATION=+FRA/bill/archivelog/'
需要先建立对应的目录,如果是ASM,需要使用asmcmd
-- 闪回保留24小时
alter system set db_flashback_retention_target=1440;
startup mount
-- 启用归档
alter database archivelog;
-- 启用闪回日志记录
alter database flashback on;
1.6.5 安装OEM
静默安装数据库,是没有安装OEM的。如果需要使用OEM,必须手工安装。
# 必须启动监听
$ lsnrctl start
# 卸载已有的EM (可选)
$ emca -deconfig dbcontrol db -repos drop
# 安装
$ emca -config dbcontrol db -repos create
#启动OEM
$ emctl start dbconsole
# 登录地址
https://hostname:1158/em/console/aboutApplication
1.7 ADG配置
实施方案是按照最高性能模式(MAXIMUM PERFORMANCE)配置的ADG。有关DG三模的区别,请参阅官方手册。
1.7.1 Primary配置
1.7.1.1 强制归档模式
sqlplus / as sysdba
startup mount;
alter database force logging;
alter database archivelog;
archive log list;
1.7.1.2 备用重做日志
Standby redo log是使用Real Time Apply必须的条件
Oracle文档要求standby logfile的数量至少比online logfile多一组. 所以我们在此创建4组standby logfile.
alter database add standby logfile group 11('/u01/redo/bill/stan1101.log') size 100m;
alter database add standby logfile group 12('/u01/redo/bill/stan1201.log') size 100m;
alter database add standby logfile group 13('/u01/redo/bill/stan1301.log') size 100m;
alter database add standby logfile group 14('/u01/redo/bill/stan1401.log') size 100m;
-- check logfile
col member for a50;
select * from v$logfile order by group#;
1.7.1.3 初始化参数文件
create pfile='/tmp/initora.ora' from spfile;
vi /tmp/initora.ora
增加或修改下列参数(这里把主库备库用的配置文件放到一起了,方便记录)
注意:location部分根据实际的目录地址修改
# 下面是增加的部分,主库使用
*.db_unique_name='dbsrv1'
*.archive_lag_target=1800
*.dg_broker_start=TRUE
*.fal_client='dbsrv1'
*.fal_server='dbsrv2'
*.log_archive_config='DG_CONFIG=(dbsrv1,dbsrv2)'
*.log_archive_dest_1='location=/u02/archivelog/bill/ VALID_FOR=(all_logfiles,all_roles) db_unique_name=dbsrv1'
*.log_archive_dest_2='service=dbsrv2 lgwr async valid_for=(online_logfiles,primary_role) db_unique_name=dbsrv2'
*.log_archive_dest_state_1='enable'
*.log_archive_dest_state_2='enable'
*.standby_file_management='auto'
# 下面是增加的部分,备库使用
*.db_unique_name='dbsrv2'
*.archive_lag_target=1800
*.dg_broker_start=TRUE
*.fal_client='dbsrv2'
*.fal_server='dbsrv1'
*.log_archive_config='DG_CONFIG=(dbsrv1,dbsrv2)'
*.log_archive_dest_1='location=/u02/archivelog/bill/ VALID_FOR=(all_logfiles,all_roles) db_unique_name=dbsrv2'
*.log_archive_dest_2='service=dbsrv1 lgwr async valid_for=(online_logfiles,primary_role) db_unique_name=dbsrv1'
*.log_archive_dest_state_1='enable'
*.log_archive_dest_state_2='enable'
*.standby_file_management='auto'
用编辑过的配置文件重新启动主库
shutdown immediate;
startup pfile='/tmp/initora.ora' nomount;
create spfile from pfile='/tmp/initora.ora';
shutdown immediate;
startup;
1.7.1.4 密码文件
密码文件路径是 $ORACLE_HOME/dbs/orapwSID,默认安装数据库的时候就已经建立。如果没有建立,可以手工建立一个
$ orapwd file=orapwbill password=888888 entries=5
1.7.1.5 TNS配置
TNS中配置Primary,Standby的信息分别为DBSRV1,DBSRV2,格式片段如下
DBSRV1 =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = 10.25.5.41)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = dbsrv1)
)
)
验证TNS
$ tnsping dbsrv1
1.7.1.1 注册Oracle Restart
以oracle 用户执行注册,必要的时候先注销原来注册的部分
$ srvctl remove database -d bill
$ srvctl add database -d bill -o /u01/app/oracle/product/11.2.0/dbhome_1
手工注册之后,使用grid用户启动数据库
$ srvctl start database -d bill
1.7.2 Standby配置
Standby端仅按照数据库软件即可,见前文数据库软件安装部分。为方便主备端操作,最好建立ssh信任连接。ssh-keygen ssh-copy-id
1.7.2.1 创建目录
创建必要的目录,需要数据文件,控制文件,日志文件,审计文件的目录。这里的路径信息和主库一致。注意修改路径中的SID。
mkdir -p /u01/app/oracle/oradata/bill
mkdir -p /u01/app/oracle/admin/bill/adump
mkdir -p /u01/app/oracle/flash_recovery_area/bill
mkdir -p /u02/archivelog/bill
1.7.2.2 密码文件
建议直接把主库的这个orapwSID文件直接scp过来。如果手工建立,需要保证密码和主库的一致。
1.7.2.3 初始化参数文件
参见前面的主库参数文件,仅需要备库的配置部分。
1.7.2.4 配置监听和TNS
直接把主库的文件scp过来,修改监听地址即可。
1.7.2.5 重新启动
用编辑过的配置文件重新启动到nomount模式
startup pfile='/tmp/initora.ora' nomount;
create spfile from pfile='/tmp/initora.ora';
shutdown immediate;
startup nomount;
1.7.2.6 初始化备库
RMAN初始化备库,在主库启动RMAN,连接到备库
$ rman target sys/888888@dbsrv1 auxiliary sys/888888@dbsrv2
RMAN> duplicate target database for standby from active database dorecover nofilenamecheck;
PS: 11gR2 ADG使用RMAN复制的时候,必须使用明文密码登陆,否则会出现ORA-17627和ORA-17629错误。参见这里 http://space.itpub.net/519536/viewspace-722247
1.7.2.7 启动备库
运维阶段应该使用Oracle Restart和DG Broker,但是这里可以手工启动备库到只读应用模式进行验证。
alter database open read only;
alter database recover managed standby database disconnect from session using current logfile;
1.7.2.8 注册Oracle Restart
以oracle 用户执行注册,备库注册需要指定-r
$ srvctl add database -d bill -o /u01/app/oracle/product/11.2.0/dbhome_1 -r PHYSICAL_STANDBY
手工注册之后,使用grid用户启动数据库
$ srvctl start database -d bill
1.7.3 Broker配置
1.7.3.1 设置相关参数
如果在配置文件部分没有配置dg_broker_start这个参数,这里在主备库分别执行语句
alter system set dg_broker_start=TRUE;
1.7.3.2 增加监听
$ vi /u01/app/grid_home/network/admin/listener.ora
调整后的监听部分如下,其中broker使用的监听名称dbsrv1_DGMGRL,固定格式为<db_uniuqe_name>_DGMGRL。
PS:11gR2中会自动注册一个<db_uniuqe_name>_DGB的监听。
SID_LIST_LISTENER =
(SID_LIST =
(SID_DESC =
(GLOBAL_DBNAME = dbsrv1)
(ORACLE_HOME = /u01/app/oracle/product/11.2.0/dbhome_1)
(SID_NAME = bill)
)
(SID_DESC =
(GLOBAL_DBNAME = dbsrv1_DGMGRL)
(ORACLE_HOME = /u01/app/oracle/product/11.2.0/dbhome_1)
(SID_NAME = bill)
)
)
1.7.3.3 设置Broker
以oracle用户身份进行DG Broker的配置,在Primary机器上进行操作
$ dgmgrl /
$ dgmgrl sys/888888@dbsrv1
-- 建立一个配置,加入Primary
create configuration dgcfg1 as primary database is dbsrv1 connect identifier is dbsrv1;
-- 在配置中加入Physical Standby
add database dbsrv2 as connect identifier is dbsrv2 maintained as physical;
-- 启用配置
enable configuration;
-- 查看下具体配置
show database verbose dbsrv2;
1.7.4 主备切换测试
使用Data Guard Broker进行切换
-- 测试一下switchover (在Primary机器上进行操作)
switchover to dbsrv2;
-- 测试failover(在Standby机器上进行操作)
failover to dbsrv2;
-- 测试恢复原来的主库
-- startup mount
reinstate database dbsrv1;
2 数据库初始化
2.1 表空间创建
表空间以TBS_作为前缀,建立需要使用的表空间。
create tablespace tbs_bill datafile '/u01/oradata/bill/bill01.dbf' size 4g autoextend on next 200m maxsize unlimited;
alter tablespace tbs_bill add datafile '/u01/oradata/bill/bill02.dbf' size 4g autoextend on next 200m maxsize unlimited;
2.2 Schema创建
3 运维脚本配置
3.1 自动启动脚本
如果配置了Oracle Restart,就跳过此步骤
涉及脚本
Ø dg_start_db.sh
单机环境
vi /etc/oratab
data:/u01/app/oracle/product/11.2.0/dbhome_1:Y
vi $ORACLE_HOME/bin/dbstart 和 dbshut
# First argument is used to bring up Oracle Net Listener
ORACLE_HOME_LISTNER=$ORACLE_HOME
vi /etc/rc.local
su - oracle -c "dbstart"
ADG环境
vi /etc/rc.local
su – oracle -c "/home/oracle/script/dg_start_db.sh"
3.2 RMAN脚本
涉及脚本
Ø backup.rman.sh
Ø dg_clean_arc.sh
单机环境
$ crontab -l
30 0 * * 0 /home/oracle/script/backup.rman.sh 0
30 0 * * 1,2,3,4,5,6 /home/oracle/script/backup.rman.sh 1
ADG环境
$ crontab -l
30 0 * * 0 /home/oracle/script/backup.rman.sh 0
30 0 * * 1,2,3,4,5,6 /home/oracle/script/backup.rman.sh 1
0 1 * * * /home/oracle/script/dg_clean_arc.sh 1
3.3 参考资料
我的Blog文章
《CentOS环境配置Oracle 11g R2 Data Guard》
《CentOS 下修改/dev/shm 大小解决ORA-00845》