天天看點

Oracle RAC中Srvctl指令詳細說明

SRVCTL Add

添加資料庫或執行個體的配置資訊。在增加執行個體中,與-i一起指定的名字應該與INSTANCE_NAME 和 ORACLE_SID參數比對。

srvctl add database -d database_name [-m domain_name] -o oracle_home [-s spfile]

srvctl add instance -d database_name -i instance_name -n node_name

表- SRVCTL Add指令詳細選項

指令  選項

-m   資料庫域名 格式如"us.mydomain.com"

-m 選項指定的資料庫域名必須比對資料庫INIT.ORA或者SPFILE中DB_DOMAIN 和DB_NAME參數。在增加資料庫時,-d指定的資料庫名必須與DB_NAME參數比對

-n   執行個體節點名

-o   $ORACLE_HOME(用來确定lsnrctl和Oracle等指令路徑)

-s   SPFILE 檔案名

執行個體:添加一個新的資料庫

srvctl add database -d mydb -o /ora/ora

執行個體:向資料庫添加執行個體

srvctl add instance -d mydb -i mydb0 -n gm0

SRVCTL Config

顯示儲存在SRVM配置檔案中的配置資訊

srvctl config database

顯示資料庫配置清單

srvctl config database -d database_name

資料庫配置資訊顯示的格式:

nodename instancename oraclehome

  執行個體:顯示資料庫配置資訊

srvctl config database -d mydb

SRVCTL Getenv

getenv操作用來從SRVM配置檔案中擷取與顯示環境變量

srvctl getenv database -d database_name [-t name[,name,……]]

srvctl getenv instance -d database_name -i instance_name [-t name[,name,……]]

執行個體:列出資料庫的所有環境變量

srvctl getenv database -d mydb

SRVCTL Modify

修改執行個體的節點配置資訊。這些修改會在程式下次重新啟動後生效。修改後的資訊将永久儲存。

srvctl modify instance -d database_name -i instance_name -n node_name

執行個體:修改執行個體到另一個節點

srvctl modify instance -d mydb -n my_new_node

SRVCTL Remove

這是用來删除SRVM庫中配置資訊的指令。對象相關的環境設定也同樣删除。如果你未使用強制标志(-f),ORACLE将提示你确認是否删除。

  

使用強制選項(-f),删除操作将不進行提示

srvctl remove database -d database_name [-f]

srvctl remove instance -d database_name -i instance_name [-f]

SRVCTL Remove指令詳細選項

-f 強制删除應用時不進行确認提示

執行個體:删除資料庫

srvctl remove database -d mydb

執行個體:删除資料庫執行個體

srvctl remove instance -d mydb -i mydb0

SRVCTL Setenv

設定SRVM配置檔案中的環境變量值。

srvctl setenv database -d database_name -t name=value [,name=value,……]

srvctl setenv instance -d database_name [-i instance_name] -t name=value [,name=value,……]

執行個體:設定資料庫環境變量

srvctl setenv database -d mydb -t LANG=en

SRVCTL Start

啟動資料庫,所有執行個體或指定的執行個體,及啟動所有相關未啟動的監聽。

注:

對于start指令和其它一些可以使用連接配接字元串的操作,如果你不提供連接配接字元串,那麼ORACLE會使用"/ as sysdba"在執行個體上執行相關的操作。另外,要執行類似的操作,你必須是OSDBA組的成員。關于更多的OSDBA組權限資訊,請參考ORACLEi的 安裝指南。

srvctl start database -d database_name [-o start_options] [-c connect_string]

srvctl start instance -d database_name -i instance_name [,instance_name-list] [-o start_options] [-c connect_string]

表- SRVCTL Start指令詳細選項

-o   在SQL*Plus直接傳遞的startup指令選項,可以包括PFILE

-c   使用SQL*Plus連接配接資料庫執行個體的連接配接字元串

執行個體:啟動資料庫及所有的執行個體

srvctl start database -d mydb

執行個體:啟動指定的執行個體

srvctl start instance -d mydb -i mydb,mydb

SRVCTL Status

顯示指定資料庫的目前狀态

srvctl status database -d database_name

srvctl status instance -d database_name -i instance_name [,instance_name-list]

