基于已有的rac系统搭建dg

本文档详述了如何在已有RAC系统上搭建Data Guard,包括卸载Oracle、安装Grid、配置ASM、创建磁盘组、注册磁盘、创建密码文件、安装数据库、配置主备库、处理归档日志等关键步骤,以及在过程中可能遇到的问题和解决方案。
摘要由CSDN通过智能技术生成

环境:
rac:

[root@jhdb01 ~]# cat /etc/redhat-release 
CentOS release 6.6 (Final)
[root@jhdb01 ~]# uname -r
2.6.32-504.el6.x86_64

dg:

[root@CTS11615-rebulid ~]# cat /etc/redhat-release 
CentOS release 6.5 (Final)
[root@CTS11615-rebulid ~]# uname -r
2.6.32-431.el6.x86_64
[root@CTS11615-rebulid ~]# 

配置内核:
vi /etc/sysctl.conf

fs.aio-max-nr = 1048576
fs.file-max = 6815744

kernel.shmmni = 4096
kernel.sem = 250 32000 100 128
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 = 1048586

sysctl -p

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

grid                soft    nproc   2047
grid                hard    nproc   16384
grid                soft    nofile  1024
grid                hard    nofile  65536
grid                soft    stack   10240

安装依赖包:

yum -y install  binutils compat-libstdc++-33 elfutils-libelf elfutils-libelf-devel gcc gcc-c++ glibc-2.5  glibc-common  glibc-devel glibc-headers ksh libaio libaio-devel libgcc libstdc++ libstdc++-devel make sysstat

添加用户及目录权限:
用户组规划:

userdel oracle

groupdel oinstall
groupdel dba
groupdel oper
groupdel asmdba

groupadd -g 501 oinstall
groupadd -g 502 dba
groupadd -g 503 oper
groupadd -g 504 asmadmin
groupadd -g 505 asmoper
groupadd -g 506 asmdba

groupdel asmadmin
groupdel asmoper

userdel grid
userdel oracle
useradd -u 5002 -g oinstall -G dba,oper,asmadmin,asmoper,asmdba -d /home/grid grid
useradd -u 5001 -g oinstall -G dba,oper,asmdba -d /home/oracle oracle

目录权限:

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

修改用户环境变量

vi /home/oracle/.bash_profile

PATH=$PATH:$HOME/bin
export PATH
 export PS1="`/bin/hostname -s`-> "
export TMP=/tmp
export TMPDIR=$TMP
export ORACLE_HOSTNAME=node2.localdomain
export ORACLE_SID=jhdb1
export ORACLE_BASE=/u01/app/oracle
export ORACLE_HOME=$ORACLE_BASE/product/11.2.0/db_1
export ORACLE_UNQNAME=devdb
export TNS_ADMIN=$ORACLE_HOME/network/admin
export ORACLE_TERM=xterm
export PATH=/usr/sbin:$PATH
export PATH=$ORACLE_HOME/bin:$PATH
export LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/lib
export CLASSPATH=$ORACLE_HOME/JRE:$ORACLE_HOME/jlib:$ORACLE_HOME/rdbms/jlib
export EDITOR=vi
export LANG=en_US
export NLS_LANG=american_america.AL32UTF8
export NLS_DATE_FORMAT='yyyy/mm/dd hh24:mi:ss'
umask 022

vi /home/grid/.bash_profile

PATH=$PATH:$HOME/bin
export PATH
export PS1="`/bin/hostname -s`-> "
export TMP=/tmp
export TMPDIR=$TMP
export ORACLE_SID=+ASM1
export ORACLE_BASE=/u01/app/grid
export ORACLE_HOME=/u01/app/11.2.0/grid
export ORACLE_TERM=xterm
export NLS_DATE_FORMAT='yyyy/mm/dd hh24:mi:ss'
export TNS_ADMIN=$ORACLE_HOME/network/admin
export PATH=/usr/sbin:$PATH
export PATH=$ORACLE_HOME/bin:$PATH
export LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/lib
export CLASSPATH=$ORACLE_HOME/JRE:$ORACLE_HOME/jlib:$ORACLE_HOME/rdbms/jlib
export EDITOR=vi
export LANG=en_US
export NLS_LANG=american_america.AL32UTF8
umask 022

卸载oracle

我喜欢手工卸载oracle
1)删除用户
2)删除软件目录
3)删除配置文件
rm -rf /etc/ora*
rm -rf /usr/local/bin/dbhome
rm -rf /usr/local/bin/oraenv
rm -rf /usr/local/bin/coraenv

安装grid

配置asm:
配置asm存储有3中最常用方式,
1)oracle asmlib
2)udev绑定
3)多路径
第一种方式是oracle推荐方式,但是对老版本的linux系统并没有提供对应的asmlib支持。

本次试验使用第二种方案:
首先获取xvdb1磁盘uuid,

ls -l /dev/disk/by-uuid/
total 0
0c4c1dc3-325c-4aff-84f4-cc932bdcce7c -> ../../xvda1
55969a37-d135-408e-a781-c218afca43b4 -> ../../dm-1
7f331a00-03f6-478f-96ba-a56f6dd0eb25 -> ../../dm-0

