ORACLE日常维护

查看状态

[root@rac1 bin]# ./srvctl status nodeapps
VIP rac1-vip is enabled
VIP rac1-vip is running on node: rac1
VIP rac2-vip is enabled
VIP rac2-vip is running on node: rac2
Network is enabled
Network is running on node: rac1
Network is running on node: rac2
GSD is disabled
GSD is not running on node: rac1
GSD is not running on node: rac2
ONS is enabled
ONS daemon is running on node: rac1
ONS daemon is running on node: rac2
eONS is enabled
eONS daemon is running on node: rac1
eONS daemon is running on node: rac2
[root@rac1 bin]# ./srvctl status asm
ASM is running on rac1,rac2
[root@rac1 bin]# ./srvctl status  instance -d racdb -n rac1
Instance racdb1 is running on node rac1
[root@rac1 bin]# ./srvctl status  instance -d racdb -n rac2
Instance racdb2 is running on node rac2

2、登陆数据库(是建立数据库时 racdb )

sqlplus sys/tiyukeji@racdb as sysdba
show parameter service_names

3、客户端 tnsnames.ora 的配置

racdbthw =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.177.126)(PORT = 1521))
    (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.177.125)(PORT = 1521))
    (LOAD_BALANCE = yes)
    (FAILOVER = on)
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = racdb)
      (FAILOVER_MODE =
        (TYPE = SELECT)
        (METHOD = BASIC)
        (RETRIES = 180)
        (DELAY = 5)
      )
    )
  )

TAF(Transparent Application Failover)即透明应用程序故障转移技术。当初始化连接出现问题无

法连接时,该功能可以保证应用程序重新连接到可用服务。

在重新连接过程中,之前的活动事务将会被回滚,但在“具体条件”下 TAF 可以保证SELECT 语句不被终止。

(LOAD_BALANCE = yes)负载均衡

(FAILOVER = on) 故障转移 这种 Failover 的特点: 只在建立连接那一时刻起作用,也就是说,这种 Failover 方式只在发起连接时才会去感知节点故障,如果节点没有反应,则自动尝试地址列表中的下一个地址。一旦连接建立之后,节点出现故障都不会做处理,从客户端的表现就是会话断开了,用户程序必须重新建立连接。启用这种 Failover 的方法就是在客户端的 tnsnames.ora 中添加FAILOVER=ON 条目,这个参数默认就是 ON,所以即使不添加这个条目,客户端也会获得这种 Failover 能力。

FAILOVER_MODE 现在的大部分流行的应用系统(如:weblogic, Jboss),都是启动时就建立若干到数据

库的长连接,在应用程序整个生命周期内重用这些连接。

而 Client-Side Connet Time Failover 的工作方式是它对应用程序的可用性没有太大帮助。

(TYPE = SELECT) TYPE: 用于定义发生故障时对完成的 SQL 语句如何处理,其中有 2 种类型:session

和 select.

这 2 种方式对于未提交的事务都会自动回滚,区别在于对 select 语句的处理,对于 select,用户正在执行的 select 语句会被转移到新的实例上,在新的节点上继续返回后续结果集,而已经返回的记录集则抛弃。假设用户正在节点 1 上执行查询,整个结果集共有 100 条记录,现在已从节点 1 上返回 10 条记录,这时节点 1 宕机,用户连接被转移到节点 2 上,如果是 session 模式,则需要重新执行查询语句;如果是 select 方式,会从节点 2 上继续返回剩下的 90 天记录,而已经从节点 1 返回的 10 条记录不会重复返回给用户,对于用户而言,感受不到这种切换。

显然为了实现 select 方式,Oracle 必须为每个 session 保存更多的内容,包括游标,用户上下文等,需要更多的资源也是用资源换时间的方案。(METHOD = BASIC) METHOD: 用户定义何时创建到其实例的连接,有 BASIC 和 PRECONNECT 两种可选值。

1、BASIC: 是指在感知到节点故障时才创建到其他实例的连接。

2、PRECONNECT: 是在最初建立连接时就同时建立到所有实例的连接,当发生故障时,立刻就可以切换到其他链路上。

