<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    Coundy

       漫步風(fēng)中,傾聽(tīng)自己的腳步,在自我沉浸中,找尋逝去的靈魂

    posts - 27,comments - 2,trackbacks - 0

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

    對(duì)于那些具有有限操作經(jīng)驗(yàn)的用戶(hù)而言,實(shí)施 Oracle RAC 10g 的前景令人生畏。但事情并不一定如此。

    本指南將提供明確的步驟,引導(dǎo)您在 RHEL3 上將單一實(shí)例 Oracle 10g 數(shù)據(jù)庫(kù)轉(zhuǎn)換為 Oracle RAC。我將 Oracle 自動(dòng)存儲(chǔ)管理 (ASM)(一個(gè)構(gòu)建到 Oracle 數(shù)據(jù)庫(kù)內(nèi)核中的集成文件系統(tǒng)和卷管理解決方案)用于 RAC 數(shù)據(jù)庫(kù)存儲(chǔ),因?yàn)樗坏峁┝舜鎯?chǔ)可靠性和高性能,還簡(jiǎn)化了數(shù)據(jù)庫(kù)存儲(chǔ)管理。

    總的說(shuō)來(lái),有多種方法可以將數(shù)據(jù)庫(kù)轉(zhuǎn)換為 RAC。如果數(shù)據(jù)庫(kù)比較小,則可以考慮在 ASM 上安裝一個(gè)新的 RAC 數(shù)據(jù)庫(kù),并將當(dāng)前數(shù)據(jù)庫(kù)中的數(shù)據(jù)導(dǎo)出/導(dǎo)入到 RAC 數(shù)據(jù)庫(kù)。對(duì)于較大的數(shù)據(jù)庫(kù),首選的方法是使用 RMAN 將數(shù)據(jù)庫(kù)文件移植到 ASM。這里所要說(shuō)明的方法是一個(gè)分為兩個(gè)階段的方法:首先,將數(shù)據(jù)移植到 ASM,然后將單一實(shí)例數(shù)據(jù)庫(kù)轉(zhuǎn)換為 RAC。如果您是對(duì) ASM 不了解,建議您采用此移植方法,先熟悉 ASM,然后再進(jìn)一步運(yùn)用 ASM 和 RAC。(有關(guān) Oracle ASM 的更多信息,請(qǐng)?jiān)L問(wèn) Oracle ASM 產(chǎn)品中心或參考文檔。)

    本指南要求您對(duì) RAC 體系結(jié)構(gòu)有一個(gè)基本了解,對(duì) Oracle 數(shù)據(jù)庫(kù)和 Red Hat Enterprise Linux 的管理較為熟悉。有關(guān)詳細(xì)信息,請(qǐng)參考文檔


    概述

    RAC 集群由兩臺(tái)運(yùn)行 RHEL3(內(nèi)核 2.4.21-27)的 Intel x86 服務(wù)器組成。每個(gè)節(jié)點(diǎn)都可以訪(fǎng)問(wèn)共享存儲(chǔ)器并可以連接到公共網(wǎng)絡(luò)和專(zhuān)用網(wǎng)絡(luò)。

    本指南分為以下步驟:

    1. 準(zhǔn)備安裝
    2. 將數(shù)據(jù)庫(kù)移植到 ASM
    3. 安裝 Oracle 集群就緒服務(wù) (CRS) 軟件
    4. 安裝 Oracle RAC 軟件
    5. 后續(xù)安裝
    6. 測(cè)試透明應(yīng)用程序故障切換 (TAF)
    除非另行指定,否則應(yīng)在兩個(gè)節(jié)點(diǎn)上執(zhí)行所有步驟。

    以下是在轉(zhuǎn)換到 RAC 之前的單一實(shí)例數(shù)據(jù)庫(kù)環(huán)境的情況介紹:

    主機(jī)名
    實(shí)例名
    數(shù)據(jù)庫(kù)名
    $ORACLE_BASE
    數(shù)據(jù)庫(kù)文件存儲(chǔ)
    salmon1prod1prod1/u01/app/oracleext3

    和 RAC 數(shù)據(jù)庫(kù)環(huán)境情況介紹:

    主機(jī)名
    實(shí)例名
    數(shù)據(jù)庫(kù)名
    $ORACLE_BASE
    數(shù)據(jù)庫(kù)文件存儲(chǔ)
    OCR 和 CRS Voting Disk
    salmon1prod1aprod1/u01/app/oracleASM原始
    salmon2prod1bprod1/u01/app/oracleASM原始

    您將在每個(gè)節(jié)點(diǎn)上安裝 Oracle Home 以實(shí)現(xiàn)冗余。ASM 和 RAC 實(shí)例在每個(gè)節(jié)點(diǎn)上共享同一 Oracle Home。

    第 1 步:準(zhǔn)備安裝

    1a.檢驗(yàn)軟件程序包版本。

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

    [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.檢驗(yàn)內(nèi)核參數(shù)。

    檢驗(yàn)以下內(nèi)核參數(shù)。其他信息可以從文檔中獲得。

    [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.創(chuàng)建 Oracle Base 目錄、oracle 用戶(hù)和組。

    在第一個(gè)節(jié)點(diǎn)上使用下面的信息,在第二個(gè)節(jié)點(diǎn)上創(chuàng)建 oracle 用戶(hù)以及 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 用戶(hù)環(huán)境文件。
    [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 用戶(hù) 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.配置公共網(wǎng)絡(luò)和專(zhuān)用網(wǎng)絡(luò)。

    使用下面的信息對(duì)網(wǎng)絡(luò)接口設(shè)備 eth0(公共)和 eth1(專(zhuān)用)進(jìn)行必需的更改。

    [root@salmon1]# redhat-config-network
    
    主機(jī)名
    IP 地址
    類(lèi)型
    salmon1.dbsconsult.com192.168.0.184公共 (eth0)
    salmon2.dbsconsult.com192.168.0.185公共 (eth0)
    salmon1.dbsconsult.com10.10.10.84專(zhuān)用 (eth1)
    salmon2.dbsconsult.com10.10.10.85專(zhuān)用 (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
    
    驗(yàn)證主機(jī)名和配置的網(wǎng)絡(luò)接口設(shè)備。
    [root@salmon1]# hostname
    salmon1.dbsconsult.com
    [root@salmon1]# /sbin/ifconfig
    

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

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

    要建立用戶(hù)等效性,請(qǐng)?jiān)趦蓚€(gè)節(jié)點(diǎn)上以 oracle 用戶(hù)的身份生成用戶(hù)的公鑰和私鑰。

    [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
    
    在每個(gè)節(jié)點(diǎn)上測(cè)試連接。驗(yàn)證當(dāng)您再次運(yùn)行以下命令時(shí),系統(tǒng)是否不提示您輸入口令。
    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 內(nèi)核模塊。

    hangcheck timer 內(nèi)核模塊監(jiān)控系統(tǒng)的運(yùn)行情況,并重新啟動(dòng)出現(xiàn)故障的 RAC 節(jié)點(diǎn)。它使用兩個(gè)參數(shù),即 hangcheck_tick(定義系統(tǒng)檢查頻率)和 hangcheck_margin(定義在重置 RAC 節(jié)點(diǎn)前的最大掛起延時(shí))來(lái)確定節(jié)點(diǎn)是否出現(xiàn)故障。

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

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

    在轉(zhuǎn)換到 RAC 之前,確保在控制文件中正確調(diào)整以下項(xiàng)的大小。如果需要,請(qǐng)使用正確的設(shè)置重新創(chuàng)建數(shù)據(jù)庫(kù)控制文件。

    MAXLOGFILES
    MAXLOGMEMBERS
    MAXDATAFILES
    MAXINSTANCES
    MAXLOGHISTORY
    
    1k.調(diào)整數(shù)據(jù)庫(kù)緩沖區(qū)高速緩存。

    從單一實(shí)例數(shù)據(jù)庫(kù)轉(zhuǎn)換到 RAC 時(shí),數(shù)據(jù)庫(kù)緩沖區(qū)高速緩存需要額外的內(nèi)存。在 RAC 中,為每個(gè)塊緩沖區(qū)高速緩存中的全局高速緩存服務(wù) (GCS) 分配空間。所需的額外內(nèi)存量取決于應(yīng)用程序訪(fǎng)問(wèn)數(shù)據(jù)的方式,即同一個(gè)塊是否高速緩存到多個(gè)實(shí)例中。

    在演示實(shí)驗(yàn)中,我觀(guān)察到緩沖區(qū)高速緩存的使用率增加了大約 8%。使用緩沖區(qū)高速緩存顧問(wèn)確定最佳的緩沖區(qū)高速緩存大小,或切換到 Oracle 自動(dòng)共享內(nèi)存管理 (ASMM) 讓 Oracle 進(jìn)行控制。


    第 2 步:將數(shù)據(jù)庫(kù)移植到 ASM

    ASM 實(shí)例與數(shù)據(jù)庫(kù)實(shí)例之間的同步需要 Oracle 集群同步服務(wù) (CSS) 后臺(tái)程序。要啟動(dòng) ASM 實(shí)例,必須啟動(dòng) CSS 后臺(tái)程序。安裝或升級(jí)到 Oracle 數(shù)據(jù)庫(kù) 10g 時(shí),應(yīng)該已經(jīng)為單節(jié)點(diǎn)版本配置了 CSS,并且 CSS 應(yīng)在系統(tǒng)重新啟動(dòng)時(shí)自動(dòng)啟動(dòng)。

     
    [root@salmon1]# ps a€“ef | grep ocssd.bin | wc a€“l(fā) 
          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 內(nèi)核的驅(qū)動(dòng)程序)或 oracleasm-2.4.21-27.ELsmp-1.0.4-1.i686.rpm(SMP 內(nèi)核的驅(qū)動(dòng)程序)
    • oracleasmlib-2.0.0-1.i386.rpm

    2b.安裝 ASM RPM。

    以 root 用戶(hù)的身份安裝 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 用戶(hù)的身份配置 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.創(chuàng)建 ASM 磁盤(pán)。

    以 root 用戶(hù)的身份在任何一個(gè)節(jié)點(diǎn)上創(chuàng)建 ASM 磁盤(pán)。

    [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  ]
    
    驗(yàn)證能否從每個(gè)節(jié)點(diǎn)看到 ASM 磁盤(pán)。
    [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.創(chuàng)建 ASM init.ora。

    在第一個(gè)節(jié)點(diǎn)上,使用以下參數(shù)在 $ORACLE_HOME/dbs 中創(chuàng)建一個(gè) 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.創(chuàng)建 ASM 口令文件

    使用 orapwd 實(shí)用程序在第一個(gè)節(jié)點(diǎn)上的 $ORACLE_HOME/dbs 中創(chuàng)建一個(gè) orapw+ASM1A 文件。

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

    在第一個(gè)節(jié)點(diǎn)上創(chuàng)建第一個(gè) ASM 實(shí)例。將 CRS 軟件安裝到第二個(gè)節(jié)點(diǎn)后,將在“后續(xù)安裝”中創(chuàng)建第二個(gè) ASM 實(shí)例。

    [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.保留所有權(quán)利。
     
    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.創(chuàng)建 ASM 實(shí)例 spfile。

    在 ASM 實(shí)例啟動(dòng)后立即創(chuàng)建一個(gè) spfile。使用 spfile 文件,任何新建的磁盤(pán)組都將自動(dòng)添加到 spfile 文件。

    SQL> create spfile from pfile;
    
    File created.
    
    2i.創(chuàng)建磁盤(pán)組

    創(chuàng)建三個(gè)磁盤(pán)組:DG1、DG2 和 RECOVERYDEST。DG1 和 DG2 將用于存儲(chǔ) Oracle 數(shù)據(jù)文件和重做日志。RECOVERYDEST 將用作閃回恢復(fù)區(qū)。

    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.配置閃回恢復(fù)區(qū)。
    	
    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.將數(shù)據(jù)文件移植到 ASM

    必須使用 RMAN 將數(shù)據(jù)文件移植到 ASM 磁盤(pán)組。所有數(shù)據(jù)文件都將移植到新創(chuàng)建的磁盤(pán)組 DG1。在 DG1 和 DG2 中創(chuàng)建重做日志和控制文件。在生產(chǎn)環(huán)境中,應(yīng)將重做日志存儲(chǔ)到與余下的 Oracle 數(shù)據(jù)文件不同的磁盤(pán)組和磁盤(pán)控制器上。

    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.將臨時(shí)表空間移植到 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。

    刪除現(xiàn)有的重做日志,并在 ASM 磁盤(pán)組 DG1 和 DG2 中重新創(chuàng)建它們。

    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 文件創(chuàng)建 pfile 文件。

    創(chuàng)建并保留數(shù)據(jù)庫(kù) pfile 的副本。您將稍后在“后續(xù)安裝”中向 pfile 中添加更多的 RAC 特定參數(shù)。

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

    如果需要其他控制文件以實(shí)現(xiàn)冗余,則可以在 ASM 中創(chuàng)建它,方法與在其他任何文件系統(tǒng)中創(chuàng)建相同。

    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
    
    將所有數(shù)據(jù)文件成功移植到 ASM 后,將不再需要舊的數(shù)據(jù)文件并可以將其刪除。您的單一實(shí)例數(shù)據(jù)庫(kù)現(xiàn)在在 ASM 上運(yùn)行!


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

    CRS 要求共享原始設(shè)備或 Oracle 集群文件系統(tǒng) (OCFS) 上有兩個(gè)文件,即 Oracle 集群注冊(cè)表 (OCR) 和 Voting Disk。這些文件必須可以由集群中的所有節(jié)點(diǎn)訪(fǎng)問(wèn)。此處使用原始設(shè)備來(lái)容納這兩個(gè)文件。

    3a.創(chuàng)建 OCR 和 Voting Disk。

    OCR 的存儲(chǔ)器大小至少應(yīng)為 100MB,voting disk 的存儲(chǔ)器大小應(yīng)至少為 20MB。

    文件
    原始設(shè)備
    磁盤(pán)分區(qū)
    文件名
    大小 (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 軟件之前,請(qǐng)關(guān)閉監(jiān)聽(tīng)程序、數(shù)據(jù)庫(kù)和 ASM 實(shí)例。裝入 CRS CD 或從 OTN 下載該軟件。只應(yīng)在第一個(gè)節(jié)點(diǎn)上啟動(dòng) OUI。安裝過(guò)程中,安裝程序?qū)⒃撥浖詣?dòng)復(fù)制到第二個(gè)節(jié)點(diǎn)。

    [oracle@salmon1]$ export ORACLE_BASE=/u01/app/oracle
    [oracle@salmon1]$ /mnt/cdrom/runInstaller
    
    1. 歡迎 - 單擊“Next”。
    2. 指定文件位置:
      1. 名稱(chēng):OraCr10g_home1
      2. 路徑:/u01/app/oracle/product/10.1.0/crs_1
    3. 語(yǔ)言選擇 - 英語(yǔ)
    4. 集群配置:
      1. 集群名稱(chēng):crs
      2. 公共節(jié)點(diǎn)名稱(chēng):salmon1,專(zhuān)用節(jié)點(diǎn)名稱(chēng):sallocal1
      3. 公共節(jié)點(diǎn)名稱(chēng):salmon2,專(zhuān)用節(jié)點(diǎn)名稱(chēng):sallocal2
    5. 專(zhuān)用互連實(shí)施:
      1. 接口名稱(chēng):eth0,子網(wǎng):192.168.0.0,接口類(lèi)型:公共
      2. 接口名稱(chēng):eth1,子網(wǎng):10.10.10.0,接口類(lèi)型:專(zhuān)用
    6. Oracle 集群注冊(cè)表:
      1. 指定 OCR 位置:/u02/oradata/prod1/ocr
    7. Voting Disk:
      1. 輸入 Voting disk 文件名稱(chēng):/u02/oradata/prod1/vdisk
    8. 在第一個(gè)節(jié)點(diǎn)上以 root 用戶(hù)的身份在另一個(gè)窗口中執(zhí)行 /u01/app/oracle/oraInventory/orainstRoot.sh 腳本。
    9. 在第二個(gè)節(jié)點(diǎn)上以 root 用戶(hù)的身份在開(kāi)一個(gè)窗口中執(zhí)行 /u01/app/oracle/oraInventory/orainstRoot.sh 腳本。
    10. 在兩個(gè)節(jié)點(diǎn)上運(yùn)行 orainstRoot.sh 后單擊“Continue”。
    11. 摘要 - 單擊“Install”
    12. 在第一個(gè)節(jié)點(diǎn)上以 root 用戶(hù)的身份在另一個(gè)窗口中執(zhí)行 /u01/app/oracle/product/10.1.0/crs_1/root.sh 腳本。在該步驟完成之前,不要運(yùn)行下一個(gè)步驟。
    13. 在第二個(gè)節(jié)點(diǎn)上以 root 用戶(hù)的身份在另一個(gè)窗口中執(zhí)行 /u01/app/oracle/product/10.1.0/crs_1/root.sh 腳本。
    14. 在兩個(gè)節(jié)點(diǎn)上運(yùn)行 root.sh 后單擊“OK”。
    15. 安裝結(jié)束 - 單擊“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 用戶(hù)環(huán)境文件。

    在節(jié)點(diǎn) 1 上,設(shè)置 ORACLE_SID=prod1a。

    在節(jié)點(diǎn) 2 上,設(shè)置 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 數(shù)據(jù)庫(kù) 10g 企業(yè)版 CD 或從 OTN 下載該軟件。只在第一個(gè)節(jié)點(diǎn)上啟動(dòng) OUI。安裝過(guò)程中,安裝程序?qū)⒃撥浖詣?dòng)復(fù)制到第二個(gè)節(jié)點(diǎn)。

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

    只應(yīng)在一個(gè)節(jié)點(diǎn)上啟動(dòng)和配置網(wǎng)絡(luò)配置助手 (NETCA)。在配置過(guò)程結(jié)束時(shí),NETCA 將在兩個(gè)節(jié)點(diǎn)上啟動(dòng) Oracle listener。

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

    在節(jié)點(diǎn) 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
    
    在節(jié)點(diǎn) 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 文件

    在節(jié)點(diǎn) 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)
          )
      )
    
    在節(jié)點(diǎn) 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 文件

    在兩個(gè)節(jié)點(diǎn)上:

    [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 步:后續(xù)安裝

    5a.在第一個(gè)節(jié)點(diǎn)上重新定位 ASM 實(shí)例文件。

    將 ASM 實(shí)例口令文件和 spfile+ASM1A.ora 復(fù)制到新的 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.為第二個(gè) ASM 實(shí)例創(chuàng)建 init.ora。

    在第二個(gè)節(jié)點(diǎn)上,在 $ORACLE_HOME/dbs 中創(chuàng)建一個(gè) 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.為第二個(gè) ASM 實(shí)例創(chuàng)建口令文件。

    使用 orapwd 實(shí)用程序在第二個(gè)節(jié)點(diǎn)上的 $ORACLE_HOME/dbs 中創(chuàng)建一個(gè) orapw+ASM1B 文件。

    5d.創(chuàng)建第二個(gè) ASM 實(shí)例。

    在第二個(gè)節(jié)點(diǎn)上創(chuàng)建第二個(gè) ASM 實(shí)例。

    [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.保留所有權(quán)利。
     
    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 注冊(cè) ASM 實(shí)例。

    為實(shí)現(xiàn)更高的可用性,請(qǐng)?jiān)?CRS 框架下注冊(cè) ASM 實(shí)例。注冊(cè)后,CRS 應(yīng)檢測(cè)到任何失敗的實(shí)例,并自動(dòng)嘗試啟動(dòng)這些實(shí)例。重新啟動(dòng)服務(wù)器后,CRS 還將自動(dòng)啟動(dòng)這些實(shí)例。

    在節(jié)點(diǎn) 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. 
    
    在節(jié)點(diǎn) 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.為兩個(gè) RAC 實(shí)例創(chuàng)建口令文件。

    使用 orapwd 實(shí)用程序在第一個(gè)節(jié)點(diǎn)上的 $ORACLE_HOME/dbs 中創(chuàng)建一個(gè) orapwprod1a 文件,并在第二個(gè)節(jié)點(diǎn)上的 $ORACLE_HOME/dbs 中創(chuàng)建 orapwprod1b 文件。

    5g.在 pfile 中添加 RAC 特定參數(shù)。

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

    *.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.修改兩個(gè)實(shí)例的 init.ora。

    在節(jié)點(diǎn) 1 上:

    [oracle@salmon1]$ more $ORACLE_HOME/dbs/initprod1a.ora
    spfile='+DG1/spfileprod1.ora'
    
    在節(jié)點(diǎn) 2 上:
    [oracle@salmon2]$ more $ORACLE_HOME/dbs/initprod1b.ora
    spfile='+DG1/spfileprod1.ora'
    
    5i.將數(shù)據(jù)庫(kù) 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.創(chuàng)建 RAC 數(shù)據(jù)詞典視圖。

    在第一個(gè) RAC 實(shí)例上創(chuàng)建 RAC 數(shù)據(jù)詞典視圖。

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

    在節(jié)點(diǎn) 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.為第二個(gè) RAC 實(shí)例創(chuàng)建重做日志。
    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.為第二個(gè) RAC 實(shí)例創(chuàng)建重做表空間。
    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.啟動(dòng)第二個(gè) RAC 實(shí)例。
    [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.保留所有權(quán)利。
     
    
    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
    
    恭喜您!您已經(jīng)將單一實(shí)例數(shù)據(jù)庫(kù)轉(zhuǎn)換為 RAC!


    第 6 步:測(cè)試透明應(yīng)用程序故障切換 (TAF)

    Oracle TAF 中的故障切換機(jī)制使任何失敗的數(shù)據(jù)庫(kù)連接能夠重新連接到集群中的其他節(jié)點(diǎn)。故障切換對(duì)用戶(hù)是透明的。Oracle 在故障切換實(shí)例上重新執(zhí)行查詢(xún)并繼續(xù)向用戶(hù)顯示余下的結(jié)果。

    為示范 TAF 選件的故障切換機(jī)制,請(qǐng)連接到兩個(gè)不同的數(shù)據(jù)庫(kù)會(huì)話(huà)并執(zhí)行以下步驟:

    6a.使用 PROD1 服務(wù)連接第一個(gè)會(huì)話(huà)。

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

    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.從其他會(huì)話(huà)中關(guān)閉該實(shí)例。

    在 prod1a 實(shí)例上以 sys 用戶(hù)的身份連接,并關(guān)閉該實(shí)例。

    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.驗(yàn)證該會(huì)話(huà)是否已經(jīng)完成故障切換。

    從第 6 步中的同一會(huì)話(huà)執(zhí)行以下查詢(xún)以驗(yàn)證該會(huì)話(huà)是否故障切換到其他實(shí)例。

    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


    結(jié)論

    了解了 RAC 體系結(jié)構(gòu)并進(jìn)行恰當(dāng)規(guī)劃后,從單一實(shí)例數(shù)據(jù)庫(kù)轉(zhuǎn)移到 RAC 配置并不一定很復(fù)雜。ASM 和 RAC 相互支持以提供更高級(jí)別的可用性、可伸縮性和業(yè)務(wù)連續(xù)性。衷心希望本指南提供了清晰、準(zhǔn)確的轉(zhuǎn)換執(zhí)行方法。

    posted on 2006-11-10 15:25 Coundy 閱讀(361) 評(píng)論(0)  編輯  收藏 所屬分類(lèi): Linux
    主站蜘蛛池模板: 亚洲国产精彩中文乱码AV| 久久精品国产精品亚洲艾| 亚洲Aⅴ无码专区在线观看q| 亚洲偷自精品三十六区| 一道本不卡免费视频| 最近中文字幕大全免费视频| 国产亚洲精品免费| 亚洲人成在线播放网站岛国| 精品亚洲成a人在线观看| 一级毛片不卡片免费观看| 国产在线观看免费不卡| 亚洲沟沟美女亚洲沟沟| 无码AV动漫精品一区二区免费| 亚洲免费在线视频观看| 国产精品亚洲产品一区二区三区 | 亚洲片国产一区一级在线观看| 亚洲嫩草影院久久精品| 羞羞视频在线观看免费| 国产三级在线观看免费| 亚洲va中文字幕无码久久| 日本特黄特色AAA大片免费| 99久久99这里只有免费费精品| 日日噜噜噜噜夜夜爽亚洲精品 | 中文字幕版免费电影网站| 成年美女黄网站18禁免费| 亚洲一区免费观看| 亚洲阿v天堂在线2017免费| 在线精品免费视频| 亚洲国语在线视频手机在线| 中文字幕在线视频免费观看| 国产精品嫩草影院免费| 亚洲中文无码a∨在线观看| 国产一级片免费看| 亚洲国产成人精品女人久久久| 97se亚洲国产综合自在线| 亚洲欧洲免费视频| 亚洲成在人线av| 国产在线精品观看免费观看| 免费人成激情视频| 亚洲国产高清国产拍精品| 57PAO成人国产永久免费视频|