ITPub博客

首页 > 数据库 > Oracle > 集群修改OCR中记录的db_unique_name以及db_name

集群修改OCR中记录的db_unique_name以及db_name

原创 Oracle 作者:sjw1933 时间:2022-10-09 16:58:43 0 删除 编辑

场景:

SQL> show parameter db_unique_name

NAME                                 TYPE       VALUE
------------------------------------ ----------- ------------------------------
db_unique_name                       string     racdb

SQL> show parameter db_name
NAME                                 TYPE       VALUE
------------------------------------ ----------- ------------------------------
db_name                             string     prod

SQL> alter system set db_unique_name=orcl scope=spfile sid='*';
System altered.

重启节点1节点2实例:
节点1:
SQL> shutdown immediate;
SQL> startup;

节点2:
SQL> shutdown immediate;
SQL> startup;

SQL> show parameter db_unique_name
NAME                                 TYPE       VALUE
------------------------------------ ----------- ------------------------------
db_unique_name                       string     ORCL
db_unique_name修改完毕

[grid@rac1 ~]$ crsctl status res -t
查看资源状态:
ora.racdb.db
    1       OFFLINE OFFLINE                               Instance Shutdown   
    2       OFFLINE OFFLINE                               Instance Shutdown

真实数据库实例状态:
SQL> select instance_name,status from v$instance;
INSTANCE_NAME   STATUS
---------------- ------------
racdb1           OPEN

SQL> select instance_name,status from v$instance;
INSTANCE_NAME   STATUS
---------------- ------------
racdb2           OPEN

集群数据库资源状态与真实数据库实例状态不一致。
是因为OCR中记录的db_unique_name与实际数据库的db_unique_name不一致导致的。
并且ora.racdb.db资源是按db_unqiue_name识别的ora.<db_unique_name>.db

查看数据库资源信息:
[grid@rac1 ~]$ srvctl config database -d racdb   //-d db_unique_name
Database unique name: racdb
Database name: prod
Oracle home: /oracle/app/product/11.2.0/db_1
Oracle user: oracle
Spfile: +DATA/racdb/spfileracdb.ora
Domain: 
Start options: open
Stop options: immediate
Database role: PRIMARY
Management policy: AUTOMATIC
Server pools: racdb
Database instances: racdb1,racdb2
Disk Groups: DATA
Mount point paths: 
Services: session
Type: RAC
Database is administrator managed

[grid@rac1 ~]$ crsctl status res ora.racdb.db -f
....
....
DB_UNIQUE_NAME=racdb
....
....

可以看出OCR中记录的db_unique_name皆为racdb,而数据库实际db_unique_name为orcl

解决方法:

方式一:srvctl 与 crsctl修改资源属性

首先使用srvctl进行修改

srvctl modify database -d <db_unique_name> [-n <db_name>]
[grid@rac1 ~]$ srvctl modify database -d orcl
PRCD-1120 : The resource for database prod could not be found.
PRCR-1001 : Resource ora.prod.db does not exist
提示ora.prod.db资源不存在,说明该资源是根据db_unique_name来识别的,srvctl无法修改。

使用crsctl修改OCR中记录的db_unique_name信息:
[root@rac1 ~]# /oracle/grid/crs_1/bin/crsctl modify res ora.racdb.db -attr 'DB_UNIQUE_NAME=orcl';

[grid@rac1 ~]$ crsctl status res ora.racdb.db -f
....
DB_UNIQUE_NAME=orcl
....

[grid@rac1 ~]$ srvctl config database -d racdb
Database unique name: orcl
Database name: prod
Oracle home: /oracle/app/product/11.2.0/db_1
Oracle user: oracle
Spfile: +DATA/racdb/spfileracdb.ora
Domain: 
Start options: open
Stop options: immediate
Database role: PRIMARY
Management policy: AUTOMATIC
Server pools: racdb
Database instances: racdb1,racdb2
PRCD-1120 : The resource for database orcl could not be found.
PRCR-1001 : Resource ora.orcl.db does not exist

修改成功,但是这种方式仅仅修改了OCR中记录的db_unique_name,修改后集群数据库资源状态与真实数据库实例状态仍不一致。
认为是db_unique_name变化后,资源名称也随之变化的问题

方式二:添加新数据库资源

方式二:添加一个数据库资源

