11g Oracle DBNEWID的改進

yangtingkun發表於2009-04-07

11g中,DBNEWID工具也做了一些改進使用上更加的方便。

 

 

看一下11gDBNEWID工具的操作:

bash-3.00$ sqlplus "/ as sysdba"

SQL*Plus: Release 11.1.0.6.0 - Production on 星期二 4 7 17:11:53 2009

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


連線到:
Oracle Database 11g Enterprise Edition Release 11.1.0.6.0 - 64bit Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options

SQL> select dbid, name from v$database;

      DBID NAME
---------- ------------------
 835491368 TEST11G

SQL> select * from global_name;

GLOBAL_NAME
--------------------------------------------------------------------------------
TEST11G.NETDB

SQL> shutdown immediate
資料庫已經關閉。
已經解除安裝資料庫。
ORACLE
例程已經關閉。
SQL> startup mount
ORACLE
例程已經啟動。

Total System Global Area 5279498240 bytes
Fixed Size                  2094528 bytes
Variable Size            3192597056 bytes
Database Buffers         2080374784 bytes
Redo Buffers                4431872 bytes
資料庫裝載完畢。
SQL> exit
Oracle Database 11g Enterprise Edition Release 11.1.0.6.0 - 64bit Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options
斷開

下面執行NID命令:

bash-3.00$ nid target=/ dbname=new11g

DBNEWID: Release 11.1.0.6.0 - Production on 星期三 4 8 00:52:41 2009

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

已連線資料庫 TEST11G (DBID=835491368)

已連線伺服器版本 11.1.0

資料庫中的控制檔案數:
    /data/oracle/oradata/test11g/control01.ctl
    /data/oracle/oradata/test11g/control02.ctl
    /data/oracle/oradata/test11g/control03.ctl


以下資料檔案是隻讀的:
    /data/oracle/oradata/test11g/test01.dbf (6)
此實用程式必須能夠寫入這些檔案。

是否將資料庫 ID 和資料庫名 TEST11G 更改為 NEW11G? (Y/[N]) => y

操作繼續進行
將資料庫 ID 835491368 更改為 2655088921
將資料庫名從 TEST11G 更改為 NEW11G
   
控制檔案 /data/oracle/oradata/test11g/control01.ctl - 已修改
   
控制檔案 /data/oracle/oradata/test11g/control02.ctl - 已修改
   
控制檔案 /data/oracle/oradata/test11g/control03.ctl - 已修改
   
資料檔案 /data/oracle/oradata/test11g/system01.dbf - dbid 已更改, 已寫入新名稱
   
資料檔案 /data/oracle/oradata/test11g/sysaux01.dbf - dbid 已更改, 已寫入新名稱
   
資料檔案 /data/oracle/oradata/test11g/undotbs01.dbf - dbid 已更改, 已寫入新名稱
   
資料檔案 /data/oracle/oradata/test11g/users01.dbf - dbid 已更改, 已寫入新名稱
   
資料檔案 /data/oracle/oradata/test11g/yangtk01.dbf - dbid 已更改, 已寫入新名稱
   
資料檔案 /data/oracle/oradata/test11g/test01.dbf - dbid 已更改, 已寫入新名稱
   
資料檔案 /data/oracle/oradata/test11g/temp01.dbf - dbid 已更改, 已寫入新名稱
   
控制檔案 /data/oracle/oradata/test11g/control01.ctl - dbid 已更改, 已寫入新名稱
   
控制檔案 /data/oracle/oradata/test11g/control02.ctl - dbid 已更改, 已寫入新名稱
   
控制檔案 /data/oracle/oradata/test11g/control03.ctl - dbid 已更改, 已寫入新名稱
   
例項關閉

資料庫名已更改為 NEW11G
修改引數檔案並在重新啟動前生成新的口令檔案。
資料庫 NEW11G 的資料庫 ID 已更改為 2655088921
此資料庫的所有以前的備份和歸檔重做日誌均不可用。
資料庫無法識別恢復區中以前的備份和歸檔日誌。
資料庫已關閉, RESETLOGS 選項開啟資料庫。
已成功更改資料庫名和 ID
DBNEWID -
已成功完成。

可以看到,執行完NID命令後會自動關閉資料庫,而9i中是需要手工關閉的,而且11g的提示資訊更加詳細。

11galert檔案中,DBNEWID工具會新增必要的資訊來說明所進行的修改:

*** DBNEWID utility started ***
DBID will be changed from 835491368 to new DBID of 2655088921 for database TEST11G
DBNAME will be changed from TEST11G to new DBNAME of NEW11G
Starting datafile conversion
Setting recovery target incarnation to 1
Datafile conversion complete
Database name changed to NEW11G.
Modify parameter file and generate a new password file before restarting.
Database ID for database NEW11G changed to 2655088921.
All previous backups and archived redo logs for this database are unusable.
Database has been shutdown, open with RESETLOGS option.
Succesfully changed database name and ID.
*** DBNEWID utility finished succesfully ***

而在9i中則看不到任何的資訊。

而且雖然Oracle提示需要重現生成新的密碼檔案,但是在11g不生成新的密碼檔案仍然可以正常登陸,而9i中則會報錯ORA-01991錯誤:

bash-3.00$ sqlplus "/ as sysdba"

SQL*Plus: Release 11.1.0.6.0 - Production on 星期三 4 8 01:31:54 2009

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

已連線到空閒例程。

SQL> startup nomount
ORACLE
例程已經啟動。

Total System Global Area 5279498240 bytes
Fixed Size                  2094528 bytes
Variable Size            3192597056 bytes
Database Buffers         2080374784 bytes
Redo Buffers                4431872 bytes
SQL> alter system set db_name = new11g scope = spfile;

系統已更改。

SQL> shutdown immediate
ORA-01507: ??????


ORACLE
例程已經關閉。
SQL> startup mount
ORACLE
例程已經啟動。

Total System Global Area 5279498240 bytes
Fixed Size                  2094528 bytes
Variable Size            3192597056 bytes
Database Buffers         2080374784 bytes
Redo Buffers                4431872 bytes
資料庫裝載完畢。
SQL> alter database open resetlogs;

資料庫已更改。

最後在11g中,GLOBAL_NAME也會自動修改,而9i還必須手工的修改GLOBAL_NAME

SQL> select dbid, name from v$database;

      DBID NAME
---------- ------------------
2655088921 NEW11G

SQL> select * from global_name;

GLOBAL_NAME
--------------------------------------------------------------------------------
NEW11G.NETDB

當然這些改進是10g11g兩個版本的改進,而不僅僅是11g一個版本的增強。

 

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

相關文章