Windows平臺下不能建立資料庫連線出錯分析 (1)
Windows平臺下不能建立資料庫連線出錯分析
本文可以任意轉載,轉載時請務必以超連結形式標明文章原始出處和作者資訊及本宣告
http://blog.itpub.net/post/11/5157
1. 簡介
本文簡要介紹了windows平臺下客戶端連線出錯(比如發生TNS-12500錯誤等)的一些可能原因以及相關的解決辦法。
. 實驗
平臺:
Windows 2003 Enterprise Edition 32bit
4G記憶體
資料庫版本:
Oracle Database 10g Enterprise Edition Release 10.1.0.2.0 - Prod
PL/SQL Release 10.1.0.2.0 - Production
CORE 10.1.0.2.0 Production
TNS for 32-bit Windows: Version 10.1.0.2.0 - Production
NLSRTL Version 10.1.0.2.0 – Production
A. processes引數
D:>sqlplus / as sysdba
SQL*Plus: Release 10.1.0.2.0 - Production on 星期一 11月 15 13:19:54 2004
Copyright (c) 1982, 2004, Oracle. All rights reserved.
連線到:
Oracle Database 10g Enterprise Edition Release 10.1.0.2.0 - Production
With the Partitioning, OLAP and Data Mining options
-- 如果processes設定太低會由於不能啟動後臺程式而使資料庫啟動失敗
SQL> alter system set processes=10 scope=spfile;
系統已更改。
SQL> shutdown abort
ORACLE 例程已經關閉。
SQL> startup
ORA-00444: background process "CJQ0" failed while starting
ORA-00020: maximum number of processes () exceeded
SQL> shutdown abort
ORACLE 例程已經關閉。
-- 設定為20重新生成spfile,重啟資料庫
SQL> create spfile from pfile='c:init.ora';
檔案已建立。
SQL> startup
ORACLE 例程已經啟動。
Total System Global Area 1862270976 bytes
Fixed Size 791640 bytes
Variable Size 543419304 bytes
Database Buffers 1317011456 bytes
Redo Buffers 1048576 bytes
資料庫裝載完畢。
資料庫已經開啟。
SQL>
-- 執行資料庫連線測試指令碼(後臺建立200個連線)
-- 指令碼見:
-- 前臺連線出錯
-- 伺服器本地
D:>sqlplus test/test
SQL*Plus: Release 10.1.0.2.0 - Production on 星期一 11月 15 14:31:14 2004
Copyright (c) 1982, 2004, Oracle. All rights reserved.
ERROR:
ORA-00020: 超出最大程式數 (%s)
請輸入使用者名稱:
-- 遠端客戶端出錯資訊
sql> conn test/test@test10gnew
ERROR:
ORA-12516: TNS: 監聽程式無法找到匹配協議棧的可用控制程式碼
-- 客戶端與伺服器端出錯資訊截然不同,小心給錯誤資訊誤導
B. TNS-12540與windows平臺下Oracle的記憶體管理
注:假定不對Oracle使用記憶體進行擴充套件/客戶端使用專用伺服器模式連線
眾所周知, 對於32位的os,每個程式可以訪問的最大記憶體空間是2的32次方,即4G.每個程式的記憶體由user space和kernal space兩個元件組成.user space可以使用的記憶體空間最大為2g。對於oracle,可使用的記憶體空間大概是1.7G左右。要注意的是:專用會話(以專用資料庫連線建立的會話)的記憶體在sga之外的記憶體空間分配,但仍然在oracle.exe程式之內。如果sga分配過大的話,雖然連線數遠遠還沒有達到初始化引數processes指定的數值,但客戶端仍然不能連線到資料庫。看如下實驗:
SQL> show parameter processes
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
aq_tm_processes integer 0
db_writer_processes integer 1
gcs_server_processes integer 0
job_queue_processes integer 10
log_archive_max_processes integer 2
processes integer 1000
SQL> show sga
Total System Global Area 1862270976 bytes
Fixed Size 791640 bytes
Variable Size 543419304 bytes
Database Buffers 1317011456 bytes
Redo Buffers 1048576 bytes
SQL>
-- 執行連線測試指令碼
-- 檢視session的數目
sql> select server,count(*) from v$session group by server;
SERVER COUNT(*)
--------- ----------
DEDICATED 76
-- 檢視pga統計資訊
> set heading off
> set linesize 200
> column name format a50
> column unit format a10
> SELECT * FROM V$PGASTAT;
aggregate PGA target parameter 2097152000 bytes
aggregate PGA auto target 1864074240 bytes
global memory bound 104857600 bytes
total PGA inuse 24580096 bytes
total PGA allocated 69429248 bytes
maximum PGA allocated 78424064 bytes
total freeable PGA memory 0 bytes
PGA memory freed back to OS 0 bytes
total PGA used for auto workareas 0 bytes
maximum PGA used for auto workareas 0 bytes
total PGA used for manual workareas 0 bytes
maximum PGA used for manual workareas 0 bytes
over allocation count 0
bytes processed 3193856 bytes
extra bytes read/written 0 bytes
cache hit percentage 100 percent
已選擇16行。
-- 伺服器端連線出錯
SQL> conn test/test
ERROR:
ORA-12560: TNS: 協議介面卡錯誤
-- 客戶端連線出錯
sql> conn test/test@test10gnew
ERROR:
ORA-12500: TNS: 監聽程式無法啟動專用伺服器程式
警告: 您不再連線到 ORACLE。
-- 猜想當前oracle.exe所能使用的記憶體大小為1862270976(sga)+ 78424064(pga)
> select 1862270976+ 78424064 from dual;
1862270976+78424064
-------------------
1940695040
> select 1940695040/1024/1024/1024 from dual;
1940695040/1024/1024/1024
-------------------------
1.8074131
-- 大約是1.8G.
-- 為何不是2g而是1.7g左右?可能是因為餘下的0.2-0.3g記憶體由於操作過程中建立連線/斷開連線造成內部記憶體碎片而不能使用.
-- 在本例中,進一步實驗可以獲得sga_max_size的最大大小
SQL> alter system set sga_max_size=1776m scope=spfile;
系統已更改。
SQL> shutdown abort
ORACLE 例程已經關閉。
SQL> startup
ORACLE 例程已經啟動。
Total System Global Area 1862270976 bytes
Fixed Size 791640 bytes
Variable Size 543419304 bytes
Database Buffers 1317011456 bytes
Redo Buffers 1048576 bytes
資料庫裝載完畢。
資料庫已經開啟。
SQL> alter system set sga_max_size=1792m scope=spfile;
系統已更改。
SQL> shutdown abort
ORACLE 例程已經關閉。
SQL> startup
ORA-27102: out of memory
OSD-00022: 附加錯誤資訊
O/S-Error: (OS 8) 儲存空間不足,無法處理此命令。
SQL>
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/6906/viewspace-21635/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Windows平臺下不能建立資料庫連線出錯分析(2)Windows資料庫
- 資料庫連線不能建立.資料庫
- 不能建立sqlserver資料庫連線SQLServer資料庫
- 連線資料庫出錯???資料庫
- Windows平臺下建立asmWindowsASM
- asp網站提示資料庫連線出錯網站資料庫
- 資料庫連線分析(1)-從JDBC到MyBatis資料庫JDBCMyBatis
- 不能連線資料庫如何解決資料庫
- Visual Studio 2008不能建立資料庫連線出現的問題資料庫
- HP-UX平臺下11.2.0.1資料庫 JDBC連線bug問題UX資料庫JDBC
- windows平臺下Oracle10.2 RMAN資料庫遷移至Linux平臺下WindowsOracle資料庫Linux
- 開啟網頁顯示資料庫連線出錯網頁資料庫
- SSL連線建立過程分析(1)
- 不能連線資料庫收集Systemstate Dumps資訊資料庫
- 哪位兄臺幫我看看JIVE安裝問題, 資料庫連線出錯!加急!!!資料庫
- 連線oracle資料庫時,報錯:{dataSource-1} init errorOracle資料庫Error
- 怎麼建立網站連線資料庫網站資料庫
- cacti登陸出現報錯:資料庫無法連線資料庫
- window平臺下手動建立資料庫演示資料庫
- 從linux平臺移值資料庫到windows平臺Linux資料庫Windows
- Linux平臺下Oracle 10.2.0.1 手工建立資料庫過程LinuxOracle資料庫
- 用rman建立dataguard備用資料庫連線報錯!(eygle版主幫忙看一下)資料庫
- Dedecms錯誤警告:連線資料庫失敗,出錯怎麼解決?資料庫
- 財務資料分析不可錯過的大資料分析平臺大資料
- 利用rman來實現linux平臺資料庫複製到windows平臺資料庫Linux資料庫Windows
- windows下ftp出現軟體造成連線終止錯誤WindowsFTP
- 網站連線資料庫配置錯誤網站資料庫
- 網站提示資料庫連線錯誤網站資料庫
- 安裝第三步:連線ORALCE資料庫出錯?資料庫
- Cordys BOP 4.3平臺使用小經驗—資料庫連線管理、匯出流程模型為XPDL資料庫模型
- 1電商平臺零售資料分析
- java 無需建立資料來源連線access資料庫Java資料庫
- java後臺建立url連線,獲取介面資料Java
- 用Navicat連線資料庫-資料庫連線(MySQL演示)資料庫MySql
- 直接複製資料檔案實現linux平臺資料庫複製到windows平臺資料庫Linux資料庫Windows
- 用python建立資料庫監控平臺(1)安裝MySQL5.7Python資料庫MySql
- 連線資料庫資料庫
- 資料庫連線資料庫