執行個體:顯示資料和所有執行個體狀态

srvctl status database -d mydb

執行個體:顯示指定執行個體的狀态

srvctl status instance -d mydb -i mydb,mydb

SRVCTL Stop

停止資料庫所有執行個體可者指定執行個體

srvctl stop database -d database_name [-o stop_options] [-c connect_string]

srvctl stop instance -d database_name -i instance_name [,instance_name_list] [-o stop_options][-c connect_string]

表- SRVCTL Stop指令詳細選項

-o   在SQL*Plus直接傳遞的shutdown指令選項

執行個體:停止資料庫所有的執行個體

srvctl stop database -d mydb

執行個體:停止指定執行個體

srvctl stop instance -d mydb -i mydb

SRVCTL Unsetenv

取消SRVM配置檔案中環境變量定義值

srvctl unsetenv database -d database_name-t name[,name,……]

srvctl unsetenv instance -d database_name[-i instance_name] -t name[,name,……]

執行個體:取消環境變量,回到預設值

srvctl unsetenv database -d mydb -t CLASSPATH

使用SRVCONFIG導入和導出RAW裝置配置資訊

你可使用SRVCONFIG導入和導出RAW裝置配置資訊,不管配置檔案是在叢集檔案系統上還是在RAW裝置上。你可以使用這種方法來備份與恢複SRVM配置資訊。

例如:

下面的指令用來導出配置資訊的内容到你指定檔案名的文本檔案中。

srvconfig -exp file_name

下面的指令用來從指定文本檔案中導入配置資訊到到你運作指令的RAC環境配置資訊庫。

srvconfig -imp file_name

核實 RAC 叢集/資料庫配置

應在叢集的所有節點上執行以下 RAC 核實檢查!對于本指南,我将隻從 linux1 中執行這些檢查。

本節提供了幾個可用于驗證 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

在資料庫全局命名服務的狀态

$ 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.1.0/db_1

linux2 orcl2 /u01/app/oracle/product/10.1.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.1.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

select name from v$controlfile

select name from v$tempfile;

NAME

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

+ORCL_DATA1/orcl/controlfile/current.256.1

+ORCL_DATA1/orcl/datafile/indx.269.1

+ORCL_DATA1/orcl/datafile/sysaux.261.1

+ORCL_DATA1/orcl/datafile/system.259.1

+ORCL_DATA1/orcl/datafile/undotbs1.260.1

+ORCL_DATA1/orcl/datafile/undotbs1.270.1

+ORCL_DATA1/orcl/datafile/undotbs2.263.1

+ORCL_DATA1/orcl/datafile/undotbs2.271.1

+ORCL_DATA1/orcl/datafile/users.264.1

+ORCL_DATA1/orcl/datafile/users.268.1

+ORCL_DATA1/orcl/onlinelog/group_1.257.1

+ORCL_DATA1/orcl/onlinelog/group_2.258.1

+ORCL_DATA1/orcl/onlinelog/group_3.265.1

+ORCL_DATA1/orcl/onlinelog/group_4.266.1

+ORCL_DATA1/orcl/tempfile/temp.262.1

15 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

ORCL:VOL3

此時,我們已經完全安裝并配置了 Oracle RAC 10g 并擁有了一個功能完善的叢集化資料庫。

至此完成所有工作後,您可能會問“那我又怎樣啟動和停止服務呢?”如果您遵循了本指南中的說明,則所有服務(包括 CRS、所有 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 執行個體(和相關服務)以及企業管理器資料庫控制台。

$ srvctl start nodeapps -n linux1

$ srvctl start asm -n linux1

$ srvctl start instance -d orcl -i orcl1

$ emctl start dbconsole

使用 SRVCTL 啟動/停止所有執行個體

啟動/停止所有執行個體及其啟用的服務。我隻是覺得有意思就把此步驟作為關閉所有執行個體的一種方法加進來了!

$ srvctl start database -d orcl

$ srvctl stop database -d orcl

10G RAC: srvctl

1. Grammar:

srvctl <command> <object> [<options]]

available <command>: enable/disable/start/stop/relocate/status/

add/remove/modify/getenv/setenv/unsetenv/config

