교육중 자주쓰는 sql 및 명령어
create index idx_emp_sql on emp(sal);
select index_name, index_type, table_name, uniqueness from user_indexes;
SET LINESIZE 200
SET AUTOTRACE ON
SET SQLPROMPT "_USER>"
SPOOL C:\OracleStudy.TXT APPEND
[ Oracle-튜닝 1일차 ]
고성 (dagda@hanafos.com)
1. 설치
. 1. my oracle support 비밀번호 : oracle
. Database Control URL은 https://localhost:1158/em입니다.
. SID : orcl
2. 계정
. SYS : DB 주인 (집주인)
. SYSTEM : DBA (집사). DB관리자 (pw : system/oracle)
. SCOTT :
1. Performance Tuning
. Modeling
. SQL Statement
. SERVER 증설
. application
. OS 변경 및 Upgrade
2. SQL Statement Tuning
. 튜닝의 대상 : 20vs80
20%의 sql이 80%의 성능을 차지
. 튜닝의 도구 : EXPLAIN PLAN
SQL*TRACE
TKPROF UTILITY
V$ dynamic performmance view
4. bind 변수
> var no number
> begin
:no := 10;
end;
> print no
> select * from Emp where deptno = :no;
> --sql수행결과 조회
> begin
:no := 20;
end;
> print no
> select * from Emp where deptno = :no;
> --sql수행결과 조회
--bind된 sql문은 조건값이 변경되어도 하나의 sql로 인식함.
5. PSEUDO Column (수도컬럼 )
. rowid : row주소 (18자리)
db에서 가장빨리 조회할 수 있는 조건
index block에는 pk와 rowid를 같이 관리하고 있음.
. rownum : row를 disk에서 조회한(읽어낸) 순서
6. connection
. db는 첫 connection이 맺을 때 상당히 많은 자원을 할당해준다.
이때 자원을 할당할 때 시간이 소요된다.
그래서 모든 language들이 connection pool을 관리해서 구축해야 되는 이유다.
===========================================================
1. sql*plus 명령어 저장 및 자동실행
. glogin.sql
- sqlplus를 수행도중 set등으로 환경설정했던 명령어들은 sqlplus를 종료하면
모두 살아짐
- sqlplus에서 set등으로 환경설정했던 명령어들을 sqlplus접속하는 모든 사용자에게 동시에 자동 설정 되도록 할 수 있음.
- 해당 파일 : C:\app\user\product\11.2.0\dbhome_1\sqlplus\admin\glogin.sql
. 파일저장 후자동 set
> ed c:\OracleStudy2.txt --메모장으로 open됨
--메모장에 필요한 sqlplus환경설정들 저장
> @c:\OracleStudy2.txt --해당 파일을 수행함.
- glogin.sql은 sqlplus를 사용하는 모든 사용자에게 공통으로 적용됨.
- @로 실행한 파일처리방식은 나만 sqlplus명령어가 적용됨
===========================================================
2. db alert정보
. C:\app\user\diag\rdbms\orcl\orcl\trace
- alert_orcl.log
. db alert정보임. (db가 on/off되었는지 확인 가능)
. 주기적으로 backup 및 삭제해줘야 됨
(이미지 1)
2. Oracle Server 의 기본구조
. User Process : 사용자
. Server Process : 사용자 연결을 도와주는 Process
. DataBase buffer cache : 사용자가 처음 한번 조회하면 disk에서 조회 후 data buffer cache에 옴
동일한 결과를 원하는 sql인 경우 disk에서 읽지 않고 data buffer cache에서 읽어 옴
. Shared pool
- Syntax check : 사용자가 sql로 결과를 요청하면 제일먼저 Syntax검사
. sql 문법 검사
. schema 권한검사
. schema 존재 여부
. syntax검사할때 tree구조로 만듬.
- Optimizer : syntax검사완료 후 실행계획 작성
현존하는 최고의 AI (알고리즘)
DB가격의 약 1/3 차지함
실행계획을 재 사용하지 않으면 cpu점유율이 상당히 상승됨
- Library Cache에서 sql parsing된 목록 관장
. cache에 동일한 sql인지 여부 : 대소문자 구분. 조건값 구분. 공백구분
bind변수를 이용하면 동일한 하나로 인식
. Hard parsing : sql을 syntax검사 및 실행계획작성
. Soft Parsing : memory에 존재하는 기존 parsing된 sql문장을 재 활용
1. Library Cache
- 수행했던 sql문장이 저장 됨
- 각 sql이 수행될 실행계획이 저장됨
- 저장테이블 : V$SQL
(예, SELECT sql_text, executions FROM V$SQL WHERE sql_text like '%FROM EMP%'; )
- sql_text : sql문장
- executions : 수행횟수
. index 목록
- select index_name, index_type from user_indexes;
2. Data Buffer Cache
- Buffer : 이 기종간의 속도차이를 줄이기 위해서 관리하는 영역.
즉, 느린저장소의 영역을 가져와서 잠시 저장하는 영역
- Cache : 임시저장소
-
4. 진단도구
.
5. oracle - with절
- with절에 sql문자을 기술하면 자료를 조회 후 cashe에 저장 한다.
그런 후 하위에서는 cashe에서 자료를 바로 가져 온다.
- view하고는 많이 다르다.
view를 사용하게 되면 view 기술한 곳에 view의 sql문장 전체를 그대로 복사해서 실행계획이 풀린다.
-
'(DB) Oracle 튜닝 > 쌍용튜닝교육' 카테고리의 다른 글
Oracle-실행계획 개별 (0) | 2018.01.27 |
---|---|
Oracle-튜닝.수행내역 이력을 파일로 저장 (0) | 2018.01.27 |
Oracle-튜닝-index , block (0) | 2018.01.20 |
Oracle-실행계획 (0) | 2018.01.16 |
튜닝-sql*plus 명령어 모음 (0) | 2018.01.16 |