Oracle並發串連數的設定

來源:互聯網
上載者:User

不能串連Oracle資料庫了,提示相關的錯誤

OERR: ORA-12519 TNS:no appropriate service handler found
用戶端串連間歇性失敗,報錯ORA-12519 

Cause: the listener could not find any available service handlers that are

       appropriate for the client connection.  

Action: run "lsnrctl services" to ensure that the instance(s) have registered

        with the listener, and are accepting connections. 檢查lsnrctl service ,instance已經註冊,

 狀態顯示ready時,可以串連。 

When the listener believes the current number of connections has reached maximum load,

it may set the state of the service handler for an instance to "blocked" and begin refusing

incoming client connections with either of the following errors: ora-12519 or ora-12516

 

採用服務動態註冊的方式,由PMON 通過SERVICE_UPDATE 來得到目前串連情況,但SERVICE_UPDATE 有時間間隔,

所以,listener顯示的串連數和當前實際的串連數可能不同。 

查詢解決方案: 

查看一下資料庫現有的進程數,是否已經達到參數processes的大小。 

1.select count(*) from v$process;                         取得資料庫目前的進程數。

2.select value from v$parameter where name = 'processes'; 取得進程數的上限。

3.如已達到上限,修改initSID.ora中的processes的大小。

4.重新啟動資料庫到nomount狀態下,執行create spfile from pfile; 並startup open。 

查詢資料庫自啟動以來最大的並發數量

 修改最大串連數:
alter system set processes = 300 scope = spfile;

重啟資料庫:
shutdown immediate;
startup;

--查看當前有哪些使用者正在使用資料
SELECT osuser, a.username,cpu_time/executions/1000000||'s', sql_fulltext,machine
from v$session a, v$sqlarea b
where a.sql_address =b.address order by cpu_time/executions desc;

 

2

有的時候我們需要調整oracle資料庫的最大連結數,而這個連結數的調整是在oacle下的dbs目錄下init.ora檔案中調整的。

    ORACLE的串連數(sessions)與其參數檔案中的進程數(process)有關,它們的關係如下:

         sessions=(1.1*process+5)

    但是我們增加process數時,往往資料庫不能啟動了。這因為我們還漏調了一個unix系統參數:它是核心參數中的semmns,這是unix系統的訊號量參數。每個process會佔用一個訊號量。semmns調整後,需要重新啟動unix作業系統,參數才會生效。不過它的大小會受制於硬體的記憶體或ORACLE SGA。範圍可從200——2000不等。

 

 

    但是,Processes的修改不僅應該調整init<sid>.ora檔案中的參數,而且應該調整OS的核心參數,象AIX,HPUX,Solaris,SCO,UNIXWare都是這樣,OS的調整是需要重新啟動的,而且這個參數的設定不能簡單按照多少個終端要連到這個伺服器上而定,最關鍵是考慮會有多少同時連上的session(在使用一些共用串連的中介軟體時,一般就不需要太大),當然還要考慮一些Oracle的後台進程,還有一些系統維護工作需要多一些串連等。 

    我的atmp大前置機器上對oracle調整的時候,其使用的是unixware作業系統,在做連結數調整的時候,要先對核心參數進行調整。 

    核心主要相關的參數的調整如下: 

SHMMAX    1000000000

SHMMIN    1

SHMMNI    200 

SHMSEG    15 

SEMMNI    1000 

SEMMSL    300 

SEMMNS    230

SEMOPM    20 

其中semmni,semmns,semmsl要加大,至少要比processes大18 ; 

SEMMNI(10,10000;150):指定在核心中訊號識別的數量。這是可以在任意給定時間被啟用的唯一訊號設定數量。預設值是150。最大值由系統自動調整產生。

 SEMMSL(25,300;150):指定每個訊號識別中訊號量的最大值。預設值是25。

SEMMNS 除最大db外的所有db 的PROCESSES之和+2*最大db的PROCESSES+10* 

執行個體數。如3個執行個體進程數分別為100、100、200,則=(100+100)+2*200+10*3=630 

tyle="LINE-HEIGHT: 150%; FONT-FAMILY: 宋體">SEMOPM(10,20;10):指定在每個系統調用semop中能夠被執行的訊號操作量的最大值。預設值是10。

     SHMMAX(131072,1073741824;524288):指定了共用記憶體部分大小的最大值。等於0.5 

× 實體記憶體位元組數 

SHMMNI(10,1000;100):指定了系統範圍內共用記憶體標識的最大值。 

SHMSEG(6,15;6):指定了與每個進程相關連的共用記憶體塊(或標識)的數量。預設值是6。與每個進程相關連的共用記憶體塊的最大值與進程擁有的未使用空間有關。因此,儘管一個進程擁有少於SHMSEG數值的共用記憶體塊,它也有可能因為其有限的空間而不能與其它進程相聯絡。 

init.ora中調整為: 

processes = 50                                           # SMALL 

#processes = 100                                            # MEDIUM  

# processes = 200                                            # LARGE  

From:http://gerrywxy.spaces.live.com/blog/cns!10FE174F8521A5F!206.entry 

修改oracle 150 的最大串連數

使用sys,以sysdba許可權登入:

c:"sqlplus /nolog

SQL>conn / as sysdba 

SQL> show parameter processes; 

NAME TYPE VALUE

------------------------------------ ----------- ------------------------------

aq_tm_processes integer 1

db_writer_processes integer 1

job_queue_processes integer 10

log_archive_max_processes integer 1

processes integer 150 

SQL> alter system set processes=300 scope = spfile; 

系統已更改。 

SQL> show parameter processes; 

NAME TYPE VALUE

------------------------------------ ----------- ------------------------------

aq_tm_processes integer 1

db_writer_processes integer 1

job_queue_processes integer 10

log_archive_max_processes integer 1

processes integer 150 

SQL> create pfile from spfile; 

檔案已建立。

 重啟資料庫,OK!

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.