Coundy

             漫步風中,傾聽自己的腳步,在自我沉浸中,找尋逝去的靈魂

          posts - 27,comments - 2,trackbacks - 0

          作者:Vincent Chan? 轉載:http://www.oracle.com/technology/global/cn/pub/articles/chan_sing2rac_install.html

          對于那些具有有限操作經驗的用戶而言,實施 Oracle RAC 10g 的前景令人生畏。但事情并不一定如此。

          本指南將提供明確的步驟,引導您在 RHEL3 上將單一實例 Oracle 10g 數據庫轉換為 Oracle RAC。我將 Oracle 自動存儲管理 (ASM)(一個構建到 Oracle 數據庫內核中的集成文件系統和卷管理解決方案)用于 RAC 數據庫存儲,因為它不但提供了存儲可靠性和高性能,還簡化了數據庫存儲管理。

          總的說來,有多種方法可以將數據庫轉換為 RAC。如果數據庫比較小,則可以考慮在 ASM 上安裝一個新的 RAC 數據庫,并將當前數據庫中的數據導出/導入到 RAC 數據庫。對于較大的數據庫,首選的方法是使用 RMAN 將數據庫文件移植到 ASM。這里所要說明的方法是一個分為兩個階段的方法:首先,將數據移植到 ASM,然后將單一實例數據庫轉換為 RAC。如果您是對 ASM 不了解,建議您采用此移植方法,先熟悉 ASM,然后再進一步運用 ASM 和 RAC。(有關 Oracle ASM 的更多信息,請訪問 Oracle ASM 產品中心或參考文檔。)

          本指南要求您對 RAC 體系結構有一個基本了解,對 Oracle 數據庫和 Red Hat Enterprise Linux 的管理較為熟悉。有關詳細信息,請參考文檔


          概述

          RAC 集群由兩臺運行 RHEL3(內核 2.4.21-27)的 Intel x86 服務器組成。每個節點都可以訪問共享存儲器并可以連接到公共網絡和專用網絡。

          本指南分為以下步驟:

          1. 準備安裝
          2. 將數據庫移植到 ASM
          3. 安裝 Oracle 集群就緒服務 (CRS) 軟件
          4. 安裝 Oracle RAC 軟件
          5. 后續安裝
          6. 測試透明應用程序故障切換 (TAF)
          除非另行指定,否則應在兩個節點上執行所有步驟。

          以下是在轉換到 RAC 之前的單一實例數據庫環境的情況介紹:

          主機名
          實例名
          數據庫名
          $ORACLE_BASE
          數據庫文件存儲
          salmon1prod1prod1/u01/app/oracleext3

          和 RAC 數據庫環境情況介紹:

          主機名
          實例名
          數據庫名
          $ORACLE_BASE
          數據庫文件存儲
          OCR 和 CRS Voting Disk
          salmon1prod1aprod1/u01/app/oracleASM原始
          salmon2prod1bprod1/u01/app/oracleASM原始

          您將在每個節點上安裝 Oracle Home 以實現冗余。ASM 和 RAC 實例在每個節點上共享同一 Oracle Home。

          第 1 步:準備安裝

          1a.檢驗軟件程序包版本。

          安裝所需的程序包。其他信息可以從文檔中獲得。

          [root@salmon1]# rpm -qa | grep -i compat
          compat-libstdc++-7.3-2.96.128
          compat-gcc-c++-7.3-2.96.128
          compat-libstdc++-devel-7.3-2.96.128
          compat-db-4.0.14-5
          compat-glibc-7.x-2.2.4.32.6
          compat-slang-1.4.5-5
          compat-gcc-7.3-2.96.128
          compat-pwdb-0.62-3
          [root@salmon1]# 
          [root@salmon1]# rpm -qa | grep openmotif
          openmotif-2.2.3-3.RHEL3
          [root@salmon1]# 
          [root@salmon1]# rpm -qa | grep -i gcc
          gcc-gnat-3.2.3-42
          gcc-c++-ssa-3.5ssa-0.20030801.48
          compat-gcc-c++-7.3-2.96.128
          libgcc-ssa-3.5ssa-0.20030801.48
          gcc-3.2.3-42
          gcc-g77-3.2.3-42
          gcc-java-3.2.3-42
          gcc-ssa-3.5ssa-0.20030801.48
          gcc-g77-ssa-3.5ssa-0.20030801.48
          gcc-objc-ssa-3.5ssa-0.20030801.48
          libgcc-3.2.3-42
          gcc-c++-3.2.3-42
          gcc-objc-3.2.3-42
          gcc-java-ssa-3.5ssa-0.20030801.48
          compat-gcc-7.3-2.96.128
          

          1b.檢驗內核參數。

          檢驗以下內核參數。其他信息可以從文檔中獲得。

          [root@salmon1]# sysctl -a | grep shm
          kernel.shmmni = 4096
          kernel.shmall = 2097152
          kernel.shmmax = 2147483648
          [root@salmon1]# sysctl -a | grep sem
          kernel.sem = 250        32000   100     128
          [root@salmon1]# sysctl -a | grep -i ip_local
          net.ipv4.ip_local_port_range = 1024     65000
          [root@salmon1]# sysctl -a | grep -i file-max
          fs.file-max = 65536
          
          1c.創建 Oracle Base 目錄、oracle 用戶和組。

          在第一個節點上使用下面的信息,在第二個節點上創建 oracle 用戶以及 oinstall 和 dba 組。

          [oracle@salmon1]$ hostname
          salmon1.dbsconsult.com
          [oracle@salmon1]$ 
          [oracle@salmon1]$ id
          uid=500(oracle) gid=500(dba) groups=500(dba),501(oinstall)
          [oracle@salmon1]$ 
          [oracle@salmon1]$ echo $ORACLE_BASE
          /u01/app/oracle
          
          1d.編輯 oracle 用戶環境文件。
          [oracle@salmon1]$ more .bash_profile
          # .bash_profile
          
          # Get the aliases and functions
          if [ -f ~/.bashrc ]; then
          . ~/.bashrc
          fi
          
          export PATH=$PATH:$HOME/bin
          export ORACLE_SID=prod1
          export ORACLE_BASE=/u01/app/oracle
          export ORACLE_HOME=$ORACLE_BASE/product/10.1.0
          export LD_LIBRARY_PATH=$ORACLE_HOME/lib
          export PATH=$ORACLE_HOME/bin:$PATH
          umask 022
          
          1e.配置 oracle 用戶 shell 限制。
          [root@salmon1]# more /etc/security/limits.conf
          *                soft    nproc           2047
          *                hard   nproc           16384
          *                soft    nofile           1024
          *                hard   nofile           65536
          [root@salmon1]# grep pam_limits /etc/pam.d/login
          session    required     /lib/security/pam_limits.so				 
          
          1f.配置公共網絡和專用網絡。

          使用下面的信息對網絡接口設備 eth0(公共)和 eth1(專用)進行必需的更改。

          [root@salmon1]# redhat-config-network
          
          主機名
          IP 地址
          類型
          salmon1.dbsconsult.com192.168.0.184公共 (eth0)
          salmon2.dbsconsult.com192.168.0.185公共 (eth0)
          salmon1.dbsconsult.com10.10.10.84專用 (eth1)
          salmon2.dbsconsult.com10.10.10.85專用 (eth1)
          salmon1-vip.dbsconsult.com192.168.0.186虛擬
          salmon2-vip.dbsconsult.com192.168.0.187虛擬

          1g.編輯 the /etc/hosts 文件。

          127.0.0.1        localhost.localdomain   localhost
          10.10.10.84     sallocal1.dbsconsult.com         sallocal1
          10.10.10.85     sallocal2.dbsconsult.com         sallocal2
          192.168.0.184   salmon1.dbsconsult.com           salmon1
          192.168.0.185   salmon2.dbsconsult.com           salmon2
          192.168.0.186   salmon1-vip.dbsconsult.com       salmon1-vip
          192.168.0.187   salmon2-vip.dbsconsult.com       salmon2-vip
          
          驗證主機名和配置的網絡接口設備。
          [root@salmon1]# hostname
          salmon1.dbsconsult.com
          [root@salmon1]# /sbin/ifconfig
          

          1h.使用 SSH 建立用戶等效性。

          在集群就緒服務 (CRS) 和 RAC 安裝過程中,Oracle Universal Installer (OUI) 必須能夠以 oracle 的身份將軟件復制到所有 RAC 節點,而不提示輸入口令。在 Oracle 10g 中,可以使用 ssh 代替 rsh 完成此操作。

          要建立用戶等效性,請在兩個節點上以 oracle 用戶的身份生成用戶的公鑰和私鑰。

          [oracle@salmon1]$ ssh-keygen -t dsa
          Generating public/private dsa key pair.
          Enter file in which to save the key (/home/oracle/.ssh/id_dsa):
          Created directory '/home/oracle/.ssh'.
          Enter passphrase (empty for no passphrase):
          Enter same passphrase again:
          Your identification has been saved in /home/oracle/.ssh/id_dsa.
          Your public key has been saved in /home/oracle/.ssh/id_dsa.pub.
          The key fingerprint is:
          5d:8c:42:97:eb:42:ae:52:52:e9:59:20:2a:d3:6f:59 oracle@salmon1.dbsconsult.com
          
          在每個節點上測試連接。驗證當您再次運行以下命令時,系統是否不提示您輸入口令。
          ssh salmon1 date
          ssh salmon2 date 
          ssh sallocal1 date
          ssh sallocal2 date
          ssh salmon1.dbsconsult.com date
          ssh salmon2.dbsconsult.com date
          ssh sallocal1.dbsconsult.com date
          ssh sallocal2.dbsconsult.com date
          
          1i.配置 hangcheck timer 內核模塊。

          hangcheck timer 內核模塊監控系統的運行情況,并重新啟動出現故障的 RAC 節點。它使用兩個參數,即 hangcheck_tick(定義系統檢查頻率)和 hangcheck_margin(定義在重置 RAC 節點前的最大掛起延時)來確定節點是否出現故障。

          在 /etc/rc.d/rc.local 中添加以下行以自動加載 hangcheck 模塊。

          [root@salmon1]# grep insmod /etc/rc.d/rc.local 
          insmod hangcheck-timer hangcheck_tick=30 hangcheck_margin=180
          
          1j.重新創建數據庫控制文件。

          在轉換到 RAC 之前,確保在控制文件中正確調整以下項的大小。如果需要,請使用正確的設置重新創建數據庫控制文件。

          MAXLOGFILES
          MAXLOGMEMBERS
          MAXDATAFILES
          MAXINSTANCES
          MAXLOGHISTORY
          
          1k.調整數據庫緩沖區高速緩存。

          從單一實例數據庫轉換到 RAC 時,數據庫緩沖區高速緩存需要額外的內存。在 RAC 中,為每個塊緩沖區高速緩存中的全局高速緩存服務 (GCS) 分配空間。所需的額外內存量取決于應用程序訪問數據的方式,即同一個塊是否高速緩存到多個實例中。

          在演示實驗中,我觀察到緩沖區高速緩存的使用率增加了大約 8%。使用緩沖區高速緩存顧問確定最佳的緩沖區高速緩存大小,或切換到 Oracle 自動共享內存管理 (ASMM) 讓 Oracle 進行控制。


          第 2 步:將數據庫移植到 ASM

          ASM 實例與數據庫實例之間的同步需要 Oracle 集群同步服務 (CSS) 后臺程序。要啟動 ASM 實例,必須啟動 CSS 后臺程序。安裝或升級到 Oracle 數據庫 10g 時,應該已經為單節點版本配置了 CSS,并且 CSS 應在系統重新啟動時自動啟動。

           
          [root@salmon1]# ps a€“ef | grep ocssd.bin | wc a€“l 
                17
          
          2a.下載 ASM RPM.

          從 OTN 下載以下 ASM RPM:

          • oracleasm-support-2.0.0-1.i386.rpm
          • oracleasm-2.4.21-27.EL-1.0.4-2.i686.rpm(UP 內核的驅動程序)或 oracleasm-2.4.21-27.ELsmp-1.0.4-1.i686.rpm(SMP 內核的驅動程序)
          • oracleasmlib-2.0.0-1.i386.rpm

          2b.安裝 ASM RPM。

          以 root 用戶的身份安裝 ASM RPM。

          [root@salmon1]# rpm -i oracleasm-support-2.0.0-1.i386.rpm
          [root@salmon1]# rpm -i oracleasm-2.4.21-27.EL-1.0.4-2.i686.rpm
          Linking module oracleasm.o into the module path [  OK  ]
          [root@salmon1]# rpm -i oracleasmlib-2.0.0-1.i386.rpm
          [root@salmon1]# rpm -qa | grep oracleasm
          oracleasm-2.4.21-27.EL-1.0.4-2
          oracleasm-support-2.0.0-1
          oracleasmlib-2.0.0-1
          
          2c.配置 ASM。

          以 root 用戶的身份配置 ASMLib。

          [root@salmon1]# /etc/init.d/oracleasm configure
          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  without typing an
          answer will keep that current value.Ctrl-C will abort.
          
          Default user to own the driver interface []:oracle
          Default group to own the driver interface []:dba
          Start Oracle ASM library driver on boot (y/n) [n]:y
          Fix permissions of Oracle ASM disks on boot (y/n) [y]:y
          Writing Oracle ASM library driver configuration            [  OK  ]
          Creating /dev/oracleasm mount point                        [  OK  ]
          Loading module "oracleasm"                                 [  OK  ]
          Mounting ASMlib driver filesystem                          [  OK  ]
          Scanning system for ASM disks    
          
          2d.創建 ASM 磁盤。

          以 root 用戶的身份在任何一個節點上創建 ASM 磁盤。

          [root@salmon1]# /etc/init.d/oracleasm createdisk VOL1 /dev/sdg5
          Marking disk "/dev/sdg5" as an ASM disk                      [  OK  ]
          [root@salmon1]# /etc/init.d/oracleasm createdisk VOL2 /dev/sdg6
          Marking disk "/dev/sdg6" as an ASM disk                      [  OK  ]
          [root@salmon1]# /etc/init.d/oracleasm createdisk VOL3 /dev/sdg7
          Marking disk "/dev/sdg7" as an ASM disk                      [  OK  ]
          [root@salmon1]# /etc/init.d/oracleasm createdisk VOL4 /dev/sdg8
          Marking disk "/dev/sdg8" as an ASM disk                      [  OK  ]
          [root@salmon1]# /etc/init.d/oracleasm createdisk VOL5/dev/sdg9
          Marking disk "/dev/sdg9" as an ASM disk                      [  OK  ]
          [root@salmon1]# /etc/init.d/oracleasm createdisk VOL6 /dev/sdg10
          Marking disk "/dev/sdg10" as an ASM disk                    [  OK  ]
          [root@salmon1]# /etc/init.d/oracleasm createdisk VOL7 /dev/sdg11
          Marking disk "/dev/sdg11" as an ASM disk                    [  OK  ]
          [root@salmon1]# /etc/init.d/oracleasm createdisk VOL8 /dev/sdg12
          Marking disk "/dev/sdg12" as an ASM disk                    [  OK  ]
          [root@salmon1]# /etc/init.d/oracleasm createdisk VOL9 /dev/sdg13
          Marking disk "/dev/sdg13" as an ASM disk                    [  OK  ]
          [root@salmon1]# /etc/init.d/oracleasm createdisk VOL10 /dev/sdg14
          Marking disk "/dev/sdg14" as an ASM disk                    [  OK  ]
          
          驗證能否從每個節點看到 ASM 磁盤。
          [root@salmon1]# /etc/init.d/oracleasm listdisks
          VOL1
          VOL2
          VOL3
          VOL4
          VOL5
          VOL6
          VOL7
          VOL8
          VOL9
          VOL10
          [root@salmon1]# /etc/init.d/oracleasm scandisks
          Scanning system for ASM disks                              [  OK  ]
          
          2e.創建 ASM init.ora。

          在第一個節點上,使用以下參數在 $ORACLE_HOME/dbs 中創建一個 init+ASM1A.ora 文件:

          #asm_diskgroups='DG1', a€?DG2a€?, a€?RECOVERYDESTa€?
          asm_diskstring='ORCL:VOL*'
          background_dump_dest=/u01/app/oracle/admin/+ASM/bdump
          core_dump_dest=/u01/app/oracle/admin/+ASM/cdump
          user_dump_dest=/u01/app/oracle/admin/+ASM/udump
          instance_type=asm
          large_pool_size=16M
          remote_login_passwordfile=exclusive
          +ASM1A.instance_number=1
          +ASM1B.instance_number=2
          
          2f.創建 ASM 口令文件

          使用 orapwd 實用程序在第一個節點上的 $ORACLE_HOME/dbs 中創建一個 orapw+ASM1A 文件。

          [oracle@salmon1]$ cd $ORACLE_HOME/dbs
          [oracle@salmon1]$ orapwd file=orapw+ASM1A password=sys entries=5
          
          2g.創建第一個 ASM 實例。

          在第一個節點上創建第一個 ASM 實例。將 CRS 軟件安裝到第二個節點后,將在“后續安裝”中創建第二個 ASM 實例。

          [oracle@salmon1]$ export ORACLE_SID=+ASM1A
          [oracle@salmon1]$ sqlplus / as sysdba
          
          SQL*Plus:Release 10.1.0.3.0 - Production on Thu May 26 05:51:07 2005
           
          Copyright (c) 1982, 2004, Oracle.保留所有權利。
           
          Connected to an idle instance.
           
          SQL> startup
          ORACLE instance started.
           
          Total System Global Area  104857600 bytes
          Fixed Size                   777616 bytes
          Variable Size             104079964 bytes
          Database Buffers           0 bytes
          Redo Buffers                 0 bytes
          ORA-15110:no diskgroups mounted
          
          2h.創建 ASM 實例 spfile。

          在 ASM 實例啟動后立即創建一個 spfile。使用 spfile 文件,任何新建的磁盤組都將自動添加到 spfile 文件。

          SQL> create spfile from pfile;
          
          File created.
          
          2i.創建磁盤組

          創建三個磁盤組:DG1、DG2 和 RECOVERYDEST。DG1 和 DG2 將用于存儲 Oracle 數據文件和重做日志。RECOVERYDEST 將用作閃回恢復區。

          SQL> create diskgroup dg1 normal redundancy
          2  failgroup fg1a disk
          3  'ORCL:VOL1','ORCL:VOL2'
          4  failgroup fg1b disk
          5  'ORCL:VOL3','ORCL:VOL4';
           
          Diskgroup created.
          
          SQL> create diskgroup dg2 normal redundancy
          2  failgroup fg2a disk
          3  'ORCL:VOL5','ORCL:VOL6'
          4  failgroup fg2b disk
          5  'ORCL:VOL7','ORCL:VOL8';
           
          Diskgroup created.
           
          SQL> create diskgroup recoverydest normal redundancy
          2  failgroup fgrd1 disk
          3  'ORCL:VOL9'
          4  failgroup fgrd2 disk
          5  'ORCL:VOL10';
           
          Diskgroup created.
          
          SQL> show parameter diskgroup
           
          NAME                 TYPE        VALUE
          ------------------------------ -----------    -----------------------------
          asm_diskgroups                 string         DG1, DG2, RECOVERYDEST
          
          SQL>  select name,total_mb from v$asm_diskgroup;
           
          NAME                           TOTAL_MB
          -------------------------      -------------------
          DG1                            36864
          DG2                            36864
          RECOVERYDEST                   73728
           
          3 rows selected.
          
          SQL>  select name,path,failgroup from v$asm_disk;
           
          NAME         PATH               FAILGROUP
          --------     ---------------    ----------------
          VOL1         ORCL:VOL1          FG1A
          VOL10        ORCL:VOL10         FGRD2
          VOL2         ORCL:VOL2          FG1A
          VOL3         ORCL:VOL3          FG1B
          VOL4         ORCL:VOL4          FG1B
          VOL5         ORCL:VOL5          FG2A
          VOL6         ORCL:VOL6          FG2A
          VOL7         ORCL:VOL7          FG2B
          VOL8         ORCL:VOL8          FG2B
          VOL9         ORCL:VOL9          FGRD1
           
          10 rows selected.
          
          2j.配置閃回恢復區。
          	
          SQL> connect sys/sys@prod1 as sysdba
          Connected.
          SQL> alter database disable block change tracking;
          
          Database altered.
          
          SQL> alter system set db_recovery_file_dest_size=72G;
          
          System altered.
          
          SQL> alter system set db_recovery_file_dest=a€?+RECOVERYDESTa€?;
          
          System altered.
          
          2k.將數據文件移植到 ASM

          必須使用 RMAN 將數據文件移植到 ASM 磁盤組。所有數據文件都將移植到新創建的磁盤組 DG1。在 DG1 和 DG2 中創建重做日志和控制文件。在生產環境中,應將重做日志存儲到與余下的 Oracle 數據文件不同的磁盤組和磁盤控制器上。

          SQL> connect sys/sys@prod1 as sysdba
          Connected.
          SQL> alter system set db_create_file_dest=a€?+DG1a€?;
          
          System altered. 
          
          SQL> alter system set control_files='+DG1/cf1.dbf' scope=spfile;
          
          System altered.
          
          SQL> shutdown immediate;
          
          [oracle@salmon1]$ rman target /
          
          RMAN> startup nomount;
           
          Oracle instance started
           
          Total System Global Area  419430400 bytes
          Fixed Size                   779416 bytes
          Variable Size             128981864 bytes
          Database Buffers           289406976 bytes
          Redo Buffers                 262144 bytes
           
          RMAN> restore controlfile from '/u02/oradata/prod1/control01.ctl';
           
          Starting restore at 26-MAY-05
          using target database controlfile instead of recovery catalog
          allocated channel:ORA_DISK_1
          channel ORA_DISK_1:sid=160 devtype=DISK
           
          channel ORA_DISK_1:copied controlfile copy
          output filename=+DG1/cf1.dbf
          Finished restore at 26-MAY-05
          
          RMAN> alter database mount;
           
          database mounted
          released channel:ORA_DISK_1
           
          RMAN> backup as copy database format '+DG1';
          
          Starting backup at 26-MAY-05
          allocated channel:ORA_DISK_1
          channel ORA_DISK_1:sid=160 devtype=DISK
          channel ORA_DISK_1:starting datafile copy
          input datafile fno=00001 name=/u02/oradata/prod1/system01.dbf
          output filename=+DG1/prod1/datafile/system.257.1 tag=TAG20050526T073442 recid=1 stamp=559294642
          channel ORA_DISK_1:datafile copy complete, elapsed time: 00:02:49
          channel ORA_DISK_1:starting datafile copy
          input datafile fno=00003 name=/u02/oradata/prod1/sysaux01.dbf
          output filename=+DG1/prod1/datafile/sysaux.258.1 tag=TAG20050526T073442 recid=2 stamp=559294735
          channel ORA_DISK_1:datafile copy complete, elapsed time: 00:01:26
          channel ORA_DISK_1:starting datafile copy
          input datafile fno=00002 name=/u02/oradata/prod1/undotbs01.dbf
          output filename=+DG1/prod1/datafile/undotbs1.259.1 tag=TAG20050526T073442 recid=3 stamp=559294750
          channel ORA_DISK_1:datafile copy complete, elapsed time: 00:00:15
          channel ORA_DISK_1:starting datafile copy
          input datafile fno=00004 name=/u02/oradata/prod1/users01.dbf
          output filename=+DG1/prod1/datafile/users.260.1 tag=TAG20050526T073442 recid=4 stamp=559294758
          channel ORA_DISK_1:datafile copy complete, elapsed time: 00:00:07
          channel ORA_DISK_1:starting datafile copy
          copying current controlfile
          output filename=+DG1/prod1/controlfile/backup.261.1 tag=TAG20050526T073442 recid=5 stamp=559294767
          channel ORA_DISK_1:datafile copy complete, elapsed time: 00:00:08
          Finished backup at 26-MAY-05
          
          RMAN> switch database to copy;
           
          datafile 1 switched to datafile copy "+DG1/prod1/datafile/system.257.1"
          datafile 2 switched to datafile copy "+DG1/prod1/datafile/undotbs1.259.1"
          datafile 3 switched to datafile copy "+DG1/prod1/datafile/sysaux.258.1"
          datafile 4 switched to datafile copy "+DG1/prod1/datafile/users.260.1"
          
          RMAN> alter database open;
           
          database opened
          
          RMAN> exit
          
          SQL> connect sys/sys@prod1 as sysdba
          Connected.
          SQL> select tablespace_name, file_name from dba_data_files;
           
          TABLESPACE               FILE_NAME                                          
          ---------------------    -----------------------------------------
          USERS                    +DG1/prod1/datafile/users.260.1                             
          SYSAUX                   +DG1/prod1/datafile/sysaux.258.1                          
          UNDOTBS1                 +DG1/prod1/datafile/undotbs1.259.1                         
          SYSTEM                   +DG1/prod1/datafile/system.257.1                          
          
          2l.將臨時表空間移植到 ASM。
          SQL> alter tablespace temp add tempfile size 100M;
           
          Tablespace altered.
          
          SQL> select file_name from dba_temp_files;
           
          FILE_NAME              
          -------------------------------------                            
          +DG1/prod1/tempfile/temp.264.3         
          
          2m.將重做日志移植到 ASM。

          刪除現有的重做日志,并在 ASM 磁盤組 DG1 和 DG2 中重新創建它們。

          SQL> alter system set db_create_online_log_dest_1='+DG1';
           
          System altered.
           
          SQL> alter system set db_create_online_log_dest_2='+DG2';
           
          System altered.
          
          SQL> select group#, member from v$logfile;
           
          GROUP#     MEMBER
          ---------------     ----------------------------------
          1      /u03/oradata/prod1/redo01.log
          2      /u03/oradata/prod1/redo02.log
          
          SQL> alter database add logfile group 3 size 10M;
          
          Database altered. 
          
          SQL> alter system switch logfile;
          
          System altered.
          
          SQL> alter database drop logfile group 1; 
          
          Database altered. 
          
          SQL> alter database add logfile group 1 size 100M;
          
          Database altered. 
          
          SQL> alter database drop logfile group 2; 
          
          Database altered. 
          
          SQL> alter database add logfile group 2 size 100M;
          
          Database altered. 
          
          SQL> alter system switch logfile;
          
          System altered.
          
          SQL> alter database drop logfile group 3; 
          
          Database altered.
          
          SQL> select group#, member from v$logfile;
           
          GROUP#     MEMBER
          ---------------     ----------------------------------------
          1     +DG1/prod1/onlinelog/group_1.265.3  
          1     +DG2/prod1/onlinelog/group_1.257.1  
          2     +DG1/prod1/onlinelog/group_2.266.3  
          2     +DG2/prod1/onlinelog/group_2.258.1   
          
          2n.從 spfile 文件創建 pfile 文件。

          創建并保留數據庫 pfile 的副本。您將稍后在“后續安裝”中向 pfile 中添加更多的 RAC 特定參數。

          SQL> connect sys/sys@prod1 as sysdba
          Connected.
          SQL> create pfile='/tmp/tmppfile.ora' from spfile;
          
          File created.
          
          2o.添加其他控制文件

          如果需要其他控制文件以實現冗余,則可以在 ASM 中創建它,方法與在其他任何文件系統中創建相同。

          SQL> connect sys/sys@prod1 as sysdba
          Connected to an idle instance.
          SQL> startup mount
          ORACLE instance started.
           
          Total System Global Area  419430400 bytes
          Fixed Size                   779416 bytes
          Variable Size             128981864 bytes
          Database Buffers           289406976 bytes
          Redo Buffers                 262144 bytes
          Database mounted.
          
          SQL> alter database backup controlfile to '+DG2/cf2.dbf';
           
          Database altered.
           
          SQL> alter system set control_files='+DG1/cf1.dbf ','+DG2/cf2.dbf' scope=spfile;
           
          System altered.
           
          SQL> shutdown immediate; 
          ORA-01109:database not open
           
          Database dismounted.
          ORACLE instance shut down.
          SQL> startup
          ORACLE instance started.
           
          Total System Global Area  419430400 bytes
          Fixed Size                   779416 bytes
          Variable Size             128981864 bytes
          Database Buffers           289406976 bytes
          Redo Buffers                 262144 bytes
          Database mounted.
          Database opened.
          SQL> select name from v$controlfile;
          
          NAME
          ---------------------------------------
          +DG1/cf1.dbf
          +DG2/cf2.dbf
          
          將所有數據文件成功移植到 ASM 后,將不再需要舊的數據文件并可以將其刪除。您的單一實例數據庫現在在 ASM 上運行!


          第 3 步:安裝集群就緒服務 (CRS) 軟件

          CRS 要求共享原始設備或 Oracle 集群文件系統 (OCFS) 上有兩個文件,即 Oracle 集群注冊表 (OCR) 和 Voting Disk。這些文件必須可以由集群中的所有節點訪問。此處使用原始設備來容納這兩個文件。

          3a.創建 OCR 和 Voting Disk。

          OCR 的存儲器大小至少應為 100MB,voting disk 的存儲器大小應至少為 20MB。

          文件
          原始設備
          磁盤分區
          文件名
          大小 (MB)
          OCR/dev/raw/raw11/dev/sde1/u02/oradata/prod1/ocr100
          Voting Disk/dev/raw/raw12/dev/sde2/u02/oradata/prod1/vdisk20
          [root@salmon1]# more /etc/sysconfig/rawdevices
          /dev/raw/raw11  /dev/sde1
          /dev/raw/raw12  /dev/sde2
          [root@salmon1]# chown oracle:dba /dev/raw/raw11
          [root@salmon1]# chown oracle:dba /dev/raw/raw12
          [root@salmon1]# /sbin/service rawdevices restart
          Assigning devices:
          /dev/raw/raw11  -->   /dev/sde1
          /dev/raw/raw11:bound to major 8, minor 65
          /dev/raw/raw12  -->   /dev/sde2
          /dev/raw/raw12:bound to major 8, minor 66
          done
          [root@salmon1]# su - oracle
          [oracle@salmon1]$ ln -s /dev/raw/raw11 /u02/oradata/prod1/ocr
          [oracle@salmon1]$ ln -s /dev/raw/raw12 /u02/oradata/prod1/vdisk
          
          3b.安裝 CRS 軟件。

          安裝 CRS 軟件之前,請關閉監聽程序、數據庫和 ASM 實例。裝入 CRS CD 或從 OTN 下載該軟件。只應在第一個節點上啟動 OUI。安裝過程中,安裝程序將該軟件自動復制到第二個節點。

          [oracle@salmon1]$ export ORACLE_BASE=/u01/app/oracle
          [oracle@salmon1]$ /mnt/cdrom/runInstaller
          
          1. 歡迎 - 單擊“Next”。
          2. 指定文件位置:
            1. 名稱:OraCr10g_home1
            2. 路徑:/u01/app/oracle/product/10.1.0/crs_1
          3. 語言選擇 - 英語
          4. 集群配置:
            1. 集群名稱:crs
            2. 公共節點名稱:salmon1,專用節點名稱:sallocal1
            3. 公共節點名稱:salmon2,專用節點名稱:sallocal2
          5. 專用互連實施:
            1. 接口名稱:eth0,子網:192.168.0.0,接口類型:公共
            2. 接口名稱:eth1,子網:10.10.10.0,接口類型:專用
          6. Oracle 集群注冊表:
            1. 指定 OCR 位置:/u02/oradata/prod1/ocr
          7. Voting Disk:
            1. 輸入 Voting disk 文件名稱:/u02/oradata/prod1/vdisk
          8. 在第一個節點上以 root 用戶的身份在另一個窗口中執行 /u01/app/oracle/oraInventory/orainstRoot.sh 腳本。
          9. 在第二個節點上以 root 用戶的身份在開一個窗口中執行 /u01/app/oracle/oraInventory/orainstRoot.sh 腳本。
          10. 在兩個節點上運行 orainstRoot.sh 后單擊“Continue”。
          11. 摘要 - 單擊“Install”
          12. 在第一個節點上以 root 用戶的身份在另一個窗口中執行 /u01/app/oracle/product/10.1.0/crs_1/root.sh 腳本。在該步驟完成之前,不要運行下一個步驟。
          13. 在第二個節點上以 root 用戶的身份在另一個窗口中執行 /u01/app/oracle/product/10.1.0/crs_1/root.sh 腳本。
          14. 在兩個節點上運行 root.sh 后單擊“OK”。
          15. 安裝結束 - 單擊“Exit”。
          [oracle@salmon1]$ /u01/app/oracle/product/10.1.0/crs_1/bin/olsnodes -n
          salmon1 1
          salmon2 2
          [oracle@salmon1]$ ps -ef | egrep "css|crs|evm"

          第 4 步:安裝 Oracle RAC 軟件

          4a.編輯 oracle 用戶環境文件。

          在節點 1 上,設置 ORACLE_SID=prod1a。

          在節點 2 上,設置 ORACLE_SID=prod1b。

          [oracle@salmon1]$ more .bash_profile
          # .bash_profile
          
          # Get the aliases and functions
          if [ -f ~/.bashrc ]; then
          . ~/.bashrc
          fi
          
          export PATH=$PATH:$HOME/bin
          export ORACLE_SID=prod1a
          export ORACLE_BASE=/u01/app/oracle
          export ORACLE_HOME=$ORACLE_BASE/product/10.1.0/db_1
          export ORA_CRS_HOME=$ORACLE_BASE/product/10.1.0/crs_1
          export LD_LIBRARY_PATH=$ORACLE_HOME/lib
          export PATH=$ORACLE_HOME/bin:$PATH
          umask 022
          
          4b.安裝 RAC 軟件。

          裝入 Oracle 數據庫 10g 企業版 CD 或從 OTN 下載該軟件。只在第一個節點上啟動 OUI。安裝過程中,安裝程序將該軟件自動復制到第二個節點。

          [oracle@salmon1]$ .~/.bash_profile
          [oracle@salmon1]$ /mnt/cdrom/runInstaller
          
          1. 歡迎 - 單擊“Next”。
          2. 指定文件位置:
            1. 名稱:OraDB10g_home1
            2. 路徑:/u01/app/oracle/product/10.1.0/db_1
          3. 指定硬件安裝模式:
            1. 選擇“Cluster Installation”
            2. 單擊“Select All”
          4. 選擇安裝模式:
            1. 選擇“Enterprise Edition”
          5. 特定產品必要條件檢查:
            1. 所有檢查均通過后,才可繼續下一步。忽略 openmotif-2.1.30-11 警告。
          6. 選擇數據庫配置:
            1. 選擇“Do not create a starter database”
          7. 摘要 - 單擊“Install”
          8. 在第一個節點上以 root 用戶的身份在另一個窗口中執行 /u01/app/oracle/product/10.1.0/db_1/root.sh 腳本。在 VIP 配置完成前,不要在第二個節點上運行 root.sh。
          9. VIPCA 歡迎 - 單擊“Next”
          10. VIP 配置幫助, 1 of 2:網絡接口:
            1. 選擇“eth0”
          11. VIP 配置幫助, 2 of 2:集群節點的虛擬 IP:
            1. 節點名稱:salmon1
            2. IP 假名:salmon1-vip
            3. IP 地址: 192.168.0.186
            4. 子網掩碼: 255.255.255.0
            5. 節點名稱:salmon2
            6. IP 假名:salmon2-vip
            7. IP 地址: 192.168.0.187
            8. 子網掩碼: 255.255.255.0
          12. 摘要 - 單擊“Finish”
          13. 配置助手進度對話框 - 單擊“OK”
          14. 配置結果 - 單擊“Exit”
          15. 在第二個節點上以 root 用戶的身份在另一個窗口中執行 /u01/app/oracle/product/10.1.0/db_1/root.sh 腳本。
          16. 在兩個節點上運行 root.sh 后單擊“OK”。
          17. 安裝結束 - 單擊“Exit”。
          4c.配置 Oracle Listener。

          只應在一個節點上啟動和配置網絡配置助手 (NETCA)。在配置過程結束時,NETCA 將在兩個節點上啟動 Oracle listener。

          [oracle@salmon1]$ netca 
          
          1. Oracle 網絡配置助手:真正應用集群,配置:
            1. 選擇“Cluster configuration”
          2. Oracle 網絡配置助手:TOPSNodes:
            1. 單擊“Select all nodes”
          3. Oracle 網絡配置助手:歡迎
            1. 選擇“Listener configuration”
          4. Oracle 網絡配置助手:監聽程序配置,監聽程序:
            1. 選擇“Add”
          5. Oracle 網絡配置助手:監聽程序配置,監聽程序名稱:
            1. 監聽程序名稱:LISTENER
          6. Oracle 網絡配置助手:監聽程序配置,擇協議
            1. 已選協議:TCP
          7. Oracle 網絡配置助手:監聽程序配置,TCP/IP 協議:
            1. 選擇“Use the standard port number of 1521”
          8. Oracle 網絡配置助手:監聽程序配置,增加監聽程序?
            1. 選擇“No”
          9. Oracle 網絡配置助手:監聽程序配置完成:
            1. 單擊“Next”
          10. Oracle 網絡配置助手:歡迎
            1. 選擇“Naming Methods configuration”
            2. 單擊“Next”
          11. Oracle 網絡配置助手:命名方式配置:選擇命名方式:
            1. 選擇“Local Naming”
          12. Oracle 網絡配置助手:命名方式配置完成:
            1. 單擊“Next”
          13. Oracle 網絡配置助手:歡迎
            1. 單擊“Finish”
          4d.驗證服務的狀態。

          在節點 1 上:

          [oracle@salmon1]$ srvctl status nodeapps -n salmon1
          VIP is running on node:salmon1
          GSD is running on node:salmon1
          Listener is running on node:salmon1
          ONS daemon is running on node:salmon1
          
          在節點 2 上:
          [oracle@salmon2]$ srvctl status nodeapps -n salmon2
          VIP is running on node:salmon2
          GSD is running on node:salmon2
          Listener is running on node:salmon2
          ONS daemon is running on node:salmon2
          
          4e. listener.ora 文件

          在節點 1 上:

          [oracle@salmon1]$ more $ORACLE_HOME/network/admin/listener.ora
          
          LISTENER_SALMON1 =
          (DESCRIPTION_LIST =
          (DESCRIPTION=
          (ADDRESS_LIST=
          (ADDRESS = (PROTOCOL = TCP)(HOST = salmon1-vip)(PORT = 1521))
                )
          (ADDRESS_LIST=
          (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.0.184)(PORT = 1521))
                )
              )
            )
          
          SID_LIST_LISTENER_SALMON1 =
          (SID_LIST =
          (SID_DESC =
          (SID_NAME = PLSExtProc)
          (ORACLE_HOME = /u01/app/oracle/product/10.1.0/db_1)
          (PROGRAM = extproc)
                )
            )
          
          在節點 2 上:
          [oracle@salmon2]$ more $ORACLE_HOME/network/admin/listener.ora
          
          LISTENER_SALMON2 =
          (DESCRIPTION_LIST =
          (DESCRIPTION=
          (ADDRESS_LIST=
          (ADDRESS = (PROTOCOL = TCP)(HOST = salmon2-vip)(PORT = 1521))
                )
          (ADDRESS_LIST=
          (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.0.185)(PORT = 1521))
                )
              )
            )
          
          SID_LIST_LISTENER_SALMON2 =
          (SID_LIST =
          (SID_DESC =
          (SID_NAME = PLSExtProc)
          (ORACLE_HOME = /u01/app/oracle/product/10.1.0/db_1)
          (PROGRAM = extproc)
                )
            )
          
          4f. tnsnames.ora 文件

          在兩個節點上:

          [oracle@salmon1]$ more $ORACLE_HOME/network/admin/tnsnames.ora
          LISTENERS_PROD1 =
          (ADDRESS_LIST=
          (ADDRESS = (PROTOCOL = TCP)(HOST = salmon1-vip)(PORT = 1521))
          (ADDRESS = (PROTOCOL = TCP)(HOST = salmon2-vip)(PORT = 1521))
            )
          
          PROD1 =
          (DESCRIPTION=
          (ADDRESS = (PROTOCOL = TCP)(HOST = salmon1-vip)(PORT = 1521))
          (ADDRESS = (PROTOCOL = TCP)(HOST = salmon2-vip)(PORT = 1521))
          (LOAD_BALANCE = yes)
          (CONNECT_DATA=
          (SERVICE_NAME = PROD1)
          (FAILOVER_MODE =
          (TYPE = SELECT)
          (METHOD = BASIC)
          (RETRIES = 200)
          (DELAY = 5)
                    )
                )
            )
          PROD1A =
          (DESCRIPTION=
          (ADDRESS = (PROTOCOL = TCP)(HOST = salmon1-vip)(PORT = 1521))
          (CONNECT_DATA=
          (SERVER = DEDICATED)
          (SERVICE_NAME = PROD1)
          (INSTANCE_NAME = PROD1A)
              )
          )
          
          PROD1B =
          (DESCRIPTION=
          (ADDRESS = (PROTOCOL = TCP)(HOST = salmon2-vip)(PORT = 1521))
          (CONNECT_DATA=
          (SERVER = DEDICATED)
          (SERVICE_NAME = PROD1)
          (INSTANCE_NAME = PROD1B)
                )
            )

          第 5 步:后續安裝

          5a.在第一個節點上重新定位 ASM 實例文件。

          將 ASM 實例口令文件和 spfile+ASM1A.ora 復制到新的 Oracle Home。

          [oracle@salmon1]$ cp /u01/app/oracle/product/10.1.0/dbs/orapw+ASM1A 
          /u01/app/oracle/product/10.1.0/db_1/dbs
          [oracle@salmon1]$ cp /u01/app/oracle/product/10.1.0/dbs/spfile+ASM1A.ora 
          /u01/app/oracle/product/10.1.0/db_1/dbs 
          
          5b.為第二個 ASM 實例創建 init.ora。

          在第二個節點上,在 $ORACLE_HOME/dbs 中創建一個 init+ASM1B.ora 文件。

          asm_diskgroups='DG1', a€?DG2a€?, a€?RECOVERYDESTa€?
          asm_diskstring='ORCL:VOL*'
          background_dump_dest=/u01/app/oracle/admin/+ASM/bdump
          core_dump_dest=/u01/app/oracle/admin/+ASM/cdump
          user_dump_dest=/u01/app/oracle/admin/+ASM/udump
          instance_type=asm
          large_pool_size=16M
          remote_login_passwordfile=exclusive
          +ASM1A.instance_number=1
          +ASM1B.instance_number=2
          
          5c.為第二個 ASM 實例創建口令文件。

          使用 orapwd 實用程序在第二個節點上的 $ORACLE_HOME/dbs 中創建一個 orapw+ASM1B 文件。

          5d.創建第二個 ASM 實例。

          在第二個節點上創建第二個 ASM 實例。

          [oracle@salmon2]$ export ORACLE_SID=+ASM1B
          [oracle@salmon2]$ sqlplus / as sysdba
          
          SQL*Plus:Release 10.1.0.3.0 - Production on Thu May 26 18:43:14 2005
           
          Copyright (c) 1982, 2004, Oracle.保留所有權利。
           
          Connected to an idle instance.
           
          SQL> startup
          ORACLE instance started.
           
          Total System Global Area  104857600 bytes
          Fixed Size                   777616 bytes
          Variable Size             104079964 bytes
          Database Buffers           0 bytes
          Redo Buffers                 0 bytes
          ASM diskgroups mounted
          SQL> create spfile from pfile;
          
          File created.
          
          SQL> shutdown immediate;
          
          5e.使用 CRS 注冊 ASM 實例。

          為實現更高的可用性,請在 CRS 框架下注冊 ASM 實例。注冊后,CRS 應檢測到任何失敗的實例,并自動嘗試啟動這些實例。重新啟動服務器后,CRS 還將自動啟動這些實例。

          在節點 1 上:

          [oracle@salmon1]$ srvctl add asm -n salmon1 -i +ASM1A -o /u01/app/oracle/product/10.1.0/db_1
          [oracle@salmon1]$ srvctl start asm -n salmon1 
          [oracle@salmon1]$ srvctl status asm -n salmon1 
          ASM instance +ASM1A is running on node salmon1. 
          
          在節點 2 上:
          [oracle@salmon2]$ srvctl add asm -n salmon2 -i +ASM1B -o /u01/app/oracle/product/10.1.0/db_1
          [oracle@salmon2]$ srvctl start asm -n salmon2 
          [oracle@salmon2]$ srvctl status asm -n salmon2 
          ASM instance +ASM1B is running on node salmon2.  
          
          [oracle@salmon1]$ ps -ef | grep dbw | grep -v grep
          oracle    8918     1  0   May 26 ?00:00:01 asm_dbw0_+ASM1A
          [oracle@salmon1]$ kill -9 8918
          [oracle@salmon1]$ srvctl status asm a€“n salmon1
          ASM instance +ASM1A is not running on node salmon1.
          [oracle@salmon1]$ ps -ef | grep dbw | grep -v grep
          [oracle@salmon1]$ srvctl status asm a€“n salmon1
          ASM instance +ASM1A is running on node salmon1.
          [oracle@salmon1]$ ps -ef | grep dbw | grep -v grep
          oracle    8920     1  0   May 26 ?00:00:01 asm_dbw0_+ASM1A
          
          5f.為兩個 RAC 實例創建口令文件。

          使用 orapwd 實用程序在第一個節點上的 $ORACLE_HOME/dbs 中創建一個 orapwprod1a 文件,并在第二個節點上的 $ORACLE_HOME/dbs 中創建 orapwprod1b 文件。

          5g.在 pfile 中添加 RAC 特定參數。

          修改在第 2 步中保存的 pfile。添加并修改以下參數:

          *.cluster_database_instances=2
          *.cluster_database=true
          *.remote_listener='LISTENERS_PROD1a€?
          prod1a.thread=1
          prod1a.instance_number=1
          prod1a.undo_tablespace='UNDOTBS1'
          prod1b.thread=2
          prod1b.instance_number=2
          prod1b.undo_tablespace='UNDOTBS2'
          
          5h.修改兩個實例的 init.ora。

          在節點 1 上:

          [oracle@salmon1]$ more $ORACLE_HOME/dbs/initprod1a.ora
          spfile='+DG1/spfileprod1.ora'
          
          在節點 2 上:
          [oracle@salmon2]$ more $ORACLE_HOME/dbs/initprod1b.ora
          spfile='+DG1/spfileprod1.ora'
          
          5i.將數據庫 spfile 移植到 ASM。
          SQL> !echo $ORACLE_SID
          prod1a
          
          SQL> connect / as sysdba
          Connected to an idle instance.
          SQL> startup pfile=/tmp/tmppfile.ora
          ORACLE instance started.
          
          Total System Global Area  419430400 bytes
          Fixed Size                   779416 bytes
          Variable Size             128981864 bytes
          Database Buffers           289406976 bytes
          Redo Buffers                 262144 bytes
          Database mounted.
          Database opened.
          
          SQL> create spfile='+DG1/spfileprod1.ora' from pfile='/tmp/tmppfile.ora';
          
          File created.
          
          SQL> shutdown immediate;
          Database closed.
          Database dismounted.
          ORACLE instance shut down.
          SQL> startup
          ORACLE instance started.
           
          Total System Global Area  419430400 bytes
          Fixed Size                   779416 bytes
          Variable Size             128981864 bytes
          Database Buffers           289406976 bytes
          Redo Buffers                 262144 bytes
          Database mounted.
          Database opened.
          SQL> show parameter spfile
           
          NAME                 TYPE        VALUE
          ----------------------     ------------     ---------------------------
          spfile                     string           +DG1/spfileprod1.ora
          
          5j.創建 RAC 數據詞典視圖。

          在第一個 RAC 實例上創建 RAC 數據詞典視圖。

          SQL> !echo $ORACLE_SID
          prod1a
          
          SQL> spool /tmp/catclust.log
          SQL> @$ORACLE_HOME/rdbms/admin/catclust
          ...
          ...
          ...
          SQL> spool off
          SQL> shutdown immediate;
          
          5k.使用 CRS 注冊 RAC 實例。

          在節點 1 上:

          [oracle@salmon1]$ srvctl add database -d prod1 -o $ORACLE_HOME 
          [oracle@salmon1]$ srvctl add instance -d prod1 -i prod1a -n salmon1
          [oracle@salmon1]$ srvctl add instance -d prod1 -i prod1b -n salmon2
          [oracle@salmon1]$ srvctl start instance -d prod1 -i prod1a
          
          5l.為第二個 RAC 實例創建重做日志。
          SQL> connect sys/sys@prod1a as sysdba
          Connected.
          SQL> alter database add logfile thread 2 group 3 size 100M;
          SQL> alter database add logfile thread 2 group 4 size 100M;
          SQL> select group#, member from v$logfile;
           
          GROUP#    MEMBER
          ---------------    ----------------------------------------
          1    +DG1/prod1/onlinelog/group_1.265.3  
          1    +DG2/prod1/onlinelog/group_1.257.1  
          2    +DG1/prod1/onlinelog/group_2.266.3  
          2    +DG2/prod1/onlinelog/group_2.258.1   
          3    +DG1/prod1/onlinelog/group_3.268.1
          3    +DG2/prod1/onlinelog/group_3.259.1
          4    +DG1/prod1/onlinelog/group_4.269.1
          4    +DG2/prod1/onlinelog/group_4.260.1
          
          8 rows selected.
          
          SQL> alter database enable thread 2;
          
          Database altered.
          
          5m.為第二個 RAC 實例創建重做表空間。
          SQL> create undo tablespace UNDOTBS2 datafile size 200M;
          
          SQL> select tablespace_name, file_name from dba_data_files
          2    where tablespace_name=a€?UNDOTBS2a€?;
           
          TABLESPACE               FILE_NAME                                          
          ---------------------    --------------------------------------
          UNDOTBS2                 +DG1/prod1/datafile/undotbs2.270.1   
          
          5n.啟動第二個 RAC 實例。
          [oracle@salmon1]$ srvctl start instance -d prod1 -i prod1b
          [oracle@salmon1]$ crs_stat -t
          Name                 Type            Target     State      Host        
          -----------------------------------------------------------------------
          ora....1a.inst       application     ONLINE     ONLINE     salmon1 
          ora....1b.inst       application     ONLINE     ONLINE     salmon2
          ora.prod1.db         application     ONLINE     ONLINE     salmon1
          ora....M1A.asm       application     ONLINE     ONLINE     salmon1
          ora....M1B.asm       application     ONLINE     ONLINE     salmon2
          ora....N1.lsnr       application     ONLINE     ONLINE     salmon1
          ora....on1.gsd       application     ONLINE     ONLINE     salmon1
          ora....on1.ons       application     ONLINE     ONLINE     salmon1
          ora....on1.vip       application     ONLINE     ONLINE     salmon1
          ora....N2.lsnr       application     ONLINE     ONLINE     salmon2 
          ora....on2.gsd       application     ONLINE     ONLINE     salmon2
          ora....on2.ons       application     ONLINE     ONLINE     salmon2
          ora....on2.vip       application     ONLINE     ONLINE     salmon2
          [oracle@salmon1]$ srvctl status database -d prod1
          Instance prod1a is running on node salmon1
          Instance prod1b is running on node salmon2
          [oracle@salmon1]$ srvctl stop database -d prod1
          [oracle@salmon1]$ srvctl start database -d prod1
          [oracle@salmon1]$ sqlplus system/system@prod1
          
          SQL*Plus:Release 10.1.0.3.0 - Production on Fri May 27 05:53:21 2005
           
          Copyright (c) 1982, 2004, Oracle.保留所有權利。
           
          
          Connected to:
          Oracle Database 10g Enterprise Edition Release 10.1.0.3.0 - Production
          With the Partitioning, Real Application Clusters, OLAP and Data Mining options
          
          SQL> select instance_number instance#, instance_name, host_name, status 
          2    from gv$instance;
             
          INSTANCE#   INSTANCE_NAME     HOST_NAME                 STATUS
          -----------------   ----------------- ------------------------- -----------
          1   prod1a            salmon1.dbsconsult.com    OPEN
          2   prod1b            salmon2.dbsconsult.com    OPEN
          
          恭喜您!您已經將單一實例數據庫轉換為 RAC!


          第 6 步:測試透明應用程序故障切換 (TAF)

          Oracle TAF 中的故障切換機制使任何失敗的數據庫連接能夠重新連接到集群中的其他節點。故障切換對用戶是透明的。Oracle 在故障切換實例上重新執行查詢并繼續向用戶顯示余下的結果。

          為示范 TAF 選件的故障切換機制,請連接到兩個不同的數據庫會話并執行以下步驟:

          6a.使用 PROD1 服務連接第一個會話。

          如果 failover_type 和 failover_mode 返回的輸出為“NONE”,則驗證是否在 tnsnames.ora 中正確配置了 PROD1 服務。

          SQL> connect system/system@prod1 as sysdba
          Connected.
          
          SQL> select instance_number instance#, instance_name, host_name, status 
          2    from v$instance;
             
          INSTANCE#   INSTANCE_NAME   HOST_NAME                 STATUS                                         
           -----------------   --------------  ------------------------- ----------------
          1   prod1a          salmon1.dbsconsult.com    OPEN
          
          SQL> select failover_type, failover_method, failed_over 
          2    from v$session where username='SYSTEM';
           
          FAILOVER_TYPE              FAILOVER_MODE        FAILED_OVER
          -------------------------  -------------------- ----------------------
          SELECT        BASIC           NO
          
          6b.從其他會話中關閉該實例。

          在 prod1a 實例上以 sys 用戶的身份連接,并關閉該實例。

          SQL> connect sys/sys@prod1a as sysdba
          Connected.
          
          SQL> select instance_number instance#, instance_name, host_name, status 
          2    from v$instance;
             
          INSTANCE#   INSTANCE_NAME      HOST_NAME                 STATUS                                         
          -----------------   ----------------   ------------------------  ----------------
          1   prod1a             salmon1.dbsconsult.com    OPEN
          
          SQL> shutdown abort;    
          ORACLE instance shut down.
          
          6c.驗證該會話是否已經完成故障切換。

          從第 6 步中的同一會話執行以下查詢以驗證該會話是否故障切換到其他實例。

          SQL> select instance_number instance#, instance_name, host_name, status 
          2    from v$instance;
             
          INSTANCE#   INSTANCE_NAME      HOST_NAME                 STATUS                                         
          -----------------   ----------------   ------------------------  ----------------
          2   prod1b             salmon2.dbsconsult.com    OPEN
          
          SQL> select failover_type, failover_method, failed_over 
          2    from v$session where username='SYSTEM';
           
          FAILOVER_TYPE      FAILOVER_MODE   FAILED_OVER
          -----------------  --------------  ----------------------
          SELECT             BASIC            YES


          結論

          了解了 RAC 體系結構并進行恰當規劃后,從單一實例數據庫轉移到 RAC 配置并不一定很復雜。ASM 和 RAC 相互支持以提供更高級別的可用性、可伸縮性和業務連續性。衷心希望本指南提供了清晰、準確的轉換執行方法。

          posted on 2006-11-10 15:25 Coundy 閱讀(364) 評論(0)  編輯  收藏 所屬分類: Linux
          主站蜘蛛池模板: 蓬莱市| 全椒县| 同江市| 舟山市| 龙泉市| 澎湖县| 武夷山市| 赤城县| 孙吴县| 安义县| 济源市| 桃园市| 永定县| 亳州市| 柳河县| 颍上县| 高邮市| 龙井市| 浙江省| 高碑店市| 塔河县| 平陆县| 清苑县| 秦安县| 昭平县| 漳州市| 隆德县| 长沙县| 无极县| 伊宁县| 鄱阳县| 八宿县| 肇州县| 永顺县| 华坪县| 大港区| 安仁县| 洱源县| 府谷县| 板桥市| 武强县|