读书人

RAC负荷是否正常

发布时间: 2012-07-08 17:43:43 作者: rapoo

RAC负载是否正常

select inst_id,count(1) from gv$session group by inst_id;
看值是否接近。
接近就实现了lb
至于failover如果你没使用配置的service
默认failover=on是打开的,只是failover_mode配置有所差别。

其中TAF-Policy可选:basic 和 preconnect。 例如:
srvctl add service -d RAC -s Service2 -r "RAC1,RAC2" -a "RAC3,RAC4" -P basic
注意:srvctl add service中,只有perferred才会创建服务。 即在OCR中注册一个ora.raw.dmm.Raw1.Srv的服务。
????? 2)? 查看配置信息
??????? #srvctl config service -d database-name [-s service-name] [-a]
??????? 如果这里不指定"-s service-name",就会显示所有Service的配置,这些配置包括preferred 和available instance. 使用-a 选项,还会显示TAF 相关信息。
????? 3) 是否自动运行service
数据库启动时,会自动启动所有的Service。有时为了为了维护需要,需要禁用这个特性,在维护完成后再启动这个特性。
#srvctl enable/disable service -d database-name -s service-name -i instance-name
?? 4)启动service
??????? #srvctl start service -d <database-name> -s <service-name> -i instance-name -o start-option -c connect-string -q
如果不指定service-name, 则所有的service 都会被启动,可以使用逗号分隔方式,同时启动多个service。 -i 指定在那个实例上启动service。
?????? 5) 停止service
?#srvctl stop service -d <database-name> -s <service-name> -i instance-name -c connect-string -q -f
其中-f 选项可以强制关闭service,并中断了其所有用户的连接。
?????? 6) 查看service 状态
?#srvctl status service -d <database-name> -s? service-name -i instance-name -f -v
? 其中-f 可以显示被disable的instance 信息,而-v 可以显示详细输出
7) 删除service
????? #srvctl remove service -d database-name -s service-name -i instance-name [-f]
?? 注意:在使用srvctl 创建service时,需要注意TAF策略选项必须通过dbms_service包来配置。

示例:
Begin
Dbms_service.modify_service(
Service_name='>Service1',
Failover_method=>dbms_service.failover_method_basic,
Failover_type=>dbms_service.failover_type_select,
Failover_retries=>180,
Failover_delay=>5
);
End;
?
3.3 配置Service 的注意事项
?1). 数据库的服务名是用service_name 参数来指定的,一个数据库可以有多个服务名,但是service_name最长是4kb,不要手工来修改这个参数
?2)最多可以创建64个service,每个数据库有2个隐含的service,因此留给用户的就只有62个service。不能修改这两个隐含service的配置,并且也不能手工启动或停止这2个服务。 这两个隐含的service分别是:SYS$BACKGROUND 和 SYS$USERS.
?3) 当使用dbca配置Service 时,dbca 会自动更新OCR,启动Service, 当删除service时,会停止service,并更新OCR.
?4) 使用srvctl 这个工具时,命令只更新OCR中的配置,不会更新data dctionary 和 listener 中的信息,因此还需要使用dbma_servie 包来更新data dictionary,手工更改listener配置文件。 故推荐使用DBCA工具来配置更改service配置
?5) 如果客户端想通过Service 方式连接数据库,需要在tns条目中使用service_name 方式引用数据库。 如:
RAC =
? (DESCRIPTION =
???? (ADDRESS = (PROTOCOL = TCP)(HOST = rac1-vip)(PORT = 1521))
???? (ADDRESS = (PROTOCOL = TCP)(HOST = rac2-vip)(PORT = 1521))
????? (LOAD_BALANCE=YES)
????? (
??? CONNECT_DATA=
???? (SERVER=DEDICATED)
?(SERVICE_NAME=RAC)
????? )
?????????? )

