Oracle 数据库 升级为 RAC

对于那些具有有限操作经验的用户而言,实施 Oracle RAC 10 g 的前景令人生畏。但事情并不一定如此。
本指南将提供明确的步骤,引导您在 RHEL3 上将单一实例 Oracle 10 g 数据库转换为 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 服务器组成。每个节点都可以访问共享存储器并可以连接到公共网络和专用网络。
本指南分为以下步骤:
  • 准备安装
  • 将数据库移植到 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
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 10 g 中,可以使用 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 数据库 10 g 时,应该已经为单节点版本配置了 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 或从 OTN 下载该软件。只应在第一个节点上启动 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 数据库 10 g 企业版 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 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 相互支持以提供更高级别的可用性、可伸缩性和业务连续性。衷心希望本指南提供了清晰、准确的转换执行方法。
[@more@]

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/21565006/viewspace-1031388/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/21565006/viewspace-1031388/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值