位置:$ORACLE_HOME/bin/nid (9iR2+ 內置)
SQL> SHOW PARAMETER name;
NAME TYPE VALUE
db_name string ORCL
instance_name string ORCL
service_names string ORCL
db_unique_name string ORCL
SQL> SHUTDOWN IMMEDIATE;
SQL> STARTUP MOUNT;
$ nid TARGET=sys/password DBNAME=NEWDB
DBNEWID: Release 19.0.0.0.0 - Production
Connected to database ORCL (DBID=1234567890)
Change database ID and database name ORCL to NEWDB? (Y/[N]) => Y
Proceeding with operation
Changing database ID from 1234567890 to 9876543210
Changing database name from ORCL to NEWDB
Control file ... modified
Datafile ... dbid changed, written new name
...
Database name changed to NEWDB.
Modify parameter file and generate new password file before restart.
Database NEWDB DBID changed to 9876543210.
All previous backups and archived logs are unusable.
Database must be opened with RESETLOGS option.
DBNEWID - Completed successfully.
-- 創建 PFILE 備份
SQL> CREATE PFILE='/tmp/init_newdb.ora' FROM SPFILE;
SQL> SHUTDOWN IMMEDIATE;
-- 編輯 PFILE 修改參數
*.db_name=NEWDB
*.instance_name=NEWDB
*.service_names=NEWDB
*.db_unique_name=NEWDB
SQL> STARTUP NOMOUNT PFILE='/tmp/init_newdb.ora';
SQL> CREATE SPFILE FROM PFILE='/tmp/init_newdb.ora';
SQL> SHUTDOWN IMMEDIATE;
SQL> STARTUP MOUNT;
SQL> ALTER DATABASE OPEN RESETLOGS;
Windows 下 V$INSTANCE.INSTANCE_NAME 由服務名決定,需重建服務。
C:\> orapwd FILE=%ORACLE_HOME%\database\PWDNEWDB.ora PASSWORD=syspassword ENTRIES=10
C:\> oradim -DELETE -SID ORCL
C:\> oradim -NEW -SID NEWDB -INTPWD syspassword -STARTMODE AUTO -PFILE C:\tmp\init_newdb.ora
C:\> SET ORACLE_SID=NEWDB
C:\> sqlplus / as sysdba
SQL> SELECT instance_name FROM v$instance; -- 應顯示 NEWDB
SID_LIST_LISTENER =
(SID_LIST =
(SID_DESC =
(GLOBAL_DBNAME = NEWDB)
(ORACLE_HOME = D:\app\oracle\product\19.0.0\dbhome_1)
(SID_NAME = NEWDB)
)
)
NEWDB =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.100)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = NEWDB)
)
)
C:\> lsnrctl reload
C:\> tnsping NEWDB
TNS Ping Utility ... OK (10 msec)
NID 同步修改備庫 DB_NAME (但 DBID 不變,DG 可能報錯)SELECT name, dbid FROM v$database; 確認 NEWDB、新 DBIDSELECT instance_name FROM v$instance; 確認 NEWDBSHOW PARAMETER name; 所有 name 參數均為 NEWDBSELECT * FROM v$services; 服務名正確BACKUP VALIDATE DATABASE;ARCHIVE LOG LIST;若修改失敗,使用備份的控制文件、參數文件、密碼文件恢復:
1. SHUTDOWN ABORT
2. 還原控制文件、SPFILE、PWD 文件
3. STARTUP MOUNT
4. ALTER DATABASE OPEN RESETLOGS (如需)
5. 重建 Windows 服務 (oradim -NEW -SID ORCL ...)