ITPub博客

首页 > 数据库 > Oracle > ORACLE 10G 单实例(ASM)转RAC

ORACLE 10G 单实例(ASM)转RAC

原创 Oracle 作者:bluesshadow 时间:2011-03-15 15:48:47 0 删除 编辑
Normal 0 7.8 磅 0 2 false false false EN-US ZH-CN X-NONERHEL as 4 oracle 10g singleinstance 2 RAC


create by bluesshadow 2011-03-11

一.环境介绍

1.1转换前环境

1.2转换后环境

二.转换前的准备工作

2.1 数据库备份

2.2 第二个节点配置,转换前两个节点配置

三.安装ClusterwareORACLE数据库软件

      3.1 CRS安装前检查

     3.2安装CRS

     3.3 安装RAC软件

     3.4 配置监听

四.转换ASM为集群方式

4.1 卸载原有的ASM

4.2 安装集群ASM实例

4.3 ASM实例参数文件配置

五.单机转集群配置

5.1 配置新的PFILE文件

5.2 建立DUMP目录

5.3 建立SPFILE文件

5.4 为节点2创建REDOUNDO

5.5 创建集群字典视图

5.6 添加数据和实例到集群

5.7 启实例验证

 

 

 

 

 

 

 

一.环境介绍

1、现有环境介绍

转换前环境:
VmWare Server
上装有RedHat AS4 Oracle 10.2.0.1 单实例数据库,存储管理使用ASM
节点:node1

Eth0:192.168.3.21

磁盘组:PDATA

实例名:oral

数据库名:oral

ORACLE_BASE/opt/oracle

ORACLE_HOME:/opt/oracle/product/10.2.0/db_1

 

2.转换后环境(RAC)

节点1node1

Eth0   192.168.3.21

Eth0:0 192.168.3.23

Eth1   192.168.6.11

磁盘组:PDATA

实例名:oral1

数据库名:oral

ORACLE_BASE:/app/oracle

ORACLE_HOME/app/oracle/product/10.2.0/db_1

CRS _HOME: /app/oracle/product/10.2.0/crs_1

节点1Node2

Eth0 192.168.3.22

Eth0:0 192.168.3.24

Eth1  192.168.6.12

磁盘组:PDATA

实例名:oral2

数据库名:oral

ORACLE_BASE:/app/oracle

ORACLE_HOME/app/oracle /product/10.2.0/db_1

CRS _HOME: /app/oracle /product/10.2.0/crs_1

ocr:/dev/raw/raw1

voting disk : /dev/raw/raw2

cat /etc/host 文件:

# Do not remove the following line, or various programs

# that require network functionality will fail.

127.0.0.1 localhost.localdomain localhost 192.168.3.21 node1

192.168.3.21 node1

192.168.3.22 node2

192.168.3.23 node1-vip

192.168.3.24 node2-vip

192.168.6.11 node1-priv

192.168.6.12 node2-priv

 

      

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

二.转换前的准备工作

1.备份

备份节点1数据库 对数据库做个全备份

备份SPFILE,导出spfilepfile,因为在转集群时需在此pfile上修改来建立集群spfile,启动数据库。

 

2. 配置第二台虚拟机node2

配置第二台虚拟机,做为第二个节点,安装与node1 同样版本的操作系统,划分同样的文件系统,安装好相关的gcc等包,建立oracle用户及授权。

2.1 建立oracle组和用户,ID和用户ID必须和节点1上一致

[root@node2 ~]# groupadd oinstall
[root@node2 ~]# groupadd dba
[root@node2 ~]# useradd -c "oracle software owner" -g oinstall -G dba oracle
[root@node2 ~]# id oracle

uid=501(oracle) gid=501(oinstall) groups=501(oinstall),502(dba) 设置oracle用户密码(默认设为oracle):

[root@node2 ~]# passwd oracle

验证用户 nobody 存在

[root@node2 ~]# id nobody

uid=99(nobody) gid=99(nobody) groups=99(nobody)

2.2 在节点1和节点2上建立ORACLE RAC目录,并将目录权限进行设置

节点1

[root@node1 ~]# mkdir -p /app/oracle/product/10.2.0/db_1

[root@node1 ~]# mkdir -p /app/oracle/product/10.2.0/crs

[root@node1 ~]# chown -R oracle.oinstall /app/oracle

[root@node1 ~]# chown -R oracle.oinstall /opt/oracle

[root@node1 ~]# chmod 755 /app/oracle/

[root@node1 ~]# chmod 755 /app/oracle/

 

节点2

