NID修改資料庫名稱時候碰到NID-00137

tolywang發表於2013-12-27

Oracle 11.2.0.3.5 ,  EBS R12.1.3 

今天在做EBS系統克隆時候,使用RMAN備份恢復資料庫後,需要更改資料庫名稱,以免混淆,在做了一系列動作(recover,  redo rename,  add tempfile ) 後開始使用NID (DBNEWID utility) 更改資料庫名稱時,報錯 :

Cannot read the header of the following datafiles: 
  /data/rlpdpre/temp1RLPD.d.db (1), error: 4
NID-00137: All datafiles that are not dropped should be readable 

看報錯資訊應該是恢復的控制檔案中含有 temp1RLPD.dbf 這個檔案, 但是tempfile 其實沒有被restore 到新的目標資料庫中,
需要在目標庫控制檔案中刪除這個檔案的資訊。 如果不確定有多少tempfile 需要drop , 可以在源庫中執行如下SQL, 得出的
結果在目標庫mount狀態下執行即可。 
   select 'alter database tempfile '''||name||'''  drop including datafiles ; ’ from v$tempfile ;

之後使用NID修改資料庫名:
資料庫啟動到mount狀態,然後在作業系統層執行命令:
          nid target=/  dbname=PROD 
NID回退命令:
          nid target=/  revert=yes

修改完畢後按照提示執行:
注意環境變數修改。
A. 修改引數檔案,將資料庫名稱相關的引數做修改(一般修改db_name, instance_name即可) 。
B. 在啟動前生成一個新的password檔案 :orapwd file=orapwPROD password=syspasswd entries=10 
C. 注意環境變數,開啟DB為mount , 使用 resetlogs 開啟資料庫: alter database open resetlogs ;

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

相關文章