oracle 數據庫改oracle_sid的操作方法

SID


案例舊數據庫(OLDDB)
        文件存放(data files,redo files,control files,temp files, undo files)目錄是

(/u01/OLDDB)

dump文件目錄是(/u01/dump)
      
新數據庫(NEWDB)
        文件存放(data files,redo files,control files,temp files, undo files)目錄是

(/u02/NEWDB)

dump文件目錄是(/u02/dump)

1. 生成舊數據庫初始化參數文件(init{SID}.ora)和文本格式的控制文件(control.txt)
   create
 pfile from spfile

alter database backup controlfile to trace as '/tmp/control.txt'
    
2. 關閉舊數據庫
3. 將舊數據庫存放文件和dump的目錄移動到新數據庫存放文件和dump的目錄(如果不更改存放的目錄可以不 

執行該步驟)—重命名文件
    mv /u01/OLDDB /u02/NEWDB  --數據庫文件
    mv /u01/dump /u02/dump       --dump
目錄

 

--重新生成pfile文件
4. 進入$ORACLE_HOME/dbs目錄,拷貝OLDDBpfileNEWDBpfile,同時修改NEWDBpfile文件.
    cd $ORACLE_HOME/dbs
    cp initOLDDB.ora initNEWDB.ora
  
   修改initNEWDB.ora文件

     a.. db_name
instance_name參數更改成新數據庫的名稱(NEWDB)
   
b. background_dump_desc,core_dump_descuser_dump_desc參數更改爲新數

據庫存放dump信息的目錄(/u02/dump)
     c. control_files
參數指定存放新數據庫的控制文件目錄及名稱

('/u02/NEWDB/control01.ctl','/u02/NEWDB/control02.ctl')

5. 編輯control.txt文件,新生成newdb.sqlnewdb1.sql文件
   
拷貝control.txt文件中以下行到/tmp/newdb.sql文件中
   ---------------
   CREATE CONTROLFILE REUSE DATABASE "OLDDB" RESETLOGS  NOARCHIVELOG
    --  SET STANDBY TO MAXIMIZE PERFORMANCE
    MAXLOGFILES 5
    MAXLOGMEMBERS 3

  
  MAXDATAFILES 100
    MAXINSTANCES 1
    MAXLOGHISTORY 453
   LOGFILE
    GROUP 1 '/u01/OLDDB/redo01.log'  SIZE 10M,

    
GROUP 2 '/u01/OLDDB/redo02.log'  SIZE 10M,
      ...
    GROUP n '/u01/OLDDB/redo0n.log'  SIZE 10M
   -- STANDBY LOGFILE

   DATAFILE
    '/u01/OLDDB/system01.dbf',

    '/u01/OLDDB/undotbs01.dbf',
    '/u01/OLDDB/indx01.dbf',
    '/u01/OLDDB/tools01.dbf',
    '/u01/OLDDB/users01.dbf',
    '/u01/OLDDB/xdb01.dbf',
      ...
    '/u01/OLDDB/filename.dbf'
   CHARACTER SET ZHS16GBK
   ;

   -------------


   
並修改/tmp/newdb.sql文件
   a. REUSE -> SET
   b. OLDDB -> NEWDB
   c. 
存放目錄 /u01/OLDDB -> /u02/NEWDB(如果不更改存放的目錄可以不執行該步驟)
   
更改後/tmp/newdb.sql文件內容如下

 

重新生成控制文件
      ---------------

   
CREATE CONTROLFILE SET DATABASE "NEWDB" RESETLOGS  NOARCHIVELOG
    --  SET STANDBY TO MAXIMIZE PERFORMANCE

   
MAXLOGFILES 5

MAXLOGMEMBERS 3

MAXDATAFILES 100
    MAXINSTANCES 1
    MAXLOGHISTORY 453
   LOGFILE
    GROUP 1 '
/u02/NEWDB
/redo01.log'  SIZE 10M,
    GROUP 2 '
/u02/NEWDB
/redo02.log'  SIZE 10M,
      ...
    GROUP n '
/u02/NEWDB
/redo0n.log'  SIZE 10M
   -- STANDBY LOGFILE
   DATAFILE
    '
/u02/NEWDB
/system01.dbf',
    '
/u02/NEWDB
/undotbs01.dbf',
    '
/u02/NEWDB
/indx01.dbf',
    '
/u02/NEWDB
/tools01.dbf',
    '
/u02/NEWDB
/users01.dbf',
    '
/u02/NEWDB
/xdb01.dbf',
      ...
    '
/u02/NEWDB
/filename.dbf'
   CHARACTER SET ZHS16GBK
   ;
   -------------

   
拷貝control.txt文件中以下行到/tmp/newdb1.sql文件中

   -------------
   ALTER TABLESPACE TEMP ADD TEMPFILE '/u01/OLDDB/temp01.dbf'
     SIZE 524288000  REUSE AUTOEXTEND ON NEXT 8192  MAXSIZE 32767M;
    ...
   ALTER TABLESPACE TEMPn ADD TEMPFILE '/u01/OLDDB/tempn.dbf'
     SIZE 524288000  REUSE AUTOEXTEND ON NEXT 8192  MAXSIZE 32767M;
   -------------
   
並修改/tmp/newdb.sql文件

   a. 
存放目錄 /u01/OLDDB -> /u02/NEWDB(如果不更改存放的目錄可以不執行該步驟)
   
更改後/tmp/newdb1.sql文件內容如下

   -------------           
(增加臨時表空間的數據文件)
   ALTER TABLESPACE TEMP ADD TEMPFILE '
/u02/NEWDB/temp01.dbf'
     SIZE 524288000  REUSE AUTOEXTEND ON NEXT 8192  MAXSIZE 32767M;
    ...
   ALTER TABLESPACE TEMPn ADD TEMPFILE '
/u02/NEWDB
/tempn.dbf'
     SIZE 524288000  REUSE AUTOEXTEND ON NEXT 8192  MAXSIZE 32767M;
   -------------

6. 
刪除新數據庫pfile文件(initNEWDB.ora)control_files參數所指定的控制文件
.
   rm /u02/NEWDB/*.ctl 
(刪除原來的控制文件)


7. 
啓動新數據庫(NEWDB)nomount狀態,使用initNEWDB.ora參數文件
   startup nomount pfile=$ORACLE_HOME/dbs/initNEWDB.ora

8. 
執行/tmp/newdb.sql文件,重建控制文件
   @/tmp/newdb.sql

9. 
使用resetlogs選項打開新數據庫(NEWDB)

Alter dabase mount
   alter database open resetlogs

10. 
執行/tmp/newdb1.sql文件,重建臨時表空間

   @/tmp/newdb2.sql

11. 
查看v$databasev$instance視圖,是不是數據庫名稱已更改

 

12.profile/.bash_profile文件

13Listener.ora,tnsnames.ora文件修改

發佈了25 篇原創文章 · 獲贊 10 · 訪問量 7萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章