1、SRVCTL 是 ORACLE RAC 集群配置管理的工具。本文是对 SRVCTL 的所有命令进行详细说明的一篇参考文档。SRVCTL Add添加数据库或实例的配置信息。在增加实例中,与-i 一起指定的名字应该与 INSTANCE_NAME 和 ORACLE_SID 参数匹配。srvctl add database -d database_name -m domain_name -o oracle_home -s spfilesrvctl add instance -d database_name -i instance_name -n node_name表- SRVCTL Add 命令详细选
2、项命令 选项-m 数据库域名 格式如““-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 gm0srvctl add i
3、nstance -d mydb -i mydb0 -n gm0srvctl add instance -d mydb -i mydb0 -n gm0SRVCTL Config显示保存在 SRVM 配置文件中的配置信息srvctl config database显示数据库配置列表srvctl config database -d database_name数据库配置信息显示的格式:nodename instancename oraclehomenodename instancename oraclehome实例:显示数据库配置信息srvctl config database -d mydbSRV
4、CTL Getenvgetenv 操作用来从 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 mydbSRVCTL Modify修改实例的节点配置信息。这些修改会在程序下次重新启动后生效。修改后的信息将永久保存。srvctl modify instance -d database_
5、name -i instance_name -n node_name实例:修改实例到另一个节点srvctl modify instance -d mydb -n my_new_nodeSRVCTL Remove这是用来删除 SRVM 库中配置信息的命令。对象相关的环境设置也同样删除。如果你未使用强制标志(-f),ORACLE 将提示你确认是否删除。使用强制选项(-f),删除操作将不进行提示srvctl remove database -d database_name -fsrvctl remove instance -d database_name -i instance_name -fSRV
6、CTL Remove 命令详细选项-f 强制删除应用时不进行确认提示实例:删除数据库srvctl remove database -d mydb实例:删除数据库实例srvctl remove instance -d mydb -i mydb0srvctl remove instance -d mydb -i mydb0srvctl remove instance -d mydb -i mydb0SRVCTL Setenv设置 SRVM 配置文件中的环境变量值。srvctl setenv database -d database_name -t name=value ,name=value,sr
7、vctl setenv instance -d database_name -i instance_name -t name=value ,name=value,实例:设置数据库环境变量srvctl setenv database -d mydb -t LANG=enSRVCTL Start启动数据库,所有实例或指定的实例,及启动所有相关未启动的监听。注:对于 start 命令和其它一些可以使用连接字符串的操作,如果你不提供连接字符串,那么 ORACLE 会使用“/ as sysdba“在实例上执行相关的操作。另外,要执行类似的操作,你必须是 OSDBA 组的成员。关于更多的 OSDBA 组权
8、限信息,请参考 ORACLEi 的安装指南。srvctl start database -d database_name -o start_options -c connect_stringsrvctl 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 连接数据库实例的连接
9、字符串实例:启动数据库及所有的实例srvctl start database -d mydb实例:启动指定的实例srvctl start instance -d mydb -i mydb,mydbSRVCTL Status显示指定数据库的当前状态srvctl status database -d database_namesrvctl status instance -d database_name -i instance_name ,instance_name-list实例:显示数据和所有实例状态srvctl status database -d mydb实例:显示指定实例的状态srvctl
10、 status instance -d mydb -i mydb,mydbSRVCTL Stop停止数据库所有实例可者指定实例srvctl stop database -d database_name -o stop_options -c connect_stringsrvctl stop instance -d database_name -i instance_name ,instance_name_list -o stop_options-c connect_string表- SRVCTL Stop 命令详细选项命令 选项 -c 使用 SQL*Plus 连接数据库实例的连接字符串-o 在
11、 SQL*Plus 直接传递的 shutdown 命令选项实例:停止数据库所有的实例srvctl stop database -d mydb实例:停止指定实例srvctl stop instance -d mydb -i mydbSRVCTL Unsetenv取消 SRVM 配置文件中环境变量定义值srvctl unsetenv database -d database_name-t name,name,srvctl unsetenv instance -d database_name-i instance_name -t name,name,实例:取消环境变量,回到缺省值srvctl uns
12、etenv database -d mydb -t CLASSPATH使用 SRVCONFIG 导入和导出 RAW 设备配置信息你可使用 SRVCONFIG 导入和导出 RAW 设备配置信息,不管配置文件是在集群文件系统上还是在 RAW 设备上。你可以使用这种方法来备份与恢复 SRVM 配置信息。例如:下面的命令用来导出配置信息的内容到你指定文件名的文本文件中。 srvconfig -exp file_name下面的命令用来从指定文本文件中导入配置信息到到你运行命令的 RAC 环境配置信息库。srvconfig -imp file_name核实 RAC 集群/数据库配置应在集群的所有节点上执行
13、以下 RAC 核实检查!对于本指南,我将只从 linux1 中执行这些检查。本节提供了几个可用于验证 Oracle RAC 10g 配置的 srvctl 命令和 SQL 查询。有五个为 SRVCTL 定义的节点级任务:添加和删除节点级应用程序 设置和取消设置节点级应用程序的环境 管理节点应用程序 管理 ASM 实例 启动和停止一组包含虚拟 IP 地址、监听器、Oracle 通知服务和 Oracle 企业管理器代理的程序(出于维护目的)。 所有实例和服务的状态$ srvctl status database -d orclInstance orcl1 is running on node lin
14、ux1Instance orcl2 is running on node linux2单个实例的状态$ srvctl status instance -d orcl -i orcl2Instance orcl2 is running on node linux2在数据库全局命名服务的状态$ srvctl status service -d orcl -s orcltestService orcltest is running on instance(s) orcl2, orcl1启动服务:$ srvctl start service -d orcl -s orcltest特定节点上节点应用程序
15、的状态$ srvctl status nodeapps -n linux1VIP is running on node:linux1GSD is running on node:linux1Listener is running on node:linux1ONS daemon is running on node:linux1ASM 实例的状态$ srvctl status asm -n linux1ASM instance +ASM1 is running on node linux1.列出配置的所有数据库$ srvctl config databaseorcl显示 RAC 数据库的配置$
16、 srvctl config database -d orcllinux1 orcl1 /u01/app/oracle/product/10.1.0/db_1linux2 orcl2 /u01/app/oracle/product/10.1.0/db_1显示指定集群数据库的所有服务$ srvctl config service -d orclorcltest PREF:orcl2 orcl1 AVAIL:显示节点应用程序的配置 -(VIP、GSD、ONS、监听器)$ srvctl config nodeapps -n linux1 -a -g -s -lVIP exists.:/vip-lin
17、ux1/192.168.1.200/255.255.255.0/eth0:eth1GSD exists.ONS daemon exists.Listener exists.显示 ASM 实例的配置$ srvctl config asm -n linux1+ASM1 /u01/app/oracle/product/10.1.0/db_1集群中所有正在运行的实例SELECTinst_id, instance_number inst_no, instance_name inst_name, parallel, status, database_status db_status, active_sta
18、te state, host_name hostFROM gv$instanceORDER BY inst_id;INST_ID INST_NO INST_NAME PAR STATUS DB_STATUS STATE HOST- - - - - - - -1 1 orcl1 YES OPEN ACTIVE NORMAL linux12 2 orcl2 YES OPEN ACTIVE NORMAL linux2位于磁盘组中的所有数据文件select name from v$datafileunionselect member from v$logfileunionselect name fro
19、m v$controlfileunionselect 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/o
20、rcl/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.
21、1+ORCL_DATA1/orcl/tempfile/temp.262.115 rows selected.属于“ORCL_DATA1”磁盘组的所有 ASM 磁盘SELECT pathFROM v$asm_diskWHERE group_number IN (select group_numberfrom v$asm_diskgroupwhere name = ORCL_DATA1);PATH-ORCL:VOL1ORCL:VOL2ORCL:VOL3-26. 启动和停止集群此时,我们已经完全安装并配置了 Oracle RAC 10g 并拥有了一个功能完善的集群化数据库。至此完成所有工作后,您可能
22、会问“那我又怎样启动和停止服务呢?”如果您遵循了本指南中的说明,则所有服务(包括 CRS、所有 Oracle 实例、企业管理器数据库控制台等)应在 Linux 节点每次重新引导时自动启动。但有时您可能想要关闭某个节点,然后手动重新启动它。或者,您可能发现企业管理器没有而需要启动它。本节提供了启动和停止集群环境的命令(使用 SRVCTL)。确保您是以 oracle UNIX 用户登录的。我们将从 linux1 运行本节中的所有命令:# su - oracle$ hostnamelinux1停止 Oracle RAC 10g 环境第一步是停止 Oracle 实例。当此实例(和相关服务)关闭后,关闭
23、 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使用 SRVCTL 启动/停止所有实例启动/停止所有实例及其启用的服务。我只是觉得有意思就把此步骤作为关闭所有实例的一种方法加进来了!$ srvctl start database -d orcl$ srvctl stop database -d orcl