ITPub博客

首页 > 数据库 > Oracle > VMWARE+linux+oracle 10g RAC 之四

VMWARE+linux+oracle 10g RAC 之四

原创 Oracle 作者:wmlm 时间:2008-01-30 17:07:08 0 删除 编辑
(续) RAC的验证RAC的重启EM乱码的解决[@more@]

验证 TNS 联网文件

只要按照上述文档进行操作,那么,自动生成的tnsnames.ora文件中,就包括了TNS 联网部分

确保在集群的所有节点上配置 TNS 联网文件!

listener.ora

tnsnames.ora 文件由 Oracle 配置并可以用于测试透明应用程序故障切换 (TAF)。此文件应已在 RAC 集群的每个节点上进行了配置。

您可以将这些条目中的任何条目包含在需要访问集群化数据库的其他客户端计算机上。

从外部客户端连接集群化数据库

这是一个可选步骤,但我要执行它以便确认正确配置了 TNS 文件。使用其他安装了 Oracle(9i 或 10g)的计算机(例如,连接网络的 Windows 计算机)并从集群的任一节点添加为集群化数据库创建的 TNS 条目(位于 tnsnames.ora 中)。

然后使用在 tnsnames.ora 文件中定义的所有可用服务名称连接集群化数据库:

C:> sqlplus system/manager@orcl2
C:> sqlplus system/manager@orcl1
C:> sqlplus system/manager@orcltest
C:> sqlplus system/manager@orcl

注:我的测试结果是使用orcl1 orcl2 orcl连接都可以,但orcltest会出现连接不上的情况。

---------------------------------------------------------------- ----------------------------------------------------------------

创建/更改表空间

......

第八部分 验证 RAC 集群和数据库配置

应在集群的所有节点上执行以下 RAC 验证检查!本节提供了几个可用于验证 Oracle RAC 10g 配置的 srvctl 命令和 SQL 查询。

有五个为 SRVCTL 定义的节点级任务:

  • 添加和删除节点级应用程序
  • 设置和取消设置节点级应用程序的环境
  • 管理节点应用程序
  • 管理 ASM 实例
  • 启动和停止一组包含虚拟 IP 地址、监听器、Oracle 通知服务和 Oracle 企业管理器代理的程序(出于维护目的)。

所有实例和服务的状态

$ srvctl status database -d orcl
Instance orcl1 is running on node linux1
Instance orcl2 is running on node linux2

单个实例的状态

$ srvctl status instance -d orcl -i orcl2
Instance orcl2 is running on node linux2

在数据库全局命名服务的状态

$ srvctl status service -d orcl -s orcltest
Service orcltest is running on instance(s) orcl2, orcl1

特定节点上节点应用程序的状态

$ srvctl status nodeapps -n linux1
VIP is running on node:linux1
GSD is running on node:linux1
Listener is running on node:linux1
ONS daemon is running on node:linux1

ASM 实例的状态

$ srvctl status asm -n linux1
ASM instance +ASM1 is running on node linux1.

列出配置的所有数据库

$ srvctl config database
orcl

显示 RAC 数据库的配置

$ srvctl config database -d orcl
linux1 orcl1 /u01/app/oracle/product/10.2.0/db_1
linux2 orcl2 /u01/app/oracle/product/10.2.0/db_1

显示指定集群数据库的所有服务

$ srvctl config service -d orcl
orcltest PREF:orcl2 orcl1 AVAIL:

显示节点应用程序的配置 -(VIP、GSD、ONS、监听器)

$ srvctl config nodeapps -n linux1 -a -g -s -l
VIP exists.:/vip-linux1/192.168.1.200/255.255.255.0/eth0:eth1
GSD exists.
ONS daemon exists.
Listener exists.

显示 ASM 实例的配置

$ srvctl config asm -n linux1
+ASM1 /u01/app/oracle/product/10.2.0/db_1

集群中所有正在运行的实例

SELECT
inst_id
, instance_number inst_no
, instance_name inst_name
, parallel
, status
, database_status db_status
, active_state state
, host_name host
FROM gv$instance
ORDER BY inst_id;
 

INST_ID  INST_NO INST_NAME  PAR STATUS  DB_STATUS    STATE     HOST
-------- -------- ---------- --- ------- ------------ --------- -------
1        1 orcl1      YES OPEN    ACTIVE       NORMAL    linux1
2        2 orcl2      YES OPEN    ACTIVE       NORMAL    linux2

位于磁盘组中的所有数据文件

select name from v$datafile
union
select member from v$logfile
union
select name from v$controlfile
union
select name from v$tempfile;
 

