Oracle 11g Release 2 RAC叢集系統——安裝後置任務

shilei1發表於2013-09-26

RAC叢集資料庫建立完畢後,還有一些後置任務應該完成(但不是必須),我把自己做的操作介紹一下。下面的一些主題比如關於負載均衡和故障切換的內容、GNS服務、RMAN在叢集環境中的使用等等,都可以作為單獨的主題來鑽研,這裡的演示和介紹只是蜻蜓點水,淺嘗即止。

.官方建議的兩個安裝後置任務

(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.00sqlplus "/ AS SYSDBA"

SQL> @$ORACLE_HOME/rdbms/admin/utlrp.sql (SQL>@?/rdbms/admin/utlrp.sql,“?”就代表$ORACLE_HOMEs)

.在兩個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

.新增GNS服務

如果在安裝Grid元件時,沒有選擇配置GNS服務,可以在建庫後新增該服務,這裡介紹一下。

(1) 要先安裝DNSDHCP伺服器;在RAC節點上啟用DNS客戶端功能,把/etc/hosts中的SCAN VIP和節點的VIP去掉 (前面已經介紹)

(2) 如果RAC資料庫已經建立好了,在新增GNS服務前,要在兩個RAC節點修改一下初始化引數remote_listener,把其設定為racnode-cluster-scan.racnode.com:1521否則啟動資料庫時可能出錯。

在節點1執行以下操作(oracle使用者),在操作前最好先備份spfileRAC節點本地。

-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伺服器設定中,已經新增racnode1racnode2兩個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-00119ORA-00132錯誤,主要原因因該是remote_listener引數沒有修改,可以使用本地備份的pfile檔案先啟動資料庫,把引數修改後再由pfile建立spfile到網路共享儲存。

.把資料庫修改為歸檔模式 (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

.修改資料庫的系統表空間的大小,並建立一個使用者和表空間

(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

union

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, temp3個表空間的大小修改為1G,把undotbs1, undotbs22個表空間大小修改為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;

應顯示出記錄數量

.使用SCAN名稱連線RAC叢集資料庫

SCAN11g第二版中的新功能,全稱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連線字串的語法

使用jdbcthin驅動: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 來連線遠端叢集資料庫。

◆在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/196700/viewspace-773389/,如需轉載,請註明出處,否則將追究法律責任。

相關文章