两种方法比较: BASIC 方式在 Failover 时会有时间延迟,PRECONNECT 方式虽然没有时间延迟,

但是建立多个冗余连接会消耗更多资源,两者就是是用时间换资源和用资源换时间的区别。

(RETRIES = 180) (DELAY = 5) 是 retry 的复数形式,RETRIES:当前节点失败后,失败切换功能会尝

试连接备用节点,这个值确定了尝试的次数,如果仅 DELAY 被指定,RETRIES 默认为 5。DELAY:两次尝试之间等待的秒数,如果仅指定 RETRIES,DELAY 默认为 1 秒

4、RAC 日常维护手册

一、OCR 和 Voting disk 的管理

Voting disk(表决磁盘方面):

Voting disk 记录节点成员信息,如包含哪些节点成员、节点的添加删除信息记录,大小为 20MB

查看 voting disk 位置:crsctl query css votedisk

$ crsctl query css votedisk

0. 0 /dev/rhdisk3

如果 CRS 安装过程失败,需要重新安装则需要初始化 voting disk 盘,可用 DD 或重建卷

dd if=/dev/zero of=/dev/rhdisk3 bs=8192 count=2560

备份 votedisk: dd if=/dev/rhdisk3 of=/tmp/votedisk.bak

恢复 votedisk: dd if=/tmp/votedisk.bak of=/dev/rhdisk3

添加 voting disk 镜像盘:

crsctl add css votedisk /dev/rhdisk7 -force

Votedisk 不像 OCR,必须是一半以上可用,否则集群会宕掉,所以不应该只添加一块。在添加 voting

disk 的时候必须停掉 CRS

删除 voting disk 镜像盘

crsctl delete css votedisk /dev/rhdisk7 -force

OCR 方面

OCR 记录节点成员的配置信息,如 database、ASM、instance、listener、VIP 等 CRS 资源的配置信息,

可存储于裸设备或者群集文件系统上,推荐设置大小为 100MB

如以 RAW 的方式,则划分一个 RAW,例如:/dev/rhdisk2

如果 CRS 安装过程失败,需要重新安装则需要初始化 OCR 盘(RAW 方式),可用 DD 或重建卷

dd if=/dev/zero of=/dev/rhdisk2 bs=8192 count=12800

Oracle 每四个小时自动发起备份,并保存三个版本,但只存在一个节点上

$ ocrconfig -showbackup
poaisdb1     2008/04/10 22:53:29     
/u01/app/oracle/product/10.2.0/crs/cdata/crs
poaisdb1     2008/04/10 18:53:28     
/u01/app/oracle/product/10.2.0/crs/cdata/crs
poaisdb1     2008/04/10 14:53:27     
/u01/app/oracle/product/10.2.0/crs/cdata/crs
poaisdb1     2008/04/09 06:53:20     
/u01/app/oracle/product/10.2.0/crs/cdata/crs
poaisdb2     2008/04/03 03:31:28     
/u01/app/oracle/product/10.2.0/crs/cdata/crs

恢复 OCR:ocrconfig -restore

/u01/app/oracle/product/10.2.0/crs/cdata/crs/backup01.ocr

OCR 手动导出:ocrconfig -export /tmp/ocr_bak

OCR 手动导入:ocrconfig -import /tmp/ocr_bak

添加 OCR 镜像盘一:

1.用 crsctl stop crs 停掉所有节点 CRS 服务

2.创建用于镜像 OCR 的 RAW 设备,比如为:/dev/rhdisk6

3.用 ocrconfig –export 导出 OCR 的信息

4.编辑/etc/oracle/ocr.loc 文件,添加 ocrmirrorconfig_loc 行

$ cat ocr.loc
ocrconfig_loc=/dev/rhdisk2
ocrmirrorconfig_loc=/dev/rhdisk6
local_only=FALSE

5.用 ocrconfig –import 导入 OCR 的信息

6.检查 ocr 设置信息