?? 注意:无论是使用dbca 工具还是使用srvctl 命令来配置service,都无法配置TAF的TYPE,DELAY,RETRIES 三个属性,必须使用dbms_service包来修改这些属性。

四. Srvctl 命令测试实例
?? 先查看一下RAC 启动情况:
[root@raw1 bin]# ./crs_stat -t
Name?????????? Type?????????? Target??? State???? Host
------------------------
ora.raw.db???? application??? ONLINE??? ONLINE??? raw1
ora.raw.raw.cs application??? ONLINE??? ONLINE??? raw1
ora....aw1.srv application??? ONLINE??? ONLINE??? raw1
ora....aw2.srv application??? ONLINE??? ONLINE??? raw2
ora....w1.inst application??? ONLINE??? ONLINE??? raw1
ora....w2.inst application??? ONLINE??? ONLINE??? raw2
ora....SM1.asm application??? ONLINE??? ONLINE??? raw1
ora....W1.lsnr application??? ONLINE??? ONLINE??? raw1
ora.raw1.gsd?? application??? ONLINE??? ONLINE??? raw1
ora.raw1.ons?? application??? ONLINE??? ONLINE??? raw1
ora.raw1.vip?? application??? ONLINE??? ONLINE??? raw1
ora....SM2.asm application??? ONLINE??? ONLINE??? raw2
ora....W2.lsnr application??? ONLINE??? ONLINE??? raw2
ora.raw2.gsd?? application??? ONLINE??? ONLINE??? raw2
ora.raw2.ons?? application??? ONLINE??? ONLINE??? raw2
ora.raw2.vip?? application??? ONLINE??? ONLINE??? raw2

[root@raw1 bin]# ps -ef|grep smon
root???? 17483? 3479? 0 07:30 pts/1??? 00:00:00 grep smon
oracle?? 26561???? 1? 0 07:06 ???????? 00:00:01 asm_smon_+ASM1
oracle?? 27082???? 1? 0 07:06 ???????? 00:00:05 ora_smon_raw1

一切正常。

?? 1) 查看现有的service
[root@raw1 bin]# su - oracle
[oracle@raw1 ~]$ export ORACLE_SID=raw1
[oracle@raw1 ~]$ sqlplus /nolog
SQL*Plus: Release 10.2.0.1.0 - Production on Wed Mar 3 07:45:36 2010
Copyright (c) 1982, 2005, Oracle.? All rights reserved.
SQL> conn / as sysdba
Connected.
SQL> show parameter service
NAME????????????????????????????? TYPE??????? VALUE
------------------------------ ----------- ------------------------
service_names???????????????????? string????? raw
SQL>
?
2)使用srvctl 命令创建dmm 服务
[oracle@raw2 bin]$ srvctl add service -d raw -s dmm -r "raw1,raw2" -P basic
[oracle@raw2 bin]$ crs_stat -t
Name?????????? Type?????????? Target??? State???? Host
------------------------
ora.raw.db???? application??? ONLINE??? ONLINE??? raw1
ora.raw.dmm.cs application??? OFFLINE?? OFFLINE
ora....aw1.srv application??? OFFLINE?? OFFLINE
ora....aw2.srv application??? OFFLINE?? OFFLINE
ora....w1.inst application??? ONLINE??? ONLINE??? raw1
ora....w2.inst application??? ONLINE??? ONLINE??? raw2
ora....SM1.asm application??? ONLINE??? ONLINE??? raw1
ora....W1.lsnr application??? ONLINE??? ONLINE??? raw1
ora.raw1.gsd?? application??? ONLINE??? ONLINE??? raw1
ora.raw1.ons?? application??? ONLINE??? ONLINE??? raw1
ora.raw1.vip?? application??? ONLINE??? ONLINE??? raw1
ora....SM2.asm application??? ONLINE??? ONLINE??? raw2
ora....W2.lsnr application??? ONLINE??? ONLINE??? raw2
ora.raw2.gsd?? application??? ONLINE??? ONLINE??? raw2
ora.raw2.ons?? application??? ONLINE??? ONLINE??? raw2
ora.raw2.vip?? application??? ONLINE??? ONLINE??? raw2

