Tibero 유틸리티안내서 Tibero 5 Copyright 2013 TIBERO Co., Ltd. All Rights Reserved.
Copyright Notice Copyright 2013 TIBERO Co., Ltd. All Rights Reserved. 대한민국경기도성남시분당구서현동 272-6 우 ) 463-824 Restricted Rights Legend All TIBERO Software (Tibero ) and documents are protected by copyright laws and the Protection Act of Computer Programs, and international convention. TIBERO software and documents are made available under the terms of the TIBERO License Agreement and may only be used or copied in accordance with the terms of this agreement. No part of this document may be transmitted, copied, deployed, or reproduced in any form or by any means, electronic, mechanical, or optical, without the prior written consent of TIBERO Co., Ltd. 이소프트웨어 (Tibero ) 사용서의내용과프로그램은저작권법, 컴퓨터프로그램보호법및국제조약에의해서보호받고있습니다. 사용서의내용과여기에된프로그램은 TIBERO Co., Ltd. 와의사용권계약하에서만사용이가능하며, 사용권계약을준수하는경우에만사용또는복제할수있습니다. 이사용서의전부또는일부분을 TIBERO의사전서면동의없이전자, 기계, 녹음등의수단을사용하여전송, 복제, 배포, 2차적저작물작성등의행위를하여서는안됩니다. Trademarks Tibero is a registered trademark of TIBERO Co., Ltd. Other products, titles or services may be registered trademarks of their respective companies. Tibero 는 TIBERO Co., Ltd. 의등록상표입니다. 기타모든제품들과회사이름은각각해당소유주의상표로서참조용으로만사용됩니다. Open Source Software Notice This product includes open source software developed and/or licensed by "OpenSSL," "RSA Data Security, Inc.," "Apache Foundation," "Jean-loup Gailly and Mark Adler," and "Paul Hsieh's hash". Information about the afore mentioned and the related open source software can be found in the "${INSTALL_PATH}/license/oss_licenses" directory. 본제품은 OpenSSL, RSA Data Security, Inc., Apache Foundation 및 Jean-loup Gailly와 Mark Adler 및 Paul Hsieh's hash 에의해개발또는라이선스된오픈소스소프트웨어를포함합니다. 관련상세정보는제품의디렉터리 ${INSTALL_PATH}/license/oss_licenses 에기재된사항을참고해주십시오. 안내서정보안내서제목 : Tibero 유틸리티안내서발행일 : 2013-02-25 소프트웨어버전 : Tibero 5 안내서버전 : 2.1.4
내용목차 안내서에대하여... xi 제1장 tbsql... 1 1.1. 개요... 1 1.2. 빠른시작... 1 1.2.1. 실행... 1 1.2.2. 데이터베이스접속... 3 1.2.3. 인터페이스... 4 1.2.4. 환경설정... 5 1.2.5. 종료... 5 1.3. 시스템변수... 5 1.3.1. AUTOCOMMIT... 7 1.3.2. AUTOTRACE... 7 1.3.3. BLOCKTERMINATOR... 8 1.3.4. COLSEP... 8 1.3.5. DDLSTATS... 8 1.3.6. DEFINE... 9 1.3.7. EDITFILE... 9 1.3.8. ESCAPE... 10 1.3.9. FEEDBACK... 10 1.3.10. FILEEXT... 10 1.3.11. FILEPATH... 11 1.3.12. HISTORY... 11 1.3.13. LINESIZE... 11 1.3.14. LONG... 12 1.3.15. NUMWIDTH... 12 1.3.16. PAGESIZE... 12 1.3.17. PROFILE... 13 1.3.18. SERVEROUTPUT... 13 1.3.19. SQLPROMPT... 13 1.3.20. SQLTERMINATOR... 14 1.3.21. TERMOUT... 14 1.3.22. TIME... 15 1.3.23. TIMING... 15 1.3.24. TRIMOUT... 15 1.3.25. TRIMSPOOL... 16 1.3.26. WRAP... 16 1.4. 기본기능... 17 1.4.1. 명령어의입력... 17 1.4.2. 명령어의실행... 19 1.4.3. 기타기능... 20 Tibero iii
1.5. 고급기능... 23 1.5.1. 스크립트기능... 23 1.5.2. DBA를위한기능... 25 1.5.3. 접속정보암호화기능... 25 1.6. 명령어... 27 1.6.1.!... 30 1.6.2. @... 30 1.6.3. /... 31 1.6.4. ACCEPT... 31 1.6.5. CHANGE... 32 1.6.6. CLEAR... 34 1.6.7. COLUMN... 34 1.6.8. CONNECT... 35 1.6.9. DEFINE... 36 1.6.10. DEL... 36 1.6.11. DESCRIBE... 37 1.6.12. DISCONNECT... 38 1.6.13. EDIT... 38 1.6.14. EXECUTE... 39 1.6.15. EXIT... 40 1.6.16. HELP... 40 1.6.17. HISTORY... 40 1.6.18. HOST... 41 1.6.19. INPUT... 41 1.6.20. LIST... 42 1.6.21. LOADFILE... 43 1.6.22. LS... 43 1.6.23. PAUSE... 45 1.6.24. PRINT... 45 1.6.25. PROMPT... 46 1.6.26. QUIT... 47 1.6.27. RUN... 47 1.6.28. SAVE CREDENTIAL... 47 1.6.29. SET... 48 1.6.30. SHOW... 48 1.6.31. SPOOL... 49 1.6.32. START... 50 1.6.33. TBDOWN... 50 1.6.34. UNDEFINE... 51 1.6.35. VARIABLE... 51 1.7. 컬럼포맷... 52 1.7.1. 문자형... 52 1.7.2. 숫자형... 53 iv Tibero 유틸리티안내서
제2장 tbmigrator 2.0... 55 2.1. 개요... 55 2.2. 화면... 55 2.2.1. Main 화면... 56 2.2.2. Option 화면... 61 2.2.3. Progress 화면... 64 2.2.4. Report 화면... 66 2.3. 이관대상... 67 2.4. 수행예제... 70 제3장 tbexport... 77 3.1. 개요... 77 3.2. 특징... 78 3.3. 빠른시작... 78 3.3.1. 실행전준비사항... 78 3.3.2. Export 모드... 79 3.3.3. 실행... 80 3.4. 명령프롬프트에서의파라미터지정... 80 3.4.1. 파라미터목록... 81 3.5. 수행예제... 83 제4장 tbimport... 85 4.1. 개요... 85 4.2. 빠른시작... 85 4.2.1. 실행전준비사항... 85 4.2.2. Import 모드... 86 4.2.3. 실행... 87 4.3. 수행방법... 88 4.3.1. 제약조건이있는테이블 Import... 88 4.3.2. 호환이가능한테이블 Import... 88 4.3.3. 이미존재하는테이블에데이터 Import... 88 4.4. 명령프롬프트에서의파라미터지정... 89 4.4.1. 파라미터목록... 90 4.5. 수행예제... 93 제5장 tbloader... 95 5.1. 개요... 95 5.2. 빠른시작... 95 5.3. 입출력파일... 95 5.3.1. 컨트롤파일... 96 5.3.2. 데이터파일... 96 5.3.3. 로그파일... 98 5.3.4. 오류파일... 98 5.4. 로드방식... 99 5.5. 제약조건... 99 Tibero v
5.5.1. 동일한구분자의사용... 99 5.5.2. ESCAPED BY 옵션값을지정하지않은경우... 100 5.6. 공백정책... 100 5.6.1. 필드값전체가공백인경우... 100 5.6.2. 필드값일부가공백인경우... 100 5.6.3. 필드값의공백을데이터로인식하려는경우... 101 5.7. 명령프롬프트에서의파라미터지정... 101 5.7.1. 파라미터목록... 102 5.8. 컨트롤파일의옵션지정... 105 5.8.1. CHARACTERSET 구문... 106 5.8.2. INFILE 구문... 107 5.8.3. LOGFILE 구문... 107 5.8.4. BADFILE 구문... 108 5.8.5. 기존데이터처리방법... 108 5.8.6. PRESERVE BLANKS 구문... 109 5.8.7. 테이블지정방법... 110 5.8.8. 인덱스생성방법... 110 5.8.9. FIELDS 구문의 TERMINATED BY 구문... 111 5.8.10. FIELDS 구문의 OPTIONALLY ENCLOSED BY 구문... 111 5.8.11. FIELDS 구문의 ESCAPED BY 구문... 113 5.8.12. LINES 구문의 FIX 구문... 113 5.8.13. LINES 구문의 STARTED BY 구문... 114 5.8.14. LINES 구문의 TERMINATED BY 구문... 115 5.8.15. TRAILING NULLCOLS 구문... 115 5.8.16. IGNORE LINES 구문... 116 5.8.17. 대상컬럼및속성... 117 5.8.18. 주석삽입... 123 5.9. 수행예제... 123 5.9.1. 분리된레코드형태... 124 5.9.2. 고정된레코드형태 - 레코드구분자가 EOL 문자인경우... 127 5.9.3. 고정된레코드형태 - 고정된길이의레코드인경우... 129 5.9.4. 대용량객체형데이터를포함하는경우... 132 제6장 유틸리티 API... 137 6.1. 헤더파일... 137 6.2. 구조체... 137 6.3. 유틸리티 API 목록... 141 6.3.1. TBConnect... 142 6.3.2. TBDisconnect... 142 6.3.3. TBExport... 143 6.3.4. TBImport... 146 색인... 151 vi Tibero 유틸리티안내서
그림목차 [ 그림 2.1] Main 화면... 56 [ 그림 2.2] Full Mode 선택방식... 57 [ 그림 2.3] Schema Mode 선택방식... 57 [ 그림 2.4] Table Mode 선택방식... 58 [ 그림 2.5] Option 화면... 61 [ 그림 2.6] Progress 화면... 64 [ 그림 2.7] Report 화면... 66 [ 그림 2.8] 마이그레이션 - 초기화면... 70 [ 그림 2.9] 마이그레이션 - 소스데이터베이스접속정보입력... 71 [ 그림 2.10] 마이그레이션 - 타깃데이터베이스접속정보입력... 72 [ 그림 2.11] 마이그레이션 - Migration Options 입력화면... 73 [ 그림 2.12] 마이그레이션 - 선택하지않고실행한경고창... 73 [ 그림 2.13] 마이그레이션 - 선택후실행... 74 [ 그림 2.14] 마이그레이션 - 마이그레이션진행... 74 [ 그림 2.15] 마이그레이션 - Report 화면... 75 [ 그림 2.16] 마이그레이션 - 마이그레이션과정완료... 76 [ 그림 2.17] 마이그레이션 - 완료화면... 76 [ 그림 3.1] Export 모드... 79 [ 그림 4.1] Import 모드... 86 Tibero vii
예목차 [ 예 1.1] tbsql 유틸리티의실행... 2 [ 예 1.2] tbsql 유틸리티를이용한데이터베이스접속... 3 [ 예 3.1] tbexport 유틸리티의실행... 80 [ 예 3.2] tbexport 유틸리티를이용한 Export의실행... 83 [ 예 4.1] tbimport 유틸리티의실행... 87 [ 예 4.2] tbimport 유틸리티를이용한 Import의수행... 93 [ 예 5.1] tbloader 유틸리티의실행... 95 [ 예 5.2] 명령프롬프트에서지정할수있는 tbloader 유틸리티의파라미터... 102 Tibero ix
안내서에대하여 안내서의대상 본안내서는 Tibero ( 이하 Tibero) 에서제공하는각종유틸리티를사용하려는모든데이터베이스사용자 를대상으로기술한다. 안내서의전제조건 본안내서를원활히이해하기위해서는다음과같은사항을미리알고있어야한다. 데이터베이스의이해 RDBMS 의이해 SQL 의이해 Eclipse 툴의이해 Eclipse 툴의사용방법은웹사이트 (http://www.eclipse.org/documentation) 나관련문서를참고한다. 안내서의제한조건 본안내서는 Tibero 를실무에적용하거나운용하는데필요한모든사항을포함하고있지않다. 따라서설 치, 환경설정등운용및관리에대해서는각제품안내서를참고하기바란다. 참고 Tibero 의설치및환경설정에관한내용은 "Tibero 설치안내서 " 를참고한다. 안내서에대하여 xi
안내서구성 Tibero 유틸리티안내서는총 6개의장으로구성되어있다. 각장의주요내용은다음과같다. 제1장 : tbsql 대화형 SQL 명령어처리유틸리티인 tbsql을소개하고사용방법을기술한다. 제 2 장 : tbmigrator 2.0 기존데이터베이스를 Tibero 로변경해주는마이그레이션유틸리티인 tbmigrator 2.0 을소개하고사용 방법을기술한다. 제 3 장 : tbexport Tibero 에저장된데이터베이스객체의전체또는일부를추출하여저장하는유틸리티인 tbexport 를소 개하고사용방법을기술한다. 제 4 장 : tbimport tbexport 에의하여생성된 Export 파일로부터데이터베이스객체를 Tibero 데이터베이스에저장하는유 틸리티인 tbimport 를소개하고사용방법을기술한다. 제 5 장 : tbloader 대량의데이터를한번에 Tibero 데이터베이스에적재하기위한유틸리티인 tbloader 를소개하고사용 방법을기술한다. 제 6 장 : 유틸리티 API Tibero 의유틸리티를애플리케이션프로그램에서호출할때필요한함수를기술한다. xii Tibero 유틸리티안내서
안내서규약 표기 <AaBbCc123> <Ctrl>+C [Button] 진하게 " "( 따옴표 ) ' 입력항목 ' 하이퍼링크 > +---- ---- 참고 의미프로그램소스코드의파일명, 디렉터리 Ctrl과 C를동시에누름 GUI의버튼또는메뉴이름강조다른관련안내서또는안내서내의다른장및절언급화면 UI에서입력항목에대한메일계정, 웹사이트메뉴의진행순서하위디렉터리또는파일있음하위디렉터리또는파일없음참고또는주의사항 [ 그림 1.1] [ 표 1.1] AaBbCc123 그림이름 표이름 명령어, 명령어수행후화면에출력된결과물, 예제코드 { } [ ] 필수인수값 옵션인수값 선택인수값 안내서에대하여 xiii
시스템사용환경 요구사항 Platform HP-UX 11i (PA-RISC, ia64) Solaris (SPARC 9/Solaris 9) AIX (PPC 5L/AIX 5.3) GNU (X86, 64, IA64) Linux kernel 2.6 이상 Windows(x86) 32bit/64bit Hardware 최소 1.5GB 하드디스크공간 512MB 이상메모리공간 Compiler PSM (C99 지원필요 ) tbesql/c (C99 지원필요 ) xiv Tibero 유틸리티안내서
관련안내서 안내서 Tibero 설치안내서 Tibero tbcli 안내서 Tibero 애플리케이션개발자안내서 Tibero External Procedure 안내서 Tibero JDBC 개발자안내서 Tibero tbesql/c 안내서 Tibero tbesql/cobol 안내서 Tibero tbpsm 안내서 Tibero tbpsm 참조안내서 Tibero 관리자안내서 Tibero tbadmin 안내서 Tibero 설치시필요한시스템요구사항과설치및제거방법을기술한안내서이다. Call Level Interface인 tbcli의개념과구성요소, 프로그램구조를소개하고 tbcli 프로그램을작성하는데필요한데이터타입, 함수, 에러메시지를기술한안내서이다. 각종애플리케이션라이브러리를이용하여애플리케이션프로그램을개발하는방법을기술한안내서이다. External Procedure를소개하고이를생성하고사용하는방법을기술한안내서이다. Tibero에서제공하는 JDBC 기능을이용하여애플리케이션프로그램을개발하는방법을기술한안내서이다. C 프로그래밍언어를사용해데이터베이스작업을수행하는각종애플리케이션프로그램을작성하는방법을기술한안내서이다. COBOL 프로그래밍언어를사용해데이터베이스작업을수행하는각종애플리케이션프로그램을작성하는방법을기술한안내서이다. 저장프로시저모듈인 tbpsm의개념과문법, 구성요소를소개하고, tbpsm 프로그램을작성하는데필요한제어구조, 복합타입, 서브프로그램, 패키지와 SQL 문장을실행하고에러를처리하는방법을기술한안내서이다. 저장프로시저모듈인 tbpsm의패키지를소개하고, 이러한패키지에포함된각프로시저와함수의프로토타입, 파라미터, 예제등을기술한참조안내서이다. Tibero의동작과주요기능의원활한수행을보장하기위해 DBA가알아야할관리방법을논리적또는물리적측면에서하고, 관리를지원하는각종도구를기술한안내서이다. SQL/PSM 처리와 DBA를위한시스템관리기능을제공하는 GUI 기반의툴인 tbadmin을소개하고, 설치및사용방법을기술한안내서이다. Tibero를사용하는도중에발생할수있는각종에러의원인과해결방법을기술한안내서이다. 안내서에대하여 xv
안내서 에러참조안내서 Tibero 참조안내서 Tibero SQL 참조안내서 Tibero의동작과사용에필요한초기화파라미터와데이터사전, 정적뷰, 동적뷰를기술한참조안내서이다. 데이터베이스작업을수행하거나애플리케이션프로그램을작성할때필요한 SQL 문장을기술한참조안내서이다. xvi Tibero 유틸리티안내서
연락처 Korea TIBERO Co., Ltd. 272-6, Seohyeon-dong, Bundang-gu, Seongnam-si, Gyeonggi-do, 463-824 South Korea Tel: +82-31-779-7113 Fax: +82-31-779-7119 Email: info@tmax.co.kr Web (Korean): http://www.tibero.com 기술지원 : http://technet.tmax.co.kr USA TmaxSoft, Inc. 560 Sylvan Avenue Englewood Cliffs, NJ 07632 U.S.A Tel: +1-201-567-8266 Fax: +1-201-567-7339 Email: info@tmaxsoft.com Web (English): http://www.tmaxsoft.com Japan TmaxSoft Japan Co., Ltd. 5F Sanko Bldg, 3-12-16 Mita, Minato-Ku, Tokyo, 108-0073 Japan Tel: +81-3-5765-2550 Fax: +81-3-5765-2567 Email: info@tmaxsoft.co.jp Web (Japanese): http://www.tmaxsoft.co.jp 안내서에대하여 xvii
China TmaxSoft China Co., Ltd. Beijing Silver Tower, RM 1508, 2# North Rd Dong San Huan, Chaoyang District, Beijing, China, 100027 China Tel: +86-10-6410-6145~8 Fax: +86-10-6410-6144 Email: info.cn@tmaxsoft.com Web (Chinese): http://www.tmaxsoft.com.cn xviii Tibero 유틸리티안내서
제 1 장 tbsql 본장에서는 tbsql 유틸리티를소개하고사용방법을한다. 1.1. 개요 tbsql은 Tibero ( 이하 Tibero) 에서제공하는 SQL 문장을처리하는대화형유틸리티이다. 이유틸리티로 SQL 질의, 데이터정의어 (Data Definition Language, 이하 DDL), 트랜잭션과관련된 SQL 문장을실행할수있다. 또한, PSM 프로그램을생성하고실행할수있으며 DBA는 Tibero의시스템관리를위한명령을실행할수있다. tbsql은이러한기본기능외에도자동커밋을설정하거나운영체제관련명령어의실행, 출력저장, 스크립트기능등을제공한다. 특히스크립트기능은여러 SQL 문장및 PSM 프로그램, tbsql 유틸리티의명령어를하나의스크립트파일로생성할수있어편리하다. tbsql 유틸리티는 Tibero 의유틸리티중에서가장빈번히사용되는것중의하나이며, SQL 문장의실행이외에다음과같은기능을제공한다. 일반적인 SQL 문장및 PSM 프로그램의입력, 편집, 저장, 실행 트랜잭션의설정및종료 스크립트를통한일괄작업의실행 DBA에의한데이터베이스관리 데이터베이스의기동및종료 외부유틸리티및프로그램의실행 tbsql 유틸리티의환경설정 1.2. 빠른시작 tbsql 유틸리티는 Tibero 를설치하는과정에서함께설치되며, Tibero 를제거하면함께제거된다. 1.2.1. 실행 tbsql 유틸리티를실행하는방법은다음과같다. 제 1 장 tbsql 1
[ 예 1.1] tbsql 유틸리티의실행 $ tbsql tbsql 5 Copyright (c) 2001-2011 Tibero Corporation. All rights reserved. SQL> tbsql 유틸리티가정상적으로실행되면위예제처럼 SQL 프롬프트가나타난다. 이프롬프트에서데이터 베이스사용자는 SQL 문장을실행할수있다. tbsql 유틸리티를실행하는명령어의문법은다음과같다. tbsql [[options] [connect_string] [start_script]] 다음은 options 에사용할수있는항목이다. 항목 -h, --help -v, --version -s, --silent -i, --ignore 도움말화면을출력한다. 버전을출력한다. 화면에시작메시지와프롬프트를출력하지않는다. 로그온스크립트 (tbsql.logon) 를실행하지않는다. connect_string 는 Tibero 에접속하려는사용자의계정에대한정보를포함하며, 다음과같은형식으로 지정한다. username[/password[@connect_identifier]] 다음은 connect_string 에사용할수있는항목이다. 항목 username password connect_identifier 사용자명으로, 대소문자를구분하지않는다. 단, 큰따옴표 (" ") 에사용자명을입력하는경우는예외이다. 패스워드로, 대소문자를구분하여입력한다. 데이터베이스에대한접속정보를가진 DSN(Data Source Name) 이다. 2 Tibero 유틸리티안내서
start_script 는 tbsql 유틸리티의시작과함께실행할스크립트파일을설정할수있으며, 다음과같은형 식으로지정한다. @filename[.ext] 다음은 start_script 에사용할수있는항목이다. 항목 filename ext 파일명이다. 파일의확장자로, 지정하지않을경우 FILEEXT 시스템변수에지정된확장자가기본값이다. 1.2.2. 데이터베이스접속 tbsql 유틸리티를실행하고나서 SQL 프롬프트가나타나면데이터베이스에접속할수있는상태가된다. tbsql 유틸리티는데이터베이스의세션을시작하기전에수행해야할작업이있을경우, 반드시 tbsql.login 파일을작성해야한다. 이파일이현재디렉터리에있는경우에는바로실행하고, 그렇지않은경우에는환경변수 TB_SQLPATH에설정된디렉터리에서찾는다. tbsql 유틸리티를이용하여데이터베이스에접속하는방법은다음과같다. [ 예 1.2] tbsql 유틸리티를이용한데이터베이스접속 $ tbsql SYS/syspassword tbsql 5 Copyright (c) 2001-2011 Tibero Corporation. All rights reserved. Connected. SQL> 위예에서는 UNIX 셸프롬프트에서 tbsql 유틸리티의실행과함께사용자명과패스워드를입력한다. 사용자명과패스워드를입력할때에는다음과같은규칙이있다. 항목 사용자명 패스워드 스키마객체의이름과마찬가지로대소문자를구분하지않는다. 단, 큰따옴표 (" ") 에사용자명을입력하는경우는예외다. 패스워드는대소문자를구분하므로입력할때주의해야한다. 제 1 장 tbsql 3
1.2.3. 인터페이스 다음은 tbsql 유틸리티를실행했을때의화면이다. $ tbsql tbsql 5 Copyright (c) 2008, 2009, 2011, 2012 Tibero Corporation. All rights reserved. SQL> CONNECT dbuser Enter password : dbuserpassword Connected to Tibero. SQL> 위의예에서는 tbsql 유틸리티를실행한뒤 CONNECT 명령어를통해 dbuser라는사용자명으로데이터베이스에접속했다. tbsql 유틸리티는이처럼텍스트모드의화면에서입력을받고, 사용자의요구에따라결과를출력한다. 참고본안내서에서는특별한경우를제외하고는모든 SQL 문장과 PSM 프로그램, tbsql 유틸리티의명령어를대문자로표현한다. 명령어의파라미터로소문자가사용된경우는다른파라미터로확장될수있는경우이다. tbsql 유틸리티는다음과같은특성을가진인터페이스로실행한다. tbsql 유틸리티가정상적으로실행되면 SQL 프롬프트가출력된다. 프롬프트에서 SQL 문장, PSM 프로그램, tbsql 유틸리티의명령어를입력할수있다. 여러라인에걸쳐입력할수있다. SQL 문장과 PSM 프로그램은입력과실행을분리할수있다. 하지만, tbsql 유틸리티의명령어는입력 과동시에실행된다. 대소문자를구분하지않는다. SQL 문장내의문자열데이터처럼특별한경우를제외하고는대소문자를구분하지않는다. 예를들어, 다음의두문장은서로같은의미이다. SQL> SET AUTOCOMMIT ON SQL> set autocommit on 4 Tibero 유틸리티안내서
1.2.4. 환경설정 tbsql 유틸리티의사용환경을설정하려면 SET 명령어를사용해야한다. SET 명령어를통해 SQL 질의를수행한결과의출력형태, 트랜잭션의커밋여부등을설정할수있다. 다음은 SET 명령어의문법이다. SET [system_variable] [system_variable_value] 참고 자세한내용은 1.3. 시스템변수 를참고한다. 1.2.5. 종료 tbsql 유틸리티를종료하려면 SQL 프롬프트에서 EXIT 또는 QUIT 명령어를입력해야한다. SQL> EXIT 참고 tbsql 유틸리티에서제공하는명령어에대한자세한내용은 1.6. 명령어 를참고한다. 1.3. 시스템변수 본절에서는 tbsql 유틸리티의시스템변수에대하여한다. tbsql 유틸리티의시스템변수에설정할값은 SET 명령어로설정하고, SHOW 명령어로출력한다. 다음은 SET 명령어에서설정할수있는시스템변수를요약한표이다. 시스템변수 AUTOCOMMIT AUTOTRACE BLOCKTERMINATOR COLSEP DDLSTATS DEFINE 기본값 OFF OFF., OFF & 자동커밋여부를설정하는시스템변수이다. 수행중인질의의 Plan이나통계정보를출력할지를설정하는시스템변수이다. PSM 문장에서입력의마지막을나타내는문자를설정하는시스템변수이다. SQL 문장중조회쿼리에대한수행결과를보여줄때컬럼사이를구분하는문자를지정하는시스템변수이다. DDL 문장의 Plan이나통계정보를보여줄지를설정하는시스템변수이다. & 문자열을치환변수로인식할때사용하는시스템변수이다. 제 1 장 tbsql 5
시스템변수 EDITFILE ESCAPE FEEDBACK FILEEXT FILEPATH HISTORY LINESIZE LONG NUMWIDTH PAGESIZE PROFILE SERVEROUTPUT SQLPROMPT SQLTERMINATOR TERMOUT TIME TIMING TRIMOUT TRIMSPOOL WRAP 기본값.tbedit.sql OFF ON sql 현재디렉터리 50 80 80 10 24 OFF OFF SQL> ; ON OFF OFF ON OFF ON EDIT 명령어에서사용하는파일이름의기본값을설정하는시스템변수이다. 이스케이프문자를설정하는시스템변수이다. SQL 문장의수행결과를화면에출력할지를설정하는시스템변수이다. 파일확장자의기본값을설정하는시스템변수이다. 파일경로의기본값을설정하는시스템변수이다. 명령어히스토리의크기를설정하는시스템변수이다. 한라인에출력할문자수를설정하는시스템변수이다. CLOB 타입의데이터를표시하기위해사용할문자수를설정하는시스템변수이다. 숫자형데이터의기본출력길이를설정하는시스템변수이다. 한화면에출력할라인수를설정하는시스템변수이다. SQL 문장을수행할때걸린시간과사용중인메모리의출력여부를설정하는시스템변수이다. DBMS_OUTPUT 패키지의결과를출력할것인지를설정하는시스템변수이다. 화면상의프롬프트문자를설정하는시스템변수이다. SQL 문장을종료하는문자를설정하는시스템변수이다. 스크립트에서수행된명령어의결과를화면에출력할것인지를설정하는시스템변수이다. 현재시간을화면에출력할것인지를설정하는시스템변수이다. SQL, PSM 문장의결과를출력할때마다수행시간을출력할것인지를설정하는시스템변수이다. 화면에출력되는라인뒤에오는공백을제거할것인지를설정하는시스템변수이다. 스풀링중인라인뒤에오는공백을제거할것인지를설정하는시스템변수이다. 출력할라인이긴경우, 나머지를다음라인에출력할것인지를설정하는시스템변수이다. 6 Tibero 유틸리티안내서
다음은시스템변수를설정하는예이다. SET AUTOCOMMIT ON SET PAGESIZE 32 SET TRIMSPOOL ON 1.3.1. AUTOCOMMIT INSERT, DELETE, UPDATE 등의 SQL 문장을실행한후, 자동으로커밋을수행하도록설정한다. AUTOCOMMIT 의세부내용은다음과같다. 문법 SET AUTO[COMMIT] {ON OFF} 항목 ON OFF 자동커밋을수행한다. 기본값으로, 자동커밋을수행하지않는다. OFF 로설정한경우에는명시적으로커밋을수행해야한다. 1.3.2. AUTOTRACE 수행중인질의의 Plan이나통계정보를보여준다. DBA 권한또는 PLUSTRACE 권한이있어야사용할수있다. PLUSTRACE는 AUTOTRACE에필요한특권들이포함된권한으로 DBA권한을가진사용자가생성하여다른사용자에게부여할수있다. 생성스크립트는 $TB_HOME/scripts/plustrace.sql 이다. AUTOTRACE 의세부내용은다음과같다. 문법 SET AUTOT[RACE] {OFF ON TRACE[ONLY]} [EXP[LAIN]] [STAT[ISTICS]] 항목 OFF ON TRACE[ONLY] AUTOTRACE를수행하지않는다. ( 기본값 ) 질의의결과를보여준다. 질의의결과를보여주지않는다. 속도가빠르다. 다음은 Plan 이나통계정보를보여줄지를지정하는옵션이다. 제 1 장 tbsql 7
옵션 아무것도명시하지않으면 Plan 과통계정보를모두보여준다. EXP[LAIN] STAT[ISTICS] Plan 정보를보여준다. 통계정보를보여준다. 1.3.3. BLOCKTERMINATOR PSM 문장에서입력의마지막을나타내는문자를설정한다. BLOCKTERMINATOR 의세부내용은다음과같다. 문법 SET BLO[CKTERMINATOR] {c} 항목 c PSM 프로그램입력을마치는것을나타내는문자이다. ( 기본값 : 마침표 (.)) 1.3.4. COLSEP SELECT 문장을실행한후, 출력되는여러컬럼사이의구분을나타내는문자를설정한다. COLSEP 의세부내용은다음과같다. 문법 SET COLSEP {c} 항목 c 컬럼사이를구분짓는문자이다. ( 기본값 : 콤마 (,)) 1.3.5. DDLSTATS 수행중인 DDL 문장의 Plan 이나통계정보를보여준다. 단주의할점은 AUTOTRACE 기능도반드시활 성화시켜야한다. DDLSTATS 의세부내용은다음과같다. 8 Tibero 유틸리티안내서
문법 SET DDLSTAT[S] {OFF ON} 항목 OFF ON DDLSTATS 를활성화한다. ( 기본값 ) DDLSTATS 를비활성화한다. 1.3.6. DEFINE & 문자열을치환변수로인식할지설정한다. DEFINE 의세부내용은다음과같다. 문법 SET DEF[INE] {OFF ON} 항목 OFF ON DEFINE 을비활성화한다. DEFINE 을활성화한다. ( 기본값 ) 1.3.7. EDITFILE EDIT 명령어에서사용할파일이름의기본값을설정한다. 확장자를생략할경우 FILEEXT 에설정된값을 사용한다. EDITFILE 의세부내용은다음과같다. 문법 SET EDITF[ILE] filename[.ext] 항목 filename[.ext] EDIT 명령어에서사용할파일이름이다. ( 기본값 :.tbedit.sql) 제 1 장 tbsql 9
1.3.8. ESCAPE 치환변수의 & 문자를무시하도록하는이스케이프문자를설정한다. 이스케이프를활성화한뒤, 설정한 이스케이프문자를 &< 문자열 > 앞에붙여쓰면, 치환변수로인식되지않는다. ESCAPE 의세부내용은다음과같다. 문법 SET ESC[APE] {c ON OFF} 항목 c ON OFF 이스케이프문자이다. 이스케이프를활성화한다. 이스케이프를비활성화한다. ( 기본값 ) 1.3.9. FEEDBACK SQL 문장의수행결과를화면에출력할지설정한다. FEEDBACK 의세부내용은다음과같다. 문법 SET FEED[BACK] {ON OFF} 항목 ON OFF FEEDBACK 을활성화한다. ( 기본값 ) FEEDBACK 을비활성화한다. 1.3.10. FILEEXT 파일확장자를생략했을때사용할파일확장자를설정한다. FILEEXT 의세부내용은다음과같다. 문법 SET FILEE[XT] {file_extension} 10 Tibero 유틸리티안내서
항목 file_extension 기본으로사용할파일확장자이다. ( 기본값 :.sql) 1.3.11. FILEPATH 파일의경로를생략했을때사용하는파일의경로를설정한다. FILEPATH 의세부내용은다음과같다. 문법 SET FILEP[ATH] {file_path} 항목 file_path 디폴트로사용할파일의경로이다. ( 기본값 : 현재디렉터리 ) 1.3.12. HISTORY 명령어히스토리의크기를설정한다. HISTORY 의세부내용은다음과같다. 문법 SET HIS[TORY] {n} 항목 n 명령어히스토리의크기이다. ( 기본값 : 50) 1.3.13. LINESIZE 화면상의한라인의길이를설정한다. 라인길이의최소값은 1 이며, 최댓값은운영체제에따라다르다. LINESIZE 의세부내용은다음과같다. 문법 SET LIN[ESIZE] {n} 제 1 장 tbsql 11
항목 n 화면상의한라인의길이이다. ( 기본값 : 80) 1.3.14. LONG CLOB 이나 LONG 타입의데이터를읽어와서출력할길이를설정한다. 길이는 20 억을넘을수없다. LONG 의세부내용은다음과같다. 문법 SET LONG {n} 항목 n 대용량데이터의디폴트출력길이이다. ( 기본값 : 80) 1.3.15. NUMWIDTH NUMBER 타입을출력할길이를설정한다. LINESIZE 를넘을수없다. NUMWIDTH 의세부내용은다음과같다. 문법 SET NUM[WIDTH] {n} 항목 n NUMBER 타입데이터의기본출력길이이다. ( 기본값 : 10) 1.3.16. PAGESIZE tbsql 유틸리티에서출력하는내용이포함되는각페이지내의라인개수를설정한다. PAGESIZE 의세부내용은다음과같다. 문법 SET PAGES[IZE] {n} 12 Tibero 유틸리티안내서
항목 n 한페이지의라인개수이다. ( 기본값 : 24) 1.3.17. PROFILE 마지막으로수행한 SQL 또는 PSM 문장의수행시간과현재 tbsql 유틸리티에서사용중인메모리의크 기를출력할것인지설정한다. PROFILE 의세부내용은다음과같다. 문법 SET PROF[ILE] {ON OFF} 항목 ON OFF PROFILE 을활성화한다. PROFILE 을비활성화한다. ( 기본값 ) 1.3.18. SERVEROUTPUT DBMS_OUTPUT 패키지의결과를출력할것인지설정한다. SERVEROUTPUT 의세부내용은다음과같다. 문법 SET SERVEROUT[PUT] {ON OFF} 항목 ON OFF SERVEROUTPUT 을활성화한다. SERVEROUTPUT 을비활성화한다. ( 기본값 ) 1.3.19. SQLPROMPT 화면상의프롬프트문자를설정한다. SQLPROMPT 의세부내용은다음과같다. 제 1 장 tbsql 13
문법 SET SQLP[ROMPT] {prompt_string} 항목 prompt_string 프롬프트로사용할문자열이다. ( 기본값 : SQL> ) 이문자열을중괄호 ({ }) 로감싸면환경변수로인식된다. 예를들어 '{ISQL_PROMPT}' 이라고지정하면환경변수 $ISQL_PROMPT 의값이 치환되어프롬프트로사용된다. 이때환경변수의이름은대소문자를구분한다. 1.3.20. SQLTERMINATOR SQL 문장을종료하는문자를설정한다. SQLTMINATOR 의세부내용은다음과같다. 문법 SET SQLT[MINATOR} {c} 항목 c SQL 문장의종료를알리는문자이다. ( 기본값 : 세미콜론 (;)) 1.3.21. TERMOUT 스크립트에서수행된명령어의결과를화면에출력할것인지설정한다. TERMOUT 의세부내용은다음과같다. 문법 SET TERM[OUT] {ON OFF} 항목 ON OFF TERMOUT 을활성화한다. ( 기본값 ) TERMOUT 을비활성화한다. 14 Tibero 유틸리티안내서
1.3.22. TIME 프롬프트에현재시간을출력할것인지설정한다. TIME 의세부내용은다음과같다. 문법 SET TI[ME] {ON OFF} 항목 ON OFF TIME 을활성화한다. TIME 을비활성화한다. ( 기본값 ) 1.3.23. TIMING SQL, PSM 문장의실행결과를출력할때마다수행시간을출력할것인지설정한다. TIMING 의세부내용은다음과같다. 문법 SET TIMI[NG] {ON OFF} 항목 ON OFF TIMING 을활성화한다. TIMING 을비활성화한다. ( 기본값 ) 1.3.24. TRIMOUT SQL, PSM 문장의실행결과를출력할때마다모든라인의뒤에오는공백을제거할것인지설정한다. TRIMOUT 의세부내용은다음과같다. 문법 SET TRIM[OUT] {ON OFF} 항목 ON TRIMOUT 을활성화한다. ( 기본값 ) 제 1 장 tbsql 15
항목 OFF TRIMOUT 을비활성화한다. 1.3.25. TRIMSPOOL SQL, PSM 문장의실행결과를스풀링할때마다모든라인의뒤에오는공백을제거할것인지설정한다. TRIMSPOOL 의세부내용은다음과같다. 문법 SET TRIMS[POOL] {ON OFF} 항목 ON OFF TRIMSPOOL 을활성화한다. TRIMSPOOL 을비활성화한다. ( 기본값 ) 1.3.26. WRAP 화면에서출력된라인이 LINESIZE 변수로설정된값보다긴경우, 나머지를다음라인에출력할것인지 아니면 LINESIZE 만큼만출력할것인지설정한다. WRAP 의세부내용은다음과같다. 문법 SET WRA[P] {ON OFF} 항목 ON OFF WRAP 을활성화한다. ( 기본값 ) WRAP 을비활성화한다. 16 Tibero 유틸리티안내서
1.4. 기본기능 tbsql 유틸리티에서주로사용하는기능은 SQL 문장이나 PSM 프로그램을직접입력하여실행하는것 이다. 본절에서는명령어의입력과실행에관하여한뒤, 기타기능에대해서한다. 1.4.1. 명령어의입력 tbsql 유틸리티의명령프롬프트에서의입력은크게 SQL 문장, PSM 프로그램, 유틸리티명령어의세가지로구분할수있다. 명령어의입력방법은대체로서로유사하다. 각명령어를입력하는방법에대하여차례로한다. SQL 문장의입력 다음은 SQL 문장을입력하는방법이다. 일반적인입력일반적인 SQL 문장은 tbsql 유틸리티의프롬프트에서입력한다. 하나의 SQL 문장을여러라인에걸쳐입력할수있으며, SQL 문장의입력을취소하려면빈라인을입력한다. 줄바꿈하나의 SQL 문장을여러라인에걸쳐입력할경우연속된문자열이아닌어떤곳에서도줄바꿈을할수있다. 대개의경우읽기에편하고변경하기에용이하도록절단위로줄바꿈을하여입력하는것이좋다. 주석 (comment) 의삽입 SQL 문장을입력하는중간에주석을삽입할수있다. 주석은두개의마이너스부호 (--) 로시작되며, 그라인의마지막까지포함한다. 주석은그자체만으로하나의라인을형성할수있으며, 한라인에서다른문자열의뒤에올수도있다. 이전에저장된문장을이용하여입력입력한 SQL 문장은 tbsql 유틸리티의 SQL 버퍼에저장된다. 따라서, 같거나유사한 SQL 문장을입력하기위하여이전에저장된문장을이용할수있다. 이전문장을필요에따라변경하면새로운문장으로입력되어 SQL 버퍼에저장된다. SQL 버퍼에는하나의 SQL 문장또는 PSM 프로그램이저장된다. 운영체제에따라서키보드의위쪽방향키 ( ) 나아래쪽방향키 ( ) 를누르면이전에입력한문장을다시불러올수있다. 키를누를때마다이전에저장된문장이한라인씩나타나므로이전에저장된 SQL 문장전체뿐만아니라일부를불러올수있다. 다음은 tbsql 유틸리티에서 SQL 문장을입력하는예이다. 제 1 장 tbsql 17
SQL> SELECT ENAME, SALARY, ADDR FROM EMP -- this is a comment. WHERE DEPTNO = 5; SQL> PSM 프로그램의입력 PSM 프로그램은다수의 SQL 문장또는 PSM 문장으로이루어지며, 각 SQL 문장은세미콜론 (;) 으로마친다. PSM 프로그램을입력하기시작하면 tbsql 유틸리티는자동으로 PSM 프로그램입력모드로전환한다. PSM 프로그램입력모드에서는 SQL 문장의입력이완료되었을때, SQL 문장이개별적으로실행되지않는다. tbsql 유틸리티가 PSM 프로그램입력모드로전환하도록만드는문장에는 DECLARE, BEGIN 등이름없는블록 (anonymous block) 과각각프로시저, 함수, 트리거를생성하는 CREATE (OR REPLACE) PROCEDURE, FUNCTION, TRIGGER가있다. PSM 프로그램에서의입력방법은일반 SQL 문장의경우와유사하다. 다음은 PSM 프로그램을입력하는방법이다. 일반적인입력 PSM 프로그램을여러라인에걸쳐서입력할수있다. SQL 문장의입력을취소하려면빈라인을입력하였으나, PSM 프로그램의입력을취소하려면블록종료문자 (BLOCKTERMINATOR) 를입력한다. 블록종료문자의기본값은마침표 (.) 이다. 블록종료문자는해당문자만한라인에입력해야하며, 다른문자열과함께입력하면안된다. 이전에저장된문장을이용하여입력 한번입력된프로그램은 SQL 버퍼에저장되어다시사용할수있다. 주석의삽입 SQL 문장과같은방식으로주석을삽입한다. 다음은 tbsql 유틸리티에서이름없는블록을입력하는예이다. SQL> DECLARE deptno NUMBER(2); BEGIN deptno := 5; UPDATE EMP SET SALARY = SALARY * 1.05 WHERE DEPTNO = deptno; -- this is a comment. END; 18 Tibero 유틸리티안내서
. SQL> 위의예에서는블록내에한라인의주석이삽입되었으며, END 문장아래의 9번째라인에블록종료문자로마침표 (.) 를입력하여 PSM 프로그램의입력을마쳤다. 마지막라인에서다른문자나문자열없이오직블록종료문자만단독으로한라인을형성하고있는것을확인할수있다. 참고 PSM 사용에대한자세한내용은 "Tibero PSM 안내서 " 를참고한다. tbsql 유틸리티의명령어입력 tbsql 유틸리티의명령어에는 SQL 수행과관련된명령어나기타 Tibero 데이터베이스관리를위한명령 어등이포함된다. tbsql 유틸리티의명령어에대한자세한내용은 1.6. 명령어 를참고한다. 1.4.2. 명령어의실행 tbsql 유틸리티의명령프롬프트에입력된명령어를실행하는방법은다음과같은세가지가있다. SQL 버퍼에저장된 SQL 문장이나 PSM 프로그램의실행 SQL 버퍼에는가장최근에입력된 SQL 문장이나 PSM 프로그램하나만저장되어있다. 이러한 SQL 문장이나 PSM 프로그램을실행하기위해서는공통적으로 RUN 또는 / 명령어를입력한다. SQL 문장의실행 전체문장을입력하고세미콜론 (;) 으로종료하면 SQL 문장이바로실행된다. SQL 버퍼에저장과동시에실행 SQL 문장이나 PSM 프로그램입력을마치고, SQL 버퍼에저장함과동시에바로실행하려면 / 명령어 를입력한다. 이때마침표 (.) 와마찬가지로그자체만으로하나의라인이되어야한다. tbsql 유틸리티의명령어는 SQL 문장이나 PSM 프로그램과달리실행을위한명령어가따로없으며, SQL 버퍼에도저장되지않는다. tbsql 유틸리티의명령어는입력을마침과동시에실행된다. 다음은 SQL 버퍼에저장된 SQL 문장을실행하는예이다. SQL> SELECT ENAME, SALARY, ADDR FROM EMP -- this is a comment. WHERE DEPTNO = 5;... 실행결과 1... SQL> / 제 1 장 tbsql 19
... 실행결과 2... SQL> 위의예에서는첫번째 SQL 프롬프트에서 SQL 문장을입력하고세미콜론 (;) 으로종료하여바로실행하였다. 그리고두번째 SQL 프롬프트에서는 / 를입력하여 SQL 버퍼에저장된 SQL 문장을실행하였다. SQL 버퍼에는가장최근에입력된 SQL 문장이저장되어있으므로, 첫번째 SQL 프롬프트에서입력한 SQL 문장과동일한문장이다시실행된다. 따라서실행결과 1과실행결과 2는동일한결과를출력한다. 다음은앞에서보인 SQL 문장을슬래시 (/) 를이용하여실행하는예이다. 이때 SQL 문장의맨마지막에세 미콜론 (;) 을입력하지않는다. SQL> SELECT ENAME, SALARY, ADDR FROM EMP -- this is a comment. WHERE DEPTNO = 5 /... 실행결과... SQL> 1.4.3. 기타기능 본절에서는 tbsql 유틸리티의기본기능중에서주로사용되는주석의삽입, 자동커밋, 운영체제명령 어실행, 출력내용을저장하는기능에대하여차례로한다. 주석의삽입 주석은다음의두가지방법으로삽입할수있다. /* */ 를이용 /* */ 를이용하는방법은 C나 C++ 프로그래밍언어에서사용하는방법과동일하다. tbsql 유틸리티에서는 /* 와 */ 로둘러싸인부분은주석으로인식하여처리하지않는다. 이주석은중첩하여사용할수없다. 즉, /* */ 주석내에또다른 /* */ 주석이포함될수없다. 두개의마이너스부호 (--) 를이용두개의마이너스부호 (--) 를이용하면, 각라인에서두개의마이너스부호 (--) 다음부터라인의마지막까지를주석으로인식하여무시된다. 이주석은 /* */ 를이용하는방법과마찬가지로어떤위치에도올수있으나, PSM 프로그램입력을종료하기위한마침표 (.) 와는같은라인에올수없다. 따라서, 다음과같이작성된스크립트파일은실행중에에러를발생한다. 20 Tibero 유틸리티안내서
(PSM 프로그램 ).-- 잘못된주석 RUN 자동커밋 SQL 문장으로갱신된내용은트랜잭션이커밋되기전에는데이터베이스에영구적으로반영되지않는다. 하나의트랜잭션은대개여러개의 SQL 문장으로이루어지며, SQL 문장으로갱신된내용은데이터베이스에바로반영되지않는다. tbsql 유틸리티에서는 SQL 문장이실행될때마다 COMMIT 문장을자동으로실행하도록설정하거나이기능을정지시킬수있다. 디폴트는자동커밋을사용하지않는것이다. SET AUTOCOMMIT 명령어로이러한설정을할수있으며, 현재의자동커밋설정을출력하여확인하려면 SHOW AUTOCOMMIT 명령어를이용한다. 운영체제명령어의실행 tbsql 유틸리티를시작한상태에서운영체제명령어를실행하려면 HOST 명령어를입력한다. 다음은확장자가.sql인모든스크립트파일을나열하는예이다. HOST 명령어대신에! 명령어를사용해도같은동작을수행한다. SQL> HOST dir *.sql... 운영체제명령어실행결과... SQL> 운영체제명령어를실행한후에는다시 tbsql 유틸리티의프롬프트가나타나며, 계속하여 tbsql 유틸리티의명령어를입력할수있다. HOST 명령어나! 명령어다음문장을생략할경우운영체제명령프롬프트가출력된다. 다시 tbsql 유틸리티로돌아오기위해서는 EXIT를입력한다. SQL>! $ dir *.sql... 운영체제명령어실행결과... $ EXIT SQL> 출력내용의저장 tbsql 유틸리티에서입력하거나출력한모든내용을텍스트파일로저장하려면 SPOOL 명령어를사용한다. SPOOL 명령어를사용하면, 사용자가입력한 SQL 문장이나 PSM 프로그램, tbsql 유틸리티의명령어는물론, 질의결과및프로그램실행결과, tbsql 유틸리티프롬프트까지도파일에저장된다. 제 1 장 tbsql 21
SPOOL 명령어를실행하면바로다음라인부터파일에저장된다. 이기능을정지하려면 SPOOL OFF를입력한다. SPOOL OFF를입력하면그다음라인부터는파일에저장되지않는다. 다음은 SPOOL 명령어를사용하는예이다. 만약 SPOOL 명령에서사용되는 save.txt 파일이이미존재한다면이전파일위에덮어쓰게되므로이전의내용은사라진다. SQL> SPOOL save.txt SPOOL START : save.txt SQL> SELECT * FROM DUAL; DUMMY ----- X 1 row selected. SQL> SPOOL OFF SPOOL STOP : save.txt 다음은앞의예에서 save.txt 파일에저장된내용이다. SQL> SELECT * FROM DUAL; DUMMY ----- X 1 row selected. SQL> SPOOL OFF 사용자가입력한 SQL 문장, 질의결과, 마지막의 SPOOL OFF 명령까지도파일에저장되어있다. 22 Tibero 유틸리티안내서
1.5. 고급기능 본절에서는 tbsql 유틸리티의기본기능에비하여좀더고급사용자가사용하는기능으로스크립트를 이용한일괄작업실행과 Tibero 시스템을관리하는 DBA 를위한기능에대하여한다. 1.5.1. 스크립트기능 스크립트란한번의명령으로일괄적으로작업을실행하기위한 SQL 문장과 PSM 프로그램, tbsql 유틸리티의명령어의모임이다. tbsql 유틸리티에서스크립트를실행하면그안에포함된모든명령어가차례로실행된다. 스크립트의생성 스크립트파일은외부에서생성, 편집하여 tbsql 유틸리티내에서실행할수도있고, tbsql 유틸리티를실행한후에외부편집기를호출하여생성, 편집할수도있다. 외부편집기를호출할경우어떤편집기를이용할것인지설정할수있다. 다음은외부편집기로 vi를이용하는예이다. $ export TB_EDITOR=vi 외부편집기를이용하여특정스크립트파일을편집하기위해서는 EDIT 명령어를사용한다. EDIT 명령어 와함께파일명을제시해야하며, 확장자가 FILEEXT 시스템변수와같은경우에는생략할수있다. 다음은스크립트파일 run.sql 을편집하기위하여외부편집기를호출하는예이다. SQL> EDIT run 스크립트파일내에 SQL 문장, PSM 프로그램, tbsql 유틸리티의명령어를입력하는방법은다음과같다. 일반적인입력방법 tbsql 유틸리티의명령프롬프트에서입력하는방법과거의동일하며, 여러라인에걸쳐서입력할수있다. SQL 문장과 PSM 프로그램의종료 SQL 문장은반드시항상세미콜론 (;) 을문장끝에입력해야하며, PSM 프로그램은마지막라인을마침 표 (.) 만으로마쳐야한다. 주석의삽입 스크립트파일내에주석을삽입할수있다. 제 1 장 tbsql 23
스크립트를실행하면 SQL 문장은바로실행되며, PSM 프로그램은 RUN 또는 / 명령어를입력하여실행한다. 다음은테이블 EMP에대한몇가지작업을수행하는스크립트파일의예이다. 라인사이에공백이들어갈수있다. -- SQL 문장 SELECT ENAME, SALARY, ADDR FROM EMP WHERE DEPTNO = 5; UPDATE EMP SET SALARY = SALARY * 1.05 WHERE DEPTNO = 5; -- PSM 프로그램 DECLARE deptno NUMBER(2); BEGIN deptno := 20; UPDATE EMP SET SALARY = SALARY * 1.05 WHERE DEPTNO = deptno; END; RUN -- PSM 프로그램실행 /* 최종으로갱신된내용을반영한다. */ COMMIT; 스크립트의실행 스크립트파일을실행하려면 START 또는 @ 명령어를사용한다. 명령어와함께파일명을지정하며확장자가 FILEEXT 시스템변수 (sql) 와동일한경우에는생략해도무방하다. 다음의두라인은스크립트파일 run.sql을실행하는예이며결과는동일하다. SQL> START run SQL> @run 스크립트파일내에서하나이상의다른스크립트파일을실행할수도있다. 즉, 스크립트파일내에 START 또는 @ 명령어를포함할수있다. 스크립트파일을재귀적으로실행할때, 무한루프에빠지지않도록해야한다. tbsql 유틸리티를시작할때 @ 명령어를사용하면시작과동시에스크립트파일을실행할수있다. 이러한방법은운영체제에서배치프로그램을실행할때필요하다. 다음은 tbsql 유틸리티를시작하면서동시에스크립트파일 run.sql을실행하는예이다. $ tbsql dbuser/dbuserpassword @run 24 Tibero 유틸리티안내서
1.5.2. DBA 를위한기능 tbsql 유틸리티로 DBA 기능을수행할수있다. tbsql 유틸리티로 DBA 기능을수행하려면먼저 DBA 권한을가진사용자로 Tibero 에로그인한다. 다음은 DBA 권한을가지고있는 SYS 사용자로로그인을하는예이다. $ tbsql sys/syspassword tbsql 유틸리티를시작한후에도 DBA 로연결할수있다. 이때 CONNECT 명령어를사용하며앞에서와 마찬가지로 DBA 권한을가진사용자로연결하면된다. 다음은 CONNECT 명령어를이용하여 DBA 로연결하는예이다. SQL> CONNECT sys/syspassword 다음은 DBA 가 tbsql 유틸리티로수행할수있는기능이다. Tibero 의종료 DBA 권한을가진사용자는 tbsql 명령어인 TBDOWN 으로 Tibero 를종료한다. 사용자가입력한문자로대체 질의에서 & 로시작하는토큰은해당토큰을사용자로부터입력을받아서대체한다. 반복해서수행하는 질의가특정부분만달라지는경우에적합하다. 1.5.3. 접속정보암호화기능 tbsql 유틸리티는데이터베이스접속정보 (connect_string) 를암호화파일 (wallet) 로저장하고사용하는기능을제공한다. 환경변수인 ISQL_WALLET_PATH에지정한경로의파일에 tbsql 유틸리티에서접속한데이터베이스의정보를암호화파일로만들거나다음접속시사용할수있다. 암호화파일생성 tbsql 유틸리티를이용해서특정데이터베이스에접속한후 SAVE CREDENTIAL 명령어를통해서암호화파일을생성할수있다. 다음은 ISQL_WALLET_PATH의값을현재경로의 wallet.dat 파일로설정한후접속한데이터베이스정보를암호화하여생성하는예이다. $ export ISQL_WALLET_PATH=./wallet.dat $ tbsql 제 1 장 tbsql 25
tbsql 5 Copyright (c) 2008, 2009, 2011, 2012 Tibero Corporation. All rights reserved. Can't login with the wallet file. Login the database and SAVE CREDENTIAL again. Enter Username: dbuser Enter Password: dbuserpassword Connected to Tibero. SQL> SAVE CREDENTIAL Complete to generate the wallet file. tbsql 유틸리티를실행하기에앞서 ISQL_WALLET_PATH 환경변수를설정했기때문에./wallet.dat 파일의내용을복호화하려고시도하지만해당파일이존재하지않을경우위와같은에러가발생한다. 데이터베이스에정상적으로다시접속후 SAVE CREDENTIAL 명령어를통해서./wallet.dat 파일이생성된다. 다음은 ISQL_WALLET_PATH 환경변수설정없이현재경로의 wallet.dat 파일에접속한데이터베이스정보를암호화하여생성하는예이다. $ tbsql tbsql 5 Copyright (c) 2008, 2009, 2011, 2012 Tibero Corporation. All rights reserved. SQL> CONN dbuser/dbuserpassword Connected to Tibero. SQL> SAVE CREDENTIAL "./wallet.dat" Complete to generate the wallet file. SAVE CREDENTIAL의파라미터로./wallet.dat 파일경로를주면, 데이터베이스접속한정보를암호화하여./wallet.dat 파일을생성한다. 암호화파일사용 tbsql 유틸리티실행전환경변수 ISQL_WALLET_PATH의값으로위에서생성한암호화파일 (wallet) 을지정하면암호화파일생성전접속한정보를다시이용할수있다. 다음은 ISQL_WALLET_PATH의값의파일을사용해서데이터베이스에접속하는예이다. 26 Tibero 유틸리티안내서
$ tbsql tbsql 5 Copyright (c) 2008, 2009, 2011, 2012 Tibero Corporation. All rights reserved. SQL> CONN dbuser/dbuserpassword Connected to Tibero. 참고암호화파일을사용하기위해서는반드시환경변수 ISQL_WALLET_PATH를설정해야한다. 암호화된파일은암호화파일을생성한 tbsql 유틸리티에서만사용이가능하다. 해당파일을다른 tbsql 유틸리티에서사용하고싶다면위과정을통해서암호화파일을다시생성해야만한다. Windows 환경에서는위의암호화파일생성및사용기능은사용할수없다. 1.6. 명령어 본절에서는 tbsql 유틸리티가제공하는명령어를자세히한다. 다음은 tbsql 유틸리티의명령어를표현하는문법의예이다. COM[MAND] param {choice1 choice2} [option] [arg]* 위의예를기준으로 tbsql 유틸리티에서사용하는명령어의문법을해석하는방법은다음과같다. 항목 대괄호 ([ ]) 대괄호 ([ ]) 에포함된내용은입력하지않아도명령어를실행할수있다. 위의예에서 COMMAND 명령어의뒷부분 (MAND) 과 option, arg 는명령프롬 프트에포함되지않을수있다. 중괄호 ({ }) 중괄호 ({ }) 에포함된내용은반드시입력해야명령어를실행할수있다. 위의예에서 choice1 과 choice2 는중괄호 ({ }) 내에있고버티컬바 ( ) 로분리 되어있으므로둘중하나는명령프롬프트에포함되어야한다. 버티컬바 ( ) 애스터리스크 (*) 버티컬바 ( ) 로분리된내용은그중하나를선택한다. 애스터리스크 (*) 로표시된내용은포함되지않을수도있고, 여러번포함될 수도있다. 위의예에서 arg 는대괄호 ([ ]) 바로뒤에애스터리스크 (*) 가있으므로포함되 지않을수도있고, 한번이상여러번포함될수도있다. 이탤릭체 이탤릭체로표시된내용은명령어에따라적절한문자열로대체되어야한다. 제 1 장 tbsql 27
항목 대소문자 명령어는대소문자를구분하지않는다. 다음에나열된세개의명령어는위의명령어문법표현에따라모두유효하다. COMMAND param choice1 COM param choice1 option COM param choice2 arg1 arg2 arg3 tbsql 유틸리티의명령어에는 SQL 문장의수행또는데이터베이스관리에필요한명령어가포함되어있 다. 각명령어를알파벳순으로나열하고, 문법 (syntax), 파라미터, 예제의순서로한다. tbsql 유틸리티에서사용할수있는명령어는다음과같다. 명령어! 운영체제의명령어를실행하는명령어이다. HOST 명령어와동일하다. ㅍ @ 스크립트를실행하는명령어이다. START 명령어와동일하다. / 현재 SQL 버퍼내의 SQL 문장또는 PSM 프로그램을실행하는명령어이다. RUN 명령어와동일하다. ACCEPT CHANGE CLEAR COLUMN CONNECT DEFINE DEL DESCRIBE DISCONNECT EDIT EXECUTE EXIT 사용자의입력을받아치환변수의속성을설정하는명령어이다. SQL 버퍼의현재라인에서패턴문자를찾아주어진문자로변환하는명령어이다. 설정된옵션을초기화하거나지우는명령어이다. 컬럼의출력속성을설정하는명령어이다. 특정사용자 ID로데이터베이스에접속하는명령어이다. 치환변수를정의하거나출력하는명령어이다. SQL 버퍼에저장된라인을지우는명령어이다. 지정된객체의컬럼정보를출력하는명령어이다. 현재데이터베이스로부터접속을해제하는명령어이다. 특정파일또는 SQL 버퍼의내용을외부편집기를이용하여편집하는명령어이다. 단일 PSM 문장을수행하는명령어이다. tbsql 유틸리티를종료하는명령어이다. QUIT 명령어와동일하다. 28 Tibero 유틸리티안내서
명령어 HELP HISTORY HOST 도움말을출력하는명령어이다. 실행한명령어의히스토리를출력하는명령어이다. 운영체제명령어를실행하는명령어이다.! 명령어와동일하다. INPUT LIST LOADFILE LS PAUSE PRINT PROMPT QUIT SQL 버퍼의현재라인뒤에새로운라인을추가하는명령어이다. SQL 버퍼내의특정내용을출력하는명령어이다. Tibero의테이블을 Oracle의 SQL*Loader 툴이인식할수있는형식으로저장하는명령어이다. 현재사용자가생성한데이터베이스객체를출력하는명령어이다. 사용자가 <Enter> 키를누를때까지실행을멈추는명령어이다. 사용자가정의한바인드변수의값을출력하는명령어이다. 사용자가정의한 SQL 문장이나빈라인을그대로화면에출력하는명령어이다. tbsql 유틸리티를종료하는명령어이다. EXIT 명령어와동일하다. RUN 현재 SQL 버퍼내의 SQL 문장이나 PSM 프로그램을실행하는명령어이다. / 명령어와동일하다. SAVE CREDENTIAL SET SHOW SPOOL START 데이터베이스접속정보를암호화하여파일에저장하는명령어이다. tbsql 유틸리티의시스템변수를설정하는명령어이다. tbsql 유틸리티의시스템변수를출력하는명령어이다. 화면에출력되는내용을모두외부파일에저장하는과정을시작하거나종료하는명령어이다. 스크립트파일을실행하는명령어이다. @ 명령어와동일하다. TBDOWN UNDEFINE VARIABLE Tibero 를종료하는명령어이다. 하나이상의치환변수를삭제하는명령어이다. 사용자가정의한바인드변수를선언하는명령어이다. 제 1 장 tbsql 29
1.6.1.! tbsql 유틸리티내에서운영체제의명령어를실행한다.! 명령어대신에 HOST 명령어를사용할수있다.! 명령어의세부내용은다음과같다. 문법! [command] 옵션 운영체제의명령어없이! 명령어만입력하면운영체제의명령프롬프트로나가서 운영체제의명령어를여러번입력할수있다. 이때다시 tbsql 유틸리티로돌아오려면 EXIT 명령어를입력한다. command 운영체제의명령어이다. 예제 SQL>! dir *.sql SQL>! 1.6.2. @ 스크립트파일을실행한다. 스크립트파일이 FILEEXT 시스템변수에등록된확장자를가지면스크립트파일의이름을확장자없이지정할수있다. tbsql 유틸리티는지정된스크립트파일을 FILEPATH 시스템변수로지정된디렉터리내에서찾는다. 스크립트파일의실행전에 SET 명령어로설정된시스템변수는스크립트파일을실행하는중에도유효하다. 스크립트파일내에서 EXIT 또는 QUIT 명령어를실행하면 tbsql 유틸리티를종료한다. @ 명령어대신에 START 명령어를사용할수있다. @ 명령어의세부내용은다음과같다. 문법 @ {filename} 항목 filename 스크립트파일의이름이다. 예제 30 Tibero 유틸리티안내서
SQL> @ run SQL> @ run.sql 1.6.3. / 현재 SQL 버퍼내의 SQL 문장또는 PSM 프로그램을실행한다. / 명령어대신에 RUN 명령어를사용할수있다. / 명령어의세부내용은다음과같다. 문법 / 예제 SQL> SELECT * FROM DUAL;... SQL문장실행결과... SQL> /... 위와동일한결과... 1.6.4. ACCEPT 사용자의입력을받아치환변수의값을설정한다. 이때설정된치환변수의값은이후에사용자가입력하 는 SQL 문장이나 PSM 프로그램에서 &variable 과일치하는단어가있을경우자동으로치환된다. ACCEPT 명령어의세부내용은다음과같다. 문법 ACC[EPT] variable [PROMPT statement NOPR[OMPT]] 항목 variable 저장할치환변수의이름이다. 만약존재하지않을경우새로생성한다. 다음은 ACCEPT 명령어의옵션에대한이다. 옵션 PROMPT statement NOPR[OMPT] 사용자로부터치환변수의값을입력받기전에프롬프트를화면에출력한다. 프롬프트를출력하지않고사용자의입력을기다린다. 제 1 장 tbsql 31
예제 SQL> ACCEPT name PROMPT 'Enter name : ' Enter name : 'John' SQL> SELECT &name FROM DUAL; At line 1, column 8 old value : SELECT &name FROM DUAL new value : SELECT 'John' FROM DUAL 'JOHN' ------ John 1 row selected. SQL> 1.6.5. CHANGE SQL 버퍼에있는문장의현재라인에서첫번째 old 패턴을찾아 new 패턴으로변환한다. 일반적으로마지막으로실행된 SQL 문장의현재라인은가장마지막라인이다. 현재라인을변경하려면예제를참고한다. CHANGE 명령어의세부내용은다음과같다. 문법 C[HANGE] delim old [delim [new [delim [option]]]] 항목 delim 숫자를제외한구분자이다. 반드시 old 나 new 패턴에없는문자를사용해야한다. old 바꾸려고하는패턴이다. 대소문자를구분하지않는다. 이때사용되는단어는일반적인단어 ( 예, dual, ksc911 등 ) 외에도임의의패턴을 나타내는... 을사용할수있다. 사용방법은예제를참조한다. 다음은 CHANGE 명령어의옵션에대한이다. 옵션 delim 숫자를제외한구분자이다. 32 Tibero 유틸리티안내서
옵션 반드시 old 나 new 패턴에없는문자를사용해야한다. new 새로치환할패턴이다. option g : 현재라인에서전체패턴을바꾼다. c : 현재라인에서사용자의선택에따라바꾼다. a : 전체문장에서전체패턴을바꾼다. 예제 현재라인은디폴트로항상마지막라인을가리키므로두번째라인에있는 DUAL 이 T 로변환된다. SQL> SELECT * FROM DUAL;... SQL 실행결과... SQL> C/DUAL/T FROM T SQL> 현재라인을바꾸기위해서는원하는라인번호를입력한다. SQL> 5 5 WHERE ROWNUM < 5 AND 임의의패턴을나타내기위해서... 을사용할수있다. 이때... 은앞, 뒤, 가운데에올수있다. SQL> CHANGE /RE...AND/RE ROWNUM >= 5 AND/ 5 WHERE ROWNUM >= 5 AND SQL> CHANGE /...AND/WHERE ROWNUM < 3/ 5 WEHRE ROWNUM < 3 SQL> CHANGE /WHE.../WHERE ROWNUM < 5 AND/ 5 WHERE ROWNUM < 5 AND a 옵션을지정할경우전체문장에서주어진패턴을찾아전부바꾼다. 따라서첫번째라인에있는 * 가 문자열로변환된다. SQL> SELECT * FROM DUAL;... SQL 실행결과... SQL> C/*/'replaced'/a SELECT 'replaced' FROM DUAL; SQL> 제 1 장 tbsql 33
1.6.6. CLEAR 설정된옵션을초기화하거나지운다. CLEAR 명령어의세부내용은다음과같다. 문법 CL[EAR] [option] 옵션 option BUFF[ER]: SQL 버퍼에있는모든내용을삭제한다. SCR[EEN]: 화면에있는모든내용을삭제한다. COL[UMNS]: 등록된모든컬럼의출력속성을초기화한다. 예제 SQL> CLEAR BUFFER SQL buffer is cleared SQL> CLEAR SCREEN SQL> CLEAR COLUMNS 1.6.7. COLUMN 컬럼의출력속성을지정한다. 컬럼의이름만명시했을경우에는해당컬럼의속성을출력하고, 컬럼의이 름을명시하지않을경우에는등록된모든컬럼을출력한다. COLUMN 명령어의세부내용은다음과같다. 문법 COL[UMN] [name [option]] 항목 name 속성을지정할컬럼이름이다. option CLE[AR]: 컬럼의출력속성을초기화한다. FOR[MAT] text: 컬럼의포맷을지정한다. 자세한내용은 1.7. 컬럼포맷 을참조한다. HEA[DING] text: 컬럼의머리글을설정한다. 34 Tibero 유틸리티안내서
항목 WRA[PPED]: 컬럼데이터의길이가너무길경우초과되는데이터를두라인으로나눈다. TRU[NCATED]: 컬럼데이터의길이가너무길경우초과되는데이터를자른다. ON: 컬럼의출력속성을켠다. OFF: 컬럼의출력속성을끈다. 예제 SQL> COLUMN SQL> COLUMN empno SQL> COLUMN empno CLEAR SQL> COLUMN empno FORMAT 999,999 SQL> COLUMN ename FORMAT A10 SQL> COLUMN sal HEADING the salary of this month SQL> COLUMN sal OFF SQL> COLUMN job WRAPPED SQL> COLUMN job TRUNCATED 1.6.8. CONNECT 다른사용자로 Tibero 데이터베이스에접속한다. 만약사용자의이름또는패스워드를입력하지않은경우에는 tbsql 유틸리티에서프롬프트를출력하고입력을요구한다. CONNECT 명령어를실행하면이전에실행되던트랜잭션을커밋시키고, 이전접속을해제하고나서새로운접속을시도한다. 만약새로운접속이실패하더라도이전의접속을복구하지않는다. CONNECT 명령어의세부내용은다음과같다. 문법 CONN[ECT] {username[/password[@connect_identifier]]} 항목 username 사용자의이름이다. 다음은 CONNECT 명령어에지정할수있는옵션에대한이다. 옵션 password 사용자의패스워드이다. 제 1 장 tbsql 35
옵션 connect_identifier 데이터베이스에접속하기위한접속정보이다. $TB_HOME/client/config 디렉터리의 tbdsn.tbr 파일에서지정할수있으며 HOST, PORT, DB_NAME 정보로구성되어있다. 예제 SQL> CONNECT dbuser/dbuserpassword@db_id 1.6.9. DEFINE 치환변수를정의하거나출력한다. DEFINE 명령어의세부내용은다음과같다. 문법 DEF[INE] [variable] [variable = value] 항목 치환변수의이름을지정하지않으면, 전체치환변수를출력한다. variable variable = value 지정한치환변수를출력한다. 정의할치환변수의이름과기본값이다. 예제 SQL> DEFINE NAME... NAME이라는이름을갖는치환변수를정의한다.... SQL> DEFINE NAME = 'SMITH'... NAME이라는이름을갖는치환변수와 SMITH라는기본값을정의한다.... SQL> DEFINE... 전체치환변수를화면에출력한다.... 1.6.10. DEL SQL 버퍼에설정된라인을지운다. 만약라인번호를생략할경우전체라인을삭제한다. DEL 명령어의세부내용은다음과같다. 36 Tibero 유틸리티안내서
문법 DEL [number number number number LAST LAST number LAST] 항목 number number number number LAST LAST number LAST 지정된번호의라인을삭제한다. 첫번째로지정된번호의라인부터두번째로지정된번호의라인까지삭제한다. 첫번째로지정된번호의라인부터마지막라인까지삭제한다. 마지막라인부터지정된번호의라인까지삭제한다. 마지막라인을삭제한다. 예제 SQL> DEL 1... 첫번째라인을삭제한다.... SQL> DEL 1 3... 첫번째부터세번째라인까지삭제한다.... SQL> DEL 1 LAST... 첫번째부터마지막라인까지삭제한다.... SQL> DEL LAST... 마지막라인을삭제한다.... 1.6.11. DESCRIBE 지정된객체의컬럼정보를출력한다. 여기에서객체는테이블, 뷰, 동의어, 함수, 프로시저, 패키지가될수있다. 테이블, 뷰의경우에는컬럼이름, 데이터타입, 제약조건및인덱스정보등이출력되며, 최대길이, 정밀도, 스케일등데이터타입에따른것도포함한다. 함수, 프로시저의경우에는파라미터의정보 ( 이름, 데이터타입, IN/OUT) 가출력되며, 패키지의경우에는소속된모든함수및프로시저의정보가출력된다. 다른사용자가소유한객체의컬럼정보도출력할수있다. 이때소유자의이름을명시하며, 소유자이름이명시되어있지않으면디폴트로현재사용자소유의객체에해당된다. DESCRIBE 명령어의세부내용은다음과같다. 문법 DESC[RIBE] [schema.]{object} 제 1 장 tbsql 37
항목 schema 대상객체를포함하는스키마 ( 또는소유자 ) 이다. 다음은 DESCRIBE 명령어에입력할항목에대한이다. 항목 object 컬럼정보를출력할객체이다. 예제 SQL> DESCRIBE emp SQL> DESC scott.emp 1.6.12. DISCONNECT 현재데이터베이스로부터접속을종료한다. 진행중이던트랜잭션을커밋하지만 tbsql 유틸리티를종료하지는않는다. 스크립트파일내에서 CONNECT 명령어를실행하고그대로종료한경우, 데이터베이스와접속된상태가계속유지된다. 따라서, 스크립트파일내에 CONNECT 명령어가포함되고있다면, 마지막에 DISCON NECT 명령어를실행하는것이안전하다. 문법 DISC[ONNECT] 1.6.13. EDIT 특정파일또는 SQL 버퍼의내용을외부편집기를이용하여편집한다. 어떤외부편집기를사용할것인지는환경변수 $TB_EDITOR에서설정할수있다. $TB_EDITOR가등록되지않았다면환경변수 $EDITOR를참조하고, $EDITOR도등록되지않았다면 vi 편집기를사용하여편집한다. 이때 SQL 버퍼가비어있다면에러를반환한다. 편집할파일의확장자가 FILEEXT 시스템변수로지정된디폴트확장자이면확장자없이파일의이름을지정할수있다. FILEEXT 시스템변수의기본값은.sql이며, SET 명령어를이용하여변경할수있다. tbsql 유틸리티는 FILEPATH 시스템변수에지정된경로에서지정된파일을찾는다. EDIT 명령어의세부내용은다음과같다. 문법 38 Tibero 유틸리티안내서
ED[IT] [filename] 항목 파일이름을지정하지않고 EDIT 명령어를실행하면현재 SQL 버퍼에저장되어 있는내용을편집하며디폴트파일인.tbedit.sql 를사용한다. 기본파일은 tbsql 유틸리티가종료될때자동으로삭제된다. filename 편집할파일의이름 ( 대개스크립트파일의이름 ) 이다. 예제 SQL> EDIT run.sql SQL> EDIT run SQL> ED 1.6.14. EXECUTE 단일 PSM 문장을수행한다. 사용할수있는 PSM 문장은 CALL 문장과이름없는블록뿐이다. 사용자가 입력한문장의제일끝에는반드시세미콜론 (;) 이있어야한다. EXECUTE 명령어의세부내용은다음과같다. 문법 EXEC[UTE] {statement} 항목 statement 단일 PSM 프로그램의문장이다. 예제 SQL> EXECUTE begin dbms_output.put_line('success'); end; success PSM completed SQL> EXECUTE call proc1(); 또한사용자가정의한바인드변수에값을할당할때에도유용하게사용할수있다. SQL> VAR x NUMBER; SQL> EXEC :x := 5; PSM completed 제 1 장 tbsql 39
SQL> 1.6.15. EXIT tbsql 유틸리티를종료한다. 현재진행중이던모든트랜잭션을커밋하며데이터베이스와의모든접속을종료한다. 문법 EXIT 1.6.16. HELP 지정된단어를포함하는모든항목에대한도움말을화면에출력한다. HELP 명령어의세부내용은다음과같다. 문법 H[ELP] [topic] 항목 옵션을지정하지않으면 tbsql 유틸리티에서사용할수있는전체명령어를출력 한다. topic 도움말을출력할단어를지정한다. 예제 SQL> HELP SET 1.6.17. HISTORY 히스토리버퍼에저장된명령어를화면에출력한다. HISTORY 명령어의세부내용은다음과같다. 문법 HIS[TORY] [number number number] 40 Tibero 유틸리티안내서
항목 범위를지정하지않으면그동안저장된전체명령어를출력한다. number number number 최근에저장된명령어부터지정된숫자만큼명령어를출력한다. 첫번째로지정된숫자부터두번째로지정된숫자까지히스토리버퍼에저장된 명령어를출력한다 예제 SQL> HISTORY... 전체명령어를출력한다.... SQL> HISTORY 5... 마지막 5개명령어를출력한다.... SQL> HISTORY 10 20... 10번째부터 20번째까지명령어를출력한다.... 1.6.18. HOST! 명령어와동일하다. HOST 명령어의세부내용은다음과같다. 문법 HO[ST] [command] 항목 명령어없이 HOST 만입력하면운영체제의명령프롬프트로나가서운영체제명 령어를여러번입력할수있다. 이때다시 tbsql 유틸리티로돌아오려면 EXIT 를입력한다. command 운영체제의명령어이다. 1.6.19. INPUT SQL 버퍼에저장된제일마지막라인뒤에사용자가입력한문장을추가한다. INPUT 명령어의세부내용은다음과같다. 문법 제 1 장 tbsql 41
I[NPUT] [statement] 항목 statement 를생략하면여러라인에걸쳐문장을추가한다. statement 추가할 SQL 문장이다. 예제 SQL> select * from dual;... 결과출력... SQL> LIST select * from dual SQL> INPUT where rownum < 2 select * from dual where rownum < 2 SQL> 다음은 statement 옵션을생략한것이다. 단위의경우와달리입력이끝남과동시에 SQL 문장이실행 된다. SQL> select * from dual;... 결과출력... SQL> INPUT select * from dual... 여기에입력하면된다.... 1.6.20. LIST SQL 버퍼내의특정내용을화면에출력한다. LIST 명령어의세부내용은다음과같다. 문법 L[IST] [number number number number LAST LAST number LAST] 항목 라인의번호를생략할경우전체라인을출력한다. number number number number LAST 지정된번호의라인을출력한다. 첫번째로지정된번호부터두번째로지정된번호까지의라인을출력한다. 지정된번호의라인부터마지막라인까지출력한다. 42 Tibero 유틸리티안내서
항목 LAST number LAST 마지막라인부터지정된번호의라인까지출력한다. 마지막라인을출력한다. 예제 SQL> LIST 1... 첫번째라인을출력한다.... SQL> LIST 2 3... 두번째부터세번째라인까지출력한다.... SQL> LIST 2 LAST... 두번째부터마지막라인까지출력한다.... SQL> LIST LAST... 마지막라인을출력한다.... 1.6.21. LOADFILE Tibero 테이블을 Oracle 의 SQL*Loader 가인식할수있는형식으로저장한다. LOADFILE 명령어의세부내용은다음과같다. 문법 LOAD[FILE] {filename} 항목 filename 확장자를제외한파일의이름이다. 예제 EMP 라는이름의테이블을 Oracle 의 SQL*Loader 가인식할수있는파일로저장하려면다음과같은명 령어를입력한다. 이명령을수행하면 emp.ctl 과 emp.dat 라는 2 개의파일이생성된다. SQL> LOADFILE emp SQL> select * from emp; 1.6.22. LS 현재사용자가생성한특정타입이나이름의데이터베이스객체의정보를출력한다. LS 명령어의세부내용은다음과같다. 제 1 장 tbsql 43
문법 LS [object_type object_name] 항목 object_type 이나 object_name 을생략하면사용자가소유한모든객체를출력한 다. object_type object_name FUNCTION, INDEX, PACKAGE, PROCEDURE, SEQUENCE, SYNONYM, TABLE, TABLESPACE, TRIGGER, USER, VIEW 출력할객체의이름이다. 임의의패턴을나타내는애스터리스크 (*) 문자를사용할수있다. 예제 SQL> LS NAME SUBNAME OBJECT_TYPE ------------------------------ ------------- -------------------- SYS_CON100 INDEX SYS_CON400 INDEX SYS_CON700 INDEX _DD_CCOL_IDX1 INDEX... 중간생략... UTL_RAW PACKAGE DBMS_STATS PACKGE BODY TB_HIDDEN2 PACKGE BODY SQL>... 전체객체를출력한다.... SQL> LS TABLESPACE TABLESPACE_NAME ------------------------------ SYSTEM UNDO TEMP USR... 타입이 TABLESPACE인모든객체를출력한다.... SQL> LS USER USERNAME ------------------------------ SYS... 현재시스템에접속하고있는사용자를조회한다.... 44 Tibero 유틸리티안내서
1.6.23. PAUSE 사용자가 <Enter> 키를누를때까지잠시수행을멈춘다. 메시지를입력할경우해당메시지를화면에나 타낸다. PAUSE 명령어의세부내용은다음과같다. 문법 PAU[SE] [message] 항목 message 사용자가 <Enter> 키를누를때화면에보여줄메시지이다. 예제 SQL> PAUSE please enter... please enter...... <Enter> 키를누른다.... SQL> 1.6.24. PRINT 사용자가정의한바인드변수의이름과값을출력한다. PRINT 명령어의세부내용은다음과같다. 문법 PRI[NT] [variable...] 항목 variable 을생략할경우모든바인드변수를출력한다. variable 출력할바인드변수이름의목록이다. 예제 SQL> VARIABLE x NUMBER SQL> EXECUTE :x := 5; SQL> PRINT x x ---------- 제 1 장 tbsql 45
5 SQL> 1.6.25. PROMPT 특정메시지나빈라인을화면에출력한다. PROMPT 명령어의세부내용은다음과같다. 문법 PRO[MPT] [message] 항목 message 를생략할경우빈라인을출력한다. message 화면에보여줄메시지이다. 예제 다음은외부에서작성한 SQL 파일의예이고, 이름은 PromptUsage.sql 이다. PROMPT >>> Test is started. CREATE TABLE T (c1 NUMBER); INSERT INTO T VALUES (1); PROMPT Value 1 is inserted. COMMIT; PROMPT <<< Test is ended. 다음은위의 PromptUsage.sql 을실행한결과를보여준다. SQL> @PromptUsage >>> Test is started. Table 'T' created. 1 row inserted. Value 1 is inserted. Commit succeeded. <<< Test is ended. File finished. SQL> 46 Tibero 유틸리티안내서
1.6.26. QUIT EXIT 명령어와동일하다. QUIT 명령어의세부내용은다음과같다. 문법 Q[UIT] 1.6.27. RUN / 명령어와동일하지만, 이명령어를사용할경우현재수행하는 SQL 문장을화면에출력한다. RUN 명령어의세부내용은다음과같다. 문법 R[UN] 예제 SQL> select 1 from dual; ---------- 1 1 1 row selected. SQL> RUN 1 select 1 from dual ---------- 1 1 1 row selected. 1.6.28. SAVE CREDENTIAL tbsql 유틸리티의데이터베이스접속정보를암호화하여파일에저장한다. 구체적인사용은 1.5.3. 접속정보암호화기능 에서구체적으로한다. 제 1 장 tbsql 47
SAVE CREDENTIAL 명령어의세부내용은다음과같다. 문법 SAVE CREDENTIAL [filename] 항목 SAVE CREDENTIAL 명령어만입력하면환경변수 ISQL_WALLET_PATH 에설 정한경로의파일에현재데이터베이스의접속정보를암호화하여저장한다. filename 입력된 filename 파일에데이터베이스의접속정보를암호화하여저장한다. 예제 SQL> SAVE CREDENTIAL SQL> SAVE CREDENTIAL "./wallet.dat" 1.6.29. SET tbsql 유틸리티의시스템변수를설정한다. SET 명령어로설정된시스템변수는 SHOW 명령어를사용하여출력한다. 단, 변경된시스템변수는현재세션내에서만유효하다. 각각의시스템변수에대해서는 1.3. 시스템변수 에서구체적으로한다. SET 명령어의세부내용은다음과같다. 문법 SET {parameter} {value} 항목 parameter value tbsql 유틸리티시스템변수의이름이다. tbsql 유틸리티시스템변수의값이다. 예제 SQL> SET AUTOCOMMIT ON 1.6.30. SHOW tbsql 유틸리티의시스템변수를출력한다. 출력할정보를파라미터를사용하여선택할수있으며, 모든 정보를출력할수있다. 48 Tibero 유틸리티안내서
SHOW 명령어의세부내용은다음과같다. 문법 SHO[W] {option} 다음은 option 에입력할수있는항목에대한이다. 항목 system_parameter ALL ERROR PARAM[ETERS] [name] 주어진이름에해당하는 tbsql 유틸리티의시스템변수를출력한다. 모든 tbsql 유틸리티시스템변수를출력한다. 앞서발생한 PSM 프로그램의에러를출력한다. 주어진이름에해당하는데이터베이스시스템변수를출력한다. 단, 이름이생략될경우에는모든시스템변수를출력한다. RELEASE tbsql 유틸리티의릴리즈정보를출력한다. 예제 SQL> SHOW autocommit SQL> SHOW all SQL> SHOW error SQL> SHOW param db_name SQL> SHOW release 1.6.31. SPOOL 화면에출력되는내용을모두외부파일에저장하는과정을시작하거나종료한다. 출력파일은현재디렉 터리내에생성된다. SPOOL 명령어의세부내용은다음과같다. 문법 SPO[OL] [filename OFF] 항목 SPOOL 명령어만을입력하면 SPOOL 명령어의현재실행상태를출력한다. filename OFF 출력을저장할파일의이름이다. 출력파일의저장을중지한다. 제 1 장 tbsql 49
예제 SQL> SPOOL report.txt SQL> SPOOL OFF 1.6.32. START @ 명령어와동일하다. START 명령어의세부내용은다음과같다. 문법 STA[RT] {filename} 항목 filename 스크립트파일의이름이다. 1.6.33. TBDOWN Tibero 데이터베이스를종료한다. 긴급성에따라종료옵션을선택할수있으며옵션에따라데이터베이스를재시동할때복구과정이필요할수있다. 이명령어를실행하려면 SYSDBA 또는 SYSOPER로데이터베이스에접속해야한다. TBDOWN 명령어의세부내용은다음과같다. 문법 [TB]DOWN [NORMAL POST_TX IMMEDIATE ABORT] 항목 NORMAL POST_TX IMMEDIATE ABORT 현재접속중인모든사용자가접속을종료할때까지기다린후종료한다.( 기본값 ) 현재진행중인트랜잭션이종료될때까지기다린후종료한다. 현재진행중인트랜잭션을롤백한후강제종료한다. 현재진행중인트랜잭션을롤백하지않고즉시종료한다. 예제 SQL> TBDOWN SQL> TBDOWN ABORT 50 Tibero 유틸리티안내서
1.6.34. UNDEFINE ACCEPT 명령어등으로정의된치환변수를삭제한다. UNDEFINE 명령어의세부내용은다음과같다. 문법 UNDEF[INE] [variable...] 항목 variable... 을생략할경우모든치환변수를삭제한다. variable... 치환변수이름의목록이다. 예제 SQL> UNDEFINE x SQL> UNDEFINE x y z 1.6.35. VARIABLE PSM 프로그램이나 SQL 문장에서사용할수있는사용자가정의한바인드변수를선언한다. VARIABLE 명령어의세부내용은다음과같다. 문법 VAR[IABLE] [variable [datatype]] 항목 VARIABLE 명령어만사용할때에는전체바인드변수를화면에출력한다. variable datatype 바인드변수의이름이다. 데이터타입이다. 현재지원되는다음의타입을지원한다. NUMBER, CHAR(n), VARCHAR(n), VARCHAR2(n), NCHAR(n), NVARCHAR2(n), RAW(n), BLOB, CLOB, NCLOB, DATE, TIMESTAMP, REFCURSOR 예제 제 1 장 tbsql 51
SQL> VARIABLE x NUMBER SQL> EXEC :x := 1; PSM completed. SQL> SELECT :x FROM DUAL; :x ---------- 1 1 row selected. SQL> 1.7. 컬럼포맷 본절에서는 tbsql 유틸리티의컬럼포맷을데이터타입에따라설정하는방법을한다. tbsql 유틸리티의컬럼포맷은이전절에서한 COLUMN 명령어를통해설정하고, 또한 COLUMN 명령어를이용하여출력한다. 1.7.1. 문자형 CHAR, NCHAR, VARCHAR, NVARCHAR 타입의경우데이터베이스컬럼의길이를디폴트길이로가진다. 데이터의값이컬럼의길이보다클때데이터가다음라인에기록되거나잘릴수있는데, 문자형포맷을이용할경우에는이를쉽게처리할수있다. 문자형의컬럼포맷을설정하는세부내용은다음과같다. 문법 COL[UMN] {name} FORMAT A{n} A 는소문자 a 로도사용할수있으며, n 은문자열데이터의길이를의미한다. 예제 SQL> SELECT 'Tibero is the best choice' test FROM DUAL; TEST ------------------------- Tibero is the best choice 1 row selected. SQL> COL test FORMAT a10 52 Tibero 유틸리티안내서
SQL> SELECT 'Tibero is the best choice' test FROM DUAL; TEST ---------- Tibero is the best c hoice 1 row selected. SQL> 1.7.2. 숫자형 숫자형의컬럼포맷을설정하는세부내용은다음과같다. 문법 COL[UMN] {col_name} FOR[MAT] {fmt_str} 항목 col_name fmt_str 컬럼이름을지정한다. 다음표에서한컬럼포맷을지정한다. 다음은 fmt_str 에지정할수있는포맷이다. 포맷쉼표 (,) 점 (.) $ 0 9 B C D EEEE G L MI 설정예 9,999 9.999 $9999 0999, 9990 9999 B9999 C9999 9D999 9.99EEEE 9G999 L9999 9999MI 주어진위치에쉽표 (,) 를출력한다. 정수부분과소수부분을분리하는위치에점 (.) 을출력한다. $ 를맨앞에출력한다. 0을맨앞이나뒤에출력한다. 주어진자릿수만큼숫자를출력한다. 정수부분이 0일경우공백으로치환한다. 주어진위치에 ISO currency symbol을출력한다. 실수의정수와소수를분리하기위해 decimal 문자를출력한다. 과학적기수법에의해출력한다. 정수부분의주어진위치에그룹분리자를출력한다. 주어진위치에 local currency symbol을출력한다. 음수뒤에마이너스기호를출력하고, 양수뒤에공백을출력한다. 제 1 장 tbsql 53
포맷 PR RN rn S TM U V 설정예 9999PR RN rn S9999, 9999S TM U9999 99V999 음수인경우에 < 와 > 로감싸서출력하고, 양수인경우에양쪽에공백을출력한다. 대문자로출력한다. 소문자로출력한다. 양수 / 음수기호를맨앞이나뒤에출력한다. 가능한작은수를출력한다. 주어진위치에 dual currency symbol을출력한다. 10n만큼곱한값을출력한다. 여기서 n은 V뒤에오는 9의개수이다. X XXXX, xxxx 16 진수형태로출력한다. 예제 SQL> COLUMN x FORMAT 999,999 SQL> SELECT 123456 x FROM DUAL; -------- 123,456 X 1 row selected. 54 Tibero 유틸리티안내서
제 2 장 tbmigrator 2.0 본장에서는 tbmigrator 2.0 유틸리티를소개하고사용방법을한다. 2.1. 개요 tbmigrator 2.0은 Tibero에서제공하는마이그레이션유틸리티이다. 이유틸리티는타 DBMS가구성한데이터베이스전체또는일부를 Tibero로옮기는마이그레이션작업을도와준다. 즉 Source DBMS에저장된테이블, 인덱스, 뷰등의스키마객체와 PSM 프로그램등을 Tibero 데이터베이스로옮겨이전의데이터베이스와같은기능을수행하도록한다. tbmigrator 2.0 유틸리티의기능은다음과같다. 사용자가원하는데이터를선택하여 Tibero 로마이그레이션한다. 테이블, 인덱스, 뷰, 동의어등의스키마객체와테이블에정의된각종제약조건을마이그레이션한다. 사용자특권 (privilege) 및역할 (role) 을마이그레이션한다. 마이그레이션타깃데이터베이스에대한정보를제공한다. Option 버튼을사용하여다양한방법으로마이그레이션한다. Progress 화면을통해서마이그레이션의진행사항을파악할수있다. 참고 tbmigrator 2.0은 Java 언어로구현되어있으며, Java 6 이상에서사용할수있다. 또한, 실행하기전에접속하려는 DB의 JDBC Driver 파일의경로를실행스크립트내의 classpath 설정에추가해두어야한다. 2.2. 화면 tbmigrator 2.0 은 Main 화면, Option 화면, Progress 화면, Report 화면으로구성된다. 제 2 장 tbmigrator 2.0 55
2.2.1. Main 화면 다음은 Main 화면에대한이다. [ 그림 2.1] Main 화면 Source Source 접속정보 다음은 Source 접속정보의각항목에대한이다. 항목 Address Port SID User ID Password DB Type Properties Source 데이터베이스의 IP 주소이름이다. Source 데이터베이스의포트번호이다. Source 데이터베이스의 SID이다. Source 데이터베이스의사용자 ID이다. Source 데이터베이스의패스워드이다. Source 데이터베이스의종류를선택한다. Source 데이터베이스의추가적인접속정보를지정한다. 56 Tibero 유틸리티안내서
Source 데이터베이스뷰 Source 데이터베이스뷰는사용자가원하는데이터를선택하는기능과데이터베이스의문자셋설정을보여준다. 데이터를선택하는방식은 3가지로나눈다. Full Mode 데이터베이스명을선택하면모든스키마가선택된다. 종속된스키마요소를하나라도해제하면전체모드에서스키마모드로변환한다. [ 그림 2.2] Full Mode 선택방식 Schema Mode 특정한스키마명를선택하면스키마에종속된테이블을모두지정한다. 종속된테이블요소를하나라도해제하면스키마모드에서테이블모드로변환된다. [ 그림 2.3] Schema Mode 선택방식 Table Mode 테이블요소를선택한것으로 tbmigrator 의최소이관단위이다. 제 2 장 tbmigrator 2.0 57
[ 그림 2.4] Table Mode 선택방식 Source 의문자셋설정은다음두가지정보를보여준다. Char Set NChar Set Tibero Tibero 접속정보 다음은 Tibero 접속정보의각항목에대한이다. 항목 Address Port SID User ID Password DB Version Tibero 데이터베이스의 IP 주소이름이다. Tibero 데이터베이스의포트번호이다. Tibero 데이터베이스의 SID이다. Tibero 데이터베이스의사용자 ID이다. Tibero 데이터베이스의패스워드이다. Tibero 데이터베이스의버전을선택한다. Tibero 데이터베이스뷰 Tibero 에존재하고있는데이터를조회하는기능과문자셋설정을보여준다. 58 Tibero 유틸리티안내서
버튼 마이그레이션 Main 화면의버튼들은다음과같다. 버튼 [Connect] [Option] [Run] [Close] 대상데이터베이스에접속한다. 옵션대화상자가나타난다. 마이그레이션을시작한다. tbmigrator를종료한다. 지원하는 Source 데이터베이스 Main 화면의 Source 접속정보에서 Source 데이터베이스를선택할수있다. 각데이터베이스별로고려해야할항목들은다음과같다. Oracle Main 화면 Source 접속정보 Connect As 설정을지정해야한다. [Properties] 버튼을클릭하면옵션을선택할수있는대화창이나타난다. NORMAL, SYSDBA, SYSOPER 중에하나를선택할수있으며, 기본값은 NORMAL이다. Option 화면의데이터변환옵션 Option 화면이나타나면 Type Conversion Table을이용하여컬럼타입변환옵션을설정할수있다. LONG과 LONG RAW 컬럼은 Oracle 8x 이후에서는사용하지않는것으로권장되는컬럼타입으로, 단지 7x 이전버전과의호환성을위해지원되고있다. 이옵션을이용하여이관할때에위의컬럼들을각각대치되는 CLOB, BLOB으로변환할것인지, 또는해당타입을유지할것인지를지정할수있다. Tibero 같은 Tibero 간에마이그레이션을수행하는경우다른데이터베이스를선택한경우와는다르게 Source 데이터베이스와타겟인 Tibero와연결하는경우같은 JDBC 드라이버를사용하게된다. 그러므로 tbmi grator에포함된 JDBC는양쪽데이터베이스모두에호환되어야하며, 가장최신의 JDBC를사용하는것이바람직하다. Sybase Adaptive Server Enterprise 다음은 Sybase Adaptive Server Enterprice (ASE) 15 기준으로 Tibero 와다른부분을정리한내용이다. Sybase ASE Tibero 이관 비고 User Schema Tibero 의 schema 는 DB schema 와 DB user 를포함한개념이다. 제 2 장 tbmigrator 2.0 59
Sybase ASE Tibero 이관 비고 Segment Segment ASE 에는 Tablespace 개념이없으며, 각객 Tablespace 체가 Segment에직접저장된다. 이관할때에는 Segment이름에해당하는 Tablespace 를만들어각객체를그에할당해준다. Role Role Table Table ASE 의테이블중 USER TABLE 로분류되는 것들을이관한다. ASE 에서제공하는 sp_helptext 를이용하여 View View ( 일부 ) 얻은생성 DDL 을이용해이관이가능하다. 단, 문법이완벽히호환되지는않는다. Index Index ( 일부 ) Function based Index 를제외한 Table Index 를이관한다. Rule Constraint Primary Key, Unique, Not Null, Check, Ref erential constraint의이관이가능하다. System Privilege System Protect 와 Privilege 의각항목의이 System Protect Object Privilege ( 일부 ) 름이 ASE와 Tibero 양쪽모두동일할경우에만이관이가능하다. Transaction SQL ASE 에서제공하는 sp_helptext 를이용하여 SQLJ Procedure PSM ( 일부 ) 얻은생성 DDL 을이용해이관이가능하다. Scalar Function 단, 문법이완벽히호환되지는않는다. Informix Main 화면 Source 접속정보의 Properties Informix 서버이름을입력하여야한다. [Properties] 버튼을클릭하면 Informix 서버이름을입력할 수있는대화창이나타난다. 60 Tibero 유틸리티안내서
2.2.2. Option 화면 다음은 Option 화면에대한이다. [ 그림 2.5] Option 화면 제 2 장 tbmigrator 2.0 61
DDL DDL은마이그레이션할때첫단계로 Tibero 데이터베이스의객체들을생성할때사용하는구문이다. DBMS에서추출한 DDL 문장을수행할지를선택한다. Create All Objects 추출한모든 DDL 문장을수행한다. Create Objects by Type 선택한 Object 종류에해당하는 DDL 문장만을수행한다. 상세선택버튼 ( [...] ) 을클릭하면다음과같이 Object 종류를선택할수있는선택창이나타난다. Data Transfer 데이터전송은 DDL 다음단계로데이터들을 Source 데이터베이스에서 Tibero 로이관해준다. 구분 Transfer Table Data Use Direct Path Load Use Batch Insert Concurrent Thread 테이블데이터를마이그레이션을할지를선택한다. 테이블의데이터를 Direct Path Load 방식으로마이그레이션한다. 테이블의데이터를 Batch Insert 방식으로마이그레이션한다. 여러테이블의데이터를동시에마이그레이션하기위해사용할스레드의개수를정한다. 62 Tibero 유틸리티안내서
Conversion 다음은데이터변환옵션에대한이다. 구분 Read as Bytes Real Characterset 테이블의 char, varchar와같은문자열을저장하기위한열에데이터베이스설정과다른캐릭터셋을사용하여실제문자열이저장될경우문자열형태로데이터를가져올경우문자열이깨질수있다. 이를방지하기위하여문자열이아닌 binary 형태로데이터를가져오고, binary 형태로 Tibero측으로옮길때사용되는옵션이다. 테이블데이터이외의부분에실제데이터베이스의캐릭터셋과다르게입력된부분이있는경우이관후해당내용이깨질수있다. 이를방지하기위해실제사용한캐릭터셋을지정하여올바른문자열형태로옮겨지도록해주는옵션이다. Read as Bytes 설정을활성화한경우에만유효하며, 영향을받는항목 은 PSM DDL, 테이블의 comment, 테이블의열의 comment 이다. Double Character Column Size Source 데이터베이스와 Tibero 의캐릭터셋이서로다른경우변환된문 자열데이터의실제바이트길이가달라질수있다. 이때문에열의길이제한을초과하여이관에실패하는경우가발생할 수있다. 이를방지하기위해문자열기반의열을생성할때, Source 데 이터베이스에서지정된것의 2 배의길이로바꾸어주는옵션이다. Type Conversion Table Source 데이터베이스와 Tibero 의열타입이완전히일치하지않기때문 에호환성을보완하기위한설정을할수있는옵션이다. 이옵션의내용 은 Source 데이터베이스의종류에따라다를수있다. Verification 다음은데이터검증옵션에대한이다. 구분 Verify Table Data 테이블데이터가잘이관되었는지확인할수있는기능이다. Source 데이터베이스와 Tibero 양쪽의이관된모든테이블데이터를읽 어와 1:1 로비교한다. 데이터양이많은경우많은시간이소요될수있 다. 제 2 장 tbmigrator 2.0 63
2.2.3. Progress 화면 사용자는 Progress 화면을통해서마이그레이션의진행사항을파악할수있다. [ 그림 2.6] Progress 화면 64 Tibero 유틸리티안내서
조회항목 항목 Current Schema 현재진행하고있는스키마정보이다. Current Schema 는마이그레이션해야할스키마갯수와마이그레이션된스 키마갯수를보여준다. 마이그레이션이완료되면 COMPLETE 를나타낸다. Current Progress 현재진행하고있는스키마의스테이지정보이다. 스테이지정보는스키마의데이터타입정보를보여주고, 마이그레이션이완 료되면 COMPLETE 를나타낸다. Strage Progress 마이그레이션하는각스테이지진행상태를보여준다. 스테이지진행정보는마이그레이션진행중인데이터명을가르키며, 마이그 레이션해야할데이터갯수와마이그레이션된데이터갯수를보여준다. Created Objects Errors Data Migrator # 현재까지성공적으로생성된 Object 갯수를보여준다. 현재까지발생한 Error 갯수를보여준다. 테이블데이터를처리하는스레드를나타내며, 각각현재처리하고있는테이블이름과진행률을보여준다. 총갯수는 Option 화면의데이터전송옵션중 Concurrent Threads 항목에서지정한값에따른다. 버튼 항목 [Show Report] [OK] [Cancel] 마이그레이션의결과를확인할수있는 Report 화면이나타난다. 자세한내용은 Report 화면항목을참고한다. 마이그레이션이진행중일때는비활성화되어있다. 작업과정이모두끝나면버튼이활성화되며, 클릭하면모든과정이종료된다. 마이그레이션의진행이중단된다. 작업과정이모두끝나면이버튼은비활성화된다. 제 2 장 tbmigrator 2.0 65
2.2.4. Report 화면 Report 화면은마이그레이션의진행결과를보여준다. [ 그림 2.7] Report 화면 66 Tibero 유틸리티안내서
2.3. 이관대상 tbmigrator 2.0 유틸리티는 Full Mode, Schema Mode, Table Mode 세가지이관모드를지원한다. 각모드는각각다른이관범위를지원한다. Full Mode Full Mode를선택하면데이터베이스안의모든객체들이마이그레이션대상이된다. tablespace role 모든 schema들 system privileges public synonym sequence table index constraint synonym materialized view view referential constraint psm object privileges Schema Mode Schema Mode를선택하는경우마이그레이션의대상은다음과같다. 선택한 schema들과관련된 tablespace들 선택한 schema들과관련된 system privilege들 선택한 schema들 선택한 schema 별로다음객체들이이관된다. public synonym sequence 제 2 장 tbmigrator 2.0 67
table index constraint synonym materialized view view referential constraint psm object privileges Table Mode 선택한 Table 뿐만이아니라, 해당 Table이속한 schema의연관된객체들이이관된다. 선택한 table이속한 schema public synonym sequence table index constraint synonym view referential constraint psm object privileges 각모드에따라이관하는객체는다음표와같다. 항목 Full Mode Schema Mode Table Mode TABLESPACE ROLE SCHEMA ( 일부 ) SYSTEM PRIVILEGE 68 Tibero 유틸리티안내서
항목 Full Mode Schema Mode Table Mode PUBLIC SYNONYM SEQUENCE TABLE ( 일부 ) INDEX ( 일부 ) CONSTRAINT ( 일부 ) SYNONYM MATERIALIZED VIEW VIEW REFERENTIAL CONSTRAINT ( 일부 ) PSM OBJECT PRIVILEGE ( 일부 ) 이때타깃데이터베이스에새로생성된사용자의비밀번호는모두초기화되며, 기본값은 'tibero' 이다. Source 데이터베이스에 Index Organized Table (IOT) 이있는경우, 그대로이관되지않고일반테이블과 Index로분리되어각각별도로이관된다. 또한 Object Privilege의 grantor값은부여할때사용자의특권에따라다르게설정될수있기때문에, 이관후로그인사용자또는 Object의소유자로값이변경될수있다. 다음은간단한예제이다. # DBA권한의사용자로로그인 create user owuser identified by tibero; grant resource, connect to owuser; create user gtuser1 identified by tibero; grant resource, connect to gtuser1; create user gtuser2 identified by tibero; # owuser 사용자로로그인 create table grantest1 ( c1 varchar2(20) ); grant select on grantest1 to gtuser1 with grant option; # gtuser1 사용자로로그인 grant select on owuser.grantest1 to gtuser2; 위의순서로특권을부여하면 grantor가다른 object privilege가생성된다. 이런 grantor에해당되는사용자에대한접속정보를 Migrator에서모두알수없기때문에일괄적으로마이그레이션을수행하며, grantor 가그대로옮겨지지않을수있다. 사용자 A가 grantor이고사용자 B가 grantee인특권을생성하려면위의예제를참고하여, A에게특권을우선부여한뒤, A로로그인하여 B에게다시권한을부여하면된다. 제 2 장 tbmigrator 2.0 69
2.4. 수행예제 다음은 tbmigrator 2.0을사용하는과정에대한이다. 1. tbmigrator 2.0 유틸리티를실행하면다음과같은초기화면이나타난다. [ 그림 2.8] 마이그레이션 - 초기화면 70 Tibero 유틸리티안내서
2. 접속할 Source 데이터베이스의사용자 ID, 패스워드등의입력이완료되면 [Connect] 버튼을클릭한 다. [ 그림 2.9] 마이그레이션 - 소스데이터베이스접속정보입력 제 2 장 tbmigrator 2.0 71
3. 접속할 Tibero 데이터베이스의사용자 ID, 패스워드등의입력이완료되면 [Connect] 버튼을클릭한다. [ 그림 2.10] 마이그레이션 - 타깃데이터베이스접속정보입력 72 Tibero 유틸리티안내서
4. [OPTION] 버튼을클릭한다. 그리고 Option 정보설정이완료되면 [OK] 버튼을클릭한다. [ 그림 2.11] 마이그레이션 - Migration Options 입력화면 5. Source 데이터베이스뷰에서아무것도선택하지않고 [Run] 버튼을클릭하면아래와같은경고창이 뜬다. [ 그림 2.12] 마이그레이션 - 선택하지않고실행한경고창 제 2 장 tbmigrator 2.0 73
6. Source 데이터베이스뷰에서마이그레이션할대상을선택하여 [Run] 버튼을클릭하면마이그레이션 이진행된다. [ 그림 2.13] 마이그레이션 - 선택후실행 7. 마이그레이션을진행하면다음과같이진행상황을보여주는 Progress 대화상자가나타난다. 또한화 면하단의뷰에서진행상황로그를확인할수있다. [ 그림 2.14] 마이그레이션 - 마이그레이션진행 74 Tibero 유틸리티안내서
8. 진행중혹은종료후 Show Report 버튼을누르면다음과같은 Report 화면이뜨고마이그레이션진행 내역을확인할수있다. [ 그림 2.15] 마이그레이션 - Report 화면 제 2 장 tbmigrator 2.0 75
9. 모든마이그레이션과정이끝나면다음과같이 Progress 대화상자의최상단에 COMPLETE 가표시된 다. [OK] 버튼을클릭한다. [ 그림 2.16] 마이그레이션 - 마이그레이션과정완료 10. 모든과정이끝난뒤 Progress 대화상자를닫으면다음과같이마이그레이션이완료되었다는대화상 자가나타난다. [OK] 버튼을클릭한다. [ 그림 2.17] 마이그레이션 - 완료화면 76 Tibero 유틸리티안내서