修改資料庫db_name的方法

xingfei80發表於2010-07-22

修改資料庫db_name的方法

轉自:http://charsi.itpub.net/post/42352/502277

如何修改資料庫的db_name?下面提供一種方法供參考

本例將db_name=testdb改名成db_name=testdb1,修改結束後,instance_name還不變,仍為testdb
首先將資料庫啟動到mount狀態
SQL> shutdown immediate
Database closed.
Database dismounted.
ORACLE instance shut down.
SQL>
SQL>
SQL> startup mount
ORACLE instance started.
Total System Global Area 289406976 bytes
Fixed Size 1219040 bytes
Variable Size 109053472 bytes
Database Buffers 176160768 bytes
Redo Buffers 2973696 bytes
Database mounted.

[@more@]

然後使用命令nid dbname=testdb1修改資料庫的db_name
oracle:/opt/ora10g/product/10.2.0/db_1/dbs#]nid dbname=testdb1

DBNEWID: Release 10.2.0.1.0 - Production on 星期三 6月 23 02:29:39 2010

Copyright (c) 1982, 2005, Oracle. All rights reserved.

Connected to database TESTDB (DBID=2502365763)

Connected to server version 10.2.0

Control Files in database:
/home/oracle/oradata/testdb/control01.ctl
/home/oracle/testdb/controlfile/control02.ctl
/home/oracle/oradata/testdb/control03.ctl

Change database ID and database name TESTDB to TESTDB1? (Y/[N]) => Y

Proceeding with operation
Changing database ID from 2502365763 to 474489427
Changing database name from TESTDB to TESTDB1
.........
Succesfully changed database name and ID.
DBNEWID - Completed succesfully.

然後修改系統的環境變數中的SID,以及修改資料庫的pfile檔案中的配置.

再啟動資料庫:
SQL> select instance_name from v$instance;

INSTANCE_NAME
--------------------------------
testdb

SQL> select dbid,name from v$database;

DBID NAME
---------- ------------------
474489427 TESTDB1

oracle程式情況:
[oracle:/home/oracle#]ps -fu oracle
UID PID PPID C STIME TTY TIME CMD
oracle 19314 1 0 Jun20 ? 00:00:04 /opt/ora10g/product/10.2.0/db_1/bin/tnslsnr LISTENER -inherit
oracle 24890 24889 0 00:49 pts/2 00:00:00 -bash
oracle 24989 24988 0 00:54 pts/1 00:00:00 -bash
oracle 25056 24989 0 01:03 pts/1 00:00:00 sqlplus
oracle 25306 1 0 02:31 ? 00:00:00 ora_pmon_testdb
oracle 25308 1 0 02:31 ? 00:00:00 ora_psp0_testdb
oracle 25310 1 0 02:31 ? 00:00:00 ora_mman_testdb
oracle 25312 1 0 02:31 ? 00:00:00 ora_dbw0_testdb
oracle 25314 1 0 02:31 ? 00:00:00 ora_lgwr_testdb
oracle 25316 1 0 02:31 ? 00:00:00 ora_ckpt_testdb
oracle 25318 1 0 02:31 ? 00:00:01 ora_smon_testdb
oracle 25320 1 0 02:31 ? 00:00:00 ora_reco_testdb
oracle 25322 1 0 02:31 ? 00:00:00 ora_cjq0_testdb
oracle 25324 1 0 02:31 ? 00:00:01 ora_mmon_testdb
oracle 25326 1 0 02:31 ? 00:00:00 ora_mmnl_testdb
oracle 25328 1 0 02:31 ? 00:00:00 ora_d000_testdb
oracle 25330 1 0 02:31 ? 00:00:00 ora_s000_testdb
oracle 25334 1 0 02:32 ? 00:00:00 ora_arc0_testdb
oracle 25336 1 0 02:32 ? 00:00:00 ora_arc1_testdb
oracle 25338 1 0 02:32 ? 00:00:00 ora_arc2_testdb
oracle 25340 1 0 02:32 ? 00:00:00 ora_qmnc_testdb
oracle 25342 1 0 02:32 ? 00:00:00 ora_q000_testdb
oracle 25344 1 0 02:32 ? 00:00:00 ora_q001_testdb
oracle 25356 24890 0 02:36 pts/2 00:00:00 ps -fu oracle

可以看到已經將資料庫的db_name修改完成,而沒有修改資料庫的instance_name.
此試驗在oracle 10.2.0.1中測試透過,對於windows平臺及其他版本尚未測試.

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/14663377/viewspace-1035485/,如需轉載,請註明出處,否則將追究法律責任。

相關文章