NAME
-------------------------------------------
+FLASH_RECOVERY_AREA/orcl/controlfile/current.258.570913191
+FLASH_RECOVERY_AREA/orcl/onlinelog/group_1.257.570913201
+FLASH_RECOVERY_AREA/orcl/onlinelog/group_2.256.570913211
+FLASH_RECOVERY_AREA/orcl/onlinelog/group_3.259.570918285
+FLASH_RECOVERY_AREA/orcl/onlinelog/group_4.260.570918295
+ORCL_DATA1/orcl/controlfile/current.259.570913189
+ORCL_DATA1/orcl/datafile/example.257.570913311
+ORCL_DATA1/orcl/datafile/indx.270.570920045
+ORCL_DATA1/orcl/datafile/sysaux.260.570913287
+ORCL_DATA1/orcl/datafile/system.262.570913215
+ORCL_DATA1/orcl/datafile/undotbs1.261.570913263
+ORCL_DATA1/orcl/datafile/undotbs1.271.570920865
+ORCL_DATA1/orcl/datafile/undotbs2.265.570913331
+ORCL_DATA1/orcl/datafile/undotbs2.272.570921065
+ORCL_DATA1/orcl/datafile/users.264.570913355
+ORCL_DATA1/orcl/datafile/users.269.570919829
+ORCL_DATA1/orcl/onlinelog/group_1.256.570913195
+ORCL_DATA1/orcl/onlinelog/group_2.263.570913205
+ORCL_DATA1/orcl/onlinelog/group_3.266.570918279
+ORCL_DATA1/orcl/onlinelog/group_4.267.570918289
+ORCL_DATA1/orcl/tempfile/temp.258.570913303
 

21 rows selected.

属于“ORCL_DATA1”磁盘组的所有 ASM 磁盘

SELECT path
FROM   v$asm_disk
WHERE  group_number IN (select group_number
from v$asm_diskgroup
where name = 'ORCL_DATA1');
 

PATH
----------------------------------
ORCL:VOL1
ORCL:VOL2


27. 启动/停止集群

此时,我们已经完全安装并配置了 Oracle RAC 10g 并拥有了一个功能完善的集群化数据库。

至此完成所有工作后,您可能会问“那我又怎样启动和停止服务呢?”如果您遵循了本指南中的说明,则所有服务(包括 Oracle 集群件、所有 Oracle 实例、企业管理器数据库控制台等)应在 Linux 节点每次重新引导时自动启动。

但有时您可能想要关闭某个节点,然后手动重新启动它。或者,您可能发现企业管理器没有启动它而需要启动它。本节提供了启动和停止集群环境的命令(使用 SRVCTL)。

确保您是以 oracle UNIX 用户登录的。我们将从 linux1 运行本节中的所有命令:

# su - oracle
 

$ hostname
linux1

停止 Oracle RAC 10g 环境

第一步是停止 Oracle 实例。当此实例(和相关服务)关闭后,关闭 ASM 实例。最后,关闭节点应用程序(虚拟 IP、GSD、TNS 监听器和 ONS)。

$ export ORACLE_SID=orcl1
$ emctl stop dbconsole
$ srvctl stop instance -d orcl -i orcl1
$ srvctl stop asm -n linux1
$ srvctl stop nodeapps -n linux1

启动 Oracle RAC 10g 环境

第一步是启动节点应用程序(虚拟 IP、GSD、TNS 监听器和 ONS)。当成功启动节点应用程序后,启动 ASM 实例。最后,启动 Oracle 实例(和相关服务)以及企业管理器数据库控制台。

$ export ORACLE_SID=orcl1
$ srvctl start nodeapps -n linux1
$ srvctl start asm -n linux1
$ srvctl start instance -d orcl -i orcl1
$ emctl start dbconsole
 

命令及结果解释:
启动节点应用程序

[oracle@linux1 zhs]$ srvctl start nodeapps -n linux1
结果如下:
[oracle@linux2 oracle]$ crs_stat -t
Name           Type           Target    State     Host        
------------------------------------------------------------
ora....X1.lsnr application    ONLINE    ONLINE    linux1      
ora.linux1.gsd application    ONLINE    ONLINE    linux1      
ora.linux1.ons application    ONLINE    ONLINE    linux1      
ora.linux1.vip application    ONLINE    ONLINE    linux1    
 

启动节点1上的实例

[oracle@linux1 zhs]$ srvctl start instance -d orcl -i orcl1
结果如下:
ora....l1.inst application    ONLINE    ONLINE    linux1
ora.orcl.db    application    ONLINE    ONLINE    linux2 
 

