1. 程式人生 > >修改oracle例項名(sid)和資料庫名(db_name)

修改oracle例項名(sid)和資料庫名(db_name)

有時我們需要修改資料庫的sid和dbname,除了使用rman進行備份恢復之外,也可以通過手工方式修改,主要由兩個主要過程完成:
1、修改例項名(SID)
2、修改資料庫名(dbname)

下面演示將資料庫sid和dbname由orcl修改為cnhtm的過程:


1、修改例項名(sid)

1.1、檢查原來的資料庫例項名(sid)

[email protected][/home/oracle]> echo $ORACLE_SID
orcl
[email protected][/home/oracle]> sqlplus / as sysdba

SQL*Plus: Release 10.2.0.1.0 - Production on Sun Dec 20 11:14:49 2009

Copyright (c) 1982, 2005, Oracle. All rights reserved.


Connected to:
Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Production
With the Partitioning, OLAP and Data Mining options

[email protected]
> select instance from v$thread;

INSTANCE
--------------------------------------------------------------------------------
orcl

1.2、關閉資料庫

注意不能用shutdown abort,只能是shutdown immediate或shutdown normal

[email protected]> shutdown immediate
Database closed.
Database dismounted.
ORACLE instance shut down.
[email protected]
> exit
Disconnected from Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Production
With the Partitioning, OLAP and Data Mining options

1.3、修改oracle使用者的ORACLE_SID環境變數,如由orcl修改為cnhtm

[email protected][/home/oracle]> cat ~/.bash_profile|grep -i sid
ORACLE_SID=cnhtm
export ORACLE_BASE ORACLE_HOME ORACLE_SID PATH

1.4、修改/etc/oratab檔案,將sid名由舊的修改為新的,如從orcl修改為cnhtm

[email protected][/home/oracle]> cat /etc/oratab

......

cnhtm:/oracle/app/10.1:Y
+ASM:/oracle/app/10.1:Y

1.5、進入到$ORACLE_HOME/dbs目錄

將所有檔名中包含原來的sid的修改為對應的新sid的
如我對如下檔案修改為其後對應的檔案

hc_orcl.dat->hc_cnhtm.dat
lkORCL->lkCNHTM
orapworcl->orapwcnhtm
snapcf_orcl.f->snapcf_cnhtm.f
spfileorcl.ora->spfilecnhtm.ora

1.6、使新修改的ORACLE_SID環境變數生效

[email protected][/oracle/app/10.1/dbs]> . ~/.bash_profile
[email protected][/oracle/app/10.1/dbs]> echo $ORACLE_SID
cnhtm

1.7、重建口令檔案

因為口令檔案改名後不能在新例項中使用,所以重建

[email protected][/oracle/app/10.1/dbs]> orapwd file=$ORACLE_HOME/dbs/orapw$ORACLE_SID password=oracle entries=5 force=y
[email protected][/oracle/app/10.1/dbs]> ls -lrt orapw*
-rw-r----- 1 oracle oinstall 2048 Dec 20 11:27 orapwcnhtm

1.8、啟動資料庫

[email protected][/oracle/app/10.1/dbs]> sqlplus / as sysdba

SQL*Plus: Release 10.2.0.1.0 - Production on Sun Dec 20 11:29:53 2009

Copyright (c) 1982, 2005, Oracle. All rights reserved.

Connected to an idle instance.

idle> startup
ORACLE instance started.

Total System Global Area 167772160 bytes
Fixed Size 1218292 bytes
Variable Size 62916876 bytes
Database Buffers 96468992 bytes
Redo Buffers 7168000 bytes
Database mounted.
Database opened.

1.9、檢查資料庫例項名

通過如下語句檢查資料庫例項名,發現例項名已經由orcl變成cnhtm

idle> select instance from v$thread;

INSTANCE
--------------------------------------------------------------------------------
cnhtm

2、修改資料庫名(dbname)

雖然已經修改過了例項名(sid),但是資料庫的名稱(dbname還是原來的名稱orcl)

idle> conn / as sysdba
Connected.
[email protected]> show parameter name

NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
db_file_name_convert string
db_name string orcl
db_unique_name string orcl
global_names boolean FALSE
instance_name string cnhtm
lock_name_space string
log_file_name_convert string
service_names string orcl

可以通過如下步驟修改資料庫名(dbname)

2.1、首先切換一下線上日誌,使資料庫做checkpoint

[email protected]> alter system archive log current;

System altered.

2.2、生成重建控制檔案的指令碼

[email protected]> alter database backup controlfile to trace resetlogs;

Database altered.

2.3、關閉資料庫,需要乾淨關閉,不能shutdown abort

[email protected]> shutdown immediate
Database closed.
Database dismounted.
ORACLE instance shut down.
[email protected]> exit
Disconnected from Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Production
With the Partitioning, OLAP and Data Mining options

