SRVCTL 删除和添加数据库服务

来源:这里教程网 时间:2026-03-03 17:27:06 作者:

背景:架构rac+单节点asm的dg我搭建的dataguard的unique_name 我更改为了prodstd现在的情况:

[root@racdg ~]# crsctl status resource -t
--------------------------------------------------------------------------------
Name           Target  State        Server                   State details
--------------------------------------------------------------------------------
Local Resources
--------------------------------------------------------------------------------
ora.DATADG.dg
               ONLINE  ONLINE       racdg                    STABLE
ora.FRADG.dg
               ONLINE  ONLINE       racdg                    STABLE
ora.LISTENER.lsnr
               ONLINE  ONLINE       racdg                    STABLE
ora.MGMTDG.dg
               ONLINE  ONLINE       racdg                    STABLE
ora.OCRDG.dg
               ONLINE  ONLINE       racdg                    STABLE
ora.asm
               ONLINE  ONLINE       racdg                    Started,STABLE
ora.ons
               OFFLINE OFFLINE      racdg                    STABLE
--------------------------------------------------------------------------------
Cluster Resources
--------------------------------------------------------------------------------
ora.cssd
      1        ONLINE  ONLINE       racdg                    STABLE
ora.diskmon
      1        OFFLINE OFFLINE                               STABLE
ora.evmd
      1        ONLINE  ONLINE       racdg                    STABLE
ora.prod.db
      1        ONLINE  ONLINE       racdg                    Open,Readonly,HOME=/
                                                             u01/app/oracle/produ
                                                             ct/19c/db_1,STABLE
--------------------------------------------------------------------------------

虽然现在还可以使用srvctl start database -db prod启动,但是其实已经不对了查看现在的配置

[oracle@racdg:/home/oracle]$srvctl config database -db prod
Database unique name: prod
Database name: prod
Oracle home: /u01/app/oracle/product/19c/db_1
Oracle user: oracle
Spfile: +DATADG/PROD/PARAMETERFILE/spfile.269.1084619231
Password file:
Domain:
Start options: open
Stop options: immediate
Database role: PRIMARY
Management policy: AUTOMATIC
Disk Groups: DATADG
Services:
OSDBA group:
OSOPER group:
Database instance: proddg

我真实的spfile,其实在我的ORACLE_HOME目录,不在asm上

SQL> show parameter spfile;
NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
spfile                               string      /u01/app/oracle/product/19c/db
                                                 _1/dbs/spfileproddg.ora

spfile错误,unique name错误,但是却不影响通过srvctl 启动数据库,而且启动的prod  实际启动的确是prodstd,所以我们测试一下,如何添加删除。 1、删除

[oracle@racdg:/home/oracle]$srvctl remove database -db prod
PRKO-3141 : Database prod could not be removed because it was running

关闭数据库再删除

[oracle@racdg:/home/oracle]$srvctl stop database -db prod
[oracle@racdg:/home/oracle]$srvctl remove database -db prod
Remove the database prod? (y/[n]) y

2、添加

[oracle@racdg:/home/oracle]$srvctl add database -h
Adds a database configuration to be managed by Oracle Restart.
Usage: srvctl add database -db <db_unique_name> -oraclehome <oracle_home> [-domain <domain_name>] [-spfile <spfile>] [-pwfile <password_file_path>] [-role {PRIMARY | PHYSICAL_STANDBY | LOGICAL_STANDBY | SNAPSHOT_STANDBY | FAR_SYNC}] [-startoption <start_options>] [-stopoption <stop_options>] [-dbname <db_name>] [-instance <inst_name>] [-policy {AUTOMATIC | MANUAL | NORESTART | USERONLY}] [-diskgroup "<diskgroup_list>"] [-verbose]
    -db <db_unique_name>           Unique name for the database
    -oraclehome <path>             Oracle home path
    -domain <domain_name>          Domain for database. Must be set if database has DB_DOMAIN set.
    -spfile <spfile>               Server parameter file path
    -pwfile <password_file_path>   Password file path
    -role <role>                   Role of the database (PRIMARY, PHYSICAL_STANDBY, LOGICAL_STANDBY, SNAPSHOT_STANDBY, FAR_SYNC)
    -startoption <start_options>   Startup options for the database. Examples of startup options are OPEN, MOUNT, or "READ ONLY".
    -stopoption <stop_options>     Stop options for the database. Examples of shutdown options are NORMAL, TRANSACTIONAL, IMMEDIATE, or ABORT.
    -dbname <db_name>              Database name (DB_NAME), if different from the unique name given by the -db option
    -instance <inst_name>          Instance name
    -policy <dbpolicy>             Management policy for the database (AUTOMATIC, MANUAL, NORESTART or USERONLY)
    -diskgroup "<diskgroup_list>"  Comma separated list of disk group names
    -verbose                       Verbose output
    -help                          Print usage

按照提示添加