使用 SRVCTL 启动/停止所有实例

启动/停止所有实例及其启用的服务。我只是觉得有意思就把此步骤作为关闭所有实例的一种方法加进来了! 

$ srvctl start database -d orcl
 

$ srvctl stop database -d orcl
另外一种启动CRS服务的方法

crs_stop -all

crs_start -all

这一种方法能解决下面三个服务在使用srvctl启动时没反应的问题.

ora....test.cs application    ONLINE    ONLINE    linux2      

ora....cl1.srv application    ONLINE    ONLINE    linux1      

ora....cl2.srv application    ONLINE    ONLINE    linux2  


28. 透明的应用程序故障切换 (TAF)

企业通常需要他们的企业应用程序提供 99.99%(甚至 99.999%)的可用性。想一想,要确保全年停机时间不超过 0.5 小时或者甚至没有停机时间得花费多大代价!为了满足众多这种高可用性要求,企业正投资于可以在一个参与系统出现故障时提供自动故障切换的机制。就 Oracle 数据库的可用性而言,Oracle RAC 10g 通过它的高级故障切换机制提供了一个卓越的解决方案。Oracle RAC 10g 包含了提供持续可用性所需的必要组件,这些组件均在一个集群配置中工作;当集群中的某个参与系统出现故障时,将把用户自动移植到其他可用系统。

透明的应用程序故障切换 (TAF) 选件是 Oracle RAC 10g 一个负责处理故障切换的主要组件。它将把所有断开的数据库连接(和进程)重新连接到集群的其他节点上。故障切换对用户是完全透明的。

这最后一节简短介绍了 TAF 在 Oracle RAC 10g 中的工作方式。请注意,对 Oracle RAC 10g 中的故障切换进行全面介绍可能需要单独的一篇文章,我在此处只想提供一个简短概述。

一个重要的说明是,TAF 自动在 OCI 库中发生。也就是说,您的应用程序(客户端)代码不需要更改便可以利用 TAF。但您需要在 Oracle TNS 文件 tnsnames.ora 中执行某些配置步骤。(请记住,直到编写本文时,由于 Java 瘦客户端从不读取 tnsnames.ora,因此它将无法参与 TAF。)

设置 tnsnames.ora 文件

在演示 TAF 之前,我们需要验证在一个非 RAC 客户端计算机(如果您有一台安装了 Windows 计算机)上的 tnsnames.ora 文件中存在一个有效的条目。确保您安装了 Oracle RDBMS 软件。(实际上,您只需要在客户端上安装 Oracle 软件。)

在本指南的创建集群化数据库过程中,我们创建了一个将用于测试 TAF 的名为 ORCLTEST 的新服务。它为负载均衡和故障切换提供了所有必需的配置参数。可以将此条目的内容复制到客户端计算机(本示例中使用了我的 Windows 便携式计算机)上的 %ORACLE_HOME%networkadmintnsnames.ora 文件中:

...
ORCLTEST =
(DESCRIPTION=
(ADDRESS = (PROTOCOL = TCP)(HOST = vip-linux1)(PORT = 1521))
(ADDRESS = (PROTOCOL = TCP)(HOST = vip-linux2)(PORT = 1521))
(LOAD_BALANCE = yes)
(CONNECT_DATA=
(SERVER = DEDICATED)
(SERVICE_NAME = orcltest.idevelopment.info)
(FAILOVER_MODE =
(TYPE = SELECT)
(METHOD = BASIC)
(RETRIES = 180)
(DELAY = 5)
      )
    )
  )
...

查看会话的故障切换信息的 SQL 查询

以下 SQL 查询可以用来查看一个会话的故障切换类型、故障切换方法和是否发生了故障切换。我们将在这个例子中自始至终使用这个查询。

COLUMN instance_name    FORMAT a13
COLUMN host_name        FORMAT a9
COLUMN failover_method  FORMAT a15
COLUMN failed_over      FORMAT a11
 

SELECT
instance_name
, host_name
, NULL AS failover_type
, NULL AS failover_method
, NULL AS failed_over
FROM v$instance
UNION
SELECT
NULL
, NULL
, failover_type
, failover_method
, failed_over
FROM v$session
WHERE username = 'SYSTEM';

TAF 演示

从 Windows 计算机(或其他非 RAC 客户端计算机)中,以 SYSTEM 用户登录使用 orcltest 服务的集群化数据库:

C:> sqlplus system/manager@orcltest
 