or

[root@CTS11615-rebulid ~]# blkid 
/dev/loop0: LABEL="CentOS_6.6_Final" TYPE="iso9660" 
/dev/xvda1: UUID="0c4c1dc3-325c-4aff-84f4-cc932bdcce7c" TYPE="ext4" 
/dev/xvda2: UUID="ieTcCt-CGrx-s1tH-TyyJ-uM3k-q98c-oXrolr" TYPE="LVM2_member" 
/dev/xvda3: UUID="TbuFxU-1KHl-Kywd-dfh4-gjAV-SvwN-a1kjtK" TYPE="LVM2_member" 
/dev/mapper/VolGroup-lv_root: UUID="7f331a00-03f6-478f-96ba-a56f6dd0eb25" TYPE="ext4" 
/dev/mapper/VolGroup-lv_swap: UUID="55969a37-d135-408e-a781-c218afca43b4" TYPE="swap" 

可知,xvdb分区并没有找到uuid,网上查询可知虚拟机不提供磁盘UUID,由于大部分虚拟机磁盘设备支持动态共享特性,所以不建议开启uuid。但是我们可以通过磁盘分区开始位置和结束位置来标记磁盘,

[root@jhdg ~]# udevadm info -a -p /sys/block/xvdb/xvdb1/

Udevadm info starts with the device specified by the devpath and then
walks up the chain of parent devices. It prints for every device
found, all possible attributes in the udev rules key format.
A rule to match, can be composed by the attributes of the device
and the attributes from one single parent device.
  looking at device '/devices/vbd-51728/block/xvdb/xvdb1':
    KERNEL=="xvdb1"
    SUBSYSTEM=="block"
    DRIVER==""
    ATTR{partition}=="1"
    ATTR{start}=="63"
    ATTR{size}=="209728512"
    ATTR{alignment_offset}=="0"
    ATTR{discard_alignment}=="0"
    ATTR{stat}=="     720        0     5760       36        0        0        0        0        0       36       36"
    ATTR{inflight}=="       0        0"

  looking at parent device '/devices/vbd-51728/block/xvdb':
    KERNELS=="xvdb"
    SUBSYSTEMS=="block"
    DRIVERS==""
    ATTRS{range}=="16"
    ATTRS{ext_range}=="16"
    ATTRS{removable}=="0"
    ATTRS{ro}=="0"
    ATTRS{size}=="1048576000"
    ATTRS{alignment_offset}=="0"
    ATTRS{discard_alignment}=="0"
    ATTRS{capability}=="10"
    ATTRS{stat}=="     792       42     6672       46        0        0        0        0        0       46       46"
    ATTRS{inflight}=="       0        0"

  looking at parent device '/devices/vbd-51728':
    KERNELS=="vbd-51728"
    SUBSYSTEMS=="xen"
    DRIVERS=="vbd"
    ATTRS{nodename}=="device/vbd/51728"
    ATTRS{devtype}=="vbd"
    ATTRS{modalias}=="xen:vbd"

[root@jhdg ~]# vi /etc/udev/rules.d/99-oracle-asmdevices.rules

KERNEL=="xvdb1",SUBSYSTEM=="block",SYSFS{size}=="209728512",SYSFS{start}=="63",NAME="asm-disk1", OWNER="grid", GROUP="asmadmin", MODE="0660"

On SLES10:

/etc/init.d/boot.udev stop
/etc/init.d/boot.udev start

On RHEL5/OEL5/OL5:

/sbin/udevcontrol reload_rules
/sbin/start_udev

On RHEL6/OL6:

/sbin/udevadm control --reload-rules
/sbin/start_udev

start_udev会自动加载/etc/udev/rules.d/99-oracle-asmdevices.rules
ls -al /dev/asm* //验证udev是否正确

[root@jhdg dev]# ls -l /dev/as*
brw-rw----. 1 grid asmadmin 202, 17 Sep  5 15:15 /dev/asm-disk1

usermod -G asmadmin grid

vi /home/grid/grid.rsp

oracle.install.responseFileVersion=/oracle/install/rspfmt_crsinstall_response_schema_v11_2_0
INVENTORY_LOCATION=/u01/app/oraInventory
SELECTED_LANGUAGES=en
oracle.install.option=HA_CONFIG
ORACLE_BASE=/u01/app/grid
ORACLE_HOME=/u01/app/grid/product/11.2.0/grid
oracle.install.asm.OSDBA=asmdba
oracle.install.asm.OSOPER=asmoper
oracle.install.asm.OSASM=asmadmin
oracle.install.crs.config.gpnp.configureGNS=false
oracle.install.crs.config.autoConfigureClusterNodeVIP=false
oracle.install.crs.config.storageOption=ASM_STORAGE
oracle.install.crs.config.sharedFileSystemStorage.votingDiskRedundancy=NORMAL
oracle.install.crs.config.sharedFileSystemStorage.ocrRedundancy=NORMAL
oracle.install.crs.config.useIPMI=false
oracle.install.asm.SYSASMPassword=jhdb
oracle.install.asm.diskGroup.name=DATA
oracle.install.asm.diskGroup.redundancy=EXTERNAL
oracle.install.asm.diskGroup.AUSize=1
oracle.install.asm.diskGroup.disks=/dev/asm-disk1
oracle.install.asm.diskGroup.diskDiscoveryString=/dev/asm-*
oracle.install.asm.monitorPassword=jhdb
oracle.installer.autoupdates.option=SKIP_UPDATES
PROXY_PORT=0

