实施阶段:

  • 1.主机配置
  • 2.安装Clusterware
  • 3.安装Oracle Database
  • 4.配置Listener
  • 5.创建ASM
  • 6.创建Database

一、主机配置

1.网络设置

IP地址、hosts文件

2.RPM包

根据官方文档确定所需软件包,检查软件包是否安装

rpm -q --qf '%{NAME}-%{VERSION}-%{RELEASE}(%{ARCH})\n'\
binutils \
compat-db \
compat-libstdc++ \
liba

3.创建Oracle用户、配置用户等价性

1)创建Oracle用户和DBA组

groupadd -g 700 dba
useradd -u 500 -g dba oracle

2)配置Oracle用户环境变量

cat .bash_profile
export ORACLE_BASE=/oracle
export ORACLE_TERM=xtrem
export NLS_LANG=AMERICAN_AMERICA.ZHS16GBK
export CRS_HOME=/oracle/product/crs
export ORACLE_HOME=/oracle/product/database
export ORA_NLS33=$ORACLE_HOME/ocommon/nls/admin/data
export PATH=$CRS_HOME/bin:$ORACLE_HOME/bin:$PATH
export ORACLE_SID=wxxrdb1

不同节点SID不同

3)设置用户资源限制

vim /etc/security/limits.conf
#添加以下内容
oracle soft memlock 5242880
oracle hard memlock 5242880
#文件句柄
oracle soft nofile 65536
oracle hard nofile 65536
#进程句柄
oralce soft nproc 2047
oracle hard nproc 16384

查看Oracle用户资源限制
ulimit -a

4)配置SSH用户等价
Oracle允许使用两种用户等价机制——RSH和SSH.推荐ssh更安全

cd $HOME
mkdir .ssh
chmod 700 .ssh
cd .ssh
ssh-keygen -t rsa
ssh-keygen -t dsa
cat *.pub > authorized_keys

然后将所有节点authorized_keys文件合成一个,再用这个文件覆盖各个节点.ssh下同名文件

scp authorized_key dbp:/home/oracle/.ssh/keys_dbs
cat keys_dbs>>authorized_keys
scp authorized_keys dbs:/home/oracle/.ssh/.

4.OS Kernel配置

vim /etc/sysctl.conf
#添加以下内容保存
kernel.shmmax=2147483648
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.wmem_default=262144
net.core.rmem_max=262144
net.core.wmem_max=262144

使以上修改生效:sysctl -p

5.配置时间同步

1)如果存在时间服务器192.168.1.10

vim /etc/ntp.conf
server 192.168.1.10 prefer
driftfile /var/lib/ntp/drift
broadcastdelay 0.008

2)没有外部时间同步服务器(假设选dbp)
编辑dbp的/etc/ntp.conf

vim /etc/ntp.conf
server 127.127.1.0 #注意不是127.0.0.1
fudge 127.127.1.0 stratum 11
driftfile /var/lib/ntp/drift
broadcastdelay 0.008

编辑dbs的/etc/ntp.conf

vim /etc/ntp.conf
server 192.168.123.154 prefer
driftfile /var/lib/ntp/drift
broadcastdelay 0.008

启动ntp服务:/etc/init.d/ntpd start

6.配置hangcheck-timer模块

模块作用:监控Linux内核运行状态,如果长时间挂起,这个模块会自动重启系统。因为使用硬件时间,所以精度更高。

参数:hangcheck_tick、hangcheck_margin前一个参数定义多长时间检查一次,缺省值30秒,第二个模块是延迟上线,缺省值180秒。hangcheck-timer模块会根据hangcheck_tick设置定时检查内核,只要两次检查时间间隔小于hangcheck_tick+hangcheck_margin,都会认为内核运行正常,否则这个模块会自动重启系统。

1)查看模块位置

 find /lib/modules -name "hangcheck-timer.ko"
/lib/modules/3.0.101-63-default/kernel/drivers/char/hangcheck-timer.ko

