zoukankan      html  css  js  c++  java
  • Oracle HA 之 oracle 11.2 rac库配置active dataguard

    目录

    configing active dataguard for 11.2 rac. 1

    一、建组、建用户、配置环境变量、内核参数等... 1

    二、配置共享磁盘... 3

    1)创建4块共享磁盘并fdisk格式化。... 3

    2)安装asm rpm包... 3

    3)配置asm driver服务... 4

    4)配置asm磁盘... 4

    三、安装grid、oracle软件及asmca创建asm磁盘组... 5

    四、配置rac主库... 5

    1、主库设置归档模式... 5

    2、主库设置force logging模式... 5

    3、rac主库执行rman全备... 5

    4、rac主库创建物理备库控制文件... 6

    5、rac主库创建物理备库参数文件... 6

    6、同步rac主库各节点sys用户密码... 6

    五、配置物理备库... 6

    1、scp命令将主库备份传到物理备库系统上... 6

    2、创建物理备库口令文件... 6

    3、修改物理备库初始化参数... 6

    4、配置rac主库及物理备库tnsnames.ora文件... 7

    六、创建物理备库... 8

    1、物理备库启动nomount状态、通过rman恢复物理备库控制文件... 8

    2、启动物理备库到mount状态,通过rman restore物理备库... 8

    3、备库上创建standby logfile. 9

    4、调整rac主库参数... 9

    5、备库接收主库日志并应用主库日志... 9

    6、物理备库以只读方式打开... 9

    一、建组、建用户、配置环境变量、内核参数等

    #!/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)创建4块共享磁盘并fdisk格式化。

    vmware esxi创建时需要制定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服务

    [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创建asm磁盘组

    图形化过程(略)。

    四、配置rac主库

    1、主库设置归档模式

    [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、主库设置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主库执行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主库创建物理备库控制文件

    RMAN> backup device type disk format '/rman_backup/standby_%U.ctl' current controlfile for standby;

    5、rac主库创建物理备库参数文件

    SQL> create pfile='/rman_backup/initphydb.ora' from spfile;

    6、同步rac主库各节点sys用户密码

    rac主库各个节点sys用户密码需保持一致。

    五、配置物理备库

    1、scp命令将主库备份传到物理备库系统上

    [oracle@node1 ~]$scp /rman_backup/* 192.168.100.49:/rman_backup/ --输入oracle用户密码

    2、创建物理备库口令文件

    [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、修改物理备库初始化参数

    [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]$

    六、创建物理备库

    1、物理备库启动nomount状态、通过rman恢复物理备库控制文件

    SQL>atartup nomount

    [oracle@dg admin]$rman target /

    RMAN>restore standby controlfile from '/rman_backup/standby_0gnpvd65_1_1.ctl';

    2、启动物理备库到mount状态,通过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、备库上创建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、调整rac主库参数

    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、备库接收主库日志并应用主库日志

    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、测试主备库同步功能

    文件同步

    数据同步

    8、配置主备库的DATAGUARD SWITCHOVER功能

    ① 主库修改相关参数fal_client、fal_server:

    SQL> alter system set fal_client='devdb1' sid='devdb1'; --节点1

    System altered.

    SQL> alter system set fal_client='devdb2' sid='devdb2'; --节点2

    System altered.

    SQL> alter system set fal_server='phydb' sid='*';

    System altered.

    ② 主库创建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.

    ③ 主库修改相关参数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.

    重启数据库。

    ④ 停止RAC 节点2:rac主库只运行一个节点、如果物理备库也是rac的,也需要仅仅留下一个节点运行。

    ⑤ RAC 节点1 切换原RAC 主库到备库:

    alter database commit to switchover to physical standby with session shutdown;

    ⑥ 切换原物理备库到主库角色:

    alter database commit to switchover to primary;

    ⑦ 将原RAC 主库2 个实例都启动到MOUNT 状态:

    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 主库所有节点以READ ONLY 打开:

    alter database recover managed standby database cancel;

    9、单实例主库,rac备库角色切换

    ①查看单实例主库状态

    select dbid,name,current_scn,protection_mode,database_role,force_logging,open_mode,switchover_status from gv$database;

    ②查看rac备库状态

    select dbid,name,current_scn,protection_mode,database_role,force_logging,open_mode,switchover_status from gv$database;

    ③停止rac节点2:

    shutdown immediate

    ④切换单实例主库为备库

    alter database commit to switchover to physical standby with session shutdown;

    ⑤将rac备库切换成主库

    alter database recover managed standby database cancel; --停掉应用日志

    alter database commit to switchover to primary; --切换

    ⑥启动rac节点2并查看状态

    startup

    select dbid,name,current_scn,protection_mode,database_role,force_logging,open_mode,switchover_status from gv$database;

    ⑦恢复单实例备库

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

  • 相关阅读:
    面试题:链表倒数第k个节点
    面试题:重建二叉树
    面试题:从尾到头打印链表
    面试题:第一个出现的字符位置
    面试题:调整数组顺序
    面试题:有限制条件的求和
    面试题:Fibonacci数列
    面试题:旋转数组的最小数字
    面试题:替换空格
    EndNote8破解版下载安装
  • 原文地址:https://www.cnblogs.com/wcwen1990/p/6660460.html
Copyright © 2011-2022 走看看