$ ocrcheck
Status of Oracle Cluster Registry is as follows :
         Version                  :          2
         Total space (kbytes)     :     103724
         Used space (kbytes)      :       3824
         Available space (kbytes) :      99900
         ID                       : 1086971606
         Device/File Name         : /dev/rhdisk2    Device/File integrity check 
succeeded 
         Device/File Name         : /dev/rhdisk6    Device/File integrity check 
succeeded
         Cluster registry integrity check succeeded

7.最后用 crsctl start crs 启动 CRS 服务

使用导出,导入进行备份和恢复

Oracle 推荐在对集群做调整时,比如增加,删除节点之前,应该对 OCR 做一个备份,可以使用 export 备

份到指定文件,如果做了 replace 或者 restore 等操作,Oracle 建议使用 cluvfy comp ocr -n

all 命令来做一次全面的检查。该命令在 clusterware 的安装软件里。

1) 首先关闭所有节点的 CRS

[root@raw1 bin]# ./crsctl stop crs
Stopping resources.
Successfully stopped CRS resources
Stopping CSSD.
Shutting down CSS daemon.
Shutdown request successfully issued.

2) 用 root 用户导出 OCR 内容

[root@raw1 bin]# ./ocrconfig -export /u01/ocr.exp

3) 重启 CRS

[root@raw1 bin]# ./crsctl start crs

Attempting to start CRS stack

The CRS stack will be started shortly

4) 检查 CRS 状态

[root@raw1 bin]# ./crsctl check crs
CSS appears healthy
CRS appears healthy
EVM appears healthy

)破坏 OCR 内容

[root@raw1 bin]# dd if=/dev/zero of=/dev/raw/raw1 bs=1024 count=102400
102400+0 records in
102400+0 records out

6) 检查 OCR 一致性

[root@raw1 bin]# ./ocrcheck

PROT-601: Failed to initialize ocrcheck

7)使用 cluvfy 工具检查一致性

[root@raw1 cluvfy]# ./runcluvfy.sh comp ocr -n all
Verifying OCR integrity
Unable to retrieve nodelist from Oracle clusterware.
Verification cannot proceed.

8) 使用 Import 恢复 OCR 内容

[root@raw1 bin]# ./ocrconfig -import /u01/ocr.exp

9)再次检查 OCR

[root@raw1 bin]# ./ocrcheck
Status of Oracle Cluster Registry is as follows :
         Version                  :          2
         Total space (kbytes)     :     147352
         Used space (kbytes)      :       4364
         Available space (kbytes) :     142988
         ID                       :  610419116
         Device/File Name         : /dev/raw/raw1
                                    Device/File integrity check succeeded
                                    Device/File not configured
         Cluster registry integrity check succeeded

10) 使用 cluvfy 工具检查

[root@raw1 cluvfy]# ./runcluvfy.sh comp ocr -n all
Verifying OCR integrity
WARNING:
These nodes cannot be reached:
        raw2  
Verification will proceed with nodes:
        raw1
ERROR:
User equivalence unavailable on all the nodes.
Verification cannot proceed.
Verification of OCR integrity was unsuccessful on all the nodes.

注:此处不成功是因为我的机器卡,故 raw2 节点没有启动

移动 OCR 文件位置

实例演示将 OCR 从/dev/raw/raw1 移动到/dev/raw/raw3 上。

1) 查看是否有 OCR 备份

[root@raw1 bin]# ./ocrconfig -showbackup

如果没有备份,可以立即执行一次导出作为备份:

[root@raw1 bin]# ./ocrconfig -export /u01/ocrbackup -s online

2) 查看当前 OCR 配置

[root@raw1 bin]# ./ocrcheck
Status of Oracle Cluster Registry is as follows :
         Version                  :          2
         Total space (kbytes)     :     147352
         Used space (kbytes)      :       4364
         Available space (kbytes) :     142988
         ID                       :  610419116
         Device/File Name         : /dev/raw/raw1
                                    Device/File integrity check succeeded
                                    Device/File not configured
         Cluster registry integrity check succeeded

输出显示当前只有一个 Primary OCR,在/dev/raw/raw1。 没有 Mirror OCR。 因为现在只有一个 OCR

