[20140513]ORACLE_HOME環境變數結尾的斜槓

lfree發表於2014-05-13

[20140513]ORACLE_HOME環境變數結尾的斜槓.txt

--上午再次遇到環境變數結尾的斜槓問題,實際上我第一次遇到也感覺很奇怪。
--自己還做了一次跟蹤,很難定位問題。

--正好看了連結,自己做一次測試:

$ export ORACLE_HOME=/u01/app/oracle11g/product/11.2.0/db_2/

--啟動資料庫:
SYS@test> startup
ORACLE instance started.

Total System Global Area 1603411968 bytes
Fixed Size                  2228784 bytes
Variable Size            1006636496 bytes
Database Buffers          587202560 bytes
Redo Buffers                7344128 bytes
Database mounted.
Database opened.


--實際上以後如何進入都不會有任何問題。但是如果修改環境變數export ORACLE_HOME=/u01/app/oracle11g/product/11.2.0/db_2,問題就來了。
export ORACLE_HOME=/u01/app/oracle11g/product/11.2.0/db_2

$ sqlplus sys as sysdba
SQL*Plus: Release 11.2.0.3.0 Production on Tue May 13 15:59:11 2014
Copyright (c) 1982, 2011, Oracle.  All rights reserved.
Enter password:
Connected to an idle instance.

--可以發現連線的idle instance。問題實際上oracle本地認證透過IPC,而ipc是直接訪問共享記憶體段的。

$ export ORACLE_HOME=/u01/app/oracle11g/product/11.2.0/db_2/
SYS@test> oradebug setmypid
Statement processed.
SYS@test> oradebug ipc
Information written to trace file.

*** 2014-05-13 16:01:44.033
Processing Oradebug command 'ipc'
Dump of unix-generic skgm context
areaflags            000000f7
realmflags           0000001f
mapsize              00000800
protectsize          00001000
lcmsize              00001000
seglen               00200000
largestsize  0000000080000000
smallestsize 0000000001000000
stacklimit       0x7fbe07e9b0
stackdir                   -1
mode                      640
magic                acc01ade
Handle:          0x2a970040b0 `/u01/app/oracle11g/product/11.2.0/db_2/test'
Dump of unix-generic realm handle `/u01/app/oracle11g/product/11.2.0/db_2/test', flags = 00000000

--注意看看handle = `/u01/app/oracle11g/product/11.2.0/db_2/test'
--如果關閉資料庫,將環境變數修改回來,再轉儲IPC看看。

$ export ORACLE_HOME=/u01/app/oracle11g/product/11.2.0/db_2

SYS@test> startup
ORACLE instance started.

Total System Global Area 1603411968 bytes
Fixed Size                  2228784 bytes
Variable Size            1006636496 bytes
Database Buffers          587202560 bytes
Redo Buffers                7344128 bytes
Database mounted.
Database opened.
SYS@test> oradebug setmypid
Statement processed.
SYS@test> ora
ORACLE             Oracle.            ora_cpu            ora_hash           oradebug           oradiag_oracle11g
SYS@test> oradebug ipc
Information written to trace file.


*** 2014-05-13 16:06:52.443
Processing Oradebug command 'ipc'
Dump of unix-generic skgm context
areaflags            000000f7
realmflags           0000001f
mapsize              00000800
protectsize          00001000
lcmsize              00001000
seglen               00200000
largestsize  0000000080000000
smallestsize 0000000001000000
stacklimit       0x7fbe07e9b0
stackdir                   -1
mode                      640
magic                acc01ade
Handle:          0x2a970040b0 `/u01/app/oracle11g/product/11.2.0/db_2test'
Dump of unix-generic realm handle `/u01/app/oracle11g/product/11.2.0/db_2test', flags = 00000000

--注意看看handle = `/u01/app/oracle11g/product/11.2.0/db_2test',可以發現db2test對比上面沒有斜槓。
--說明oracle資料庫的記憶體段是透過ORACLE_HOME和ORACLE_SID結合起來識別的,只要ORACLE_HOME或者ORACLE_SID
--不一樣就不能透過IPC訪問例項的記憶體段,也就不能登入資料庫.

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/267265/viewspace-1160328/,如需轉載,請註明出處,否則將追究法律責任。

相關文章