Oracle 資料庫 升級為 RAC

inthirties2發表於2010-02-24
對於那些具有有限操作經驗的使用者而言,實施 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的更多資訊,請訪問 或參考。) 本指南要求您對 RAC 體系結構有一個基本瞭解,對 Oracle 資料庫和 Red Hat Enterprise Linux 的管理較為熟悉。有關詳細資訊,請參考。

概述 RAC 叢集由兩臺執行 RHEL3(核心 2.4.21-27)的 Intel x86 伺服器組成。每個節點都可以訪問共享儲存器並可以連線到公共網路和專用網路。
本指南分為以下步驟:
  • 準備安裝
  • 將資料庫移植到 ASM
  • 安裝 Oracle 叢集就緒服務 (CRS) 軟體
  • 安裝 Oracle RAC 軟體
  • 後續安裝
  • 測試透明應用程式故障切換 (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

[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 地址

型別

192.168.0.184公共 (eth0)
192.168.0.185公共 (eth0)
10.10.10.84專用 (eth1)
10.10.10.85專用 (eth1)
192.168.0.186虛擬
192.168.0.187虛擬
1g.編輯 the /etc/hosts 檔案。
127.0.0.1 localhost.localdomain localhost
10.10.10.84 sallocal1
10.10.10.85 sallocal2

192.168.0.184 salmon1
192.168.0.185 salmon2
192.168.0.186 salmon1-vip

192.168.0.187 salmon2-vip
驗證主機名和配置的網路介面裝置。 [root@salmon1]# hostname

[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

在每個節點上測試連線。驗證當您再次執行以下命令時,系統是否不提示您輸入口令。 ssh salmon1 date
ssh salmon2 date
ssh sallocal1 date
ssh sallocal2 date
ssh date
ssh date

ssh date
ssh 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 --&gt /dev/sde1
/dev/raw/raw11:bound to major 8, minor 65
/dev/raw/raw12 --&gt /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 或從 下載該軟體。只應在第一個節點上啟動 OUI。安裝過程中,安裝程式將該軟體自動複製到第二個節點。
[oracle@salmon1]$ export ORACLE_BASE=/u01/app/oracle
[oracle@salmon1]$ /mnt/cdrom/runInstaller
  • 歡迎 - 單擊“Next”。
  • 指定檔案位置:
    • 名稱:OraCr10g_home1
    • 路徑:/u01/app/oracle/product/10.1.0/crs_1
  • 語言選擇 - 英語
  • 叢集配置:
    • 叢集名稱:crs
    • 公共節點名稱:salmon1,專用節點名稱:sallocal1
    • 公共節點名稱:salmon2,專用節點名稱:sallocal2
  • 專用互連實施:
    • 介面名稱:eth0,子網:192.168.0.0,介面型別:公共
    • 介面名稱:eth1,子網:10.10.10.0,介面型別:專用
  • Oracle 叢集登錄檔:
    • 指定 OCR 位置:/u02/oradata/prod1/ocr
  • Voting Disk:
    • 輸入 Voting disk 檔名稱:/u02/oradata/prod1/vdisk
  • 在第一個節點上以 root 使用者的身份在另一個視窗中執行 /u01/app/oracle/oraInventory/orainstRoot.sh 指令碼。
  • 在第二個節點上以 root 使用者的身份在開一個視窗中執行 /u01/app/oracle/oraInventory/orainstRoot.sh 指令碼。
  • 在兩個節點上執行 orainstRoot.sh 後單擊“Continue”。
  • 摘要 - 單擊“Install”
  • 在第一個節點上以 root 使用者的身份在另一個視窗中執行 /u01/app/oracle/product/10.1.0/crs_1/root.sh 指令碼。在該步驟完成之前,不要執行下一個步驟。
  • 在第二個節點上以 root 使用者的身份在另一個視窗中執行 /u01/app/oracle/product/10.1.0/crs_1/root.sh 指令碼。
  • 在兩個節點上執行 root.sh 後單擊“OK”。
  • 安裝結束 - 單擊“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
  • 歡迎 - 單擊“Next”。
  • 指定檔案位置:
    • 名稱:OraDB10g_home1
    • 路徑:/u01/app/oracle/product/10.1.0/db_1
  • 指定硬體安裝模式:
    • 選擇“Cluster Installation”
    • 單擊“Select All”
  • 選擇安裝模式:
    • 選擇“Enterprise Edition”
  • 特定產品必要條件檢查:
    • 所有檢查均透過後,才可繼續下一步。忽略 openmotif-2.1.30-11 警告。
  • 選擇資料庫配置:
    • 選擇“Do not create a starter database”
  • 摘要 - 單擊“Install”
  • 在第一個節點上以 root 使用者的身份在另一個視窗中執行 /u01/app/oracle/product/10.1.0/db_1/root.sh 指令碼。在 VIP 配置完成前,不要在第二個節點上執行 root.sh。
  • VIPCA 歡迎 - 單擊“Next”
  • VIP 配置幫助, 1 of 2:網路介面:
    • 選擇“eth0”
  • VIP 配置幫助, 2 of 2:叢集節點的虛擬 IP:
    • 節點名稱:salmon1
    • IP 假名:salmon1-vip
    • IP 地址: 192.168.0.186
    • 子網掩碼: 255.255.255.0
    • 節點名稱:salmon2
    • IP 假名:salmon2-vip
    • IP 地址: 192.168.0.187
    • 子網掩碼: 255.255.255.0
  • 摘要 - 單擊“Finish”
  • 配置助手進度對話方塊 - 單擊“OK”
  • 配置結果 - 單擊“Exit”
  • 在第二個節點上以 root 使用者的身份在另一個視窗中執行 /u01/app/oracle/product/10.1.0/db_1/root.sh 指令碼。
  • 在兩個節點上執行 root.sh 後單擊“OK”。
  • 安裝結束 - 單擊“Exit”。
4c.配置 Oracle Listener。只應在一個節點上啟動和配置網路配置助手 (NETCA)。在配置過程結束時,NETCA 將在兩個節點上啟動 Oracle listener。
[oracle@salmon1]$ netca
  • Oracle 網路配置助手:真正應用叢集,配置:
    • 選擇“Cluster configuration”
  • Oracle 網路配置助手:TOPSNodes:
    • 單擊“Select all nodes”
  • Oracle 網路配置助手:歡迎
    • 選擇“Listener configuration”
  • Oracle 網路配置助手:監聽程式配置,監聽程式:
    • 選擇“Add”
  • Oracle 網路配置助手:監聽程式配置,監聽程式名稱:
    • 監聽程式名稱:LISTENER
  • Oracle 網路配置助手:監聽程式配置,擇協議
    • 已選協議:TCP
  • Oracle 網路配置助手:監聽程式配置,TCP/IP 協議:
    • 選擇“Use the standard port number of 1521”
  • Oracle 網路配置助手:監聽程式配置,增加監聽程式?
    • 選擇“No”
  • Oracle 網路配置助手:監聽程式配置完成:
    • 單擊“Next”
  • Oracle 網路配置助手:歡迎
    • 選擇“Naming Methods configuration”
    • 單擊“Next”
  • Oracle 網路配置助手:命名方式配置:選擇命名方式:
    • 選擇“Local Naming”
  • Oracle 網路配置助手:命名方式配置完成:
    • 單擊“Next”
  • Oracle 網路配置助手:歡迎
    • 單擊“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 OPEN

2 prod1b 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 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 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 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 相互支援以提供更高階別的可用性、可伸縮性和業務連續性。衷心希望本指南提供了清晰、準確的轉換執行方法。
[@more@]

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/21565006/viewspace-1031388/,如需轉載,請註明出處,否則將追究法律責任。

相關文章