2.4、進入$ORACLE_BASE/admin/<sid>/udump目錄中,找到最新生成的trc檔案,這就是重建控制檔案的指令碼

[email protected][/oracle/admin/orcl/udump]> ls -lrt
total 2608
-rw-r----- 1 oracle oinstall 577 Nov 7 13:37 orcl_ora_12020.trc

......

-rw-r----- 1 oracle oinstall 4407 Dec 20 11:36 cnhtm_ora_7789.trc

2.5、將找到的trc檔案複製一份,並命名為ccf.sql

[email protected][/oracle/admin/orcl/udump]> cp cnhtm_ora_7789.trc ccf.sql

2.6、修改ccf.sql

查詢STARTUP NOMOUNT語句,將這一行上面的所有行都刪除
查詢所有以--開始的行,把這些行刪除
查詢所有的orcl修改為cnhtm,所有的ORCL修改為CNHTM
找到CREATE CONTROLFILE REUSE DATABASE...語句,將其中的REUSE修改為SET
找到RECOVER DATABASE USING BACKUP CONTROLFILE語句,將其用雙橫線(--)註釋掉
如果有精力,可以修改這個指令碼中的datafile和logfile部分使用新的檔名稱,其實這部分不修改也可以,我為了測試的目的進行了修改,修改後要記得去重新命名資料檔案和log檔案,將對應的資料檔案和log檔案與這裡的名稱相對應

我修改後的ccf.sql檔案內容如下

STARTUP NOMOUNT
CREATE CONTROLFILE set DATABASE "cnhtm" RESETLOGS ARCHIVELOG
MAXLOGFILES 16
MAXLOGMEMBERS 3
MAXDATAFILES 100
MAXINSTANCES 8
MAXLOGHISTORY 292
LOGFILE
GROUP 1 '+DATA/cnhtm/onlinelog/group_1.LOG' SIZE 100M,
GROUP 2 '+DATA/cnhtm/onlinelog/group_2.LOG' SIZE 100M,
GROUP 3 '+DATA/cnhtm/onlinelog/group_3.LOG' SIZE 100M,
GROUP 4 '+DATA/cnhtm/onlinelog/group_4.LOG' SIZE 100M
DATAFILE
'+DATA/cnhtm/datafile/system01.DBF',
'+DATA/cnhtm/datafile/undotbs101.DBF',
'+DATA/cnhtm/datafile/sysaux01.DBF',
'+DATA/cnhtm/datafile/users01.DBF',
'+DATA/cnhtm/datafile/example01.DBF',
'+DATA/cnhtm/datafile/tbs_lmt01.DBF',
'+DATA/cnhtm/datafile/tbs_lmt_201.DBF',
'+DATA/cnhtm/datafile/tbs_lmt_301.DBF'
CHARACTER SET ZHS16GBK
;
--RECOVER DATABASE USING BACKUP CONTROLFILE;
ALTER DATABASE OPEN RESETLOGS;
ALTER TABLESPACE TEMP ADD TEMPFILE '+DATA/cnhtm/tempfile/temp.269.705923003'
SIZE 104857600 REUSE AUTOEXTEND ON NEXT 104857600 MAXSIZE 32767M;

2.7、修改資料檔案、線上日誌檔名

如果上一步修改了ccf.sql檔案中的datafile和logfile段的檔名,這裡要將這些檔名重命令為與其一致。
因為我的實驗環境使用了ASM,在Oracle 10.2中ASM中不能重新命名和複製檔案,我採用了建立別名的方式,操作如下:

[email protected][/oracle/admin/cnhtm/udump]> export ORACLE_SID=+ASM
[email protected][/oracle/admin/cnhtm/udump]> sqlplus / as sysdba

SQL*Plus: Release 10.2.0.1.0 - Production on Sun Dec 20 12:08:52 2009

Copyright (c) 1982, 2005, Oracle. All rights reserved.


Connected to:
Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Production
With the Partitioning, OLAP and Data Mining options

idle> alter diskgroup data add directory '+data/CNHTM';

Diskgroup altered.

idle> alter diskgroup data add directory '+data/CNHTM/DATAFILE';

Diskgroup altered.

idle> alter diskgroup data add alias
2 '+data/CNHTM/DATAFILE/EXAMPLE01.DBF'
3 for
4 '+data/ORCL/DATAFILE/EXAMPLE.261.705922745';

Diskgroup altered.

......

idle> alter diskgroup data add alias
2 '+data/CNHTM/DATAFILE/USERS01.DBF'
3 for
4 '+data/ORCL/DATAFILE/USERS.266.705922777';

Diskgroup altered.

idle> alter diskgroup data add directory '+data/CNHTM/ONLINELOG';

Diskgroup altered.

......

