Oracle 11g 中告警日誌的位置

quanjima發表於2014-10-19

Oracle 11g 中告警日誌的位置

首先介紹2個新名詞
Automatic Diagnostic Repository (ADR)一個存放資料庫診斷日誌、跟蹤檔案的目錄,稱作ADR base,對應初始化引數DIAGNOSTIC_DEST,如果設定了ORACLE_BASE環境變數,DIAGNOSTIC_DEST等於 ORACLE_BASE,如果沒有設定ORACLE_BASE,則等與ORACLE_HOME/log。
SQL> show parameter DIAGNOSTIC
NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
diagnostic_dest                      string      /oracle/oracle二.aelrt xml file
在oracle 11g中,alert檔案的資訊是以xml的檔案格式存在的,另外提供了普通文字格式的alert檔案。
這兩份log檔案的位置分別是V$DIAG_INFO中的Diag Alert 和Diag Trace 對應的目錄。1.透過查詢v$diag_info檢視獲得ADR相關的資訊
程式碼:
sys@ora11g>select * from v$diag_info;
INST_ID NAME VALUE
------- ---------------------- ----------------------------------------------
1 Diag Enabled TRUE
1 ADR Base /oracle/u01/app/oracle
1 ADR Home /oracle/u01/app/oracle/diag/rdbms/ora11g/ora11g
1 Diag Trace /oracle/u01/app/oracle/diag/rdbms/ora11g/ora11g/trace
1 Diag Alert /oracle/u01/app/oracle/diag/rdbms/ora11g/ora11g/alert
1 Diag Incident /oracle/u01/app/oracle/diag/rdbms/ora11g/ora11g/incident
1 Diag Cdump /oracle/u01/app/oracle/diag/rdbms/ora11g/ora11g/cdump
1 Health Monitor /oracle/u01/app/oracle/diag/rdbms/ora11g/ora11g/hm
1 Default Trace File /oracle/u01/app/oracle/diag/rdbms/ora11g/ora11g/trace/ora11g_ora_3968.trc
1 Active Problem Count 0
1 Active Incident Count 0
11 rows selected.
2.其中Diag Trace對應的目錄為文字格式的警告日誌,及我們經常習慣使用的日誌
程式碼:
ora11g@RHEL53 /oracle/u01/app/oracle/diag/rdbms/ora11g/ora11g/trace$ls -l alert_ora11g.log
-rw-r----- 1 oracle oinstall 72513 Feb 27 14:29 alert_ora11g.log
3.其中Diag Alert對應的目錄為XML格式的警告日誌
程式碼:
ora11g@RHEL53 /oracle/u01/app/oracle/diag/rdbms/ora11g/ora11g/alert$ls -l log.xml
-rw-r----- 1 oracle oinstall 327254 Feb 27 14:29 log.xml
4.我習慣將檢視警告日誌定義為同名alert在作業系統上直接檢視
程式碼:
ora11g@RHEL53 /home/oracle$alias alert
alias alert='tail -200f $ORACLE_BASE/diag/rdbms/$ORACLE_SID/$ORACLE_SID/trace/alert_$ORACLE_SID.log'
5.使用同名進行檢視
程式碼:
ora11g@RHEL53 /home/oracle$alert      錯誤現象
ORA-01034: ORACLE not available
ORA-27101: shared memory realm does not exist

解決方案

假如TNSPING SID正常, 服務啟動正常沒有出現“啟動中”這些現象

可以嘗試
C:\>oradim -delete -sid sfis
C:\>oradim -new -sid sfis -startmode auto -pfile d:\pfile\initsfis.ora

或者

啟動資料庫

原因 

Oracle Database的主機被異常關機,或者重新安裝部分Oracle軟體,造成SERVICE損壞,所以刪除重建可以解決。

     

一. 問題描述


在一次資料庫災難恢復過程中,資料庫恢復到一個新的環境裡,並且資料庫已經成功啟動了,可以在伺服器上登入與訪問。但客戶端在訪問時卻報了ORA-27101的錯誤,無法透過定義資料庫連線串遠端連線到這個資料庫。在資料庫伺服器上,定義一個訪問本地資料庫的連線串,使用這個連線串連線也報同樣的錯誤。


錯誤的現象與現場如下:

