[ sql*plus 명령어 모음 ]


0. sqlplus접속

    c:\sqlplus scott/tiger

    c:\sqlplus sys/oracle  as sysdba    --이때 sys 사용자는 반드시 normal, sysdba, sysoper 중 하나로 접속해야 됨

 

1. 화면 설정

    > set linesize 200;   --조회결과를 200 자까지 넓혀줌. (cmd창 width도 조절필요)

 

2. SQL 수행 Log 파일 저장

    > save idx(파일명)  --최근에 수행된 sql문장이 idx.sql 파일에 저장됨

                                --저장파일 위치 : cmd창에서 sqlplus수행했던 경로에 저장 됨

    > save idx replace   --기존에 파일이 존재 시 replace함.

    > ed idx        --저장된 sql문장들을  메모장으로 보여줌

    > @idx         --저장된 파일을 읽어서 실행시켜줌.


    > set sqlprompt "_USER>"  --현재 접속 user id로 prompt를 설정


    > spool on   --spool 설정

    > spool T1(파일명)  --수행된 sql문장, 결과를 T1파일에 저장

                       --저장파일 위치 : cmd창에서 sqlplus수행했던 경로에 저장 됨

                      --spool off를 해야만 파일에 sql수행내역이 저장 됨

    > spool T1 append   --T1파일이 기 존재시 append함

    > spool off   --spool 설정 해제

                      --이때 sql수행내역이 저장 됨

 

3. Prompt

    > SET SQLPROMPT "_USER>"     --prompt를 접속user로 변경

    > set time on/off                          --프롬프트에 현재 시간 조회 및 제외

 

 

4. 실행계획

    . 실행계획 초기 설정 : 별도 문서 존재

    > set autotrace on                          --sql수행시 실행계획 조회 on

    > set timing on                                --sql 수행결과 시간 조회

 

    > show parameter optimizer           --optimizer_mode 보기

       - CHOOSE            : CBO, RBO 자동 선택 옵션

       - ALL_ROWS         : 전체 data가 빨리 나오는 기반으로 실행계획 생성 옵션.

       - FIRST_ROWS     : 첫번째 data가 빨리 나오는 기반으로 실행계획 생성 옵션.

       - FIRST_ROWS_n : n개  data가 빨리 나오는 기반으로 실행계획 생성 옵션.

 