2)配置系统启动时自动加载模块

vim /etc/rc.d/rc.local
modprobe hangcheck-timer

3)配置hangcheck-timer参数

vim /etc/modprobe.conf
options hangcheck-timer hangcheck_tick=IO hangcheck_margin=30

4)确认模块加载成功

grep Hangcheck /var/log/messages |tail -2

7.磁盘分区

fdisk /dev/sdb
n
p
1
+100m
p
2
+100
w

完成所有磁盘分区后,可再另一台计算机上执行partprobe,扫描分区,最后确认两个节点识别出的分区一致。

8.配置裸设备

通过字符方式访问设备
1)配置裸设备

vim /etc/sysconfig/rawdevices
#添加以下两行
/dev/raw/raw1 /dev/sdb1
/dev/raw/raw2 /dev/sdb2

2)设置权限

vim /etc/udev/permissions.d/50-udev.permissions
#找到raw devices部分修改
raw*:oracle:dba:0660
raw/*:oracle:dba:0660

3)确认裸设备服务自动启动,两个节点执行

checkconfig --list rawdevices

4)启动rawdevices服务,确认裸设备创建成功,权限正确

#services rawdevices restart
#cd /dev/raw
#ll

9.创建ASM磁盘

使用ASMLib方法:
1)在某个节点dbs以root身份执行:

/etc/init.d/oracleasm createdisk VOL1 /dev/sdc1
/etc/init.d/oracleasm createdisk VOL2 /dev/sdd1

2)在其他节点dbp以root身份执行

/etc/init.d/oracleasm scandisks
/etc/init.d/oracleasm listdisks

二、安装Oracle Clusterware

1.集群命名,并添加集群节点

2.填写该节点3个网络名称

3.定义网卡类型

4.填写裸设备名称

5.执行root脚本

1)先再dbp执行脚本,注意输出结果
2)在dbs执行脚本,注意输出结果
3)确定CRS Stack是否启动成功

$CRS_HOME/bin/crsctl check crs



以下命令确认Clusterware安装成功

#cd /$CRS_HOME/bin
#./olsnodes
#./crsctl check crs
#./crs_stat -t -v

三、安装Oracle Database

1.只装软件不建库

1)执行root.sh #多节点执行无先后顺序

四、配置Listener

netca

1.确认Listener配置成功

配置成功后,两台计算机上listener都会作为application resource注册到CRS中。
crs_stat -t -v

2.检查listener.ora文件


五、创建ASM

dbca
1)选择Oracle Real Application Cluster database
2)选择Config Automatic Storage Management
3)配置ASM参数
asm_diskstring=ORCL:VOL*
4)创建磁盘组DATA,定义冗余策略External
5)同样操作创建第二个磁盘组
6)MOUNTED说明磁盘组已经被挂载

六、创建数据库

dbca
启用EM、选择ASM存储

创建完成后,数据库每个节点都会注册到CRS中。
crs_stat -t -v

七、客户端测试


1.连接数据库

sqlplus system/password@wxxrdb
select instance_name from v$instance;

2.Failover

当用户连接到RAC环境时,实际是连接到RAC中的一个实例,如果该实例宕机,用户连接会被转移到其他健康实例,这种转换对用户是透明的,用户的select语句仍然继续返回结果集,感觉不到异常。
1)连接到RAC
sqlplus system/password/wxxrdb

2)确认用户当前连接的实例
select instance_name from v$instance;

3)关闭wxxrdb1
shutdown abort

4)等待几秒后,再次执行这个语句,还是再会话1中
select instance_name from v$instance;

3.体验LoadBalance

RAC会根据每个节点的负载,自动调整每个实例的连接数量,以尽量保证每个节点负载均衡。
1)准备测试脚本
shell脚本

#!/bin/sh
#Usage:test wxxrdb 4000
count=0
while [$count -lt $2]
do
count='expr $count +1'
sqlplus -s username/password@$1 @test.sql
seleep 1
done

sql脚本

col "instance_name" format a20
select instance_name from v$instance
/

2)执行脚本
./test.sh wxxrdb 1000

3)查看每个实例连接数量
select inst_id,count(*) from gv$session;

4.修改归档模式


1)LAN2划分两个50G分区,每个节点挂载一个,挂载点都是/wxxrdb1_arch
LAN3划分两个50G分区,每个节点挂载一个,挂载点都是/wxxrdb2_arch

2)两边编辑/etc/fstab
dbs节点

vim /etc/fstab
/dev/sdc3 /wxxrdb2_arch ext3 defaults 1 2
/dev/sdd3 /wxxrdb1_arch ext3 defaults 1 2

dbp节点

/dev/sdc2    /wxxrdb1_arch    ext3    defaults    1 2
/dev/sdd2 /wxxrdb2_arch ext3 defaults 1 2

3)挂载,两个节点执行

mount /wxxrdb1_arch
mount /wxxrdb2_arch
chown -R oracle:dba /wxxrdb1_arch /wxxrdb2_arch

4)配置每个实例的归档位置

alter system set log_archive_dest_1='location=/wxxrdb2_arch' scope=spfile sid='wxxrdb2';
alter system set log_archive_dest_2='service=wxxrdb1' scope=spfile sid='wxxrdb2';
alter system set log_archive_dest_1='location=/wxxrdb1_arch' scope=spfile sid='wxxrdb1';
alter system set log_archive_dest_2='service=wxxrdb2' scope=spfile sid='wxxrdb1';
alter system set standby_archive_dest='/wxxrdb2_arch' scope=spfile sid='wxxrdb1';
alter system set standby_archive_dest='/wxxrdb1_arch' scope=spfile sid='wxxrdb2'

5)修改归档模式

alter system set cluster_databse=false scope=spfile sid='*'

6)关闭实例

shutdown immediate

7)把某个实例启动到mount状态,修改数据库归档模式

startup mount;
alter database mount;
alter database archivelog;
alter system set cluster_database=true scope=spfile sid='*';

8)重启数据库,确认归档生效
archive log list;

9)确认归档位置生效,每个实例上测试
algter system switch logfile;

确认每个节点对应归档目录下都能收到日志。

<wiz_tmp_tag id="wiz-table-range-border" contenteditable="false" style="display: none;">

 
 
 
 

RAC初体验(环境搭建)的更多相关文章

  1. beego 初体验 - 环境搭建

    首先,安装go运行时和beego beego,在git bash 运行命令: go get github.com/beego/bee go get github.com/astaxie/beego g ...

  2. Flutter初体验--环境搭建

    Fluter最近火了起来,它的有点很多,今天我做一篇在Windows下安装Flutter的教程. 一.下载    无论你要安装什么软件,都要先下载下来.我用的是SourceTree,地址: https ...

  3. Java初认识--环境搭建及基本数据类型

    一.JAVA语言的环境搭建 1.JRE(Java Runtime Environment):Java运行环境. 它包括Java虚拟机和Java程序所需的核心类库等. 2.JDK(Java Develo ...

  4. RAC初体验

    什么是RAC? 几乎每一篇介绍RAC的文章开头都是这么一个问题.我这篇文章是写给新手(包括我自己)看的,所以这个问题更是无法忽视. 简单的说,RAC就是一个第三方库,他可以大大简化你的代码过程. 官方 ...

  5. docker初体验,搭建自用的gitlab服务

    一.前言 git在如日中天的版本管理系统,现在如果不是工作在git版本管理系统下,几乎都不好意思给人打招呼.现在就有现成的互联网的git服务器提供给大家使用,例如号称程序的社交网络github. 正好 ...

  6. 十七、IntelliJ IDEA 中的 Maven 项目初体验及搭建 Spring MVC 框架

    我们已经将 IntelliJ IDEA 中的 Maven 项目的框架搭建完成.接着上文,在本文中,我们更近一步,利用 Tomcat 运行我们的 Web 项目. 如上图所示,我们进一步扩展了项目的结构, ...

  7. .net程序员的android studio 初体验 (环境设置2022年10月)

      很久以前用DevExtreme写的一个Hybird APP要添加蓝牙打印功能,但是用来打包APP的phonegap被adobe关闭了,所以,只能自己用cordova去打包安卓APP,不得已,研究了 ...

  8. 微信小程序初窥-环境搭建

    关于微信小程序的背景知识,在此不做阐述,可以自行搜索了解.本文将介绍微信小程序的账号的注册,IDE的下载,创建一个实例小程序. 1.注册小程序 前去链接:https://mp.weixin.qq.co ...

  9. iOS项目——项目开发环境搭建

    在开发项目之前,我们需要做一些准备工作,了解iOS扩展--Objective-C开发编程规范是进行开发的必备基础,学习iOS学习--Xcode9上传项目到GitHub是我们进行版本控制和代码管理的选择 ...

随机推荐

  1. ogr2ogr使用

    简介 org2ogr是OGR模块中提供的一个重要工具,用于对数据源进行格式转换 使用方式 命令行参数 [xingxing.dxx@30_28_6_20 J50F001020]$ ogr2ogr --l ...

  2. Ubuntu / Raspberry 下切换GCC版本

    目前Ubuntu 自带的GCC版本为4.6,遗憾的是在实际使用时,反而版本越高越好问题越多,所以,一旦遇到编译问题时最好先检查你下载的工程里的readme,默认的编译器版本是否为当前的安装版本,如果不 ...

  3. android 多渠道打包

    android 多渠道打包 原理 在manifest文件中,application标签内部设置不同的metadata标签即可,可以通过java api获取这个matedata内的值 友盟提供的多渠道打 ...

  4. Vue2.0中的Ajax请求

    Vue可以借助于vue-resource来实现Ajax请求 http请求报文 浏览器与服务器数据交互是遵循http协议的,当浏览器要访问服务器的时候,浏览器需要将相关请求数据提交给服务器. 格式分为: ...

  5. java面试题之----IO与NIO的区别

    JAVA NIO vs IO 当我们学习了Java NIO和IO后,我们很快就会思考一个问题: 什么时候应该使用IO,什么时候我应该使用NIO 在下文中我会尝试用例子阐述java NIO 和IO的区别 ...

  6. C++的虚析构

    最近准备复习一遍所有的知识点,先从基础开始做起,用几分钟写个继承和析构吧. 父类为A,子类为B,代码如下: class A { public: A() { cout << "构造 ...

  7. Grunt 使用(一)基础搭建

    jQuery在使用grunt,bootstrap在使用grunt,百度UEditor在使用grunt,你没有理由不学.不用!废话不多说,直接上干货. 1.安装node.js并检查node -v 和 n ...

  8. 安装python File "/usr/bin/pip", line 11, in <module> sys.exit(main()) File "/usr/lib/python3.4/site-packages/pip/__init__.py", line 215, in main locale.setlocale(locale.LC_ALL, '') File "/u

      $ uname -a Linux debian 3.16.0-4-amd64 #1 SMP Debian 3.16.7-ckt11-1+deb8u6 (2015-11-09) x86_64 GNU ...

  9. 年金(annuity)

    一.定义 一系列的付款(或收款),付款时间和付款金额具有一定规律性. 二.分类 1-支付时间和支付金额是否确定?确定年金(annuity-certain)风险年金(contingent annuity ...

  10. ZT 怎么样才算熟悉设计模式? [问题点数:40分,结帖人jiaoyun007]

    http://bbs.csdn.net/topics/390448668?page=1#post-394406161 近日面试,因为个人简历里有“熟悉设计模式”这句话,面试官边侃侃发问了:什么是装饰模 ...