修改oracle數據庫實例名

1.         準備

原數據庫的實例名爲linuxdb,控制文件、數據文件、聯機日誌文件存放在/home/oracle/ora9/oradata/linuxdb目錄,將所有的文件拷貝到另外一個目錄/home/oracle/ora9/oradata/dbtest
再將linuxdb 的初始化文件也複製一份出來,執行如下的sql
Create pfile='/home/oracle/ora9/oracle/dbs/pfiledbtest.ora' from spfile='/home/oracle/ora9/oracle/dbs/spfilelinuxdb.ora';
我們將修改實例名爲dbtest
下面我們開始一步一步地進行處理。

 

2.         加載初始化文件

打開pfiledbtest.ora文件,修改對應的dump屬性的路徑名,實例名字,控制文件路徑等。

然後執行如下命令:

[oracle@localhost oracle]$ export ORACLE_SID=dbtest

[oracle@localhost oracle]$ sqlplus "/ as sysdba"

 

SQL*Plus: Release 9.2.0.4.0 - Production on Mon Aug 17 16:57:36 2009

 

Copyright (c) 1982, 2002, Oracle Corporation.  All rights reserved.

 

Connected to an idle instance.

 

SQL> startup pfile='/home/oracle/ora9/oracle/dbs/pfiledbtest.ora' nomount

ORACLE instance started.

 

Total System Global Area  236000356 bytes

Fixed Size                   451684 bytes

Variable Size             201326592 bytes

Database Buffers           33554432 bytes

Redo Buffers                 667648 bytes

SQL>

這樣加載初始化文件就成功了。

下面接着進行,加載控制文件。

3.         加載控制文件

先執行如下命令。

SQL> alter database mount;

alter database mount

*

ERROR at line 1:

ORA-00205: error in identifying controlfile, check alert log for more info

好像是控制文件的路徑不對,修改初始文件再次加載。

SQL> alter database mount;

alter database mount

*

ERROR at line 1:

ORA-01103: database name 'LINUXDB' in controlfile is not 'DBTEST'

根據錯誤信息提示,是實例名字不一致,但是控制文件是二進制的,用vi打開之後沒法編輯,只能通過用重建控制文件可以解決。

/home/oracle/ora9/oradata/dbtest目錄下刪除老的三個控制文件。然後開始重建控制文件。

SQL> CREATE CONTROLFILE SET DATABASE "DBTEST" RESETLOGS FORCE LOGGING NOARCHIVELOG

  2   MAXLOGFILES 16

  3   MAXLOGMEMBERS 3

  4   MAXDATAFILES 100

  5   MAXINSTANCES 8

  6   MAXLOGHISTORY 292

  7   LOGFILE

  8   GROUP 1 '/home/oracle/ora9/oradata/dbtest/redo01.log' SIZE 50M,

  9   GROUP 2 '/home/oracle/ora9/oradata/dbtest/redo02.log' SIZE 50M,

 10   GROUP 3 '/home/oracle/ora9/oradata/dbtest/redo03.log' SIZE 50M

 11   DATAFILE

 12   '/home/oracle/ora9/oradata/dbtest/cwmlite01.dbf',

 13   '/home/oracle/ora9/oradata/dbtest/devbase_20090408.dbf',

 14   '/home/oracle/ora9/oradata/dbtest/drsys01.dbf',

 15   '/home/oracle/ora9/oradata/dbtest/example01.dbf',

 16   '/home/oracle/ora9/oradata/dbtest/indx01.dbf',

 17   '/home/oracle/ora9/oradata/dbtest/odm01.dbf',

 18   '/home/oracle/ora9/oradata/dbtest/system01.dbf',

 19   '/home/oracle/ora9/oradata/dbtest/tools01.dbf',

 20   '/home/oracle/ora9/oradata/dbtest/undotbs01.dbf',

 21   '/home/oracle/ora9/oradata/dbtest/users01.dbf',

 22   '/home/oracle/ora9/oradata/dbtest/xdb01.dbf'

 23   CHARACTER SET ZHS16GBK;

