修改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 INSTANCE -------------------------------------------------------------------------------- orcl |
1.2、關閉資料庫
注意不能用shutdown abort,只能是shutdown immediate或shutdown normal
[email protected]> shutdown immediate Database closed. Database dismounted. ORACLE instance shut down. 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裡面的sys和system的密碼
本人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 例項名/服務名 請問SID和Service 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 實例名/服務名 請問SID和Service_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