avaliable <object>: database/instance/service/nodeapps/vip_range

show help: srvctl <command> <object> -h

2. Examples:

2.1 srvctl config

Available options: database|service|nodeapps|asm

Usage for backward compatibility

srvctl config: Display database name

srvctl config -V : Display the version of srvctl

# display the database info on the specfied node

srvctl config -p orcl -n rac1 :

Full usage:

# list all registered instance of the database

srvctl config database -d orcl

example output:

rac1 orcl1 /orabase/product/10.1.0/db_1

rac2 orcl2 /orabase/product/10.1.0/db_1

# show additional attributes

srvctl config database -d orcl -a

DB_NAME: orcl

ORACLE_HOME: /orabase/product/10.1.0/db_1

SPFILE: /oradata/orcl/spfileorcl.ora

DOMAIN: null

DB_ROLE: null

START_OPTIONS: null

# show tns entries

srvctl config database -d orcl -t

Example client-side TNS entry for service orcltest:

orcltest =

(description=

(address=(protocol=tcp)(host=db_vip)(port=dedicated_port))

(connect_data=

(service_name=orcltest)

(failover_mode=

(type=select)

(method=basic)

)

# Display help

srvctl config service -h

# Display service's information

srvctl config service -d orcl -s <service_name>

# display help

srvctl config nodeapps -h

# display node's information

srvctl config nodeapps -n rac1

# display VIP configuration

srvctl config nodeapps -n rac1 -a

# display GSD configuration

srvctl config nodeapps -n rac1 -g

# display OSD configuration

srvctl config nodeapps -n rac1 -s

# display Listener configuration

srvctl config nodeapps -n rac1 -l

2.2 srvctl status

Available options: database|instance|service|nodeapps|asm

# Display help for database level

srvctl status database -h

# Display instance's running status on each node

srvctl status database -d orcl

Instance orcl1 is(not) running on node rac1

Instance orcl2 is(not) running on node rac2

# include disabled applications

srvctl status database -d orcl -f

# verbos output

srvctl status database -d orcl -v

# Additional information for EM Console

srvctl status database -d orcl -S EM_AGENT_DEBUG

srvctl status database -d orcl -i orcl1 -S EM_AGENT_DEBUG

# Display help for instance level

srvctl status instance -h

# display appointed instance's running status

srvctl status instance -d orcl -i orcl1

# Display help for node level

srvctl status nodeapps -h

# Display all app's status on the node xxx

srvctl status nodeapps -n <node_name>

Not finished, Continue...

2.3 srvctl start

I think maybe it's one of the most frequently used commands

as well as 'srvctl stop'.

# Start database

srvctl start database -d orcl -o nomount

srvctl start database -d orcl -o mount

srvctl start database -d orcl -o open

# Grammar for start instance

srvctl start instance -d [db_name] -i [instance_name]

-o [start_option] -c [connect_str] -q

# Start all instances on the all nodes

srvctl start instance -d orcl -i orcl1,orcl2,...

# Start ASM instance

srvctl start ASM -n [node_name] -i asm1 -o open

# Start all apps in one node

srvctl start nodeapps -n [node_name]

2.4 srvctl stop

I think maybe it's also one of the most frequently used

commands as well as 'srvctl start'.

# Stop database

srvctl stop database -d orcl -o normal

srvctl stop database -d orcl -o immediate

srvctl stop database -d orcl -o abort

# Grammar for stop instance

srvctl stop instance -d [db_name] -i [instance_name]

# Stop all instances on the all nodes

srvctl stop instance -d orcl -i orcl1,orcl2,...

# Stop ASM instance

srvctl stop ASM -n [node_name] -i asm1 -o [option]

# Stop all apps in one node

srvctl stop nodeapps -n [node_name]

2.5 srvctl add

Description:

Add a configuration to your cluster database configuration.

"srvctl add service" adds services to a database and

assigns them to instances. You can use "srvctl add service"

to configure the Transparent Application Failover (TAF)

policy for a service.

2.6 srvctl remove

Description: Removes the named object from the cluster

environment.

SRVCTL是ORACLEi RAC叢集配置管理的工具。本文是對SRVCTL的所有指令進行詳細說明的一篇參考文檔。