CREATE CONTROLFILE SET DATABASE "DBTEST" RESETLOGS FORCE LOGGING NOARCHIVELOG

*

ERROR at line 1:

ORA-01503: CREATE CONTROLFILE failed

ORA-01990: error opening password file '/home/oracle/ora9/oracle/dbs/orapw'

ORA-27037: unable to obtain file status

Linux Error: 2: No such file or directory

Additional information: 3

根據錯誤提示,是缺少密碼驗證文件,用下面的命令創建密碼文件。

$cd $ORACLE_HOME/dbs

orapwd password=chenli file=orapwdbtest

SQL> CREATE CONTROLFILE SET DATABASE 'dbtest' RESETLOGS FORCE LOGGING NOARCHIVELOG

  2   MAXLOGFILES 16

  3   MAXLOGMEMBERS 3

  4   MAXDATAFILES 100

  5   MAXINSTANCES 8

  6   MAXLOGHISTORY 292

  7   LOGFILE

  8   GROUP 1 '/home/oracle/ora9/oradata/dbtest/redo01.log' SIZE 50M,

  9   GROUP 2 '/home/oracle/ora9/oradata/dbtest/redo02.log' SIZE 50M,

 10   GROUP 3 '/home/oracle/ora9/oradata/dbtest/redo03.log' SIZE 50M

 11   DATAFILE

 12   '/home/oracle/ora9/oradata/dbtest/cwmlite01.dbf',

 13   '/home/oracle/ora9/oradata/dbtest/devbase_20090408.dbf',

 14   '/home/oracle/ora9/oradata/dbtest/drsys01.dbf',

 15   '/home/oracle/ora9/oradata/dbtest/example01.dbf',

 16   '/home/oracle/ora9/oradata/dbtest/indx01.dbf',

 17   '/home/oracle/ora9/oradata/dbtest/odm01.dbf',

 18   '/home/oracle/ora9/oradata/dbtest/system01.dbf',

 19   '/home/oracle/ora9/oradata/dbtest/tools01.dbf',

 20   '/home/oracle/ora9/oradata/dbtest/undotbs01.dbf',

 21   '/home/oracle/ora9/oradata/dbtest/users01.dbf',

 22   '/home/oracle/ora9/oradata/dbtest/xdb01.dbf'

 23   CHARACTER SET ZHS16GBK;

 

Control file created.

現在創建成功了。

創建控制文件成功了,下面重新啓動數據庫。

SQL> startup nomount

ORACLE instance started.

 

Total System Global Area  236000356 bytes

Fixed Size                   451684 bytes

Variable Size             201326592 bytes

Database Buffers           33554432 bytes

Redo Buffers                 667648 bytes

SQL> alter database mount;

 

Database altered.

SQL> alter database open;

alter database open

*

ERROR at line 1:

ORA-01589: must use RESETLOGS or NORESETLOGS option for database open

 

 

SQL> alter database open RESETLOGS;

 

Database altered.

查看錶中的記錄,正確的。

修改實例名成功。

4.         總結

由上面的操作可以看到,在數據庫維護中,最重要的是數據文件,初始化文件可以從別的實例拷貝過來,然後修改。控制文件可以重新創建,只要數據文件正確,就可以重建初始化文件和控制文件之後,恢復數據庫。

遇到的錯誤:

ERROR at line 1:
ORA-01503: CREATE CONTROLFILE failed
ORA-00200: controlfile could not be created
ORA-00202: controlfile: '/home/ora/ora9/oradata/dbtest/control01.ctl'
ORA-27040: skgfrcre: create error, unable to create file
Linux Error: 2: No such file or directory

請查看初始化文件中,控制文件的路徑是正確,控制文件的路徑上的目錄是否有權限創建文件,如果這些問題都解決了,那麼應該能成功創建控制文件。

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章