在RAC集群数据库建立完毕后,还有一些后置任务应该完成(但不是必须),我把自己做的操作介绍一下。下面的一些主题比如关于负载均衡和故障切换的内容、GNS服务、RMAN在集群环境中的使用等等,都可以作为单独的主题来钻研,这里的演示和介绍只是蜻蜓点水,浅尝即止。
1.官方建议的两个安装后置任务
(1) 备份 root.sh 脚本
官方建议在完成安装后要备份root.sh脚本文件。如果在Oracle Home目录中又安装其它的产品,安装时OUI会升级已存在的root.sh文件。如果需要root.sh内的原始信息,就可以在备份中找到。
-bash-3.00$ cd $ORACLE_HOEM
-bash-3.00$ cp root.sh root.sh.bak
(2) 重新编译全部 PL/SQL modules
官方建议在建立或升级数据库后执行utlrp.sql脚本。这个脚本重新编译全部为不可用状态的PL/SQL module,包括包(packages)、存储过程(procedures)、类型(types)。这是一个可选操作,但Oracle官方建议在安装后立即执行该脚本。
以oracle用户执行以下命令
-bash-3.00$ sqlplus "/ AS SYSDBA"
SQL> @$ORACLE_HOME/rdbms/admin/utlrp.sql (SQL> @?/rdbms/admin/utlrp.sql,“?”就代表$ORACLE_HOMEs)
2.在两个RAC节点都备份spfile初始化参数文件
我认为安装完数据库,第一个应做的操作是先备份spfile文件的内容,我们把保存在共享阵列上的spfile二进制文件备份为RAC节点的本地的pfile文本文件(由spfile创建pfile)。当RAC数据库系统因为参数出现问题,导致数据库不能启动,如在本地有个pfile的备份,问题就很容易解决。在11g Release 2中如果在建立完数据库后再配置GNS服务,remote_listener参数就经常出问题,导致数据库不能mount,在本地有pfile就很好解决。
如在节点1上创建pfile,先建个目录保存pfile (oracle用户)
-bash-3.00$ mkdir -p /export/home/OraFile/spfile_backup
-bash-3.00$ sqlplus / as sysdba
SQL> create pfile=’/export/home/OraFile/spfile_backup/initracdb1.ora’ from spfile=’+RACDB_DATA/racdb/spfileracdb.ora’;
提示文件创建,现在可以看一下其中的内容
-bash-3.00$ vi /export/home/OraFile/spfile_backup/initracdb1.ora
3.添加GNS服务
如果在安装Grid组件时,没有选择配置GNS服务,可以在建库后添加该服务,这里介绍一下。
(1) 要先安装DNS和DHCP服务器;在RAC节点上启用DNS客户端功能,把/etc/hosts中的SCAN VIP和节点的VIP去掉 (前面已经介绍)
(2) 如果RAC数据库已经建立好了,在添加GNS服务前,要在两个RAC节点修改一下初始化参数remote_listener,把其设置为racnode-cluster-scan.racnode.com:1521否则启动数据库时可能出错。
在节点1执行以下操作(oracle用户),在操作前最好先备份spfile到RAC节点本地。
-bash-3.00$ sqlplus / as sysdba
SQL> show parameter listen
SQL> alter system set remote_listener=’racnode-cluster-scan.racnode.com:1521’ sid=’racdb1’ scope=spfile;
节点2也做相同修改
-bash-3.00$ sqlplus / as sysdba
SQL> alter system set remote_listener=’racnode-cluster-scan.racnode.com:1521’ sid=’racdb2’ scope=spfile;
(3) 添加GNS服务,必须以root用户操作
-bash-3.00# cd /u01/app/11.2.0/grid/bin/
-bash-3.00# ./srvctl add gns -i 192.168.1.199 -d racnode1.racnode.com
解释一下-d后面的参数含义,该名称为“RAC节点名.GNS Sub Domain”,GNS的域名是racnode.com,所以写racnode1.racnode.com;也可以写为racnode2.racnode.com;在前面的DNS服务器设置中,已经添加racnode1和racnode2两个A记录。
当两个RAC节点中的一个fail时,该名称会自动切换,也可以用命令手工切换:
-bash-3.00# cd /u01/app/11.2.0/grid/bin/
-bash-3.00# ./srvctl relocate gns -n racnode2
修改SCAN信息
-bash-3.00# ./srvctl config scan (查看当前配置)
-bash-3.00# ./srvctl modify scan -n racnode-cluster-scan.racnode.com
-bash-3.00# ./srvctl config scan
再查看SCAN的配置就改变了
此时数据库还不能启动,还要改scan_listener
-bash-3.00# ./srvctl modify scan_listener -u (参数-u的含义是升级SCAN LISTENER以对应SCAN VIP)
验证SCAN的配置,grid用户
-bash-3.00# su - grid
-bash-3.00$ cluvfy comp scan -verbose
显示验证成功。
如果在启动数据库时报ORA-00119和ORA-00132错误,主要原因因该是remote_listener参数没有修改,可以使用本地备份的pfile文件先启动数据库,把参数修改后再由pfile创建spfile到网路共享存储。
4.把数据库修改为归档模式 (archive mode)
(1) 以oracle用户在节点1登陆sqlplus
-bash-3.00$ sqlplus / as sysdba
SQL> alter system set cluster_database=false scope=spfile sid='racdb1';
System altered.
(2) 在所有RAC节点上关闭数据库
SQL> shutdown immediate;
(节点2上也执行shutdown immediate)
(3) 在节点1把数据库mount (启动到mount状态),修改为归档模式
SQL> startup mount;
SQL> alter database archivelog;
SQL> alter system set cluster_database=true scope=spfile sid='racdb1';
SQL> shutdown immediate;
(4) 在两个节点重新启动数据库到open状态,查看归档模式
SQL> startup;
(节点2上也执行startup;)
SQL> archive log list;
能显示以下两行代表正确
Database log mode Archive Mode
Automatic archival Enabled
5.修改数据库的系统表空间的大小,并建立一个用户和表空间
(1) 修改系统表空间
执行以下sql语句,检索出表空间的名称
-bash-3.00$ sqlplus / as sysdba
SQL> col tablespace_name format a12;
SQL> col file_name format a60;
SQL> select tablespace_name, file_name from dba_data_files
2 union
3 select tablespace_name, file_name from dba_temp_files;
TABLESPACE_N FILE_NAME
------------ ------------------------------------------------------------
EXAMPLE +RACDB_DATA/racdb/datafile/example.264.711918155
SYSAUX +RACDB_DATA/racdb/datafile/sysaux.257.711917583
SYSTEM +RACDB_DATA/racdb/datafile/system.256.711917577
TEMP +RACDB_DATA/racdb/tempfile/temp.263.711918123
UNDOTBS1 +RACDB_DATA/racdb/datafile/undotbs1.258.711917585
UNDOTBS2 +RACDB_DATA/racdb/datafile/undotbs2.265.711919153
USERS +RACDB_DATA/racdb/datafile/users.259.711917585
7 rows selected.
把system, sysaux, temp这3个表空间的大小修改为1G,把undotbs1, undotbs2这2个表空间大小修改为500M。
SQL> Alter database datafile '+RACDB_DATA/racdb/datafile/system.256.711917577' resize 1G;
Database altered.
SQL> Alter database datafile '+RACDB_DATA/racdb/datafile/sysaux.257.711917583' resize 1G;
Database altered.
SQL> Alter database datafile '+RACDB_DATA/racdb/datafile/undotbs1.258.711917585' resize 500M;
Database altered.
SQL> Alter database datafile '+RACDB_DATA/racdb/datafile/undotbs2.265.711919153' resize 500M;
Database altered.
SQL> Alter database tempfile '+RACDB_DATA/racdb/tempfile/temp.263.711918123' resize 1G;
Database altered.
(2) 给scott用户解锁
-bash-3.00$ sqlplus / as sysdba
SQL*Plus: Release 11.2.0.1.0 Production on Fri Feb 26 02:22:09 2010
Copyright (c) 1982, 2009, Oracle. All rights reserved.
Connected to:
Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - 64bit Production
With the Partitioning, Real Application Clusters, Automatic Storage Management, OLAP,
Data Mining and Real Application Testing options
SQL> Alter user scott account unlock;
User altered.
SQL> Alter user scott identified by tiger;
User altered.
(3) 建立一个用户和表空间
-bash-3.00$ sqlplus / as sysdba
SQL> Create tablespace ts_front datafile ‘+RACDB_DATA’ size 300M autoextend on next 50M maxsize unlimited;
SQL> Create user front identified by front default tablespace ts_front;
SQL> Grant resource, connect, dba to front;
建立一个测试表
SQL> conn front/front;
SQL> create table t_test1 as select * from dba_objects;
SQL> select count(*) from t_test1;
应显示出记录数量
6.使用SCAN名称连接RAC集群数据库
SCAN是11g第二版中的新功能,全称Single Client Access Name(唯一客户端访问名称),这使客户端程序访问RAC集群系统变得简单。下面先说一下SCAN连库的语法,这个我参考了官网上的文档,再分别看几个例子包括在Windows中用sqlplus远程连接RAC数据库时使用SCAN名称、在SQL Developer中用SCAN名称连接集群、在Spring框架的配置文件中用SCAN连接RAC数据库等。
我们先看一下服务器端上本地命名文件中的配置,其中就使用了SCAN名称,在11g R2之前的版本中要写入全部RAC节点的VIP
-bash-3.00$ cd $ORACLE_HOME/network/admin
-bash-3.00$ vi tnsnames.ora
显示以下内容:
RACDB =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = racnode-cluster-scan.racnode.com)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = racdb.racnode.com)
)
)
可以看到主机名使用了SCAN名称,服务名使用了全局名称(racdb.racnode.com)。
在使用SCAN连接数据库之前,可以先测试一下SCAN能否连通,在Windows客户端执行C:>ping racnode-cluster-scan.racnode.com;如果不能ping通请检查该客户端的IP设置中DNS服务器是否指向了192.168.1.130,还有DNS服务是否正确。
(1) 查看SCAN名称的方法
我们在安装Grid组件是选择了配置GNS功能,并设置了SCAN的名称为racnode-cluster-scan.racnode.com,如果要查看一个RAC集群系统的SCAN名称有两方法,一个是在数据库的spfile中查询:
-bash-3.00# su - oracle
-bash-3.00$ sqlplus / as sysdba
SQL> show parameter remote_listener
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
remote_listener string racnode-cluster-scan.racnode.com:1521
如果在安装集群数据库之前就配置好了GNS服务,SCAN名称会保存在remote_listener参数中。第二个方法是:
-bash-3.00# su - grid
-bash-3.00$ srvctl config scan
SCAN name: racnode-cluster-scan.racnode.com, Network: 1/192.168.1.0/255.255.255.0/e1000g0
SCAN VIP name: scan1, IP: /racnode-cluster-scan.racnode.com/192.168.1.202
SCAN VIP name: scan2, IP: /racnode-cluster-scan.racnode.com/192.168.1.203
SCAN VIP name: scan3, IP: /192.168.1.204/192.168.1.204
或者执行对SCAN的校验
-bash-3.00# su - grid
-bash-3.00$ cluvfy comp scan -verbose
如果配置正确,也会显示出SCAN的名称。
(2) SCAN连接字符串的语法
使用jdbc的thin驱动:jdbc:oracle:thin@SCAN_NAME:端口号/集群数据库的全局名称(或单建立的服务名称)
① ② ③
与普通的单实例系统的连接串:jdbc:oracle:thin@IP-Address:端口号:实例服务名,比较有标注的3点不同。
注意:要写全局名称,本次安装数据库时的全局名称是racdb.racnode.com(格式:SID.域名),写单独建立的服务名称也要加后缀域名(如:MYRAC.racnode.com)
具体的使用SCAN名称的连接串为:jdbc:oracle:thin@racnode-cluster-scan.racnode.com:1521/RACDB.racnode.com
(3) 一些使用SCAN连接数据库的例子
◆在Windows系统中,使用sqlplus远程连接数据库时,使用SCAN名称,命令为
C:> sqlplus 用户名/密码@SCAN_Name:端口号/集群数据库的全局名称,具体使用,如下面截图所示:
可以先在Net Manager中添加一个Net服务名,主机名写SCAN名称,但这不是必须的操作,使用上面的命令连接数据库时可以不配置网络服务名,这与11g R2以前的版本不同。
在Windows命令行中使用sqlplus system/password@racnode-cluster-scan.racnode.com/racdb.racnode.com来连接远程集群数据库。
◆在SQL Developer中,使用SCAN名称连接远端的集群数据库,如下截图所示
◆在spring框架的配置文件中,使用SCAN名称
<bean id="DataSource_oraRAC" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close" >
<property name="driverClassName">
<value>oracle.jdbc.xa.client.OracleXADataSourcevalue>
property>
<property name=
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/26712/viewspace-1031709/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/26712/viewspace-1031709/