[root@node2 ~]# mkdir -p /app/oracle/product/10.2.0/db_1

[root@node2 ~]# mkdir -p /app/oracle/product/10.2.0/crs

[root@node2 ~]# chown -R oracle.oinstall /app/oracle

[root@node2 ~]# chown -R oracle.oinstall /opt/oracle

[root@node2 ~]# chmod 755 /app/oracle/ [root@node2 ~]# chmod 755 /app/oracle/

2.3 修改节点2的内核参和系统参数和oracle用户环境变量

修改/etc/sysctl.conf, 添加以下内容:

#vi /etc/sysctl.conf

然后加入以下内容:

kernel.shmall = 2097152

kernel.shmmax = 2147483648

kernel.shmmni = 4096

kernel.sem = 250 32000 100 128

fs.file-max = 65536

net.ipv4.ip_local_port_range = 1024 65000

net.core.rmem_default = 262144

net.core.rmem_max = 262144

net.core.wmem_default = 262144

 net.core.wmem_max = 262144

然后执行:sysctl –p使修改生效

[root@node2 ~]# sysctl -p

net.ipv4.ip_forward = 0

net.ipv4.conf.default.rp_filter = 1

net.ipv4.conf.default.accept_source_route = 0

 kernel.sysrq = 0

kernel.core_uses_pid = 1

kernel.shmall = 2097152

kernel.shmmax = 2147483648

kernel.shmmni = 4096

kernel.sem = 250 32000 100 128

fs.file-max = 65536

net.ipv4.ip_local_port_range = 1024 65000

net.core.rmem_default = 262144

net.core.rmem_max = 262144

net.core.wmem_default = 262144

net.core.wmem_max = 262144

设置oracle用户环境变量(两个节点都要设置,节点1在安装集群软件时需将ORACLE_HOME目录设置为新建的目录)

Vi /home/oracle/.bash_profile, 加入以下内容:

export ORACLE_BASE=/app/oracle

export ORACLE_HOME=$ORACLE_BASE/product/10.2.0/db_1

 export ORA_CRS_HOME=$ORACLE_BASE/product/10.2.0/crs_1

export ORACLE_SID=oral1 #:节点2这里设置为oral2 export PATH=$PATH:$ORACLE_HOME/bin:$ORA_CRS_HOME/bin

在每个节点上配置hosts文件(每个节点上都添加)

[root@node2 ~]# vi /etc/hosts

# Do not remove the following line, or various programs

 # that require network functionality will fail.

127.0.0.1

localhost.localdomain

localhost

192.168.3.21

node1

 

192.168.3.22

node2

 

192.168.3.23

node1-vip

 

192.168.3.24

node2-vip

 

192.168.6.11

node1-priv

 

192.168.6.12

node2-priv

 

 

Oracle 用户设置 Shell 限制 (每个节点上都执行) 要进行这些更改, 将对下内容添加到 /etc/security/limits.conf 文件:

oracle

soft

nproc

2047

oracle

hard

nproc

16384

oracle

soft

nofile

1024

oracle

hard

nofile

65536

 

“oracle”LINUX 帐户更新默认的 shell 启动文件,将以下内容添加到/etc/profile文件中:

if [ $USER = "oracle" ]; then

if [ $SHELL = "/bin/ksh" ]; then ulimit -p 16384 ulimit -n 65536

else ulimit -u 16384 -n 65536 fi fi

2.4 节点2上安装和配置asm

安装ASM

[root@node1 ~]# rpm -ivh oracleasm-2.6.9-55.ELsmp-2.0.3-1.i686.rpm \

oracleasmlib-2.0.4-1.el4.i386.rpm \

oracleasm-support-2.1.3-1.el4.i386.rpm

配置asm

[root@node1 ~]# /etc/init.d/oracleasm configure

用户输入:oracle

组输入:oinstall

Start Oracle ASM library driver on boot (y/n) [n]: y 选择是

Scan for Oracle ASM disks on boot (y/n) [y]: y 选择是

[root@node2 ~]# /etc/init.d/oracleasm enable

[root@node2 ~]# /etc/init.d/oracleasm scandisks

扫描ASM磁盘:

[root@node2 ~]# oracleasm listdisks

此时在节点2上看得到磁盘组VOL1,如看不到将两个节点重启一次

 

2.5 OCR 盘和VOTING DISK盘配置

在两个节点上为ocr,votingdisk创建raw分区,之前已经建好,/dev/raw/raw1分配给ocr,将/dev/raw/raw2分配给voting disk,分区与raw对应情况:

/dev/raw/raw1  /dev/sdb1 #ocr

