国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 數據庫 > Oracle > 正文

oracle開發 TNS-12500的解決過程

2024-08-29 13:41:14
字體:
來源:轉載
供稿:網友

  一 環境:
  
  1 平臺: HP,2G內存 windows 2k advServer sp3 + Oracle 817 獨占模式
  
  2 內存分配相關參數
  
  ..PRocesses................=.350
  ..shared_pool_size.........=.314572800
  ..large_pool_size..........=.614400
  ..java_pool_size...........=.0
  ..db_block_buffers.........=.67372
  ..db_block_size............=.16384
  ..log_buffer...............=.163840
  ..log_checkpoint_interval..=.10000
  ..sort_area_size...........=.52428800
  ..sort_area_retained_size..=.52428800
  ..open_cursors.............=.300
  ..job_queue_processes......=.4
  ..job_queue_interval.......=.10
  ..max_dump_file_size.......=.10240
  
  3 最大并發用戶數:100個左右
  
  二 故障現象:
  
  ....當用戶數達到一定的數量時(30多)客戶端連接服務器時報TNS-12500錯誤,此時已連接到服務器的用戶能正常訪問數據庫。
  
  ....首先查看警告日志文件,未見到明顯錯誤信息。
  
  ....查看listner.log文件,發現如下信息(很多個類似的錯誤記錄,摘兩個上來)
  .........................
  
  02-JUL-2003 10:30:09 * (CONNECT_DATA=(SID=ORCL)(CID=(PROGRAM=***.EXE)(HOST=*******)(USER=*****))) * (ADDRESS=(PROTOCOL=tcp)(HOST=*******)(PORT=1136)) * establish * ORCL * 12500
  TNS-12500: TNS:listener failed to start a dedicated server process
  .TNS-12540: TNS:internal limit restriction exceeded
  ..TNS-12560: TNSrotocol adapter error
  ...TNS-00510: Internal limit restriction exceeded
  ....32-bit Windows Error: 8: Exec format error
  02-JUL-2003 10:30:10 * (CONNECT_DATA=(SID=ORCL)(CID=(PROGRAM=***.EXE)(HOST=*****)(USER=***))) * (ADDRESS=(PROTOCOL=tcp)(HOST=******)(PORT=1203)) * establish * ORCL * 12500
  TNS-12500: TNS:listener failed to start a dedicated server process
  .TNS-12540: TNS:internal limit restriction exceeded
  ..TNS-12560: TNSrotocol adapter error
  ...TNS-00510: Internal limit restriction exceeded
  ....32-bit Windows Error: 8: Exec format error
  .....................
  
  此時,原來已連接上服務器的用戶還能正常使用。查看此時session達到50多個。
  
  ....重啟oracle服務后,能連接新的用戶數,但當并發用戶數達到15個以上時,再次報同樣的錯誤
  
  三 原因分析:
  
  ....系統資源耗竭,意味著系統分配給oracle的內存用盡了。雖然我們有2G的物理內存,但正常情況下系統只能給oracle分配1.3G的內存,這1.3G的內存中,包括了SGA、PGA等oracle需要使用的全部內存。在獨占模式下,每一個用戶將單獨分配50M(Sort_area_size)左右的內存。在本例中,UGA分配了約2G,按每一個用戶分配50M內存計算,連接數達到15個時,總分配內存已達到2G,將不能再增加新的連接數。假如要解決這個問題,在不做大的調整的前提下,要么減小SGA大小,要么減小為每一個會話分配的內存大小,以能連接更多的用戶。
  
  四 解決過程:
  
  ....查閱了oracle文檔,文檔里提出來了幾個解決的辦法:
  
  1 重置init.ora參數文件,調小以下四個參數的值:
  
  ....sort_area_size
  ....hash_area_size
  ....bitmap_merge_area_size
  ....create_bitmap_area_seze
  ....open_cursone
  
  2 減小oracle Job隊列數量(job_queue_processes)和并發隊列數(parallel_max_servers)
  
  3 重置并減小會話/線程使用的堆棧大小
  
  4 將oracle改為mts模式
  
  ....結合本實例的具體情況,決定調整的主要目標為減小用戶的PGA大小。

  
  ....構成PGA的主要內容有sort_area_size, hash_area_size, open_cursor, 以及oracle 堆棧和TNS 堆棧。在本實例中,排序區為64K,hash區為128K(缺少值),打開的游標數與應用有關,不能隨便減小了,然而oracle堆棧和TNS堆棧都是1M,卻有較大的減小的余地。因此,調整的目標定為減小這兩個堆棧的大小。
  
  ....使用orastack 命令來減小這兩個堆棧的大小:
  
  D:/oracle/ora81/bin>orastack oracle.exe 500000
  Couldn't open file with CreateFile()
  GetLastError() == 32
  
  ....停止oracle服務和TNS服務,再運行以上命令
  
  D:/oracle/ora81/bin>orastack oracle.exe 500000
  
  Dump of file oracle.exe
  
  Current Reserved Memory per Thread = 1048576
  Current Committed Memory per Thread = 4096
  
  New Reserved Memory per Thread = 500000
  
  D:/oracle/ora81/bin>orastack tnslsnr.exe 500000
  
  Dump of file tnslsnr.exe
  
  Current Reserved Memory per Thread = 1048576
  Current Committed Memory per Thread = 4096
  
  New Reserved Memory per Thread = 500000
  
  重新啟動oracle服務和TNS服務,打開數據庫,用戶連接到服務器,經測試,用戶數到50以上時數據庫仍然運行正常,解決了本實例存在的問題。
  
  五 小結
  
  ....事實上,正如oracle文檔所指出的那樣,要增加用戶連接數的途徑很多,除了減小用戶堆棧之外,還可以減小SGA,或者是更改成MTS方式,或者是使用第三方工具增加oracle可用內存。在本安全應用中,宜將兩者(減小用戶堆棧與增加oracle可用內存)結合起來使用,以提高數據庫性能。但是,這種方式下,同樣不可能無限制地增加用戶連接數。要想使用戶連接數達到更大,則應使用MTS方式。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 乐都县| 缙云县| 上思县| 竹山县| 蓬安县| 广安市| 化德县| 水富县| 屏东市| 长武县| 龙陵县| 新余市| 丰顺县| 阳西县| 板桥市| 合江县| 株洲县| 平果县| 吴忠市| 武冈市| 康平县| 盱眙县| 扶沟县| 会同县| 武平县| 临漳县| 义乌市| 晋江市| 富顺县| 寿宁县| 昌邑市| 洪洞县| 连云港市| 驻马店市| 商河县| 乌拉特后旗| 满洲里市| 怀来县| 炉霍县| 景洪市| 阿坝县|