使用任意例項名來開啟資料庫測試--男人(例項)理論上能OPEN任意一個女人(資料庫)

還不算暈發表於2013-11-15
關於DB_NAME與ORACLE_SID,詳見http://blog.csdn.net/q947817003/article/details/11269807
ORACLE_SID從ORACLE 10G開始,引數檔案不再記錄INSTANCE_NAME,此時INSTANCE_NAME動態從系統ORACLE_SID獲得。將保持一致
DB_NAME:
例項啟動的最少引數要求,有此引數,資料庫例項就可以啟動。可以新建INIT.ORA只包括此引數測試。
它代表了例項即將連線的資料庫名稱,關係到具體的物理檔案。單例項資料庫DB_NAME與INSTANCE_NAME可設定相同,RAC環境下多例項對應一個資料庫,兩者不同。
DB_NAME用來定義資料庫名稱,必須是不超過8個字元的文字串,資料庫建立過程中,DB_NAME被記錄在資料檔案、日誌檔案、控制檔案,例項啟動過程中引數檔案中DB_NAME與控制檔案中不一致,則資料庫不能啟動。
一個例項可以MOUNT並開啟任何資料庫,同一時間一個例項只能開啟一個資料庫。
一個資料庫可以被一個或多個例項MOUNT並開啟,如RAC
主機,例項,資料庫關係:
比如例項是男人,資料庫是女人,主機就是一張大床。
正常情況下,同一時間一男只能開啟一女,而理論上一男能開啟任意女滴。
一女理論上可以被任意一個男開啟,也可以同時被多個男開啟----RAC/3P-NP。
一張大床(主機)可以睡一個男人(例項)和一個女人(庫),只要床足夠大,也可以睡多個男人和多個女人。



ORACLE_SID:
ORACLE System IDentifier的縮寫, ORACLE_SID以環境變數形式出現。ORACLE例項由一塊共享記憶體區域SGA和一組後臺程式background process組成,後臺程式是資料庫與作業系統執行互動的通道。比如JORACLE根據ORACLE_SID決定查詢引數檔案並啟動例項。
INSTANCE_NAME 在資料庫內部ORACLE_sid關聯概念就是INSTANCE_NAME,ORACLE存在的初始化引數INSTANCE_NAME用於標示資料庫例項名字預設值是ORACLE_SID,在資料庫內部檢視V$INSTANCE中記錄著INSTANCE_NAME,來自資料庫例項的SID,始終與ORACLE_SID保持一致。
從動態引數檔案建立靜態引數檔案為:
create pfile from spfile;
create sfile='C:\DBHOME_1\DATABASE\initorcl.ora'from spfile=' C:\DBHOME_1\DATABASE\SPFILEORAC.ORA';

###########################################################################################################

使用任意例項名來開啟資料庫只需要更改以下三個引數:
修改.bash_profile  或者只改exprot ORACLE_SID引數即可
修改spfile**.ora  為新SID名。
修改密碼檔案為新SID名
注意事項:實驗完成後,關庫並及時將SPFILE/密碼檔案/ORACLE_SID恢復為原來的資料。
如未關庫就重新以原ORACLE_SID去OPEN資料庫,會找不到SPFILE。。
如未關庫但是修改了SPFILE/密碼檔案/ORACLE_SID,重新以原ORACLE_SID去OPEN資料庫,例項可以啟動,MOUNT時報錯:ORA-01102: cannot mount database in EXCLUSIVE mode

1.修改.bash_profile的 ORACLE_SID引數或者exprot ORACLE_SID引數

我這裡用exprot ORACLE_SID引數的方式
[oracle@bys3 ~]$ export ORACLE_SID=bys5
[oracle@bys3 ~]$ echo $ORACLE_SID
bys5

2.修改初始化引數檔案-SPFILE名字格式--不用修改內容--做好檔案備份

修改密碼檔案格式-密碼檔案的名字格式--不用修改內容
[oracle@bys3 ~]$ cd $ORACLE_HOME/dbs
[oracle@bys3 dbs]$ ls
hc_bys3.dat   lkBYS3     spfilebys3.ora
initbys3.ora  orapwbys3
[oracle@bys3 dbs]$ mv spfilebys3.ora spfilebys3.oraa
[oracle@bys3 dbs]$ cp spfilebys3.oraa spfilebys5.ora
[oracle@bys3 dbs]$ cp orapwbys3 orapwbys3a
[oracle@bys3 dbs]$ mv orapwbys3 orapwbys5
[oracle@bys3 dbs]$ ls
hc_bys3.dat   orapwbys3a       spfilebys5.ora
initbys3.ora  orapwbys5
lkBYS3        spfilebys3.oraa
3.啟動例項並OPEN資料庫,可以正常開啟資料庫
[oracle@bys3 dbs]$ sqlplus / as sysdba
SQL*Plus: Release 11.2.0.4.0 Production on Fri Nov 15 10:49:44 2013
Copyright (c) 1982, 2013, Oracle.  All rights reserved.
Connected to an idle instance.
SYS@ bys5>startup
ORACLE instance started.
Total System Global Area  150654976 bytes
Fixed Size                  1363216 bytes
Variable Size              96469744 bytes
Database Buffers           50331648 bytes
Redo Buffers                2490368 bytes
Database mounted.
Database opened.
SYS@ bys5>select instance_name,host_name from v$instance;
INSTANCE_NAME    HOST_NAME
---------------- ----------------------------------------------------------------
bys5             bys3.bys.com
SYS@ bys5>select name from v$database;
NAME
---------
BYS3

相關文章