VMWARE+linux+oracle 10g RAC 之四

wmlm發表於2008-01-30
(續) 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.

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.

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

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/271063/viewspace-998786/,如需轉載,請註明出處,否則將追究法律責任。

相關文章