Oracle 11gRAC集群
title: Oracle 11gRAC集群
categories: 数据库
tags:
- Oracle
- RAC
- Cluster
timezone: Asia/Shanghai
date: 2019-01-06
Oracle 11g RAC搭建(VMware环境):https://blog.csdn.net/u014595668/article/details/51160783
Oracle RAC原理:https://blog.csdn.net/qq_34556414/article/details/79001267
Oracle 集群浅谈:https://www.cnblogs.com/yinuo/articles/2703883.html
Oracle的三种高可用集群方案:https://blog.csdn.net/weinierzui/article/details/70143460
sadm简单介绍:http://www.askmaclean.com/archives/在linux-6上使用udev解决rac-asm存储设备名问题.html
注意事项
1.主机名都用小写字母,长度不能超过15位,不要有特殊符号
2.两个节点的Plublic和VIP所在网卡的网卡名要一样
3.表决盘应该都是相同的大小。不同的大小可能导致可用性降低。
环境
[root@redhat6 ~]# cat /etc/redhat-release
Red Hat Enterprise Linux Server release 6.10 (Santiago)
p13390677_112040_Linux-x86-64_1of7.zip
p13390677_112040_Linux-x86-64_2of7.zip
p13390677_112040_Linux-x86-64_3of7.zip
RAC IP地址规划并写入hosts文件(只需要在eth0上配置Plublic IP即可。vip和SCAN IP会自动配置,要保证这两个IP没有被使用)
1.IP地址规划
节点 | hostname | 类型 | IP地址 | 接口 |
---|---|---|---|---|
1 | rac1 | Plublic IP | 10.0.1.131 | eth0 |
1 | rac1-vip | Virtaual IP | 10.0.1.241 | eth0 |
1 | rac1priv | Private IP | 192.168.163.131 | eth1 |
2 | rac2 | Plublic IP | 10.0.1.132 | eth0 |
2 | rac2-vip | Virtaual IP | 10.0.1.242 | eth0 |
2 | rac2priv | Private IP | 192.168.163.132 | eth1 |
both | rac-cluster | SCAN IP | 10.0.1.100 | eth0 |
2.分别修改两个节点的主机名(by all)
vim /etc/sysconfig/network
3.分别修改两台节点的IP地址(by all)
vim /etc/sysconfig/network-scripts/ifcfg-eth0
vim /etc/sysconfig/network-scripts/ifcfg-eth1
4.分别写入两个节点的hosts文件(by all)
echo "10.0.1.131 rac1" >> /etc/hosts
echo "10.0.1.132 rac2" >> /etc/hosts
echo "10.0.1.133 rac1-vip" >> /etc/hosts
echo "10.0.1.134 rac2-vip" >> /etc/hosts
echo "10.0.1.135 rac-scan" >> /etc/hosts
echo "11.11.11.131 rac1-priv" >> /etc/hosts
echo "11.11.11.132 rac2-priv" >> /etc/hosts
cat /etc/hosts
第零步:关闭系统防火墙(by all)
setenforce 0
sed -i 's/SELINUX=enforcing/SELINUX=disabled/' /etc/selinux/config
service iptables stop
chkconfig iptables off
cat /etc/selinux/config
service iptables status
第一步:配置共享存储(by all)
1.现在Win2012上创建5个存储盘
这里创建了1G的ocr盘,一个1G的投票盘(votingdisk),一个20G的数据盘(data),一个10G的备份盘(backup)。
2.连接iscsi
安装并设置自动启动
mount -o loop /dev/cdrom /mnt/cdrom
cd /mnt/cdrom/Packages
rpm -ivh iscsi-initiator-utils-6.2.0.873-27.el6_9.x86_64.rpm
chkconfig iscsid on
扫描iscsi存储并重启服务器,重启后会自动挂载
iscsiadm -m discovery -t sendtargets -p 10.0.1.141:3260
查看
fdisk -l | grep Disk
第二步:初始化设置(by all)
1.禁用ntpd并删除其配置文件(禁用后rac的grid安装的时候回自动使用自带的CTSS进行时间关系)
service ntpd status
service ntpd stop
chkconfig ntpd off
mv /etc/ntp.conf /etc/ntp.conf.bak
2.修改profile文件,在文档尾部新增如下内容
vim /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
3.安装字体,防止中文环境下安装乱码
mkdir -p /usr/share/fonts/zh_CN/TrueType/
cp zysong.ttf /usr/share/fonts/zh_CN/TrueType/
4.编辑/etc/sysctl.conf(by all)
vim /etc/sysctl.conf
fs.file-max = 6815744
kernel.sem = 250 32000 100 128
kernel.shmmni = 4096
kernel.shmall = 1073741824
kernel.shmmax = 96636764160
net.core.rmem_default = 262144
net.core.rmem_max = 4194304
net.core.wmem_default = 262144
net.core.wmem_max = 1048576
fs.aio-max-nr = 1048576
net.ipv4.ip_local_port_range = 9000 65500
sysctl -p
5.编辑/etc/security/limits.conf(by all)
vim /etc/security/limits.conf
grid soft nofile 1024
grid hard nofile 65536
grid soft nproc 2047
grid hard nproc 16384
grid soft stack 10240
grid hard stack 32768
oracle soft nofile 1024
oracle hard nofile 65536
oracle soft nproc 2047
oracle hard nproc 16384
oracle soft stack 10240
oracle hard stack 32768
6.编辑/etc/pam.d/login(by all)
echo "session required pam_limits.so" >> /etc/pam.d/login
6.创建用户并修改密码(by all)
groupadd -g 4321 oinstall
groupadd -g 4322 dba
groupadd -g 4323 oper
groupadd -g 4324 asmdba
groupadd -g 4325 asmadmin
groupadd -g 4326 asmoper
useradd -g oinstall -G asmadmin,asmdba,asmoper,dba grid
useradd -g oinstall -G asmadmin,asmdba,dba,oper oracle
echo "xiaoliu" | passwd --stdin grid
echo "xiaoliu" | passwd --stdin oracle
id oracle
id grid
7.新建grid和oracle安装目录(by all)
mkdir -p /u01/app/11.2.0/grid
mkdir -p /u01/app/grid
mkdir /u01/app/oracle
chown -R grid:oinstall /u01
chown oracle:oinstall /u01/app/oracle
chmod -R 775 /u01/
参照官方文档,采用GI与DB分开安装和权限的策略,对于多实例管理有利。
8.配置环境变量(节点1)
# 需要注意的是ORACLE_UNQNAME是数据库名,创建数据库时指定多个节点是会创建多个实例,ORACLE_SID指的是数据库实例名
# 配置oracle账户环境变量
su - oracle
vim /home/oracle/.bash_profile
export ORACLE_SID=orcl1 # RAC1
export ORACLE_UNQNAME=oracledbrac
export ORACLE_BASE=/u01/app/oracle
export ORACLE_HOME=$ORACLE_BASE/product/11.2.0/db
export TNS_ADMIN=$ORACLE_HOME/network/admin
export PATH=/usr/sbin:$PATH
export PATH=$ORACLE_HOME/bin:$PATH
export LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/lib
source .bash_profile
# 配置grid账户环境变量
su - grid
vim /home/grid/.bash_profile
export ORACLE_SID=+ASM1 # RAC1
export ORACLE_BASE=/u01/app/grid
export ORACLE_HOME=/u01/app/11.2.0/grid
export PATH=/usr/sbin:$PATH
export PATH=$ORACLE_HOME/bin:$PATH
export LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/lib
export CLASSPATH=$ORACLE_HOME/JRE:$ORACLE_HOME/jlib:$ORACLE_HOME/rdbms/jlib
umask 022
source .bash_profile
9.配置环境变量(节点2)
# 配置oracle账户环境变量
su - oracle
vim /home/oracle/.bash_profile
export ORACLE_SID=orcl2 # RAC2
export ORACLE_UNQNAME=oracledbrac
export ORACLE_BASE=/u01/app/oracle
export ORACLE_HOME=$ORACLE_BASE/product/11.2.0/db
export TNS_ADMIN=$ORACLE_HOME/network/admin
export PATH=/usr/sbin:$PATH
export PATH=$ORACLE_HOME/bin:$PATH
export LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/lib
source .bash_profile
# 配置grid账户环境变量
su - grid
vim /home/grid/.bash_profile
export ORACLE_SID=+ASM2 # RAC2
export ORACLE_BASE=/u01/app/grid
export ORACLE_HOME=/u01/app/11.2.0/grid
export PATH=/usr/sbin:$PATH
export PATH=$ORACLE_HOME/bin:$PATH
export LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/lib
export CLASSPATH=$ORACLE_HOME/JRE:$ORACLE_HOME/jlib:$ORACLE_HOME/rdbms/jlib
umask 022
source .bash_profile
10.配置oracle用户ssh互信(by all)
1.配置ssh互信方法1:使用oracle官方系统的脚本(用root账户在其中一个节点执行即可)
# 需要同时配置grid和oracle两个账户下的public ip和vip的ssh互信
/home/grid/grid/sshsetup/sshUserSetup.sh -user oracle -hosts 'rac1 rac2 rac1-priv rac2-priv' -advanced
/home/grid/grid/sshsetup/sshUserSetup.sh -user grid -hosts 'rac1 rac2 rac1-priv rac2-priv' -advanced
-hosts 表示:需要配置互信的服务器ip
-user 表示:用于远程登录到服务器上的用户名
-advanced 表示:hosts里的主机,每两个主机之间都是互信的。
如果不加-advanced,例如:本机是HOST-A,在本机执行./sshUserSetup.sh -user aime -hosts A B C。那么就是HOST-A->A, HOST-A->B, HOST-A->C 的互信关系。A,B,C之间是不互信的。
2.配置ssh互信方法2:手动配置
# 这是很关键的一步,虽然官方文档中声称安装GI和RAC的时候OUI会自动配置SSH,但为了在安装之前使用CVU检查各项配置,还是手动配置互信更优。
# 注意:生成秘钥的的时候,一路回车,不要设定密码。
# 所有节点执行(by all)
su - oracle
rm -rf ~/.ssh
mkdir ~/.ssh
chmod 700 ~/.ssh
ssh-keygen -t rsa
su - grid
rm -rf ~/.ssh
mkdir ~/.ssh
chmod 700 ~/.ssh
ssh-keygen -t rsa
# 节点1执行
su - oracle
ssh rac1 cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
ssh rac2 cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
scp ~/.ssh/authorized_keys rac2:.ssh/authorized_keys
su - grid
ssh rac1 cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
ssh rac2 cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
scp ~/.ssh/authorized_keys rac2:.ssh/authorized_keys
# 节点2执行
su - oracle
chmod 600 ~/.ssh/authorized_keys
exit
su - grid
chmod 600 ~/.ssh/authorized_keys
3.执行以下命令测试(by all)
# 第一次会提示让输入密码,以后不会就表示成功
# 注意:需要同时在两个节点的oracle和grid用户都执行以下测试命令,互相测试
su - oracle
ssh rac1 date && \
ssh rac2 date && \
ssh rac1-priv date && \
ssh rac2-priv date
su - grid
ssh rac1 date && \
ssh rac2 date && \
ssh rac1-priv date && \
ssh rac2-priv date
10.安装依赖包(by all)
x64
yum install -y binutils-* compat-db* compat-db-* control-center* gcc-* gcc-c++-* glibc-* glibc-common-* gnome-libs-* \
make-* pdksh* sysstat-* xscreensaver-* make-* gdb-6.1post-* glibc-* glibc-common-* glibc-devel-* glibc-devel-* \
compat-gcc-* compat-gcc-c++-* compat-libstdc++-* compat-libstdc++-devel-* gnome-libs-* libstdc++-* libstdc++-devel-* \
openmotif-* sysstat-* setarch-* libaio-* libaio-devel-* libXp* libXp-devel* elfutils-libelf-devel* unixODBC-* \
unixODBC-devel-* compat-libcap1.x86_64 libcap.so.1 sg3_utils
x86
yum install -y compat-libstdc++-33-3.2.3-69.el6.i686 glibc-devel-2.12-1.132.el6.i686 libaio-devel-0.3.107-10.el6.i686 libstdc++-4.4.7-4.el6.i686 unixODBC-2.2.14-12.el6_3.i686 unixODBC-devel-2.2.14-12.el6_3.i686 libaio-0.3.107-10.el6.i686
11.配置udev(by all)(方法1)
echo "options=--whitelisted --replace-whitespace" >> /etc/scsi_id.config
for i in b c d e
do
echo "KERNEL==\"sd*\", BUS==\"scsi\", PROGRAM==\"/sbin/scsi_id --whitelisted --replace-whitespace --
device=/dev/\$name\", RESULT==\"`/sbin/scsi_id --whitelisted --replace-whitespace --device=/dev/sd$i`\",
NAME=\"asm-disk$i\", OWNER=\"grid\", GROUP=\"asmadmin\", MODE=\"0660\""
done
将以上脚本输出的内容写入 /etc/udev/rules.d/99-oracle-asmdevices.rules文件 ,如果/etc/udev/rules.d目录下已存在99开头的规则文件,需先将其改为其
他数字开头
vim /etc/udev/rules.d/99-oracle-asmdevices.rules
cat /etc/udev/rules.d/99-oracle-asmdevices.rules
KERNEL=="sd*", BUS=="scsi", PROGRAM=="/sbin/scsi_id --whitelisted --replace-whitespace --device=/dev/$name", RESULT=="360003ff44dc75adc9c722970d3da17b6",NAME="asm-diskb", OWNER="grid", GROUP="asmadmin", MODE="0660"
KERNEL=="sd*", BUS=="scsi", PROGRAM=="/sbin/scsi_id --whitelisted --replace-whitespace --device=/dev/$name", RESULT=="360003ff44dc75adc81e583cc9a98a4e9",NAME="asm-diskc", OWNER="grid", GROUP="asmadmin", MODE="0660"
KERNEL=="sd*", BUS=="scsi", PROGRAM=="/sbin/scsi_id --whitelisted --replace-whitespace --device=/dev/$name", RESULT=="360003ff44dc75adcbe42850beacee517",NAME="asm-diskd", OWNER="grid", GROUP="asmadmin", MODE="0660"
KERNEL=="sd*", BUS=="scsi", PROGRAM=="/sbin/scsi_id --whitelisted --replace-whitespace --device=/dev/$name", RESULT=="360003ff44dc75adcb145661c7f58f967",NAME="asm-diske", OWNER="grid", GROUP="asmadmin", MODE="0660"
启动并验证udev
/sbin/start_udev
[root@rac1 ~]# ll /dev/asm*
brw-rw---- 1 grid asmadmin 8, 16 11月 24 19:33 /dev/asm-diskb
brw-rw---- 1 grid asmadmin 8, 32 11月 24 19:33 /dev/asm-diskc
brw-rw---- 1 grid asmadmin 8, 48 11月 24 19:33 /dev/asm-diskd
brw-rw---- 1 grid asmadmin 8, 64 11月 24 19:33 /dev/asm-diske
这里需要注意的是配置的,前后都不能有空格,否则会报错。最后看到的raw盘权限必须是grid:asmadmin用户。
12.配置udev(by all)(方法2)
vim /etc/udev/rules.d/60-raw.rules
ACTION=="add", KERNEL=="sdb1", RUN+="/bin/raw /dev/raw/raw1 %N"
ACTION=="add", KERNEL=="sdc1", RUN+="/bin/raw /dev/raw/raw2 %N"
ACTION=="add", KERNEL=="sdd1", RUN+="/bin/raw /dev/raw/raw3 %N"
ACTION=="add", KERNEL=="sde1", RUN+="/bin/raw /dev/raw/raw4 %N"
ACTION=="add", KERNEL=="sdf1", RUN+="/bin/raw /dev/raw/raw5 %N"
KERNEL=="raw[1-5]*", OWNER="grid" GROUP="asmadmin", MODE="660"
启动并验证udev
/sbin/start_udev
[root@rac1 sshsetup]# ll /dev/raw/
总用量 0
crw-rw---- 1 grid asmadmin 162, 1 12月 28 20:14 raw1
crw-rw---- 1 grid asmadmin 162, 2 12月 28 20:14 raw2
crw-rw---- 1 grid asmadmin 162, 3 12月 28 20:14 raw3
crw-rw---- 1 grid asmadmin 162, 4 12月 28 20:14 raw4
crw-rw---- 1 grid asmadmin 162, 5 12月 28 20:14 raw5
crw-rw---- 1 root disk 162, 0 12月 28 20:14 rawctl
第三部分:安装grid(by all)
su - grid
unzip p13390677_112040_Linux-x86-64_3of7.zip -d grid/
su - root
rpm -ivh /home/grid/grid/rpm/cvuqdisk-1.0.9-1.rpm
执行安装前的环境检查(by all)
su - grid
/home/grid/grid/./runcluvfy.sh stage -pre crsinst -n rac1,rac2 -verbose -fixup
语法说明:
-pre: 该选项主要检查是否满足安装的需要。
-post:该选择主要检查安装后组件是否正常。
-n:该选项用于指定节点列表。
-verbose:该选项用于输出详细的验证信息。
-fixup:这是Oracle 11gR2中新增加的一个参数。利用这个参数,可以产生一个名为runfixup.sh的脚本。
runfixup.sh脚本中包含一系列的操作系统命令,利用这个脚本可以对操作系统进行一定的修改,使其满足安装条件。完成系统进行校验之后,以root用户的身份执行脚本runfixup.sh,就可以解决操作系统中一些尚不满足安装条件的情况。
在其中有一个节点上开始安装grid(会启动复制到另外一个节点)
su - grid
export DISPLAY=10.0.1.2:0.0
./runInstaller
1 跳过软件更新
2 为集群安装和配置 Oracle Grid infrastucture
3 高级安装
4 简体中文 和 英文
5 SCAN名称改成上边的rac-cluster,关闭【配置GNS】
6 这里默认只有一个节点,需要手动添加节点2
7 确认网卡接口类型对不对(专用网络为心跳网络)
8 Oracle自动存储管理(Oracle ASM)
9 更改搜索路径填入【/dev/asm*】,并选中之前创建的裸磁盘(其中的3块1GB的作为中裁盘)
10 对这些账户使用同一口令(asmadmin)
11 不适用只能平台管理接口
12 确认ASM实例权限分组情况,默认即可
13 Oracle基目录/u01/app/grid,软件位置:/u01/app/11.2.0/grid,是之前设置系统变量里已经输入的地址
14 清单目录:保持默认即可:/u01/app/oralnventory
15 先决条件检查,检查成功后可以保存响应文件
16 安装过程中会提示让使用root用户执行两个sh配置脚本,先在安装Grid的的节点执行,成功以后在到另外节点执行。
/u01/app/oraInventory/orainstRoot.sh
/u01/app/11.2.0/grid/root.sh
第四部分:安装database
同样只需要在一个节点上安装即可,会自动复制到另外节点。
cd /home/oracle/database/
./runInstaller
1 取消【我希望通过 My Oracle Support 接受安全更新】
2 跳过软件更新
3 仅安装数据库软件
4 Oracle Real Application Clusters 数据库安装,下边节点已经将两个节点都显示出来了,会自动复制到第二个节点
5 选择语言
6 企业版
7 安装路径,之前都已经配置好的,默认即可
8 确认Oracle权限用户组,默认即可
9 先决条件检查:
单客户机访问名(SCAN)警告 --忽略
pdksh-5.2.14 警告 --忽略
10 概要,可以保存响应文件
11 开始安装,会自动复制到节点2
12 安装过程中会提示让使用root用户执行两个sh配置脚本
/u01/app/oraInventory/orainstRoot.sh --按提示在节点2执行
/u01/app/oracle/product/11.2.0/db_1/root.sh --需要在两个节点都执行
13 执行完脚本后点确定完成安装
第五部分:创建集群数据库(在节点1上执行即可)
注意8、10、12步骤
su - oracle
dbca
1 Oracle Real Application Cluster(RAC)数据库
2 创建数据库
3 定制数据库
4 全局数据库名和SID前缀都输入:orcl,选择双节点
5 Enterprise Manager和自动维护任务保持默认
6 所有账户(SYS、SYSTEM、DBSNMP、SYSMAN)使用同一管理口令(xiaoliu)
7 存储类型:自动存储管理(ASM),使用 Oracle-Managed Files选择数据库区为之前创建的DATA(+DATA)
指定 ASM 专用的ASMSNMP口令:asmadmin
8 开启:指定快速恢复区,大小:4096 MB
启用归档
9 数据库组件:默认
10 字符集选择:使用 Unicode(AL32UTF8),其他选项默认
11 数据库存储:默认
12 勾选生成数据库创建脚本:/u01/app/oracle/admin/orcl/scripts
13 创建数据库 - 概要 另存为HTML文件:/u01/app/oracle/product/11.2.0/db_1/bin/
14 创建完成
# 在第7步应该会提示密码错误,解决方法:
用网格用户(通常是grid用户)输入:
sqlplus / as sysasm
alter user ASMSNMP identified by 新密码
第六部分:恢复数据库
创建表空间
CREATE TEMPORARY TABLESPACE "PSSC_TEMP" TEMPFILE '+DATA/pssc/pssc_temp.dbf' SIZE 2147483648 AUTOEXTEND ON NEXT 52428800 MAXSIZE 20480M EXTENT MANAGEMENT LOCAL UNIFORM SIZE 1048576;
CREATE TABLESPACE "TBS_PSSC_SM" DATAFILE '+DATA/pssc/DATA_PSSC_SM.DBF' SIZE 524288000 AUTOEXTEND ON NEXT 104857600 MAXSIZE 32767M LOGGING ONLINE PERMANENT BLOCKSIZE 8192 EXTENT MANAGEMENT LOCAL AUTOALLOCATE DEFAULT NOCOMPRESS SEGMENT SPACE MANAGEMENT AUTO;
创建用户
create user admin identified by xiaoliu default tablespace TBS_PSSC_SM temporary tablespace PSSC_TEMP profile DEFAULT;
grant dba to admin with admin option;
grant unlimited tablespace to admin with admin option;
恢复数据库
imp admin/xiaoliu file=/home/oracle/pssc_sm64_20181016.dmp from user=user_pssc_sm64 touser=admin
常用命令
查看监听状态
lsnrctl status
设置DISPLAY变量
export DISPLAY=10.0.1.2:0.0
查看Oracle数据库位置
select name from v$datafile;
select file_name from dba_data_files;
查看磁盘信息
select group_number,path,state,total_mb,free_mb from v$asm_disk;
查看磁盘IO信息
asmcmd lsdsk --statistics -G DATA
查看是否有数据库实例连接上ASM实例
select instance_name,db_name,status from v$asm_client;
ASM DISK信息(显示每个磁盘的大小和可用空间)
select path, state, total_mb, free_mb from v$asm_disk;
ASM DISKGROUP(显示磁盘组的大小和可用空间)
select name,state,type,total_mb,free_mb from v$asm_diskgroup;
ASM管理工具
su - grid
asmca
asmcmd
附录:rlwrap工具可以解决sqlplus和rman退格键和上下键不能使用的问题
rlwrap sqlplus / as sysdba
rlwrap rman target=USER_PSSC_SM64_20181016/123456
附录:sqlplus乱码问题
首先查看Oracle服务端的字符集
select userenv('language') from dual;
设置环境变量
export NLS_LANG=CHINESE_CHINA.AL32UTF8
附录:查看是否为归档模式
查看是否为归档模式
archive log list
%sqlplus /nolog (启动sqlplus)
SQL> conn / as sysdba (以DBA身份连接数据库)
SQL> shutdown immediate; (立即关闭数据库)
SQL> startup mount (启动实例并加载数据库,但不打开)
SQL> alter database archivelog; (更改数据库为归档模式)
SQL> alter database open; (打开数据库)
SQL> alter system archive log start; (启用自动归档)
SQL> exit (退出)
附录:安装Grid后的检查
su - grid
检查crs状态
[grid@rac2 ~]$ crsctl check crs
CRS-4638: Oracle High Availability Services is online
CRS-4537: Cluster Ready Services is online
CRS-4529: Cluster Synchronization Services is online
CRS-4533: Event Manager is online
检查Clusterware资源
[grid@rac2 ~]$ crs_stat -t -v
Name Type R/RA F/FT Target State Host
----------------------------------------------------------------------
ora.DATA.dg ora....up.type 0/5 0/ ONLINE ONLINE rac1
ora....ER.lsnr ora....er.type 0/5 0/ ONLINE ONLINE rac1
ora....N1.lsnr ora....er.type 0/5 0/0 ONLINE ONLINE rac1
ora.asm ora.asm.type 0/5 0/ ONLINE ONLINE rac1
ora.cvu ora.cvu.type 0/5 0/0 ONLINE ONLINE rac1
ora.gsd ora.gsd.type 0/5 0/ OFFLINE OFFLINE
ora....network ora....rk.type 0/5 0/ ONLINE ONLINE rac1
ora.oc4j ora.oc4j.type 0/1 0/2 ONLINE ONLINE rac1
ora.ons ora.ons.type 0/3 0/ ONLINE ONLINE rac1
ora....SM1.asm application 0/5 0/0 ONLINE ONLINE rac1
ora....C1.lsnr application 0/5 0/0 ONLINE ONLINE rac1
ora.rac1.gsd application 0/5 0/0 OFFLINE OFFLINE
ora.rac1.ons application 0/3 0/0 ONLINE ONLINE rac1
ora.rac1.vip ora....t1.type 0/0 0/0 ONLINE ONLINE rac1
ora....SM2.asm application 0/5 0/0 ONLINE ONLINE rac2
ora....C2.lsnr application 0/5 0/0 ONLINE ONLINE rac2
ora.rac2.gsd application 0/5 0/0 OFFLINE OFFLINE
ora.rac2.ons application 0/3 0/0 ONLINE ONLINE rac2
ora.rac2.vip ora....t1.type 0/0 0/0 ONLINE ONLINE rac2
ora....ry.acfs ora....fs.type 0/5 0/ ONLINE ONLINE rac1
ora.scan1.vip ora....ip.type 0/0 0/0 ONLINE ONLINE rac1
检查集群节点
[grid@rac2 ~]$ olsnodes -n
rac1 1
rac2 2
检查两个节点上的Oracle TNS监听器进程
[grid@rac1 ~]$ ps -ef|grep lsnr|grep -v 'grep'|grep -v 'ocfs'|awk '{print$9}'
LISTENER_SCAN1
LISTENER
[grid@rac2 ~]$ ps -ef|grep lsnr|grep -v 'grep'|grep -v 'ocfs'|awk '{print$9}'
LISTENER
确认针对Oracle Clusterware文件的Oracle ASM功能:
如果在 Oracle ASM 上暗转过了OCR和表决磁盘文件,则以Grid Infrastructure 安装所有者的身份,使用给下面的命令语法来确认当前正在运行已安装的Oracle ASM:
[grid@rac1 ~]$ srvctl status asm -a
ASM 正在 rac2,rac1 上运行
ASM 已启用。
附录:RAC维护
查看服务器状态
su - grid
[grid@rac2 ~]$ crs_stat -t -v
Name Type R/RA F/FT Target State Host
----------------------------------------------------------------------
ora.DATA.dg ora....up.type 0/5 0/ ONLINE ONLINE rac1
ora....ER.lsnr ora....er.type 0/5 0/ ONLINE ONLINE rac1
ora....N1.lsnr ora....er.type 0/5 0/0 ONLINE ONLINE rac1
ora.asm ora.asm.type 0/5 0/ ONLINE ONLINE rac1
ora.cvu ora.cvu.type 0/5 0/0 ONLINE ONLINE rac1
ora.gsd ora.gsd.type 0/5 0/ OFFLINE OFFLINE
ora....network ora....rk.type 0/5 0/ ONLINE ONLINE rac1
ora.oc4j ora.oc4j.type 0/1 0/2 ONLINE ONLINE rac1
ora.ons ora.ons.type 0/3 0/ ONLINE ONLINE rac1
ora.orcl.db ora....se.type 0/2 0/1 ONLINE ONLINE rac1
ora....SM1.asm application 0/5 0/0 ONLINE ONLINE rac1
ora....C1.lsnr application 0/5 0/0 ONLINE ONLINE rac1
ora.rac1.gsd application 0/5 0/0 OFFLINE OFFLINE
ora.rac1.ons application 0/3 0/0 ONLINE ONLINE rac1
ora.rac1.vip ora....t1.type 0/0 0/0 ONLINE ONLINE rac1
ora....SM2.asm application 0/5 0/0 ONLINE ONLINE rac2
ora....C2.lsnr application 0/5 0/0 ONLINE ONLINE rac2
ora.rac2.gsd application 0/5 0/0 OFFLINE OFFLINE
ora.rac2.ons application 0/3 0/0 ONLINE ONLINE rac2
ora.rac2.vip ora....t1.type 0/0 0/0 ONLINE ONLINE rac2
ora....ry.acfs ora....fs.type 0/5 0/ ONLINE ONLINE rac1
ora.scan1.vip ora....ip.type 0/0 0/0 ONLINE ONLINE rac1
查看群集运行状态
[grid@rac2 ~]$ srvctl status database -d oracledbrac
实例 orcl1 正在节点 rac1 上运行
实例 orcl2 正在节点 rac2 上运行
检查本地节点的CRS状态
[grid@rac2 ~]$ crsctl check crs
CRS-4638: Oracle High Availability Services is online
CRS-4537: Cluster Ready Services is online
CRS-4529: Cluster Synchronization Services is online
CRS-4533: Event Manager is online
检查集群的CRS状态
[grid@rac2 ~]$ crsctl check cluster
CRS-4537: Cluster Ready Services is online
CRS-4529: Cluster Synchronization Services is online
CRS-4533: Event Manager is online
查看集群中节点配置信息
[grid@rac2 ~]$ olsnodes -n -i -s -t
rac1 1 rac1-vip Active Unpinned
rac2 2 rac2-vip Active Unpinned
查看集群件的表决磁盘信息
[grid@rac2 ~]$ crsctl query css votedisk
## STATE File Universal Id File Name Disk group
-- ----- ----------------- --------- ---------
1. ONLINE 904428cf03064fa6bf30387138b54c35 (/dev/asm-diskb) [DATA]
2. ONLINE 153d86b0a8f14f98bf246fd8a7019a8e (/dev/asm-diskc) [DATA]
3. ONLINE 949a92b9e32e4f95bf34ef896e7d850a (/dev/asm-diskd) [DATA]
Located 3 voting disk(s).
查看集群SCAN VIP信息
[grid@rac2 ~]$ srvctl config scan
SCAN 名称: rac-cluster, 网络: 1/10.0.1.0/255.255.255.0/eth0
SCAN VIP 名称: scan1, IP: /rac-cluster/10.0.1.100
查看集群SCAN Listener信息
[grid@rac2 ~]$ srvctl config scan_listener
SCAN 监听程序 LISTENER_SCAN1 已存在。端口: TCP:11521
附录:格式化ASM 裸设备:
[root@rac1 ~]# ll /dev/asm*
brw-rw---- 1 grid asmadmin 8, 16 11月 24 21:59 /dev/asm-diskb
brw-rw---- 1 grid asmadmin 8, 32 11月 24 21:59 /dev/asm-diskc
brw-rw---- 1 grid asmadmin 8, 48 11月 24 21:59 /dev/asm-diskd
brw-rw---- 1 grid asmadmin 8, 64 11月 24 21:59 /dev/asm-diske
dd if=/dev/zero of=/dev/raw/raw1 bs=1024 count=256
dd if=/dev/zero of=/dev/raw/raw2 bs=1024 count=256
dd if=/dev/zero of=/dev/raw/raw3 bs=1024 count=256
dd if=/dev/zero of=/dev/raw/raw4 bs=1024 count=256
dd if=/dev/zero of=/dev/raw/raw5 bs=1024 count=256
附录:oracle RAC RMAN自动备份脚本
1.节点1脚本
#!/bin/bash
ORACLE_SID=orcl1
ORACLE_HOME=/u01/app/oracle/product/11.2.0/db_1
ORACLE_BASE=/u01/app/oracle
export ORACLE_SID=$ORACLE_SID
export ORACLE_HOME=$ORACLE_HOME
export ORACLE_BASE=$ORACLE_BASE
backtime=`date +%Y%m%d`
echo $backtime
# by 小六 20181126 1327133225@qq.com
# ######################### oracle RAC RMAN自动备份脚本 #########################
# 备份要求
# 条件一:在node1每晚进行全量备份,同时删除过期备份和归档日志文件;
# 条件二:为保证节点备份的可用性,备份时node1本地保存一份,ASM存储保存一份;
# 条件三:本地node1点发生故障时,node2可以接管备份操作,在node2上生成全备和ASM中生成备份。
#
# by all
# su - oracle
# mkdir -p /home/oracle/log
# mkdir -p /home/oracle/bak
#
# %c 备份片的拷贝数
# %d 数据库名称
# %D 位于该月中的第几天 (DD)
# %M 位于该年中的第几月 (MM)
# %F 一个基于DBID唯一的名称,这个格式的形式为c-IIIIIIIIII-YYYYMMDD-QQ,其中IIIIIIIIII为该数据库的DBID,YYYYMMDD为日期,QQ是一个1-256的序列
# %n 数据库名称,向右填补到最大八个字符
# %u 一个八个字符的名称代表备份集与创建时间
# %p 该备份集中的备份片号,从1开始到创建的文件数
# %U 一个唯一的文件名,代表%u_%p_%c
# %s 备份集的号
# %t 备份集时间戳
# %T 年月日格式(YYYYMMDD)
$ORACLE_HOME/bin/rman log=/home/oracle/log/node1_backupall_$backtime.log <<EOF
connect target /
run{
CONFIGURE DATAFILE BACKUP COPIES FOR DEVICE TYPE DISK TO 2;
CONFIGURE ARCHIVELOG BACKUP COPIES FOR DEVICE TYPE DISK TO 2;
# by all
# su - oracle
# mkdir -p /home/oracle/oracle_bak
allocate channel c1 type disk FORMAT '/home/oracle/bak/node1_%d_%T_%u_%p', '+DATA/bak/node1_%d_%T_%u_%p';
allocate channel c2 type disk FORMAT '/home/oracle/bak/node1_%d_%T_%u_%p', '+DATA/bak/node1_%d_%T_%u_%p';
backup as compressed backupset database ;
backup as compressed backupset archivelog all delete input;
# report obsolete命令用于列出rman资料库中能够被删除的全备份、数据文件拷贝和归档日志记录。
# report obsolete;
# 删除陈旧备份(noprompt=不提示)
# delete noprompt obsolete;
# 核对所有备份集
crosscheck backup;
# 核对归档日志
crosscheck archivelog all;
# 删除EXPIRED备份集(noprompt=不提示)
# delete noprompt expired backup;
# 释放通道
release channel c1;
release channel c2;
}
EOF
echo "backup complete!"
scp /home/oracle/log/node1_backupall_$backtime.log oracle@rac2:/home/oracle/log/
exit
2.节点2脚本
#!/bin/bash
ORACLE_SID=orcl2
ORACLE_HOME=/u01/app/oracle/product/11.2.0/db_1
ORACLE_BASE=/u01/app/oracle
export ORACLE_SID=$ORACLE_SID
export ORACLE_HOME=$ORACLE_HOME
export ORACLE_BASE=$ORACLE_BASE
backtime=`date +%Y%m%d`
echo $backtime
if [ -f /oracle/rmanbak/log/node1_backupall_$backtime.log ]
then
echo "node1 backup have been success!"
exit
else
echo "node1 backup have been filed,start node2 backup!"
$ORACLE_HOME/bin/rman log=/oracle/rmanbak/log/node2_backupall_$backtime.log <<EOF
connect target /
run{
CONFIGURE DATAFILE BACKUP COPIES FOR DEVICE TYPE DISK TO 2;
CONFIGURE ARCHIVELOG BACKUP COPIES FOR DEVICE TYPE DISK TO 2;
allocate channel c1 type disk FORMAT '/oracle/rmanbak/ORCL/node2_%d_%T_%u_%p','+FRA/ORCL/BACKUPSET/node1_%d_%T_%u_%p' ;
allocate channel c2 type disk FORMAT '/oracle/rmanbak/ORCL/node2_%d_%T_%u_%p','+FRA/ORCL/BACKUPSET/node2_%d_%T_%u_%p';
backup database ;
backup archivelog all delete input;
report obsolete;
delete noprompt obsolete;
crosscheck backup;
crosscheck archivelog all;
delete noprompt expired backup;
release channel c1;
release channel c2;
}
EOF
echo "node2 backup complete!"
fi
#scp /oracle/rmanbak/log/node1_backupall_$backtime.log oracle@OracleNode2:/oracle/rmanbak/log/
exit
3.设置定时任务
- 渗透测试专用版Linux:BackBox3.13发布
- android dumpsys 快速入门
- 不容小觑的金融诈骗手段 – 419诈骗
- 新年伊始,微软再遭叙利亚电子军挑衅
- 任天堂3DS游戏机烧录卡蓝屏事件
- android调用dialog.hide()引起的输入事件派发错误问题追踪
- 互联网世界的毒瘤——僵尸网络
- android 游戏移植 (一) (文末有福利) | SDL 西游释厄传调试
- 自制分布式漏洞扫描工具
- [细节剖析]X Windows中一个22年的漏洞
- android 游戏移植 (二) | SDL2.0适配 西游释厄传
- Android调用系统相册和拍照的Demo
- 黑客是如何通过RDP远程桌面服务进行攻击的
- SDL的几个宽高概念讲解(文中有福利)
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- MongoDB权威指南学习笔记(3)--复制和分片
- 工作10年后,再看String s = new String("xyz") 创建了几个对象?
- MongoDB权威指南学习笔记(2)--设计应用
- 高性能MySQL学习笔记
- 【Netty之旅四】你一定看得懂的Netty客户端启动源码分析!
- dubbo(二)动态编译compiler
- HttpClient工具类
- java面试知识要点汇总(线程和锁)
- 「二八法则」的数据可视化:用帕累托图进行数据分析
- dubbo(三)服务运行容器Container
- python实现抓取web和xcx数据推送到wx和邮件
- 如何快速识别项目水平?
- 亲测有效 | OpenVINO支持ONNX格式文件直接读取了
- 【自动化测试】【Jest-Selenium】(01)—— Jest 入门
- 设计模式:原型模式