idle> alter diskgroup data add alias
2 '+data/CNHTM/ONLINELOG/group_4.LOG'
3 for
4 '+data/ORCL/ONLINELOG/group_7.273.705923695';

Diskgroup altered.

2.8、如果歸檔日誌目錄名中包含sid,那麼修改歸檔目錄名

我的測試環境,歸檔目錄使用的是flash_recovery_area,所以需要將這個目錄中的ORCL目錄重新命名為CNHTM

2.9、使用spfile生成pfile

注意這裡沒有啟動資料庫,只是連結到idle狀態

[email protected][/home/oracle]> export ORACLE_SID=cnhtm
[email protected][/home/oracle]> sqlplus / as sysdba

SQL*Plus: Release 10.2.0.1.0 - Production on Sun Dec 20 11:49:20 2009

Copyright (c) 1982, 2005, Oracle. All rights reserved.

Connected to an idle instance.

idle> create pfile='?/dbs/initcnhtm.ora' from spfile;

File created.

idle> exit
Disconnected from Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Production
With the Partitioning, OLAP and Data Mining options

2.10、進入$ORACLE_HOME/dbs目錄

2.11、編輯initcnhtm.ora檔案

搜尋所有的orcl,重命令為cnhtm,搜尋所有的ORCL,重新命名為CNHTM

2.12、刪除控制檔案

將原來的控制檔案刪除或重新命名
控制檔案的位置名稱可以通過檢視2.11步驟中的*.control_files來確定
如果控制檔案在ASM中,可以進入asmcmd命令,然後用rm命令刪除

2.13、進入$ORACLE_BASE/admin目錄

將orcl目錄重新命名為cnhtm

2.14、使用修改過的pfile生成spfile

[email protected][/oracle/admin/cnhtm/udump]> sqlplus / as sysdba

SQL*Plus: Release 10.2.0.1.0 - Production on Sun Dec 20 11:59:56 2009

Copyright (c) 1982, 2005, Oracle. All rights reserved.

Connected to an idle instance.

idle> create spfile from pfile='?/dbs/initcnhtm.ora';

File created.

2.15、呼叫2.6步驟修改好的ccf.sql

idle> @/oracle/admin/cnhtm/udump/ccf.sql
ORACLE instance started.

Total System Global Area 167772160 bytes
Fixed Size 1218292 bytes
Variable Size 67111180 bytes
Database Buffers 92274688 bytes
Redo Buffers 7168000 bytes

Control file created.


Database altered.


Database altered.


Tablespace altered.

2.16、檢查資料庫狀態

idle> conn / as sysdba
Connected.
[email protected]>select open_mode from v$database;
OPEN_MODE
----------
READ WRITE

[email protected]> show parameter name

NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
db_file_name_convert string
db_name string cnhtm
db_unique_name string cnhtm
global_names boolean FALSE
instance_name string cnhtm
lock_name_space string
log_file_name_convert string
service_names string cnhtm

發現數據庫名(db_name)已經修改為cnhtm

--end--

相關推薦

修改oracle例項(sid)資料庫(db_name)

有時我們需要修改資料庫的sid和dbname,除了使用rman進行備份恢復之外,也可以通過手工方式修改,主要由兩個主要過程完成: 1、修改例項名(SID) 2、修改資料庫名(dbname) 下面演示將資料庫sid和dbname由orcl修改為cnhtm的過程: 1、

Oracle的幾個概念:資料庫,全域性資料庫,SID,例項,名稱空間,schema

常被oracle的幾個概念搞得很暈,和公司做pl/sql的同事討論後,又到網上搜索下,現將個人對這幾個概念的理解做個筆記:先通俗的解釋下資料庫這個概念,資料庫就是儲存在磁碟上的檔案,這些檔案中儲存的資料有一定的物理結構和邏輯結構。 資料庫名 就是資料庫的名稱標

Oracle資料庫例項、全域性資料庫、服務、網路服務區別聯絡

資料庫名、例項名、資料庫域名、全域性資料庫名、服務名,網路服務名,這是幾個令很多初學者容易混淆的概念。相信很多初學者都與我一樣被標題上這些個概念搞得一頭霧水。我們現在就來把它們弄個明白。 一、資料庫名 資料庫名就是一個數據庫的標識,就像人的

Oracle資料庫sid服務的區別

在程式中 服務名如下: jdbc:oracle:thin:@//<host>:<port>/<service_name> 例 jdbc:oracle:thin

linux 及unix 修改Oracle例項

系統環境:CentOS 6.5 ORACLE版本:10.2 1、檢查原來的資料庫例項名 $ echo $ORACLE_SID orcl $ sqlplus / as sysdba > sele

oracle資料庫、服務例項、全域性資料庫

sql>startup nomount 如果引數檔案不在規定的目錄中,可以在啟動例項時指定引數檔案: sql>startup pfile=/export/home/user/initmyoracle.init nomount 在例項啟動後就可以使用CREATE DATABASE命令建立資料。其詳細