[jhdg@grid ~]$ ./runInstaller -responseFile /home/grid/grid.rsp -silent -ignorePrereq -showProgress
过程

Starting Oracle Universal Installer...

Checking Temp space: must be greater than 120 MB.   Actual 20827 MB    Passed
Checking swap space: must be greater than 150 MB.   Actual 4015 MB    Passed
Preparing to launch Oracle Universal Installer from /tmp/OraInstall2015-12-01_03-47-21PM. Please wait ...[grid@JY-DB01 grid]$ [WARNING] [INS-30011] The SYS password entered does not conform to the Oracle recommended standards.
   CAUSE: Oracle recommends that the password entered should be at least 8 characters in length, contain at least 1 uppercase character, 1 lower case character and 1 digit [0-9].
   ACTION: Provide a password that conforms to the Oracle recommended standards.
[WARNING] [INS-30011] The ASMSNMP password entered does not conform to the Oracle recommended standards.
   CAUSE: Oracle recommends that the password entered should be at least 8 characters in length, contain at least 1 uppercase character, 1 lower case character and 1 digit [0-9].
   ACTION: Provide a password that conforms to the Oracle recommended standards.
[WARNING] [INS-32018] The selected Oracle home is outside of Oracle base.
   CAUSE: The Oracle home selected was outside of Oracle base.
   ACTION: Oracle recommends installing Oracle software within the Oracle base directory. Adjust the Oracle home or Oracle base accordingly.
You can find the log of this install session at:
 /u01/app/oraInventory/logs/installActions2015-12-01_03-47-21PM.log

Prepare in progress.
..................................................   9% Done.

Prepare successful.

Copy files in progress.
..................................................   14% Done.
..................................................   21% Done.
..................................................   26% Done.
..................................................   31% Done.
..................................................   36% Done.
..................................................   42% Done.
..................................................   50% Done.
..................................................   56% Done.
..................................................   61% Done.
..................................................   66% Done.
..................................................   71% Done.
........................................
Copy files successful.

Link binaries in progress.
..........
Link binaries successful.
..........
Setup files in progress.
..................................................   76% Done.
..................................................   89% Done.

Setup files successful.
The installation of Oracle Grid Infrastructure 11g was successful.
Please check '/u01/app/oraInventory/logs/silentInstall2015-12-01_03-47-21PM.log' for more details.
..................................................   94% Done.

Execute Root Scripts in progress.

As a root user, execute the following script(s):
        1. /u02/app/11.2.0/grid/root.sh


..................................................   100% Done.

Execute Root Scripts successful.
As install user, execute the following script to complete the configuration.
        1. /u02/app/11.2.0/grid/cfgtoollogs/configToolAllCommands RESPONSE_FILE=<response_file>

        Note:
        1. This script must be run on the same host from where installer was run. 
        2. This script needs a small password properties file for configuration assistants that require passwords (refer to install guide documentation).


Successfully Setup Software.

按照提示执行脚本:
root用户执行root.sh

[jhdg@grid ~]$ /u01/app/11.2.0/grid/root.sh
Check /u02/app/11.2.0/grid/install/root_JY-DB01_2015-12-01_15-54-30.log for the output of root script

grid用户执行配置

$ /u02/app/11.2.0/grid/cfgtoollogs/configToolAllCommands RESPONSE_FILE=/u02/soft/grid/response/grid_install.rsp

启动资源

  [jhdg@grid ~]$crsctl start resource -all
CRS-5702: Resource 'ora.evmd' is already running on 'jhdg'
CRS-2501: Resource 'ora.ons' is disabled
CRS-2672: Attempting to start 'ora.diskmon' on 'jhdg'
CRS-2672: Attempting to start 'ora.cssd' on 'jhdg'
CRS-2676: Start of 'ora.diskmon' on 'jhdg' succeeded
CRS-2676: Start of 'ora.cssd' on 'jhdg' succeeded
CRS-4000: Command Start failed, or completed with errors.

– 检查has,css,evm都是online

[jhdg@grid ~]$crsctl check has
CRS-4638: Oracle High Availability Services is online
[jhdg@grid ~]$crsctl check css
CRS-4529: Cluster Synchronization Services is online
[jhdg@grid ~]$crsctl check evm
CRS-4533: Event Manager is online
创建密码文件
$ cd $ORACLE_HOME/dbs
$ orapwd file=orapw+ASM password=oracle entries=10 ignorecase=y

在执行root.sh脚本的时候如果出现找不到libcap.so.1错误,对于centos6.6 版本一般都是通过软连接来解决这个问题 ln -s libcap.so.2.16 libcap.so.1。
创建asm参数文件
vi $ORACLE_HOME/dbs/init+asm.ora