/dev/raw/raw2  /dev/sdb2 #voting disk

 

把下面的内容添加到/etc/sysconfig/rawdevices 文件中

/dev/raw/raw1  /dev/sdb1

/dev/raw/raw2  /dev/sdb2

注意:在2.6内核的Red Hat Linux 上,当系统重启后,裸设备的属组信息将被还原为系统默认值(rootdisk)。为了使得裸设备属组信息可以被保留,你要在/etc/rc.d/rc.local 中强制更新裸设备的属组信息,即在文件中加入下述内容:

chown root:oinstall /dev/raw/raw1

chmod 660 /dev/raw/raw2

chown oracle:oinstall  /dev/raw/raw2

chmod 644 /dev/raw/raw2

2.6 配置ssh等效:

 Oracle用户在每个节点上执行

节点1

[oracle@node1 opt]$ mkdir ~/.ssh

[oracle@node1 opt]$ chmod 755 ~/.ssh/

[oracle@node1 opt]$ /usr/bin/ssh-keygen -t rsa

[oracle@node1 opt]$ /usr/bin/ssh-keygen -t dsa

[oracle@node1 opt]$ touch ~/.ssh/authorized_keys

[oracle@node1 opt]$ cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys  [oracle@node1 opt]$ cat ~/.ssh/id_dsa.pub >> ~/.ssh/authorized_keys  [oracle@node1 opt]$ cp ~/.ssh/authorized_keys ~/.ssh/node1.authorized_keys

节点2

[oracle@node2 ~]$ mkdir ~/.ssh

[oracle@node2 ~]$ chmod 755 ~/.ssh/

[oracle@node2 ~]$ /usr/bin/ssh-keygen -t rsa

[oracle@node2 ~]$ /usr/bin/ssh-keygen -t dsa

[oracle@node2 ~]$ touch ~/.ssh/authorized_keys

[oracle@node2 ~]$ cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys

[oracle@node2 ~]$ cat ~/.ssh/id_dsa.pub >> ~/.ssh/authorized_keys [oracle@node2 ~]$ cp ~/.ssh/authorized_keys ~/.ssh/node2.authorized_keys

然后在节点1上执行:

[oracle@node1 opt]$ scp oracle@node2:/home/oracle/.ssh/node2.authorized_keys ~/.ssh/node2.authorized_keys [oracle@node1 opt]$ cat ~/.ssh/node2.authorized_keys >>~/.ssh/authorized_keys

然后在节点2上执行:

[oracle@node2~]$ scporacle@node1:/home/oracle/.ssh/node1.authorized_keys ~/.ssh/node1.authorized_keys

[oracle@node2 ~]$ cat ~/.ssh/node1.authorized_keys >>~/.ssh/authorized_keys

设置完成,测试ssh: 建立SSH信任关系(请注意,用户等效性仅为当前会话建立。如果您切换到其他会话或注销并重新登录,则必须再次运行 ssh-agent ssh-add 才能重新建立用户等效性)在每个节点上执行

[oracle@node1 opt]$ ssh-agent $SHELL
[oracle@node1 opt]$ ssh-add

测试:

[oracle@node1 opt]$ ssh node2 date
[oracle@node2 ~]$ ssh node1 date
[oracle@node1 opt]$ ssh node2-priv date
[oracle@node2 ~]$ ssh node1-priv date

 

 

 

 

 

三.安装ClusterwareORACLE数据库软件

1.将集群和数据库安装软件拷到节点1上,解压后进入图形界面,设置ssh等效性,执行安装

执行ssh等效性:两机相互执行,看看是否还需要输入密码

[oracle@node1 ~]$ ssh node1 date

[oracle@node1 ~]$ ssh node2 date

[oracle@node1 ~]$ ssh node1-priv date

 [oracle@node1 ~]$ ssh node2-priv date

切换至node2执行

[oracle@node2 ~]$ ssh node1 date

 [oracle@node2 ~]$ ssh node2 date

[oracle@node2 ~]$ ssh node1-priv date

[oracle@node2 ~]$ ssh node2-priv date

2.安装clusterware:

2.1 确保关闭原数据库,ASM实例,监听,停掉CSS进程,如果无法停掉CSS进程,我这里是直接运行:

[oracle@node1 ~]/oracle/product/10.2.0/db_temp/bin/localconfig delete

 

2.2将安装文件上传到节点1 进入clusterware 安装目录运行

1. ./runinstaller

2.弹出欢迎界面直接点next

3.指定组选择 oinstall

4.选择CRS安装目录 /app/oracle/product/10.2.0/db_1