文件,所以不能直接改变这个 OCR 的位置,必须先添加镜像后在修改,否则会报:Failed to

initialize ocrconfig.

3) 添加一个 Mirror OCR

[root@raw1 bin]# ./ocrconfig -replace ocrmirror /dev/raw/raw4

4) 确认添加成功

[root@raw1 bin]# ./ocrcheck

5)改变 primary OCR 位置

[root@raw1 bin]# ./ocrconfig -replace ocr /dev/raw/raw3

确认修改成功:

[root@raw1 bin]# ./ocrcheck

6)使用 ocrconfig 命令修改后,所有 RAC 节点上的/etc/oracle/ocr.loc 文件内容也会自动同步了,

如果没有自动同步,可以手工的改成以下内容。

[root@raw1 bin]# more /etc/oracle/ocr.loc
ocrconfig_loc=/dev/raw/raw1
Ocrmirrorconfig_loc=/dev/raw/raw3
local_only=FALSE

指定新的备份目录 ocrconfig -backuploc 新的目录

二、其他常用命令

1、$ORACLE_HOME/bin/localconfig add|delete 添加删除 CSS 服务

不管你是 RAC or non-RAC,如果使用了 ASM,那么 OCSSD 就是必须的,因为 ASM 中使用的 Group

Services (GS)是 OCSSD 提供的.

执行$ORACLE_HOME/bin/localconfig add 就是安装 ocssd

执行$ORACLE_HOME/bin/localconfig delete 就是删除 ocssd

2、olsnodes

集群是由哪些节点组成的

# olsnodes -i -n -p
rac1    1       rac1-priv       rac1-vip
rac2    2       rac2-priv       rac2-vip

查看 OCR 所在的位置:/etc/oracle/ocr.loc 或者 ocrcheck

查看 VoteDisk 所在的位置:crsctl query css votedisk

oracle@orac-b:~> srvctl status database -d rac
Instance rac1 is running on node orac-a
Instance rac2 is running on node orac-b
oracle@orac-b:~> srvctl stop instance -d rac -i rac1 -o abort

3、oifcfg

网络层由各个节点的网络组件组成,包括 2 个物理网卡和 3 个 IP 地址。网络层仅此命令。

oifcfg 命令用来定义和修改 Oracle 集群需要的网卡属性,这些属性包括网卡的网段地址,子网掩码,接

口类型等。 要想正确的使用这个命令, 必须先知道 Oracle 是如何定义网络接口的,Oracle 的每个网络接口包括名称,网段地址,接口类型 3 个属性。

Oifcfg 命令的格式如下: interface_name/subnet:interface_type

这些属性中没有 IP 地址,但接口类型有两种,public 和 private,前者说明接口用于外部通信,用于

Oracle Net 和 VIP 地址,而后者说明接口用于 Interconnect。

接口的配置方式分为两类: global 和 node-specific。 前者说明集群所有节点的配置信息相同,也就是

说所有节点的配置是对称的;而后者意味着这个节点的配置和其他节点配置不同,是非对称的。

Iflist:显示网口列表

Getif: 获得单个网口信息

Setif:配置单个网口

Delif:删除网口

rac2:/dev/raw # oifcfg --help
Name:
        oifcfg - Oracle Interface Configuration Tool.
Usage:  oifcfg iflist [-p [-n]]
        oifcfg setif {-node <nodename> | -global} {<if_name>/<subnet>:<if_type>}...
        oifcfg getif [-node <nodename> | -global] [ -if <if_name>[/<subnet>] [-type 
<if_type>] ]
        oifcfg delif [-node <nodename> | -global] [<if_name>[/<subnet>]]
        oifcfg [-help]
        <nodename> - name of the host, as known to a communications network
        <if_name>  - name by which the interface is configured in the system
        <subnet>   - subnet address of the interface
        <if_type>  - type of the interface { cluster_interconnect | public | storage
}

使用 iflist 显示网口列表

rac1:~ # oifcfg iflist
eth0  192.168.1.0
eth1  192.168.2.0

使用 getif 查看每个网卡的属性