[jhdg@grid dbs]$vi /u01/app/grid/product/11.2.0/grid/dbs/init+asm.ora
INSTANCE_TYPE=ASM
DB_UNIQUE_NAME=+ASM
ASM_POWER_LIMIT=1
ASM_DISKSTRING=/dev/asm-*
ASM_DISKGROUPS=data
LARGE_POOL_SIZE=16M
创建asm磁盘组
SQL> startup nomount pfile='$ORACLE_HOME/dbs/init+asm.ora';
ASM instance started

Total System Global Area 1135747072 bytes
Fixed Size                  2260728 bytes
Variable Size            1108320520 bytes
ASM Cache                  25165824 bytes

SQL> select group_number,disk_number,name,path from v$asm_disk;
GROUP_NUMBER DISK_NUMBER NAME                 PATH
------------ ----------- -------------------- ----------
           0           0                      /dev/asm-d
                                              isk1
SQL> select group_number,name,total_mb,free_mb from v$asm_diskgroup;

no rows selected

SQL> create diskgroup data external redundancy disk '/dev/asm-disk1';

Diskgroup created.

SQL> select group_number,disk_number,name,mount_status,path from v$asm_disk;

GROUP_NUMBER DISK_NUMBER NAME                 MOUNT_STATUS          PATH
------------ ----------- -------------------- --------------------- ----------
           1           0 DATA_0000            CACHED                /dev/asm-d
                                                                    isk1


SQL> select group_number,name,total_mb,free_mb from v$asm_diskgroup;

GROUP_NUMBER NAME                   TOTAL_MB    FREE_MB
------------ -------------------- ---------- ----------
           1 DATA                     102406     102356
注册磁盘组到crsctl中
jhdg@grid dbs]$srvctl add asm
[jhdg@grid dbs]$crsctl stat res -t

[jhdg@grid dbs]$crsctl stat res -t
--------------------------------------------------------------------------------
NAME           TARGET  STATE        SERVER                   STATE_DETAILS       
--------------------------------------------------------------------------------
Local Resources
--------------------------------------------------------------------------------
ora.asm
               OFFLINE OFFLINE      jhdg                                         
ora.ons
               OFFLINE OFFLINE      jhdg                                         
--------------------------------------------------------------------------------
Cluster Resources
--------------------------------------------------------------------------------
ora.cssd
      1        ONLINE  ONLINE       jhdg                                         
ora.diskmon
      1        OFFLINE OFFLINE                                                   
ora.evmd
      1        ONLINE  ONLINE       jhdg    
创建spfile参数文件
SQL> create spfile from pfile='$ORACLE_HOME/dbs/init+asm.ora';

File created.

SQL> shutdown immediate
ORA-01031: insufficient privileges
SQL> conn / as sysasm
Connected.
SQL> shutdown immediate
ASM diskgroups dismounted
ASM instance shutdown

SQL> startup
ASM instance started

Total System Global Area 1135747072 bytes
Fixed Size                  2260728 bytes
Variable Size            1108320520 bytes
ASM Cache                  25165824 bytes
ASM diskgroups mounted

SQL> show parameter spfile

NAME                                 TYPE
------------------------------------ ---------------------------------
VALUE
spfile                               string
/u01/app/grid/product/11.2.0/g
rid/dbs/spfile+ASM.ora
SQL> show parameter disk

NAME                   TYPE              VALUE
--------------- --------------------


asm_diskgroups       string            data

asm_diskstring     string            /dev/asm-*

查看资源

[jhdg@grid dbs]$crsctl stat res -t
--------------------------------------------------------------------------------
NAME           TARGET  STATE        SERVER                   STATE_DETAILS       
--------------------------------------------------------------------------------
Local Resources
--------------------------------------------------------------------------------
ora.DATA.dg
               ONLINE  ONLINE       jhdg                                         
ora.asm
               ONLINE  ONLINE       jhdg                     Started             
ora.ons
               OFFLINE OFFLINE      jhdg                                         
--------------------------------------------------------------------------------
Cluster Resources
--------------------------------------------------------------------------------
ora.cssd
      1        ONLINE  ONLINE       jhdg                                         
ora.diskmon
      1        OFFLINE OFFLINE                                                   
ora.evmd
      1        ONLINE  ONLINE       jhdg                                         
[jhdg@grid dbs]$

至此手动创建grid完成。

卸载grid

