2016년 8월 19일 금요일

03day SQL tunning

오라클 인스턴스
SGA (system global area) : 공용메모리
                                   오라클을 키면 확보하고있음, 컴터 느려지는 것에 주범

SP (server process) : 클라이언트 요청을 대신 처리해줌
listener: 클라이언트가  SP를 찾아가기 위해서 listener를 통함
          1521 port번호가 리스너와 연결하는 것

--listener.ora파일에서 서버가 통신을위해 처리할 것을 적음
C:\app\user\product\11.2.0\dbhome_1\NETWORK\ADMIN
--localhost 외에 DB서버에 접속을 허용하는 IP를 적음


--사이트 아이피 찾기
C:\Users\user>ping www.daum.net
Ping www.g.daum.net [117.52.2.238] 32바이트 데이터 사용:

--네임서버에 들리지 않고 바로 사이트에 접속하는 법
    C:\Windows\System32\drivers\etc\hosts
    해킹할때 자기싸이트로 접속하도록 하기위해 씀


--listener.ora 파일 관리자권한 묻지 않도록 보안수준 떨어뜨리는 법


--클라이언트쪽 DB연결 처리는 tnsnames
C:\app\user\product\11.2.0\dbhome_1\NETWORK\ADMIN
--찾아가고자 하는 컴퓨터 IP 적음


--연결되는지 확인
C:\Users\user>tnsping db1 3
--기본적으로 방화벽 때문에 접속이 불가함

--방화벽 예외 정해줌
인바운드규칙: 내 PC로 들어오려고하는 것 제어
oracle로 들어오는 것 허용
리스너 허용
포트번호 허용

접속 되는지 확인
C:\Users\user>tnsping db1 3

--다른서버  DB연결
C:\Users\user>sqlplus scott/tiger@db1
--한번연결되면 listener process는 더이상 관여하지 않음

--listener프로세스 종료하는 법
C:\Users\user>lsnrctl
LSNRCTL> stop
--listener를 종료하면 oracle신규접속이 불가함, 이미접속한 연결은 유지됨

--listener프로세스 시작하는 법
LSNRCTL> start
--listener프로세스 상태보기 (언제 껐다 켰는지 볼 수 있음)
LSNRCTL> status

--리스너 재시작하면 DB도 껏다 켜줘야함
C:\Users\user>sqlplus system/oracle
--모든 접속자가 나가야 꺼짐
SQL> shutdown
--사용자 작업한것을 디스크에 저장하고 끔, 트랜젝션이 안끝난것은 rollback 됨
SQL> shutdown immediate
--즉시 끔 (긴급할 때 외에는 쓰지 않음)
SQL> shutdown abort
--system 권한으로 끄지 못함
--sys로 접속하면서 끄는 권한을 os로 받아와야함
SQL> conn sys/oracle as sysdba
--DB끔
SQL> shutdown abort
--DB 킴
C:\Users\user>sqlplus sys/oracle as sysdba
SQL> startup
--DB는 SGA로 3G메모리를 할당함
--껏다킴
SQL> startup force

--윈도우 운영체제에서 오라클,리스너를 껏다킴 (오라클에서 껏다켜는것보다 우선)

Connection : SP (server process)와 연결된 상태

  • 접속하면 사용자의 권한을 데이터 딕셔너리에서 검사하고 연결해줌
  • 일반적으로 실행문이 검사하는 부분보다 시간이 짧고 자주 일어남, 그러면 데이터베이스 과부하  ▶ 해결하기 위해 connection pool


SGA(system global area)

  • shared pool
    • 사용자의 sql문장이 올라감
  • data buffer cache
    • table에 대한 정보가 올라감
    • cache --임시저장소
    • buffer --속도차이를 극복
  • read log buffer
  • java pool
  • ...

PGA(private global area)  : 클라이언트 마다 개별적으로 메모리 할당

  • session info : 권한정보
  • cursor state : 커서 상태
    • open
    • fetch
    • close
  • stack space : 
  • sort area :
    -select * from emp oreder by sal; 쿼리문을 쓰면 공유메모리의 테이블을 정렬하는것이 아니라 PGA로 가져와서 정렬하는 공간
    -정렬할 필요없으면 안하는 게 좋음, 정렬하는 시간이 있으면 느려짐

댓글 없음:

댓글 쓰기