rac1:~ # oifcfg getif
eth0  192.168.1.0  global  public
eth1  192.168.2.0  global  cluster_interconnect

以上输出说明 eth0 网段地址是 192.168.1.0,网卡类型是 public,也就是用于 Oracle NET 和 VIP。配

置类型 global 说明所有节点的 eth0 网卡都属于 192.168.1.0 网段,并且都是 public 类型。

rac1:~ #  oifcfg getif -global rac1
eth0  192.168.1.0  global  public
eth1  192.168.2.0  global  cluster_interconnect
rac1:~ # oifcfg getif -node rac1

删除网卡接口配置

[root@raw1 bin]# ./oifcfg delif -global

添加接口配置

# ./oifcfg setif -global eth0/192.168.1.119:public
# ./oifcfg setif -global eth1/10.85.10.119:cluster_interconnect

4、crsctl

rac2:/ # crsctl
Usage: crsctl check crs - checks the viability of the Oracle Clusterware
crsctl check cssd        - checks the viability of Cluster Synchronization 
Services
 crsctl check crsd        - checks the viability of Cluster Ready Services
 crsctl check evmd        - checks the viability of Event Manager
 crsctl check cluster [-node <nodename>] - checks the viability of CSS across 
nodes
 crsctl set css <parameter> <value> - sets a parameter override
 crsctl get css <parameter> - sets the value of a Cluster Synchronization 
Services parameter 
 crsctl unset css <parameter> - sets the Cluster Synchronization Services 
parameter to its default
 crsctl query css votedisk - lists the voting disks used by Cluster 
Synchronization Services 
 crsctl add css votedisk <path> - adds a new voting disk 
 crsctl delete css votedisk <path> - removes a voting disk 
 crsctl enable crs - enables startup for all Oracle Clusterware daemons
 crsctl disable crs - disables startup for all Oracle Clusterware daemons
 crsctl start crs [-wait] - starts all Oracle Clusterware daemons
 crsctl stop crs [-wait] - stops all Oracle Clusterware daemons. Stops Oracle 
Clusterware managed resources in case of cluster.
 crsctl start resources - starts Oracle Clusterware managed resources
 crsctl stop resources - stops Oracle Clusterware managed resources

是否开机启动 crs crsctl enable/disable crs

检查 crs 栈状态 crsctl check crs

Crsctl check crsd

Crsctl check cssd

Crsctl check evmd

启动停止 crs crsctl start |stop crs 或者/etc/init.d/init.crs start|stop

查看 votedisk 位置 crsctl query css votedisk

rac2:/ # crsctl query css votedisk

0. 0 /dev/raw/raw2

Located 1 voting disk(s).

查看和修改 crs 参数:

Crsctl get css miscount

Crsctl set css miscount 100

5、crs_stat

rac2:/ # crs_stat -ls
Name           Owner          Primary PrivGrp          Permission  
-----------------------------------------------------------------
ora...._FAQ.cs oracle         oinstall                 rwxrwxr--
ora....db1.srv oracle         oinstall                 rwxrwxr--
ora....db2.srv oracle         oinstall                 rwxrwxr--
ora.oradb.db   oracle         oinstall                 rwxrwxr--
ora....b1.inst oracle         oinstall                 rwxrwxr--
ora....b2.inst oracle         oinstall                 rwxrwxr--
ora....SM1.asm oracle         oinstall                 rwxrwxr--
ora....C1.lsnr oracle         oinstall                 rwxrwxr--
ora.rac1.gsd   oracle         oinstall                 rwxr-xr--
ora.rac1.ons   oracle         oinstall                 rwxr-xr--
ora.rac1.vip   root           oinstall                 rwxr-xr--
ora....SM2.asm oracle         oinstall                 rwxrwxr--
ora....C2.lsnr oracle         oinstall                 rwxrwxr--
ora.rac2.gsd   oracle         oinstall                 rwxr-xr--
ora.rac2.ons   oracle         oinstall                 rwxr-xr--
ora.rac2.vip   root           oinstall                 rwxr-xr—
crs_stat  –t
crs_stat  ora.rac1.vip

6、onsctl

7、srvctl