我一般喜欢使用手工卸载
删除用户,用户组
删除软件安装文件
删除grid配置文件
rm -rf /etc/oracle/*
rm -rf /etc/init.d/init.ohasd
rm -rf /etc/init.d/ohasd

格式化asmdisk磁盘头
dd if=/dev/zero of=/dev/sdb1 bs=1024 count=1000

静默安装oracle数据库

编辑响应文件
vi /home/oracle/database/db_install.rsp

oracle.install.responseFileVersion=/oracle/install/rspfmt_dbinstall_response_schema_v11_2_0  ##响应文件模板的版本,该参数不要更改
oracle.install.option=INSTALL_DB_AND_CONFIG ##安装选项,本例只安装oracle软件,该参数不要更改
ORACLE_HOSTNAME=localhost
UNIX_GROUP_NAME=oinstall
INVENTORY_LOCATION=/u01/app/oraInventory
SELECTED_LANGUAGES=en,zh_CN
ORACLE_HOME=/u01/app/oracle/product/11.2.0/dbhome_1
ORACLE_BASE=/u01/app/oracle
oracle.install.db.InstallEdition=EE  ##安装版本类型,一般是企业版
oracle.install.db.EEOptionsSelection=false
oracle.install.db.DBA_GROUP=dba
oracle.install.db.OPER_GROUP=oper
oracle.install.db.isRACOneInstall=false
oracle.install.db.config.starterdb.type=GENERAL_PURPOSE
oracle.install.db.config.starterdb.globalDBName=jhdb
oracle.install.db.config.starterdb.SID=jhdb
oracle.install.db.config.starterdb.characterSet=AL32UTF8
oracle.install.db.config.starterdb.memoryOption=true
oracle.install.db.config.starterdb.installExampleSchemas=true
oracle.install.db.config.starterdb.enableSecuritySettings=false
oracle.install.db.config.starterdb.control=DB_CONTROL
oracle.install.db.config.starterdb.storageType=ASM_STORAGE
oracle.install.db.config.asm.diskGroup=DATA
SECURITY_UPDATES_VIA_MYORACLESUPPORT=false
DECLINE_SECURITY_UPDATES=true
oracle.installer.autoupdates.option=SKIP_UPDATES

开始安装

./runInstaller -silent -force  -responsefile  /home/database/db_install.rsp

各参数含义如下:
-silent 表示以静默方式安装,不会有任何提示
-force 允许安装到一个非空目录
-noconfig 表示不运行配置助手netca
-responseFile 表示使用哪个响应文件,必需使用绝对路径

期间会提示使用root用户执行脚本
Successfully Setup Software.//表示安装完成。
查看安装进度:tail -f /u01/app/oracle/oraInventory/logs/

配置dg:

promary databa

开启归档:

    startup mount
    alter database archivelog;
    Archive  log  list;

主库forcelogging

alter databse force logging;

主库配置监听,tnanames
配置静态监听
配置备库的tnsnames连接字符串

主库dg参数配置

DB_NAME=jhdb  ##同一个dg中,保持db_name相同。
DB_UNIQUE_NAME=jhdb  ##每个数据库唯一的名字,区分不同的库。rac集群中名字相同。
LOG_ARCHIVE_CONFIG='dg_config=(jhdb,stydb)' ##主备库的db_unique_name参数
CONTROL_FILES='/u01/app/oracle/oradata/yfzx/control01.ctl ', '/u01/app/oracle/flash_recovery_area/yfzx/control02.ctl '
LOG_ARCHIVE_DEST_1= 'LOCATION=/u01/app/oracle/archive 
                        VALID_FOR=(ALL_LOGFILES,ALL_ROLES)
                        DB_UNIQUE_NAME=jhdb'
LOG_ARCHIVE_DEST_2='SERVICE=stydb async
                        VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) 
                        DB_UNIQUE_NAME=stydb'
LOG_ARCHIVE_DEST_STATE_1=ENABLE
LOG_ARCHIVE_DEST_STATE_2=ENABLE
REMOTE_LOGIN_PASSWORDFILE='EXCLUSIVE'  //官方推荐在dg设置为exclusive或shared,保证在dg中所有的库的sys密码一致,轻质使用面文件作为口令。
LOG_ARCHIVE_FORMAT=' %t_%s_%r.arc'
LOG_ARCHIVE_MAX_PROCESSES=30
FAL_SERVER=remote_TNSNAME
FAL_CLIENT=(location_TNSNAMERAC1, location_TNSNAMERAC1)
   db_file_name_convert=‘remote dbfile path1’,’local dbfile path1’
                      ‘remote dbfile path2’,’local dbfile path2’
   Log_file_name_convert=‘remote logfile path1’,’local logfile path1’
                     ‘remote logfile path2’,’local logfilepath2’)
STANDBY_FILE_MANAGEMENT=auto

主库全备:

#!/bin/sh
# su - oracle
source /home/oracle/.bash_profile

$ORACLE_HOME/bin/rman target sys/jhdb@rac2 catalog rman/rman@jhim log /home/oracle/rman/rman_bk_Full_`date +%Y%m%d-%H%M`.log <<EOF
run {
allocate channel c1 type disk ;
allocate channel c2 type disk ;
allocate channel c3 type disk ;
allocate channel c4 type disk ;
allocate channel c5 type disk ;
allocate channel c6 type disk ;
sql 'alter system switch logfile';
crosscheck backupset;
crosscheck archivelog all;
delete noprompt obsolete;
delete noprompt expired backup;
delete noprompt archivelog until time 'sysdate-7';
backup incremental level 0  as compressed backupset database plus archivelog format '+backup/jhdb/backupset/0_%T_%U.bak' delete input;
backup current controlfile format '+backup/jhdb/backupset/control_0_%T_%U.ctl';
backup as compressed backupset archivelog all format '+backup/jhdb/backupset/arch_%T_%U.arch';
release channel c1;
release channel c2;
release channel c3;
}
EOF

创建standby controlfile

SQL> alter database create standby controlfile as ''
  or
RMAN> backup format '/tmp/s_%U.ctl' current controlfile for standby;

standby database:

主库配置监听,tnanames
配置静态监听:

SID_LIST_LISTENER =
  (SID_LIST =
    (SID_DESC =
      (GLOBAL_DBNAME = orcl)
      (ORACLE_HOME = /u01/app/oracle/product/11.2.0/dbhome_1)
      (SID_NAME = orcl)
    )
  )
 -- 配置静态注册

配置备库的tnsnames连接字符串

备库dg参数配置

DB_NAME=jhdb  ##与主库保持一致
DB_UNIQUE_NAME= stydb ##区别于主库
compatible='11.2.0.4.0'
LOG_ARCHIVE_CONFIG='DG_CONFIG=(stydb,pydb)' ##定义dg成员,哪些成员可以发送日志,哪些成员可以接受日志,参数为dbunique_name
CONTROL_FILES='/u01/app/oracle/oradata/stydb/control01.ctl ', '/u01/app/oracle/flash_recovery_area/stydb/control02.ctl '
LOG_ARCHIVE_DEST_2= 'LOCATION=/u01/app/oracle/archive 
                        VALID_FOR=(ALL_LOGFILES,ALL_ROLES)
                        DB_UNIQUE_NAME= stydb'
                        ##本地归档日志路径
LOG_ARCHIVE_DEST_3='SERVICE=PRIMARY_TNSNAMES 
                        VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) 
                        DB_UNIQUE_NAME=jhdb'
                        ##远端归档日志路径
LOG_ARCHIVE_DEST_STATE_2=ENABLE
LOG_ARCHIVE_DEST_STATE_3=ENABLE
REMOTE_LOGIN_PASSWORDFILE=EXCLUSIVE
LOG_ARCHIVE_FORMAT=' %t_%s_%r.arc'
LOG_ARCHIVE_MAX_PROCESSES=30
FAL_SERVER=remote_TNSNAMERAC1, remote_TNSNAMERAC2
FAL_CLIENT=location_TNSNAME
   db_file_name_convert=‘remote dbfile path1’,’local dbfile path1’
                      ‘remote dbfile path2’,’local dbfile path2’
   Log_file_name_convert=‘remote logfile path1’,’local logfile path1’
                     ‘remote logfile path2’,’local logfilepath2’)
STANDBY_FILE_MANAGEMENT=auto

注意:
在Oracle 11g的Data Guard中,standby_archive_dest参数已经被取消了。

Standby归档文件的存放位置按如下规则来进行:
(1)当LOG_ARCHIVE_DEST_n设置了valid_for=(all_logfiles,all_roles),那么在不定义standby_archive_dest参数时,Oracle就会选择LOG_ARCHIVE_DEST_n参数作为归档目标。
(2)如果在第一步设置的同时,又独立设置LOG_ARCHIVE_DEST_n参数为 valid_for=(standby_logfile,*) 属性,那么当compatible参数大于10.0的时候,会自动的选择任意一个LOG_ARCHIVE_DEST_n的值。
(3)如果LOG_ARCHIVE_DEST_n 没有设置的话,默认位置是:
$ORACLE_HOME/dbs.
不过valid_for参数的默认值就是all_logfiles和all_roles. 所以只要设置了本地的归档位置,远程的归档文件也会放到这个目录下面。

拷贝主库密码文件

启动到nomount状态

SQL > startup nomount pfile='';

启动asm

[jhdg@grid ~]$crsctl start res -all
CRS-2501: Resource 'ora.ons' is disabled
CRS-2672: Attempting to start 'ora.evmd' on 'jhdg'
CRS-2672: Attempting to start 'ora.cssd' on 'jhdg'
CRS-2672: Attempting to start 'ora.diskmon' on 'jhdg'
CRS-2676: Start of 'ora.diskmon' on 'jhdg' succeeded
CRS-2676: Start of 'ora.evmd' on 'jhdg' succeeded
CRS-2676: Start of 'ora.cssd' on 'jhdg' succeeded
CRS-2672: Attempting to start 'ora.asm' on 'jhdg'
CRS-2676: Start of 'ora.asm' on 'jhdg' succeeded
CRS-2672: Attempting to start 'ora.DATA.dg' on 'jhdg'
CRS-2676: Start of 'ora.DATA.dg' on 'jhdg' succeeded
CRS-4000: Command Start failed, or completed with errors.

恢复控制文件

RMAN > restore standby controlfile from '/tmp/rman/s_c_19qmt3qq_1_1.ctl';
RMAN >alter database mount;

错误:

RMAN> alter database mount;

RMAN-00571: ===========================================================
RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ===============
RMAN-00571: ===========================================================
RMAN-03002: failure of alter db command at 09/06/2017 19:39:03
ORA-00201: control file version 11.2.0.4.0 incompatible with ORACLE version 11.2.0.0.0

解决:需要在参数文件定义数据库版本号compatible='11.2.0.4.0'

备库加载备份文件,注意备份文件权限。

RMAN>  catalog start with '/tmp/20170906/';

searching for all files that match the pattern /tmp/20170906/

List of Files Unknown to the Database
=====================================
File Name: /tmp/20170906/nnndn0_TAG20170906T105125_0.939.953981515
File Name: /tmp/20170906/nnndn1_TAG20170906T053412_0.328.953962479
File Name: /tmp/20170906/nnndn0_TAG20170906T105125_0.387.953981515
File Name: /tmp/20170906/nnndn1_TAG20170906T053412_0.899.953962477
File Name: /tmp/20170906/nnndn0_TAG20170906T105125_0.940.953981515
File Name: /tmp/20170906/nnndn1_TAG20170906T053412_0.661.953962477
File Name: /tmp/20170906/nnndn0_TAG20170906T105125_0.624.953981515
File Name: /tmp/20170906/nnndn0_TAG20170906T105125_0.408.953981515
File Name: /tmp/20170906/nnndn1_TAG20170906T053412_0.894.953962479
File Name: /tmp/20170906/jhdbpfile.ora
File Name: /tmp/20170906/nnndn0_TAG20170906T105125_0.694.953981515
File Name: /tmp/20170906/nnndn1_TAG20170906T053412_0.458.953962479
File Name: /tmp/20170906/orapwjhdb1
File Name: /tmp/20170906/nnndn1_TAG20170906T053412_0.642.953962477

还原备库

RMAN> restore database;

Starting restore at 2017/09/07 09:55:36
using channel ORA_DISK_1

channel ORA_DISK_1: starting datafile backup set restore
channel ORA_DISK_1: specifying datafile(s) to restore from backup set
channel ORA_DISK_1: restoring datafile 00001 to +DATA/jhdg/datafile/system.256.884618821
channel ORA_DISK_1: restoring datafile 00020 to +DATA/jhdg/datafile/ecimsaio_index_data.dbf
channel ORA_DISK_1: restoring datafile 00026 to +DATA/jhdg/datafile/visual_data.dbf
channel ORA_DISK_1: restoring datafile 00027 to +DATA/jhdg/datafile/dismstd.dbf
channel ORA_DISK_1: restoring datafile 00029 to +DATA/jhdg/datafile/dncdata.dbf
channel ORA_DISK_1: restoring datafile 00030 to +DATA/jhdg/datafile/extechdnc.dbf
channel ORA_DISK_1: reading from backup piece /tmp/20170906/nnndn0_TAG20170906T105125_0.939.953981515
channel ORA_DISK_1: piece handle=/tmp/20170906/nnndn0_TAG20170906T105125_0.939.953981515 tag=TAG20170906T105125
channel ORA_DISK_1: restored backup piece 1
channel ORA_DISK_1: restore complete, elapsed time: 00:02:25
channel ORA_DISK_1: starting datafile backup set restore
channel ORA_DISK_1: specifying datafile(s) to restore from backup set
channel ORA_DISK_1: restoring datafile 00003 to +DATA/jhdg/datafile/undotbs1.258.884618821
channel ORA_DISK_1: restoring datafile 00013 to +DATA/jhdg/datafile/jinhai_state_data.dbf
channel ORA_DISK_1: restoring datafile 00014 to +DATA/jhdg/datafile/jinhai_doc_data.dbf
channel ORA_DISK_1: restoring datafile 00015 to +DATA/jhdg/datafile/jinhai_prj_data.dbf
channel ORA_DISK_1: restoring datafile 00016 to +DATA/jhdg/datafile/jinhai_pri_data.dbf
channel ORA_DISK_1: restoring datafile 00017 to +DATA/jhdg/datafile/jinhai_oper_data.dbf
channel ORA_DISK_1: reading from backup piece /tmp/20170906/nnndn0_TAG20170906T105125_0.387.953981515
channel ORA_DISK_1: piece handle=/tmp/20170906/nnndn0_TAG20170906T105125_0.387.953981515 tag=TAG20170906T105125
channel ORA_DISK_1: restored backup piece 1
channel ORA_DISK_1: restore complete, elapsed time: 00:00:55
channel ORA_DISK_1: starting datafile backup set restore
channel ORA_DISK_1: specifying datafile(s) to restore from backup set
channel ORA_DISK_1: restoring datafile 00007 to +DATA/jhdg/datafile/tbs.dbf
channel ORA_DISK_1: restoring datafile 00019 to +DATA/jhdg/datafile/ecimsaio_data.dbf
channel ORA_DISK_1: restoring datafile 00022 to +DATA/jhdg/datafile/opis_data.dbf
channel ORA_DISK_1: restoring datafile 00032 to +DATA/jhdg/datafile/jhid.dbf
channel ORA_DISK_1: restoring datafile 00033 to +DATA/jhdg/datafile/exam.dbf
channel ORA_DISK_1: restoring datafile 00035 to +DATA/jhdg/datafile/jinhaihall.dbf
channel ORA_DISK_1: reading from backup piece /tmp/20170906/nnndn0_TAG20170906T105125_0.940.953981515
channel ORA_DISK_1: piece handle=/tmp/20170906/nnndn0_TAG20170906T105125_0.940.953981515 tag=TAG20170906T105125
channel ORA_DISK_1: restored backup piece 1
channel ORA_DISK_1: restore complete, elapsed time: 00:05:35
channel ORA_DISK_1: starting datafile backup set restore
channel ORA_DISK_1: specifying datafile(s) to restore from backup set
channel ORA_DISK_1: restoring datafile 00002 to +DATA/jhdg/datafile/sysaux.257.884618821
channel ORA_DISK_1: restoring datafile 00008 to +DATA/jhdg/datafile/index_data.dbf
channel ORA_DISK_1: restoring datafile 00023 to +DATA/jhdg/datafile/boboke.dbf
channel ORA_DISK_1: restoring datafile 00024 to +DATA/jhdg/datafile/abs.dbf
channel ORA_DISK_1: restoring datafile 00025 to +DATA/jhdg/datafile/absp.dbf
channel ORA_DISK_1: restoring datafile 00034 to +DATA/jhdg/datafile/jhinfo.dbf
channel ORA_DISK_1: reading from backup piece /tmp/20170906/nnndn0_TAG20170906T105125_0.408.953981515

创建备库standby 日志文件,主要是为了方便接受主库传递过来的日志文件

alter database add standby logfile [thread 1] group 5 size 50m,group 6 size 50m,group 7 size 50m;

 or
Alter database add standby logfile [thread 1] group 5 ‘/u01/app/oracle/oradata/orcl/sr101.log’ size 50M;

apply archivelog recover standby database:
启动MPR
redo apply:(默认方式,采用arch进程发送archive redolog,只有在主库发生归档的情况下才会传输到备库。开启备库应用archivelog)

 alter database recover managed standby database  disconnect from session;

实时同步(需要备库创建standby redolog,使用主库的lgwr进程发送archive redolog到备库,实时传输),在默认保护模式下不支持实时同步:

 alter database recover managed standby database using current logfile disconnect from session;

在打开备库之前,必须首先 广播redo apply,
暂停redo apply:(停止备库应用archivelog,只有先停止备库才能打开,这个时候备库还在继续接受archivelog,只是不应用而已)

alter database recover managed standby database cancel;

dg监控:
备库查看主库传输过来的归档日志应用状态

select name,thread#,sequence#,archived,applied,deleted from v$archived_log order by 2,3;

查看备库redoLog状态

select GROUP#,THREAD#,SEQUENCE#,ARCHIVED, STATUS from v$log ;

查看备库dg后台进程状态

select process, status, thread#, sequence#, block#, blocks from v$managed_standby;

查看备库standby状态

select GROUP#,THREAD#,SEQUENCE#,USED,ARCHIVED,STATUS from v$standby_log;

如果主库archivelog没有传输到备库,我们可以手动拷贝到备库然后注册到数据字典中;
检查归档文件是否完整
select thread#,low_sequence#,high_sequence# from v$archive_gap;
如果有返回的记录,按照文件编号复制到备库
文件复制过来之后,手动注册到数据字典中
alter database register physical logfile ”;

默认情况下,redo传输服务使用ARCn进程发送redo数据。不过ARCn归档进程只支持最高性能保护模式。如果standby数据库处于其他类型的保护模式就不洗使用LGWR传输redo。
更多关于dg介绍请查看http://blog.csdn.net/a743044559/article/details/77847330

错误2:

Thu Sep 07 14:24:22 2017
FAL[server]: DGID from FAL client not in Data Guard configuration

--解决:log_archive_config参数里面的db_unique_name配置错误,仔细检查。

错误3:

jhdb01-> sqlplus sys/jhdb@jhdg as sysdba

SQL*Plus: Release 11.2.0.4.0 Production on Fri Sep 8 19:10:25 2017

Copyright (c) 1982, 2013, Oracle.  All rights reserved.

ERROR:
ORA-12543: TNS:destination host unreachable
怀疑是IP地址错误或者是端口不对,
jhdb01-> telnet 10.123.0.53 1521
Trying 10.123.0.53...
telnet: connect to address 10.123.0.53: No route to host

–解决:
检查网关是否配置正确,检查对端防火墙是否拒绝连接。

到目前为止dg已搭建完毕。
备库应用主库传输过来的archivelog来进行数据同步,如果主备抓紧网络延迟或者其他故障,导致主库archivelog传输延迟,而主库设备之了rman备份删除策略,没有传输到备库的archivelog是不能被删除而且也删除不掉,会报一个
‘RMAN-08137: WARNING: archived log not deleted, needed for standby or upstream capture process’错误信息,如何避免如上错误可以参考http://blog.csdn.net/a743044559/article/details/77885641
主库问题解决了,备库接收主库传输过来的archivelog,备库不能通过rman策略来删除,这个时候就需要我们自己来手动来操作,方法很多。
具体信息请参考 dave大神博客 :http://blog.csdn.net/tianlesoftware/article/details/6194498

–动态参数(deferred)
SQL> select name from v$system_parameter where issys_modifiable=’DEFERRED’;

–静态参数(immediate)
SQL> select name from v$system_parameter where issys_modifiable=’IMMEDIATE’;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值