11g DBNEWID工具修改DBID碰到的問題
在使用11g的DBNEWID工具時,碰到了資料庫無法正常關閉的問題。
11g中成功使用DBNEWID的案例:http://yangtingkun.itpub.net/post/468/481871
操作步驟如下。將資料庫正常關閉,且置於MOUNT狀態:
bash-3.00$ sqlplus "/ as sysdba"
SQL*Plus: Release 11.1.0.6.0 - Production on 星期六 4月 4 01:38:33 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
---------- ------------------
790993044 TEST11G
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
資料庫裝載完畢。
下面利用DBNEWID修改資料庫的ID和DBNAME:
SQL> host
$ nid target=/ dbname=new11g
DBNEWID: Release 11.1.0.6.0 - Production on 星期六 4月 4 01:42:36 2009
Copyright (c) 1982, 2007, Oracle. All rights reserved.
已連線資料庫 TEST11G (DBID=790993044)
已連線伺服器版本 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 從 790993044 更改為 2654798284
將資料庫名從 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 已更改, 已寫入新名稱
NID-00600: 內部錯誤 - [28] [3113] [0] [0]
在驗證時更改資料庫名和 ID 失敗 - 資料庫保持原樣。
DBNEWID - 已完成, 但出現驗證錯誤。
$
在上面那個NID-600錯誤發生之前,nid一直沒有響應,在alert檔案中可以看到DBNEWID工具所寫資訊:
*** DBNEWID utility started ***
DBID will be changed from 790993044 to new DBID of 2654798284 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 2654798284.
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 ***
除此以外,還可以看到,Oracle在關閉資料庫,但是出現了異常,導致資料庫沒有正常的關閉:
All dispatchers and shared servers shutdown
Sat Apr 04 01:47:56 2009
SHUTDOWN: Active processes prevent shutdown operation
Sat Apr 04 01:53:00 2009
SHUTDOWN: Active processes prevent shutdown operation
Sat Apr 04 01:58:04 2009
SHUTDOWN: Active processes prevent shutdown operation
Sat Apr 04 02:03:08 2009
SHUTDOWN: Active processes prevent shutdown operation
Sat Apr 04 02:08:12 2009
SHUTDOWN: Active processes prevent shutdown operation
長時間等待沒有響應後,手工殺掉了一個後臺程式,導致了上面nid出現了NID-600錯誤:
bash-3.00$ ps -ef|grep test11g
oracle 5351 1 0 01:40:38 ? 0:00 ora_smon_test11g
oracle 5347 1 0 01:40:38 ? 0:00 ora_lgwr_test11g
oracle 5327 1 0 01:40:37 ? 0:02 ora_vktm_test11g
oracle 5349 1 0 01:40:38 ? 0:01 ora_ckpt_test11g
oracle 5331 1 0 01:40:38 ? 0:00 ora_diag_test11g
oracle 5345 1 0 01:40:38 ? 0:00 ora_dbw1_test11g
oracle 5339 1 0 01:40:38 ? 0:02 ora_dia0_test11g
oracle 5353 1 0 01:40:38 ? 0:00 ora_reco_test11g
oracle 5335 1 0 01:40:38 ? 0:00 ora_psp0_test11g
oracle 5343 1 0 01:40:38 ? 0:00 ora_dbw0_test11g
oracle 6338 5472 0 02:11:01 pts/2 0:00 grep test11g
oracle 5333 1 0 01:40:38 ? 0:00 ora_dbrm_test11g
oracle 5325 1 0 01:40:37 ? 0:03 ora_pmon_test11g
oracle 5341 1 0 01:40:38 ? 0:00 ora_mman_test11g
oracle 5414 5413 0 01:42:37 ? 0:01 oracletest11g (DESCRIPTION=(LOCAL=YES)(ADDRESS=(PROTOCOL=beq)))
bash-3.00$ kill -9 5341
雖然DBNEWID報錯,但是修改工作已經完成,修改初始化引數後,透過OPEN RESETLOGS可以順利開啟資料庫:
SQL> shutdown immediate
ORA-03135: 連線失去聯絡
SQL> conn / as sysdba
已連線到空閒例程。
SQL> startup
ORACLE 例程已經啟動。
Total System Global Area 5279498240 bytes
Fixed Size 2094528 bytes
Variable Size 3192597056 bytes
Database Buffers 2080374784 bytes
Redo Buffers 4431872 bytes
ORA-01103: ?????????? ''NEW11G'' ?? ''TEST11G''
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;
資料庫已更改。
SQL> select dbid, name from v$database;
DBID NAME
---------- ------------------
2654798284 NEW11G
SQL> select * from global_name;
GLOBAL_NAME
--------------------------------------------------------------------------------
NEW11G.NETDB
可以看到DBID和DB_NAME都已經修改成功了。
經過多次的測試,對比文章開頭給出的成功的案例,發現導致問題的原因很簡單,由於在執行NID命令的時候,沒有退出SQLPLUS,也就是說SYS使用者的連線還存在,導致NID在關閉資料庫的時候出現了等待,而類似的bug描述在以前也碰到過:http://yangtingkun.itpub.net/post/468/469358
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/4227/viewspace-586803/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- dbnewid修改dbid和庫名
- 利用DBNEWID工具來修改DBNAME
- 記一次通過DBNEWID工具修改DBID時的NID-00135: There are 1 active threads錯誤thread
- webpack碰到的問題Web
- Hodoop碰到的問題628OdooOOP
- Oracle工具——DBNEWIDOracle
- oracle 之修改DBIDOracle
- 11g Oracle DBNEWID的改進Oracle
- shark建庫碰到的問題
- vpd碰到的問題解決
- 11g升級到Oracle 12c碰到的問題(11g中不存在問題) - ORA-01792Oracle
- oracle 修改dbid和dbnameOracle
- iOS 越獄後碰到的問題iOS
- create adapative server碰到的問題Server
- 搭建dataguard碰到的幾個小問題
- 刪除ACFS系統碰到的問題
- 初學APEX碰到的問題記錄
- 10G DBNEWID工具的增強
- DBNEWID工具使用二:更改DBNAME
- 使用vue-server-render時碰到的問題VueServer
- apkTool反編譯apk碰到的問題APK編譯
- 在自定義View時碰到的奇怪問題View
- 在學習play framework中碰到的問題Framework
- 安裝dev6i碰到的問題dev
- 碰到一個棘手的問題——關於httpclient。HTTPclient
- 通過dbms_backup_restore修改oracle的dbidRESTOracle
- Oracle NID工具修改資料庫DBID和資料庫名稱Oracle資料庫
- DBNEWIN工具使用一:更改DBID
- 初學者學習Rust容易碰到的問題 - timRust
- Oracle 12c PDB中碰到的DG問題Oracle
- A20 linux系統碰到問題Linux
- 11g升級到Oracle 12c碰到的問題 - ORA-00904 WM_CONCATOracle
- 記錄一次XTTS遷移碰到的問題TTS
- JAVA:Java基礎-敲程式碼碰到的小問題Java
- 一次DG搭建過程中碰到的問題
- 利用RMAN遷移表空間碰到的問題(五)
- 利用RMAN遷移表空間碰到的問題(四)
- 利用RMAN遷移表空間碰到的問題(三)