5. 验证安装需求,这里有一个警告,是内存太低,直接点next

6. 配置安装集群的节点信息,如果没有节点2信息,请按照/etc/hosts 里信息添加设置网络,然后点next

7.这里将192.168.3.0 网络设置为公网,点edit ,设置为PUBLIC

8.设置设置OCR存放位置,这里选择:/dev/raw/raw1

9.设置voting disk 存放位置, 这里选择:/dev/raw/raw2

10.install 开始安装

11.安装过程中提示需要使用root用户运行两个脚本建议按以下顺序运行:先在节点1和节点2上依次运行orainstRoot.sh( 这里因为之前节点1上运行过,没有显示在节点1上运行这个脚本),再在节点1和节点2上依次运行root.sh

通常在第二个节点运行会报错:

The given interface(s), "eth0" is not public. Public interfaces should be used to configure virtual IPs.

这个是由于虚拟IP没有设置好,验证无法通过,在节点2上用root用户登录,运行vipca 建立虚拟IP,完成后再回节点1上点确定

 

2.3.运行VIPCA

2.3.1或者直接运行$ORA_CRS_HOME/bin/vipca

/app/oracle/product/10.2.0/crs_1/bin/vipca

next

2.3.2.选择两个节点

2.3.3.输入虚拟IP别名:node1-vip node2-vip

2.3.4.点完成开始创建创建完成以后再回到节点1OK,验证完成。

3.安装rac软件

上传10201_database_linux32.zip,解压 unzip 10201_database_linux32.zip

1. /home/oracle/database/runInstaller

2. 欢迎页面:单击 Next

3.选择 Enterprise Edition

4. 指定 Home 详细内容: 

名称:OraDb10g_home2 (区别于原来单实例时候OraDb10g_home1)

路径:/app/oracle/product/10.2.0/db_1 

5. 指定硬件集群安装模式:  选择 Cluster Installation。单击 Select All

6. 特定于产品的必要条件检查:   忽略有关物理内存,swap要求的警告

7. 选择数据库配置: “install database software only”

8. summary,点击”install”  开始安装,安装过程中自动复制文件到node2

9. 执行配置脚本:以 root 用户身份执行下面的脚本。

node1 上执行 /app/oracle/product/10.2.0/db_1/root.sh 

node2 上执行 /app/oracle/product/10.2.0/db_1/root.sh

10. 返回到 node1 的执行配置脚本屏幕,然后单击OK

11. 安装结束:单击 Exit

 

4.配置集群监听

1.切换到oracle用户下,运行以下命令:

$ netca

2.选择集群配置

3.选择监听配置

4.选择添加

5.输入LISTENER名称,默认为:LISTENER

6.TCP点下一步

7.选择端口:1521

8.选择不配置其它监听

9.安装完成后验证:

$ lsnrctl status

$crs_stat –t

 

四.转换ASM为集群方式

1.oracle用户在node1上执行静默方式卸载原有asm

/opt/product/10.2.0/db_1/bin /dbca -silent –deleteASM

 

[oracle@node1]$ dbca -silent -deleteASM

Look at the log file "/opt/oracle/product/10.2.0/db_1/cfgtoollogs/dbca/silent.log" for further details.

 

2.使用dcba配置集群ASM

 

1.切换到oracle用户下,运行以下命令:

$dbca

 

2.选择oracle real application cluster database

 

3.选择配置ASM

 

4.选择两个节点

 

5.设置ASM管理密码,选择建立PFILE

6.开始创建ASM实例

7.选择原来配置的asm磁盘组,并mount起来 完成

3.配置ASM实例的参数文件

ASM实例的参数文件,口令文件在配置为集群的时候产生了,一般没有问题,如果磁盘组发生没有mount的问题,可以仿照以下参数设置,然后重新启动ASM实例:

实例文件内容:

 [oracle@node1 dbs]$ cat init+ASM1.ora 

cluster_database=true

background_dump_dest=/app/oracle/admin/+ASM/bdump core_dump_dest=/app/oracle/admin/+ASM/cdump user_dump_dest=/app/oracle/admin/+ASM/udump

instance_type=asm

large_pool_size=12M

remote_login_passwordfile=exclusive

asm_diskgroups='PDATA' +ASM2.instance_number=2 +ASM1.instance_number=1

 

 

 

五.单机转集群配置

1.配置新参数文件

将原来数据库的SPFILE备份为fileoral1.ora,修改成以下内容:

*.__db_cache_size=100663296

*.__java_pool_size=4194304

*.__large_pool_size=4194304

*.__shared_pool_size=54525952