COLUMN instance_name    FORMAT a13
COLUMN host_name        FORMAT a9
COLUMN failover_method  FORMAT a15
COLUMN failed_over      FORMAT a11
 

SELECT
instance_name
, host_name
, NULL AS failover_type
, NULL AS failover_method
, NULL AS failed_over
FROM v$instance
UNION
SELECT
NULL
, NULL
, failover_type
, failover_method
, failed_over
FROM v$session
WHERE username = 'SYSTEM';
 

 

INSTANCE_NAME HOST_NAME FAILOVER_TYPE FAILOVER_METHOD FAILED_OVER
------------- --------- ------------- --------------- -----------
orcl1         linux1
SELECT        BASIC           NO

不要注销上面的 SQL*Plus 会话!

我们已经运行了上面的查询,现在我们应该使用 abort 选项来关闭 linux1 上的 orcl1 实例。要执行这一操作,我们可以使用 srvctl 命令行实用程序,如下所示:

# su - oracle
$ srvctl status database -d orcl
Instance orcl1 is running on node linux1
Instance orcl2 is running on node linux2
 

$ srvctl stop instance -d orcl -i orcl1 -o abort
 

$ srvctl status database -d orcl
Instance orcl1 is not running on node linux1
Instance orcl2 is running on node linux2

现在我们返回到我们的 SQL 会话,然后重新运行缓冲中的 SQL 语句:

COLUMN instance_name    FORMAT a13
COLUMN host_name        FORMAT a9
COLUMN failover_method  FORMAT a15
COLUMN failed_over      FORMAT a11
 

SELECT
instance_name
, host_name
, NULL AS failover_type
, NULL AS failover_method
, NULL AS failed_over
FROM v$instance
UNION
SELECT
NULL
, NULL
, failover_type
, failover_method
, failed_over
FROM v$session
WHERE username = 'SYSTEM';
 

INSTANCE_NAME HOST_NAME FAILOVER_TYPE FAILOVER_METHOD FAILED_OVER
------------- --------- ------------- --------------- -----------
orcl2         linux2
SELECT        BASIC           YES
 

SQL> exit

从上面的演示中,我们可以看到现在已将上述会话故障切换到了 linux2 的实例 orcl2 上。

其它

10g 的em中文乱码的解决过程:

这两个目录下的文件都需 要替换!

[oracle@linux1 admin]$ cd /u01/app/oracle/product/10.2.0/db_1/jdk/jre/lib/

[oracle@linux1 lib]$

[oracle@linux1 lib]$ ls font*zh_CN*

font.properties.zh_CN.Redhat font.properties.zh_CN.Sun

font.properties.zh_CN.Redhat2.1 font.properties.zh_CN_UTF8.Sun

[oracle@linux1 lib]$ cd /u01/app/oracle/product/10.2.0/db_1/jre/1.4.2/lib/

[oracle@linux1 lib]$ ls font*zh_CN*

font.properties.zh_CN.Redhat font.properties.zh_CN.Sun

font.properties.zh_CN.Redhat2.1 font.properties.zh_CN_UTF8.Sun

[oracle@linux1 lib]$ mv font.properties font.properties.bak

[oracle@linux1 lib]$ cp font.properties.zh_CN.Redhat font.properties

[oracle@linux1 lib]$ emctl stop dbconsole

TZ set to PRC

cd $Oracle Enterprise Manager 10g Database Control Release 10.2.0.1.0

Copyright (c) 1996, 2005 Oracle Corporation. All rights reserved.

http://linux1:1158/em/console/aboutApplication

Stopping Oracle Enterprise Manager 10g Database Control ...

... Stopped.

[oracle@linux1 lib]$ cd /u01/app/oracle/product/10.2.0/db_1/oc4j/j2ee/oc4j_applications/applications/em/em/cabo/images/cache/zhs/

[oracle@linux1 zhs]$ ls

b-3d.gif b-68.gif b-70.gif b-b5.gif b-iagree.gif tb-0-0.gif

b-3d.imx b-68.imx b-70.imx b-b5.imx b-iagree.imx tb-0-0.imx

[oracle@linux1 zhs]$ rm -f *.gif

[oracle@linux1 zhs]$ emctl start dbconsole

TZ set to PRC

Oracle Enterprise Manager 10g Database Control Release 10.2.0.1.0

Copyright (c) 1996, 2005 Oracle Corporation. All rights reserved.

http://linux1:1158/em/console/aboutApplication

Starting Oracle Enterprise Manager 10g Database Control ......

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

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

注册时间:2008-04-08

  • 博文量
    398
  • 访问量
    3716816