[oracle@raw2 bin]$ srvctl add service -d raw -s dmm -r raw1 -a raw2 -P basic

注意:srvctl add service中,只有perferred才会创建服务。 即在OCR中注册一个ora.raw.dmm.Raw1.Srv的服务。

3)确认服务创建成功,offline 表示还没有启动
[oracle@raw2 bin]$ crs_stat -t
Name?????????? Type?????????? Target??? State???? Host
------------------------
ora.raw.db???? application??? ONLINE??? ONLINE??? raw1
ora.raw.dmm.cs application??? OFFLINE?? OFFLINE
ora....aw1.srv application??? OFFLINE?? OFFLINE
ora.raw.raw.cs application??? ONLINE??? ONLINE??? raw1
ora....aw1.srv application??? ONLINE??? ONLINE??? raw1
ora....w1.inst application??? ONLINE??? ONLINE??? raw1
ora....w2.inst application??? ONLINE??? ONLINE??? raw2
ora....SM1.asm application??? ONLINE??? ONLINE??? raw1
ora....W1.lsnr application??? ONLINE??? ONLINE??? raw1
ora.raw1.gsd?? application??? ONLINE??? ONLINE??? raw1
ora.raw1.ons?? application??? ONLINE??? ONLINE??? raw1
ora.raw1.vip?? application??? ONLINE??? ONLINE??? raw1
ora....SM2.asm application??? ONLINE??? ONLINE??? raw2
ora....W2.lsnr application??? ONLINE??? ONLINE??? raw2
ora.raw2.gsd?? application??? ONLINE??? ONLINE??? raw2
ora.raw2.ons?? application??? ONLINE??? ONLINE??? raw2
ora.raw2.vip?? application??? ONLINE??? ONLINE??? raw2

4)配置这个服务自启动
[oracle@raw2 bin]$ srvctl enable service -d raw -s dmm
PRKP-1018 : Service dmm already enabled.

5)启动服务
[oracle@raw2 bin]$ srvctl start service -d raw -s dmm

6)确认服务状态。Online 说明已启动
[oracle@raw2 bin]$ crs_stat -t
Name?????????? Type?????????? Target??? State???? Host
------------------------
ora.raw.db???? application??? ONLINE??? ONLINE??? raw1
ora.raw.dmm.cs application??? ONLINE??? ONLINE??? raw1
ora....aw1.srv application??? ONLINE??? ONLINE??? raw1
ora.raw.raw.cs application??? ONLINE??? ONLINE??? raw1
ora....w1.inst application??? ONLINE??? ONLINE??? raw1
ora....w2.inst application??? ONLINE??? ONLINE??? raw2
ora....SM1.asm application??? ONLINE??? ONLINE??? raw1
ora....W1.lsnr application??? ONLINE??? ONLINE??? raw1
ora.raw1.gsd?? application??? ONLINE??? ONLINE??? raw1
ora.raw1.ons?? application??? ONLINE??? ONLINE??? raw1
ora.raw1.vip?? application??? ONLINE??? ONLINE??? raw1
ora....SM2.asm application??? ONLINE??? ONLINE??? raw2
ora....W2.lsnr application??? ONLINE??? ONLINE??? raw2
ora.raw2.gsd?? application??? ONLINE??? ONLINE??? raw2
ora.raw2.ons?? application??? ONLINE??? ONLINE??? raw2
ora.raw2.vip?? application??? ONLINE??? ONLINE??? raw2

新建的服务会自动添加到初始话参数中:
SQL> show parameter service
NAME?????????????????????????? TYPE??????? VALUE
----------------------------- ----------- --------------------
service_names??????????????????? string????? raw, dmm