[oracle@racdg:/home/oracle]$srvctl add database -db prodstd -oraclehome /u01/app/oracle/product/19c/db_1
[oracle@racdg:/home/oracle]$srvctl config database -db prodstd
Database unique name: prodstd
Database name:
Oracle home: /u01/app/oracle/product/19c/db_1
Oracle user: oracle
Spfile:
Password file:
Domain:
Start options: open
Stop options: immediate
Database role: PRIMARY
Management policy: AUTOMATIC
Disk Groups:
Services:
OSDBA group:
OSOPER group:
Database instance: prodstd
[oracle@racdg:/home/oracle]$srvctl start database -db prodstd
PRCR-1079 : Failed to start resource ora.prodstd.db
CRS-5017: The resource action "ora.prodstd.db start" encountered the following error:
ORA-01078: failure in processing system parameters
LRM-00109: could not open parameter file '/u01/app/oracle/product/19c/db_1/dbs/initprodstd.ora'
. For details refer to "(:CLSN00107:)" in "/u01/app/grid/diag/crs/racdg/crs/trace/ohasd_oraagent_grid.trc".
CRS-2674: Start of 'ora.prodstd.db' on 'racdg' failed
[oracle@racdg:/home/oracle]$

由上面可知道,只添加了unique_name 和 oracle_home 默认回去home目录查找 

initprodstd.ora

的参数文件,但是不存在,所以我们需要添加一下,具体的dbname,让他自动去寻找home目录下的initproddg.ora或者spfileproddg.ora 所以参照以下

[oracle@racdg:/home/oracle]$srvctl modify database -db prodstd -h
Modifies the configuration for the database.
Usage: srvctl modify database -db <db_unique_name> [-dbname <db_name>] [-instance <inst_name>] [-oraclehome <oracle_home>] [-user <oracle_user>] [-domain <domain>] [-spfile <spfile>] [-pwfile <password_file_path>] [-role {PRIMARY | PHYSICAL_STANDBY | LOGICAL_STANDBY | SNAPSHOT_STANDBY}] [-startoption <start_options>] [-stopoption <stop_options>] [-policy {AUTOMATIC | MANUAL | NORESTART | USERONLY}] [-diskgroup "<diskgroup_list>"|-nodiskgroup] [-force]
    -db <db_unique_name>           Unique name for the database
    -dbname <db_name>              Database name (DB_NAME), if different from the unique name given by the -db option
    -instance <inst_name>          Instance name
    -oraclehome <path>             Oracle home path
    -user <oracle_user>            Oracle user
    -domain <domain_name>          Domain for database. Must be set if database has DB_DOMAIN set.
    -spfile <spfile>               Server parameter file path
    -pwfile <password_file_path>   Password file path
    -role <role>                   Role of the database (PRIMARY, PHYSICAL_STANDBY, LOGICAL_STANDBY, SNAPSHOT_STANDBY)
    -startoption <start_options>   Startup options for the database. Examples of startup options are OPEN, MOUNT, or "READ ONLY".
    -stopoption <stop_options>     Stop options for the database. Examples of shutdown options are NORMAL, TRANSACTIONAL, IMMEDIATE, or ABORT.
    -policy <dbpolicy>             Management policy for the database (AUTOMATIC, MANUAL, NORESTART or USERONLY)
    -diskgroup "<diskgroup_list>"  Comma separated list of disk group names
    -nodiskgroup                   To remove database's dependency upon disk groups
    -force                         Force the modify operation to stop database and service resources on some nodes as necessary, or to change management policy of all service to match new database management policy
    -verbose                       Verbose output
    -help                          Print usage
[oracle@racdg:/home/oracle]$srvctl modify database -db prodstd -dbname prod -instance proddg
[oracle@racdg:/home/oracle]$srvctl start database -db prodstd
[oracle@racdg:/home/oracle]$srvctl status database -db prodstd
Database is running.

至此就通过srvctl命令启动了数据库,数据库prodstd也注册到了srvctl中了 确认

[root@racdg ~]# srvctl config database -d prodstd
Database unique name: prodstd
Database name: prod
Oracle home: /u01/app/oracle/product/19c/db_1
Oracle user: oracle
Spfile:
Password file:
Domain:
Start options: open
Stop options: immediate
Database role: PRIMARY
Management policy: AUTOMATIC
Disk Groups: DATADG
Services:
OSDBA group:
OSOPER group:
Database instance: proddg
[root@racdg ~]# crsctl status resource -t
--------------------------------------------------------------------------------
Name           Target  State        Server                   State details
--------------------------------------------------------------------------------
Local Resources
--------------------------------------------------------------------------------
ora.DATADG.dg
               ONLINE  ONLINE       racdg                    STABLE
ora.FRADG.dg
               ONLINE  ONLINE       racdg                    STABLE
ora.LISTENER.lsnr
               ONLINE  ONLINE       racdg                    STABLE
ora.MGMTDG.dg
               ONLINE  ONLINE       racdg                    STABLE
ora.OCRDG.dg
               ONLINE  ONLINE       racdg                    STABLE
ora.asm
               ONLINE  ONLINE       racdg                    Started,STABLE
ora.ons
               OFFLINE OFFLINE      racdg                    STABLE
--------------------------------------------------------------------------------
Cluster Resources
--------------------------------------------------------------------------------
ora.cssd
      1        ONLINE  ONLINE       racdg                    STABLE
ora.diskmon
      1        OFFLINE OFFLINE                               STABLE
ora.evmd
      1        ONLINE  ONLINE       racdg                    STABLE
ora.prodstd.db
      1        ONLINE  ONLINE       racdg                    Open,Readonly,HOME=/
                                                             u01/app/oracle/produ
                                                             ct/19c/db_1,STABLE
--------------------------------------------------------------------------------
[root@racdg ~]#

这样通过srvctl就删除添加数据库服务完成了

相关推荐