본문 바로가기

데이터베이스/Oracle

Oracle 10g XE(Express Edition)의 프로세스 및 세션 늘리는 방법

TNS-12519: TNS:no appropriate service handler found

위와 같은 에러가 발생하는 원인은 여러가지 일수 있으나 연결할 프로세스 또는 세션이 부족한 경우에도 발생한다.

다음과 같이 SQLPLUS에 접속하여 정보를 확인하고 프로세스나 세션이 임계치(limit)에 근접할경우 프로세스와 세션을 늘려준다.
만약 초기 설정하고 아무것도 변경하지 않은 경우 프로세스는 40, 세션은 49로 되어 있으며 여기에서는 100으로 설정할 계획이다.

변경순서
1. 프로세스 및 세션의 임계치를 확인한다.
2. 프로세스 및 세션의 임계치를 늘려준다.
3. 데이터베이스를 재시작한다.

1. 프로세스 및 세션의 임계치 확인

$> sqlplus / as sysdba
SQL> select * from v$resource_limit;

2. 프로세스 및 세션의 임계치 변경

프로세스 및 세션에 대한 설정값은

/usr/lib/oracle/xe/app/oracle/product/10.2.0/server/dbs/spfileXE.ora

에 정보가 있다. (/usr/lib/oracle/xe/app/oracle는 설치경로)

위의 파일을 직접 수정하는 방법도 있으나 아래와 같이 SQL 로 처리할 수 있다.

ALTER SYSTEM SET <parameter>=<value> SCOPE=SPFILE ;

예)
SQL> ALTER SYSTEM SET processes=100 SCOPE=SPFILE ;
SQL> ALTER SYSTEM SET sessions=100 SCOPE=SPFILE ;

3. 데이터베이스 재시작

SQL> shutdown immediate
SQL> startup

아래는 변경전후 파일내용이다.


변경전.
XE.__db_cache_size=20971520
XE.__java_pool_size=4194304
XE.__large_pool_size=12582912
XE.__shared_pool_size=763363328
XE.__streams_pool_size=0
*.aq_tm_processes=0
*.audit_file_dest='/usr/lib/oracle/xe/app/oracle/admin/XE/adump'
*.background_dump_dest='/usr/lib/oracle/xe/app/oracle/admin/XE/bdump'
*.compatible='10.2.0.1.0'
*.control_files='/usr/lib/oracle/xe/oradata/XE/control.dbf'
*.core_dump_dest='/usr/lib/oracle/xe/app/oracle/admin/XE/cdump'
*.db_name='XE'
*.DB_RECOVERY_FILE_DEST_SIZE=10G
*.DB_RECOVERY_FILE_DEST='/usr/lib/oracle/xe/app/oracle/flash_recovery_area'
*.dispatchers='(PROTOCOL=TCP) (SERVICE=XEXDB)'
*.job_queue_processes=0
*.open_cursors=300
*.os_authent_prefix=''
*.pga_aggregate_target=268435456
*.remote_login_passwordfile='EXCLUSIVE'
*.sessions=40
*.sga_target=805306368
*.shared_servers=4
*.undo_management='AUTO'
*.undo_tablespace='UNDO'
*.user_dump_dest='/usr/lib/oracle/xe/app/oracle/admin/XE/udump'

변경후.
XE.__db_cache_size=20971520
XE.__java_pool_size=4194304
XE.__large_pool_size=12582912
XE.__shared_pool_size=763363328
XE.__streams_pool_size=0
*.aq_tm_processes=0
*.audit_file_dest='/usr/lib/oracle/xe/app/oracle/admin/XE/adump'
*.background_dump_dest='/usr/lib/oracle/xe/app/oracle/admin/XE/bdump'
*.compatible='10.2.0.1.0'
*.control_files='/usr/lib/oracle/xe/oradata/XE/control.dbf'
*.core_dump_dest='/usr/lib/oracle/xe/app/oracle/admin/XE/cdump'
*.db_name='XE'
*.DB_RECOVERY_FILE_DEST_SIZE=10G
*.DB_RECOVERY_FILE_DEST='/usr/lib/oracle/xe/app/oracle/flash_recovery_area'
*.dispatchers='(PROTOCOL=TCP) (SERVICE=XEXDB)'
*.job_queue_processes=0
*.open_cursors=300
*.os_authent_prefix=''
*.pga_aggregate_target=268435456
*.processes=100
*.remote_login_passwordfile='EXCLUSIVE'
*.sessions=100
*.sga_target=805306368
*.shared_servers=4
*.undo_management='AUTO'
*.undo_tablespace='UNDO'
*.user_dump_dest='/usr/lib/oracle/xe/app/oracle/admin/XE/udump'