通過dbms_backup_restore修改oracle的dbid
某些應用場景需要修改oracle的dbid,oracle自帶的nid工具可以修改dbname,產生新的dbid,但不能直接指定dbid。通過跟蹤nid的執行過程,發現它主要是呼叫了dbms_backup_restore下的儲存過程,而dbms_backup_restore.nidbegin是可以指定新的dbid的。
跟蹤的方法:
--測試前請做好備份
1.關閉資料庫並啟動到mount狀態
shutdown immediate;
startup mount;
2.執行nid target=sys/password
在Change database ID of database CT6601? (Y/[N]) =>這一步時暫停
3.跟蹤nid
sqlplus / as sysdba
select b.spid from v$session a,v$process b where a.paddr=b.addr and a.program like 'dbnewid%';
--ospid是上面的查詢結果
oradebug setospid 31423
oradebug TRACEFILE_NAME
oradebug event 10046 trace name context forever ,level 12;
4.步驟2的nid程式繼續執行,直到完成
5.檢視跟蹤檔案的SQL
以下是手動設定dbid的大概方法:
--測試環境是11.2.0.4
--測試前請做好備份。
1.關閉資料庫並啟動到mount狀態
shutdown immediate;
startup mount;
2.檢視當前的dbname和dbid
select dbid ,name from v$database;
3.修改dbid
--設定新的dbname,dbid
exec dbms_backup_restore.nidbegin('CT6601', 'CT6601', '1963719358','1959733503', 0, 0, 0);
var v_skipped number;
var v_idchged number;
var v_nmchged number;
--執行以下的查詢結果
select ' exec dbms_backup_restore.nidprocessdf('||file#||',0,:v_skipped, :v_idchged, :v_idchged);' from v$datafile;
--執行以下的查詢結果
select 'exec dbms_backup_restore.nidprocessdf('||file#||',1,:v_skipped, :v_idchged, :v_idchged);' from v$tempfile;
exec dbms_backup_restore.nidprocesscf(:v_idchged, :v_nmchged);
exec dbms_backup_restore.nidend;
4.關閉資料庫,並resetlogs開啟資料庫。
shutdown immediate;
startup mount;
alter database open resetlogs;
跟蹤的方法:
--測試前請做好備份
1.關閉資料庫並啟動到mount狀態
shutdown immediate;
startup mount;
2.執行nid target=sys/password
在Change database ID of database CT6601? (Y/[N]) =>這一步時暫停
3.跟蹤nid
sqlplus / as sysdba
select b.spid from v$session a,v$process b where a.paddr=b.addr and a.program like 'dbnewid%';
--ospid是上面的查詢結果
oradebug setospid 31423
oradebug TRACEFILE_NAME
oradebug event 10046 trace name context forever ,level 12;
4.步驟2的nid程式繼續執行,直到完成
5.檢視跟蹤檔案的SQL
以下是手動設定dbid的大概方法:
--測試環境是11.2.0.4
--測試前請做好備份。
1.關閉資料庫並啟動到mount狀態
shutdown immediate;
startup mount;
2.檢視當前的dbname和dbid
select dbid ,name from v$database;
3.修改dbid
--設定新的dbname,dbid
exec dbms_backup_restore.nidbegin('CT6601', 'CT6601', '1963719358','1959733503', 0, 0, 0);
var v_skipped number;
var v_idchged number;
var v_nmchged number;
--執行以下的查詢結果
select ' exec dbms_backup_restore.nidprocessdf('||file#||',0,:v_skipped, :v_idchged, :v_idchged);' from v$datafile;
--執行以下的查詢結果
select 'exec dbms_backup_restore.nidprocessdf('||file#||',1,:v_skipped, :v_idchged, :v_idchged);' from v$tempfile;
exec dbms_backup_restore.nidprocesscf(:v_idchged, :v_nmchged);
exec dbms_backup_restore.nidend;
4.關閉資料庫,並resetlogs開啟資料庫。
shutdown immediate;
startup mount;
alter database open resetlogs;
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/28539951/viewspace-2138760/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Oracle rac使用nid和dbms_backup_restore包修改dbid和dbnameOracleREST
- oracle 之修改DBIDOracle
- oracle 修改dbid和dbnameOracle
- 通過修改SCN來騙過ORACLE啟動驗證Oracle
- dbnewid修改dbid和庫名
- 獲取Oracle DBIDOracle
- Oracle identifiers :DBIDOracleIDE
- 記一次通過DBNEWID工具修改DBID時的NID-00135: There are 1 active threads錯誤thread
- Oracle 設定指定DBIDOracle
- Oracle NID工具修改資料庫DBID和資料庫名稱Oracle資料庫
- [轉載]通過jQuery的attr修改onclickjQuery
- 11g DBNEWID工具修改DBID碰到的問題
- 通過CSS變數修改樣式CSS變數
- oracle 92 修改sga過程Oracle
- 通過修改資料字典,變更表的owner
- 通過oracle觸發器記錄修改某表的使用者和ip地址Oracle觸發器
- Oracle通過login.sql實現永久修改sqlplus引數OracleSQL
- ViewPager(通過反射修改viewpager切換速度)Viewpager反射
- ORACLE角色(通過DBA建立)Oracle
- 通過配置檔案來修改WAS控制檯Session過期時間的方法Session
- 通過修改 LayoutInflater,全域性替換字型!!!
- Windows下通過指令碼快速修改IP地址Windows指令碼
- 通過圖表分析oracle的parallel效能OracleParallel
- 通過oracle的指令碼研究其建庫過程Oracle指令碼
- ABAP 通過SQL修改某個程式的鎖定狀態SQL
- Android通過程式碼修改圖片顏色Android
- PowerDesigner中通過VBS指令碼修改模型資訊指令碼模型
- 4.5 通過SRVCTL 呼叫Oracle RestartOracleREST
- 通過Oracle Gateways 訪問SybaseOracleGateway
- 通過遷移的方式修改ASM磁碟組的冗餘屬性ASM
- 通過修改jdbc配置檔案方式修改Weblogic資料來源密碼JDBCWeb密碼
- 全域性修改預設字型,通過反射也能做到反射
- 通過JavaScript獲取標籤,修改標籤內容JavaScript
- 如何通過emca來修改Database Control HTTP 埠DatabaseHTTP
- 通過替換frm檔案方式修改表結構
- Oracle 通過rowid秒優SQLOracleSQL
- oracle連線SQLserver--通過ODBCOracleSQLServer
- 通過oracle dbms_job建立tableOracle