启动停止数据库或者实例

Srvctl  start|stop  database  -d  oradb   [-o  open|mount|nomount]
Srvctl  start|stop  instance  -d  oradb  -i  oradb1  [-o  open|mount|nomount]
Srvctl  status  database  -d  oradb
Instance oradb2 is not running on node rac2
Instance oradb1 is not running on node rac1

启动停止 service

Srvctl  start|stop  service  -d  oradb  -s  SS_FAQ  [ -i  oradb1]
Srvctl  status  service  -d  oradb  -s  SS_FAQ
# srvctl  status  service  -d  oradb  -s  SS_FAQ
Service SS_FAQ is running on instance(s) oradb1, oradb2

启动停止 ASM

Srvctl  start|stop  asm  -n  rac1  [-I  oradb1]
srvctl status asm -n rac1

启动停止监听

Srvctl  start|stop  listener  -n  rac1  [-l listener_name]
Srvctl  status  listener  -n  rac1

启动停止 nodeapps

Srvctl  start|stop|status  nodeapps  -n  rac1
# srvctl stop nodeapps  -n rac1

此命令停掉 ons listener VIP GSD 以及该节点上的服务

# srvctl status nodeapps -n rac1
VIP is not running on node: rac1
GSD is not running on node: rac1
Listener is not running on node: rac1
ONS daemon is not running on node: rac1

开机是否启动数据库和实例

Srvctl  enable|disable  database  -d  oradb
Srvctl  enable|disable  instance  -d  oradb  -i  oradb1

开机是否启动 ASM

Srvctl  enable|disable  asm  -n  rac1

开机是否启动 service

Srvctl  enable|disable  service  -d  oradb  -s  SS_FAQ

显示在 OCR 中注册的所有数据库

Srvctl  config  database
# srvctl config database
oradb
# srvctl config database -d oradb
rac2 oradb2 /opt/oracle/product/11g/db_1
rac1 oradb1 /opt/oracle/product/11g/db_1
# srvctl config database -d oradb -a
rac2 oradb2 /opt/oracle/product/11g/db_1
rac1 oradb1 /opt/oracle/product/11g/db_1
DB_UNIQUE_NAME: oradb
DB_NAME: oradb
ORACLE_HOME: /opt/oracle/product/11g/db_1
SPFILE: +DG1/oradb/spfileoradb.ora
DOMAIN: null
DB_ROLE: null
START_OPTIONS: null
POLICY:  AUTOMATIC
ENABLE FLAG: DB ENABLED

查看 nodeapps 的配置

# srvctl config nodeapps -n rac1 -a
VIP exists.: /rac1-vip/192.168.1.106/255.255.255.0/eth0
# srvctl config nodeapps -n rac1 -g
GSD exists.
# srvctl config nodeapps -n rac1 -l
Listener exists.
# srvctl config nodeapps -n rac1 -s
ONS daemon exists.

查看 listener 的配置

# srvctl config listener -n rac1
rac1 LISTENER_RAC1
# srvctl config listener -n rac2
rac2 LISTENER_RAC2

查看 ASM

# srvctl config asm -n rac1
+ASM1 /opt/oracle/product/11g/db_1
# srvctl config asm -n rac2
+ASM2 /opt/oracle/product/11g/db_1

查看 service

# srvctl config service -d oradb
SS_FAQ PREF: oradb1 oradb2 AVAIL:

添加删除对象

Srvctl  add  database  -d  abc  -o  $ORACLE_HOME
Srvctl  add  instance  -d  abc  -n  rac1  -i  abc1
Srvctl  add  instance  -d  abc  -n  rac1  -i  abc1
Srvctl  add  service  -d  abc  -s  SSFAQ  -r  abc1  -a  abc2  -P  basic
Srvctl  remove  service  -d  abc  -s  SSFAQ
Srvctl  remove  instance  -d  abc  -I  abc1
Srvctl  remove  database  -d  abc  

删除数据库后,数据库对象不会被删除,只是删除了数据库在 OCR 中的定义,以后可通过 ADD 再次添加到OCR 中

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

早起晚睡

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值