[oracle@rac1 ~]$ srvctl add database -d orcl -o /oracle/app/product/11.2.0/db_1 -n prod -p +DATA/racdb/spfileracdb.ora -r PRIMARY -s open -t immediate -y AUTOMATIC 
选项列表:
  -d <db_unique_name>     Unique name for the database
  -o <oracle_home>         ORACLE_HOME path
  -c <type>               Type of database: RAC One Node, RAC, or Single Instance
  -e <server_list>         Candidate server list for RAC One Node database
  -i <inst_name>           Instance name prefix for administrator-managed RAC One Node database 
  -w <timeout>             Online relocation timeout in minutes
  -x <node_name>           Node name. -x option is specified for single-instance databases
  -m <domain>             Domain for database. Must be set if database has DB_DOMAIN set.
  -p <spfile>             Server parameter file path
  -r <role>               Role of the database (primary, physical_standby, logical_standby, snapshot_standby)
  -s <start_options>       Startup options for the database. Examples of startup options are OPEN, MOUNT, or 'READ ONLY'.
  -t <stop_options>       Stop options for the database. Examples of shutdown options are NORMAL, TRANSACTIONAL, IMMEDIATE, or ABORT.
  -n <db_name>             Database name (DB_NAME), if different from the unique name given by the -d option
  -y <dbpolicy>           Management policy for the database (AUTOMATIC, MANUAL, or NORESTART)
  -g "<serverpool_list>"   Comma separated list of database server pool names
  -a "<diskgroup_list>"   Comma separated list of disk groups
  -j "<acfs_path_list>"   Comma separated list of ACFS paths where database's dependency will be set
  -h                       Print usage

尝试启动新添加数据库资源:
[grid@rac1 ~]$ srvctl start database -d orcl
PRKO-3119 : Database orcl cannot be started since it has no configured instances

[grid@rac1 ~]$ srvctl config database -d orcl
Database unique name: orcl
Database name: prod
Oracle home: /oracle/app/product/11.2.0/db_1
Oracle user: oracle
Spfile: +DATA/racdb/spfileracdb.ora
Domain: 
Start options: open
Stop options: immediate
Database role: PRIMARY
Management policy: AUTOMATIC
Server pools: orcl
Database instances: 
Disk Groups: 
Mount point paths: 
Services: 
Type: RAC
Database is administrator managed

向数据库资源添加实例://添加实例该方式添加
[oracle@rac1 ~]$ srvctl add instance -d orcl -i racdb1 -n rac1
[oracle@rac1 ~]$ srvctl add instance -d orcl -i racdb2 -n rac2

[grid@rac1 ~]$ srvctl config database -d orcl
Database unique name: orcl
Database name: prod
Oracle home: /oracle/app/product/11.2.0/db_1
Oracle user: oracle
Spfile: +DATA/racdb/spfileracdb.ora
Domain: 
Start options: open
Stop options: immediate
Database role: PRIMARY
Management policy: AUTOMATIC
Server pools: orcl
Database instances: racdb1,racdb2
Disk Groups: 
Mount point paths: 
Services: 
Type: RAC
Database is administrator managed

再次启动:
[grid@rac1 ~]$ srvctl start database -d orcl

ora.orcl.db
    1       ONLINE ONLINE       rac1                     Open                
    2       ONLINE ONLINE       rac2                     Open


此时集群数据库资源状态与真实数据库实例状态保持一致。

待实例关闭后,删除旧数据库资源
[root@rac1 ~]#crsctl delete res ora.racdb.db

附加: 修改OCR中的DB_NAME

修改OCR中的DB_NAME

[root@rac1 ~]# /oracle/grid/crs_1/bin/srvctl modify database -d racdb -n prod     // -n代表修改后的名字

[grid@rac1 ~]$ srvctl config database -d racdb 
Database unique name: racdb
Database name: prod
Oracle home: /oracle/app/product/11.2.0/db_1
Oracle user: oracle
Spfile: +DATA/racdb/spfileracdb.ora
Domain: 
Start options: open
Stop options: immediate
Database role: PRIMARY
Management policy: AUTOMATIC
Server pools: racdb
Database instances: racdb1,racdb2
Disk Groups: DATA
Mount point paths: 
Services: session
Type: RAC
Database is administrator managed


来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/23825935/viewspace-2917425/ ,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论
11年数据库行业经验,Oracle ACE、PG ACE、OCM、IBM Certified DBA、MySQL OCP、PolarDB技术专家、KCP、PCTP、PCSD、达梦师资认证、PolarDB开源社区技术顾问、ITPUB认证专家、某高校外聘教师

注册时间:2019-05-05

  • 博文量
    295
  • 访问量
    300732