$export ORACLE_SID=Port

本地可以使用管理員登入,資料庫為open狀態


$sqlplus / as sysdba

SQL*Plus: Release 10.2.0.3.0 - Production on Fri Feb 18 09:44:01 2011

Copyright (c) 1982, 2006, Oracle.All Rights Reserved.

Connected to:

Oracle Database 10g Enterprise Edition Release 10.2.0.3.0 - 64bit Production

With the Partitioning, OLAP and Data Mining options


SQL> select open_mode from v$database;

OPEN_MODE

----------

READ WRITE


伺服器與客戶端的連線串定義如下:

$more $ORACLE_HOME/network/admin/tnsnames.ora

。。。。。。

port =

(DESCRIPTION =

(ADDRESS = (PROTOCOL = TCP)(HOST =10.192.215.77 )(PORT = 1522))

(CONNECT_DATA =

(SERVER = DEDICATED)

(SERVICE_NAME = port)

)

)



透過tnsping命令測試連線,伺服器和客戶端都是正常的,如下:

$ tnsping port

Used TNSNAMES adapter to resolve the alias

Attempting to contact (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST =10.192.215.77)(PORT = 1522)) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = port)))

OK (90 msec)


透過sqlplus進行遠端登入,報下面的錯誤:

$ sqlplus user1/pwd1@port

ERROR:

ORA-01034: ORACLE not available

ORA-27101: shared memory realm does not exist

IBM AIX RISC System/6000 Error: 2: No such file or directory

Enter user-name:


二. 問題分析


首先檢查資料庫伺服器的檔案系統的操作許可權,發現沒有問題;

接著檢查伺服器的網路狀況,也沒有發現問題;

在ORACLE METALINK 網站上找到一遍文章,ID=122183.1,在該文中提到了listener.ora檔案中,SID_NAME是大小寫敏感的,如下:


Database Connections Fail With ORA-27101 Shared Memory Realm Does Not Exist [ID 122183.1]


For remote (TCP/listener) connections:

  1. Review the listener.ora currently used to startup the listener and verify the ORACLE_HOME value is correct for all listed Oracle databases. If the ORACLE_HOME points to a different Oracle version then what was used when the database was created, then this error can occur.
  2. Likewise, review the listener.ora currently used to startup the listener and verify the SID_NAME value is correct and has the right value (the SID_NAME is case sensitive).


檢查資料庫伺服器的LISTENER.ORA檔案,發現SID_NAME大小寫書寫錯誤了.

$more $ORACLE_HOME/network/admin/listener.ora

SID_LIST_LISTENER=

(SID_LIST =

(SID_DESC =

(GLOBAL_DBNAME = PORT)

(SID_NAME = PORT)

)

)

LISTENER =

(DESCRIPTION =

(ADDRESS = (PROTOCOL = TCP)(HOST = 10.192.215.77)(PORT =1522))

)


而資料庫的例項名稱為Port,透過查詢系統程式的名稱可以確認

$ps -ef|grep ora

。。。。。。

oracle 19261210Dec 09- 16:12 ora_cjq0_Port

oracle22143610Dec 09- 13:55 ora_pmon_Port

oracle28695610Dec 09-7:41 ora_mman_Port

oracle29919010Dec 09- 15:24 ora_mmon_Port


到此找到了問題的根源,原來是資料庫監聽配置檔案的內容配置不當(SID_NAME沒有注意大小寫),導致了透過定義資料庫連線串無法遠端訪問資料庫的故障


三. 問題解決


修改監聽器配置檔案,內容修改如下:

$more $ORACLE_HOME/network/admin/listener.ora

SID_LIST_LISTENER=

(SID_LIST =

(SID_DESC =

(GLOBAL_DBNAME = Port)

(SID_NAME = Port)

)

)

LISTENER =

(DESCRIPTION =

(ADDRESS = (PROTOCOL = TCP)(HOST = 10.192.215.77)(PORT =1522))

)


重新啟動監聽器,如下:

$lsnrctl start listener


在伺服器與客戶端進行資料庫連線,可以成功登入了,如下:

$ sqlplus user1/pwd1@port

SQL*Plus: Release 10.2.0.3.0 - Production on Fri Feb 18 09:44:01 2011

