Naming Method 설정 김동오 -1-
목적 Host Naming과 Local Naming의 차이점 Oracle Net Configuration Assistant의 사용 간단한 연결 문제 해결 방법 -2-
Naming Method란? Oracle Net이 제공하는 Naming Method Host Naming Local Naming Directory Naming Oracle Names External Naming -3-
Network 관련 파일 복사 접속 생성 테스트 cd network/admin cp /ocp/network/* ./ 203.252.164.200 dba번호/dba번호 생성 테스트 sqlplus “/ as sysdba” Select 이용한 검색 cd network/admin cp /ocp/network/* ./ -4-
Host Naming 클라이언트는 다음과 같은 경우에 host name을 이용하여 서버에 연결 Oracle Net Services Client 소프트웨어를 이용하여 오라클 데이타베이스 서비스에 연결 TCP/IP 프로토콜을 이용 DNS, /etc/hosts 파일을 이용한 host name <-> IP 주소 전환 연결 관리자, 보안 옵션이 사용할 수 없음 -5-
Host Naming : Client Side -6-
Host Naming : Server Side -7-
Host Naming 예제 listener.ora 파일 클라이언트 SID_LIST_LISTENER = (SID_LIST = (SID_DESC = (GLOBAL_DBNAME = ORCL.konkuk.ac.kr) (ORACLE_HOME = C:\oracle\ora92) (SID_NAME = ORCL) ) 클라이언트 sqlplus scott/tiger@ORCL.konkuk.ac.kr 개인 컴퓨터에서 테스트 할 경우에는 WINDOWS\System32\drivers\etc\hosts 파일을 수정해야 함 -8-
Naming Methods 설정 Oracle Net Configuration Assistant or Oracle Net Manager -9-
Naming Methods 설정 -10-
Local Naming Local Naming 분산 환경에서의 로컬 이름지정(Local Naming) 사용의 단점 클라이언트가 접속할 서버의 이름을 tnsnames.ora 파일에 기록 분산 환경에서의 로컬 이름지정(Local Naming) 사용의 단점 tnsnames.ora 파일이 대용량 분산 환경에서 사용될 경우 많은 문제들이 나타남 변경사항들은 네트워크 노드들 간에 효율적으로 전파되어야 함 tnsmames.ora 파일 내용의 정확성이 유지되어야 함 급속한 변경이 발생할 때 추가적인 관리 시간 및 리소스들이 요구됨 일관성은 모든 노드들 사이에서 유지되어야 함 -11-
Local Net Service Name 구성 tnsnames.ora 파일을 수정 연결하고자 하는 데이타베이스 서비스의 이름 지정 예를 들어 원격지의 jinny2000.konkuk.ac.kr에 있는 데이타베이스 서비스의 이름을 ORCL1으로 지정했다면 sqlplus scott/tiger@ORCL1으로 접속 가능 -12-
클라이언트에서의 문제 해결 클라이언트에서의 오류 메시지들 12154 : tnsnames.ora 파일을 점검(오류, 파일 존재 여부 등) 12198, 12203 : 네트워크 점검, ADDRESS 파라미터 점검 12533 : ADDRESS 파라미터 점검 12541 : 리스너 연결 상태 점검, tnsping 이용 -13-
listener.ora 설정 [dba01@mars dba01]$ vi network/admin/listener.ora (DESCRIPTION_LIST = (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = mars)(PORT = 1522)) ) SID_LIST_LISTENER = (SID_LIST = (SID_DESC = (GLOBAL_DBNAME = dba01.konkuk.ac.kr) (ORACLE_HOME = /ocp/dba01) (SID_NAME = dba01) [dba01@mars dba01]$ lsnrctl start -14-
tnsnames.ora 설정 [dba01@mars dba01]$ vi network/admin/tnsnames.ora (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = mars)(PORT = 1522)) ) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = dba01.konkuk.ac.kr) [dba01@mars dba01]$ sqlplus system/manager@dba01 -15-
요약 Host Naming과 Local Naming의 차이점 Oracle Net Configuration Assistant 설정 Host Naming 설정 Local Naming 설정 Net Service Name 설정 문제 해결 방법 -16-
Oracle Shared Server의 사용 및 설정 김동오 -17-
목적 Oracle Shared Server의 구조 Oracle Shared Server의 설정 관련된 Data Dictionary -18-
서버의 설정 Dedicated Server Process Shared Server Process -19-
Dedicated Server Processes -20-
Oracle Shared Server -21-
Oracle Shared Server 사용의 장점 하나의 인스턴스에 대한 프로세스 수를 줄일 수 있음 사용 가능한 사용자의 수를 늘일 수 있음 로드 밸런싱 사용 서버 프로세스의 수를 줄임 메모리 사용과 시스템의 오버헤드를 줄임 -22-
Dedicated Server의 사용 배치 작업일 경우에 유리함 Sysdba로 접속해야 시작, 종료, 복구를 수행할 수 있음 -23-
연결 -24-
Request 수행 절차 -25-
SGA와 PGA Dedicated Server: User Session 데이터는 PGA에 저장 Shared Server : User Session 데이터가 SGA에 저장 SGA와 PGA 전용 서버를 사용하는지 또는 공유 서버를 사용하는지 여부에 따라 SGA(시스템 글로벌 영역)와 PGA(프로그램 글로벌 영역) 내용이 달라집니다. • 모든 SQL 문의 텍스트와 구문이 분석된 폼은 SGA에 저장됩니다. • 커서 상태는 검색한 행과 같은 SQL 문에 대한 런타임 메모리 값을 포함합니다. • 사용자 세션 데이터는 보안과 자원 사용 정보를 포함합니다. • 스택 공간은 프로세스 지역 변수를 포함합니다. -26-
Oracle Shared Server의 구성 초기화 파라미터 DISPATCHERS SHARED_SERVERS 부가적인 초기화 파라미터 MAX_DISPATCHERS MAX_SHARED_SERVERS CIRCUITS SHARED_SERVER_SESSIONS -27-
DISPATCHERS 디스패쳐의 수와 프로토콜을 지정 -28-
MAX_DISPATCHERS 동시에 실행되는 최대 디스패쳐의 수를 입력 초기에 실행된 디스패쳐의 수를 늘이려면 ALTER SYSTEM 명령을 이용 최대 디스패쳐의 개수 = CEIL(Maximun number of concurrent sessions/Connections per dispatcher) V$CIRCUIT, V$DISPATCHER ALTER SYSTEM SET DISPATCHER=‘(PROTOCOL=TCP)(DISPATCHER=3)’; -29-
SHARED_SERVERS 인스턴스 시작 시에 생성되는 Shared server의 수를 지정 ALTER SYSTEM SET SHARED_SERVERS = 2 초기 공유 서버 프로세스 수는 낮게 산정하는 것이 가장 좋습니다. 추가 공유 서버는 필요한 경우에 자동으로 시작되며 장기간 휴지 상태로 있으면 자동으로 할당이 해제됩니다. -30-
MAX_SHARED_SERVERS 시작할 수 있는 Shared server의 최대 개수를 지정 요청 대기열의 길이에 따라 공유 서버를 동적으로 할당할 수 있습니다. -31-
CIRCUITS 가상 회로는 디스패처와 서버를 통해 이루어지는 데이터베이스에 대한 사용자 연결입니다 수신 및 송신 네트워크 세션에 사용할 수 있는 가상 회로의 총 수를 지정합니다. 전체 SGA 크기에 영향을 줍니다. Oracle 공유 서버가 구성된 경우 CIRCUITS의 값은 SESSIONS의 값과 일치하며 그렇지 않은 경우 이 값은 0이 됩니다. -32-
SHARED_SERVER_SESSIONS 특정 시점에 동시에 열려 있는 공유 서버 세션의 총 수 허용되는 Oracle 공유 서버 사용자 세션의 총 수 이 매개변수를 설정하면 전용 서버에 대해 사용자 세션을 예약할 수 있습니다. 기본값은 CIRCUITS와 SESSIONS -5중에서 더 작은 값에서 파생 -33-
-34-
Shared Server 설정(서버) [dba01@mars]$ vi dbs/initdba01.ora #맨 밑에 주석 처리된 부분에서 주석을 삭제하고 원하는 숫자로 수정 dispatchers="(PROT=TCP) (DISPATCHERS=2)" shared_servers=2 max_dispatchers=3 max_shared_servers=4 [dba01@mars]$ sqlplus “/ as sysdba” SQL> shutdown SQL> startup [dba01@mars]ps –aux | grep dba01 dba01 16748 0.1 0.2 88272 6152 ? S 23:46 0:00 ora_s000_dba01 dba01 16750 0.1 0.2 88272 6152 ? S 23:46 0:00 ora_s001_dba01 dba01 16752 0.1 0.3 88156 6484 ? S 23:46 0:00 ora_d000_dba01 dba01 16754 0.1 0.3 88156 6492 ? S 23:46 0:00 ora_d001_dba01 설정 확인 다음을 실행하여 인스턴스가 시작될 때 디스패처가 리스너에 등록되었는지 확인합니다. $ lsnrctl services 단일 연결을 설정하여 공유 서버를 사용하여 연결된 후에 V$CIRCUIT 뷰를 질의하여 공유 서버 연결 당 하나의 항목만 표시되는지 확인합니다. 프로세스 확인 -35-
Shared Server 설정(클라이언트) [dba01@mars]$ vi network/admin/tnsnames.ora DBA01 = (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = mars)(PORT = 1522)) ) (CONNECT_DATA = (SERVER = DEDICATED) -> 삭제 (SERVICE_NAME = dba01.konkuk.ac.kr) [dba01@mars]$ vi network/admin/tnsnames.ora (SERVER = DEDICATED) 삭제 [dba01@mars]$ sqlplus system/manager@dba01 <- shared server mode로 접속 -36-
프로세스 검색 SQL> select name, status from v$shared_server; NAME STATUS ---- ---------------- S000 WAIT(COMMON) S001 WAIT(COMMON) SQL> select name, status from v$dispatcher; D000 WAIT D001 WAIT SQL> select * from v$queue; PADDR TYPE QUEUED WAIT TOTALQ -------- ---------- ---------- ---------- ---------- 00 COMMON 0 0 0 5188D11C DISPATCHER 0 0 0 5188D4CC DISPATCHER 0 0 0 -37-
관련 매개변수 Oracle 공유 서버의 영향을 받으며 조정이 필요할 수 있는 기타 매개변수는 다음과 같습니다. LARGE_POOL_SIZE SESSIONS -38-
동적 성능 뷰 -39-
요약 Oracle Shared Server 구성 Shared Server와 관련된 동적 성능 뷰 -40-