70. 사용자추가 및 사용자내용 변경

    > create user dev

       identified by dev

       password expire;                      --사용자 추가

                                                         --expire : 첫 login시 바로 pw변경

    > alter user dev identified by "tiger";  --dev 사용자에 대한 password 변경

 

    . system> alter user scott     --약 v11부터는 scott 사용자는 존재 하지만 lock했음.

                                                 --그래서 scott사용자를 사용하려면 unlock을 해야 됨

        identified by tiger     --식별자를 tiger 로 설정(pw)

        account unlock;      --scott 계정 unlock 해제 (마지막 라인에는 ; [세미콜론 필요]

 

80. 권한 부여

    > grant create session to dev;

    > grant connect, resource to dev;   --접속권한 부여

    > grant plustrace to dev;              --dev에 plustrace권한 부여 (실행계획 권한부여)

 

 

81. 권한부여(테이블)

    > grant select on scott.emp to dev;  --dev에 scott.emp 테이블 select 권한부여

    > grant create table to dev;              --테이블 생성권한 부여

    > grant all      on scott.emp to dev;  --scott.emp 테이블의 모든 권한을 dev에 부여

 

    > alter user 유저명 default tablespace users quota unlimited on users;  --tablepsace권한부여

 

90. 설치환경 확인

    > show user

    > show parameter

    > show parameter background       --background가 포함된 parameter조회

    > show parameter user_dump_dest --dump 경로


91. 진단도구 

    - background process가 남기는 log

    - 시스템에 대한 이상징후 및 처리 결과등을 남김

    > show parameter user_dump_dest --dump 경로

      --경로path : C:\app\user\diag\rdbms\orcl\orcl\trace

    > show parameter core_dump

    > show parameter 


91. 진단도구2

    - 정의 : 보통 DB Server의 부하는 하루 중 특정시간대가 존재한다.

             그래서 부하가 시작하기 전과 부하가 종료한 후의 상태를 서로 비교해서 DB를 관리할 수 있다.

    - 진단방법 : 성능에 이슈가 있는 시점(시간)에 이유를 찾기 위해서 사용하는 도구

    - 진단정의 : 특정시간대의 DB Server에대한 상태를 관리(테이블에 저장)

    - 성능이슈 : 회사에서 보통 성능이슈가 있는 시간대가 동일(비슷)하다.

                  그래서 성능이슈가 발생하기 이전시점 ~ 종료시점 까지의 DB상태를 점검할 수 있다.

  

   - 성능이슈 이전시점 : 현상태 저장(시작)(테이블을 생성하여 사용되는 SQL문장등의 상태를 저장)

      >@C:\app\user\product\11.2.0\dbhome_1\RDBMS\ADMIN\utlbstat.sql


   - 성능이슈 발생종료시점 : 현상태 저장(종료)(임시테이블의 내용을 Report로 생성. 임시테이블 삭제)

      >@C:\app\user\product\11.2.0\dbhome_1\RDBMS\ADMIN\utlestat.sql


   - 최종결과는 sqlplus를 수행했던 폴더에  'report.txt' 파일로 생성됨

     . 시작시점의 상태와 종료시점의 상태를 저장해서 두 자료를 비교해서 DB의 차이점을 비교 분석

   - 만약, 파일이 만들어지지 않는다면  cmd창을 수행할때 '관리자권한으로 실행'하기로 하면 됨


   - 단점 : . utlbstat.sql 파일을 수행하면 임시테이블인 $ 테이블들이 생성 됨

             . sys 계정으로 만들기 때문에 항상 일반사용자보다 사용/성능에 우선순위가 부여되어

               일반사용자는 성능이 늦어 진다.

             . sys tablespace쪽에 만들어짐

   - 위 단점을 보완 : statspack package 도구 존재

   - 참고 : 진단시작(utlbstat.sql 수행)을 시작했다고 해서 그때 부터 계속 진단테이블에 저장하는것은 아니다.

            이때 당시의 상태를 snapshop형태로 저장해 놓고, 

            이후 특정시점에 이전 snapshop정보와 서로 비교해서 분석자료를 만들어 낸다.


91. 진단도구2 - report.txt 파일 보기

    . 테이블 : stats$lib; 에 대한 결과

    . GETS : 요청

    . GET HIT RATI : 요청에 대한 memory에서 찾은 비율


92. 진단도구2 - statspack package

    - 정의 : 중요한 포인트(특정시점)마다 DB Server의 상태를 저장 함.

             각 시점간의 DB정보를 기준으로 서로 비교해서 차이점을 분석,비교해준다.

    - 장점 : utlbstat.sql 진단도구의 단점을 보안해서 나옴.

    - 파일 : spcreate.sql

    -수행. 진단시작

     . 사용자생성 : PERFSTAT

     . 성능테스트용 : sp package 생성  (desc statspack)

    >@C:\app\user\product\11.2.0\dbhome_1\RDBMS\ADMIN\spcreate.sql


    - db상태 저장

      . snap 과 snap간의 상태를 볼 수 있음.

    PERFSTAT>desc statpack            --생성된 sp package보기

    PERFSTAT>exec statspack.snap;    --현재의 db상태를 snapshop형태로 찍어서 저장

    PERFSTAT>exec statspack.snap;    --매일 하루에 한번식 수행


   - snapshop 정보 보기

     . 위쪽에 snapshop 목록이 보여줌.

     . 각 snapshop간에 db 상태정보를 볼 수 있다.

    PERFSTAT>@C:\app\user\product\11.2.0\dbhome_1\RDBMS\ADMIN\spreport.sql


    - statspace 도구 삭제

    SYS>@C:\app\user\product\11.2.0\dbhome_1\RDBMS\ADMIN\spdrop.sql


    - statspack package : schedular에 등록하기

      . 등록sql :   select instance_number into :instno from v$instance;

  dbms_job.submit(:jobno, 'statspack.snap;', trunc(sysdate+1/24/60,'MI'), 'trunc(SYSDATE+1/24,''HH'')', TRUE, :instno);


        . 앞쪽에 있는 날짜는 : 맨 첫 schedular가 시작하는 시간

        . 뒤쪽에 있는 날짜는 : 맨 첫 schedular가 수행된 후 계속 반복되는 수행간격 시간

                                 (예, SYSDATE+1/24/60  이렇게 한 경우 1분 간격으로 계속 수행 됨)

        . 만약, spauto.sql를 수행했는데 ' ..파일을 열 수 없습니다.' 라는 메세지가 나오면

         cmd창을 새로 열어서 'perfstat' user로 재 login하면 됨

         - 참고, autotrace 가 on 상태인 경우에 안될 수 있음. (set autorace off 수행 하면 됨)

    > @C:\app\user\product\11.2.0\dbhome_1\RDBMS\ADMIN\spauto.sql


   - statspace 테이블 목록 보기

     . 단점 : 너무 많이 나옴

   > SELECT * FROM TAB;

   

   - schedular 삭제

   >select job, what from user_jobs;   --job 목록보기

   >DESC DBMS_JOB

   >EXEC DBMS_JOB.REMOVE(23)    --job 제거



99. 기타

    > HOST       --sqlplus를 빠져 나와서 CMD창으로 이동.

                       --cmd창에서   EXIT를 하면 다시 sqlplus창으로 이동 함

 

    > connect sys/oracle as sysdba   --dba권한으로  sys계정 login

    > startup force                       --db restart. sys만 가능


    > ALTER SESSION SET NLS_LANGUAGE='AMERICAN';  --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
Oracle-튜닝 1일차  (0) 2018.01.13
Posted by 농부지기
,