oracle 19c rac 使用srvctl 增加服务名
时间: 2025-07-27 19:26:25 浏览: 14
<think>我们正在处理一个Oracle19c RAC环境中的问题:如何使用srvctl命令添加服务名。根据Oracle官方文档和最佳实践,添加服务名的基本命令格式如下:srvctl addservice -db <db_unique_name> -service <service_name> [-pdb<pdb_name>][-preferred <preferred_instances>] [-available <available_instances>][-policy<policy>][-failovertype<type>][-failovermethod<method>][-failoverdelay<delay>][-failoverretry <retry>][-clbgoal<goal>][-rlbgoal<goal>][-tafpolicy<policy>][-edition <edition>][-sql_translation_profile<profile>][-notification<true|false>][-drain_timeout <timeout>][-stopoption <option>] [-session_state<state>]其中,必选参数是数据库的唯一名称(-db)和服务名称(-service)。如果服务是为PDB创建的,则需要指定-pdb参数。步骤:1.确认数据库的唯一名称(db_unique_name)。可以通过以下命令查看当前集群中的数据库:srvctl configdatabase2.确定服务要关联的PDB(如果是CDB环境)。需要知道PDB的名称。3.确定服务的首选实例(-preferred)和可用实例(-available)。这决定了服务在哪些实例上运行。4.根据需要设置其他可选参数,如故障转移属性(failovertype、failovermethod等)。示例:假设数据库唯一名称为'racdb',PDB名称为'salespdb',服务名称为'sales_service',我们希望该服务在实例'racdb1'上首选运行,在'racdb2'上作为备用,可以这样添加:srvctl addservice -db racdb-servicesales_service-pdb salespdb-preferred racdb1 -available racdb2添加完成后,可以使用以下命令启动服务:srvctlstart service-dbracdb -service sales_service注意:在添加服务之前,确保数据库和PDB处于打开状态。引用说明:以上步骤参考了Oracle官方文档中关于srvctl命令的使用[^1]。</think>### 在 Oracle 19c RAC 中使用 `srvctl` 添加服务名
在 Oracle 19c RAC 环境中,使用 `srvctl` 命令添加服务名需遵循以下步骤:
#### 步骤 1:确认数据库唯一名称
```bash
srvctl config database
```
输出示例:
```
Database unique name: racdb
```
记录 `Database unique name`(如 `racdb`)[^1]。
#### 步骤 2:添加服务
**基本命令格式**:
```bash
srvctl add service -db <db_unique_name> \
-service <service_name> \
-pdb <pdb_name> \
-preferred <preferred_instances> \
-available <available_instances>
```
**参数说明**:
- `-db`:数据库唯一名称(步骤 1 获取)
- `-service`:自定义服务名(如 `app_svc`)
- `-pdb`:关联的 PDB 名称(如 `salespdb`)
- `-preferred`:首选运行实例(如 `racdb1`)
- `-available`:故障转移备用实例(如 `racdb2`)
**示例**:
```bash
srvctl add service -db racdb \
-service app_svc \
-pdb salespdb \
-preferred racdb1,racdb2 \
-available racdb3
```
#### 步骤 3:启动服务
```bash
srvctl start service -db racdb -service app_svc
```
#### 步骤 4:验证服务状态
```bash
srvctl status service -db racdb -service app_svc
```
输出示例:
```
Service app_svc is running on instance(s) racdb1, racdb2
```
#### 关键注意事项
1. **PDB 状态**:确保目标 PDB 处于 `OPEN` 状态
```sql
SQL> ALTER PLUGGABLE DATABASE salespdb OPEN;
```
2. **服务配置查看**:
```bash
srvctl config service -db racdb -service app_svc
```
3. **TAF 配置**(可选):添加故障转移策略
```bash
srvctl modify service -db racdb -service app_svc \
-failovertype TRANSACTION \
-failovermethod BASIC
```
4. **删除服务**(如需):
```bash
srvctl remove service -db racdb -service app_svc -force
```
> **重要**:服务名会自动注册到监听器,客户端可通过 `app_svc` 连接 PDB。操作需由 `grid` 用户或拥有 `srvctl` 权限的用户执行[^1][^2]。
阅读全文