ORACLE】Win2008R2修改oracle數據庫實例

cal mat tar 文件創建 sysaux locks art sys db_name 需求說明:要求將windows平臺的數據庫實例名由orcl改為haha 參考: https://www.cnblogs.com/junnor/archive/2013/03/0

Linux修改自己的賬戶名字裝置

1.修改賬戶名字xxx為aaa: 1.1切換到超級使用者 1.2修改/etc/passwd這個檔案中的使用者名稱部分、使用者組部分和主目錄部分 1.3修改/etc/group這個檔案中的組名部分(組標識號不變),同時也將/etc/gshadow改寫一下 1.4修改/etc/

點選登入Oracle企業管理器,提示錯誤,您的使用者名稱/或口令無效如何修改oracle裡面的syssystem的密碼

本人win7的作業系統,裝的shiftoracle 11g,問題就是我安裝成功後,單擊Database Control-orcl項進入企業管理器,進入https://localhost:1158/em/console/logon/logon 這個頁面,進行登入,使用者名稱和

.class.this的區別

類名.class我們知道在java中,一個類在被載入的時候虛擬機器就會自動的生成一個這個類的一個Class型別的“類物件”,每個類都對應著一個這樣的類物件,通過這個Class型別的類物件,我們就能夠使用“內省與反射”機制,訪問一個類的資訊,比如:對應類中的方法有哪些,成員域有

windows下面 修改oracle資料庫例項SID

SQL*Plus: Release 9.2.0.5.0 - Production on 星期日 11月 21 13:32:34 2004   Copyright (c) 1982, 2002, Oracle Corporation. All rights reserved.

oracle 例項服務以及資料庫區別

一、資料庫名 什麼是資料庫名? 資料庫名就是一個數據庫的標識,就像人的身份證號一樣。他用引數DB_NAME表示,如果一臺機器上裝了多全資料庫,那麼每一個數據庫都有一個數據庫名。在資料庫安裝或建立完成之後,引數DB_NAME被寫入引數檔案之中。格式如下: DB_NAME=myorcl ... 在 建立

Oracle 例項/服務 請問SIDService Name有什麼區別啊

可以簡單的這樣理解:一個公司比喻成一臺伺服器,資料庫是這個公司中的一個部門。 1.SID:一個數據庫可以有多個例項(如RAC),SID是用來標識這個資料庫內部每個例項的名字, 就好像一個部門裡,每個人都有一個自己的名字。 2.SERVICE_NAME:是這個資料庫對外宣稱的名字,外面的人要想連線我這個資

linux/unix 下修改oracle資料庫例項

1、檢查原來的資料庫例項名 $ echo $ORACLE_SID orcl $ sqlplus / as sysdba > select instance from v$thread; INS

檢視Oracle資料庫例項

檢視資料庫名 SQL> select name from v$database; NAME --------- ORCL SQL> desc v$database;  名稱                                      是否為

修改oracle資料庫例項

1.準備 原資料庫的例項名為linuxdb,控制檔案、資料檔案、聯機日誌檔案存放在/home/oracle/ora9/oradata/linuxdb目錄,將所有的檔案拷貝到另外一個目錄/home/oracle/ora9/oradata/dbtest。再將linuxdb 的初始

Oracle 實例/服務 請問SIDService_Name有什麽區別啊?

db_name 關系 style 是你 機構 容易 部門 glob 區別 可以簡單的這樣理解:一個公司比喻成一臺服務器,數據庫是這個公司中的一個部門。 1.SID:一個數據庫可以有多個實例(如RAC),SID是用來標識這個數據庫內部每個實例的名字, 就好像一個部門裏,每個人

oracle中的欄位全部修改為小寫

在建立表和表結構的時候,如果想要小寫需要在名稱上面新增雙引號,如果不新增oracle資料庫會預設識別為大寫 1.將表名和欄位名改為大寫 批量將表名變為大寫 begin    for c in (select table_name tn from user_tabl

關於ORACLE資料庫以及資料例項等幾個重要概念

在Oracle中有關資料庫和資料庫例項的幾個重要概念,有時候如果理解不是很深或者對其疏忽、混淆了,還真容易搞錯或弄不清其概念,下面就資料庫例項名、資料庫名、資料庫域名、資料庫服務名、全域性資料庫名幾個概念,我們來梳理一下概念,總結歸納一下這些知識,首先,我們來看看官方文件對這幾者的概念介紹:  

Oracle修改IP主機

關於oracle IP地址修改和主機名修改,其實對不同環境有不同的更改方法 1)單機single的資料庫修改 ; 2) ASM+single的修改; 3)RAC 叢集的修改。 單機single的資料庫修改 原主機名和IP txld102057