*.__streams_pool_size=0

*.audit_file_dest='/app/oracle/admin/oral/adump' *.background_dump_dest='/app/oracle/admin/oral/bdump'

*.compatible='10.2.0.1.0'

*.control_files='+PDATA/oral/controlfile/current.256.726688949' *.core_dump_dest='/app/oracle/admin/oral/cdump'

*.db_block_size=8192

*.db_create_file_dest='+PDATA'

*.db_domain=''

*.db_file_multiblock_read_count=16

*.db_name='oral'

*.dispatchers='(PROTOCOL=TCP) (SERVICE=oralXDB)'

*.job_queue_processes=10

 *.open_cursors=300

*.pga_aggregate_target=16777216

 *.processes=150

*.remote_login_passwordfile='EXCLUSIVE'

*.sga_target=167772160

*.undo_management='AUTO'

oral1.undo_tablespace='UNDOTBS1'

oral2.undo_tablespace='UNDOTBS2'

*.user_dump_dest='/app/oracle/admin/oral/udump'

*.cluster_database=TRUE

*.cluster_database_instances=2

oral1.instance_number=1

oral1.instance_name=oral1

oral2.instance_number=2

oral2.instance_name=oral2

oral1.thread=1

oral2.thread=2

2.修改所有的dump目录路径

将从原/opt路径修改为/app 并创建相应的目录

mkdir –p /app/oracle/admin/oral/adump

mkdir –p /app/oracle/admin/oral/bdump

mkdir –p /app/oracle/admin/oral/cdump

mkdir –p /app/oracle/admin/oral/udump

然后将pfileoral.ora复制一份到node2$ORACLE_HOME/dbs/pfileoral2.ora

3.创建spfile pfile

node1

[oracle@rac1 dbs]$ sqlplus "/as sysdba"

SQL*Plus: Release 10.2.0.1.0 - Production on Tue Jul 13 16:50:56 2010

Copyright (c) 1982, 2005, Oracle.  All rights reserved.

Connected to an idle instance.

SQL> create spfile frompfile='app/oracle/product/10.2.0/db_1/dbs/pfileoral1.ora';

node2:

[oracle@rac2 dbs]$ sqlplus "/as sysdba"

SQL*Plus: Release 10.2.0.1.0 - Production on Tue Jul 13 16:53:02 2010

Copyright (c) 1982, 2005, Oracle.  All rights reserved.

Connected to an idle instance.

SQL> create spfile frompfile='app/oracle/product/10.2.0/db_1/dbs/pfileoral2.ora';

 

4.为节点2创建UNDOREDO表空间

在节点1上执行:

sqlplus “/as sysdba”

 

node2上的实例oral2 添加redo

alter database add logfile thread 2 group 4 ‘PADATA’size 100M;

 alter database add logfile thread 2 group 5 ‘PADATA’size 100M;

 alter database add logfile thread 2 group 6 ‘PADATA’size 100M;

alter database enable public thread 2;

node2实例创建undo表空间

CREATE UNDO TABLESPACE UNDOTBS2 DATAFILE 'PDATA' size 200m

5. 创建集群字典视图 打开数据库

执行脚本,创建集群字典视图 打开数据库,执行

$ORACLE_HOME/rdbms/admin/catclust.sql创建集群的一些视图。

SQL> @?/rdbms/admin/catclust.sql

6.添加实例和数据库到集群

srvctl add database -d -o -p

节点1

 [oracle@node1dbs]$ srvctl add database -d oral -o /app/oracle/product/10.2.0/db_1/-p /app/oracle/product/10.2.0/db_1/dbs/pfileoral1.ora

[oracle@node1 dbs]$ srvctl add instance -d oral -i oral1 -n node1

节点2

[oracle@node2 dbs]$ srvctl add instance -d oral -i oral2 -n node2

添加数据库实例,asm实例依赖

节点1 [oracle@node1 bdump]$ srvctl modify instance -d oral -i oral1 -s +ASM1

节点2 [oracle@node2 bdump]$ srvctl modify instance -d oral -i oral2 -s +ASM2

7.启动实例和验证

[oracle@node2 dbs]$ srvctl start instance -d oral -i oral2 [oracle@node1 dbs]$ srvctl start instance -d oral -i oral1

 

查看验证:

crs_stat –t

连接到数据库,查看数据

 

 

 

参考文档:http://www.oracle.com/technetwork/articles/chan-sing2rac-install-086874.html

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

请登录后发表评论 登录
全部评论

注册时间:2010-09-27

  • 博文量
    34
  • 访问量
    140332