Oracle HA 之 oracle 11.2 rac库配置active dataguard
目錄
configing active dataguard for 11.2 rac. 1
一、建組、建用戶、配置環(huán)境變量、內(nèi)核參數(shù)等... 1
二、配置共享磁盤... 3
1)創(chuàng)建4塊共享磁盤并fdisk格式化。... 3
2)安裝asm rpm包... 3
3)配置asm driver服務(wù)... 4
4)配置asm磁盤... 4
三、安裝grid、oracle軟件及asmca創(chuàng)建asm磁盤組... 5
四、配置rac主庫... 5
1、主庫設(shè)置歸檔模式... 5
2、主庫設(shè)置force logging模式... 5
3、rac主庫執(zhí)行rman全備... 5
4、rac主庫創(chuàng)建物理備庫控制文件... 6
5、rac主庫創(chuàng)建物理備庫參數(shù)文件... 6
6、同步rac主庫各節(jié)點(diǎn)sys用戶密碼... 6
五、配置物理備庫... 6
1、scp命令將主庫備份傳到物理備庫系統(tǒng)上... 6
2、創(chuàng)建物理備庫口令文件... 6
3、修改物理備庫初始化參數(shù)... 6
4、配置rac主庫及物理備庫tnsnames.ora文件... 7
六、創(chuàng)建物理備庫... 8
1、物理備庫啟動nomount狀態(tài)、通過rman恢復(fù)物理備庫控制文件... 8
2、啟動物理備庫到mount狀態(tài),通過rman restore物理備庫... 8
3、備庫上創(chuàng)建standby logfile. 9
4、調(diào)整rac主庫參數(shù)... 9
5、備庫接收主庫日志并應(yīng)用主庫日志... 9
6、物理備庫以只讀方式打開... 9
一、建組、建用戶、配置環(huán)境變量、內(nèi)核參數(shù)等
#!/bin/bash
#Usage:Log on as the superuser('root'),and then execute the command:#./1preusers.sh
groupadd -g 1000 oinstall
groupadd -g 1200 asmadmin
groupadd -g 1201 asmdba
groupadd -g 1202 asmoper
groupadd -g 1300 dba
groupadd -g 1301 oper
useradd -u 1100 -g oinstall -G asmadmin,asmdba,asmoper,dba -d /home/grid -s /bin/bash -c "grid Infrastructure Owner" grid
echo "grid" | passwd --stdin grid
echo "export TMP=/tmp">> /home/grid/.bash_profile
echo 'export TMPDIR=$TMP'>>/home/grid/.bash_profile
echo "export ORACLE_SID=+ASM">> /home/grid/.bash_profile
echo "export ORACLE_BASE=/u01/app/grid">> /home/grid/.bash_profile
echo "export ORACLE_HOME=/u01/app/11.2.0/grid">> /home/grid/.bash_profile
echo "export ORACLE_TERM=xterm">> /home/grid/.bash_profile
echo "export NLS_DATE_FORMAT='yyyy/mm/dd hh24:mi:ss'" >> /home/grid/.bash_profile
echo 'export TNS_ADMIN=$ORACLE_HOME/network/admin' >> /home/grid/.bash_profile
echo 'export PATH=/usr/sbin:$PATH'>> /home/grid/.bash_profile
echo 'export PATH=$ORACLE_HOME/bin:$PATH'>> /home/grid/.bash_profile
echo 'export LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/lib'>> /home/grid/.bash_profile
echo 'export CLASSPATH=$ORACLE_HOME/JRE:$ORACLE_HOME/jlib:$ORACLE_HOME/rdbms/jlib'>> /home/grid/.bash_profile
echo "export LANG=en_US" >> /home/grid/.bash_profile
echo "export NLS_LANG=american_america.AL32UTF8" >> /home/grid/.bash_profile
useradd -u 1101 -g oinstall -G dba,oper,asmdba,asmadmin -d /home/oracle -s /bin/bash -c "Oracle Software Owner" oracle
echo "oracle" | passwd --stdin oracle
echo "export TMP=/tmp">> /home/oracle/.bash_profile
echo 'export TMPDIR=$TMP'>>/home/oracle/.bash_profile
echo "export ORACLE_HOSTNAME=dg">> /home/oracle/.bash_profile
echo "export ORACLE_SID=phydb">> /home/oracle/.bash_profile
echo "export ORACLE_BASE=/u01/app/oracle">> /home/oracle/.bash_profile
echo 'export ORACLE_HOME=$ORACLE_BASE/product/11.2.0/db_1'>> /home/oracle/.bash_profile
echo "export ORACLE_UNQNAME=phydb">> /home/oracle/.bash_profile
echo 'export TNS_ADMIN=$ORACLE_HOME/network/admin' >> /home/oracle/.bash_profile
echo "export ORACLE_TERM=xterm">> /home/oracle/.bash_profile
echo 'export PATH=/usr/sbin:$PATH'>> /home/oracle/.bash_profile
echo 'export PATH=$ORACLE_HOME/bin:$PATH'>> /home/oracle/.bash_profile
echo 'export LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/lib'>> /home/oracle/.bash_profile
echo 'export CLASSPATH=$ORACLE_HOME/JRE:$ORACLE_HOME/jlib:$ORACLE_HOME/rdbms/jlib'>> /home/oracle/.bash_profile
echo "export LANG=en_US" >> /home/oracle/.bash_profile
echo "export NLS_LANG=american_america.AL32UTF8" >> /home/oracle/.bash_profile
echo "export NLS_DATE_FORMAT='yyyy/mm/dd hh24:mi:ss'" >> /home/oracle/.bash_profile
echo "The Groups and users has been created"
echo "The Environment for grid,oracle also has been set successfully"
mkdir -p /u01/app/grid
mkdir -p /u01/app/11.2.0/grid
mkdir -p /u01/app/oracle
chown -R oracle:oinstall /u01
chown -R grid:oinstall /u01/app/grid
chown -R grid:oinstall /u01/app/11.2.0
chmod -R 775 /u01
cp /etc/security/limits.conf /etc/security/limits.conf.bak
echo "oracle soft nproc 2047" >>/etc/security/limits.conf
echo "oracle hard nproc 16384" >>/etc/security/limits.conf
echo "oracle soft nofile 1024" >>/etc/security/limits.conf
echo "oracle hard nofile 65536" >>/etc/security/limits.conf
echo "grid soft nproc 2047" >>/etc/security/limits.conf
echo "grid hard nproc 16384" >>/etc/security/limits.conf
echo "grid soft nofile 1024" >>/etc/security/limits.conf
echo "grid hard nofile 65536" >>/etc/security/limits.conf
cp /etc/pam.d/login /etc/pam.d/login.bak
echo "session required /lib/security/pam_limits.so" >>/etc/pam.d/login
echo "session required pam_limits.so" >>/etc/pam.d/login
cp /etc/profile /etc/profile.bak
echo 'if [ $USER = "oracle" ]||[ $USER = "grid" ]; then' >> /etc/profile
echo 'if [ $SHELL = "/bin/ksh" ]; then' >> /etc/profile
echo 'ulimit -p 16384' >> /etc/profile
echo 'ulimit -n 65536' >> /etc/profile
echo 'else' >> /etc/profile
echo 'ulimit -u 16384 -n 65536' >> /etc/profile
echo 'fi' >> /etc/profile
echo 'fi' >> /etc/profile
cp /etc/sysctl.conf /etc/sysctl.conf.bak
echo "fs.aio-max-nr = 1048576" >> /etc/sysctl.conf
echo "fs.file-max = 6815744" >> /etc/sysctl.conf
echo "kernel.shmall = 2097152" >> /etc/sysctl.conf
echo "kernel.shmmax = 4294967295" >> /etc/sysctl.conf
echo "kernel.shmmni = 4096" >> /etc/sysctl.conf
echo "kernel.sem = 250 32000 100 128" >> /etc/sysctl.conf
echo "net.ipv4.ip_local_port_range = 9000 65500" >> /etc/sysctl.conf
echo "net.core.rmem_default = 262144" >> /etc/sysctl.conf
echo "net.core.rmem_max = 4194304" >> /etc/sysctl.conf
echo "net.core.wmem_default = 262144" >> /etc/sysctl.conf
echo "net.core.wmem_max = 1048586" >> /etc/sysctl.conf
echo "net.ipv4.tcp_wmem = 262144 262144 262144" >> /etc/sysctl.conf
echo "net.ipv4.tcp_rmem = 4194304 4194304 4194304" >> /etc/sysctl.conf
sysctl -p
二、配置共享磁盤
1)創(chuàng)建4塊共享磁盤并fdisk格式化。
vmware esxi創(chuàng)建時需要制定scsi為物理模式。具體步驟略
2)安裝asm rpm包
[root@rac2 ~]# cd /mnt
[root@rac2 mnt]# ll
total 136
-rw-r--r--. 1 root root 33956 Jan 22 17:23 kmod-oracleasm-2.0.6.rh1-3.el6.x86_64.rpm
-rw-r--r--. 1 root root 13300 Jan 22 17:23 oracleasmlib-2.0.4-1.el6.x86_64.rpm
-rw-r--r--. 1 root root 74984 Jan 22 17:23 oracleasm-support-2.1.8-1.el6.x86_64.rpm
[root@rac2 mnt]# rpm -qa|grep oracleasm
[root@rac2 mnt]# rpm -ivh kmod-oracleasm-2.0.6.rh1-3.el6.x86_64.rpm
Preparing... ########################################### [100%]
1:kmod-oracleasm ########################################### [100%]
[root@rac2 mnt]# rpm -ivh oracleasm-support-2.1.8-1.el6.x86_64.rpm
warning: oracleasm-support-2.1.8-1.el6.x86_64.rpm: Header V3 RSA/SHA256 Signature, key ID ec551f03: NOKEY
Preparing... ########################################### [100%]
1:oracleasm-support ########################################### [100%]
[root@rac2 mnt]# rpm -ivh oracleasmlib-2.0.4-1.el6.x86_64.rpm
warning: oracleasmlib-2.0.4-1.el6.x86_64.rpm: Header V3 RSA/SHA256 Signature, key ID ec551f03: NOKEY
Preparing... ########################################### [100%]
1:oracleasmlib ########################################### [100%]
[root@rac2 mnt]# rpm -qa|grep oracleasm
oracleasm-support-2.1.8-1.el6.x86_64
kmod-oracleasm-2.0.6.rh1-3.el6.x86_64
oracleasmlib-2.0.4-1.el6.x86_64
3)配置asm driver服務(wù)
[root@rac1 mnt]# /usr/sbin/oracleasm status
Checking if ASM is loaded: no
Checking if /dev/oracleasm is mounted: no
[root@rac1 mnt]# /usr/sbin/oracleasm configure -i
Configuring the Oracle ASM library driver.
This will configure the on-boot properties of the Oracle ASM library
driver. The following questions will determine whether the driver is
loaded on boot and what permissions it will have. The current values
will be shown in brackets ('[]'). Hitting <ENTER> without typing an
answer will keep that current value. Ctrl-C will abort.
Default user to own the driver interface []: grid
Default group to own the driver interface []: asmadmin
Start Oracle ASM library driver on boot (y/n) [n]: y
Scan for Oracle ASM disks on boot (y/n) [y]: y
Writing Oracle ASM library driver configuration: done
[root@rac1 mnt]# /usr/sbin/oracleasm status
Checking if ASM is loaded: no
Checking if /dev/oracleasm is mounted: no
[root@rac1 mnt]# /usr/sbin/oracleasm init
Creating /dev/oracleasm mount point: /dev/oracleasm
Loading module "oracleasm": oracleasm
Mounting ASMlib driver filesystem: /dev/oracleasm
[root@rac1 mnt]# /usr/sbin/oracleasm status
Checking if ASM is loaded: yes
Checking if /dev/oracleasm is mounted: yes
4)配置asm磁盤
[root@rac1 mnt]# /usr/sbin/oracleasm listdisks
[root@rac1 mnt]# /usr/sbin/oracleasm createdisk VOL1 /dev/sdb1
Writing disk header: done
Instantiating disk: done
[root@rac1 mnt]# /usr/sbin/oracleasm createdisk VOL2 /dev/sdc1
Writing disk header: done
Instantiating disk: done
[root@rac1 mnt]# /usr/sbin/oracleasm createdisk VOL3 /dev/sdd1
Writing disk header: done
Instantiating disk: done
[root@rac1 mnt]# /usr/sbin/oracleasm createdisk VOL4 /dev/sde1
Writing disk header: done
Instantiating disk: done
[root@rac1 mnt]# /usr/sbin/oracleasm listdisks
VOL1
VOL2
VOL3
VOL4
三、安裝grid、oracle軟件及asmca創(chuàng)建asm磁盤組
圖形化過程(略)。
四、配置rac主庫
1、主庫設(shè)置歸檔模式
[grid@node1 ~]$ srvctl status database -d orcl
Instance orcl1 is running on node node1
Instance orcl2 is running on node node2
[grid@node1 ~]$ srvctl stop database -d orcl
[oracle@node1 ~]$sqlplus / as sysdba
SQL> alter database archivelog;
Database altered.
SQL> shutdown immediate;
[grid@node1 ~]$ srvctl start database -d orcl
[grid@node1 ~]$ srvctl status database -d orcl
Instance orcl1 is running on node node1
Instance orcl2 is running on node node2
2、主庫設(shè)置force logging模式
SQL> alter database force logging;
SQL> select name,log_mode,force_logging from gv$database;
NAME LOG_MODE FOR
--------- ------------ ---
DEVDB NOARCHIVELOG YES
DEVDB NOARCHIVELOG YES
3、rac主庫執(zhí)行rman全備
RMAN>run {
allocate channel c1 type disk;
allocate channel c2 type disk;
allocate channel c3 type disk;
allocate channel c4 type disk;
backup database format '/rman_backup/Full_%U.bak';
release channel c1;
release channel c2;
release channel c3;
release channel c4;
}
RMAN> backup archivelog all format '/rman_backup/ARC_%U.bak';
4、rac主庫創(chuàng)建物理備庫控制文件
RMAN> backup device type disk format '/rman_backup/standby_%U.ctl' current controlfile for standby;
5、rac主庫創(chuàng)建物理備庫參數(shù)文件
SQL> create pfile='/rman_backup/initphydb.ora' from spfile;
6、同步rac主庫各節(jié)點(diǎn)sys用戶密碼
rac主庫各個節(jié)點(diǎn)sys用戶密碼需保持一致。
五、配置物理備庫
1、scp命令將主庫備份傳到物理備庫系統(tǒng)上
[oracle@node1 ~]$scp /rman_backup/* 192.168.100.49:/rman_backup/ --輸入oracle用戶密碼
2、創(chuàng)建物理備庫口令文件
[oracle@node1 ~]$scp /u01/app/oracle/product/11.2.0/db_1/dbs/orapworcl1 192.168.100.49: /u01/app/oracle/product/11.2.0/db_1/dbs/orapwphydb --輸入oracle用戶密碼
3、修改物理備庫初始化參數(shù)
[oracle@dg dbs]$ cat initphydb.ora
phydb.__db_cache_size=1862270976
phydb.__java_pool_size=16777216
phydb.__large_pool_size=33554432
phydb.__oracle_base='/u01/app/oracle'#ORACLE_BASE set from environment
phydb.__pga_aggregate_target=838860800
phydb.__sga_target=2516582400
phydb.__shared_io_pool_size=0
phydb.__shared_pool_size=570425344
phydb.__streams_pool_size=0
*.audit_file_dest='/u01/app/oracle/admin/phydb/adump'
*.audit_trail='db'
*.cluster_database=false
*.compatible='11.2.0.4.0'
*.control_files='+DATA/phydb/controlfile/control.ctl'
*.core_dump_dest='/u01/app/oracle/diag/rdbms/phydb/cdump'
*.db_block_size=8192
*.db_create_file_dest='+DATA'
*.db_domain=''
*.db_file_name_convert='+DATA/orcl/','+DATA/phydb/'
*.db_name='orcl'
*.db_recovery_file_dest='+FLASH'
*.db_recovery_file_dest_size=4621074432
*.db_unique_name='phydb'
*.diagnostic_dest='/u01/app/oracle'
*.dispatchers='(PROTOCOL=TCP) (SERVICE=orclXDB)'
*.fal_client='phydb'
*.fal_server='orcl1','orcl2'
*.log_archive_config='dg_config=(orcl,phydb)'
*.log_archive_dest_1='location=USE_DB_RECOVERY_FILE_DEST valid_for=(all_logfiles,all_roles) db_unique_name=phydb'
*.log_archive_dest_2='service=orcl1 valid_for=(online_logfiles,all_roles) db_unique_name=orcl'
*.log_archive_format='ARC_%t_%S_%r.arc'
*.log_file_name_convert='+DATA/orcl/','+DATA/phydb'
*.open_cursors=300
*.pga_aggregate_target=836763648
*.processes=150
*.remote_login_passwordfile='exclusive'
*.sga_target=2510290944
*.service_names='phydb'
*.standby_file_management='auto'
*.thread=1
*.undo_management='auto'
*.undo_tablespace='UNDOTBS1'
[oracle@dg dbs]$
4、配置rac主庫及物理備庫tnsnames.ora文件
[oracle@dg admin]$ cat tnsnames.ora
# tnsnames.ora Network Configuration File: /u01/app/oracle/product/11.2.0/db_1/network/admin/tnsnames.ora
# Generated by Oracle configuration tools.
ORCL =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = scan-cluster)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = orcl)
)
)
orcl1 =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.100.42)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = orcl)
(INSTANCE_NAME = orcl1)
)
)
orcl2 =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.100.44)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = orcl)
(INSTANCE_NAME = orcl2)
)
)
phydb =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.100.49)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = phydb)
)
)
[oracle@dg admin]$
六、創(chuàng)建物理備庫
1、物理備庫啟動nomount狀態(tài)、通過rman恢復(fù)物理備庫控制文件
SQL>atartup nomount
[oracle@dg admin]$rman target /
RMAN>restore standby controlfile from '/rman_backup/standby_0gnpvd65_1_1.ctl';
2、啟動物理備庫到mount狀態(tài),通過rman restore物理備庫
SQL>alter database open;
RMAN>run {
allocate channel c1 type disk;
allocate channel c2 type disk;
allocate channel c3 type disk;
allocate channel c4 type disk;
restore database;
release channel c1;
release channel c2;
release channel c3;
release channel c4;
}
3、備庫上創(chuàng)建standby logfile
SQL>select * from v$logfile;
SQL> select * from v$standby_log;
no rows selected
SQL> alter database add standby logfile thread 1 group 5 size 50m,group 6 size 50m,group 7 size 50m;
Database altered.
SQL>
SQL> alter database add standby logfile thread 2 group 8 size 50m,group 9 size 50m,group 10 size 50m;
Database altered.
4、調(diào)整rac主庫參數(shù)
SQL> show parameter spfile;
SQL> show parameter log_arch
SQL>alter system set log_archive_dest_2='service=phydb lgwr sync valid_for=(online_logfiles,primary_role) db_unique_name=phydb' sid='*';
SQL>alter system set log_archive_config='dg_config=(orcl,phydb)' sid='*';
5、備庫接收主庫日志并應(yīng)用主庫日志
SQL>select sequence#,name,applied from v$archived_log;
SQL>alter database recover managed standby database using current logfile disconnect from session;
6、物理備庫以只讀方式打開
SQL>select dbid,name,switchover_status,db_unique_name,database_role,open_mode,current_scn from v$database;
SQL>alter database recover managed standby database cancel;
SQL> alter database open;
SQL>alter database recover managed standby database using current logfile disconnect from session;
SQL>select sequence#,name,applied from v$archived_log;
至此,active dataguard配置成功。
7、測試主備庫同步功能
文件同步
數(shù)據(jù)同步
8、配置主備庫的DATAGUARD SWITCHOVER功能
① 主庫修改相關(guān)參數(shù)fal_client、fal_server:
SQL> alter system set fal_client='devdb1' sid='devdb1'; --節(jié)點(diǎn)1
System altered.
SQL> alter system set fal_client='devdb2' sid='devdb2'; --節(jié)點(diǎn)2
System altered.
SQL> alter system set fal_server='phydb' sid='*';
System altered.
② 主庫創(chuàng)建standby logfile:
SQL>select * from v$logfile;
SQL>select * from v$standby_log;
SQL> alter database add standby logfile thread 1 group 5 size 50m,group 6 size 50m,group 7 size 50m;
Database altered.
SQL>
SQL> alter database add standby logfile thread 2 group 8 size 50m,group 9 size 50m,group 10 size 50m;
Database altered.
③ 主庫修改相關(guān)參數(shù)standby_file_management 、db_file_name_convert 、log_file_name_convert:
SQL> alter system set standby_file_management=auto sid='*';
System altered.
SQL> alter system set db_file_name_convert='+DATA/phydb/','+DATA/orcl/' sid='*' scope=spfile;
System altered.
SQL> alter system set log_file_name_convert='+DATA/phydb/','+DATA/orcl/' sid='*' scope=spfile;
System altered.
重啟數(shù)據(jù)庫。
④ 停止RAC 節(jié)點(diǎn)2:rac主庫只運(yùn)行一個節(jié)點(diǎn)、如果物理備庫也是rac的,也需要僅僅留下一個節(jié)點(diǎn)運(yùn)行。
⑤ RAC 節(jié)點(diǎn)1 切換原RAC 主庫到備庫:
alter database commit to switchover to physical standby with session shutdown;
⑥ 切換原物理備庫到主庫角色:
alter database commit to switchover to primary;
⑦ 將原RAC 主庫2 個實(shí)例都啟動到MOUNT 狀態(tài):
shutdown immediate
[grid@node1 ~]$ srvctl start database -d orcl -o mount
⑧ 原RAC 主庫啟動redo apply:
SQL> alter database recover managed standby database using current
logfile disconnect from session;
⑨ 原RAC 主庫停止redo apply,并將RAC 主庫所有節(jié)點(diǎn)以READ ONLY 打開:
alter database recover managed standby database cancel;
9、單實(shí)例主庫,rac備庫角色切換
①查看單實(shí)例主庫狀態(tài)
select dbid,name,current_scn,protection_mode,database_role,force_logging,open_mode,switchover_status from gv$database;
②查看rac備庫狀態(tài)
select dbid,name,current_scn,protection_mode,database_role,force_logging,open_mode,switchover_status from gv$database;
③停止rac節(jié)點(diǎn)2:
shutdown immediate
④切換單實(shí)例主庫為備庫
alter database commit to switchover to physical standby with session shutdown;
⑤將rac備庫切換成主庫
alter database recover managed standby database cancel; --停掉應(yīng)用日志
alter database commit to switchover to primary; --切換
⑥啟動rac節(jié)點(diǎn)2并查看狀態(tài)
startup
select dbid,name,current_scn,protection_mode,database_role,force_logging,open_mode,switchover_status from gv$database;
⑦恢復(fù)單實(shí)例備庫
alter database recover managed standby database using current logfile disconnect from session;
總結(jié)
以上是生活随笔為你收集整理的Oracle HA 之 oracle 11.2 rac库配置active dataguard的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: (转)前端学习书籍
- 下一篇: Center os vi