踢球
需要将db_name由原来的'orcl19ca'修改为'orcl19c'
更改单实例的db_name需要哪些步骤。
1.修改spfile或者pfile
2.启动到nomount阶段,重建控制文件
3.以resetlogs方式开库
那么更改rac数据库的db_name又需要哪些步骤呢,我们一起来讨论一下
1.db_name是静态参数,更改spfile重启后生效更改。而直接在spfile中更改spfile又会报错,如下:
SQL> select NAME,value,ISSES_MODIFIABLE,ISSYS_MODIFIABLE from v$parameter where name='db_name';
NAME VALUE ISSES ISSYS_MOD
-------------------- -------------------- ----- ---------
db_name orcl19c FALSE FALSE
SQL> alter system set db_name='orcl19c1' scope=spfile;
alter system set db_name='orcl19c1' scope=spfile
*
ERROR at line 1:
ORA-32017: failure in updating SPFILE
ORA-32016: parameter "db_name" cannot be updated in SPFILE
那我们只有通过创建pfile的方式进行更改,之后替代spfile。
但这里有个问题,如果数据库使用的是OMF管理的方式,spfile命名是数据库自行完成的。在创建了新的spfile后,spfile的命名已经变更。由于集群中有spfile路径和命名的设置,此设置也需要进行更改,不然会报启动找不到spfile,数据库启动失败。
[root@orcl19cn1 ~]# /u01/app/19.3.0/grid/bin/srvctl config database -d orcl19cadg
Database unique name: orcl19cadg
Database name: orcl19ca
Oracle home: /u01/app/oracle/product/19.3.0/db_1
Oracle user: oracle
Spfile: +DATA/ORCL19CADG/PARAMETERFILE/spfile.280.1114099551
Password file: +DATA/ORCL19CADG/PASSWORD/pwdorcl19cadg.256.1114079203
Domain:
Start options: open
Stop options: immediate
Database role: PRIMARY
Management policy: AUTOMATIC
Server pools:
Disk Groups: DATA
Mount point paths:
Services:
Type: RAC
Start concurrency:
Stop concurrency:
OSDBA group: dba
OSOPER group: oper
Database instances: orcl19c1,orcl19c2
Configured nodes: orcl19cn1,orcl19cn2
CSS critical: no
CPU count: 0
Memory target: 0
Maximum memory: 0
Default network number for database services:
Database is administrator managed
知识点
1.以OMF方式管理的数据库在更改spfile后,spfile命名更新
2.更改spfile后需要更改集群中spifle路径设置
操作过程
当前数据库名orcl19c
SQL> sho parameter name
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
cdb_cluster_name string
cell_offloadgroup_name string
db_file_name_convert string
db_name string orcl19ca
db_unique_name string orcl19cadg
global_names boolean FALSE
instance_name string orcl19c1
lock_name_space string
log_file_name_convert string
pdb_file_name_convert string
processor_group_name string
原来db_name='orcl19ca'
目标db_name='orcl19c'
更改spfile中db_name
create pfile='/tmp/initorcl19c1.ora' from spfile;
SQL> shut immediate
ORA-01507: database not mounted
ORACLE instance shut down.
SQL> startup nomount pfile='/tmp/initorcl19c1.ora';
ORACLE instance started.
Total System Global Area 1828714320 bytes
Fixed Size 9135952 bytes
Variable Size 603979776 bytes
Database Buffers 1207959552 bytes
Redo Buffers 7639040 bytes
通过更改pfile产生新的spfile
create spfile from pfile='/tmp/initorcl19c1.ora';
确认新产生的spfile
ASMCMD> ls
spfile.272.1114084367.bak
spfile.280.1114099551.bak
spfile.280.1114103463 <-----------产生了一个新的spfile
SQL> shut immediate
ORA-01507: database not mounted
ORACLE instance shut down.
更改集群中的spfile设置
注意:通过root进行更改
/u01/app/19.3.0/grid/bin/srvctl modify database -d orcl19cadg -spfile '+DATA/ORCL19CADG/PARAMETERFILE/spfile.280.1114103463'
[root@orcl19cn1 ~]# /u01/app/19.3.0/grid/bin/srvctl config database
orcl19cadg
[root@orcl19cn1 ~]# /u01/app/19.3.0/grid/bin/srvctl config database -d orcl19cadg
Database unique name: orcl19cadg
Database name: orcl19ca
Oracle home: /u01/app/oracle/product/19.3.0/db_1
Oracle user: oracle
Spfile: +DATA/ORCL19CADG/PARAMETERFILE/spfile.280.1114103463 <----------------------------------改过来了,尝试启动数据库
Password file: +DATA/ORCL19CADG/PASSWORD/pwdorcl19cadg.256.1114079203
Domain:
Start options: open
Stop options: immediate
Database role: PRIMARY
Management policy: AUTOMATIC
Server pools:
Disk Groups: DATA
Mount point paths:
Services:
Type: RAC
Start concurrency:
Stop concurrency:
OSDBA group: dba
OSOPER group: oper
Database instances: orcl19c1,orcl19c2
Configured nodes: orcl19cn1,orcl19cn2
CSS critical: no
CPU count: 0
Memory target: 0
Maximum memory: 0
Default network number for database services:
Database is administrator managed
确认是否通过spfile启动
[oracle@orcl19cn1 ~]$ cd $ORACLE_HOME
[oracle@orcl19cn1 db_1]$ cd dbs
[oracle@orcl19cn1 dbs]$ ls
c-3935592931-20220830-00 core_90815 core_94071 hc_orcl19c1.dat init.ora snapcf_orcl19c1.f
c-3935592931-20220830-01 core_92527 core_96370 id_orcl19c1.dat initorcl19c1.ora.bak <-------------并非通过实例的pfile指定spfile启动
确认是通过新生成的spfile启动数据库
SQL> sho parameter spfile;
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
spfile string +DATA/ORCL19CADG/PARAMETERFILE/spfile.280.1114103463 <-----------------和上面的新生成的spfile相同
确认DB_NAME已经更改
SQL> sho parameter name
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
cdb_cluster_name string
cell_offloadgroup_name string
db_file_name_convert string
db_name string orcl19c
db_unique_name string orcl19cadg
global_names boolean FALSE
instance_name string orcl19c1
lock_name_space string
log_file_name_convert string
pdb_file_name_convert string
processor_group_name string
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
service_names string orcl19cadg
注意点:用root用户改
[root@orcl19cn1 ~]# /u01/app/19.3.0/grid/bin/srvctl modify database -d orcl19cadg -spfile '+DATA/ORCL19CADG/PARAMETERFILE/spfile.280.1114099935'
alter system set spfile='+DATA/ORCL19CADG/PARAMETERFILE/spfile.280.1114099935';