Copyright (c) 1982, 2006, Oracle.All Rights Reserved.

Connected to:

Oracle Database 10g Enterprise Edition Release 10.2.0.3.0 - 64bit Production

With the Partitioning, OLAP and Data Mining options


問題等到解決,筆者重新查閱了ORACLE 的HELP 文件,在network相關的章節,找不到SID_NAME 需要注意大小寫的說明,只能在METALINK文件中可以查到相關的說明。







































































































    我的資料庫ora10g for linux停機後,重啟啟動正常,但應用程式聯入資料庫時失敗報以下錯:
Caused by: java.sql.SQLException: ORA-01034: ORACLE not available 
ORA-27101: shared memory realm does not exist 
Linux Error: 2: No such file or directory 

查詢資料庫是正常的已啟動:
SQL> select status from v$instance;

STATUS
------------
OPEN

SQL> 

透過仔細回想最近對資料庫作了什麼操作,僅修改過profile呀。原profile如下:
#oracle 10g
TMP=/tmp; export TMP
TMPDIR=$TMP; export TMPDIR
ORACLE_BASE=/ora10g/oracle; export ORACLE_BASE
ORACLE_HOME=$ORACLE_BASE/product/10.2/; export ORACLE_HOME
ORACLE_SID=ora10g; export ORACLE_SID
ORACLE_TERM=xterm; export ORACLE_TERM
PATH=/usr/sbin:$PATH; export PATH
PATH=$ORACLE_HOME/bin:$PATH; export PATH
LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/lib; export LD_LIBRARY_PATH
CLASSPATH=$ORACLE_HOME/JRE:$ORACLE_HOME/jlib:$ORACLE_HOME/rdbms/jlib; export CLASSPATH
if [$USER = "oracle" ]; then
    if [ $SHELL = "/bin/ksh" ]; then
       ulimit -p 16384
       ulimit -n 65536
     else
      ulimit -u 16384 -n 65536
    fi
  fi

我在另一次oracle安裝時發現ORACLE_HOME=$ORACLE_BASE/product/10.2/; export ORACLE_HOME這個設定會導致安裝時自動識別出的$ORACLE_HOME會是
$ORACLE_BASE/product/10.2// 所以把原安裝的資料庫profile中的ORACLE_HOME=$ORACLE_BASE/product/10.2/;修改成了ORACLE_HOME=$ORACLE_BASE/product/10.2;最近將老資料重啟之後就應用聯不上了報上面的錯:
Caused by: java.sql.SQLException: ORA-01034: ORACLE not available 
ORA-27101: shared memory realm does not exist 
Linux Error: 2: No such file or directory 

後來將其修改回來就好了。

不過在metalink上查到的都不是上面的解決辦法,覺得很怪   剛重灌了個Oracle 9, 今天用sqlplus連的時候報下面的error: > export ORACLE_SID=OTA26
> sqlplus /nologSQL*Plus: Release 9.2.0.7.0 - Production on Sat Jan 13 16:34:00 2007Copyright (c) 1982, 2002, Oracle Corporation.  All rights reserved.SQL> conn GCSCADMIN/GCSCADMIN
ERROR:
ORA-01034: ORACLE not available
ORA-27101: shared memory realm does not exist
Linux Error: 2: No such file or directory
 查了一下,發現oracle裝在/opt/oracle/product/9ir2下,但是為了方便建立了一個link,是/opt/oracle/9.2.0。在listener.ora裡設定的是 ORACLE_HOME=/opt/oracle/9.2.0,但是在使用者的環境變數裡設定的是 ORACLE_HOME=/opt/oracle/product/9ir2。這樣雖然兩個ORACLE_HOME指向了同一個目錄,但是Oracle會認為這是兩個不同的ORACLE_HOME,從而報錯。 將使用者環境變數和listener.ora裡的ORACLE_HOME設成完全一樣的就可以避免這個error     ORA-27101: shared memory realm does not exist  

2010-12-01 15:18:00|  分類:oracle問題|  標籤:|字號大中小 

csdn網友,求助


引用:
SQL> conn 
請輸入使用者名稱: gzdw 
輸入口令: 
ERROR: 
ORA-01034: ORACLE not available 
ORA-27101: shared memory realm does not exist 
SQL> conn /as sydba 
已連線到空閒例程。 
SQL> select * from v$instance 
2 ; 
select * from v$instance 