7)用service TAF 修改配置,需要用dbms_service.Modify_service 包。
SQL> Begin
??????? Dbms_service.modify_service(
??????? Service_name=>'dmm',
??????? Failover_method=>dbms_service.failover_method_basic,
??????? Failover_type=>dbms_service.failover_type_select,
??????? Failover_retries=>180,
??????? Failover_delay=>5
??????? );
??? End;
?/
PL/SQL procedure successfully completed.

8)? 确认参数已经生效
SQL> select name,failover_method,failover_type,goal,clb_goal from dba_services;
NAME????????? FAILOVER_METHOD? FAILOVER_TYPE?? GOAL???? CLB_G
------------- ----------????? -----------?? -------?? -------
SYS$BACKGROUND????????????????????????????????? NONE????? SHORT
SYS$USERS?????????????????????????????????????? NONE????? SHORT
seeddataXDB?????????????????????????????????????????????? LONG
seeddata.regress.rdb?????????????????????????????????????? LONG
rawXDB???????????????????????????????????????????????????? LONG
raw??????????????????????????????????????????????????????? LONG
dmm????????? BASIC??????????? SELECT?????????????????????? LONG
7 rows selected.

9) 也可以用srvctl 命令查看配置情况
[oracle@raw2 bin]$ srvctl config service -d raw -s dmm -a
dmm PREF: raw1 AVAIL: raw2 TAF: basic

10) 删除Service

? 先关闭service:
[oracle@raw2 bin]$ srvctl stop service -d raw -s dmm
[oracle@raw2 bin]$ srvctl disable service -d raw -s dmm

删除服务:
[oracle@raw2 bin]$ srvctl remove service -d? raw -s dmm
dmm PREF: raw1 AVAIL: raw2
Service dmm is disabled.
Remove service dmm from the database raw? (y/[n]) y

如果该命令清楚不掉,我们可以加上-f 参数
[oracle@raw2 bin]# ./srvctl remove service -d raw -s dmm -f

OCR中的信息已经被删除了,但是数据字典中的还有该service的内容,继续清除数据字典中的内容。

先查看数据字典内容:
SQL> select name,failover_method,failover_type,goal,clb_goal from dba_services;
NAME?????????? FAILOVER_METHOD? FAILOVER_TYPE?? GOAL????? CLB_G
-------------------- ---------------? -----------------------? -----
SYS$BACKGROUND??????????????????????????????????? NONE????? SHORT
SYS$USERS???????????????????????????????????????? NONE????? SHORT
seeddataXDB???????????????????????????????????????????????? LONG
seeddata.regress.rdb??????????????????????????????????????? LONG
rawXDB????????????????????????????????????????????????????? LONG
raw???????????????????????????????????????????????????????? LONG
dmm????????? BASIC?????????? SELECT????????????????????????? LONG
7 rows selected.

清除数据字典里的内容:

SQL> begin
? 2? dbms_service.delete_service(service_name=>'dmm');
? 3? end;
? 4? /

PL/SQL procedure successfully completed.

再次查询数据字典,没有了数据。清除完成
SQL> select name,failover_method,failover_type,goal,clb_goal from dba_services;

NAME?????????? FAILOVER_METHOD? FAILOVER_TYPE?? GOAL????? CLB_G
-------------------- ---------------? -----------------------? -----
SYS$BACKGROUND??????????????????????????????????? NONE????? SHORT
SYS$USERS???????????????????????????????????????? NONE????? SHORT
seeddataXDB???????????????????????????????????????????????? LONG
seeddata.regress.rdb??????????????????????????????????????? LONG
rawXDB????????????????????????????????????????????????????? LONG
raw???????????????????????????????????????????????????????? LONG
6 rows selected.

?How To Configure Server Side Transparent Application Failover [ID 460982.1]

http://blog.csdn.net/tianlesoftware/archive/2010/12/20/6086728.aspx

10g & 11g Configuration of TAF(Transparent Application Failover) and Load Balancing [ID 453293.1]

?

读书人网 >其他数据库

热点推荐