我们在使用DG的逻辑备库完成数据库迁移后,发现数据库的名字变了,我们想修改回原来的名字,怎么办呢,
如果只是想修改回DB-NAME,可以使用dbnewid 工具来完成
比如我们想把 ORCL 修改为 SZTECH, 下面是我们的修改步骤:
1. 数据库启动到MOUNT状态
要修改名字,数据库必须启动到MOUNT状态
C:\Users\zq>sqlplus /nolog
SQL*Plus: Release 19.0.0.0.0 - Production on 星期四 12月 15 13:50:43 2022
Version 19.3.0.0.0
Copyright (c) 1982, 2019, Oracle. All rights reserved.
SQL> conn / as sysdba
已连接。
SQL> shutdown immediate
数据库已经关闭。
已经卸载数据库。
ORACLE 例程已经关闭。
SQL> startup mount;
ORACLE 例程已经启动。
Total System Global Area 1258287416 bytes
Fixed Size 9027896 bytes
Variable Size 620756992 bytes
Database Buffers 620756992 bytes
Redo Buffers 7745536 bytes
数据库装载完毕。
SQL> exit
从 Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production
Version 19.3.0.0.0 断开
2.使用NID只修改DB-NAME
C:\Users\zq>nid target=sys/oracle dbname=sztech setname=y
DBNEWID: Release 19.0.0.0.0 - Production on 星期四 12月 15 13:52:37 2022
Copyright (c) 1982, 2019, Oracle and/or its affiliates. All rights reserved.
已连接数据库 ORCL (DBID=1642233991)
已连接服务器版本 19.3.0
数据库中的控制文件数:
D:\ORACLE\ORADATA\ORCL\CONTROL01.CTL
是否将数据库 ORCL 的数据库名更改为 SZTECH? (Y/[N]) => Y
操作继续进行
将数据库名从 ORCL 更改为 SZTECH
控制文件 D:\ORACLE\ORADATA\ORCL\CONTROL01.CTL - 已修改
数据文件 D:\ORACLE\ORADATA\ORCL\SYSTEM01.DB - 已写入新名称
数据文件 D:\ORACLE\ORADATA\ORCL\SYSAUX01.DB - 已写入新名称
数据文件 D:\ORACLE\ORADATA\ORCL\UNDOTBS01.DB - 已写入新名称
数据文件 D:\ORACLE\ORADATA\ORCL\TSP_TEST01.DB - 已写入新名称
数据文件 D:\ORACLE\ORADATA\ORCL\USERS01.DB - 已写入新名称
数据文件 D:\ORACLE\ORADATA\ORCL\TEMP01.DB - 已写入新名称
控制文件 D:\ORACLE\ORADATA\ORCL\CONTROL01.CTL - 已写入新名称
实例关闭
数据库名已更改为 SZTECH。
修改参数文件并在重新启动前生成新的口令文件。
已成功更改数据库名。
DBNEWID - 已成功完成。
3.修改参数db_name=sztech
C:\Users\zq>sqlplus /nolog
SQL*Plus: Release 19.0.0.0.0 - Production on 星期四 12月 15 13:53:31 2022
Version 19.3.0.0.0
Copyright (c) 1982, 2019, Oracle. All rights reserved.
SQL> conn / as sysdba
已连接到空闲例程。
SQL> startup nomount;
ORACLE 例程已经启动。
Total System Global Area 1258287416 bytes
Fixed Size 9027896 bytes
Variable Size 620756992 bytes
Database Buffers 620756992 bytes
Redo Buffers 7745536 bytes
SQL> show parameter db_name
NAME TYPE VALUE
------------------------------------ ---------------------- ------------------------------
db_name string orcl
SQL> show parameter instance_name
NAME TYPE VALUE
------------------------------------ ---------------------- ------------------------------
instance_name string orcl
SQL> show parameter db_uni
NAME TYPE VALUE
------------------------------------ ---------------------- ------------------------------
db_unique_name string orcl
SQL> show parameter service_name
NAME TYPE VALUE
------------------------------------ ---------------------- ------------------------------
service_names string orcl
SQL> alter system set db_name=sztech scope=spfile;
系统已更改。
4.直接打开,不需要使用resetlogs,因为没有修改DBID
SQL> shutdown immediate;
ORA-01507: ??????
ORACLE 例程已经关闭。
SQL> startup mount;
ORACLE 例程已经启动。
Total System Global Area 1258287416 bytes
Fixed Size 9027896 bytes
Variable Size 620756992 bytes
Database Buffers 620756992 bytes
Redo Buffers 7745536 bytes
数据库装载完毕。
SQL> alter database open;
数据库已更改。
SQL> show parameter db_name
NAME TYPE VALUE
------------------------------------ ---------------------- ------------------------------
db_name string SZTECH
SQL> show parameter service_name
NAME TYPE VALUE
------------------------------------ ---------------------- -----------------------------
service_names string SZTECH
SQL> show parameter instance_name
NAME TYPE VALUE
------------------------------------ ---------------------- ------------------------------
instance_name string orcl
SQL> select open_mode from v$database;
OPEN_MODE
----------------------------------------
READ WRITE
至此,数据库名字已经修改完成。
|