天天看点

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目录,拷贝OLDDB的pfile成NEWDB的pfile,同时修改NEWDB的pfile文件.

    cd $ORACLE_HOME/dbs

    cp initOLDDB.ora initNEWDB.ora

     修改initNEWDB.ora文件

     a.. db_name和instance_name参数更改成新数据库的名称(NEWDB)

    b. background_dump_desc,core_dump_desc和user_dump_desc参数更改为新数

据库存放dump信息的目录(/u02/dump)

     c. control_files参数指定存放新数据库的控制文件目录及名称

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

5. 编辑control.txt文件,新生成newdb.sql和newdb1.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$database和v$instance视图,是不是数据库名称已更改

12..profile/.bash_profile文件

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