第 1 行出現錯誤: 
ORA-01034: ORACLE not available


SQL> select * from v$instance 
這一句都出錯,是很顯然的問題,資料庫連第一步nomount都還沒有成功,

也就是load spfile檔案還沒有成功,

oracle在啟動的時候,分為三步,詳細可以參考帖子 
層層深入,步步探究-Oracle的啟動模式詳探 

原因可能是 
1. spfile檔案損壞,根據你的提示應該不是 
2. 記憶體設定過大,很有可能是這個問題。

解決方法 
SQL> create pfile='c:mypfile.ora' from spfile; 
File created.

把你的spfile檔案匯出到指定的pfile檔案,開啟pfile檔案 
修改其中的記憶體選項 
sga_target和sga_max_size選項,選擇小一些,修改好後,儲存

然後執行 
SQL>startup pfile='c:mypfile.ora' nomount; 嘗試啟動到nomount 
如果可以啟動到nomount,表示我們已經修改成功,

備份你的spfile檔案,spfile檔案在ORACLE_HOME/database下

備份後 
執行 
SQL>create spfile from pfile='c:mypfile.ora'; 
用pfile生成新的spfile檔案。

現在可以shutdown immediate 
然後用 
SQL>startup q啟動了

 

本文來自CSDN部落格,轉載請標明出處:http://blog.csdn.net/inthirties/archive/2009/09/17/4560897.aspx

 

 

今天正常啟動Oracle服務後,開啟SQL*Plus,用SCOTT登入時提示:

ORA-01034: ORACLE not available

ORA-27101: shared memory realm does not exist。

 

從網上搜了一下,原因肯定是哪個啟動引數出了問題。於是按照如下的步驟解決:

1: 用SYS使用者登入:conn / as sysdba

2:從SPFILE檔案建立PFILE檔案(因為SPFILE檔案是二進位制的,而PFILE是文字檔案)

create pfile='d:\aa.ora' from spfile;

3: 開啟aa.ora檔案,適當修改某些引數。

4:從修改後的PFILE檔案建立SPFILE檔案

create spfile from pfile='d:\aa.ora';

5: 開啟資料庫

startup

 

注意:1:最好在修改修檔案前先備份一下。

2:如何判斷哪個引數不正常呢?可以在修改前先STARTUP一下,應該有提示

 

 

問題描述 
=======

在試圖啟動或連線資料庫的時候 ,Oracle報告下列錯誤: 
ERROR: 
ORA-27101 Shared memory realm does not exist 
ORA-01034 ORACLE not available

基本解釋 
======= 
Error: ORA-27101 
Text: shared memory realm does not exist 
------------------------------------------- 
Cause: Unable to locate shared memory realm 
Action: Verify that the realm is accessible


原因: 
機器加入了域,或者安裝了多個例項 
如何解決 
=======

這個問題其實用一句話就可以說清楚:

ORACLE_HOME或者ORACLE_SID設定不正確。

在以前的版本中,如果 ORACLE_SID不正確,一般都只提示ORA-01034。Oracle 8.1.7 給出一個額外的資訊:ORA-27101。

->如果是Unix,在Shell裡把ORACLE_SID設定正確即可(注意大小寫敏感的問題)。 
  此外,檢查ORACLE_HOME環境變數。如何檢查參考如下的命令:

% echo $ORACLE_SID 
% ps -ef |grep smon

->如果是Windows,一般都是因為系統中有多個例項造成的。

 可以在命令列下  C:\>set ORACLE_SID=DEMO

 把這裡的 DEMO換為你相應的例項名。

 如果還不行的話,檢查登錄檔中的 ORACLE_HOME。


  此外,在Windows環境下有的時候連線不上遠端的資料庫,會報告如此的錯誤。

解決辦法是把 sqlnet.ora檔案中的 
  SQLNET.AUTHENTICATION_SERVICES = (NTS) NTS換為NONE. 
或者使用Net Assistant進入後 本地->概要檔案->Oracle Advanced Security選項卡把NTS從右邊刪除掉。 
最後重新啟動資料庫或者重新啟Oracle的服務就OK了

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

相關文章