274
Tibero RDBMS tbPSM 참조 안내서 Tibero RDBMS 4 SP1 Copyright © 2013 TIBERO Co., Ltd. All Rights Reserved.

[11]-TmaxData - Tibero RDBMS 4 SP1... · 2019-06-26 · 본 제품은 “OpenSSL”, “RSA Data Security, Inc.”, “Apache Foundation” 및 “Jean-loup Gailly와 Mark Adler”

  • Upload
    others

  • View
    17

  • Download
    0

Embed Size (px)

Citation preview

Page 1: [11]-TmaxData - Tibero RDBMS 4 SP1... · 2019-06-26 · 본 제품은 “OpenSSL”, “RSA Data Security, Inc.”, “Apache Foundation” 및 “Jean-loup Gailly와 Mark Adler”

Tibero RDBMS

tbPSM 참조 안내서

Tibero RDBMS 4 SP1

Copyright © 2013 TIBERO Co., Ltd. All Rights Reserved.

Page 2: [11]-TmaxData - Tibero RDBMS 4 SP1... · 2019-06-26 · 본 제품은 “OpenSSL”, “RSA Data Security, Inc.”, “Apache Foundation” 및 “Jean-loup Gailly와 Mark Adler”

Copyright Notice

Copyright © 2013 TIBERO Co., Ltd. All Rights Reserved.

대한민국 경기도 성남시 분당구 서현동 272-6 우) 463-824

Restricted Rights Legend

All TIBERO Software (Tibero RDBMS®) 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 RDBMS®) 사용설명서의 내용과 프로그램은 저작권법, 컴퓨터프로그램보호법 및 국제 조약

에 의해서 보호받고 있습니다. 사용설명서의 내용과 여기에 설명된 프로그램은 TIBERO Co., Ltd.와의 사용권 계

약 하에서만 사용이 가능하며, 사용권 계약을 준수하는 경우에만 사용 또는 복제할 수 있습니다. 이 사용설명서의

전부 또는 일부분을 TIBERO의 사전 서면 동의 없이 전자, 기계, 녹음 등의 수단을 사용하여 전송, 복제, 배포, 2차

적 저작물작성 등의 행위를 하여서는 안 됩니다.

Trademarks

Tibero RDBMS® is a registered trademark of TIBERO Co., Ltd. Other products, titles or services may be registered

trademarks of their respective companies.

Tibero RDBMS®는 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 RDBMS tbPSM 참조 안내서

발행일: 2013-02-25

소프트웨어 버전: Tibero RDBMS 4 SP1

안내서 버전: 2.1.4

Page 3: [11]-TmaxData - Tibero RDBMS 4 SP1... · 2019-06-26 · 본 제품은 “OpenSSL”, “RSA Data Security, Inc.”, “Apache Foundation” 및 “Jean-loup Gailly와 Mark Adler”

내용 목차

안내서에 대하여 ......................................................................................................................... xiii

제1장 패키지 소개 ....................................................................................................................... 1

1.1. 개요 ............................................................................................................................ 1

1.2. 구성 ............................................................................................................................ 1

1.2.1. 사용자 정의 패키지 ............................................................................................ 1

1.2.2. 시스템 패키지 ................................................................................................... 4

제2장 DBMS_LOB ..................................................................................................................... 7

2.1. 개요 ............................................................................................................................ 7

2.2. 프로시저 ...................................................................................................................... 9

2.2.1. APPEND ........................................................................................................... 9

2.2.2. COPY ............................................................................................................. 10

2.2.3. CREATETEMPORARY .................................................................................... 12

2.2.4. ERASE ........................................................................................................... 13

2.2.5. FREETEMPORARY ......................................................................................... 15

2.2.6. READ ............................................................................................................. 16

2.2.7. TRIM .............................................................................................................. 17

2.2.8. WRITE ............................................................................................................ 19

2.2.9. WRITEAPPEND .............................................................................................. 20

2.3. 함수 ........................................................................................................................... 22

2.3.1. COMPARE ...................................................................................................... 22

2.3.2. GETLENGTH .................................................................................................. 24

2.3.3. INSTR ............................................................................................................ 25

2.3.4. ISTEMPORARY .............................................................................................. 27

2.3.5. SUBSTR ......................................................................................................... 28

제3장 DBMS_OBFUSCATION_TOOLKIT .................................................................................. 31

3.1. 개요 ........................................................................................................................... 31

3.2. 프로시저와 함수 ......................................................................................................... 32

3.2.1. DES3DECRYPT .............................................................................................. 32

3.2.2. DES3ENCRYPT .............................................................................................. 34

3.2.3. DES3GETKEY ................................................................................................ 36

3.2.4. DESDECRYPT ................................................................................................ 38

3.2.5. DESENCRYPT ................................................................................................ 40

3.2.6. DESGETKEY .................................................................................................. 41

제4장 DBMS_OUTPUT ............................................................................................................. 45

4.1. 개요 ........................................................................................................................... 45

4.2. 프로시저 .................................................................................................................... 45

4.2.1. DISABLE ........................................................................................................ 45

4.2.2. ENABLE ......................................................................................................... 46

4.2.3. GET_LINE, GET_LINES ................................................................................ 162

Tibero RDBMS iii

Page 4: [11]-TmaxData - Tibero RDBMS 4 SP1... · 2019-06-26 · 본 제품은 “OpenSSL”, “RSA Data Security, Inc.”, “Apache Foundation” 및 “Jean-loup Gailly와 Mark Adler”

4.2.4. NEW_LINE ..................................................................................................... 49

4.2.5. PUT, PUT_LINE .............................................................................................. 49

제5장 DBMS_STATS ................................................................................................................ 51

5.1. 개요 ........................................................................................................................... 51

5.2. 프로시저 .................................................................................................................... 51

5.2.1. CREATE_STAT_TABLE .................................................................................... 51

5.2.2. DELETE_COLUMN_STATS ............................................................................. 52

5.2.3. DELETE_DATABASE_STATS ........................................................................... 53

5.2.4. DELETE_DICTIONARY_STATS ....................................................................... 53

5.2.5. DELETE_INDEX_STATS .................................................................................. 53

5.2.6. DELETE_SCHEMA_STATS .............................................................................. 54

5.2.7. DELETE_SYSTEM_STATS .............................................................................. 55

5.2.8. DELETE_TABLE_STATS .................................................................................. 55

5.2.9. DROP_STAT_TABLE ....................................................................................... 56

5.2.10. EXPORT_COLUMN_STATS ........................................................................... 57

5.2.11. EXPORT_DATABASE_STATS ........................................................................ 58

5.2.12. EXPORT_INDEX_STATS ............................................................................... 58

5.2.13. EXPORT_SCHEMA_STATS ........................................................................... 59

5.2.14. EXPORT_SYSTEM_STATS ............................................................................ 60

5.2.15. EXPORT_TABLE_STATS ............................................................................... 61

5.2.16. GATHER_DATABASE_STATS ......................................................................... 61

5.2.17. GATHER_DICTIONARY_STATS ..................................................................... 63

5.2.18. GATHER_INDEX_STATS ............................................................................... 64

5.2.19. GATHER_SCHEMA_STATS ........................................................................... 65

5.2.20. GATHER_SYSTEM_STATS ............................................................................ 66

5.2.21. GATHER_TABLE_STATS ............................................................................... 67

5.2.22. IMPORT_COLUMN_STATS ............................................................................ 69

5.2.23. IMPORT_DATABASE_STATS ......................................................................... 70

5.2.24. IMPORT_INDEX_STATS ................................................................................ 70

5.2.25. IMPORT_SCHEMA_STATS ............................................................................ 71

5.2.26. IMPORT_SYSTEM_STATS ............................................................................ 72

5.2.27. IMPORT_TABLE_STATS ................................................................................ 72

5.2.28. SET_PARAM ................................................................................................. 73

5.2.29. SET_SYSTEM_STATS ................................................................................... 75

5.3. 함수 ........................................................................................................................... 76

5.3.1. GET_PARAM .................................................................................................. 76

5.3.2. LOCAL_TRANSACTION_ID ............................................................................. 76

5.3.3. TO_BOOLEAN ................................................................................................ 77

제6장 DBMS_TRANSACTION .................................................................................................. 79

6.1. 개요 ........................................................................................................................... 79

6.2. 프로시저 .................................................................................................................... 79

6.2.1. COMMIT ......................................................................................................... 79

iv Tibero RDBMS tbPSM 참조 안내서

Page 5: [11]-TmaxData - Tibero RDBMS 4 SP1... · 2019-06-26 · 본 제품은 “OpenSSL”, “RSA Data Security, Inc.”, “Apache Foundation” 및 “Jean-loup Gailly와 Mark Adler”

6.2.2. ROLLBACK, ROLLBACK_SAVEPOINT ............................................................. 80

6.2.3. SAVEPOINT .................................................................................................... 80

제7장 UTL_RAW ...................................................................................................................... 83

7.1. 개요 ........................................................................................................................... 83

7.2. 함수 ........................................................................................................................... 83

7.2.1. BIT_AND ........................................................................................................ 83

7.2.2. BIT_COMPLEMENT ........................................................................................ 84

7.2.3. BIT_OR .......................................................................................................... 85

7.2.4. BIT_XOR ........................................................................................................ 86

7.2.5. CAST_FROM_BINARY_DOUBLE .................................................................... 87

7.2.6. CAST_FROM_BINARY_FLOAT ........................................................................ 88

7.2.7. CAST_FROM_BINARY_INTEGER ................................................................... 89

7.2.8. CAST_FROM_NUMBER .................................................................................. 91

7.2.9. CAST_TO_BINARY_DOUBLE .......................................................................... 92

7.2.10. CAST_TO_BINARY_FLOAT ........................................................................... 93

7.2.11. CAST_TO_BINARY_INTEGER ....................................................................... 94

7.2.12. CAST_TO_NUMBER ..................................................................................... 95

7.2.13. CAST_TO_RAW ............................................................................................ 96

7.2.14. CAST_TO_VARCHAR2 .................................................................................. 97

7.2.15. COMPARE .................................................................................................... 98

7.2.16. CONCAT ....................................................................................................... 99

7.2.17. COPIES ...................................................................................................... 101

7.2.18. LENGTH ..................................................................................................... 102

7.2.19. OVERLAY ................................................................................................... 103

7.2.20. REVERSE ................................................................................................... 104

7.2.21. SUBSTR ..................................................................................................... 105

7.2.22. TRANSLATE ............................................................................................... 106

7.2.23. TRANSLITERATE ........................................................................................ 107

7.2.24. XRANGE ..................................................................................................... 108

제8장 DBMS_JOB .................................................................................................................. 111

8.1. 개요 ......................................................................................................................... 111

8.2. 프로시저 .................................................................................................................. 111

8.2.1. BROKEN ....................................................................................................... 111

8.2.2. CHANGE ...................................................................................................... 112

8.2.3. INTERVAL ..................................................................................................... 113

8.2.4. NEXT_DATE ................................................................................................. 114

8.2.5. REMOVE ...................................................................................................... 115

8.2.6. RUN ............................................................................................................. 115

8.2.7. SUBMIT ........................................................................................................ 116

8.2.8. WHAT ........................................................................................................... 117

제9장 DBMS_SQL .................................................................................................................. 119

9.1. 개요 ......................................................................................................................... 119

Tibero RDBMS v

Page 6: [11]-TmaxData - Tibero RDBMS 4 SP1... · 2019-06-26 · 본 제품은 “OpenSSL”, “RSA Data Security, Inc.”, “Apache Foundation” 및 “Jean-loup Gailly와 Mark Adler”

9.2. 타입 ......................................................................................................................... 120

9.2.1. DESC_REC .................................................................................................. 121

9.2.2. DESC_REC2 ................................................................................................. 121

9.2.3. DESC_TAB ................................................................................................... 121

9.2.4. DESC_TAB2 .................................................................................................. 121

9.3. 프로시저 .................................................................................................................. 121

9.3.1. BIND_VARIABLE ........................................................................................... 121

9.3.2. CLOSE_CURSOR ......................................................................................... 124

9.3.3. COLUMN_VALUE .......................................................................................... 125

9.3.4. DEFINE_COLUMN ........................................................................................ 133

9.3.5. DESCRIBE_COLUMNS ................................................................................. 133

9.3.6. DESCRIBE_COLUMNS2 ............................................................................... 133

9.3.7. PARSE .......................................................................................................... 134

9.4. 함수 ......................................................................................................................... 135

9.4.1. EXECUTE ..................................................................................................... 135

9.4.2. EXECUTE_AND_FETCH ............................................................................... 136

9.4.3. FETCH_ROWS ............................................................................................. 137

9.4.4. OPEN_CURSOR ........................................................................................... 139

9.4.5. IS_OPEN ...................................................................................................... 172

9.4.6. LAST_ERROR_POSITION ............................................................................. 140

9.4.7. LAST_ROW_COUNT ..................................................................................... 141

제10장 DBMS_ROWID ............................................................................................................ 143

10.1. 개요 ....................................................................................................................... 143

10.2. 프로시저 ................................................................................................................ 143

10.2.1. ROWID_INFO .............................................................................................. 143

10.3. 함수 ....................................................................................................................... 144

10.3.1. ROWID_CREATE ........................................................................................ 144

10.3.2. ROWID_SEGMENT ..................................................................................... 145

10.3.3. ROWID_BLOCK_NUMBER .......................................................................... 145

10.3.4. ROWID_ROW_NUMBER ............................................................................. 146

10.3.5. ROWID_ABSOLUTE_FNO ........................................................................... 147

10.3.6. ROWID_TO_RELATIVE_FNO ....................................................................... 147

제11장 DBMS_JAVA ............................................................................................................... 149

11.1. 개요 ....................................................................................................................... 149

11.2. 프로시저 ................................................................................................................ 149

11.2.1. SET_OUTPUT ............................................................................................. 149

11.3. 함수 ....................................................................................................................... 150

11.3.1. LONGNAME ................................................................................................ 150

11.3.2. SHORTNAME .............................................................................................. 150

제12장 UTL_FILE ................................................................................................................... 153

12.1. 개요 ....................................................................................................................... 153

12.2. 프로시저 ................................................................................................................ 154

vi Tibero RDBMS tbPSM 참조 안내서

Page 7: [11]-TmaxData - Tibero RDBMS 4 SP1... · 2019-06-26 · 본 제품은 “OpenSSL”, “RSA Data Security, Inc.”, “Apache Foundation” 및 “Jean-loup Gailly와 Mark Adler”

12.2.1. FCLOSE ..................................................................................................... 154

12.2.2. FCLOSE_ALL .............................................................................................. 155

12.2.3. FCOPY ....................................................................................................... 156

12.2.4. FFLUSH ...................................................................................................... 157

12.2.5. FGETATTR .................................................................................................. 158

12.2.6. FREMOVE .................................................................................................. 159

12.2.7. FRENAME .................................................................................................. 160

12.2.8. FSEEK ........................................................................................................ 161

12.2.9. GET_LINE ................................................................................................... 162

12.2.10. GET_RAW ................................................................................................. 163

12.2.11. NEW_LINE ................................................................................................ 164

12.2.12. PUT .......................................................................................................... 165

12.2.13. PUTF ........................................................................................................ 166

12.2.14. PUT_RAW ................................................................................................. 167

12.2.15. PUT_LINE ................................................................................................. 168

12.3. 함수 ....................................................................................................................... 169

12.3.1. FGETPOS ................................................................................................... 169

12.3.2. FOPEN ....................................................................................................... 170

12.3.3. IS_OPEN .................................................................................................... 172

제13장 DBMS_REDEFINITION ............................................................................................... 175

13.1. 개요 ....................................................................................................................... 175

13.2. 프로시저 ................................................................................................................ 175

13.2.1. ABORT_REDEF_TABLE .............................................................................. 175

13.2.2. FINISH_REDEF_TABLE ............................................................................... 176

13.2.3. START_REDEF_TABLE ............................................................................... 177

13.2.4. SYNC_INTERIM_TABLE .............................................................................. 178

제14장 UTL_ENCODE ............................................................................................................ 181

14.1. 개요 ....................................................................................................................... 181

14.2. 함수 ....................................................................................................................... 181

14.2.1. BASE64_DECODE ...................................................................................... 181

14.2.2. BASE64_ENCODE ...................................................................................... 182

14.2.3. TEXT_ENCODE .......................................................................................... 183

제15장 UTL_URL ................................................................................................................... 185

15.1. 개요 ....................................................................................................................... 185

15.2. 함수 ....................................................................................................................... 185

15.2.1. ESCAPE ..................................................................................................... 185

15.2.2. UNESCAPE ................................................................................................ 186

제16장 UTL_HTTP .................................................................................................................. 189

16.1. 개요 ....................................................................................................................... 189

16.2. 함수 ....................................................................................................................... 189

16.2.1. REQUEST ................................................................................................... 189

Tibero RDBMS vii

Page 8: [11]-TmaxData - Tibero RDBMS 4 SP1... · 2019-06-26 · 본 제품은 “OpenSSL”, “RSA Data Security, Inc.”, “Apache Foundation” 및 “Jean-loup Gailly와 Mark Adler”

제17장 DBMS_APM ............................................................................................................... 191

17.1. 개요 ....................................................................................................................... 191

17.2. 프로시저 ................................................................................................................ 191

17.2.1. CREATE_SNAPSHOT .................................................................................. 191

17.2.2. REPORT_TEXT ........................................................................................... 192

제18장 DBMS_MVIEW ............................................................................................................ 193

18.1. 개요 ....................................................................................................................... 193

18.2. 프로시저 ................................................................................................................ 193

18.2.1. EXPLAIN_REWRITE ................................................................................... 193

18.2.2. REFRESH ................................................................................................... 194

제19장 DBMS_SPACE ............................................................................................................ 197

19.1. 개요 ....................................................................................................................... 197

19.2. 프로시저 ................................................................................................................ 197

19.2.1. SPACE_USAGE .......................................................................................... 197

19.2.2. UNUSED_SPACE ....................................................................................... 200

제20장 DBMS_SPACE_ADMIN ............................................................................................... 203

20.1. 개요 ....................................................................................................................... 203

20.2. 프로시저 ................................................................................................................ 203

20.2.1. SEGMENT_DUMP ...................................................................................... 203

제21장 DBMS_CRYPTO ......................................................................................................... 205

21.1. 개요 ....................................................................................................................... 205

21.2. 암호화/복호화 알고리즘 및 체인, 패딩 ...................................................................... 205

21.3. 해시 알고리즘 ......................................................................................................... 207

21.4. 프로시저와 함수 ..................................................................................................... 207

21.4.1. DECRYPT ................................................................................................... 242

21.4.2. ENCRYPT ................................................................................................... 209

21.4.3. HASH ......................................................................................................... 210

제22장 DBMS_TYPES ............................................................................................................ 213

22.1. 개요 ....................................................................................................................... 213

22.2. 상수 목록 ............................................................................................................... 213

제23장 DBMS_RANDOM ........................................................................................................ 215

23.1. 개요 ....................................................................................................................... 215

23.2. 프로시저와 함수 ..................................................................................................... 215

23.2.1. NORMAL .................................................................................................... 215

23.2.2. RANDOM .................................................................................................... 215

23.2.3. SEED .......................................................................................................... 216

23.2.4. STRING ...................................................................................................... 217

23.2.5. VALUE ........................................................................................................ 218

제24장 DBMS_SYSTEM ......................................................................................................... 221

24.1. 개요 ....................................................................................................................... 221

viii Tibero RDBMS tbPSM 참조 안내서

Page 9: [11]-TmaxData - Tibero RDBMS 4 SP1... · 2019-06-26 · 본 제품은 “OpenSSL”, “RSA Data Security, Inc.”, “Apache Foundation” 및 “Jean-loup Gailly와 Mark Adler”

24.2. 프로시저와 함수 ..................................................................................................... 221

24.2.1. SET_SQL_TRACE_IN_SESSION ................................................................. 221

제25장 DBMS_UTILITY .......................................................................................................... 223

25.1. 개요 ....................................................................................................................... 223

25.2. 프로시저와 함수 ..................................................................................................... 223

25.2.1. COMMA_TO_TABLE .................................................................................... 223

25.2.2. GET_TIME .................................................................................................. 224

제26장 DBMS_ERRLOG ......................................................................................................... 225

26.1. 개요 ....................................................................................................................... 225

26.2. 프로시저 ................................................................................................................ 225

26.2.1. CREATE_ERROR_LOG ............................................................................... 225

제27장 DBMS_REPAIR ........................................................................................................... 229

27.1. 개요 ....................................................................................................................... 229

27.2. 함수 ....................................................................................................................... 229

27.2.1. ONLINE_INDEX_CLEAN ............................................................................. 229

제28장 DBMS_APPLICATION_INFO ....................................................................................... 233

28.1. 개요 ....................................................................................................................... 233

28.2. 프로시저 ................................................................................................................ 233

28.2.1. READ_CLIENT_INFO .................................................................................. 233

28.2.2. READ_MODULE ......................................................................................... 234

28.2.3. SET_ACTION .............................................................................................. 234

28.2.4. SET_CLIENT_INFO ..................................................................................... 235

28.2.5. SET_MODULE ............................................................................................ 236

28.2.6. SET_SESSION_LONGOPS ......................................................................... 237

제29장 DBMS_LOCK ............................................................................................................. 239

29.1. 개요 ....................................................................................................................... 239

29.2. 프로시저 ................................................................................................................ 239

29.2.1. SLEEP ........................................................................................................ 239

제30장 UTL_I18N ................................................................................................................... 241

30.1. 개요 ....................................................................................................................... 241

30.2. 프로시저와 함수 ..................................................................................................... 241

30.2.1. RAW_TO_CHAR ......................................................................................... 242

30.2.2. STRING_TO_RAW ..................................................................................... 242

제31장 DBMS_SESSION ........................................................................................................ 243

31.1. 개요 ....................................................................................................................... 243

31.2. 프로시저 ................................................................................................................ 243

31.2.1. CLEAR_IDENTIFIER ................................................................................... 243

31.2.2. UNIQUE_SESSION_ID ................................................................................ 243

31.2.3. SET_IDENTIFIER ........................................................................................ 244

색인 .......................................................................................................................................... 245

Tibero RDBMS ix

Page 10: [11]-TmaxData - Tibero RDBMS 4 SP1... · 2019-06-26 · 본 제품은 “OpenSSL”, “RSA Data Security, Inc.”, “Apache Foundation” 및 “Jean-loup Gailly와 Mark Adler”
Page 11: [11]-TmaxData - Tibero RDBMS 4 SP1... · 2019-06-26 · 본 제품은 “OpenSSL”, “RSA Data Security, Inc.”, “Apache Foundation” 및 “Jean-loup Gailly와 Mark Adler”

예 목차

[예 1.1] EMP_MGMT 패키지의 선언부 ......................................................................................... 2

[예 1.2] EMP_MGMT 패키지의 구현부 ......................................................................................... 3

Tibero RDBMS xi

Page 12: [11]-TmaxData - Tibero RDBMS 4 SP1... · 2019-06-26 · 본 제품은 “OpenSSL”, “RSA Data Security, Inc.”, “Apache Foundation” 및 “Jean-loup Gailly와 Mark Adler”
Page 13: [11]-TmaxData - Tibero RDBMS 4 SP1... · 2019-06-26 · 본 제품은 “OpenSSL”, “RSA Data Security, Inc.”, “Apache Foundation” 및 “Jean-loup Gailly와 Mark Adler”

안내서에 대하여

안내서의 대상

본 안내서는 Tibero RDBMS®(이하 Tibero RDBMS)에서 제공하는 저장 프로시저 모듈 즉 tbPSM(Tibero

의 Persistent Stored Module) 패키지를 참조하려는 데이터베이스 관리자(Database Administrator, 이하

DBA), 애플리케이션 프로그램 개발자를 대상으로 기술한다.

안내서의 전제 조건본 안내서를 원활히 이해하기 위해서는 다음과 같은 사항을 미리 알고 있어야 한다.

● 데이터베이스의 이해

● RDBMS의 이해

● SQL의 이해

● tbPSM의 이해

안내서의 제한 조건

본 안내서는 Tibero RDBMS를 실무에 적용하거나 운용하는 데 필요한 모든 사항을 포함하고 있지 않다.

따라서 설치, 환경설정 등 운용 및 관리에 대해서는 각 제품 안내서를 참고하기 바란다.

참고

Tibero RDBMS의 설치 및 환경 설정에 관한 내용은 "Tibero RDBMS 설치 안내서"를 참고한다.

안내서에 대하여 xiii

Page 14: [11]-TmaxData - Tibero RDBMS 4 SP1... · 2019-06-26 · 본 제품은 “OpenSSL”, “RSA Data Security, Inc.”, “Apache Foundation” 및 “Jean-loup Gailly와 Mark Adler”

안내서 구성

Tibero RDBMS tbPSM 참조 안내서의 각 장의 주요 내용은 다음과 같다.

● 제1장: 패키지 소개

패키지의 기본 개념과 구성을 간략히 소개한다.

● 제2장: DBMS_LOB

DBMS_LOB 패키지의 개요와 사용 방법을 기술한다.

● 제3장: DBMS_OBFUSCATION_TOOLKIT

DBMS_OBFUSCATION_TOOLKIT 패키지의 개요와 사용 방법을 기술한다.

● 제4장: DBMS_OUTPUT

DBMS_OUTPUT 패키지의 개요와 사용 방법을 기술한다.

● 제5장: DBMS_STATS

DBMS_STATS 패키지의 개요와 사용 방법을 기술한다.

● 제6장: DBMS_TRANSACTION

DBMS_TRANSACTION 패키지의 개요와 사용 방법을 기술한다.

● 제7장: UTL_RAW

UTL_RAW 패키지의 개요와 사용 방법을 기술한다.

● 제8장: DBMS_JOB

DBMS_JOB 패키지의 개요와 사용 방법을 기술한다.

● 제9장: DBMS_SQL

DBMS_SQL 패키지의 개요와 사용 방법을 기술한다.

● 제10장: DBMS_ROWID

DBMS_ROWID 패키지의 개요와 사용 방법을 기술한다.

● 제11장: DBMS_JAVA

DBMS_JAVA 패키지의 개요와 사용 방법을 기술한다.

xiv Tibero RDBMS tbPSM 참조 안내서

Page 15: [11]-TmaxData - Tibero RDBMS 4 SP1... · 2019-06-26 · 본 제품은 “OpenSSL”, “RSA Data Security, Inc.”, “Apache Foundation” 및 “Jean-loup Gailly와 Mark Adler”

● 제12장: UTL_FILE

UTL_FILE 패키지의 개요와 사용 방법을 기술한다.

● 제13장: DBMS_REDEFINITION

DBMS_REDEFINITION 패키지의 개요와 사용 방법을 기술한다.

● 제14장: UTL_ENCODE

UTL_ENCODE 패키지의 개요와 사용 방법을 기술한다.

● 제15장: UTL_URL

UTL_URL 패키지의 개요와 사용 방법을 기술한다.

● 제16장: UTL_HTTP

UTL_HTTP 패키지의 개요와 사용 방법을 기술한다.

● 제17장: DBMS_APM

DBMS_APM 패키지의 개요와 사용 방법을 기술한다.

● 제18장: DBMS_MVIEW

DBMS_MVIEW 패키지의 개요와 사용 방법을 기술한다.

● 제19장: DBMS_SPACE

DBMS_SPACE 패키지의 개요와 사용 방법을 기술한다.

● 제20장: DBMS_SPACE_ADMIN

DBMS_SPACE_ADMIN 패키지의 개요와 사용 방법을 기술한다.

● 제21장: DBMS_CRYPTO

DBMS_CRYPTO 패키지의 개요와 사용 방법을 기술한다.

● 제22장: DBMS_TYPES

DBMS_TYPES 패키지의 개요와 사용 방법을 기술한다.

● 제23장: DBMS_RANDOM

DBMS_RANDOM 패키지의 개요와 사용 방법을 기술한다.

안내서에 대하여 xv

Page 16: [11]-TmaxData - Tibero RDBMS 4 SP1... · 2019-06-26 · 본 제품은 “OpenSSL”, “RSA Data Security, Inc.”, “Apache Foundation” 및 “Jean-loup Gailly와 Mark Adler”

● 제24장: DBMS_SYSTEM

DBMS_SYSTEM 패키지의 개요와 사용 방법을 기술한다.

● 제25장: DBMS_UTILITY

DBMS_UTILITY 패키지의 개요와 사용 방법을 기술한다.

● 제26장: DBMS_ERRLOG

DBMS_ERRLOG 패키지의 개요와 사용 방법을 기술한다.

● 제27장: DBMS_REPAIR

DBMS_REPAIR 패키지의 개요와 사용 방법을 기술한다.

● 제28장: DBMS_APPLICATION_INFO

DBMS_APPLICATION_INFO 패키지의 개요와 사용 방법을 기술한다.

● 제29장: DBMS_LOCK

DBMS_LOCK 패키지의 개요와 사용 방법을 기술한다.

● 제30장: DBMS_SESSION

DBMS_SESSION 패키지의 개요와 사용 방법을 기술한다.

● 제31장: UTL_I18N

UTL_I18N 패키지의 개요와 사용 방법을 기술한다.

xvi Tibero RDBMS tbPSM 참조 안내서

Page 17: [11]-TmaxData - Tibero RDBMS 4 SP1... · 2019-06-26 · 본 제품은 “OpenSSL”, “RSA Data Security, Inc.”, “Apache Foundation” 및 “Jean-loup Gailly와 Mark Adler”

안내서 규약

의미표기

프로그램 소스 코드의 파일명, 디렉터리<AaBbCc123>

Ctrl과 C를 동시에 누름<Ctrl>+C

GUI의 버튼 또는 메뉴 이름[Button]

강조진하게

다른 관련 안내서 또는 안내서 내의 다른 장 및 절 언급" "(따옴표)

화면 UI에서 입력 항목에 대한 설명'입력항목'

메일계정, 웹 사이트하이퍼링크

메뉴의 진행 순서>

하위 디렉터리 또는 파일 있음+----

하위 디렉터리 또는 파일 없음|----

참고 또는 주의사항참고

그림 이름[그림 1.1]

표 이름[표 1.1]

명령어, 명령어 수행 후 화면에 출력된 결과물, 예제코드AaBbCc123

필수 인수 값{ }

옵션 인수 값[ ]

선택 인수 값|

안내서에 대하여 xvii

Page 18: [11]-TmaxData - Tibero RDBMS 4 SP1... · 2019-06-26 · 본 제품은 “OpenSSL”, “RSA Data Security, Inc.”, “Apache Foundation” 및 “Jean-loup Gailly와 Mark Adler”

시스템 사용 환경

요구 사항

HP-UX 11i (PA-RISC, ia64)Platform

Solaris (SPARC 9/Solaris 9)

AIX (PPC 5L/AIX 5.3)

GNU (X86, 64, IA64)

Linux kernel 2.6 이상

최소 1.5GB 하드디스크 공간Hardware

512MB 이상 메모리 공간

PSM (C99 지원 필요)Compiler

tbESQL/C (C99 지원 필요)

xviii Tibero RDBMS tbPSM 참조 안내서

Page 19: [11]-TmaxData - Tibero RDBMS 4 SP1... · 2019-06-26 · 본 제품은 “OpenSSL”, “RSA Data Security, Inc.”, “Apache Foundation” 및 “Jean-loup Gailly와 Mark Adler”

관련 안내서

설명안내서

설치 시 필요한 시스템 요구사항과 설치 및 제거 방법을 기술한 안내서이

다.

Tibero RDBMS

설치 안내서

Call Level Interface인 tbCLI의 개념과 구성요소, 프로그램 구조를 소개하

고 tbCLI 프로그램을 작성하는 데 필요한 데이터 타입, 함수, 에러 메시지

를 기술한 안내서이다.

Tibero RDBMS

tbCLI 안내서

각종 애플리케이션 라이브러리를 이용하여 애플리케이션 프로그램을 개

발하는 방법을 기술한 안내서이다.

Tibero RDBMS

애플리케이션 개발자 안내서

External Procedure를 소개하고 이를 생성하고 사용하는 방법을 기술한

안내서이다.

Tibero RDBMS

External Procedure 안내서

Tibero RDBMS에서 제공하는 JDBC 기능을 이용하여 애플리케이션 프로

그램을 개발하는 방법을 기술한 안내서이다.

Tibero RDBMS

JDBC 개발자 안내서

C 프로그래밍 언어를 사용해 데이터베이스 작업을 수행하는 각종 애플리

케이션 프로그램을 작성하는 방법을 기술한 안내서이다.

Tibero RDBMS

tbESQL/C 안내서

COBOL 프로그래밍 언어를 사용해 데이터베이스 작업을 수행하는 각종

애플리케이션 프로그램을 작성하는 방법을 기술한 안내서이다.

Tibero RDBMS

tbESQL/COBOL 안내서

저장 프로시저 모듈인 tbPSM의 개념과 문법, 구성요소를 소개하고, tbPSM

프로그램을 작성하는 데 필요한 제어 구조, 복합 타입, 서브프로그램, 패

Tibero RDBMS

tbPSM 안내서키지와 SQL 문장을 실행하고 에러를 처리하는 방법을 기술한 안내서이

다.

Tibero RDBMS의 동작과 주요 기능의 원활한 수행을 보장하기 위해 DBA

가 알아야 할 관리 방법을 논리적 또는 물리적 측면에서 설명하고, 관리를

지원하는 각종 도구를 기술한 안내서이다.

Tibero RDBMS

관리자 안내서

SQL/PSM 처리와 DBA를 위한 시스템 관리 기능을 제공하는 GUI 기반의

툴인 tbAdmin을 소개하고, 설치 및 사용 방법을 기술한 안내서이다.

Tibero RDBMS

tbAdmin 안내서

데이터베이스와 관련된 작업을 수행하기 위해 필요한 유틸리티의 설치

및 환경설정, 사용 방법을 기술한 안내서이다.

Tibero RDBMS

유틸리티 안내서

Tibero RDBMS를 사용하는 도중에 발생할 수 있는 각종 에러의 원인과

해결 방법을 기술한 안내서이다.

Tibero RDBMS

안내서에 대하여 xix

Page 20: [11]-TmaxData - Tibero RDBMS 4 SP1... · 2019-06-26 · 본 제품은 “OpenSSL”, “RSA Data Security, Inc.”, “Apache Foundation” 및 “Jean-loup Gailly와 Mark Adler”

설명안내서

에러 참조 안내서

Tibero RDBMS의 동작과 사용에 필요한 초기화 파라미터와 데이터 사전,

정적 뷰, 동적 뷰를 기술한 참조 안내서이다.

Tibero RDBMS

참조 안내서

데이터베이스 작업을 수행하거나 애플리케이션 프로그램을 작성할 때 필

요한 SQL 문장을 기술한 참조 안내서이다.

Tibero RDBMS

SQL 참조 안내서

xx Tibero RDBMS tbPSM 참조 안내서

Page 21: [11]-TmaxData - Tibero RDBMS 4 SP1... · 2019-06-26 · 본 제품은 “OpenSSL”, “RSA Data Security, Inc.”, “Apache Foundation” 및 “Jean-loup Gailly와 Mark Adler”

연락처

Korea

TIBERO Co., Ltd

272-6 Tmax Building 3th floor, Seohyeon-dong, Bundang-gu,

Seongnam-si, Gyeonggi-do, 463-824

South Korea

Tel: +82-31-779-7113

Fax: +82-31-779-7119

Email: [email protected]

Web (Korean): http://www.tibero.com

기술지원: http://technet.tmaxsoft.com

USA

TmaxSoft, Inc.

560 Sylvan Avenue Englewood Cliffs, NJ 07632

U.S.A

Tel: +1-201-567-8266

Fax: +1-201-567-7339

Email: [email protected]

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: [email protected]

Web (Japanese): http://www.tmaxsoft.co.jp

안내서에 대하여 xxi

Page 22: [11]-TmaxData - Tibero RDBMS 4 SP1... · 2019-06-26 · 본 제품은 “OpenSSL”, “RSA Data Security, Inc.”, “Apache Foundation” 및 “Jean-loup Gailly와 Mark Adler”

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: [email protected]

Web (Chinese): http://www.tmaxsoft.com.cn

xxii Tibero RDBMS tbPSM 참조 안내서

Page 23: [11]-TmaxData - Tibero RDBMS 4 SP1... · 2019-06-26 · 본 제품은 “OpenSSL”, “RSA Data Security, Inc.”, “Apache Foundation” 및 “Jean-loup Gailly와 Mark Adler”

제1장 패키지 소개

본 장에서는 패키지의 기본 개념과 구성을 소개한다.

1.1. 개요패키지(package)는 하나 이상의 tbPSM 프로시저(procedure)와 함수(function) 등을 포함하는 스키마 객

체이다. 하나의 패키지에 포함되는 스키마 객체는 프로시저와 함수를 비롯하여 변수, 커서(cursor), 예외

상황(exception) 등이 있다.

패키지는 프로시저, 함수와 마찬가지로 임의의 SQL 문장에서 사용할 수 있다.

패키지를 사용함으로써 얻을 수 있는 장점은 다음과 같다.

● 연관된 프로시저와 함수의 개발과 관리가 쉽다.

예를 들어, 여러 프로시저와 함수에서 공통으로 액세스하는 변수를 패키지에 포함시킬 수 있다.

● 애플리케이션 프로그램의 개발이 쉽다.

패키지에서 지원하는 여러 기능을 이용하면 좀 더 강력한 애플리케이션 프로그램을 작성할 수 있다.

● 효율적인 실행이 가능하다.

권한의 부여와 회수, 메모리 로딩(memory loading) 등이 패키지 단위로 수행되기 때문에 효율적인 실행

이 가능하다.

1.2. 구성패키지는 사용자 정의 패키지와 Tibero RDBMS에서 제공하는 시스템 패키지로 구성된다.

1.2.1. 사용자 정의 패키지

사용자 정의 패키지는 사용자가 원하는 목적에 맞춰 정의하는 패키지이다. 사용자 정의 패키지는 프로시

저, 함수와 유사하게 다음과 같이 정의할 수 있다.

제1장 패키지 소개 1

Page 24: [11]-TmaxData - Tibero RDBMS 4 SP1... · 2019-06-26 · 본 제품은 “OpenSSL”, “RSA Data Security, Inc.”, “Apache Foundation” 및 “Jean-loup Gailly와 Mark Adler”

패키지 선언부

외부 인터페이스이며 공개 프로시저(public procedure)와 함수, 변수, 상수 등을 포함한다.

패키지 선언부의 세부 내용은 다음과 같다.

● 문법

CREATE [OR REPLACE] PACKAGE package_name [invoker_rights] AS

-- 공개 프로시저의 선언

-- 공개 함수의 선언

-- 공개 변수, 상수, 예외 상황의 선언

END [package_name];

● 특징

– CREATE PACKAGE 문장을 이용하여 선언부를 생성한다.

– 패키지 이름(package_name) 다음에 패키지를 호출자 권한(invoker's rights) 또는 정의자 권한(definer's

rights)으로 실행할 것인지를 설정할 수 있다. 설정이 생략되면 정의자 권한으로 실행된다.

– END 다음에 패키지 이름은 생략해도 상관없다.

● 사용 예제

[예 1.1] EMP_MGMT 패키지의 선언부

CREATE PACKAGE EMP_MGMT AS ... EMP_MGMT 패키지의 선언부 ...

FUNCTION HIRE(ENAME VARCHAR, ADDR VARCHAR, SALARY NUMBER,

DEPTNO INT) RETURN INT;

PROCEDURE FIRE(EMPNO INT);

PROCEDURE RAISE_SALARY(EMPNO INT, AMOUNT NUMBER);

EMP_NOT_FOUND EXCEPTION;

END EMP_MGMT;

위의 예에서는 EMP_MGMT 패키지를 정의자 권한으로 실행하며, 공개 프로시저(2개)와 함수(1개) 그

리고 공개 예외 상황(1개)를 포함하고 있다.

패키지 구현부

실제 프로그램이 구현되는 부분이다. 공개 프로시저와 함수 등의 프로그램 구현부와 함께 비공개 프로시

저(private procedure)와 함수, 변수 등을 포함한다.

2 Tibero RDBMS tbPSM 참조 안내서

Page 25: [11]-TmaxData - Tibero RDBMS 4 SP1... · 2019-06-26 · 본 제품은 “OpenSSL”, “RSA Data Security, Inc.”, “Apache Foundation” 및 “Jean-loup Gailly와 Mark Adler”

패키지 구현부의 세부 내용은 다음과 같다.

● 문법

CREATE [OR REPLACE] PACKAGE BODY package_name AS

-- 공개 프로시저의 구현부

-- 공개 함수의 구현부

-- 비공개 프로시저 및 함수의 선언부

-- 비공개 프로시저 및 함수의 구현부

-- 비공개 변수, 상수, 예외 상황의 정의

[BEGIN

-- 초기화 명령어의 집합부

END [package_name];

● 특징

– CREATE PACKAGE BODY 문장을 이용하여 구현부를 생성한다.

– END 다음에 패키지 이름은 생략해도 상관없다.

● 사용 예제

[예 1.2] EMP_MGMT 패키지의 구현부

CREATE PACKAGE BODY EMP_MGMT AS ... EMP_MGMT 패키지의 구현부 ...

NUM_EMP INT;

EMPNO NUMBER := 0;

FUNCTION HIRE(ENAME VARCHAR, ADDR VARCHAR, SALARY NUMBER,

DEPTNO INT) RETURN INT AS

BEGIN

EMPNO := EMPNO + 1; ... 새로운 EMPNO 생성 ...

INSERT INTO EMP VALUES (EMPNO, ENAME, ADDR, SALARY, DEPTNO);

NUM_EMP := NUM_EMP + 1;

RETURN(EMPNO);

END;

PROCEDURE FIRE(EMPNO INT) AS

BEGIN

DELETE FROM EMP WHERE EMP.EMPNO = FIRE.EMPNO;

NUM_EMP := NUM_EMP ? 1;

END;

PROCEDURE RAISE_SALARY(EMPNO INT, AMOUNT NUMBER) AS

BEGIN

제1장 패키지 소개 3

Page 26: [11]-TmaxData - Tibero RDBMS 4 SP1... · 2019-06-26 · 본 제품은 “OpenSSL”, “RSA Data Security, Inc.”, “Apache Foundation” 및 “Jean-loup Gailly와 Mark Adler”

UPDATE EMP SET SALARY = SALARY + AMOUNT

WHERE EMP.EMPNO = RAISE_SALARY.EMPNO;

END;

END EMP_MGMT;

위의 예에서는 [예 1.1]에 포함된 모든 프로시저와 함수에 대한 정의를 포함하고 있으며, 비공개 변수인

NUM_EMP를 선언하고 있다.

패키지 프로시저와 함수를 정의하는 방법은 패키지 변수, 상수, 예외 상황에 대한 내용 외에는 일반 프로

시저 및 함수를 정의하는 방법과 동일하다.

프로시저 또는 함수 내부의 컬럼의 이름과 변수의 이름이 같은 경우, 컬럼이 포함된 테이블의 이름이나 프

로시저 또는 함수의 이름을 지정하여 혼동을 피할 수 있다. 예를 들어, 프로시저 FIRE 함수의 내부에서 테

이블 EMP에 포함된 컬럼 EMPNO와 프로시저 FIRE로 전달된 파라미터 변수 EMPNO가 같은 이름을 가

지므로, 각각 테이블 이름과 프로시저 이름을 지정해 주었다.

패키지 내에 포함된 프로시저나 함수를 그 패키지의 소유자 이외의 다른 사용자가 호출하도록 할 수 있다.

프로시저나 함수를 호출하려면 해당 패키지의 EXECUTE 권한을 부여 받아야 한다. 해당 패키지의 소유

자는 항상 해당 패키지를 호출할 수 있다.

뷰(view)가 패키지 프로시저나 함수를 이용하여 정의된 경우에는 뷰를 접근하기 위해 SELECT 권한을 부

여 받아야 한다. 이때, 해당 패키지의 EXECUTE 권한은 필요하지 않다. 패키지 프로시저나 함수를 참조하

려면 패키지의 이름과 프로시저 또는 함수의 이름을 함께 써주어야 한다.

다음은 [예 1.1]에서 정의한 EMP_MGMT 패키지 내의 HIRE 함수를 호출하는 예이다. 이때 반환값은

EMPNO 변수에 저장된다.

DECLARE

empno NUMBER;

BEGIN

empno := EMP_MGMT.HIRE('John', 'New York', 45000, 5);

DBMS_OUTPUT.PUT_LINE('Hired employee No. is ' || empno);

END;

1.2.2. 시스템 패키지

시스템 패키지는 Tibero RDBMS에서 기본적으로 제공하는 패키지 라이브러리로, SYS 사용자의 소유로

정의된다. 또한, Tibero RDBMS를 설치한 후에 일반 사용자도 사용할 수 있도록 시스템 패키지와 동일한

이름의 공용 동의어(Public Synonym)가 정의된다. 그리고 일반 사용자가 시스템 패키지의 프로시저 또는

함수를 호출하면 호출자 권한으로 실행된다.

시스템 패키지는 일반 사용자에게 여러 가지의 확장된 기능을 제공한다. 시스템 패키지를 SQL 문장에서

그대로 사용한다거나, 다른 프로시저와 함수 그리고 패키지를 정의할 때도 사용할 수 있다.

4 Tibero RDBMS tbPSM 참조 안내서

Page 27: [11]-TmaxData - Tibero RDBMS 4 SP1... · 2019-06-26 · 본 제품은 “OpenSSL”, “RSA Data Security, Inc.”, “Apache Foundation” 및 “Jean-loup Gailly와 Mark Adler”

시스템 패키지의 프로시저와 함수를 호출하는 방법은 사용자 정의 패키지와 같다.

다음은 32KB 이상인 대용량 객체의 이름과 생성자를 출력하는 예이다.

SELECT name, creator FROM image

WHERE DBMS_LOB.GETLENGTH(data) >= 32768;

위 예에서 보듯이, data는 image 테이블에서 대용량 객체형으로 정의된 컬럼이다.

다음은 Tibero RDBMS에서 제공하는 시스템 패키지이다.

설명시스템 패키지

BLOB, CLOB 타입의 대용량 데이터를 처리하기 위한 패키지이다.DBMS_LOB

DES, DES3 알고리즘을 이용한 데이터 암호화 및 복호화 패키지이다.DBMS_OBFUSCA

TION_TOOLKIT

메시지 버퍼에 메시지를 저장하고 읽기 위한 패키지이다.DBMS_OUTPUT

데이터베이스 객체에 대한 통계 정보를 관리하기 위한 패키지이다.DBMS_STATS

트랜잭션(transaction) 문장을 실행하고 트랜잭션을 관리하기 위한 패키

지이다.

DBMS_TRANSACTION

RAW 타입의 데이터를 처리하기 위한 패키지이다.UTL_RAW

JOB을 관리하기 위한 패키지이다.DBMS_JOB

데이터베이스에 접근하는 Dynamic SQL을 사용하기 위한 패키지이다.DBMS_SQL

ROWID에 담긴 정보를 보거나 생성하기 위한 패키지이다.DBMS_ROWID

데이터베이스에서 사용하는 Java 객체에 접근하기 위한 패키지이다.DBMS_JAVA

운영체제에서 관리하는 파일에 접근하기 위한 패키지이다.UTL_FILE

온라인 상태(on-line state)에서 특정 테이블을 재정의하기 위한 패키지

이다.

DBMS_REDEFINITION

호스트 간의 데이터를 전송할 수 있도록 표준 인코딩 기술로 인코딩하

기 위한 패키지이다.

UTL_ENCODE

URL(Uniform Resource Locator) 주소를 ESCAPE 형태로 변환하기 위

한 패키지이다.

UTL_URL

웹 표준(RFC2616)에 따라 웹 페이지(Web page)의 요청을 처리하기 위

한 패키지이다.

UTL_HTTP

실체화 뷰(Materialized View)와 관련된 정보를 제공하고 이 정보를 최

근의 것으로 변경할 수 있는 REFRESH 기능을 사용하기 위한 패키지이

다.

DBMS_MVIEW

세그먼트(segment)의 크기와 공간 사용에 대한 정보를 제공하는 패키

지이다.

DBMS_SPACE

제1장 패키지 소개 5

Page 28: [11]-TmaxData - Tibero RDBMS 4 SP1... · 2019-06-26 · 본 제품은 “OpenSSL”, “RSA Data Security, Inc.”, “Apache Foundation” 및 “Jean-loup Gailly와 Mark Adler”

설명시스템 패키지

세그먼트를 관리하는 기능을 제공하는 패키지이다.DBMS_SPACE_ADMIN

데이터를 암호화 및 복호화하는 기능을 제공하는 패키지이다.DBMS_CRYPTO

Tibero에서 사용되는 데이터 타입들을 숫자로 정의한 패키지이다.DBMS_TYPES

임의의 숫자 및 문자열을 생성하는 패키지이다.DBMS_RANDOM

SYS 권한을 가진 관리자가 시스템적인 제어를 위해 사용하는 패키지이

다.

DBMS_SYSTEM

여러 가지 유용한 기능들을 제공하는 패키지이다.DBMS_UTILITY

DML의 error logging 기능을 지원하는 패키지이다.DBMS_ERRLOG

테이블과 인덱스 내의 깨진 블록을 검사하고 복구하는 기능을 제공하는

패키지이다.

DBMS_REPAIR

어플리케이션 정보에 관련된 뷰의 값을 변경하기 위한 패키지이다.DBMS_APPLICATION_INFO

세션을 대기 시키는 패키지이다.DBMS_LOCK

세션 식별자를 관리하는 패키지이다.DBMS_SESSION

언어, 국가별 설정들 간의 호환 기능을 제공하는 패키지이다.UTL_I18N

참고

위의 패키지에 대한 자세한 내용은 해당 패키지를 설명하는 각 장을 참고한다.

6 Tibero RDBMS tbPSM 참조 안내서

Page 29: [11]-TmaxData - Tibero RDBMS 4 SP1... · 2019-06-26 · 본 제품은 “OpenSSL”, “RSA Data Security, Inc.”, “Apache Foundation” 및 “Jean-loup Gailly와 Mark Adler”

제2장 DBMS_LOB

본 장에서는 DBMS_LOB 패키지의 기본 개념과 패키지 내의 프로시저와 함수를 사용하는 방법을 설명한

다.

2.1. 개요DBMS_LOB은 BLOB 또는 CLOB 타입의 컬럼 데이터에 여러 가지 연산을 제공하는 패키지이다. 또한,

DBMS_LOB 패키지 내의 프로시저와 함수를 이용하여 대용량 객체형(Large OBject, 이하 LOB)의 전체

또는 일부에 읽기, 쓰기 등의 작업을 수행할 수 있다.

다음은 DBMS_LOB 패키지를 사용할 때 유의해야 할 사항이다.

● 호출자 권한

– 이 패키지는 호출자 권한으로 실행된다. 만약 다른 프로시저나 함수에서 호출되는 경우, 해당 프로시

저나 함수의 실행자 권한으로 실행된다.

● 프로시저와 함수의 파라미터의 길이(length)와 오프셋(offset) 단위

– 대상(destination) 데이터가 BLOB 타입이면 바이트(byte), CLOB 타입이면 문자(character) 단위이다.

함수의 반환값도 이와 같다.

● 프로시저와 함수의 파라미터 값을 전달할 때 값의 유효 범위

– LOB 데이터 내의 오프셋, 길이, 크기 등을 나타내는 값은 항상 1 이상이어야 하며 LOBMAXSIZE 상

수의 값보다 크면 안 된다.

– LOBMAXSIZE 상수는 18446744073709551615 (2^64 – 1)의 값을 가진다.

– LOB 데이터 내의 오프셋, 길이, 크기 등이 1보다 작거나 LOBMAXSIZE보다 큰 값이면 IN

VALID_ARGVAL 예외 상황이 발생한다.

● CLOB 타입의 컬럼 데이터

– 이 타입은 항상 유니코드 UTF-16 문자 집합의 문자열이 저장되며, 2byte로 하나의 문자를 나타낸다.

– 길이 또는 크기 값은 LOBMAXSIZE 상수를 2로 나눈 값보다 작아야 한다. 만약 이 값보다 크면 마찬

가지로 INVALID_ARGVAL 예외 상황이 발생한다.

제2장 DBMS_LOB 7

Page 30: [11]-TmaxData - Tibero RDBMS 4 SP1... · 2019-06-26 · 본 제품은 “OpenSSL”, “RSA Data Security, Inc.”, “Apache Foundation” 및 “Jean-loup Gailly와 Mark Adler”

● APPEND, COPY, TRIM, WRITE

– LOB 데이터를 갱신하려는 프로시저와 함수의 파라미터로 크기와 오프셋 값의 합이 최댓값(LOBMAX

SIZE 상수 값)을 초과하면 안 된다. 만약 초과하면 예외 상황이 발생한다. 그리고, LOB 데이터를 갱

신하려면 먼저 그 데이터를 포함하는 로우에 잠금(LOCK)을 설정해야 한다. 왜냐하면 프로시저나 함

수는 자동으로 잠금을 설정해 주지 않기 때문이다.

● READ, COMPARE, INSTR, SUBSTR

– 읽기 전용의 프로시저와 함수는 LOB 데이터의 마지막까지만 읽기를 수행한다.

● COMPARE, INSTR, SUBSTR

– 문자열 패턴의 작업을 수행하는 함수의 파라미터로 LIKE 함수에서 사용되는 퍼센트(%)와 언더바(_)

와 같은 와일드 카드(wild card) 문자를 사용할 수 없다.

LOB 데이터를 수행할 때에는 먼저 대상 LOB 데이터를 OPEN 프로시저를 이용하여 열고, 작업이 끝나면

CLOSE 프로시저를 이용하여 닫는다. 이때 OPEN 프로시저로 열린 LOB 데이터를 닫으면 데이터베이스

에 갱신된 내용이 반영된다.

반면에, OPEN 프로시저를 실행하여 열지 않은 LOB 데이터에 대해 갱신 연산을 수행하면 바로 데이터베

이스에 반영된다. 대개의 경우 LOB 데이터를 갱신하면 많은 디스크 작업이 수반되므로, 여러 번에 걸쳐

데이터베이스에 반영하는 것보다 한번에 모든 갱신을 데이터베이스에 반영하는 것이 효율적이다.

OPEN 프로시저를 실행하여 LOB 데이터를 연 경우에는 COMMIT 문장을 실행하기 전에 반드시 CLOSE

프로시저를 실행하여 닫아야 한다. 만약 열려있는 LOB 데이터가 있는데 COMMIT을 실행하면, 에러가 발

생한다. 열려 있는 LOB 데이터가 있을 때 ROLLBACK을 실행하면 모든 갱신은 취소되고 열려 있는 LOB

데이터에 대한 정보도 없어진다.

다음은 DBMS_LOB 패키지 내에 정의된 상수이다.

● LOBMAXSIZE

LOB 데이터의 최대 크기이다.

LOBMAXSIZE CONSTANT BINARY_INTEGER := 18446744073709551615

데이터 타입은 BINARY_INTEGER이고 LOB 데이터의 최대 크기는 18446744073709551615이다.

● LOB_READONLY

LOB 데이터에 대한 읽기 전용의 사용 여부를 설정하는 모드이다.

LOB_READONLY CONSTANT BINARY_INTEGER := 0

데이터 타입은 BINARY_INTEGER이고 값이 0이면 읽기 전용으로 설정된다.

8 Tibero RDBMS tbPSM 참조 안내서

Page 31: [11]-TmaxData - Tibero RDBMS 4 SP1... · 2019-06-26 · 본 제품은 “OpenSSL”, “RSA Data Security, Inc.”, “Apache Foundation” 및 “Jean-loup Gailly와 Mark Adler”

● LOB_READWRITE

LOB 데이터의 읽기 및 쓰기를 설정하는 모드이다.

LOB_READWRITE CONSTANT BINARY_INTEGER := 1

데이터 타입은 BINARY_INTEGER이고 값이 1이면 읽기 및 쓰기로 설정된다.

2.2. 프로시저본 절에서는 DBMS_LOB 패키지에서 제공하는 프로시저를 알파벳 순으로 설명한다.

2.2.1. APPEND

원본 LOB 데이터의 전체를 대상 LOB 데이터의 끝에 붙여 넣는 프로시저이다.

APPEND 프로시저의 세부 내용은 다음과 같다.

● 프로토타입

– BLOB 타입인 경우

DBMS_LOB.APPEND

(

dest_lob IN OUT NOCOPY BLOB,

src_lob IN BLOB

);

– CLOB 타입인 경우

DBMS_LOB.APPEND

(

dest_lob IN OUT NOCOPY CLOB,

src_lob IN CLOB

);

CLOB 데이터를 전달하는 경우 dest_lob, src_lob 파라미터의 LOB 데이터의 문자 집합(character set)

이 같아야 한다.

● 파라미터

설명파라미터

대상 LOB locator이다.dest_lob

원본 LOB locator이다.src_lob

제2장 DBMS_LOB 9

Page 32: [11]-TmaxData - Tibero RDBMS 4 SP1... · 2019-06-26 · 본 제품은 “OpenSSL”, “RSA Data Security, Inc.”, “Apache Foundation” 및 “Jean-loup Gailly와 Mark Adler”

● 예외 상황

설명예외 상황

대상 또는 원본 LOB 데이터가 NULL인 경우이다.VALUE_ERROR

● 예제

DECLARE

dest_lob CLOB := 'All''s fair in ';

src_lob CLOB := 'love and war';

BEGIN

DBMS_LOB.APPEND(dest_lob, src_lob);

DBMS_OUTPUT.PUT_LINE('Result = ' || dest_lob);

END;

/

Result = All's fair in love and war

PSM completed

SQL>

2.2.2. COPY

원본 LOB 데이터의 전체 또는 일부를 대상 LOB 데이터에 복사하는 프로시저이다. 이때 복사할 원본 LOB

데이터의 오프셋과 대상 LOB 데이터의 오프셋을 지정할 수 있다. 만약 대상 LOB 데이터의 오프셋이 대상

LOB 데이터의 길이보다 짧으면 오프셋 위치에 존재하는 이전 데이터는 갱신된다.

이와는 반대로 대상 LOB 데이터 오프셋이 대상 LOB 데이터의 길이보다 길면 중간에 0(BLOB 데이터) 또

는 공백(CLOB 데이터)으로 채워진다.

COPY 프로시저의 세부 내용은 다음과 같다.

● 프로토타입

– BLOB 타입인 경우

DBMS_LOB.COPY

(

dest_lob IN OUT NOCOPY BLOB,

src_lob IN BLOB,

amount IN INTEGER,

dest_offset IN INTEGER := 1,

src_offset IN INTEGER := 1

);

– CLOB 타입인 경우

10 Tibero RDBMS tbPSM 참조 안내서

Page 33: [11]-TmaxData - Tibero RDBMS 4 SP1... · 2019-06-26 · 본 제품은 “OpenSSL”, “RSA Data Security, Inc.”, “Apache Foundation” 및 “Jean-loup Gailly와 Mark Adler”

DBMS_LOB.COPY

(

dest_lob IN OUT NOCOPY CLOB,

src_lob IN CLOB,

amount IN INTEGER,

dest_offset IN INTEGER := 1,

src_offset IN INTEGER := 1

);

CLOB 데이터를 전달하는 경우 dest_lob, src_lob 파라미터의 LOB 데이터의 문자 집합이 같아야 한

다.

● 파라미터

설명파라미터

대상 LOB locator이다.dest_lob

원본 LOB locator이다.src_lob

복사할 byte(BLOB 데이터) 또는 문자(CLOB 데이터)의 개수이다.amount

대상 LOB 데이터 내의 오프셋이다.dest_offset

(단위: byte(BLOB 데이터) 또는 문자(CLOB 데이터))

원본 LOB 데이터 내의 오프셋이다.src_offset

(단위: byte(BLOB 데이터) 또는 문자(CLOB 데이터))

● 예외 상황

설명예외 상황

입력 파라미터 중 하나라도 NULL인 경우이다.VALUE_ERROR

src_offset, dest_offset의 값이 1보다 작거나 LOBMAXSIZE보다 큰 경우이다.INVALID_POS

amount의 값이 1보다 작거나 LOBMAXSIZE보다 큰 경우이다.INVALID_LEN

● 예제

DECLARE

dest_lob CLOB := 'It you would be loved, ';

src_lob CLOB := 'be worthy to be loved';

BEGIN

DBMS_LOB.COPY(dest_lob, src_lob, length(src_lob),

length(dest_lob) + 1, 1);

DBMS_OUTPUT.PUT_LINE('Result = ' || dest_lob);

END;

제2장 DBMS_LOB 11

Page 34: [11]-TmaxData - Tibero RDBMS 4 SP1... · 2019-06-26 · 본 제품은 “OpenSSL”, “RSA Data Security, Inc.”, “Apache Foundation” 및 “Jean-loup Gailly와 Mark Adler”

/

Result = It you would be loved, be worthy to be loved

PSM completed

SQL>

2.2.3. CREATETEMPORARY

임시 CLOB 또는 임시 BLOB을 생성하는 프로시저이다.

CREATETEMPORARY 프로시저의 세부 내용은 다음과 같다.

● 프로토타입

– BLOB 타입인 경우

DBMS_LOB.CREATETEMPORARY

(

lob IN OUT NOCOPY BLOB,

cache IN BOOLEAN,

dur IN PLS_INTEGER := 10

);

– CLOB 타입인 경우

DBMS_LOB.CREATETEMPORARY

(

lob IN OUT NOCOPY CLOB,

cache IN BOOLEAN,

dur IN PLS_INTEGER := 10

);

● 파라미터

설명파라미터

대상 LOB locator이다.lob

LOB 데이터를 읽을 때 버퍼 캐시(buffer cache)에 저장할지 여부이다.cache

현재 이 파라미터는 CREATETEMPORARY 프로시저의 수명을 조정하는 기

능을 지원하지 않는다. 단, 기본은 세션이 완료되면 CREATETEMPORARY

프로시저가 자동으로 삭제된다.

dur

● 예외 상황

12 Tibero RDBMS tbPSM 참조 안내서

Page 35: [11]-TmaxData - Tibero RDBMS 4 SP1... · 2019-06-26 · 본 제품은 “OpenSSL”, “RSA Data Security, Inc.”, “Apache Foundation” 및 “Jean-loup Gailly와 Mark Adler”

설명예외 상황

캐시 파라미터가 NULL인 경우이다.VALUE_ERROR

● 예제

DECLARE

lob_1 CLOB;

lob_2 CLOB := 'tibero';

BEGIN

DBMS_LOB.CREATETEMPORARY(lob_1, false);

DBMS_LOB.APPEND(lob_1, lob_2);

DBMS_OUTPUT.PUT_LINE(lob_1);

END;

/

tibero

PSM completed

SQL>

2.2.4. ERASE

LOB 데이터의 일부 또는 전체를 삭제하는 프로시저이다. 삭제된 영역은 0(BLOB 데이터) 또는 공백(CLOB

데이터)으로 채워진다. 대상 LOB 데이터의 길이가 오프셋과 삭제할 영역 크기의 합보다 짧다면 실제로 삭

제된 영역의 크기는 삭제할 영역으로 입력한 크기보다 작을 수 있다. 실제로 삭제된 영역의 크기는 amount

파라미터로 출력된다.

ERASE 프로시저의 세부 내용은 다음과 같다.

● 프로토타입

– BLOB 타입인 경우

DBMS_LOB.ERASE

(

lob IN OUT NOCOPY BLOB,

amount IN OUT NOCOPY INTEGER,

offset IN INTEGER := 1

);

– CLOB 타입인 경우

DBMS_LOB.ERASE

(

lob IN OUT NOCOPY CLOB,

제2장 DBMS_LOB 13

Page 36: [11]-TmaxData - Tibero RDBMS 4 SP1... · 2019-06-26 · 본 제품은 “OpenSSL”, “RSA Data Security, Inc.”, “Apache Foundation” 및 “Jean-loup Gailly와 Mark Adler”

amount IN OUT NOCOPY INTEGER,

offset IN INTEGER := 1

);

● 파라미터

설명파라미터

대상 LOB locator이다.lob

삭제할 byte 또는 문자 개수이다.amount

삭제할 오프셋이다.offset

( 단위: byte(BLOB 데이터) 또는 문자(CLOB 데이터) )

● 예외 상황

설명예외 상황

입력 파라미터가 하나라도 NULL인 경우이다.VALUE_ERROR

offset의 값이 1보다 작거나 LOBMAXSIZE보다 큰 경우이다.INVALID_POS

amount의 값이 1보다 작거나 LOBMAXSIZE보다 큰 경우이다.INVALID_LEN

● 예제

DECLARE

lob CLOB := 'Tmaxsoft Tibero';

amount NUMBER := 7;

BEGIN

DBMS_OUTPUT.PUT_LINE('Length of original LOB = ' || length(lob));

DBMS_LOB.ERASE(lob, amount, 9);

DBMS_OUTPUT.PUT_LINE('Value of erased LOB = ' || lob);

DBMS_OUTPUT.PUT_LINE('Length of erased LOB = ' || length(lob));

END;

/

Length of original LOB = 15

Value of erased LOB = Tmaxsoft

Length of erased LOB = 15

PSM completed

SQL>

14 Tibero RDBMS tbPSM 참조 안내서

Page 37: [11]-TmaxData - Tibero RDBMS 4 SP1... · 2019-06-26 · 본 제품은 “OpenSSL”, “RSA Data Security, Inc.”, “Apache Foundation” 및 “Jean-loup Gailly와 Mark Adler”

2.2.5. FREETEMPORARY

이미 생성된 임시 BLOB 또는 임시 CLOB을 삭제하는 프로시저이다.

FREETEMPORARY 프로시저의 세부 내용은 다음과 같다.

● 프로토타입

– BLOB 타입인 경우

DBMS_LOB.FREETEMPORARY

(

lob IN OUT NOCOPY BLOB

);

– CLOB 타입인 경우

DBMS_LOB.FREETEMPORARY

(

lob IN OUT NOCOPY CLOB

);

● 파라미터

설명파라미터

대상 LOB locator이다.lob

● 예외 상황

설명예외 상황

입력 파라미터가 NULL인 경우이다.VALUE_ERROR

● 예제

DECLARE

lob CLOB;

BEGIN

DBMS_LOB.CREATETEMPORARY(lob, false);

DBMS_LOB.FREETEMPORARY(lob);

END;

/

PSM completed

SQL>

제2장 DBMS_LOB 15

Page 38: [11]-TmaxData - Tibero RDBMS 4 SP1... · 2019-06-26 · 본 제품은 “OpenSSL”, “RSA Data Security, Inc.”, “Apache Foundation” 및 “Jean-loup Gailly와 Mark Adler”

2.2.6. READ

대상 LOB 데이터의 일부 또는 전체를 읽어 출력 파라미터의 버퍼에 저장하는 프로시저이다. 만약 읽기를

시작하는 오프셋과 읽을 크기의 합이 대상 LOB 데이터의 크기보다 커서 LOB 데이터의 끝을 지나가게 되

면, 실제 읽은 데이터의 크기는 파라미터로 주어진 읽을 크기보다 작을 수 있다. 이때 실제로 읽어온 데이

터의 크기는 입출력 파라미터 amount에 저장되어 반환된다. 만약 읽을 오프셋의 위치가 대상 LOB 데이터

의 크기보다 크다면 NO_DATA_FOUND 예외 상황이 발생한다.

CLOB 데이터로부터 읽은 데이터를 클라이언트에 전송하는 경우, 클라이언트의 문자 집합으로 자동 변환

된다. 이 경우 실제로 읽어온 데이터와 달라질 수 있다.

READ 프로시저의 세부 내용은 다음과 같다.

● 프로토타입

– BLOB 타입인 경우

DBMS_LOB.READ

(

lob IN BLOB,

amount IN OUT NOCOPY BINARY_INTEGER,

offset IN INTEGER,

buffer OUT RAW

);

– CLOB 타입인 경우

DBMS_LOB.READ

(

lob IN CLOB,

amount IN OUT NOCOPY BINARY_INTEGER,

offset IN INTEGER,

buffer OUT VARCHAR2

);

● 파라미터

설명파라미터

읽을 대상 LOB locator이다.lob

읽을 크기를 입력하고 실제로 읽어온 크기를 출력한다.amount

(단위: byte(BLOB 데이터) 또는 문자(CLOB 데이터) 개수)

읽을 대상 LOB 데이터 내의 오프셋이다.offset

(단위: byte(BLOB 데이터) 또는 문자(CLOB 데이터))

16 Tibero RDBMS tbPSM 참조 안내서

Page 39: [11]-TmaxData - Tibero RDBMS 4 SP1... · 2019-06-26 · 본 제품은 “OpenSSL”, “RSA Data Security, Inc.”, “Apache Foundation” 및 “Jean-loup Gailly와 Mark Adler”

설명파라미터

읽을 데이터를 저장하는 출력 버퍼이다.buffer

● 예외 상황

설명예외 상황

입력 파라미터 중 하나라도 NULL인 경우이다.VALUE_ERROR

offset의 값이 1보다 작거나 LOBMAXSIZE보다 큰 경우이다.INVALID_POS

INVALID_LEN – amount의 값이 1보다 작거나 MAXBUFSIZE보다 큰 경우이다.

– amount의 값이 버퍼의 크기보다 큰 경우이다.

offset이 대상 LOB 데이터의 크기보다 큰 경우이다.NO_DATA_FOUND

● 예제

DECLARE

lob CLOB := 'TIBERO fighting!!!';

buffer VARCHAR2(256);

amount BINARY_INTEGER := 8;

BEGIN

DBMS_LOB.READ(lob, amount, 8, buffer);

DBMS_OUTPUT.PUT_LINE('Value to be read = ' || buffer);

END;

/

Value to be read = fighting

PSM completed

SQL>

2.2.7. TRIM

대상 LOB 데이터의 길이를 지정된 길이로 설정하는 함수이다. BLOB 데이터의 경우 byte 단위로, CLOB

데이터의 경우 문자 단위로 길이를 지정한다. 지정된 길이를 넘는 데이터는 소멸된다.

만약 이 프로시저를 길이가 0인 LOB 데이터로 실행하면 아무런 값이 반환되지 않는다.

TRIM 프로시저의 세부 내용은 다음과 같다.

● 프로토타입

– BLOB 타입인 경우

제2장 DBMS_LOB 17

Page 40: [11]-TmaxData - Tibero RDBMS 4 SP1... · 2019-06-26 · 본 제품은 “OpenSSL”, “RSA Data Security, Inc.”, “Apache Foundation” 및 “Jean-loup Gailly와 Mark Adler”

DBMS_LOB.TRIM

(

lob IN OUT NOCOPY BLOB,

newlen IN INTEGER

);

– CLOB 타입인 경우

DBMS_LOB.TRIM

(

lob IN OUT NOCOPY CLOB,

newlen IN INTEGER

);

● 파라미터

설명파라미터

대상 LOB locator이다.lob

새롭게 지정된 LOB 데이터의 길이이다.newlen

(단위: byte(BLOB 데이터) 또는 문자(CLOB 데이터))

● 예외 상황

설명예외 상황

입력 파라미터 중 하나라도 NULL인 경우이다.VALUE_ERROR

newlen 값이 0보다 작거나 LOBMAXSIZE보다 큰 경우이다.INVALID_LEN

● 예제

DECLARE

lob CLOB := 'A pity beyond all telling is in the heart of love';

BEGIN

DBMS_LOB.TRIM(lob, 25);

DBMS_OUTPUT.PUT_LINE('Value = ' || lob);

DBMS_OUTPUT.PUT_LINE('Length = ' || length(lob));

END;

/

Value = A pity beyond all telling

Length = 25

PSM completed

SQL>

18 Tibero RDBMS tbPSM 참조 안내서

Page 41: [11]-TmaxData - Tibero RDBMS 4 SP1... · 2019-06-26 · 본 제품은 “OpenSSL”, “RSA Data Security, Inc.”, “Apache Foundation” 및 “Jean-loup Gailly와 Mark Adler”

2.2.8. WRITE

대상 LOB 데이터의 지정된 오프셋 위치에 주어진 데이터를 지정된 크기만큼 저장하는 프로시저이다. 새

로운 데이터가 저장되는 위치에 존재하는 이전 데이터는 소멸된다. BLOB 데이터에 대한 오프셋 및 크기

는 byte 단위이며, CLOB 데이터에 대해서는 문자 단위이다.

주어진 데이터의 실제 크기보다 지정된 크기가 큰 경우에는 에러가 발생하며, 지정된 크기가 작은 경우에

는 지정된 크기만큼만 저장된다. 지정된 오프셋이 대상 LOB 데이터의 크기보다 큰 경우에는 중간에 0(BLOB

데이터) 또는 공백(CLOB 데이터)으로 채워진다.

이 프로시저를 CLOB 데이터에 대하여 실행할 때 CLOB 데이터의 문자 집합과 저장할 데이터의 문자 집

합은 같아야 한다. 이 프로시저를 클라이언트 쪽에서 호출하는 경우, 저장할 데이터가 클라이언트 쪽의 문

자 집합으로부터 CLOB 데이터 문자 집합으로 변환된 후에 저장된다.

WRITE 프로시저의 세부 내용은 다음과 같다.

● 프로토타입

– BLOB 타입인 경우

DBMS_LOB.WRITE

(

lob IN OUT NOCOPY BLOB,

amount IN BINARY_INTEGER,

offset IN INTEGER,

buffer IN RAW

);

– CLOB 타입인 경우

DBMS_LOB.WRITE

(

lob IN OUT NOCOPY CLOB,

amount IN BINARY_INTEGER,

offset IN INTEGER,

buffer IN VARCHAR

);

● 파라미터

설명파라미터

대상 LOB locator이다.lob

저장할 데이터의 크기이다.amount

(단위: byte(BLOB 데이터) 또는 문자(CLOB 데이터))

제2장 DBMS_LOB 19

Page 42: [11]-TmaxData - Tibero RDBMS 4 SP1... · 2019-06-26 · 본 제품은 “OpenSSL”, “RSA Data Security, Inc.”, “Apache Foundation” 및 “Jean-loup Gailly와 Mark Adler”

설명파라미터

데이터를 저장할 오프셋이다.offset

(단위: byte(BLOB 데이터) 또는 문자(CLOB 데이터))

저장할 데이터이다.buffer

● 예외 상황

설명예외 상황

파라미터 중 하나라도 NULL인 경우이다.VALUE_ERROR

offset의 값이 1보다 작거나 LOBMAXSIZE보다 큰 경우이다.INVALID_POS

amount의 값이 1보다 작거나 MAXBUFSIZE보다 큰 경우이다.INVALID_LEN

● 예제

DECLARE

lob CLOB;

buffer VARCHAR2(100);

BEGIN

DBMS_LOB.CREATETEMPORARY(lob, false);

buffer := 'Love is friendship set on fire';

DBMS_LOB.WRITE(lob, length(buffer), 1, buffer);

DBMS_OUTPUT.PUT_LINE(lob);

END;

/

Love is friendship set on fire

PSM completed

SQL>

2.2.9. WRITEAPPEND

대상 LOB 데이터의 끝에 주어진 데이터를 지정된 크기만큼 저장하는 프로시저이다. 이 프로시저는 WRITE

프로시저의 파라미터 오프셋을 대상 LOB 데이터의 길이로 설정한 것과 같다. BLOB 데이터의 크기는 byte

단위이며, CLOB 데이터는 문자 단위이다.

주어진 데이터의 실제 크기보다 지정된 크기가 큰 경우에는 에러가 발생하며, 지정된 크기가 작은 경우에

는 지정된 크기만큼만 저장된다.

이 프로시저를 CLOB 데이터에 대하여 실행할 때에 CLOB 데이터의 문자 집합과 저장할 데이터의 문자

집합은 같아야 한다. 이 프로시저를 클라이언트 쪽에서 호출하는 경우, 저장할 데이터가 클라이언트 쪽의

문자 집합에서 CLOB 데이터 문자 집합으로 변환된 후에 저장된다.

20 Tibero RDBMS tbPSM 참조 안내서

Page 43: [11]-TmaxData - Tibero RDBMS 4 SP1... · 2019-06-26 · 본 제품은 “OpenSSL”, “RSA Data Security, Inc.”, “Apache Foundation” 및 “Jean-loup Gailly와 Mark Adler”

WRITEAPPEND 프로시저의 세부 내용은 다음과 같다.

● 프로토타입

– BLOB 타입인 경우

DBMS_LOB.WRITEAPPEND

(

lob IN OUT NOCOPY BLOB,

amount IN BINARY_INTEGER,

buffer IN RAW

);

– CLOB 타입인 경우

DBMS_LOB.WRITEAPPEND

(

lob IN OUT NOCOPY CLOB,

amount IN BINARY_INTEGER,

buffer IN VARCHAR2

);

● 파라미터

설명파라미터

대상 LOB locator이다.lob

저장할 데이터의 크기이다.amount

(단위: byte(BLOB 데이터) 또는 문자(CLOB 데이터) 개수)

저장할 데이터이다.buffer

(단위: byte(BLOB 데이터) 또는 문자(CLOB 데이터))

● 예외 상황

설명예외 상황

파라미터 중 하나라도 NULL인 경우이다.VALUE_ERROR

amount 값이 1보다 작거나 MAXBUFSIZE보다 큰 경우이다.INVALID_LEN

● 예제

DECLARE

lob CLOB := 'Parting is such ';

제2장 DBMS_LOB 21

Page 44: [11]-TmaxData - Tibero RDBMS 4 SP1... · 2019-06-26 · 본 제품은 “OpenSSL”, “RSA Data Security, Inc.”, “Apache Foundation” 및 “Jean-loup Gailly와 Mark Adler”

buffer VARCHAR2(100) := 'sweet sorrow';

BEGIN

DBMS_LOB.WRITEAPPEND(lob, length(buffer), buffer);

DBMS_OUTPUT.PUT_LINE('Result = ' || lob);

END;

/

Result = Parting is such sweet sorrow

PSM completed

SQL>

2.3. 함수본 절에서는 DBMS_LOB 패키지에서 제공하는 함수를 알파벳 순으로 설명한다.

2.3.1. COMPARE

두 개의 LOB 데이터의 전체 또는 일부를 비교하는 함수이다. 같은 타입의 LOB 데이터 간에만 비교가 가

능하다.

COMPARE 함수의 세부 내용은 다음과 같다.

● 프로토타입

– BLOB 타입인 경우

DBMS_LOB.COMPARE

(

lob_1 IN BLOB,

lob_2 IN BLOB,

amount IN INTEGER := 4294967295,

offset_1 IN INTEGER := 1,

offset_2 IN INTEGER := 1

)

RETURN INTEGER;

– CLOB 타입인 경우

DBMS_LOB.COMPARE

(

lob_1 IN CLOB,

lob_2 IN CLOB,

amount IN INTEGER := 4294967295,

offset_1 IN INTEGER := 1,

22 Tibero RDBMS tbPSM 참조 안내서

Page 45: [11]-TmaxData - Tibero RDBMS 4 SP1... · 2019-06-26 · 본 제품은 “OpenSSL”, “RSA Data Security, Inc.”, “Apache Foundation” 및 “Jean-loup Gailly와 Mark Adler”

offset_2 IN INTEGER := 1

)

RETURN INTEGER;

CLOB 데이터를 전달하는 경우 lob_1, lob_2 파라미터의 LOB 데이터의 문자 집합이 같아야 한다.

● 파라미터

설명파라미터

비교 대상인 첫 번째 LOB locator이다.lob_1

비교 대상인 두 번째 LOB locator이다.lob_2

비교할 byte의 크기(BLOB 데이터) 또는 문자(CLOB 데이터) 개수이다.amount

비교를 시작할 첫 번째 LOB 데이터 오프셋이다.offset_1

(단위: byte(BLOB 데이터) 또는 문자(CLOB 데이터))

비교를 시작할 두 번째 LOB 데이터 오프셋이다.offset_2

(단위: byte(BLOB 데이터) 또는 문자(CLOB 데이터))

● 반환값

설명반환값

lob_1, lob_2의 LOB 데이터가 동일한 경우에 반환한다.0

lob_1, lob_2의 LOB 데이터가 동일하지 않은 경우에 반환한다.N < 0 or N > 0

NULL – amount가 1보다 작은 경우에 반환한다.

– amount가 LOBMAXSIZE보다 큰 경우에 반환한다.

– offset_1 또는 offset_2가 1보다 작은 경우에 반환한다.

– offset_1 또는 offset_2가 LOBMAXSIZE보다 큰 경우에 반환한다.

● 예제

DECLARE

lob_1 CLOB := 'abcdefgh';

lob_2 CLOB := 'abcdefgg';

BEGIN

IF DBMS_LOB.COMPARE(lob_1, lob_2) = 0 then

DBMS_OUTPUT.PUT_LINE('LOB_1 equals LOB_2');

ELSE

DBMS_OUTPUT.PUT_LINE('LOB_1 does not equals LOB_2');

제2장 DBMS_LOB 23

Page 46: [11]-TmaxData - Tibero RDBMS 4 SP1... · 2019-06-26 · 본 제품은 “OpenSSL”, “RSA Data Security, Inc.”, “Apache Foundation” 및 “Jean-loup Gailly와 Mark Adler”

END IF;

END;

/

LOB_1 does not equals LOB_2

PSM completed

SQL>

2.3.2. GETLENGTH

대상 LOB 데이터의 길이를 반환하는 함수이다. 이때 길이는 입력 LOB 데이터의 타입에 따라 byte 또는

문자 단위의 값으로 반환된다.

GETLENGTH 함수의 세부 내용은 다음과 같다.

● 프로토타입

– BLOB 타입인 경우

DBMS_LOB.GETLENGTH

(

lob IN BLOB

)

RETURN INTEGER;

– CLOB 타입인 경우

DBMS_LOB.GETLENGTH

(

lob IN CLOB

)

RETURN INTEGER;

● 파라미터

설명파라미터

대상 LOB locator이다.lob

● 반환값

설명파라미터

빈 LOB 데이터인 경우에 반환한다.0

입력 LOB 데이터의 파라미터가 NULL인 경우에 반환한다.NULL

24 Tibero RDBMS tbPSM 참조 안내서

Page 47: [11]-TmaxData - Tibero RDBMS 4 SP1... · 2019-06-26 · 본 제품은 “OpenSSL”, “RSA Data Security, Inc.”, “Apache Foundation” 및 “Jean-loup Gailly와 Mark Adler”

COPY, ERASE, WRITE 등의 프로시저에 의해 채워진 0(BLOB 데이터) 또는 공백(CLOB 데이터) 문자

도 대상 LOB 데이터의 길이에 포함된다.

● 예제

DECLARE

lob CLOB := 'architecture';

BEGIN

DBMS_OUTPUT.PUT_LINE(DBMS_LOB.GETLENGTH(lob));

END;

/

12

PSM completed

SQL>

2.3.3. INSTR

대상 LOB 데이터 내에서 주어진 패턴이 n 번째로 나타나는 오프셋을 반환하는 함수이다. 패턴을 탐색하

는 위치는 대상 LOB 데이터의 처음일 수도 있고 입력 파라미터로 지정된 위치일 수도 있다. 이때 탐색할

대상 패턴은 LIKE 연산자에서 사용되는 퍼센트(%) 또는 언더바(_)와 같은 와일드 카드 문자 등을 포함할

수 없다.

INSTR 함수의 세부 내용은 다음과 같다.

● 프로토타입

– BLOB 타입인 경우

DBMS_LOB.INSTR

(

lob IN BLOB,

pattern IN RAW,

offset IN INTEGER := 1,

nth IN INTEGER := 1

)

RETURN INTEGER;

– CLOB 타입인 경우

DBMS_LOB.INSTR

(

lob IN CLOB,

pattern IN VARCHAR,

offset IN INTEGER := 1,

제2장 DBMS_LOB 25

Page 48: [11]-TmaxData - Tibero RDBMS 4 SP1... · 2019-06-26 · 본 제품은 “OpenSSL”, “RSA Data Security, Inc.”, “Apache Foundation” 및 “Jean-loup Gailly와 Mark Adler”

nth IN INTEGER := 1

)

RETURN INTEGER;

● 파라미터

설명파라미터

패턴을 탐색할 대상 LOB locator이다.lob

탐색할 패턴이다.pattern

LOB 데이터 내의 탐색을 시작할 오프셋이다.offset

(단위: byte(BLOB 데이터) 또는 문자(CLOB 데이터))

탐색할 패턴의 개수이다.nth

1 이상의 값을 가지며, 1이면 첫 번째 패턴의 오프셋을 반환한다.

● 반환값

설명반환값

패턴과 일치하는 부분을 찾은 경우 해당 패턴이 시작되는 오프셋을 반환한다.INTEGER

만약 찾지 못한 경우에는 0을 반환한다.

NULL – IN 파라미터 중 하나라도 NULL인 경우에 반환한다.

– offset이 1보다 작거나 LOBMAXSIZE보다 큰 경우에 반환한다.

– nth가 1보다 작거나 LOBMAXSIZE보다 큰 경우에 반환한다.

● 예제

DECLARE

lob CLOB := 'Corporate floor';

result NUMBER;

BEGIN

result := DBMS_LOB.INSTR(lob, 'or', 3, 2);

DBMS_OUTPUT.PUT_LINE('Result offset = ' || result);

END;

/

Result offset = 14

PSM completed

SQL>

26 Tibero RDBMS tbPSM 참조 안내서

Page 49: [11]-TmaxData - Tibero RDBMS 4 SP1... · 2019-06-26 · 본 제품은 “OpenSSL”, “RSA Data Security, Inc.”, “Apache Foundation” 및 “Jean-loup Gailly와 Mark Adler”

2.3.4. ISTEMPORARY

주어진 LOB이 임시 LOB인지 아닌지의 여부를 확인하는 함수이다.

ISTEMPORARY 함수의 세부 내용은 다음과 같다.

● 프로토타입

– BLOB 타입인 경우

DBMS_LOB.ISTEMPORARY

(

lob IN BLOB

)

RETURN INTEGER;

– CLOB 타입인 경우

DBMS_LOB.ISTEMPORARY

(

lob IN CLOB

)

RETURN INTEGER;

● 파라미터

설명파라미터

대상 LOB locator이다.lob

● 반환값

설명반환값

임시 LOB인 경우에 반환한다.1

임시 LOB이 아닌 경우에 반환한다.0

● 예제

DECLARE

lob CLOB;

BEGIN

DBMS_LOB.CREATETEMPORARY(lob, false);

IF DBMS_LOB.ISTEMPORARY(lob) = 1THEN

DBMS_OUTPUT.PUT_LINE('TRUE');

ELSE

제2장 DBMS_LOB 27

Page 50: [11]-TmaxData - Tibero RDBMS 4 SP1... · 2019-06-26 · 본 제품은 “OpenSSL”, “RSA Data Security, Inc.”, “Apache Foundation” 및 “Jean-loup Gailly와 Mark Adler”

DBMS_OUTPUT.PUT_LINE('FALSE');

END IF;

END;

/

TRUE

PSM completed

SQL>

2.3.5. SUBSTR

대상 LOB 데이터의 지정된 오프셋의 위치로부터 지정된 크기만큼의 데이터를 반환하는 함수이다. 반환

될 최대 크기는 32767byte이며, CLOB 데이터의 경우 반환될 최대 문자 개수는 32767을 2로 나눈 값이다.

CLOB 데이터에 대하여 이 함수를 호출하면 같은 문자 집합의 문자열이 반환된다.

이 함수는 하나의 파라미터라도 NULL이 넘겨지거나, 파라미터 amount 또는 offset의 값이 1보다 작거나

LOBMAXSIZE보다 큰 경우에 NULL을 반환한다.

이 함수를 CLOB 데이터에 대해 클라이언트 쪽에서 호출한 경우, 만약 클라이언트 쪽에 설정된 문자 집합

가 CLOB 데이터 문자 집합과 다르다면 데이터 전송 중에 자동적으로 문자 집합의 변환이 일어난다.

SUBSTR 함수의 세부 내용은 다음과 같다.

● 프로토타입

– BLOB 타입인 경우

DBMS_LOB.SUBSTR

(

lob IN BLOB,

amount IN INTEGER := 32767,

offset IN INTEGER := 1

)

RETURN RAW;

– CLOB 타입인 경우

DBMS_LOB.SUBSTR

(

lob IN CLOB,

amount IN INTEGER := 32767,

offset IN INTEGER := 1

)

RETURN VARCHAR2;

28 Tibero RDBMS tbPSM 참조 안내서

Page 51: [11]-TmaxData - Tibero RDBMS 4 SP1... · 2019-06-26 · 본 제품은 “OpenSSL”, “RSA Data Security, Inc.”, “Apache Foundation” 및 “Jean-loup Gailly와 Mark Adler”

● 파라미터

설명파라미터

대상 LOB 데이터이다.lob

읽을 데이터의 크기이다.amount

(단위: byte(BLOB 데이터) 또는 문자(CLOB 데이터) 개수)

데이터를 읽을 LOB 데이터 내의 오프셋이다.offset

(단위: byte(BLOB 데이터) 또는 문자(CLOB 데이터))

● 반환값

설명반환값

SUBSTR 함수가 성공적으로 종료된 경우에 반환한다.RAW/VARCHAR2 데이터

NULL – 입력 파라미터가 하나라도 NULL인 경우에 반환한다.

– amount가 1보다 작거나 32767byte 보다 큰 경우에 반환한다.

– offset이 1보다 작거나 LOBMAXSIZE보다 큰 경우에 반환한다.

● 예제

DECLARE

lob CLOB := 'Your friend is too young';

buffer VARCHAR2(100);

BEGIN

buffer := DBMS_LOB.SUBSTR(lob, 6, 6);

DBMS_OUTPUT.PUT_LINE('My favorite word is ' || UPPER(buffer));

END;

/

My favorite word is FRIEND

PSM completed

SQL>

제2장 DBMS_LOB 29

Page 52: [11]-TmaxData - Tibero RDBMS 4 SP1... · 2019-06-26 · 본 제품은 “OpenSSL”, “RSA Data Security, Inc.”, “Apache Foundation” 및 “Jean-loup Gailly와 Mark Adler”
Page 53: [11]-TmaxData - Tibero RDBMS 4 SP1... · 2019-06-26 · 본 제품은 “OpenSSL”, “RSA Data Security, Inc.”, “Apache Foundation” 및 “Jean-loup Gailly와 Mark Adler”

제3장 DBMS_OBFUSCATION_TOOLKIT

본 장에서는 DBMS_OBFUSCATION_TOOLKIT 패키지의 기본 개념과 패키지 내의 프로시저와 함수를

사용하는 방법을 설명한다.

3.1. 개요DBMS_OBFUSCATION_TOOLKIT은 데이터를 암호화(encryption)하고 복호화(decryption)하는 패키지

이다. 이 패키지에서는 데이터의 암호화 및 복호화를 위해 DES(Data Encryption Standard) 또는 3DES(Triple

DES) 알고리즘을 이용한다.

DES와 3DES 알고리즘은 대칭 키(symmetric key)를 사용하는 알고리즘이다.

설명알고리즘

56 bit의 키를 사용하는 알고리즘이다. 그 동안 널리 사용되어 왔으나 최근에는 보

안성이 보장되지 않아 점차 사용 빈도가 줄어들고 있다.

DES

대칭 키를 사용하는 알고리즘이다.

하나의 데이터에 DES 알고리즘을 두 번 내지 세 번 반복하여 적용하는 알고리즘

이다. 각각 112(56 * 2) bit와 168(56 * 3) bit 키를 사용한다. DES 알고리즘과 마찬

가지로 대칭 키를 사용하는 알고리즘이다.

3DES

다른 대칭 키를 사용하는 알고리즘에 비해 암호화 및 복호화를 하는 시간이 많이

필요하다는 단점이 있다.

이러한 대칭 키를 사용하는 암호화 알고리즘에서는 키를 안전하게 관리하는 것이 무엇보다 중요하다.

암호화 알고리즘에서 키를 관리하는 방법은 다음과 같다.

● 데이터베이스에 키를 저장하는 방법

특정 테이블의 컬럼에 키를 저장하는 방법이다.

이때 키를 저장하는 테이블은 암호화된 데이터 컬럼과 같은 테이블일 수도 있고, 다른 테이블일 수도 있

다. 같은 테이블에 키를 저장하는 경우에는 해당 테이블 전체에 대한 액세스 특권을 부여하는 대신 뷰

또는 tbPSM 프로그램 등을 통하여 해당 테이블에 액세스해야 한다.

● 운영체제 파일에 저장하는 방법

제3장 DBMS_OBFUSCATION_TOOLKIT 31

Page 54: [11]-TmaxData - Tibero RDBMS 4 SP1... · 2019-06-26 · 본 제품은 “OpenSSL”, “RSA Data Security, Inc.”, “Apache Foundation” 및 “Jean-loup Gailly와 Mark Adler”

키를 파일에 저장하고, 데이터베이스 내에서 tbPSM 프로그램 등을 통하여 운영체제 파일로부터 키를

읽어 데이터를 암호화하거나 복호화하는 방법이다.

이때 키를 저장하는 운영체제 파일은 패스워드 파일과 같이 다른 사람이 직접 액세스할 수 없도록 보안

을 유지해야 한다.

● 사용자가 키를 직접 입력하는 방법

사용자 또는 애플리케이션 프로그램 내에서 필요할 때마다 키를 데이터베이스로 전송하여 암호화 및

복호화를 수행하는 방법이다.

이 방법은 사용자가 키를 항상 암기하고 있거나 애플리케이션 프로그램의 소스 내에 키가 포함되어 있

어야 한다. 또한, 키는 네트워크를 통하여 데이터베이스 서버로 전달되므로, 네트워크 보안에도 유의해

야 한다.

3.2. 프로시저와 함수본 절에서는 DBMS_OBFUSCATION_TOOLKIT 패키지에서 제공하는 프로시저와 함수를 알파벳 순으로

설명한다.

3.2.1. DES3DECRYPT

3DES 알고리즘을 이용하여 암호화된 데이터를 복호화하는 프로시저와 함수이다. 주어진 암호화된 데이

터에 대하여 두 번 또는 세 번의 DES 복호화를 수행할 수 있다.

복호화를 위해 주어진 키에 대해 복호화를 두 번 수행한다면 16byte(128bit), 세 번을 수행한다면

24byte(192bit)이어야 하며, 그렇지 않으면 예외 상황이 발생한다. 디폴트는 두 번의 DES 복호화를 수행

한다. 암호화된 데이터와 같은 횟수만큼 DES 알고리즘을 수행해야 한다.

DES3DECRYPT 프로시저와 함수의 세부 내용은 다음과 같다.

● 프로토타입

– 프로시저

DBMS_OBFUSCATION_TOOLKIT.DES3DECRYPT

(

input IN RAW,

key IN RAW,

decrypted_data OUT RAW,

which IN PLS_INTEGER DEFAULT 0,

iv IN RAW DEFAULT NULL

);

32 Tibero RDBMS tbPSM 참조 안내서

Page 55: [11]-TmaxData - Tibero RDBMS 4 SP1... · 2019-06-26 · 본 제품은 “OpenSSL”, “RSA Data Security, Inc.”, “Apache Foundation” 및 “Jean-loup Gailly와 Mark Adler”

DBMS_OBFUSCATION_TOOLKIT.DES3DECRYPT

(

input_string IN VARCHAR2,

key_string IN VARCHAR2,

decrypted_string OUT VARCHAR2,

which IN PLS_INTEGER DEFAULT 0,

iv_string IN VARCHAR2 DEFAULT NULL

);

– 함수

DBMS_OBFUSCATION_TOOLKIT.DES3DECRYPT

(

input IN RAW,

key IN RAW,

which IN PLS_INTEGER DEFAULT 0,

iv IN RAW DEFAULT NULL

)

RETURN RAW;

DBMS_OBFUSCATION_TOOLKIT.DES3DECRYPT

(

input_string IN VARCHAR2,

key_string IN VARCHAR2,

which IN PLS_INTEGER DEFAULT 0,

iv_string IN VARCHAR2 DEFAULT NULL

)

RETURN VARCHAR2;

● 파라미터

설명파라미터

복호화할 데이터이다.input, input_string

복호화하기 위해 주어진 키 값이다.key

복호화된 결과 데이터이다.decrypted_data

which – 0이면 DES 복호화를 2번 수행한다.

– 1이면 DES 복호화를 3번 수행한다.

초기화 벡터이다.iv

● 예외 상황

제3장 DBMS_OBFUSCATION_TOOLKIT 33

Page 56: [11]-TmaxData - Tibero RDBMS 4 SP1... · 2019-06-26 · 본 제품은 “OpenSSL”, “RSA Data Security, Inc.”, “Apache Foundation” 및 “Jean-loup Gailly와 Mark Adler”

설명예외 상황

파라미터 중 하나라도 NULL인 경우이다.INVALID_ARGUMENT

input_data의 길이가 8의 배수가 아닌 경우이다.INVALID_INPUT

key 값의 길이가 8보다 작은 경우이다.KEY_TOO_SHORT

which 값이 0 또는 1이 아닌 경우이다.INVALID_DES_MODE

● 예제

DECLARE

data RAW(256);

key RAW(16);

encrypted_data RAW(256);

decrypted_data RAW(256);

BEGIN

data := '0102030405AE030D0123456789ABCDEF';

key := '0A123B8E002CD3FF01DE2389A4567BCF';

DBMS_OBFUSCATION_TOOLKIT.DES3Encrypt(input => data, key => key,

encrypted_data => encrypted_data);

data := encrypted_data;

DBMS_OBFUSCATION_TOOLKIT.DES3Decrypt(input => data, key => key,

decrypted_data => decrypted_data);

END;

3.2.2. DES3ENCRYPT

3DES 알고리즘을 이용하여 데이터를 암호화하는 프로시저와 함수이다. 주어진 데이터에 대하여 두 번 또

는 세 번의 DES 암호화를 수행할 수 있다.

암호화를 위해 주어진 키에 대해 암호화를 두 번을 수행한다면 16byte(128bit), 세 번을 수행한다면

24byte(192bit)이어야 하며, 그렇지 않으면 예외 상황이 발생한다. 디폴트는 두 번의 DES 암호화를 수행

한다.

DES3ENCRYPT 프로시저와 함수의 세부 내용은 다음과 같다.

● 프로토타입

– 프로시저

DBMS_OBFUSCATION_TOOLKIT.DES3ENCRYPT

(

input IN RAW,

key IN RAW,

encrypted_data OUT RAW,

34 Tibero RDBMS tbPSM 참조 안내서

Page 57: [11]-TmaxData - Tibero RDBMS 4 SP1... · 2019-06-26 · 본 제품은 “OpenSSL”, “RSA Data Security, Inc.”, “Apache Foundation” 및 “Jean-loup Gailly와 Mark Adler”

which IN PLS_INTEGER DEFAULT 0,

iv IN RAW DEFAULT NULL

);

DBMS_OBFUSCATION_TOOLKIT.DES3ENCRYPT

(

input_string IN VARCHAR2,

key_string IN VARCHAR2,

encrypted_string OUT VARCHAR2,

which IN PLS_INTEGER DEFAULT 0,

iv_string IN VARCHAR2 DEFAULT NULL

);

– 함수

DBMS_OBFUSCATION_TOOLKIT.DES3ENCRYPT

(

input IN RAW,

key IN RAW,

which IN PLS_INTEGER DEFAULT 0,

iv IN RAW DEFAULT NULL

)

RETURN RAW;

DBMS_OBFUSCATION_TOOLKIT.DES3ENCRYPT

(

input_string IN VARCHAR2,

key_string IN VARCHAR2,

which IN PLS_INTEGER DEFAULT 0,

iv_string IN VARCHAR2 DEFAULT NULL

)

RETURN VARCHAR2;

● 파라미터

설명파라미터

암호화할 데이터이다.input, input_string

암호화하기 위해 주어진 키 값이다.key

암호화된 결과 데이터이다.encrypted_data

which – 0이면 DES 암호화를 2번 수행한다.

– 1이면 DES 암호화를 3번 수행한다.

초기화 벡터이다.iv

제3장 DBMS_OBFUSCATION_TOOLKIT 35

Page 58: [11]-TmaxData - Tibero RDBMS 4 SP1... · 2019-06-26 · 본 제품은 “OpenSSL”, “RSA Data Security, Inc.”, “Apache Foundation” 및 “Jean-loup Gailly와 Mark Adler”

● 예외 상황

설명예외 상황

파라미터 중 하나라도 NULL인 경우이다.INVALID_ARGUMENT

input_data의 길이가 8의 배수가 아닌 경우이다.INVALID_INPUT

key 값의 길이가 8보다 작은 경우이다.KEY_TOO_SHORT

which 값이 0 또는 1이 아닌 경우이다.INVALID_DES_MODE

● 예제

DECLARE

data RAW(256);

key RAW(16);

encrypted_data RAW(256);

decrypted_data RAW(256);

BEGIN

data := '0102030405AE030D0123456789ABCDEF';

key := '0A123B8E002CD3FF01DE2389A4567BCF';

DBMS_OBFUSCATION_TOOLKIT.DES3Encrypt(input => data, key => key,

encrypted_data => encrypted_data);

data := encrypted_data;

DBMS_OBFUSCATION_TOOLKIT.DES3Decrypt(input => data, key => key,

decrypted_data => decrypted_data);

END;

3.2.3. DES3GETKEY

임의의 값을 입력 값으로 받아 DES3 알고리즘을 위한 키를 생성하는 프로시저와 함수이다.

DES3GETKEY 프로시저와 함수의 세부 내용은 다음과 같다.

● 프로토타입

– 프로시저

DBMS_OBFUSCATION_TOOLKIT.DES3GETKEY

(

which IN PLS_INTEGER DEFAULT 0,

seed IN RAW,

key OUT RAW

);

DBMS_OBFUSCATION_TOOLKIT.DES3GETKEY

(

36 Tibero RDBMS tbPSM 참조 안내서

Page 59: [11]-TmaxData - Tibero RDBMS 4 SP1... · 2019-06-26 · 본 제품은 “OpenSSL”, “RSA Data Security, Inc.”, “Apache Foundation” 및 “Jean-loup Gailly와 Mark Adler”

which IN PLS_INTEGER DEFAULT 0,

seed_string IN VARCHAR2,

key OUT VARCHAR2

);

– 함수

DBMS_OBFUSCATION_TOOLKIT.DES3GETKEY

(

which IN PLS_INTEGER DEFAULT 0,

seed IN RAW

)

RETURN RAW;

DBMS_OBFUSCATION_TOOLKIT.DES3GETKEY

(

which IN PLS_INTEGER DEFAULT 0,

seed_string IN VARCHAR2

)

RETURN VARCHAR2;

● 파라미터

설명파라미터

which – 0이면 DES 암호화를 2번 수행한다.

– 1이면 DES 암호화를 3번 수행한다.

80자 이상의 임의의 값이다.seed

암호화하기 위해 주어진 키 값이다.key

● 예외 상황

설명예외 상황

seed의 값이 NULL인 경우이다.NO_SEED

seed의 길이가 80보다 작은 경우이다.SEED_TOO_SHORT

which가 NULL인 경우이다.INVALID_INPUT

which의 값이 0 또는 1이 아닌 경우이다.INVALID_DES_MODE

● 예제

DECLARE

data VARCHAR2(4096);

제3장 DBMS_OBFUSCATION_TOOLKIT 37

Page 60: [11]-TmaxData - Tibero RDBMS 4 SP1... · 2019-06-26 · 본 제품은 “OpenSSL”, “RSA Data Security, Inc.”, “Apache Foundation” 및 “Jean-loup Gailly와 Mark Adler”

key VARCHAR2(4096);

key_seed VARCHAR2(4096);

encrypted_data VARCHAR2(4096);

decrypted_data VARCHAR2(4096);

BEGIN

data := '0102030405AE030D';

key_seed := '1234567890'||'1234567890'||'1234567890'||'1234567890';

key_seed := rpad(key_seed,80);

key := dbms_obfuscation_toolkit.DES3GetKey(seed_string => key_seed);

DBMS_OBFUSCATION_TOOLKIT.DES3Encrypt(input_string => data, key_string => key,

encrypted_string=> encrypted_data);

data := encrypted_data;

DBMS_OBFUSCATION_TOOLKIT.DES3Decrypt(input_string => data, key_string => key,

decrypted_string => decrypted_data);

END;

/

3.2.4. DESDECRYPT

DES 알고리즘을 이용하여 암호화된 데이터를 복호화하는 프로시저와 함수이다. 복호화를 위해 주어진

키는 반드시 8byte(64bit) 이어야 하며, 그렇지 않으면 예외 상황이 발생한다.

DESDECRYPT 프로시저와 함수의 세부 내용은 다음과 같다.

● 프로토타입

– 프로시저

DBMS_OBFUSCATION_TOOLKIT.DESDECRYPT

(

input IN RAW,

key IN RAW,

decrypted_data OUT RAW

);

DBMS_OBFUSCATION_TOOLKIT.DESDECRYPT

(

input_string IN VARCHAR2,

key_string IN VARCHAR2,

decrypted_string OUT VARCHAR2

);

– 함수

38 Tibero RDBMS tbPSM 참조 안내서

Page 61: [11]-TmaxData - Tibero RDBMS 4 SP1... · 2019-06-26 · 본 제품은 “OpenSSL”, “RSA Data Security, Inc.”, “Apache Foundation” 및 “Jean-loup Gailly와 Mark Adler”

DBMS_OBFUSCATION_TOOLKIT.DESDECRYPT

(

input IN RAW,

key IN RAW

)

RETURN RAW;

DBMS_OBFUSCATION_TOOLKIT.DESDECRYPT

(

input_string IN VARCHAR2,

key_string IN VARCHAR2

);

RETURN VARCHAR2;

● 파라미터

설명파라미터

복호화할 데이터이다.input, input_string

복호화하기 위해 주어진 키 값이다.key

복호화된 결과 데이터이다.decrypted_data

● 예외 상황

설명예외 상황

파라미터 중 하나라도 NULL인 경우이다.INVALID_ARGUMENT

input_data의 길이가 8의 배수가 아닌 경우이다.INVALID_INPUT

key 값의 길이가 8보다 작은 경우이다.KEY_TOO_SHORT

● 예제

DECLARE

data RAW(256);

key RAW(16);

encrypted_data RAW(256);

decrypted_data RAW(256);

BEGIN

data := '0102030405AE030D';

key := '0A123B8E002CD3FF';

DBMS_OBFUSCATION_TOOLKIT.DESEncrypt(input => data, key => key,

encrypted_data => encrypted_data);

data := encrypted_data;

DBMS_OBFUSCATION_TOOLKIT.DESDecrypt(input => data, key => key,

제3장 DBMS_OBFUSCATION_TOOLKIT 39

Page 62: [11]-TmaxData - Tibero RDBMS 4 SP1... · 2019-06-26 · 본 제품은 “OpenSSL”, “RSA Data Security, Inc.”, “Apache Foundation” 및 “Jean-loup Gailly와 Mark Adler”

decrypted_data => decrypted_data);

END;

3.2.5. DESENCRYPT

DES 알고리즘을 이용하여 데이터를 암호화하는 프로시저와 함수이다. 암호화를 위해 주어진 키는 반드

시 8byte(64bit)이어야 하며, 그렇지 않으면 예외 상황이 발생한다.

DESENCRYPT 프로시저와 함수의 세부 내용은 다음과 같다.

● 프로토타입

– 프로시저

DBMS_OBFUSCATION_TOOLKIT.DESENCRYPT

(

input IN RAW,

key IN RAW,

encrypted_data OUT RAW

);

DBMS_OBFUSCATION_TOOLKIT.DESENCRYPT

(

input_string IN VARCHAR2,

key_string IN VARCHAR2,

encrypted_string OUT VARCHAR2

);

– 함수

DBMS_OBFUSCATION_TOOLKIT.DESENCRYPT

(

input IN RAW,

key IN RAW

)

RETURN RAW;

DBMS_OBFUSCATION_TOOLKIT.DESENCRYPT

(

input_string IN VARCHAR2,

key_string IN VARCHAR2

)

RETURN VARCHAR2;

● 파라미터

40 Tibero RDBMS tbPSM 참조 안내서

Page 63: [11]-TmaxData - Tibero RDBMS 4 SP1... · 2019-06-26 · 본 제품은 “OpenSSL”, “RSA Data Security, Inc.”, “Apache Foundation” 및 “Jean-loup Gailly와 Mark Adler”

설명파라미터

암호화할 데이터이다.input, input_string

암호화하기 위해 주어진 키 값이다.key

암호화된 결과 데이터이다.encrypted_data

● 예외 상황

설명예외 상황

파라미터 중 하나라도 NULL인 경우이다.INVALID_ARGUMENT

input_data의 길이가 8의 배수가 아닌 경우이다.INVALID_INPUT

key 값의 길이가 8보다 작은 경우이다.KEY_TOO_SHORT

● 예제

DECLARE

data RAW(256);

key RAW(16);

encrypted_data RAW(256);

decrypted_data RAW(256);

BEGIN

data := '0102030405AE030D';

key := '0A123B8E002CD3FF';

DBMS_OBFUSCATION_TOOLKIT.DESEncrypt(input => data, key => key,

encrypted_data => encrypted_data);

data := encrypted_data;

DBMS_OBFUSCATION_TOOLKIT.DESDecrypt(input => data, key => key,

decrypted_data => decrypted_data);

END;

3.2.6. DESGETKEY

임의의 값을 입력 값으로 받아 DES 알고리즘을 위한 키를 생성하는 프로시저와 함수이다.

DESGETKEY 프로시저와 함수의 세부 내용은 다음과 같다.

● 프로토타입

– 프로시저

DBMS_OBFUSCATION_TOOLKIT.DESGETKEY

(

seed IN RAW,

제3장 DBMS_OBFUSCATION_TOOLKIT 41

Page 64: [11]-TmaxData - Tibero RDBMS 4 SP1... · 2019-06-26 · 본 제품은 “OpenSSL”, “RSA Data Security, Inc.”, “Apache Foundation” 및 “Jean-loup Gailly와 Mark Adler”

key OUT RAW

);

DBMS_OBFUSCATION_TOOLKIT.DESGETKEY

(

seed_string IN VARCHAR2,

key OUT VARCHAR2

);

– 함수

DBMS_OBFUSCATION_TOOLKIT.DESGETKEY

(

seed IN RAW

)

RETURN RAW;

DBMS_OBFUSCATION_TOOLKIT.DESGETKEY

(

seed_string IN VARCHAR2

)

RETURN VARCHAR2;

● 파라미터

설명파라미터

80자 이상의 임의의 값이다.seed

암호화하기 위해 주어진 키 값이다.key

● 예외 상황

설명예외 상황

seed의 값이 NULL인 경우이다.NO_SEED

seed의 길이가 80보다 작은 경우이다.SEED_TOO_SHORT

● 예제

DECLARE

data VARCHAR2(4096);

key VARCHAR2(4096);

key_seed VARCHAR2(4096);

encrypted_data VARCHAR2(4096);

decrypted_data VARCHAR2(4096);

BEGIN

42 Tibero RDBMS tbPSM 참조 안내서

Page 65: [11]-TmaxData - Tibero RDBMS 4 SP1... · 2019-06-26 · 본 제품은 “OpenSSL”, “RSA Data Security, Inc.”, “Apache Foundation” 및 “Jean-loup Gailly와 Mark Adler”

data := '0102030405AE030D';

key_seed := '1234567890'||'1234567890'||'1234567890'||'1234567890';

key_seed := rpad(key_seed,80);

key := dbms_obfuscation_toolkit.DESGetKey(seed_string => key_seed);

DBMS_OBFUSCATION_TOOLKIT.DESEncrypt(input_string => data, key_string => key,

encrypted_string=> encrypted_data);

data := encrypted_data;

DBMS_OBFUSCATION_TOOLKIT.DESDecrypt(input_string => data, key_string => key,

decrypted_string => decrypted_data);

END;

/

제3장 DBMS_OBFUSCATION_TOOLKIT 43

Page 66: [11]-TmaxData - Tibero RDBMS 4 SP1... · 2019-06-26 · 본 제품은 “OpenSSL”, “RSA Data Security, Inc.”, “Apache Foundation” 및 “Jean-loup Gailly와 Mark Adler”
Page 67: [11]-TmaxData - Tibero RDBMS 4 SP1... · 2019-06-26 · 본 제품은 “OpenSSL”, “RSA Data Security, Inc.”, “Apache Foundation” 및 “Jean-loup Gailly와 Mark Adler”

제4장 DBMS_OUTPUT

본 장에서는 DBMS_OUTPUT 패키지의 기본 개념과 패키지 내의 프로시저를 사용하는 방법을 설명한다.

4.1. 개요DBMS_OUTPUT은 메시지를 버퍼에 저장하고 버퍼로부터 메시지를 읽어오기 위한 인터페이스를 제공하

는 패키지이다. 하나의 프로시저, 함수, 트리거 등에 의해 저장된 메시지는 다른 프로시저, 함수, 트리거

등에서 읽어올 수 있다.

DBMS_OUTPUT 패키지 내의 ENABLE 프로시저를 실행하여 메시지를 주고 받기 위한 버퍼를 지정된 크

기로 할당한다. 만약 메시지를 지정된 버퍼 크기 이상으로 저장하려고 하면 예외 상황이 발생한다.

할당된 버퍼는 DISABLE 프로시저를 실행하여 제거할 수 있으며, 다시 ENABLE 프로시저를 실행하기 전

에는 GET_LINE 및 GET_LINES 또는 PUT 및 PUT_LINE, NEW_LINE 프로시저를 호출해도 무시된다. 버

퍼의 메시지는 여러 라인으로 구성되어 있으며, 라인마다 라인 끝(End of Line, 이하 EOL) 문자로 끝난다.

PUT_LINE 프로시저를 통해 버퍼에 저장된 메시지는 GET_LINE이나 GET_LINES 프로시저를 실행하여

읽어올 수 있다.

다음은 DBMS_OUTPUT 패키지 내에 정의된 타입이다.

● CHARARR

메시지 버퍼에서 읽어온 내용을 저장하기 위한 공간이다.

TYPE CHARARR IS TABLE OF VARCHAR2(32767)

4.2. 프로시저본 절에서는 DBMS_OUTPUT 패키지에서 제공하는 프로시저를 알파벳 순으로 설명한다.

4.2.1. DISABLE

할당된 메시지 버퍼를 제거하고, DBMS_OUTPUT 패키지 내의 다른 프로시저를 사용할 수 없게 하는 프

로시저이다. 이 프로서지를 실행하면 메시지 버퍼에 남아있는 모든 메시지가 함께 제거된다.

제4장 DBMS_OUTPUT 45

Page 68: [11]-TmaxData - Tibero RDBMS 4 SP1... · 2019-06-26 · 본 제품은 “OpenSSL”, “RSA Data Security, Inc.”, “Apache Foundation” 및 “Jean-loup Gailly와 Mark Adler”

DISABLE 프로시저의 세부 내용은 다음과 같다.

● 프로토타입

DBMS_OUTPUT.DISABLE;

● 예제

BEGIN

DBMS_OUTPUT.PUT_LINE('Before DISABLE');

DBMS_OUTPUT.DISABLE;

DBMS_OUTPUT.PUT_LINE('After DISABLE');

END;

/

PSM completed

SQL>

4.2.2. ENABLE

지정된 크기의 메시지 버퍼를 할당하고 DBMS_OUTPUT 패키지 내의 다른 프로시저를 사용할 수 있게 하

는 프로시저이다. 이 프로시저를 여러 번 호출하면 가장 크게 지정한 크기로 메시지 버퍼를 할당한다. 이

때 메시지 버퍼의 크기는 최소 2KB, 최대 2MB이다.

ENABLE 프로시저의 세부 내용은 다음과 같다.

● 프로토타입

DBMS_OUTPUT.ENABLE

(

buffer_size IN INTEGER DEFAULT 20000

);

● 파라미터

설명파라미터

할당할 메시지 버퍼의 크기이다. (단위: byte)buffer_size

● 예제

BEGIN

DBMS_OUTPUT.DISABLE;

DBMS_OUTPUT.PUT_LINE('Before ENABLE');

DBMS_OUTPUT.ENABLE(32768);

DBMS_OUTPUT.PUT_LINE('After ENABLE');

46 Tibero RDBMS tbPSM 참조 안내서

Page 69: [11]-TmaxData - Tibero RDBMS 4 SP1... · 2019-06-26 · 본 제품은 “OpenSSL”, “RSA Data Security, Inc.”, “Apache Foundation” 및 “Jean-loup Gailly와 Mark Adler”

END;

/

After ENABLE

PSM completed

SQL>

4.2.3. GET_LINE, GET_LINES

메시지 버퍼로부터 라인 단위로 메시지를 읽어오는 프로시저이다. 이 프로시저는 라인 단위로 메시지를

읽으며, 하나의 라인을 형성하지 않은 메시지는 읽지 않는다.

GET_LINE 또는 GET_LINES 프로시저를 호출한 후에 PUT 또는 PUT_LINE 프로시저를 호출하면, 현재

까지 메시지 버퍼에 남아 있던 메시지는 모두 제거된다.

한 라인의 메시지는 최대 255byte의 크기를 가지므로, 출력 파라미터의 크기를 충분하게 설정해야 한다.

GET_LINE, GET_LINES 프로시저의 세부 내용은 다음과 같다.

● 프로토타입

– GET_LINE

GET_LINE 프로시저는 한 번 호출될 때마다 하나의 라인만을 읽어온다.

DBMS_OUTPUT.GET_LINE

(

line OUT VARCHAR,

status OUT INTEGER

);

– GET_LINES

GET_LINE 프로시저는 지정된 수만큼, 한 번에 여러 라인의 메시지를 읽어온다. 이때 메시지 버퍼로

부터 실제로 읽어온 메시지 라인의 수를 반환한다. 만약 메시지 버퍼 내에 충분한 수의 메시지 라인이

없어서 지정된 수만큼의 메시지 라인을 가져오지 못하면, 가져온 메시지 라인의 수만큼만 저장된다.

DBMS_OUTPUT.GET_LINES

(

lines OUT CHARARR,

num_lines IN OUT INTEGER

);

● 파라미터

제4장 DBMS_OUTPUT 47

Page 70: [11]-TmaxData - Tibero RDBMS 4 SP1... · 2019-06-26 · 본 제품은 “OpenSSL”, “RSA Data Security, Inc.”, “Apache Foundation” 및 “Jean-loup Gailly와 Mark Adler”

설명파라미터

메시지 버퍼로부터 읽어 온 한 라인 또는 여러 라인의 메시지이다.line, lines

status – 메시지를 성공적으로 읽어 온 경우에는 0을 반환한다.

– 메시지를 성공적으로 읽어 오지 못한 경우에는 1을 반환한다.

읽어 올 메시지 라인의 수를 입력하고, 실제로 읽어 온 메시지 라인의 수를 출

력한다.

num_lines

● 예제

– GET_LINE

DECLARE

message VARCHAR(1024);

status INTEGER;

BEGIN

DBMS_OUTPUT.PUT_LINE('A poet is the painter of the soul');

DBMS_OUTPUT.PUT_LINE('Faith without deeds is useless');

DBMS_OUTPUT.PUT_LINE('Forgiveness is better than revenge');

DBMS_OUTPUT.GET_LINE(message, status);

DBMS_OUTPUT.PUT_LINE(message);

END;

/

A poet is the painter of the soul

PSM completed

SQL>

– GET_LINES

DECLARE

message_arr DBMS_OUTPUT.CHARARR;

num_lines INTEGER := 4;

BEGIN

DBMS_OUTPUT.PUT('A poet is ');

DBMS_OUTPUT.PUT('the painter of the soul');

DBMS_OUTPUT.NEW_LINE;

DBMS_OUTPUT.PUT_LINE('Faith without deeds is useless');

DBMS_OUTPUT.PUT_LINE('Forgiveness is better than revenge');

DBMS_OUTPUT.GET_LINES(message_arr, num_lines);

DBMS_OUTPUT.PUT_LINE(message_arr(2));

END;

/

Faith without deeds is useless

48 Tibero RDBMS tbPSM 참조 안내서

Page 71: [11]-TmaxData - Tibero RDBMS 4 SP1... · 2019-06-26 · 본 제품은 “OpenSSL”, “RSA Data Security, Inc.”, “Apache Foundation” 및 “Jean-loup Gailly와 Mark Adler”

PSM completed

SQL>

4.2.4. NEW_LINE

메시지 버퍼에 EOL 문자를 저장하는 프로시저이다.

PUT 프로시저로 메시지를 저장한 경우, EOL 문자가 없으므로 라인 단위로 메시지를 읽는 GET_LINE,

GET_LINES 프로시저로 문자열을 읽어 올 수 없다. 단, NEW_LINE 프로시저를 사용하면 GET_LINE,

GET_LINES 프로시저로 문자열을 읽어 올 수 있다.

NEW_LINE 프로시저의 세부 내용은 다음과 같다.

● 프로토타입

DBMS_OUTPUT.NEW_LINE;

● 예제

BEGIN

DBMS_OUTPUT.PUT_LINE('The will of a man is his happiness');

DBMS_OUTPUT.NEW_LINE;

DBMS_OUTPUT.PUT_LINE('Love your neighbor as yourself');

END;

/

The will of a man is his happiness

Love your neighbor as yourself

PSM completed

SQL>

4.2.5. PUT, PUT_LINE

메시지 버퍼에 메시지를 저장하는 프로시저이다.

PUT, PUT_LINE 프로시저의 세부 내용은 다음과 같다.

● 프로토타입

– PUT

제4장 DBMS_OUTPUT 49

Page 72: [11]-TmaxData - Tibero RDBMS 4 SP1... · 2019-06-26 · 본 제품은 “OpenSSL”, “RSA Data Security, Inc.”, “Apache Foundation” 및 “Jean-loup Gailly와 Mark Adler”

PUT 프로시저는 하나의 라인을 여러 번에 걸쳐 저장할 수 있다. 버퍼에 저장되는 메시지의 마지막 라

인 끝에 EOL 문자가 첨부되지 않는다.

DBMS_OUTPUT.PUT(data IN NUMBER);

DBMS_OUTPUT.PUT(data IN VARCHAR);

– PUT_LINE

PUT_LINE 프로시저는 PUT 프로시저와는 반대로 버퍼에 저장되는 메시지의 마지막 라인 끝에 EOL

문자를 첨부한다. 만약 EOL 문자만을 저장하려면 NEW_LINE 프로시저를 호출한다.

DBMS_OUTPUT.PUT_LINE(data IN NUMBER);

DBMS_OUTPUT.PUT_LINE(data IN VARCHAR);

● 파라미터

입력 값으로 주어진 파라미터의 데이터 타입은 NUMBER, VARCHAR, DATE 세 가지이며, 메시지로 저

장되기 전에 항상 VARCHAR 타입으로 변환된다. NUMBER와 DATE 타입의 데이터는 TO_CHAR 함수

를 적용하여 반환된 결과로 저장된다.

설명파라미터

메시지 버퍼에 저장할 메시지 데이터이다.data

● 예외 상황

설명예외 상황

메시지 버퍼의 최댓값을 초과한 경우이다.BUF_OVERFLOW

50 Tibero RDBMS tbPSM 참조 안내서

Page 73: [11]-TmaxData - Tibero RDBMS 4 SP1... · 2019-06-26 · 본 제품은 “OpenSSL”, “RSA Data Security, Inc.”, “Apache Foundation” 및 “Jean-loup Gailly와 Mark Adler”

제5장 DBMS_STATS

본 장에서는 DBMS_STATS 패키지의 기본 개념과 패키지 내의 프로시저와 함수를 사용하는 방법을 설명

한다.

5.1. 개요DBMS_STATS는 데이터베이스 객체의 통계 정보를 수집하고 관리하는 패키지이다. 이 패키지를 사용하

면 데이터베이스에 있는 컬럼, 테이블, 데이터 사전(DD: Data Dictionary), 인덱스, 스키마, 시스템 등에 대

한 통계 정보를 수집하고 관리(예: 삭제 또는 초기화 등)할 수 있다.

5.2. 프로시저본 절에서는 DBMS_STATS 패키지에서 제공하는 프로시저를 알파벳 순으로 설명한다.

5.2.1. CREATE_STAT_TABLE

통계 정보를 저장할 통계 테이블을 생성하는 프로시저이다.

CREATE_STAT_TABLE 프로시저의 세부 내용은 다음과 같다.

● 프로토타입

DBMS_STATS.CREATE_STAT_TABLE

(

ownname VARCHAR2,

stattab VARCHAR2,

tblspace VARCHAR2 DEFAULT NULL

);

● 파라미터

설명파라미터

통계 테이블이 속한 스키마의 이름이다.ownname

통계 정보를 저장할 통계 테이블의 이름이다.stattab

통계 테이블이 속할 테이블스페이스의 이름이다.tblspace

(기본값: NULL, NULL일 경우 SYSTEM 테이블스페이스에 저장된다.)

제5장 DBMS_STATS 51

Page 74: [11]-TmaxData - Tibero RDBMS 4 SP1... · 2019-06-26 · 본 제품은 “OpenSSL”, “RSA Data Security, Inc.”, “Apache Foundation” 및 “Jean-loup Gailly와 Mark Adler”

● 예외 상황

설명예외 상황

잘못된 스키마를 입력한 경우이다.7068

5.2.2. DELETE_COLUMN_STATS

컬럼의 통계 정보를 삭제하는 프로시저이다.

DELETE_COLUMN_STATS 프로시저의 세부 내용은 다음과 같다.

● 프로토타입

DBMS_STATS.DELETE_COLUMN_STATS

(

ownname VARCHAR2,

tabname VARCHAR2,

colname VARCHAR2,

partname VARCHAR2 DEFAULT NULL,

cascade_parts BOOLEAN DEFAULT TRUE,

no_invalidate BOOLEAN DEFAULT to_boolean(get_param('STAT_NO_INVALIDATE'))

);

● 파라미터

설명파라미터

스키마의 이름이다.ownname

컬럼이 속한 테이블의 이름이다.tabname

컬럼의 이름이다.colname

통계 정보를 삭제할 파티션의 이름이다.partname

테이블이 파티션되어 있고, partname의 값이 NULL이면 테이블 수준의 컬럼

통계 정보를 삭제한다.

테이블이 파티션되어 있고 partname이 NULL일 때, 이 파라미터를 TRUE로

설정하면 모든 파티션 수준의 컬럼 통계 정보도 함께 삭제한다.

cascade_parts

TRUE로 설정하면 관련된 Physical Plan을 삭제하지 않는다.no_invalidate

● 예외 상황

설명예외 상황

객체가 존재하지 않는 경우이다.OBJECT_NOT_EXISTS

52 Tibero RDBMS tbPSM 참조 안내서

Page 75: [11]-TmaxData - Tibero RDBMS 4 SP1... · 2019-06-26 · 본 제품은 “OpenSSL”, “RSA Data Security, Inc.”, “Apache Foundation” 및 “Jean-loup Gailly와 Mark Adler”

5.2.3. DELETE_DATABASE_STATS

데이터베이스에 있는 모든 테이블의 통계 정보를 삭제하는 프로시저이다.

DELETE_DATABASE_STATS 프로시저의 세부 내용은 다음과 같다.

● 프로토타입

DBMS_STATS.DELETE_DATABASE_STATS

(

no_invalidate BOOLEAN DEFAULT to_boolean(get_param('STAT_NO_INVALIDATE'))

);

● 파라미터

설명파라미터

TRUE로 설정하면 관련된 Physical Plan을 삭제하지 않는다.no_invalidate

5.2.4. DELETE_DICTIONARY_STATS

모든 데이터 사전의 스키마(SYS, SYSCAT)의 통계 정보를 삭제하는 프로시저이다.

DELETE_DICTIONARY_STATS 프로시저의 세부 내용은 다음과 같다.

● 프로토타입

DBMS_STATS.DELETE_DICTIONARY_STATS

(

no_invalidate BOOLEAN DEFAULT to_boolean(get_param('STAT_NO_INVALIDATE'))

);

● 파라미터

설명파라미터

TRUE로 설정하면 관련된 Physical Plan을 삭제하지 않는다.no_invalidate

5.2.5. DELETE_INDEX_STATS

인덱스의 통계 정보를 삭제하는 프로시저이다.

DELETE_INDEX_STATS 프로시저의 세부 내용은 다음과 같다.

제5장 DBMS_STATS 53

Page 76: [11]-TmaxData - Tibero RDBMS 4 SP1... · 2019-06-26 · 본 제품은 “OpenSSL”, “RSA Data Security, Inc.”, “Apache Foundation” 및 “Jean-loup Gailly와 Mark Adler”

● 프로토타입

DBMS_STATS.DELETE_INDEX_STATS

(

ownname VARCHAR2,

idxname VARCHAR2,

partname VARCHAR2 DEFAULT NULL,

cascade_parts BOOLEAN DEFAULT TRUE,

no_invalidate BOOLEAN DEFAULT to_boolean(get_param('STAT_NO_INVALIDATE'))

);

● 파라미터

설명파라미터

스키마의 이름이다.ownname

인덱스의 이름이다.idxname

통계 정보를 삭제할 파티션의 이름이다.partname

인덱스가 파티션으로 나누어져 있고, partname의 값이 NULL이면 인덱스 수

준의 통계 정보를 삭제한다.

인덱스가 파티션으로 나누어져 있고, partname의 값이 NULL일 때, 이 파라

미터를 TRUE로 설정하면 모든 파티션 수준의 통계 정보도 함께 삭제한다.

cascade_parts

TRUE로 설정하면 관련된 Physical Plan을 삭제하지 않는다.no_invalidate

● 예외 상황

설명예외 상황

객체가 존재하지 않는 경우이다.OBJECT_NOT_EXISTS

5.2.6. DELETE_SCHEMA_STATS

스키마 전체의 통계 정보를 삭제하는 프로시저이다.

DELETE_SCHEMA_STATS 프로시저의 세부 내용은 다음과 같다.

● 프로토타입

DBMS_STATS.DELETE_SCHEMA_STATS

(

ownname VARCHAR2,

no_invalidate BOOLEAN DEFAULT to_boolean(get_param('STAT_NO_INVALIDATE'))

);

54 Tibero RDBMS tbPSM 참조 안내서

Page 77: [11]-TmaxData - Tibero RDBMS 4 SP1... · 2019-06-26 · 본 제품은 “OpenSSL”, “RSA Data Security, Inc.”, “Apache Foundation” 및 “Jean-loup Gailly와 Mark Adler”

● 파라미터

설명파라미터

스키마의 이름이다.ownname

TRUE로 설정하면 관련된 Physical Plan을 삭제하지 않는다.no_invalidate

● 예외 상황

설명예외 상황

객체가 존재하지 않는 경우이다.OBJECT_NOT_EXISTS

5.2.7. DELETE_SYSTEM_STATS

workload 시스템의 통계 정보를 삭제하고, noworkload 시스템의 통계 정보를 초기화하는 프로시저이다.

workload 시스템의 통계 정보는 INTERVAL, START, STOP 옵션으로, noworkload 시스템의 통계 정보는

NOWORKLOAD 옵션으로 수집한다.

DELETE_SYSTEM_STATS 프로시저의 세부 내용은 다음과 같다.

● 프로토타입

DBMS_STATS.DELETE_SYSTEM_STATS ();

● 예외 상황

설명예외 상황

DBA 권한이 없는 경우이다.-20000

5.2.8. DELETE_TABLE_STATS

테이블의 통계 정보를 삭제하는 프로시저이다.

DELETE_TABLE_STATS 프로시저의 세부 내용은 다음과 같다.

● 프로토타입

DBMS_STATS.DELETE_TABLE_STATS

(

ownname VARCHAR2,

tabname VARCHAR2,

제5장 DBMS_STATS 55

Page 78: [11]-TmaxData - Tibero RDBMS 4 SP1... · 2019-06-26 · 본 제품은 “OpenSSL”, “RSA Data Security, Inc.”, “Apache Foundation” 및 “Jean-loup Gailly와 Mark Adler”

partname VARCHAR2 DEFAULT NULL,

cascade_parts BOOLEAN DEFAULT TRUE,

cascade_columns BOOLEAN DEFAULT TRUE,

cascade_indexes BOOLEAN DEFAULT TRUE,

no_invalidate BOOLEAN DEFAULT to_boolean(get_param('STAT_NO_INVALIDATE'))

);

● 파라미터

설명파라미터

스키마의 이름이다.ownname

테이블의 이름이다.tabname

통계 정보를 삭제할 대상 파티션의 이름이다.partname

파티션으로 나뉘어 있고, partname의 값이 NULL이면 테이블 수준의 통계 정

보를 삭제한다.

테이블이 파티션으로 나뉘어 있고 partname이 NULL일 때, 이 파라미터를

TRUE로 설정하면 모든 파티션 수준의 통계 정보도 함께 삭제한다.

cascade_parts

이 파라미터를 TRUE로 설정하면 컬럼의 통계 정보도 함께 삭제한다.cascade_columns

TRUE로 설정하면 테이블에 있는 인덱스의 통계 정보도 함께 삭제한다.cascade_indexes

TRUE로 설정하면 관련된 Physical Plan을 삭제하지 않는다.no_invalidate

● 예외 상황

설명예외 상황

객체가 존재하지 않는 경우이다.OBJECT_NOT_EXISTS

5.2.9. DROP_STAT_TABLE

통계 테이블을 삭제하는 프로시저이다.

DROP_STAT_TABLE 프로시저의 세부 내용은 다음과 같다.

● 프로토타입

DBMS_STATS.DROP_STAT_TABLE

(

ownname VARCHAR2,

stattab VARCHAR2

);

56 Tibero RDBMS tbPSM 참조 안내서

Page 79: [11]-TmaxData - Tibero RDBMS 4 SP1... · 2019-06-26 · 본 제품은 “OpenSSL”, “RSA Data Security, Inc.”, “Apache Foundation” 및 “Jean-loup Gailly와 Mark Adler”

● 파라미터

설명파라미터

통계 테이블이 속한 스키마의 이름이다.ownname

통계 정보를 저장할 통계 테이블의 이름이다.stattab

● 예외 상황

설명예외 상황

잘못된 스키마를 입력한 경우이다.7068

5.2.10. EXPORT_COLUMN_STATS

지정한 컬럼의 통계 정보를 통계 테이블에 저장하는 프로시저이다.

EXPORT_COLUMN_STATS 프로시저의 세부 내용은 다음과 같다.

● 프로토타입

DBMS_STATS.EXPORT_COLUMN_STATS

(

ownname VARCHAR2,

tabname VARCHAR2,

colname VARCHAR2,

partname VARCHAR2 DEFAULT NULL,

stattab VARCHAR2,

statid VARCHAR2 DEFAULT NULL,

statown VARCHAR2 DEFAULT NULL

);

● 파라미터

설명파라미터

스키마의 이름이다.ownname

테이블의 이름이다.tabname

컬럼의 이름이다.colname

파티션의 이름이다.partname

통계 테이블의 이름이다stattab

통계 테이블 내에서 구분할 통계 정보 ID이다.statid

통계 테이블이 속한 스키마의 이름이다.statown

제5장 DBMS_STATS 57

Page 80: [11]-TmaxData - Tibero RDBMS 4 SP1... · 2019-06-26 · 본 제품은 “OpenSSL”, “RSA Data Security, Inc.”, “Apache Foundation” 및 “Jean-loup Gailly와 Mark Adler”

● 예외 상황

설명예외 상황

잘못된 컬럼을 입력한 경우이다.20003

5.2.11. EXPORT_DATABASE_STATS

데이터베이스에 있는 테이블의 통계 정보를 통계 테이블에 저장하는 프로시저이다.

EXPORT_DATABASE_STATS 프로시저의 세부 내용은 다음과 같다.

● 프로토타입

DBMS_STATS.EXPORT_DATABASE_STATS

(

stattab VARCHAR2,

statid VARCHAR2 DEFAULT NULL,

statown VARCHAR2 DEFAULT NULL

);

● 파라미터

설명파라미터

통계 테이블의 이름이다stattab

통계 테이블 내에서 구분할 통계 정보 ID이다.statid

통계 테이블이 속한 스키마의 이름이다.statown

● 예외 상황

설명예외 상황

DBA 권한이 없는 경우이다.-20000

5.2.12. EXPORT_INDEX_STATS

지정한 인덱스의 통계 정보를 통계 테이블에 저장하는 프로시저이다.

EXPORT_INDEX_STATS 프로시저의 세부 내용은 다음과 같다.

● 프로토타입

58 Tibero RDBMS tbPSM 참조 안내서

Page 81: [11]-TmaxData - Tibero RDBMS 4 SP1... · 2019-06-26 · 본 제품은 “OpenSSL”, “RSA Data Security, Inc.”, “Apache Foundation” 및 “Jean-loup Gailly와 Mark Adler”

DBMS_STATS.EXPORT_INDEX_STATS

(

ownname VARCHAR2,

idxname VARCHAR2,

stattab VARCHAR2,

statid VARCHAR2 DEFAULT NULL,

statown VARCHAR2 DEFAULT NULL

);

● 파라미터

설명파라미터

스키마의 이름이다.ownname

인덱스의 이름이다.idxname

통계 테이블의 이름이다stattab

통계 테이블 내에서 구분할 통계 정보 ID이다.statid

통계 테이블이 속한 스키마의 이름이다.statown

● 예외 상황

설명예외 상황

잘못된 인덱스를 입력한 경우이다.20003

5.2.13. EXPORT_SCHEMA_STATS

스키마 전체의 통계 정보를 통계 테이블에 저장하는 프로시저이다.

EXPORT_SCHEMA_STATS 프로시저의 세부 내용은 다음과 같다.

● 프로토타입

DBMS_STATS.EXPORT_SCHEMA_STATS

(

ownname VARCHAR2,

stattab VARCHAR2,

statid VARCHAR2 DEFAULT NULL,

statown VARCHAR2 DEFAULT NULL

);

● 파라미터

제5장 DBMS_STATS 59

Page 82: [11]-TmaxData - Tibero RDBMS 4 SP1... · 2019-06-26 · 본 제품은 “OpenSSL”, “RSA Data Security, Inc.”, “Apache Foundation” 및 “Jean-loup Gailly와 Mark Adler”

설명파라미터

스키마의 이름이다.ownname

통계 테이블의 이름이다stattab

통계 테이블 내에서 구분할 통계 정보 ID이다.statid

통계 테이블이 속한 스키마의 이름이다.statown

● 예외 상황

설명예외 상황

잘못된 스키마를 입력한 경우이다.20003

5.2.14. EXPORT_SYSTEM_STATS

시스템의 통계 정보를 통계 테이블에 저장하는 프로시저이다.

EXPORT_SYSTEM_STATS 프로시저의 세부 내용은 다음과 같다.

● 프로토타입

DBMS_STATS.EXPORT_SYSTEM_STATS

(

stattab VARCHAR2,

statid VARCHAR2 DEFAULT NULL,

statown VARCHAR2 DEFAULT NULL

);

● 파라미터

설명파라미터

통계 테이블의 이름이다stattab

통계 테이블 내에서 구분할 통계 정보 ID이다.statid

통계 테이블이 속한 스키마의 이름이다.statown

● 예외 상황

설명예외 상황

DBA 권한이 없는 경우이다.-20000

60 Tibero RDBMS tbPSM 참조 안내서

Page 83: [11]-TmaxData - Tibero RDBMS 4 SP1... · 2019-06-26 · 본 제품은 “OpenSSL”, “RSA Data Security, Inc.”, “Apache Foundation” 및 “Jean-loup Gailly와 Mark Adler”

5.2.15. EXPORT_TABLE_STATS

테이블의 통계 정보를 통계 테이블에 저장하는 프로시저이다.

EXPORT_TABLE_STATS 프로시저의 세부 내용은 다음과 같다.

● 프로토타입

DBMS_STATS.EXPORT_TABLE_STATS

(

ownname VARCHAR2,

tabname VARCHAR2,

partname VARCHAR2,

stattab VARCHAR2,

statid VARCHAR2 DEFAULT NULL,

cascade BOOLEAN DEFAULT TRUE,

statown VARCHAR2 DEFAULT NULL

);

● 파라미터

설명파라미터

스키마의 이름이다.ownname

테이블의 이름이다.tabname

파티션의 이름이다.partname

통계 테이블의 이름이다stattab

통계 테이블 내에서 구분할 통계 정보 ID이다.statid

테이블이 갖는 컬럼, 인덱스, 파티션의 통계 정보를 저장한다.cascade

통계 테이블이 속한 스키마의 이름이다.statown

● 예외 상황

설명예외 상황

잘못된 테이블을 입력한 경우이다.20003

5.2.16. GATHER_DATABASE_STATS

데이터베이스의 모든 객체의 통계 정보를 수집하는 프로시저이다.

GATHER_DATABASE_STATS 프로시저의 세부 내용은 다음과 같다.

제5장 DBMS_STATS 61

Page 84: [11]-TmaxData - Tibero RDBMS 4 SP1... · 2019-06-26 · 본 제품은 “OpenSSL”, “RSA Data Security, Inc.”, “Apache Foundation” 및 “Jean-loup Gailly와 Mark Adler”

● 프로토타입

DBMS_STATS.GATHER_DATABASE_STATS

(

estimate_percent NUMBER DEFAULT

to_estimate_percent_type (get_param ('STAT_ESTIMATE_PERCENT'),

method_opt VARCHAR2 DEFAULT get_param('STAT_METHOD_OPT'),

degree NUMBER DEFAULT to_degree_type (get_param('STAT_DEGREE')),

cascade BOOLEAN DEFAULT to_boolean(get_param('STAT_CASCADE')),

gather_sys BOOLEAN DEFAULT FALSE,

no_invalidate BOOLEAN DEFAULT to_boolean(get_param('STAT_NO_INVALIDATE'))

);

● 파라미터

설명파라미터

샘플링할 로우의 퍼센트를 정의한다.estimate_percent

0.000001 이상 100 이하의 값을 설정할 수 있다.

히스토그램 생성에 대한 옵션이다.method_opt

병렬 쿼리의 처리 개수를 설정한다.degree

인덱스에 대해서도 통계 정보를 수집한다.cascade

SYS 사용자의 테이블에 대해서도 통계 정보를 수집한다.gather_sys

TRUE로 설정하면 관련된 Physical Plan을 삭제하지 않는다.no_invalidate

다음과 같은 형식으로 method_opt 파라미터를 설정할 수 있다.

– FOR ALL

FOR ALL [INDEXED | HIDDEN] COLUMNS [size_clause]

각 옵션에 대한 설명은 다음과 같다.

설명옵션

인덱스된 컬럼의 통계 정보를 수집한다.INDEXED

실제 컬럼이 아닌 functional index로 생성된 컬럼에 대해서 통계 정보를 수집한다.HIDDEN

히스토그램을 생성할 때 길이를 설정하는 데 필요한 절이다.size_clause

– FOR COLUMNS

FOR COLUMNS [size_clause] column [size_clause] [,column [size_clause]...]

각 옵션에 대한 설명은 다음과 같다.

62 Tibero RDBMS tbPSM 참조 안내서

Page 85: [11]-TmaxData - Tibero RDBMS 4 SP1... · 2019-06-26 · 본 제품은 “OpenSSL”, “RSA Data Security, Inc.”, “Apache Foundation” 및 “Jean-loup Gailly와 Mark Adler”

설명옵션

히스토그램을 생성할 때 길이를 설정하는 데 필요한 절이다.size_clause

– size_clause

size_clause := SIZE {integer | REPEAT | AUTO}

각 항목에 대한 설명은 다음과 같다.

설명항목

히스토그램 버킷의 수 이다.integer

1~254개까지 설정할 수 있다.

히스토그램이 있는 경우에만 히스토그램의 정보를 수집한다.REPEAT

시스템에서 자동으로 값을 결정한다.AUTO

● 예외 상황

설명예외 상황

잘못된 파라미터 값을 입력한 경우이다.BAD_INPUT_VALUE

5.2.17. GATHER_DICTIONARY_STATS

모든 데이터 사전의 스키마(SYS, SYSCAT) 객체의 통계 정보를 수집하는 프로시저이다.

GATHER_DICTIONARY_STATS 프로시저의 세부 내용은 다음과 같다.

● 프로토타입

DBMS_STATS.GATHER_DICTIONARY_STATS

(

estimate_percent NUMBER DEFAULT

to_estimate_percent_type (get_param ('STAT_ESTIMATE_PERCENT'),

method_opt VARCHAR2 DEFAULT get_param('STAT_METHOD_OPT'),

degree NUMBER DEFAULT to_degree_type (get_param('STAT_DEGREE')),

cascade BOOLEAN DEFAULT to_boolean(get_param('STAT_CASCADE')),

no_invalidate BOOLEAN DEFAULT to_boolean(get_param('STAT_NO_INVALIDATE'))

);

● 파라미터

제5장 DBMS_STATS 63

Page 86: [11]-TmaxData - Tibero RDBMS 4 SP1... · 2019-06-26 · 본 제품은 “OpenSSL”, “RSA Data Security, Inc.”, “Apache Foundation” 및 “Jean-loup Gailly와 Mark Adler”

설명파라미터

샘플링할 로우의 퍼센트를 정의한다.estimate_percent

0.000001 이상 100 이하의 값을 설정할 수 있다.

히스토그램 생성에 대한 옵션이다.method_opt

설정하는 방법은 “5.2.16. GATHER_DATABASE_STATS”를 참고한다.

병렬 쿼리의 처리 개수를 설정한다.degree

인덱스에 대해서도 통계 정보를 수집한다.cascade

TRUE로 설정하면 관련된 Physical Plan을 삭제하지 않는다.no_invalidate

● 예외 상황

설명예외 상황

잘못된 파라미터 값을 입력한 경우이다.BAD_INPUT_VALUE

5.2.18. GATHER_INDEX_STATS

인덱스의 통계 정보를 수집하는 프로시저이다.

GATHER_INDEX_STATS 프로시저의 세부 내용은 다음과 같다.

● 프로토타입

DBMS_STATS.GATHER_INDEX_STATS

(

ownname VARCHAR2,

idxname VARCHAR2,

partname VARCHAR2 DEFAULT NULL,

no_invalidate BOOLEAN DEFAULT to_boolean(get_param('STAT_NO_INVALIDATE'))

);

● 파라미터

설명파라미터

스키마의 이름이다.ownname

인덱스의 이름이다.idxname

파티션의 이름이다.partname

TRUE로 설정하면 관련된 Physical Plan을 삭제하지 않는다.no_invalidate

64 Tibero RDBMS tbPSM 참조 안내서

Page 87: [11]-TmaxData - Tibero RDBMS 4 SP1... · 2019-06-26 · 본 제품은 “OpenSSL”, “RSA Data Security, Inc.”, “Apache Foundation” 및 “Jean-loup Gailly와 Mark Adler”

● 예외 상황

설명예외 상황

객체가 존재하지 않는 경우이다.OBJECT_NOT_EXISTS

5.2.19. GATHER_SCHEMA_STATS

스키마의 모든 객체의 통계 정보를 수집하는 프로시저이다.

GATHER_SCHEMA_STATS 프로시저의 세부 내용은 다음과 같다.

● 프로토타입

DBMS_STATS.GATHER_SCHEMA_STATS

(

ownname VARCHAR2,

estimate_percent NUMBER DEFAULT

to_estimate_percent_type (get_param ('STAT_ESTIMATE_PERCENT'),

method_opt VARCHAR2 DEFAULT get_param('STAT_METHOD_OPT'),

degree NUMBER DEFAULT to_degree_type (get_param('STAT_DEGREE')),

cascade BOOLEAN DEFAULT to_boolean(get_param('STAT_CASCADE')),

no_invalidate BOOLEAN DEFAULT to_boolean(get_param('STAT_NO_INVALIDATE'))

);

● 파라미터

설명파라미터

스키마의 이름이다.ownname

샘플링할 로우의 퍼센트를 정의한다.estimate_percent

0.000001 이상 100 이하의 값을 설정할 수 있다.

히스토그램 생성에 대한 옵션이다.method_opt

설정하는 방법은 “5.2.16. GATHER_DATABASE_STATS”를 참고한다.

병렬 쿼리의 처리 개수를 설정한다.degree

인덱스에 대해서도 통계 정보를 수집한다.cascade

TRUE로 설정하면 관련된 Physical Plan을 삭제하지 않는다.no_invalidate

● 예외 상황

제5장 DBMS_STATS 65

Page 88: [11]-TmaxData - Tibero RDBMS 4 SP1... · 2019-06-26 · 본 제품은 “OpenSSL”, “RSA Data Security, Inc.”, “Apache Foundation” 및 “Jean-loup Gailly와 Mark Adler”

설명예외 상황

객체가 존재하지 않는 경우이다.OBJECT_NOT_EXISTS

잘못된 파라미터 값을 입력한 경우이다.BAD_INPUT_VALUE

5.2.20. GATHER_SYSTEM_STATS

시스템의 통계 정보를 수집하는 프로시저이다. 이 프로시저를 사용하려면 DBA 권한이 필요하다.

GATHER_SYSTEM_STATS 프로시저의 세부 내용은 다음과 같다.

● 프로토타입

DBMS_STATS.GATHER_SYSTEM_STATS

(

gathering_mode VARCHAR2 DEFAULT 'NOWORKLOAD',

interval NUMBER DEFAULT 60,

limit VARCHAR2 DEFAULT '3G'

);

● 파라미터

설명파라미터

NOWORKLOAD, INTERVAL, START/STOP 옵션을 지원한다.gathering_mode

각 옵션에 대한 설명은 다음의 표를 참조한다.

gathering_mode가 INTERVAL일 때, 시스템의 성능을 측정하는 시간을 분 단위

로 나타낸다. (기본값: 60분)

interval

gathering_mode가 NOWORKLOAD일 때, 임의의 입출력을 수행해 볼 최대 데이

터양을 byte 단위로 나타낸다. 이때 단위는 K(kilo byte), M(mega byte), G(giga

byte), T(tera byte) 등을 사용할 수 있다.

limit

캐시 버퍼(데이터베이스의 캐시, 운영체제의 캐시 등)의 크기보다 큰 값을 사용

해야 좀 더 정확한 정보를 얻을 수 있다. (기본값: 3G)

gathering_mode 파라미터에 설정할 수 있는 각 옵션에 대한 설명은 다음과 같다.

설명옵션

시스템의 CPU와 입출력 성능을 측정한다. 즉 시스템의 통계 정보 중 CPUSPEED,

SEEKTM, TRFSPEED를 수집한다.

NOWORKLOAD

66 Tibero RDBMS tbPSM 참조 안내서

Page 89: [11]-TmaxData - Tibero RDBMS 4 SP1... · 2019-06-26 · 본 제품은 “OpenSSL”, “RSA Data Security, Inc.”, “Apache Foundation” 및 “Jean-loup Gailly와 Mark Adler”

설명옵션

– 시스템의 통계 정보는 데이터 파일을 통해 수집되기 때문에 데이터베이스와

테이블스페이스를 모두 생성하고서, 해당 정보를 수집할 것을 권장한다.

– 데이터베이스와 테이블스페이스를 모두 생성한 후, 시스템의 통계 정보를 수

집하기를 강력히 권장한다.

– 서버 부하에 따라 보다 자세한 시스템의 통계 정보를 설정하려면, gather

ing_mode 파라미터의 옵션 중 START 또는 STOP, 혹은 INTERVAL 파라미터

를 사용해야 한다.

– noworkload와 workload 시스템의 통계 정보를 모두 수집하는 경우에는 work

load 시스템의 통계 정보가 최적화기(Optimizer)에서 사용된다.

이 모드에서 시스템의 통계 정보를 수집하면 데이터베이스 크기에 따라 수 분이

걸릴 수 있다. 이를 해결하기 위해 limit 파라미터를 사용하여 수집 시간을 조절할

수 있다.

interval 파라미터에 설정된 시간 동안 시스템의 성능을 측정한다. workload 시스

템의 통계 정보인 SBLKRDTM, MBLKRDTM, MBLKRDCNT를 수집한다.

INTERVAL

필요하다면 gathering_mode 파라미터의 옵션을 STOP으로 설정하여 interval 파

라미터에 설정한 시간이 모두 지나가기 전에 수집을 일찍 마칠 수 있다.

START와 STOP 옵션 간의 시스템 성능을 측정한다. workload 시스템의 통계 정

보인 SBLKRDTM, MBLKRDTM, MBLKRDCNT를 수집한다.

START, STOP

● 예외 상황

설명예외 상황

권한이 부족한 경우이다.-20000

잘못된 파라미터 값을 입력한 경우이다.-20001

_DD_AUX_STATS 통계 테이블의 내용이 이상한 경우이다.-20002

잘못된 gathering_mode 파라미터(NOWORKLOAD, INTERVAL, START, STOP

만 가능)를 사용한 경우이다.

-20003

5.2.21. GATHER_TABLE_STATS

테이블의 통계 정보를 수집하는 프로시저이다.

GATHER_TABLE_STATS 프로시저의 세부 내용은 다음과 같다.

제5장 DBMS_STATS 67

Page 90: [11]-TmaxData - Tibero RDBMS 4 SP1... · 2019-06-26 · 본 제품은 “OpenSSL”, “RSA Data Security, Inc.”, “Apache Foundation” 및 “Jean-loup Gailly와 Mark Adler”

● 프로토타입

DBMS_STATS.GATHER_TABLE_STATS

(

ownname VARCHAR2,

tabname VARCHAR2,

partname VARCHAR2 DEFAULT NULL,

estimate_percent NUMBER DEFAULT

to_estimate_percent_type (get_param ('STAT_ESTIMATE_PERCENT'),

method_opt VARCHAR2 DEFAULT get_param('STAT_METHOD_OPT'),

degree NUMBER DEFAULT to_degree_type (get_param('STAT_DEGREE')),

cascade_indexes BOOLEAN DEFAULT to_boolean(get_param('STAT_CASCADE')),

no_invalidate BOOLEAN DEFAULT to_boolean(get_param('STAT_NO_INVALIDATE')),

granularity VARCHAR2 DEFAULT 'ALL'

);

● 파라미터

설명파라미터

스키마의 이름이다.ownname

테이블의 이름이다.tabname

파티션의 이름이다.partname

샘플링할 로우의 퍼센트를 정의한다.estimate_percent

0.000001 이상 100 이하의 값을 설정할 수 있다.

히스토그램 생성에 대한 옵션이다.method_opt

설정하는 방법은 “5.2.16. GATHER_DATABASE_STATS”를 참고한다.

병렬 쿼리의 처리 개수를 설정한다.degree

인덱스에 대해서도 통계 정보를 수집한다.cascade_indexes

TRUE로 설정하면 관련된 Physical Plan을 삭제하지 않는다.no_invalidate

통계 정보를 수집하는 대상을 가리킨다.granularity

– ALL : 테이블 및 파티션의 통계 정보를 수집한다.

– GLOBAL : 파티션을 제외한 테이블의 통계 정보만 수집한다.

– PARTITION : 파티션 수준의 통계 정보만 수집한다.

● 예외 상황

68 Tibero RDBMS tbPSM 참조 안내서

Page 91: [11]-TmaxData - Tibero RDBMS 4 SP1... · 2019-06-26 · 본 제품은 “OpenSSL”, “RSA Data Security, Inc.”, “Apache Foundation” 및 “Jean-loup Gailly와 Mark Adler”

설명예외 상황

객체가 존재하지 않는 경우이다.OBJECT_NOT_EXISTS

잘못된 파라미터 값을 입력한 경우이다.BAD_INPUT_VALUE

5.2.22. IMPORT_COLUMN_STATS

통계 테이블에 있는 지정한 컬럼의 통계 정보를 데이터 사전에 저장하는 프로시저이다.

IMPORT_COLUMN_STATS 프로시저의 세부 내용은 다음과 같다.

● 프로토타입

DBMS_STATS.IMPORT_COLUMN_STATS

(

ownname VARCHAR2,

tabname VARCHAR2,

colname VARCHAR2,

partname VARCHAR2 DEFAULT NULL,

stattab VARCHAR2,

statid VARCHAR2 DEFAULT NULL,

statown VARCHAR2 DEFAULT NULL

);

● 파라미터

설명파라미터

스키마의 이름이다.ownname

테이블의 이름이다.tabname

컬럼의 이름이다.colname

파티션의 이름이다.partname

통계 테이블의 이름이다stattab

통계 테이블 내에서 구분할 통계 정보 ID이다.statid

통계 테이블이 속한 스키마의 이름이다.statown

● 예외 상황

설명예외 상황

잘못된 컬럼을 입력한 경우이다.20003

제5장 DBMS_STATS 69

Page 92: [11]-TmaxData - Tibero RDBMS 4 SP1... · 2019-06-26 · 본 제품은 “OpenSSL”, “RSA Data Security, Inc.”, “Apache Foundation” 및 “Jean-loup Gailly와 Mark Adler”

5.2.23. IMPORT_DATABASE_STATS

통계 테이블에 있는 모든 테이블의 통계 정보를 데이터 사전에 저장하는 프로시저이다.

IMPORT_DATABASE_STATS 프로시저의 세부 내용은 다음과 같다.

● 프로토타입

DBMS_STATS.IMPORT_DATABASE_STATS

(

stattab VARCHAR2,

statid VARCHAR2 DEFAULT NULL,

statown VARCHAR2 DEFAULT NULL

);

● 파라미터

설명파라미터

통계 테이블의 이름이다stattab

통계 테이블 내에서 구분할 통계 정보 ID이다.statid

통계 테이블이 속한 스키마의 이름이다.statown

● 예외 상황

설명예외 상황

DBA 권한이 없는 경우이다.-20000

5.2.24. IMPORT_INDEX_STATS

통계 테이블에 있는 지정한 인덱스의 통계 정보를 데이터 사전에 저장하는 프로시저이다.

IMPORT_INDEX_STATS 프로시저의 세부 내용은 다음과 같다.

● 프로토타입

DBMS_STATS.IMPORT_INDEX_STATS

(

ownname VARCHAR2,

idxname VARCHAR2,

stattab VARCHAR2,

statid VARCHAR2 DEFAULT NULL,

70 Tibero RDBMS tbPSM 참조 안내서

Page 93: [11]-TmaxData - Tibero RDBMS 4 SP1... · 2019-06-26 · 본 제품은 “OpenSSL”, “RSA Data Security, Inc.”, “Apache Foundation” 및 “Jean-loup Gailly와 Mark Adler”

statown VARCHAR2 DEFAULT NULL

);

● 파라미터

설명파라미터

스키마의 이름이다.ownname

인덱스의 이름이다.idxname

통계 테이블의 이름이다stattab

통계 테이블 내에서 구분할 통계 정보 ID이다.statid

통계 테이블이 속한 스키마의 이름이다.statown

● 예외 상황

설명예외 상황

잘못된 인덱스를 입력한 경우이다.20003

5.2.25. IMPORT_SCHEMA_STATS

통계 테이블에 있는 스키마 전체의 통계 정보를 데이터 사전에 저장하는 프로시저이다.

IMPORT_SCHEMA_STATS 프로시저의 세부 내용은 다음과 같다.

● 프로토타입

DBMS_STATS.IMPORT_SCHEMA_STATS

(

ownname VARCHAR2,

stattab VARCHAR2,

statid VARCHAR2 DEFAULT NULL,

statown VARCHAR2 DEFAULT NULL

);

● 파라미터

설명파라미터

스키마의 이름이다.ownname

통계 테이블의 이름이다stattab

통계 테이블 내에서 구분할 통계 정보 ID이다.statid

통계 테이블이 속한 스키마의 이름이다.statown

제5장 DBMS_STATS 71

Page 94: [11]-TmaxData - Tibero RDBMS 4 SP1... · 2019-06-26 · 본 제품은 “OpenSSL”, “RSA Data Security, Inc.”, “Apache Foundation” 및 “Jean-loup Gailly와 Mark Adler”

● 예외 상황

설명예외 상황

잘못된 스키마를 입력한 경우이다.20003

5.2.26. IMPORT_SYSTEM_STATS

통계 테이블에 있는 시스템의 통계 정보를 데이터 사전에 저장하는 프로시저이다.

IMPORT_SYSTEM_STATS 프로시저의 세부 내용은 다음과 같다.

● 프로토타입

DBMS_STATS.IMPORT_SYSTEM_STATS

(

stattab VARCHAR2,

statid VARCHAR2 DEFAULT NULL,

statown VARCHAR2 DEFAULT NULL

);

● 파라미터

설명파라미터

통계 테이블의 이름이다stattab

통계 테이블 내에서 구분할 통계 정보 ID이다.statid

통계 테이블이 속한 스키마의 이름이다.statown

● 예외 상황

설명예외 상황

DBA 권한이 없는 경우이다.-20000

5.2.27. IMPORT_TABLE_STATS

통계 테이블에 있는 테이블의 통계 정보를 데이터 사전에 저장하는 프로시저이다.

IMPORT_TABLE_STATS 프로시저의 세부 내용은 다음과 같다.

● 프로토타입

72 Tibero RDBMS tbPSM 참조 안내서

Page 95: [11]-TmaxData - Tibero RDBMS 4 SP1... · 2019-06-26 · 본 제품은 “OpenSSL”, “RSA Data Security, Inc.”, “Apache Foundation” 및 “Jean-loup Gailly와 Mark Adler”

DBMS_STATS.IMPORT_TABLE_STATS

(

ownname VARCHAR2,

tabname VARCHAR2,

partname VARCHAR2,

stattab VARCHAR2,

statid VARCHAR2 DEFAULT NULL,

cascade BOOLEAN DEFAULT TRUE,

statown VARCHAR2 DEFAULT NULL

);

● 파라미터

설명파라미터

스키마의 이름이다.ownname

테이블의 이름이다.tabname

파티션의 이름이다.partname

통계 테이블의 이름이다stattab

통계 테이블 내에서 구분할 통계 정보 ID이다.statid

테이블이 갖는 컬럼, 인덱스, 파티션의 통계 정보를 저장한다.cascade

통계 테이블이 속한 스키마의 이름이다.statown

● 예외 상황

설명예외 상황

잘못된 테이블을 입력한 경우이다.20003

5.2.28. SET_PARAM

DBMS_STATS 패키지의 디폴트 파라미터의 값을 변경하는 프로시저이다.

SET_PARAM 프로시저의 세부 내용은 다음과 같다.

● 프로토타입

DBMS_STATS.SET_PARAM

(

pname VARCHAR2,

pval VARCHAR2

);

제5장 DBMS_STATS 73

Page 96: [11]-TmaxData - Tibero RDBMS 4 SP1... · 2019-06-26 · 본 제품은 “OpenSSL”, “RSA Data Security, Inc.”, “Apache Foundation” 및 “Jean-loup Gailly와 Mark Adler”

● 파라미터

설명파라미터

파라미터의 이름이다.pname

파라미터의 설정 값이다.pval

– NULL로 설정한 경우: VT_PARAMETER의 값을 참조하여 Tibero RDBMS

를 설치할 때 기본값으로 변경된다.

– NULL로 설정하지 않은 경우: 다음의 표를 참조한다.

pname 파라미터는 다음과 같은 옵션이 있다.

설명옵션

DBMS_STATS 패키지에서 사용하는 cascade 파라미터의 기본값이다.STAT_CASCADE

Tibero RDBMS를 설치할 때 기본값은 Y다.

DBMS_STATS 패키지에서 사용하는 method_opt 파라미터의 기본값이다.STAT_METHOD_OPT

Tibero RDBMS를 설치할 때 기본값은 FOR ALL COLUMNS SIZE 1이다.

DBMS_STATS 패키지에서 사용하는 no_invalidate 파라미터의 기본값이다.STAT_NO_INVALIDATE

Tibero RDBMS를 설치할 때 기본값은 N이다.

DBMS_STATS 패키지에서 사용하는 estimate_percent 파라미터의 기본값

이다.

STAT_ESTIMATE_PER

CENT

Tibero RDBMS를 설치할 때 기본값은 10이다.

DBMS_STATS 패키지에서 사용하는 degree 파라미터의 기본값이다.STAT_DEGREE

Tibero RDBMS를 설치할 때 기본값은 1이다.

● 예외 상황

설명예외 상황

잘못된 파라미터 값을 입력한 경우이다.BAD_INPUT_VALUE

74 Tibero RDBMS tbPSM 참조 안내서

Page 97: [11]-TmaxData - Tibero RDBMS 4 SP1... · 2019-06-26 · 본 제품은 “OpenSSL”, “RSA Data Security, Inc.”, “Apache Foundation” 및 “Jean-loup Gailly와 Mark Adler”

5.2.29. SET_SYSTEM_STATS

시스템의 통계 값을 수동으로 설정하는 프로시저이다.

SET_SYSTEM_STATS 프로시저의 세부 내용은 다음과 같다.

● 프로토타입

DBMS_STATS.SET_SYSTEM_STATS

(

pname VARCHAR2,

pvalue VARCHAR2

);

● 파라미터

설명파라미터

파라미터의 이름이다.pname

파라미터의 설정 값이다.pvalue

다음은 pname 파라미터에 대한 설명이다.

설명파라미터

1μs 당 평균 CPU 사이클 수(Mhz)이다.CPUSPEED

평균 입출력 탐색 시간(I/O seek time)이다. (단위: ms)SEEKTM

평균 입출력 전송 속도(I/O transfer speed)이다. (단위: byte/ms)TRFSPEED

임의의 단일 블록을 읽는 데 걸리는 평균 시간이다. (단위: ms)SBLKRDTM

연속된 BLKRDCNT 블록을 읽는 데 걸리는 평균 시간이다. (단위: ms)MBLKRDTM

연속된 여러 블록을 읽을 때의 평균 블록 수이다.BLKRDCNT

● 예외 상황

설명예외 상황

DBA 권한이 없는 경우이다.-20000

잘못된 파라미터 값을 입력한 경우이다.-20001

제5장 DBMS_STATS 75

Page 98: [11]-TmaxData - Tibero RDBMS 4 SP1... · 2019-06-26 · 본 제품은 “OpenSSL”, “RSA Data Security, Inc.”, “Apache Foundation” 및 “Jean-loup Gailly와 Mark Adler”

5.3. 함수본 절에서는 DBMS_STATS 패키지에서 제공하는 함수를 알파벳 순으로 설명한다.

5.3.1. GET_PARAM

DBMS_STATS 패키지의 디폴트 파라미터의 값을 반환하는 함수이다.

GET_PARAM 함수의 세부 내용은 다음과 같다.

● 프로토타입

DBMS_STATS.GET_PARAM

(

pname VARCHAR2

)

RETURN VARCHAR2;

● 파라미터

설명파라미터

파라미터의 이름이다.pname

● 예외 상황

설명예외 상황

잘못된 파라미터 값을 입력한 경우이다.BAD_INPUT_VALUE

5.3.2. LOCAL_TRANSACTION_ID

현재 트랜잭션에 대한 인스턴스 단위의 유일 식별자를 반환하는 함수이다. 단, 현재 트랜잭션이 없으면

NULL을 반환한다.

LOCAL_TRANSACTION_ID 함수의 세부 내용은 다음과 같다.

● 프로토타입

DBMS_STATS.LOCAL_TRANSACTION_ID

(

create_transaction BOOLEAN DEFAULT FALSE

)

RETURN VARCHAR2;

76 Tibero RDBMS tbPSM 참조 안내서

Page 99: [11]-TmaxData - Tibero RDBMS 4 SP1... · 2019-06-26 · 본 제품은 “OpenSSL”, “RSA Data Security, Inc.”, “Apache Foundation” 및 “Jean-loup Gailly와 Mark Adler”

● 파라미터

설명파라미터

create_transaction – TRUE: 현재 트랜잭션이 없는 경우, 새로운 트랜잭션을 시작한다.

– FALSE: 트랜잭션을 시작하지 않는다.

5.3.3. TO_BOOLEAN

TRUE, FALSE 문자열을 BOOLEAN 타입의 TRUE, FALSE 값으로 변경하여 반환하는 함수이다.

TO_BOOLEAN 함수의 세부 내용은 다음과 같다.

● 프로토타입

DBMS_STATS.TO_BOOLEAN

(

strval VARCHAR2

)

RETURN BOOLEAN;

● 파라미터

설명파라미터

TRUE 또는 FALSE 문자열 값이다.strval

● 예외 상황

설명예외 상황

잘못된 파라미터 값을 입력한 경우이다.BAD_INPUT_VALUE

제5장 DBMS_STATS 77

Page 100: [11]-TmaxData - Tibero RDBMS 4 SP1... · 2019-06-26 · 본 제품은 “OpenSSL”, “RSA Data Security, Inc.”, “Apache Foundation” 및 “Jean-loup Gailly와 Mark Adler”
Page 101: [11]-TmaxData - Tibero RDBMS 4 SP1... · 2019-06-26 · 본 제품은 “OpenSSL”, “RSA Data Security, Inc.”, “Apache Foundation” 및 “Jean-loup Gailly와 Mark Adler”

제6장 DBMS_TRANSACTION

본 장에서는 DBMS_TRANSACTION 패키지의 기본 개념과 패키지 내의 프로시저를 사용하는 방법을 설

명한다.

6.1. 개요DBMS_TRANSACTION은 tbPSM 프로그램 내에서 트랜잭션을 관리하는 SQL 문장을 실행하는 패키지

이다.

참고

트랜잭션을 관리하는 SQL 문장에 대한 자세한 내용은 "Tibero RDBMS SQL 참조 안내서"를 참고한

다.

6.2. 프로시저본 절에서는 DBMS_TRANSACTION 패키지에서 제공하는 프로시저를 알파벳 순으로 설명한다.

6.2.1. COMMIT

현재 트랜잭션을 커밋하는 프로시저이다.

COMMIT 프로시저의 세부 내용은 다음과 같다.

● 프로토타입

DBMS_TRANSACTION.COMMIT;

● 예제

BEGIN

DBMS_TRANSACTION.COMMIT;

END;

제6장 DBMS_TRANSACTION 79

Page 102: [11]-TmaxData - Tibero RDBMS 4 SP1... · 2019-06-26 · 본 제품은 “OpenSSL”, “RSA Data Security, Inc.”, “Apache Foundation” 및 “Jean-loup Gailly와 Mark Adler”

6.2.2. ROLLBACK, ROLLBACK_SAVEPOINT

현재 진행 중인 트랜잭션 전체를 롤백하거나 일부 저장점(savepoint)까지 롤백을 수행하는 프로시저이다.

ROLLBACK, ROLLBACK_SAVEPOINT 프로시저의 세부 내용은 다음과 같다.

● 프로토타입

– 트랜잭션 전체를 롤백하는 경우

DBMS_TRANSACTION.ROLLBACK;

– 저장점까지 롤백하는 경우

DBMS_TRANSACTION.ROLLBACK_SAVEPOINT

(

savepoint IN VARCHAR

);

● 파라미터

설명파라미터

저장점의 이름이다.savepoint

● 예제

BEGIN

INSERT INTO EMP VALUES (1, 'chulsoo');

DBMS_TRANSACTION.ROLLBACK;

END;

6.2.3. SAVEPOINT

현재 트랜잭션 내에 새로운 저장점을 설정하는 프로시저이다.

SAVEPOINT 프로시저의 세부 내용은 다음과 같다.

● 프로토타입

DBMS_TRANSACTION.SAVEPOINT

(

savepoint IN VARCHAR

);

80 Tibero RDBMS tbPSM 참조 안내서

Page 103: [11]-TmaxData - Tibero RDBMS 4 SP1... · 2019-06-26 · 본 제품은 “OpenSSL”, “RSA Data Security, Inc.”, “Apache Foundation” 및 “Jean-loup Gailly와 Mark Adler”

● 파라미터

설명파라미터

설정할 저장점의 이름이다.savepoint

● 예제

BEGIN

DBMS_TRANSACTION.SAVEPOINT('sp1');

INSERT INTO EMP VALUES (2, 'younghee');

DBMS_TRANSACTION.ROLLBACK_SAVEPOINT('sp1');

END;

제6장 DBMS_TRANSACTION 81

Page 104: [11]-TmaxData - Tibero RDBMS 4 SP1... · 2019-06-26 · 본 제품은 “OpenSSL”, “RSA Data Security, Inc.”, “Apache Foundation” 및 “Jean-loup Gailly와 Mark Adler”
Page 105: [11]-TmaxData - Tibero RDBMS 4 SP1... · 2019-06-26 · 본 제품은 “OpenSSL”, “RSA Data Security, Inc.”, “Apache Foundation” 및 “Jean-loup Gailly와 Mark Adler”

제7장 UTL_RAW

본 장에서는 UTL_RAW 패키지의 기본 개념과 패키지 내의 함수를 사용하는 방법을 설명한다.

7.1. 개요UTL_RAW는 RAW 타입의 데이터와 관련된 여러 가지 함수를 제공하는 패키지이다.

SQL 문장 내에서 CHAR 또는 VARCHAR 타입의 데이터에 사용할 수 있는 함수는 RAW 타입의 데이터에

는 사용할 수 없다. 또한, RAW 타입과 CHAR, VARCHAR 타입 간에는 데이터 변환을 할 수 없다.

이러한 문제를 해결하기 위해 UTL_RAW 내에 정의된 함수를 사용한다. 그러면 CHAR, VARCHAR 타입

의 데이터에 사용할 수 있는 함수의 기능을 RAW 타입의 데이터에도 사용할 수 있다.

7.2. 함수본 절에서는 UTL_RAW 패키지에서 제공하는 함수를 알파벳 순으로 설명한다.

7.2.1. BIT_AND

주어진 두 바이너리 데이터에 AND 연산을 수행하여 반환하는 함수이다. 이 두 데이터의 길이가 다르면,

짧은 쪽 데이터의 길이만큼 연산을 수행한 결과에 긴 쪽에 남아있는 부분의 데이터를 첨가한다. 따라서 반

환되는 최종 결과 데이터는 긴 쪽의 데이터와 길이가 같다.

BIT_AND 함수의 세부 내용은 다음과 같다.

● 프로토타입

UTL_RAW.BIT_AND

(

data1 IN RAW,

data2 IN RAW

)

RETURN RAW;

● 파라미터

설명파라미터

피연산자이다.data1

제7장 UTL_RAW 83

Page 106: [11]-TmaxData - Tibero RDBMS 4 SP1... · 2019-06-26 · 본 제품은 “OpenSSL”, “RSA Data Security, Inc.”, “Apache Foundation” 및 “Jean-loup Gailly와 Mark Adler”

설명파라미터

피연산자이다.data2

● 반환값

설명반환값

data1과 data2의 AND 연산 결과를 반환한다.RAW

data1과 data2 중 하나라도 NULL인 경우에 반환한다.NULL

● 예제

BEGIN

DBMS_OUTPUT.PUT_LINE(UTL_RAW.BIT_AND('abc', '012'));

END;

/

0010

PSM completed

SQL>

7.2.2. BIT_COMPLEMENT

주어진 바이너리 데이터에 대한 1의 보수를 반환하는 함수이다.

BIT_COMPLEMENT 함수의 세부 내용은 다음과 같다.

● 프로토타입

UTL_RAW.BIT_COMPLEMENT

(

data IN RAW

)

RETURN RAW;

● 파라미터

설명파라미터

피연산자이다.data

● 반환값

84 Tibero RDBMS tbPSM 참조 안내서

Page 107: [11]-TmaxData - Tibero RDBMS 4 SP1... · 2019-06-26 · 본 제품은 “OpenSSL”, “RSA Data Security, Inc.”, “Apache Foundation” 및 “Jean-loup Gailly와 Mark Adler”

설명반환값

data의 COMPLEMENT 연산 결과를 반환한다.RAW

data가 NULL인 경우에 반환한다.NULL

● 예제

BEGIN

DBMS_OUTPUT.PUT_LINE(UTL_RAW.BIT_COMPLEMENT('456'));

END;

/

FBA9

PSM completed

SQL>

7.2.3. BIT_OR

주어진 두 바이너리 데이터에 대한 OR 연산을 수행하여 반환하는 함수이다. 두 데이터의 길이가 다르면,

짧은 쪽 데이터의 길이만큼 연산을 수행한 결과에 긴 쪽의 남아있는 부분의 데이터를 첨가한다. 반환되는

최종 결과 데이터는 긴 쪽의 데이터와 길이가 같다.

BIT_OR 함수의 세부 내용은 다음과 같다.

● 프로토타입

UTL_RAW.BIT_OR

(

data1 IN RAW,

data2 IN RAW

)

RETURN RAW;

● 파라미터

설명파라미터

피연산자이다.data1

피연산자이다.data2

● 반환값

설명반환값

data1과 data2의 OR 연산 결과를 반환한다.RAW

제7장 UTL_RAW 85

Page 108: [11]-TmaxData - Tibero RDBMS 4 SP1... · 2019-06-26 · 본 제품은 “OpenSSL”, “RSA Data Security, Inc.”, “Apache Foundation” 및 “Jean-loup Gailly와 Mark Adler”

설명반환값

data1과 data2 중 하나라도 NULL인 경우에 반환한다.NULL

● 예제

BEGIN

DBMS_OUTPUT.PUT_LINE(UTL_RAW.BIT_OR('123', '456'));

END;

/

0577

PSM completed

SQL>

7.2.4. BIT_XOR

주어진 두 바이너리 데이터에 대한 XOR 연산을 수행하여 반환하는 함수이다. 두 데이터의 길이가 다르면,

짧은 쪽 데이터의 길이만큼 연산을 수행한 결과에 긴 쪽의 남아있는 부분의 데이터를 첨가한다. 따라서 반

환되는 최종 결과 데이터는 긴 쪽의 데이터와 길이가 같다.

BIT_XOR 함수의 세부 내용은 다음과 같다.

● 프로토타입

UTL_RAW.BIT_XOR

(

data1 IN RAW, data2 IN RAW

)

RETURN RAW;

● 파라미터

설명파라미터

피연산자이다.data1

피연산자이다.data2

● 반환값

설명반환값

data1과 data2의 XOR 연산 결과를 반환한다.RAW

data1과 data2 중 하나라도 NULL인 경우에 반환한다.NULL

86 Tibero RDBMS tbPSM 참조 안내서

Page 109: [11]-TmaxData - Tibero RDBMS 4 SP1... · 2019-06-26 · 본 제품은 “OpenSSL”, “RSA Data Security, Inc.”, “Apache Foundation” 및 “Jean-loup Gailly와 Mark Adler”

● 예제

BEGIN

DBMS_OUTPUT.PUT_LINE(UTL_RAW.BIT_XOR('123', '456'));

END;

/

0575

PSM completed

SQL>

7.2.5. CAST_FROM_BINARY_DOUBLE

주어진 BINARY_DOUBLE 타입의 값을 RAW 타입의 데이터로 변환하여 반환하는 함수이다. 반환된 데이

터는 8byte의 길이를 가지며, 지정된 endian에 따라 바이트 순서가 결정된다.

파라미터로 주어진 endian의 값은 RAW 타입의 데이터가 저장되는 endian을 뜻한다. 즉 시스템이 little-

endian이고, 파라미터가 big-endian인 경우, RAW 타입의 데이터에는 입력 값 n의 바이트 순서와 반대되

는 순서로 byte 값이 저장된다. 파라미터가 little-endian이라면 시스템의 바이트 순서와 동일한 순서로 byte

값이 저장된다.

CAST_FROM_BINARY_DOUBLE 함수의 세부 내용은 다음과 같다.

● 프로토타입

UTL_RAW.CAST_FROM_BINARY_DOUBLE

(

n IN BINARY_DOUBLE,

endian IN PLS_INTEGER DEFAULT 1

)

RETURN RAW;

● 파라미터

설명파라미터

변환할 BINARY_DOUBLE 값이다.n

변환할 endian이다.endian

1(big-endian) 또는 2(little-endian) 중 하나이다.

● 반환값

제7장 UTL_RAW 87

Page 110: [11]-TmaxData - Tibero RDBMS 4 SP1... · 2019-06-26 · 본 제품은 “OpenSSL”, “RSA Data Security, Inc.”, “Apache Foundation” 및 “Jean-loup Gailly와 Mark Adler”

설명반환값

BINARY_DOUBLE 타입의 값의 바이너리 표현을 반환한다.RAW

입력 값이 NULL인 경우에 반환한다.NULL

● 예외 상황

설명예외 상황

endian의 값이 1이나 2가 아닌 경우이다.INVALID_ENDIAN

● 예제

BEGIN

DBMS_OUTPUT.PUT_LINE(UTL_RAW.CAST_FROM_BINARY_DOUBLE(1.5d));

END;

/

3FF8000000000000

PSM completed

SQL>

7.2.6. CAST_FROM_BINARY_FLOAT

주어진 BINARY_FLOAT 타입의 값을 RAW 타입의 데이터로 변환하여 반환하는 함수이다. 반환된 데이터

는 4byte의 길이를 가지며, 지정된 endian에 따라 바이트 순서가 결정된다.

파라미터로 주어진 endian의 값은 RAW 타입의 데이터가 저장되는 endian을 뜻한다. 즉 시스템이 little-

endian이고, 파라미터가 big-endian인 경우, RAW 타입의 데이터에는 입력 값 n의 바이트 순서와 반대되

는 순서로 byte 값이 저장된다. 파라미터가 little-endian이라면 시스템의 바이트 순서와 동일한 순서로 byte

값이 저장된다.

CAST_FROM_BINARY_FLOAT 함수의 세부 내용은 다음과 같다.

● 프로토타입

UTL_RAW.CAST_FROM_BINARY_FLOAT

(

n IN BINARY_FLOAT,

endian IN PLS_INTEGER DEFAULT 1

)

RETURN RAW;

● 파라미터

88 Tibero RDBMS tbPSM 참조 안내서

Page 111: [11]-TmaxData - Tibero RDBMS 4 SP1... · 2019-06-26 · 본 제품은 “OpenSSL”, “RSA Data Security, Inc.”, “Apache Foundation” 및 “Jean-loup Gailly와 Mark Adler”

설명파라미터

변환할 BINARY_FLOAT 값이다.n

변환할 endian이다.endian

1(big-endian) 또는 2(little-endian) 중 하나이다.

● 반환값

설명파라미터

BINARY_FLOAT 타입의 값의 바이너리 표현을 반환한다.RAW

입력 값이 NULL인 경우에 반환한다.NULL

● 예외 상황

설명예외 상황

endian의 값이 1이나 2가 아닌 경우이다.INVALID_ENDIAN

● 예제

BEGIN

DBMS_OUTPUT.PUT_LINE(UTL_RAW.CAST_FROM_BINARY_FLOAT(1.5f));

END;

/

3FC00000

PSM completed

SQL>

7.2.7. CAST_FROM_BINARY_INTEGER

주어진 BINARY_INTEGER 타입의 값을 RAW 타입의 데이터로 변환하여 반환하는 함수이다. 반환된 데

이터는 4byte의 길이를 가지며, 지정된 endian에 따라 바이트 순서가 결정된다.

파라미터로 주어진 endian의 값은 RAW 타입의 데이터가 저장되는 endian을 뜻한다. 즉 시스템이 little-

endian이고, 파라미터가 big-endian인 경우, RAW 타입의 데이터에는 입력 값 n의 바이트 순서와 반대되

는 순서로 byte 값이 저장된다. 파라미터가 little-endian이라면 시스템의 바이트 순서와 동일한 순서로 byte

값이 저장된다.

CAST_FROM_BINARY_INTEGER 함수의 세부 내용은 다음과 같다.

● 프로토타입

제7장 UTL_RAW 89

Page 112: [11]-TmaxData - Tibero RDBMS 4 SP1... · 2019-06-26 · 본 제품은 “OpenSSL”, “RSA Data Security, Inc.”, “Apache Foundation” 및 “Jean-loup Gailly와 Mark Adler”

UTL_RAW.CAST_FROM_BINARY_INTEGER

(

n IN BINARY_INTEGER,

endian IN PLS_INTEGER DEFAULT 1

)

RETURN RAW;

● 파라미터

설명파라미터

변환할 BINARY_INTEGER 값이다.n

변환할 endian이다.endian

1(big-endian) 또는 2(little-endian) 중 하나이다.

● 반환값

설명반환값

BINARY_INTEGER 타입의 값의 바이너리 표현을 반환한다.RAW

입력 값이 NULL인 경우에 반환한다.NULL

● 예외 상황

설명예외 상황

endian의 값이 1이나 2가 아닌 경우이다.INVALID_ENDIAN

● 예제

BEGIN

DBMS_OUTPUT.PUT_LINE(UTL_RAW.CAST_FROM_BINARY_INTEGER(10));

END;

/

0000000A

PSM completed

SQL>

90 Tibero RDBMS tbPSM 참조 안내서

Page 113: [11]-TmaxData - Tibero RDBMS 4 SP1... · 2019-06-26 · 본 제품은 “OpenSSL”, “RSA Data Security, Inc.”, “Apache Foundation” 및 “Jean-loup Gailly와 Mark Adler”

7.2.8. CAST_FROM_NUMBER

주어진 NUMBER 타입 값을 RAW 타입의 데이터로 변환하여 반환하는 함수이다. 반환된 바이너리 데이

터는 입력된 값에 대한 Tibero RDBMS의 내부 표현이며, 반환된 데이터의 길이는 입력 값에 따라 가변 길

이를 가진다.

파라미터로 주어진 endian의 값은 RAW 타입의 데이터가 저장되는 endian을 뜻한다. 즉 시스템이 little-

endian이고, 파라미터가 big-endian인 경우, RAW 타입의 데이터에는 입력 값 n의 바이트 순서와 반대되

는 순서로 byte 값이 저장된다. 파라미터가 little-endian이라면 시스템의 바이트 순서와 동일한 순서로 byte

값이 저장된다.

CAST_FROM_NUMBER 함수의 세부 내용은 다음과 같다.

● 프로토타입

UTL_RAW.CAST_FROM_NUMBER

(

n IN NUMBER

)

RETURN RAW;

● 파라미터

설명파라미터

변환할 숫자형 값이다.n

● 반환값

설명반환값

숫자형 값의 바이너리 표현을 반환한다.RAW

입력 값이 NULL인 경우에 반환한다.NULL

● 예외 상황

설명예외 상황

endian의 값이 1이나 2가 아닌 경우이다.INVALID_ENDIAN

● 예제

BEGIN

DBMS_OUTPUT.PUT_LINE(UTL_RAW.CAST_FROM_NUMBER(1.5));

END;

/

03C181B2

제7장 UTL_RAW 91

Page 114: [11]-TmaxData - Tibero RDBMS 4 SP1... · 2019-06-26 · 본 제품은 “OpenSSL”, “RSA Data Security, Inc.”, “Apache Foundation” 및 “Jean-loup Gailly와 Mark Adler”

PSM completed

SQL>

7.2.9. CAST_TO_BINARY_DOUBLE

주어진 RAW 타입의 데이터를 BINARY_DOUBLE 타입의 값으로 변환하여 반환하는 함수이다. 입력되는

바이너리 데이터는 8byte의 길이를 가진다.

CAST_TO_BINARY_DOUBLE 함수의 세부 내용은 다음과 같다.

● 프로토타입

UTL_RAW.CAST_TO_BINARY_DOUBLE

(

r IN RAW,

endian IN PLS_INTEGER DEFAULT 1

)

RETURN BINARY_DOUBLE;

● 파라미터

설명파라미터

변환할 바이너리 데이터이다.r

바이너리 데이터의 endian이다.endian

1(big-endian) 또는 2(little-endian) 중 하나이다.

● 반환값

설명반환값

RAW 타입의 데이터를 BINARY_DOUBLE 타입의 값으로 변환한 값을 반환

한다.

BINARY_DOUBLE

입력 값이 NULL인 경우에 반환한다.NULL

● 예외 상황

설명예외 상황

endian의 값이 1이나 2가 아닌 경우이다.INVALID_ENDIAN

● 예제

92 Tibero RDBMS tbPSM 참조 안내서

Page 115: [11]-TmaxData - Tibero RDBMS 4 SP1... · 2019-06-26 · 본 제품은 “OpenSSL”, “RSA Data Security, Inc.”, “Apache Foundation” 및 “Jean-loup Gailly와 Mark Adler”

DECLARE

bin raw(100);

BEGIN

bin := UTL_RAW.CAST_FROM_BINARY_DOUBLE(1.5d);

DBMS_OUTPUT.PUT_LINE(UTL_RAW.CAST_TO_BINARY_DOUBLE(bin));

END;

/

1.5E+00

PSM completed

SQL>

7.2.10. CAST_TO_BINARY_FLOAT

주어진 RAW 타입의 데이터를 BINARY_FLOAT 타입의 값으로 변환하여 반환하는 함수이다. 입력되는 바

이너리 데이터는 4byte의 길이를 가진다.

CAST_TO_BINARY_FLOAT 함수의 세부 내용은 다음과 같다.

● 프로토타입

UTL_RAW.CAST_TO_BINARY_FLOAT

(

r IN RAW,

endian IN PLS_INTEGER DEFAULT 1

)

RETURN BINARY_FLOAT;

● 파라미터

설명파라미터

변환할 바이너리 데이터이다.r

바이너리 데이터의 endian이다.endian

1(big-endian) 또는 2(little-endian) 중 하나이다.

● 반환값

설명반환값

RAW 타입의 데이터를 BINARY_DOUBLE 타입의 값으로 변환한 값을 반환

한다.

BINARY_DOUBLE

입력 값이 NULL인 경우에 반환한다.NULL

제7장 UTL_RAW 93

Page 116: [11]-TmaxData - Tibero RDBMS 4 SP1... · 2019-06-26 · 본 제품은 “OpenSSL”, “RSA Data Security, Inc.”, “Apache Foundation” 및 “Jean-loup Gailly와 Mark Adler”

● 예외 상황

설명예외 상황

endian의 값이 1이나 2가 아닌 경우이다.INVALID_ENDIAN

● 예제

DECLARE

bin raw(100);

BEGIN

bin := UTL_RAW.CAST_FROM_BINARY_FLOAT(1.5f);

DBMS_OUTPUT.PUT_LINE(UTL_RAW.CAST_TO_BINARY_FLOAT(bin));

END;

/

1.5E+00

PSM completed

SQL>

7.2.11. CAST_TO_BINARY_INTEGER

주어진 RAW 타입의 데이터를 BINARY_INTEGER 타입의 값으로 변환하여 반환하는 함수이다. 입력되는

바이너리 데이터는 4byte의 길이를 가진다.

CAST_TO_BINARY_INTEGER 함수의 세부 내용은 다음과 같다.

● 프로토타입

UTL_RAW.CAST_TO_BINARY_INTEGER

(

r IN RAW,

endian IN PLS_INTEGER DEFAULT 1

)

RETURN BINARY_INTEGER;

● 파라미터

설명파라미터

변환할 바이너리 데이터이다.r

바이너리 데이터의 endian이다.endian

1(big-endian) 또는 2(little-endian) 중 하나이다.

94 Tibero RDBMS tbPSM 참조 안내서

Page 117: [11]-TmaxData - Tibero RDBMS 4 SP1... · 2019-06-26 · 본 제품은 “OpenSSL”, “RSA Data Security, Inc.”, “Apache Foundation” 및 “Jean-loup Gailly와 Mark Adler”

● 반환값

설명반환값

RAW 타입의 데이터를 BINARY_INTEGER 타입의 값으로 변환한 값을 반환

한다.

BINARY_DOUBLE

입력 값이 NULL인 경우에 반환한다.NULL

● 예외 상황

설명예외 상황

endian의 값이 1이나 2가 아닌 경우이다.INVALID_ENDIAN

● 예제

DECLARE

bin raw(100);

BEGIN

bin := UTL_RAW.CAST_FROM_BINARY_INTEGER(777);

DBMS_OUTPUT.PUT_LINE(UTL_RAW.CAST_TO_BINARY_INTEGER(bin));

END;

/

777

PSM completed

SQL>

7.2.12. CAST_TO_NUMBER

주어진 RAW 타입의 데이터를 NUMBER 타입 값으로 변환하여 반환하는 함수이다. 입력되는 바이너리

데이터는 NUMBER 타입 값에 대한 Tibero RDBMS의 내부 표현이며 가변 길이를 갖는다.

CAST_TO_NUMBER 함수의 세부 내용은 다음과 같다.

● 프로토타입

UTL_RAW.CAST_TO_NUMBER

(

r IN RAW

)

RETURN NUMBER;

● 파라미터

제7장 UTL_RAW 95

Page 118: [11]-TmaxData - Tibero RDBMS 4 SP1... · 2019-06-26 · 본 제품은 “OpenSSL”, “RSA Data Security, Inc.”, “Apache Foundation” 및 “Jean-loup Gailly와 Mark Adler”

설명파라미터

변환할 바이너리 데이터이다.r

● 반환값

설명반환값

RAW 타입의 데이터를 NUMBER 타입 값으로 변환한 값을 반환한다.BINARY_DOUBLE

입력 값이 NULL인 경우에 반환한다.NULL

● 예외 상황

설명예외 상황

endian의 값이 1이나 2가 아닌 경우이다.INVALID_ENDIAN

● 예제

DECLARE

bin raw(100);

BEGIN

bin := UTL_RAW.CAST_FROM_NUMBER(1004);

DBMS_OUTPUT.PUT_LINE(UTL_RAW.CAST_TO_NUMBER(bin));

END;

/

1004

PSM completed

SQL>

7.2.13. CAST_TO_RAW

주어진 VARCHAR 타입의 문자열을 RAW 타입의 데이터로 변환하여 반환하는 함수이다. 입력되는 문자

열은 RAW 타입의 데이터의 문자열 표현이다.

CAST_TO_RAW 함수의 세부 내용은 다음과 같다.

● 프로토타입

UTL_RAW.CAST_TO_RAW

(

data IN VARCHAR2

)

RETURN RAW;

96 Tibero RDBMS tbPSM 참조 안내서

Page 119: [11]-TmaxData - Tibero RDBMS 4 SP1... · 2019-06-26 · 본 제품은 “OpenSSL”, “RSA Data Security, Inc.”, “Apache Foundation” 및 “Jean-loup Gailly와 Mark Adler”

● 파라미터

설명파라미터

변환할 문자열이다.data

● 반환값

설명반환값

VARCHAR2의 바이너리 표현을 반환한다.RAW

입력 값이 NULL인 경우에 반환한다.NULL

● 예제

BEGIN

DBMS_OUTPUT.PUT_LINE(UTL_RAW.CAST_TO_RAW('0a3bcf'));

END;

/

306133626366

PSM completed

SQL>

7.2.14. CAST_TO_VARCHAR2

주어진 RAW 타입의 데이터를 VARCHAR2 타입의 문자열로 변환하여 반환하는 함수이다. 출력되는 문자

열은 바이너리 데이터의 문자열 표현이다.

CAST_TO_VARCHAR2 함수의 세부 내용은 다음과 같다.

● 프로토타입

UTL_RAW.CAST_TO_VARCHAR2

(

r IN RAW

)

RETURN VARCHAR2;

● 파라미터

설명파라미터

변환할 바이너리 데이터이다.r

제7장 UTL_RAW 97

Page 120: [11]-TmaxData - Tibero RDBMS 4 SP1... · 2019-06-26 · 본 제품은 “OpenSSL”, “RSA Data Security, Inc.”, “Apache Foundation” 및 “Jean-loup Gailly와 Mark Adler”

● 반환값

설명반환값

RAW 타입의 데이터를 VARCHAR2 타입으로 변환한 값을 반환한다.VARCHAR2

입력 값이 NULL인 경우에 반환한다.NULL

● 예제

DECLARE

bin RAW(100);

BEGIN

bin := UTL_RAW.CAST_TO_RAW('Nanobase');

DBMS_OUTPUT.PUT_LINE(UTL_RAW.CAST_TO_VARCHAR2(bin));

END;

/

Nanobase

PSM completed

SQL>

7.2.15. COMPARE

주어진 두 개의 RAW 타입의 데이터를 비교하는 함수이다. 두 바이너리 데이터가 서로 다른 길이를 갖는

다면, 짧은 쪽의 데이터에 파라미터 패드(pad)에 저장된 byte를 첨부하여 같은 길이를 갖도록 한다.

COMPARE 함수의 세부 내용은 다음과 같다.

● 프로토타입

UTL_RAW.COMPARE

(

data1 IN RAW,

data2 IN RAW,

pad IN RAW DEFAULT NULL

)

RETURN INTEGER;

● 파라미터

설명파라미터

비교할 첫 번째 피연산자이다.data1

비교할 두 번째 피연산자이다.data2

짧은 쪽에 첨부할 byte이다.pad

98 Tibero RDBMS tbPSM 참조 안내서

Page 121: [11]-TmaxData - Tibero RDBMS 4 SP1... · 2019-06-26 · 본 제품은 “OpenSSL”, “RSA Data Security, Inc.”, “Apache Foundation” 및 “Jean-loup Gailly와 Mark Adler”

설명파라미터

NULL이면 ‘00’을 첨부한다.

● 반환값

설명반환값

data1과 data2가 모두 NULL이거나 길이가 완전히 같을 경우에 반환한다.0

data1과 data2가 다른 경우 서로 다른 byte 값을 갖는 위치를 반환한다.N >= 1

● 예제

DECLARE

x RAW(20) := UTL_RAW.CAST_TO_RAW('ABCDEF');

y RAW(20) := UTL_RAW.CAST_TO_RAW('ABCDFF');

BEGIN

DBMS_OUTPUT.PUT_LINE(UTL_RAW.COMPARE(x, y));

END;

/

5

PSM completed

SQL>

7.2.16. CONCAT

주어진 RAW 타입의 데이터를 결합하여 반환하는 함수이다. 이 함수는 1~12개까지의 입력 파라미터를 가

질 수 있다. 결합된 바이너리 데이터는 최대 32767byte 길이를 가질 수 있으며, 이 길이를 초과하면 ER

ROR_EXP_CONCAT_TOO_LONG 에러를 발생한다.

CONCAT 함수의 세부 내용은 다음과 같다.

● 프로토타입

UTL_RAW.CONCAT

(

data1 IN RAW,

data2 IN RAW,

data3 IN RAW,

data4 IN RAW,

data5 IN RAW,

data6 IN RAW,

data7 IN RAW,

제7장 UTL_RAW 99

Page 122: [11]-TmaxData - Tibero RDBMS 4 SP1... · 2019-06-26 · 본 제품은 “OpenSSL”, “RSA Data Security, Inc.”, “Apache Foundation” 및 “Jean-loup Gailly와 Mark Adler”

data8 IN RAW,

data9 IN RAW,

data10 IN RAW,

data11 IN RAW,

data12 IN RAW

)

RETURN RAW;

● 파라미터

설명파라미터

결합할 바이너리 데이터이다.data1..data12

12개까지 가능하다.

● 반환값

설명반환값

입력 값이 차례로 결합된 RAW를 반환한다.RAW

입력 값이 모두 NULL인 경우에 반환한다.NULL

● 예제

DECLARE

x RAW(100) := UTL_RAW.CAST_TO_RAW('Give me liberty');

y RAW(100) := UTL_RAW.CAST_TO_RAW(', or give me death');

z RAW(200);

BEGIN

z := UTL_RAW.CONCAT(x, y);

DBMS_OUTPUT.PUT_LINE(UTL_RAW.CAST_TO_VARCHAR2(z));

END;

/

Give me liberty, or give me death

PSM completed

SQL>

100 Tibero RDBMS tbPSM 참조 안내서

Page 123: [11]-TmaxData - Tibero RDBMS 4 SP1... · 2019-06-26 · 본 제품은 “OpenSSL”, “RSA Data Security, Inc.”, “Apache Foundation” 및 “Jean-loup Gailly와 Mark Adler”

7.2.17. COPIES

주어진 RAW 타입의 데이터를 n번 반복하여 결합한 바이너리 데이터를 반환하는 함수이다. 반환되는 데

이터의 길이는 최대 32767byte 이내이어야 하며, 이 길이를 초과하면 예외 상황이 발생한다.

COPIES 함수의 세부 내용은 다음과 같다.

● 프로토타입

UTL_RAW.COPIES

(

data IN RAW,

n IN INTEGER

)

RETURN RAW;

● 파라미터

설명파라미터

반복할 바이너리 데이터이다.data

반복 횟수이다.n

● 예외 상황

설명예외 상황

VALUE_ERROR – 파라미터 data가 NULL인 경우이다.

– 파라미터 n이 1보다 작은 경우이다.

– 반환되는 데이터의 길이가 32767byte를 초과하는 경우이다.

● 예제

DECLARE

x VARCHAR2(100);

y RAW(200);

z RAW(200);

BEGIN

x := 'Books are ships which pass ';

x := x || 'through the vast seas of time';

y := UTL_RAW.CAST_TO_RAW(x);

z := UTL_RAW.COPIES(y, 1);

DBMS_OUTPUT.PUT_LINE(UTL_RAW.CAST_TO_VARCHAR2(z));

END;

제7장 UTL_RAW 101

Page 124: [11]-TmaxData - Tibero RDBMS 4 SP1... · 2019-06-26 · 본 제품은 “OpenSSL”, “RSA Data Security, Inc.”, “Apache Foundation” 및 “Jean-loup Gailly와 Mark Adler”

/

Books are ships which pass through the vast seas of time

PSM completed

SQL>

7.2.18. LENGTH

주어진 RAW 타입의 데이터의 byte 길이를 반환하는 함수이다.

LENGTH 함수의 세부 내용은 다음과 같다.

● 프로토타입

UTL_RAW.LENGTH

(

data IN RAW

)

RETURN INTEGER;

● 파라미터

설명파라미터

길이 반환의 대상이 되는 바이너리 데이터이다.data

● 반환값

설명반환값

데이터의 길이를 반환한다.NUMBER

입력 값이 NULL인 경우에 반환한다.NULL

● 예제

DECLARE

x RAW(20) := UTL_RAW.CAST_TO_RAW('Out of mind');

BEGIN

DBMS_OUTPUT.PUT_LINE(UTL_RAW.LENGTH(x));

END;

/

11

PSM completed

SQL>

102 Tibero RDBMS tbPSM 참조 안내서

Page 125: [11]-TmaxData - Tibero RDBMS 4 SP1... · 2019-06-26 · 본 제품은 “OpenSSL”, “RSA Data Security, Inc.”, “Apache Foundation” 및 “Jean-loup Gailly와 Mark Adler”

7.2.19. OVERLAY

RAW 타입의 원본 데이터를 RAW 타입의 대상 데이터에 복사하는 함수이다. 대상 데이터 내에 파라미터

pos가 가리키는 위치로부터 파라미터 len으로 지정한 길이만큼 원본 데이터를 복사한다.

원본 데이터의 길이가 len보다 짧다면 파라미터 패드에 저장된 byte로 채운다. 대상 데이터의 길이가 pos

보다 작다면 pos 위치에까지 pad byte로 채운 다음 연속하여 원본 데이터가 복사된다.

이 함수는 대상 데이터에 원본 데이터를 복사한 데이터를 반환하며, 대상 데이터 자체는 갱신되지 않는다.

반환되는 바이너리 데이터의 최대 길이는 32767byte이다.

OVERLAY 함수의 세부 내용은 다음과 같다.

● 프로토타입

UTL_RAW.OVERLAY

(

source_data IN RAW,

target_data IN RAW,

pos IN BINARY_INTEGER DEFAULT 1,

len IN BINARY_INTEGER DEFAULT NULL,

pad IN RAW DEFAULT NULL

)

RETURN RAW;

● 파라미터

설명파라미터

원본 바이너리 데이터이다.source_data

대상 바이너리 데이터이다.target_data

대상 데이터 내의 위치로, 1이상의 값을 가져야 한다.pos

복사할 원본 데이터의 길이로, 0이상의 값을 가져야 한다.len

NULL이면 원본 데이터 전체를 복사한다.

첨부할 byte이다.pad

NULL이면 ‘00’을 첨부한다.

● 예외 상황

설명예외 상황

VALUE_ERROR – 원본 데이터가 NULL이거나 길이가 0인 경우이다.

– 대상 데이터가 NULL인 경우이다.

제7장 UTL_RAW 103

Page 126: [11]-TmaxData - Tibero RDBMS 4 SP1... · 2019-06-26 · 본 제품은 “OpenSSL”, “RSA Data Security, Inc.”, “Apache Foundation” 및 “Jean-loup Gailly와 Mark Adler”

설명예외 상황

– 파라미터 pos가 1보다 작거나, 파라미터 len이 0보다 작은 경우이다.

– 반환되는 바이너리 데이터 길이가 32767byte를 초과한 경우이다.

● 예제

DECLARE

bin RAW(100);

BEGIN

bin := UTL_RAW.OVERLAY('ee', 'fabcdff', 2, 3, '12');

DBMS_OUTPUT.PUT_LINE(bin);

END;

/

0FEE1212

PSM completed

SQL>

7.2.20. REVERSE

주어진 RAW 타입의 데이터의 바이트 순서를 역으로 변환하여 반환하는 함수이다. 반환되는 바이너리 데

이터의 길이는 입력된 바이너리 데이터의 길이와 같다.

REVERSE 함수의 세부 내용은 다음과 같다.

● 프로토타입

UTL_RAW.REVERSE

(

data IN RAW

)

RETURN RAW;

● 파라미터

설명파라미터

역으로 변환할 바이너리 데이터이다.data

● 예외 상황

104 Tibero RDBMS tbPSM 참조 안내서

Page 127: [11]-TmaxData - Tibero RDBMS 4 SP1... · 2019-06-26 · 본 제품은 “OpenSSL”, “RSA Data Security, Inc.”, “Apache Foundation” 및 “Jean-loup Gailly와 Mark Adler”

설명예외 상황

입력된 데이터가 NULL이거나 길이가 0인 경우이다.VALUE_ERROR

● 예제

BEGIN

DBMS_OUTPUT.PUT_LINE(UTL_RAW.REVERSE('abcd132'));

END;

/

32D1BC0A

PSM completed

SQL>

7.2.21. SUBSTR

주어진 RAW 타입의 데이터의 일부 또는 전체를 반환하는 함수이다. 입력된 데이터 내에서 파라미터 pos

가 가리키는 위치로부터 파라미터 len이 지정한 길이만큼 반환한다. 바이너리 데이터가 NULL이면 결과

값으로 NULL을 반환한다.

SUBSTR 함수의 세부 내용은 다음과 같다.

● 프로토타입

UTL_RAW.SUBSTR

(

data IN RAW,

pos IN BINARY_INTEGER,

len IN BINARY_INTEGER DEFAULT NULL

)

RETURN RAW;

● 파라미터

설명파라미터

바이너리 데이터이다.data

바이너리 데이터 내의 오프셋 위치이다.pos

– pos가 1 이상이면 바이너리 데이터의 앞에서부터의 위치를 가리킨다.

– pos가 –1 이하이면 바이너리 데이터의 뒤에서부터의 위치를 가리킨다.

– pos는 0이 될 수 없다.

제7장 UTL_RAW 105

Page 128: [11]-TmaxData - Tibero RDBMS 4 SP1... · 2019-06-26 · 본 제품은 “OpenSSL”, “RSA Data Security, Inc.”, “Apache Foundation” 및 “Jean-loup Gailly와 Mark Adler”

설명파라미터

반환할 데이터의 길이이다.len

NULL이면 pos 위치로부터 바이너리 데이터의 끝까지 반환한다.

● 예외 상황

설명예외 상황

파라미터 pos가 0이거나 파라미터 len이 1보다 작은 경우이다.VALUE_ERROR

● 예제

BEGIN

DBMS_OUTPUT.PUT_LINE(UTL_RAW.SUBSTR('abc1234', 2, 2));

END;

/

BC12

PSM completed

SQL>

7.2.22. TRANSLATE

주어진 RAW 타입의 데이터 내의 지정된 byte를 변환하는 함수이다. 주어진 바이너리 데이터 내에 from_set

에 포함된 byte가 존재하면 해당 byte는 to_set 내의 같은 위치에 포함된 대응되는 byte로 대체된다. to_set

의 길이가 작아서 같은 위치에 대응되는 byte가 없다면 빈 byte로 대체된다.

이 함수는 변환된 데이터를 반환하며, 입력된 바이너리 데이터 자체는 갱신되지 않는다.

TRANSLATE 함수의 세부 내용은 다음과 같다.

● 프로토타입

UTL_RAW.TRANSLATE

(

data IN RAW,

from_set IN RAW,

to_set IN RAW

)

RETURN RAW;

● 파라미터

106 Tibero RDBMS tbPSM 참조 안내서

Page 129: [11]-TmaxData - Tibero RDBMS 4 SP1... · 2019-06-26 · 본 제품은 “OpenSSL”, “RSA Data Security, Inc.”, “Apache Foundation” 및 “Jean-loup Gailly와 Mark Adler”

설명파라미터

바이너리 데이터이다.data

변환할 byte 집합이다.from_set

변환 후의 byte 집합이다.to_set

● 예외 상황

설명예외 상황

파라미터 from_set 또는 to_set이 NULL이거나 길이가 0인 경우이다.VALUE_ERROR

● 예제

BEGIN

DBMS_OUTPUT.PUT_LINE(UTL_RAW.TRANSLATE('abcde', 'bc', '77'));

END;

/

0A77DE

PSM completed

SQL>

7.2.23. TRANSLITERATE

주어진 RAW 타입의 데이터 내의 지정된 byte를 변환하는 함수이다. 주어진 바이너리 데이터 내에 from_set

에 포함된 byte가 존재하면 해당 byte는 to_set 내의 같은 위치에 포함된 대응되는 byte로 대체된다. to_set

의 길이가 작아서 같은 위치에 대응되는 byte가 없다면 패드 값으로 대체된다.

이 함수는 변환된 데이터를 반환하며, 입력된 바이너리 데이터 자체는 갱신되지 않는다.

TRANSLITERATE 함수의 세부 내용은 다음과 같다.

● 프로토타입

UTL_RAW.TRANSLITERATE

(

data IN RAW,

to_set IN RAW DEFAULT NULL,

from_set IN RAW DEFAULT NULL,

pad IN RAW DEFAULT NULL

)

RETURN RAW;

● 파라미터

제7장 UTL_RAW 107

Page 130: [11]-TmaxData - Tibero RDBMS 4 SP1... · 2019-06-26 · 본 제품은 “OpenSSL”, “RSA Data Security, Inc.”, “Apache Foundation” 및 “Jean-loup Gailly와 Mark Adler”

설명파라미터

바이너리 데이터이다.data

변환 후의 byte 집합이다.to_set

변환할 byte 집합이다.from_set

to_set의 길이가 from_set의 길이보다 짧을 때 사용될 1byte RAW이다.pad

pad로 입력된 값은 길이에 관계없이 1byte만 사용하게 된다.

● 예외 상황

설명예외 상황

data가 NULL이거나 길이가 0인 경우VALUE_ERROR

● 예제

DECLARE

bin RAW(100);

BEGIN

bin := UTL_RAW.TRANSLITERATE('abcde', 'cd', 'bcde');

DBMS_OUTPUT.PUT_LINE(bin);

END;

/

0ACD00

PSM completed

SQL>

7.2.24. XRANGE

주어진 start_byte RAW 데이터부터 end_byte RAW 데이터까지 1 byte씩 증가시켜 나열한 결과를 반환하

는 함수이다. start_byte가 end_byte보다 더 크다면 start_byte에서 시작해서 0xFF까지 증가시킨 후, 0x00

부터 다시 증가시켜 end_byte에서 끝내게 된다.

XRANGE 함수의 세부 내용은 다음과 같다.

● 프로토타입

UTL_RAW.XRANGE

(

start_byte IN RAW DEFAULT NULL,

end_byte IN RAW DEFAULT NULL

108 Tibero RDBMS tbPSM 참조 안내서

Page 131: [11]-TmaxData - Tibero RDBMS 4 SP1... · 2019-06-26 · 본 제품은 “OpenSSL”, “RSA Data Security, Inc.”, “Apache Foundation” 및 “Jean-loup Gailly와 Mark Adler”

)

RETURN RAW;

● 파라미터

설명파라미터

결과 값의 시작 byte이다.start_byte

결과 값의 종료 byte이다.end_byte

● 예제

BEGIN

DBMS_OUTPUT.PUT_LINE(UTL_RAW.XRANGE('a', 'd'));

END;

/

0A0B0C0D

PSM completed

SQL>

제7장 UTL_RAW 109

Page 132: [11]-TmaxData - Tibero RDBMS 4 SP1... · 2019-06-26 · 본 제품은 “OpenSSL”, “RSA Data Security, Inc.”, “Apache Foundation” 및 “Jean-loup Gailly와 Mark Adler”
Page 133: [11]-TmaxData - Tibero RDBMS 4 SP1... · 2019-06-26 · 본 제품은 “OpenSSL”, “RSA Data Security, Inc.”, “Apache Foundation” 및 “Jean-loup Gailly와 Mark Adler”

제8장 DBMS_JOB

본 장에서는 DBMS_JOB 패키지의 기본 개념과 패키지 내의 프로시저를 사용하는 방법을 설명한다.

8.1. 개요Tibero RDBMS에서는 주기적으로 데이터베이스에 추가된 JOB을 검사하여, 사용자가 설정한 시각이 되

면 해당하는 JOB을 실행한다.

DBMS_JOB은 PSM에서 사용 가능한 문장을 JOB으로 등록하고, 이 JOB을 실행할 수 있는 연산을 제공

하는 패키지이다. DBMS_JOB 패키지 내의 프로시저를 이용하여, JOB을 데이터베이스에 추가하고 바로

실행하거나 정해진 시각에 실행되도록 설정할 수 있다.

다음은 DBMS_JOB 패키지의 특징이다.

● DBMS_JOB 패키지의 사용할 때 DBA 권한은 필요하지 않으며, 추가된 JOB은 오직 JOB의 소유자만 실

행하거나 변경할 수 있다.

● 특정 인스턴스(instance)에서 JOB을 실행하도록 지정하는 기능은 지원하지 않는다. 따라서 파라미터에

입력 값으로 instance와 force parameter가 입력될 경우 무시하게 된다.

● JOB을 추가 또는 변경하는 경우 커밋을 실행하지 않아도 자동으로 커밋되며, JOB 내에서 실행한 작업

도 자동으로 커밋된다.

● 현재 데이터베이스에 추가된 JOB은 DBA_JOBS, ALL_JOBS, USER_JOBS 뷰를 통해 확인할 수 있다.

● JOB 실행이 실패한 경우에는 재실행되며, 16번 실패하게 되면 해당 JOB은 broken상태가 된다.

● 실행 중인 JOB을 정지할 수 있는 기능은 제공하지 않는다.

8.2. 프로시저본 절에서는 DBMS_JOB 패키지에서 제공하는 프로시저를 알파벳 순으로 설명한다.

8.2.1. BROKEN

저장된 JOB의 상태를 정상 또는 broken 상태로 설정하는 프로시저이다. broken되어 있던 JOB을 정상 상

태로 만들 경우, JOB의 다음 실행 시각을 설정할 수 있다.

BROKEN 프로시저의 세부 내용은 다음과 같다.

제8장 DBMS_JOB 111

Page 134: [11]-TmaxData - Tibero RDBMS 4 SP1... · 2019-06-26 · 본 제품은 “OpenSSL”, “RSA Data Security, Inc.”, “Apache Foundation” 및 “Jean-loup Gailly와 Mark Adler”

● 프로토타입

DBMS_JOB.BROKEN

(

job IN BINARY_INTEGER,

broken IN BOOLEAN,

next_date IN DATE DEFAULT SYSDATE

);

● 파라미터

설명파라미터

실행할 JOB의 번호이다.job

JOB이 broken된 경우 TRUE, 정상 상태인 경우 FALSE이다.broken

next_date – broken이 TRUE인 경우 무시한다.

– broken이 FALSE인 경우 다음 실행 시각을 설정한다.

● 예제

BEGIN

/* broken된 JOB을 정상 상태로 변경하고, 한 시간 뒤 실행하도록 수정한다. */

DBMS_JOB.BROKEN(100, false, sysdate + 1/24);

END;

/

8.2.2. CHANGE

저장된 JOB의 필드를 변경하는 프로시저이다.

CHANGE 프로시저의 세부 내용은 다음과 같다.

● 프로토타입

DBMS_JOB.CHANGE

(

job IN BINARY_INTEGER,

what IN VARCHAR2,

next_date IN DATE,

interval IN VARCHAR2,

instance IN BINARY_INTEGER DEFAULT NULL,

force IN BOOLEAN DEFAULT FALSE

);

112 Tibero RDBMS tbPSM 참조 안내서

Page 135: [11]-TmaxData - Tibero RDBMS 4 SP1... · 2019-06-26 · 본 제품은 “OpenSSL”, “RSA Data Security, Inc.”, “Apache Foundation” 및 “Jean-loup Gailly와 Mark Adler”

● 파라미터

설명파라미터

실행할 JOB의 번호이다.job

실행할 PL/SQL 프로시저 혹은 PSM 문장의 시퀀스이다.what

JOB을 실행할 다음 시각이다.next_date

다음 JOB이 실행될 시각을 계산하기 위한 연산식이다.interval

자세한 것은 “8.2.3. INTERVAL”을 참조한다.

지원되지 않는 기능이므로 값을 무시한다.instance

지원되지 않는 기능이므로 값을 무시한다.force

● 예제

BEGIN

DBMS_JOB.CHANGE(100, null, null, 'sysdate + 1');

END;

/

8.2.3. INTERVAL

JOB을 얼마나 자주 실행할지 정하는 파라미터를 변경하는 프로시저이다.

INTERVAL 프로시저의 세부 내용은 다음과 같다.

● 프로토타입

DBMS_JOB.INTERVAL

(

job IN BINARY_INTEGER,

interval IN VARCHAR2

);

● 파라미터

설명파라미터

실행할 JOB의 번호이다.job

다음에 JOB을 실행할 시각인 next_date를 업데이트하기 위한 연산식이다.interval

NULL 혹은 날짜형으로 evaluate될 수 있는 연산식의 문자열이어야 한다. (최

소 분단위까지 가능)

제8장 DBMS_JOB 113

Page 136: [11]-TmaxData - Tibero RDBMS 4 SP1... · 2019-06-26 · 본 제품은 “OpenSSL”, “RSA Data Security, Inc.”, “Apache Foundation” 및 “Jean-loup Gailly와 Mark Adler”

설명파라미터

JOB을 실행하기 전에 evaluate된다.

JOB이 성공적으로 실행되고, interval의 계산 값이 NULL이면 해당 JOB은 삭

제된다.

다음은 interval 파라미터의 사용 예이다.

설명interval

하루에 한 번씩 실행한다.'sysdate + 1'

매주 월요일에 실행한다.'next_day(sysdate,''MONDAY'')'

한 번만 실행한다.'null'

● 예제

BEGIN

/* 하루에 한 번씩 실행한다. */

DBMS_JOB.INTERVAL(100, 'sysdate + 1');

END;

/

8.2.4. NEXT_DATE

JOB이 스케줄되어 자동으로 실행될 시각을 변경하는 프로시저이다. 실행된 후에는 interval 값에 의해 업

데이트된다.

NEXT_DATE 프로시저의 세부 내용은 다음과 같다.

● 프로토타입

DBMS_JOB.NEXT_DATE

(

job IN BINARY_INTEGER,

next_date IN DATE

);

● 파라미터

설명파라미터

실행할 JOB의 번호이다.job

JOB이 스케줄되어 실행될 시각이다.next_date

114 Tibero RDBMS tbPSM 참조 안내서

Page 137: [11]-TmaxData - Tibero RDBMS 4 SP1... · 2019-06-26 · 본 제품은 “OpenSSL”, “RSA Data Security, Inc.”, “Apache Foundation” 및 “Jean-loup Gailly와 Mark Adler”

● 예제

BEGIN

/* 10분 후에 실행하도록 변경한다. */

DBMS_JOB.NEXT_DATE(100, sysdate + 10/24/60);

END;

/

8.2.5. REMOVE

데이터베이스에 추가된 JOB을 삭제하는 프로시저이다.

REMOVE 프로시저의 세부 내용은 다음과 같다.

● 프로토타입

DBMS_JOB.REMOVE

(

job IN BINARY_INTEGER

);

● 파라미터

설명파라미터

삭제할 JOB의 번호이다.job

● 예제

BEGIN

DBMS_JOB.REMOVE(100);

END;

/

8.2.6. RUN

JOB을 현재 세션에서 즉시 실행하는 프로시저이다. JOB이 broken되어 있어도 실행하고, 실행에 성공한

경우 JOB을 정상 상태로 변경한다.

RUN 프로시저의 세부 내용은 다음과 같다.

● 프로토타입

제8장 DBMS_JOB 115

Page 138: [11]-TmaxData - Tibero RDBMS 4 SP1... · 2019-06-26 · 본 제품은 “OpenSSL”, “RSA Data Security, Inc.”, “Apache Foundation” 및 “Jean-loup Gailly와 Mark Adler”

DBMS_JOB.RUN

(

job IN BINARY_INTEGER,

force IN BOOLEAN DEFAULT FALSE

);

● 파라미터

설명파라미터

실행할 JOB의 번호이다.job

지원되지 않는 기능이므로 값을 무시한다.force

● 예제

BEGIN

DBMS_JOB.RUN(100);

END;

/

8.2.7. SUBMIT

데이터베이스에 새로운 JOB을 추가하는 프로시저이다.

SUBMIT 프로시저의 세부 내용은 다음과 같다.

● 프로토타입

DBMS_JOB.SUBMIT

(

job OUT BINARY_INTEGER,

what IN VARCHAR2,

next_date IN DATE DEFAULT sysdate,

interval IN VARCHAR2 DEFAULT 'null',

no_parse IN BOOLEAN DEFAULT FALSE,

instance IN BINARY_INTEGER DEFAULT NULL,

force IN BOOLEAN DEFAULT FALSE

);

● 파라미터

설명파라미터

실행할 JOB의 번호이다.job

실행할 PL/SQL 프로시저 혹은 PSM 문장의 시퀀스이다.what

116 Tibero RDBMS tbPSM 참조 안내서

Page 139: [11]-TmaxData - Tibero RDBMS 4 SP1... · 2019-06-26 · 본 제품은 “OpenSSL”, “RSA Data Security, Inc.”, “Apache Foundation” 및 “Jean-loup Gailly와 Mark Adler”

설명파라미터

JOB을 다음에 실행할 시각이다.next_date

다음 JOB이 실행될 시각을 계산하기 위한 연산식이다.interval

자세한 것은 “8.2.3. INTERVAL”을 참조한다.

no_parse – TRUE이면 submit을 할 때 JOB을 파싱하지 않는다. 이 경우, JOB이 실행

될 때 파싱을 하게 된다. 따라서 파싱의 실패 여부가 최초 실행 시점에 보고

된다.

– FALSE이면 JOB에 관련된 프로시저를 미리 파싱한다.

지원되지 않는 기능이므로 값을 무시한다.instance

지원되지 않는 기능이므로 값을 무시한다.force

● 예제

DECLARE

job_no number;

BEGIN

DBMS_JOB.SUBMIT(job_no,'dbms_output.put_line(''ok'');', SYSDATE,

'SYSDATE + 1');

END;

/

8.2.8. WHAT

JOB이 실행하는 작업을 변경하는 프로시저이다.

WHAT 프로시저의 세부 내용은 다음과 같다.

● 프로토타입

DBMS_JOB.WHAT

(

job IN BINARY_INTEGER,

WHAT IN VARCHAR2

);

● 파라미터

설명파라미터

실행할 JOB의 번호이다.job

제8장 DBMS_JOB 117

Page 140: [11]-TmaxData - Tibero RDBMS 4 SP1... · 2019-06-26 · 본 제품은 “OpenSSL”, “RSA Data Security, Inc.”, “Apache Foundation” 및 “Jean-loup Gailly와 Mark Adler”

설명파라미터

실행할 PL/SQL 프로시저 혹은 PSM 문장의 시퀀스이다. 항상 세미콜론(;)으

로 끝나는 문자열이 와야 한다.

what

예를 들어 다음과 같은 문자열이 올 수 있다.

– psm_proc(''abc'', 10);

– dbms_output.put_line(''ok'');

– declare x number; begin x := x + 1;dbms_outout.put_line(x); end;

● 예제

BEGIN

/* job번호가 100인 job을 psm_proc 프로시저 호출로 대체한다. */

DBMS_JOB.WHAT(100, 'psm_proc(''abc'', 10);');

END;

/

118 Tibero RDBMS tbPSM 참조 안내서

Page 141: [11]-TmaxData - Tibero RDBMS 4 SP1... · 2019-06-26 · 본 제품은 “OpenSSL”, “RSA Data Security, Inc.”, “Apache Foundation” 및 “Jean-loup Gailly와 Mark Adler”

제9장 DBMS_SQL

본 장에서는 DBMS_SQL 패키지의 기본 개념과 패키지 내의 프로시저와 함수를 사용하는 방법을 설명한

다.

9.1. 개요DBMS_SQL은 PSM으로 데이터 조작어(DML: data manipulation language, 이하 DML), 데이터 정의어

(DDL: Data Definition Language) 등 Dynamic SQL 문장을 사용하기 위한 패키지이다. 단 바인드 파라미

터가 있는 PSM은 DBMS_SQL 패키지로 수행할 수 없다.

Dynamic SQL 문장은 PSM의 소스 안에 SQL 문장을 직접 사용하지 않고 나중에 PSM을 실행할 때, 문자

열로 전달하여 파싱되는 SQL 문장을 말한다. 따라서 PSM을 생성할 때 존재하지 않았던 테이블에 대해

SELECT를 실행할 수도 있고, CREATE TABLE, DROP TABLE 등의 DDL 문장도 수행할 수 있다.

DBMS_SQL 패키지로 Dynamic SQL 문장을 실행하는 과정은 다음과 같다.

1. OPEN_CURSOR 함수를 이용하여 커서를 열고, 커서 ID를 얻는다.

2. 커서를 구분하기 위해 앞에서 얻은 커서 ID를 다른 함수의 파라미터로 전달한다.

3. Dynamic SQL 문장을 파싱하기 위해 PARSE 함수를 호출한다. 만약 실행할 Dynamic SQL 문장 안에

바인드해야 할 변수가 있는 경우, BIND_VARIABLE 함수를 호출해 변수를 바인드한다.

4. 실행 결과를 가져오기 전에 결과 컬럼의 타입을 정의하기 위해 DEFINE_COLUMN 함수를 호출한다.

5. EXECUTE 함수를 이용하여 파싱된 SQL 문장을 실행한다.

6. 실행한 결과를 페치(fetch)하기 위해 FETCH_ROWS 함수를 실행한다. 페치한 결과를 원하는 변수로

가져오기 위해서는 COLUMN_VALUE 함수를 호출한다.

7. 모든 수행을 끝낸 후 커서를 종료하기 위해 CLOSE_CURSOR 함수를 실행한다.

제9장 DBMS_SQL 119

Page 142: [11]-TmaxData - Tibero RDBMS 4 SP1... · 2019-06-26 · 본 제품은 “OpenSSL”, “RSA Data Security, Inc.”, “Apache Foundation” 및 “Jean-loup Gailly와 Mark Adler”

9.2. 타입본 절에서는 DBMS_SQL 패키지에 제공하는 별도 정의된 타입들을 알파벳 순으로 설명한다.

9.2.1. DESC_REC

DESCRIBE_COLUMNS 프로시저를 통해서 컬럼 정보들을 가져올 때 사용되는 DESC_TAB 타입의 구성

요소들의 타입이다.

DESC_REC 타입의 세부 내용은 다음과 같다.

● 프로토타입

TYPE DESC_REC IS RECORD

(

col_type binary_integer,

col_max_len binary_integer,

col_name varchar2(32) ,

col_name_len binary_integer,

col_schema_name varchar2(32) ,

col_schema_name_len binary_integer,

col_precision binary_integer,

col_scale binary_integer,

col_charsetid binary_integer,

col_charsetform binary_integer,

col_null_ok boolean

);

9.2.2. DESC_REC2

DESCRIBE_COLUMNS2 프로시저를 통해서 컬럼 정보들을 가져올 때 사용되는 DESC_TAB2 타입의 구

성 요소들의 타입이다.

DESC_REC2 타입의 세부 내용은 다음과 같다.

● 프로토타입

TYPE DESC_REC2 IS RECORD

(

col_type binary_integer,

col_max_len binary_integer,

col_name varchar2(32767),

col_name_len binary_integer,

120 Tibero RDBMS tbPSM 참조 안내서

Page 143: [11]-TmaxData - Tibero RDBMS 4 SP1... · 2019-06-26 · 본 제품은 “OpenSSL”, “RSA Data Security, Inc.”, “Apache Foundation” 및 “Jean-loup Gailly와 Mark Adler”

col_schema_name varchar2(32),

col_schema_name_len binary_integer,

col_precision binary_integer,

col_scale binary_integer,

col_charsetid binary_integer,

col_charsetform binary_integer,

col_null_ok boolean);

);

9.2.3. DESC_TAB

DESCRIBE_COLUMNS 프로시저를 통해서 컬럼 정보들을 가져올 때 사용되는 배열 타입이다.

DESC_TAB 타입의 세부 내용은 다음과 같다.

● 프로토타입

TYPE DESC_TAB IS TABLE OF DESC_REC INDEX BY BINARY_INTEGER;

9.2.4. DESC_TAB2

DESCRIBE_COLUMNS2 프로시저를 통해서 컬럼 정보들을 가져올 때 사용되는 배열 타입이다.

DESC_TAB2 타입의 세부 내용은 다음과 같다.

● 프로토타입

TYPE DESC_TAB2 IS TABLE OF DESC_REC2 INDEX BY BINARY_INTEGER;

9.3. 프로시저본 절에서는 DBMS_SQL 패키지에서 제공하는 프로시저를 알파벳 순으로 설명한다.

9.3.1. BIND_VARIABLE

주어진 커서의 SQL 문장에서 콜론(:)으로 시작하는 변수에 값을 설정해주는 프로시저이다. 변수의 값이

모두 설정되지 않은 상태로 EXECUTE 함수를 호출하면 예외가 발생한다. 변수는 이름으로 찾을 수 있으

므로, SQL 문장 내의 변수이름과 파라미터로 주어진 이름을 동일하게 호출해야 한다.

BIND_VARIABLE 프로시저의 세부 내용은 다음과 같다.

제9장 DBMS_SQL 121

Page 144: [11]-TmaxData - Tibero RDBMS 4 SP1... · 2019-06-26 · 본 제품은 “OpenSSL”, “RSA Data Security, Inc.”, “Apache Foundation” 및 “Jean-loup Gailly와 Mark Adler”

● 프로토타입

BIND_VARIABLE 프로시저는 설정할 변수의 타입에 따라 중복으로 선언(overloading)되어 있다.

해당되는 타입으로는 NUMBER, VARCHAR2, DATE, TIMESTAMP, INTERVAL, BINARY_FLOAT, BI

NARY_DOUBLE, CLOB, BLOB, CHAR가 있다.

– NUMBER

PROCEDURE BIND_VARIABLE

(

c IN INTEGER,

name IN VARCHAR2,

value IN NUMBER

);

– VARCHAR2

PROCEDURE BIND_VARIABLE

(

c IN INTEGER,

name IN VARCHAR2,

value IN VARCHAR2[, OUT_VALUE_SIZE IN INTEGER]

);

– DATE

PROCEDURE BIND_VARIABLE

(

c IN INTEGER,

name IN VARCHAR2,

value IN DATE

);

– TIMESTAMP

PROCEDURE BIND_VARIABLE

(

c IN INTEGER,

name IN VARCHAR2,

value IN TIMESTAMP_UNCONSTRAINED

);

– INTERVAL

PROCEDURE BIND_VARIABLE

(

C IN INTEGER,

122 Tibero RDBMS tbPSM 참조 안내서

Page 145: [11]-TmaxData - Tibero RDBMS 4 SP1... · 2019-06-26 · 본 제품은 “OpenSSL”, “RSA Data Security, Inc.”, “Apache Foundation” 및 “Jean-loup Gailly와 Mark Adler”

NAME IN VARCHAR2,

VALUE IN YMINTERVAL_UNCONSTRAINED

);

PROCEDURE BIND_VARIABLE

(

c IN INTEGER,

name IN VARCHAR2,

value IN DSINTERVAL_UNCONSTRAINED

);

– BINARY_FLOAT

PROCEDURE BIND_VARIABLE

(

c IN INTEGER,

name IN VARCHAR2,

value IN BINARY_FLOAT

);

– BINARY_DOUBLE

PROCEDURE BIND_VARIABLE

(

c IN INTEGER,

name IN VARCHAR2,

value IN BINARY_DOUBLE

);

– CLOB

PROCEDURE BIND_VARIABLE

(

c IN INTEGER,

name IN VARCHAR2,

value IN CLOB

);

– BLOB

PROCEDURE BIND_VARIABLE

(

c IN INTEGER,

name IN VARCHAR2,

value IN BLOB

);

제9장 DBMS_SQL 123

Page 146: [11]-TmaxData - Tibero RDBMS 4 SP1... · 2019-06-26 · 본 제품은 “OpenSSL”, “RSA Data Security, Inc.”, “Apache Foundation” 및 “Jean-loup Gailly와 Mark Adler”

– CHAR

CHAR 타입을 위해서는 별도의 BIND_VARIABLE_CHAR 프로시저를 사용해야 한다.

PROCEDURE BIND_VARIABLE_CHAR

(

c IN INTEGER,

name IN VARCHAR2,

value IN CHAR[, out_value_size IN INTEGER]

);

● 파라미터

설명파라미터

대상 커서이다.c

SQL 문장 내의 변수의 이름이다.name

이때 이름에서 첫 문자 콜론(:)은 생략해도 된다.

SQL 문장 내의 변수에 설정할 변수이다.value

지원되지 않는 기능이므로 값을 무시한다.out_value_size

● 예제

DECLARE

csr INTEGER;

x NUMBER := 1;

BEGIN

csr := DBMS_SQL.OPEN_CURSOR();

DBMS_SQL.PARSE(csr, 'select :var from dual', dbms_sql.native);

DBMS_SQL.BIND_VARIABLE(csr, 'var', x);

DBMS_SQL.CLOSE_CURSOR(csr);

END;

/

9.3.2. CLOSE_CURSOR

주어진 커서를 닫고, NULL로 설정하는 프로시저이다.

CLOSE_CURSOR 프로시저의 세부 내용은 다음과 같다.

124 Tibero RDBMS tbPSM 참조 안내서

Page 147: [11]-TmaxData - Tibero RDBMS 4 SP1... · 2019-06-26 · 본 제품은 “OpenSSL”, “RSA Data Security, Inc.”, “Apache Foundation” 및 “Jean-loup Gailly와 Mark Adler”

● 프로토타입

PROCEDURE CLOSE_CURSOR

(

c IN OUT INTEGER

);

● 파라미터

설명파라미터

대상 커서를 닫은 후에 NULL로 설정한다.c

● 예제

DECLARE

csr INTEGER := DBMS_SQL.OPEN_CURSOR();

BEGIN

DBMS_SQL.CLOSE_CURSOR(csr);

END;

/

9.3.3. COLUMN_VALUE

주어진 커서에서 페치한 컬럼의 값을 원하는 변수로 가져오는 프로시저이다. 실제 페치는 FETCH_ROWS

함수에서 일어나고, COLUMN_VALUE 프로시저는 페치한 후 데이터를 가져오는 데 사용된다.

이때 DEFINE_COLUMN의 column 파라미터와 COLUMN_VALUE의 value 파라미터가 동일한 타입을 가

지도록 함수를 호출해야 한다. 예를 들어 column 파라미터가 NUMBER인 DEFINE_COLUMN 프로시저를

호출했다면, COLUMN_VALUE 또한 value 파라미터의 타입이 NUMBER인 프로시저를 호출해야 한다.

동일한 이름으로 타입에 따라 중복으로 선언된 프로시저가 많으므로, 암시적 타입 변환을 고려하여 주의

깊게 사용해야 한다. 이는 변수의 실제 타입이 같아야 하는 것이 아니라, 호출된 함수의 파라미터의 타입

이 동일하게 맞춰져야 한다는 의미이다. 예를 들어 DEFINE_COLUMN_CHAR를 사용했다면, COLUMN_VAL

UE_CHAR를 호출해야 한다.

COLUMN_VALUE 프로시저의 세부 내용은 다음과 같다.

● 프로토타입

COLUMN_VALUE 프로시저는 값을 저장할 변수의 타입에 따라 중복으로 선언되어 있다.

해당되는 타입으로는 NUMBER, VARCHAR2, DATE, TIMESTAMP, INTERVAL, BINARY_FLOAT, BI

NARY_DOUBLE, CLOB, BLOB, CHAR가 있다.

– NUMBER

제9장 DBMS_SQL 125

Page 148: [11]-TmaxData - Tibero RDBMS 4 SP1... · 2019-06-26 · 본 제품은 “OpenSSL”, “RSA Data Security, Inc.”, “Apache Foundation” 및 “Jean-loup Gailly와 Mark Adler”

PROCEDURE COLUMN_VALUE

(

c IN INTEGER,

position IN INTEGER,

value OUT NUMBER

);

– VARCHAR2

PROCEDURE COLUMN_VALUE

(

c IN INTEGER,

position IN INTEGER,

value OUT VARCHAR2

);

– DATE

PROCEDURE COLUMN_VALUE

(

c IN INTEGER,

position IN INTEGER,

value OUT DATE

);

– TIMESTAMP

PROCEDURE COLUMN_VALUE

(

c IN INTEGER,

position IN INTEGER,

value OUT TIMESTAMP_UNCONSTRAINED

);

– INTERVAL

PROCEDURE COLUMN_VALUE

(

c IN INTEGER,

position IN INTEGER,

value OUT YMINTERVAL_UNCONSTRAINED

);

PROCEDURE COLUMN_VALUE

(

c IN INTEGER,

position IN INTEGER,

126 Tibero RDBMS tbPSM 참조 안내서

Page 149: [11]-TmaxData - Tibero RDBMS 4 SP1... · 2019-06-26 · 본 제품은 “OpenSSL”, “RSA Data Security, Inc.”, “Apache Foundation” 및 “Jean-loup Gailly와 Mark Adler”

value OUT DSINTERVAL_UNCONSTRAINED

);

– BINARY_FLOAT

PROCEDURE COLUMN_VALUE

(

c IN INTEGER,

position IN INTEGER,

value OUT BINARY_FLOAT

);

– BINARY_DOUBLE

PROCEDURE COLUMN_VALUE

(

c IN INTEGER,

position IN INTEGER,

value OUT BINARY_DOUBLE

);

– BLOB

PROCEDURE COLUMN_VALUE

(

c IN INTEGER,

position IN INTEGER,

value OUT BLOB

);

– CLOB

PROCEDURE COLUMN_VALUE

(

c IN INTEGER,

position IN INTEGER,

value OUT CLOB

);

– CHAR

CHAR 타입에는 별도의 COLUMN_VALUE_CHAR 프로시저를 사용해야 한다.

PROCEDURE COLUMN_VALUE_CHAR

(

c IN INTEGER,

position IN INTEGER,

제9장 DBMS_SQL 127

Page 150: [11]-TmaxData - Tibero RDBMS 4 SP1... · 2019-06-26 · 본 제품은 “OpenSSL”, “RSA Data Security, Inc.”, “Apache Foundation” 및 “Jean-loup Gailly와 Mark Adler”

value OUT CHAR[, column_error OUT NUMBER, actual_length OUT INTEGER]

);

● 파라미터

설명파라미터

대상 커서이다.c

페치할 컬럼 목록에서 상대적 위치이다. (1 이상)position

가져올 컬럼을 저장할 변수이다.value

column_error – 값이 NULL인 경우 1405이다.

– 값이 절삭된 경우 1406이다.

실제로 가져온 컬럼의 길이이다.actual_length

● 예제

CREATE TABLE PSM_TABLE (A VARCHAR2(3));

INSERT INTO PSM_TABLE VALUES('111');

DECLARE

csr INTEGER;

col VARCHAR2(2);

val VARCHAR2(2);

ret INTEGER;

BEGIN

csr := DBMS_SQL.OPEN_CURSOR();

DBMS_SQL.PARSE(csr, 'select * from psm_table', dbms_sql.native);

/* result value is truncated */

DBMS_SQL.DEFINE_COLUMN(csr, 1, col, 2);

ret := DBMS_SQL.EXECUTE(csr);

ret := DBMS_SQL.FETCH_ROWS(csr);

DBMS_SQL.COLUMN_VALUE(csr, 1, val);

DBMS_OUTPUT.PUT_LINE('val=' || val || '.');

DBMS_SQL.CLOSE_CURSOR(csr);

END;

/

val=11.

128 Tibero RDBMS tbPSM 참조 안내서

Page 151: [11]-TmaxData - Tibero RDBMS 4 SP1... · 2019-06-26 · 본 제품은 “OpenSSL”, “RSA Data Security, Inc.”, “Apache Foundation” 및 “Jean-loup Gailly와 Mark Adler”

9.3.4. DEFINE_COLUMN

주어진 커서에서 페치될 컬럼의 타입을 정의하는 프로시저이다. 이 프로시저는 SELECT 문장에만 사용할

수 있다.

DEFINE_COLUMN 프로시저의 세부 내용은 다음과 같다.

● 프로토타입

DEFINE_COLUMN 프로시저는 설정할 변수의 타입에 따라 중복으로 선언되어 있다.

해당되는 타입으로는 NUMBER, VARCHAR2, DATE, TIMESTAMP, INTERVAL, BINARY_FLOAT, BI

NARY_DOUBLE, CLOB, BLOB이 있다.

– NUMBER

PROCEDURE DEFINE_COLUMN

(

c IN INTEGER,

position IN INTEGER,

column IN NUMBER

);

– VARCHAR2

PROCEDURE DEFINE_COLUMN

(

c IN INTEGER,

position IN INTEGER,

column IN VARCHAR2,

column_size IN INTEGER

);

– DATE

PROCEDURE DEFINE_COLUMN

(

c IN INTEGER,

position IN INTEGER,

column IN DATE

);

– TIMESTAMP

PROCEDURE DEFINE_COLUMN

(

c IN INTEGER,

position IN INTEGER,

제9장 DBMS_SQL 129

Page 152: [11]-TmaxData - Tibero RDBMS 4 SP1... · 2019-06-26 · 본 제품은 “OpenSSL”, “RSA Data Security, Inc.”, “Apache Foundation” 및 “Jean-loup Gailly와 Mark Adler”

column IN TIMESTAMP_UNCONSTRAINED

);

– INTERVAL

PROCEDURE DEFINE_COLUMN

(

c IN INTEGER,

position IN INTEGER,

column IN YMINTERVAL_UNCONSTRAINED

);

PROCEDURE DEFINE_COLUMN

(

c IN INTEGER,

position IN INTEGER,

column IN DSINTERVAL_UNCONSTRAINED

);

– BINARY_FLOAT

PROCEDURE DEFINE_COLUMN

(

c IN INTEGER,

position IN INTEGER,

column IN BINARY_FLOAT

);

– BINARY_DOUBLE

PROCEDURE DEFINE_COLUMN

(

c IN INTEGER,

position IN INTEGER,

column IN BINARY_DOUBLE

);

– CLOB

PROCEDURE DEFINE_COLUMN

(

c IN INTEGER,

position IN INTEGER,

column IN CLOB

);

– BLOB

130 Tibero RDBMS tbPSM 참조 안내서

Page 153: [11]-TmaxData - Tibero RDBMS 4 SP1... · 2019-06-26 · 본 제품은 “OpenSSL”, “RSA Data Security, Inc.”, “Apache Foundation” 및 “Jean-loup Gailly와 Mark Adler”

PROCEDURE DEFINE_COLUMN

(

c IN INTEGER,

position IN INTEGER,

column IN BLOB

);

– CHAR

CHAR 타입에는 별도의 DEFINE_COLUMN_CHAR 프로시저를 사용해야 한다.

PROCEDURE DEFINE_COLUMN_CHAR

(

c IN INTEGER,

position IN INTEGER,

column IN CHAR,

column_size IN INTEGER

);

● 파라미터

설명파라미터

대상 커서이다.c

SELECT를 실행할 컬럼 목록에서의 상대적 위치이다.position

문장의 컬럼에서 첫 번째 위치를 1로 하며, 1 이상의 값을 입력한다.

정의할 컬럼의 변수로, 타입만 참조하며 값은 관계없다.column

VARCHAR2, CHAR 타입에 대해 SELECT를 실행할 컬럼 값의 최대 길이이다.column_size

단, 최대 길이를 초과한 결과 컬럼은 절삭하여 가져온다.

● 예제

CREATE TABLE PSM_TABLE (A VARCHAR2(3));

INSERT INTO PSM_TABLE VALUES('abc');

DECLARE

csr INTEGER;

v VARCHAR2(1);

BEGIN

csr := DBMS_SQL.OPEN_CURSOR();

DBMS_SQL.PARSE(csr, 'select * from psm_table', dbms_sql.native);

제9장 DBMS_SQL 131

Page 154: [11]-TmaxData - Tibero RDBMS 4 SP1... · 2019-06-26 · 본 제품은 “OpenSSL”, “RSA Data Security, Inc.”, “Apache Foundation” 및 “Jean-loup Gailly와 Mark Adler”

DBMS_SQL.DEFINE_COLUMN(csr, 1, v, 1);

DBMS_SQL.CLOSE_CURSOR(csr);

END;

/

9.3.5. DESCRIBE_COLUMNS

주어진 열린 커서에서 결과 테이블의 컬럼들의 타입을 알려주는 프로시저이다. 이 프로시저는 SELECT

문장에만 사용할 수 있으며, 반드시 PARSE 프로시저로 SELECT 문장을 명시한 후 사용해야 한다.

DESCRIBE_COLUMNS 프로시저의 세부 내용은 다음과 같다.

● 프로토타입

PROCEDURE DESCRIBE_COLUMNS

(

c IN INTEGER,

col_cnt OUT INTEGER,

desc_t OUT DESC_TAB

);

● 파라미터

설명파라미터

대상 커서이다.c

SELECT 결과 테이블의 컬럼 갯수이다.col_cnt

각 컬럼의 정보들(desc_rec)의 리스트(desc_tab)이다.desc_t

● 예제

CREATE TABLE PSM_TABLE (A VARCHAR2(3));

INSERT INTO PSM_TABLE VALUES('abc');

DECLARE

csr INTEGER;

col_cnt INTEGER;

rec_tab DBMS_SQL.DESC_TAB;

BEGIN

csr := DBMS_SQL.OPEN_CURSOR();

DBMS_SQL.PARSE(csr, 'select * from psm_table', dbms_sql.native);

132 Tibero RDBMS tbPSM 참조 안내서

Page 155: [11]-TmaxData - Tibero RDBMS 4 SP1... · 2019-06-26 · 본 제품은 “OpenSSL”, “RSA Data Security, Inc.”, “Apache Foundation” 및 “Jean-loup Gailly와 Mark Adler”

DBMS_SQL.DESCRIBE_COLUMNS(csr, col_cnt, rec_tab);

DBMS_SQL.CLOSE_CURSOR(csr);

END;

/

9.3.6. DESCRIBE_COLUMNS2

주어진 열린 커서에서 결과 테이블의 컬럼들의 타입을 알려주는 프로시저이다. 이 프로시저는 SELECT

문장에만 사용할 수 있으며, 반드시 PARSE 프로시저로 SELECT 문장을 명시한 후 사용해야 한다.

DESCRIBE_COLUMNS에서는 정보들중 컬럼 이름을 최대 32byte 밖에 수용하지 못하지만, 이 프로시저

는 32767byte까지 수용하므로, 이 함수를 사용할 것을 권장한다.

DESCRIBE_COLUMNS2 프로시저의 세부 내용은 다음과 같다.

● 프로토타입

PROCEDURE DESCRIBE_COLUMNS2

(

c IN INTEGER,

col_cnt OUT INTEGER,

desc_t OUT DESC_TAB2

);

● 파라미터

설명파라미터

대상 커서이다.c

SELECT 결과 테이블의 컬럼 갯수이다.col_cnt

각 컬럼의 정보들(desc_rec2)의 리스트(desc_tab2)이다.desc_t

● 예제

CREATE TABLE PSM_TABLE (A VARCHAR2(3));

INSERT INTO PSM_TABLE VALUES('abc');

DECLARE

csr INTEGER;

col_cnt INTEGER;

rec_tab DBMS_SQL.DESC_TAB2;

BEGIN

csr := DBMS_SQL.OPEN_CURSOR();

제9장 DBMS_SQL 133

Page 156: [11]-TmaxData - Tibero RDBMS 4 SP1... · 2019-06-26 · 본 제품은 “OpenSSL”, “RSA Data Security, Inc.”, “Apache Foundation” 및 “Jean-loup Gailly와 Mark Adler”

DBMS_SQL.PARSE(csr, 'select * from psm_table', dbms_sql.native);

DBMS_SQL.DESCRIBE_COLUMNS2(csr, col_cnt, rec_tab);

DBMS_SQL.CLOSE_CURSOR(csr);

END;

/

9.3.7. PARSE

주어진 SQL 문장을 파싱하는 프로시저이다. 이때 DDL 문장인 경우 즉시 수행된다. 기존에 열려 있는 SQL

문장이 있다면 닫고 새로 입력된 SQL 문장을 파싱한다.

PARSE 프로시저의 세부 내용은 다음과 같다.

● 프로토타입

PROCEDURE PARSE

(

c IN INTEGER,

statement IN VARCHAR2,

language_flag IN INTEGER DEFAULT NULL

);

● 파라미터

설명파라미터

대상 커서이다.c

파싱할 대상이 되는 SQL 문장이다.statement

PSM 문장과 달리 SQL 문장에서는 마지막 세미콜론(;)은 입력하지 않아도 된다.

지원되지 않는 기능이므로 값을 무시한다.language_flag

● 예제

CREATE TABLE PSM_TABLE (A VARCHAR2(3));

DECLARE

csr INTEGER;

BEGIN

csr := DBMS_SQL.OPEN_CURSOR();

134 Tibero RDBMS tbPSM 참조 안내서

Page 157: [11]-TmaxData - Tibero RDBMS 4 SP1... · 2019-06-26 · 본 제품은 “OpenSSL”, “RSA Data Security, Inc.”, “Apache Foundation” 및 “Jean-loup Gailly와 Mark Adler”

DBMS_SQL.PARSE(csr, 'select * from psm_table', dbms_sql.native);

DBMS_SQL.CLOSE_CURSOR(csr);

END;

/

9.4. 함수본 절에서는 DBMS_SQL 패키지에서 제공하는 함수를 알파벳 순으로 설명한다.

9.4.1. EXECUTE

주어진 커서를 실행하는 함수이다. INSERT, UPDATE, DELETE 문장인 경우 처리된 로우의 수가 반환된

다.

EXECUTE 함수의 세부 내용은 다음과 같다.

● 프로토타입

FUNCTION EXECUTE

(

c IN INTEGER

)

RETURN INTEGER;

● 파라미터

설명파라미터

대상 커서이다.c

● 반환값

설명반환값

INSERT, UPDATE, DELETE 문장인 경우, 처리한 로우의 수를 반환한다.INTEGER

INSERT, UPDATE, DELETE 문장 이외의 경우에 반환한다.UNDEFINED

● 예제

CREATE TABLE PSM_TABLE (A VARCHAR(3));

DECLARE

csr INTEGER;

제9장 DBMS_SQL 135

Page 158: [11]-TmaxData - Tibero RDBMS 4 SP1... · 2019-06-26 · 본 제품은 “OpenSSL”, “RSA Data Security, Inc.”, “Apache Foundation” 및 “Jean-loup Gailly와 Mark Adler”

ret INTEGER;

BEGIN

csr := DBMS_SQL.OPEN_CURSOR();

DBMS_SQL.PARSE(csr, 'insert into psm_table values(''abc'')',

dbms_sql.native);

ret := DBMS_SQL.EXECUTE(csr);

DBMS_OUTPUT.PUT_LINE('affected row cnt = ' || ret || '.');

DBMS_SQL.CLOSE_CURSOR(csr);

END;

/

affected row cnt = 1.

9.4.2. EXECUTE_AND_FETCH

주어진 커서에 EXECUTE 와 FETCH_ROWS 함수를 연속해서 호출하는 것과 동일한 함수이다. 반환되는

값은 FETCH_ROWS와 동일하다. 즉 실제 페치한 로우의 수를 반환한다.

EXECUTE_AND_FETCH 함수의 세부 내용은 다음과 같다.

● 프로토타입

FUNCTION EXECUTE_AND_FETCH

(

c IN INTEGER,

exact IN BOOLEAN DEFAULT FALSE

)

RETURN INTEGER;

● 파라미터

설명파라미터

대상 커서이다.c

exact – TRUE: 정확히 하나의 로우가 페치되지 않으면 예외가 발생한다.

– FALSE: 여러 개의 ROW가 페치되어도 예외가 발생하지 않는다.

● 반환값

136 Tibero RDBMS tbPSM 참조 안내서

Page 159: [11]-TmaxData - Tibero RDBMS 4 SP1... · 2019-06-26 · 본 제품은 “OpenSSL”, “RSA Data Security, Inc.”, “Apache Foundation” 및 “Jean-loup Gailly와 Mark Adler”

설명반환값

페치할 로우가 더 이상 없는 경우에 반환한다.0

페치에 성공한 경우에 반환한다.1

● 예제

CREATE TABLE PSM_TABLE (A VARCHAR(3));

INSERT INTO PSM_TABLE VALUES('abc');

DECLARE

csr INTEGER;

ret INTEGER;

BEGIN

csr := DBMS_SQL.OPEN_CURSOR();

DBMS_SQL.PARSE(csr, 'SELECT * FROM PSM_TABLE', dbms_sql.native);

ret := DBMS_SQL.EXECUTE_AND_FETCH(csr);

DBMS_OUTPUT.PUT_LINE('fetched row cnt = ' || ret || '.');

LOOP

ret := DBMS_SQL.FETCH_ROWS(csr);

DBMS_OUTPUT.PUT_LINE('fetched row cnt = ' || ret || '.');

exit when ret = 0;

END LOOP;

DBMS_SQL.CLOSE_CURSOR(csr);

END;

/

fetched row cnt = 1.

fetched row cnt = 0.

9.4.3. FETCH_ROWS

주어진 커서에서 로우를 페치하는 함수이다. 이때 실제 페치된 로우의 수가 반환된다. 더 이상 페치할 로

우가 없는데 이 함수를 계속 호출하게 되면 예외가 발생한다.

FETCH_ROWS 함수의 세부 내용은 다음과 같다.

● 프로토타입

FUNCTION FETCH_ROWS

(

c IN INTEGER

제9장 DBMS_SQL 137

Page 160: [11]-TmaxData - Tibero RDBMS 4 SP1... · 2019-06-26 · 본 제품은 “OpenSSL”, “RSA Data Security, Inc.”, “Apache Foundation” 및 “Jean-loup Gailly와 Mark Adler”

)

RETURN INTEGER;

● 파라미터

설명파라미터

대상 커서이다.c

● 반환값

설명반환값

페치할 로우가 더 이상 없는 경우에 반환한다.0

페치에 성공한 경우에 반환한다.1

● 예제

CREATE TABLE PSM_TABLE (A VARCHAR2(3));

INSERT INTO PSM_TABLE VALUES('abc');

DECLARE

csr INTEGER;

ret INTEGER;

BEGIN

csr := DBMS_SQL.OPEN_CURSOR();

DBMS_SQL.PARSE(csr, 'SELECT * FROM PSM_TABLE', dbms_sql.native);

ret := DBMS_SQL.EXECUTE(csr);

LOOP

ret := DBMS_SQL.FETCH_ROWS(csr);

DBMS_OUTPUT.PUT_LINE('fetched row cnt = ' || ret || '.');

exit when ret = 0;

END LOOP;

DBMS_SQL.CLOSE_CURSOR(csr);

END;

/

fetched row cnt = 1.

fetched row cnt = 0.

138 Tibero RDBMS tbPSM 참조 안내서

Page 161: [11]-TmaxData - Tibero RDBMS 4 SP1... · 2019-06-26 · 본 제품은 “OpenSSL”, “RSA Data Security, Inc.”, “Apache Foundation” 및 “Jean-loup Gailly와 Mark Adler”

9.4.4. OPEN_CURSOR

SQL 문장을 수행하기 위한 커서를 새로 하나 여는 함수이다. 열린 커서는 사용 후에 반드시 close_cursor

를 호출해야 리소스가 서버에 반납된다.

한 번 열린 커서는 동일한 SQL 문장을 반복해서 수행할 수도 있고, 다른 SQL 문장을 실행하는 데 사용할

수도 있다. 커서를 여는 데 성공하면, 커서 ID를 INTEGER 타입으로 반환한다. 이 값을 이후에 DBMS_SQL

패키지의 커서 파라미터로 사용하면 된다.

OPEN_CURSOR 함수의 세부 내용은 다음과 같다.

● 프로토타입

FUNCTION OPEN_CURSOR() RETURN INTEGER;

● 예제

DECLARE

csr INTEGER;

BEGIN

csr := DBMS_SQL.OPEN_CURSOR();

END;

/

9.4.5. IS_OPEN

주어진 커서가 DBMS_SQL.open_cursor 함수로 열릴 수 있는 커서인지 검사하는 함수이다.

IS_OPEN 함수의 세부 내용은 다음과 같다.

● 프로토타입

FUNCTION IS_OPEN

(

c IN INTEGER

)

RETURN BOOLEAN;

● 파라미터

설명파라미터

대상 커서이다.c

● 반환값

제9장 DBMS_SQL 139

Page 162: [11]-TmaxData - Tibero RDBMS 4 SP1... · 2019-06-26 · 본 제품은 “OpenSSL”, “RSA Data Security, Inc.”, “Apache Foundation” 및 “Jean-loup Gailly와 Mark Adler”

설명반환값

open 상태인 경우에 반환한다.true

open 상태가 아닌 경우에 반환한다.false

● 예제

DECLARE

csr INTEGER := DBMS_SQL.OPEN_CURSOR();

is_open BOOLEAN;

BEGIN

is_open := DBMS_SQL.IS_OPEN(csr);

if is_open then

DBMS_OUTPUT.PUT_LINE('opened.');

end if;

END;

/

opened.

9.4.6. LAST_ERROR_POSITION

파싱을 할 때 발생한 에러의 위치를 찾아주는 함수이다. 단, 이 함수는 PARSE 프로시저를 호출한 직후에

사용해야 올바른 결과를 얻을 수 있다.

LAST_ERROR_POSITION 함수의 세부 내용은 다음과 같다.

● 프로토타입

FUNCTION LAST_ERROR_POSITION return INTEGER;

● 반환값

설명반환값

파싱을 할 때 에러가 발생한 오프셋을 반환한다. (0부터 시작)INTEGER

● 예제

DECLARE

csr INTEGER;

position INTEGER;

BEGIN

csr := DBMS_SQL.OPEN_CURSOR();

140 Tibero RDBMS tbPSM 참조 안내서

Page 163: [11]-TmaxData - Tibero RDBMS 4 SP1... · 2019-06-26 · 본 제품은 “OpenSSL”, “RSA Data Security, Inc.”, “Apache Foundation” 및 “Jean-loup Gailly와 Mark Adler”

DBMS_SQL.PARSE(csr, 'select * from psm_not_exist_table', dbms_sql.native);

EXCEPTION

WHEN OTHERS THEN

position := DBMS_SQL.LAST_ERROR_POSITION;

DBMS_OUTPUT.PUT_LINE('error position = ' || position);

DBMS_SQL.CLOSE_CURSOR(csr);

END;

/

error position = 14

9.4.7. LAST_ROW_COUNT

현재 수행 중인 문장의 페치된 로우 수의 총합을 반환하는 함수이다. 단 이 함수는 PARSE 프로시저를 호

출한 직후에 사용해야 올바른 결과를 얻을 수 있다.

LAST_ROW_COUNT 함수의 세부 내용은 다음과 같다.

● 프로토타입

FUNCTION LAST_ROW_COUNT return INTEGER;

● 반환값

설명반환값

현재 수행 중인 문장의 페치된 로우 수의 총합을 반환한다.INTEGER

● 예제

CREATE TABLE PSM_TABLE (A VARCHAR2(3));

INSERT INTO PSM_TABLE VALUES('111');

INSERT INTO PSM_TABLE VALUES('222');

DECLARE

csr INTEGER;

ret INTEGER;

cnt INTEGER;

BEGIN

csr := DBMS_SQL.OPEN_CURSOR();

DBMS_SQL.PARSE(csr, 'SELECT * FROM PSM_TABLE', dbms_sql.native);

ret := DBMS_SQL.EXECUTE(csr);

제9장 DBMS_SQL 141

Page 164: [11]-TmaxData - Tibero RDBMS 4 SP1... · 2019-06-26 · 본 제품은 “OpenSSL”, “RSA Data Security, Inc.”, “Apache Foundation” 및 “Jean-loup Gailly와 Mark Adler”

LOOP

ret := DBMS_SQL.FETCH_ROWS(csr);

exit when ret = 0;

END LOOP;

cnt := DBMS_SQL.LAST_ROW_COUNT;

DBMS_OUTPUT.PUT_LINE('last row count = ' || cnt);

DBMS_SQL.CLOSE_CURSOR(csr);

END;

/

last row count = 2

142 Tibero RDBMS tbPSM 참조 안내서

Page 165: [11]-TmaxData - Tibero RDBMS 4 SP1... · 2019-06-26 · 본 제품은 “OpenSSL”, “RSA Data Security, Inc.”, “Apache Foundation” 및 “Jean-loup Gailly와 Mark Adler”

제10장 DBMS_ROWID

본 장에서는 DBMS_ROWID 패키지의 기본 개념과 패키지 내의 프로시저와 함수를 사용하는 방법을 설명

한다.

10.1. 개요DBMS_ROWID는 SQL 문장이나 PSM을 수행하여 얻은 ROWID에 담긴 정보를 보거나 임의의 ROWID를

만들기 위한 패키지이다. ROWID에는 세그먼트(segment), 블록, 절대 파일(absolute file), 로우의 번호에

대한 정보가 포함되어 있다.

10.2. 프로시저본 절에서는 DBMS_ROWID 패키지에서 제공하는 프로시저를 알파벳 순으로 설명한다.

10.2.1. ROWID_INFO

ROWID에 담긴 모든 정보를 한 번에 추출하기 위해 사용되는 프로시저이다. 프로시저이기 때문에 SQL

문장 내에서는 사용될 수 없다.

ROWID_INFO 프로시저의 세부 내용은 다음과 같다.

● 프로토타입

PROCEDURE ROWID_INFO

(

rowid_in IN ROWID,

segment_number OUT NUMBER,

absolute_fno OUT NUMBER,

block_number OUT NUMBER,

row_number OUT NUMBER

);

● 파라미터

설명파라미터

정보를 얻고자 하는 대상 ROWID이다.rowid_in

ROWID에서 추출한 세그먼트의 번호가 저장된다.segment_number

제10장 DBMS_ROWID 143

Page 166: [11]-TmaxData - Tibero RDBMS 4 SP1... · 2019-06-26 · 본 제품은 “OpenSSL”, “RSA Data Security, Inc.”, “Apache Foundation” 및 “Jean-loup Gailly와 Mark Adler”

설명파라미터

ROWID에서 추출한 절대 파일의 번호가 저장된다.absolute_fno

ROWID에서 추출한 블록의 번호가 저장된다.block_number

ROWID에서 추출한 로우의 번호가 저장된다.row_number

● 예제

DBMS_ROWID.ROWID_INFO(rowid_1, sgmt_no, fno, blk_no, row_no);

DBMS_OUTPUT.PUT_LINE('segment number : ' || sgmt_no);

DBMS_OUTPUT.PUT_LINE('absolute file number : ' || fno);

DBMS_OUTPUT.PUT_LINE('block number : ' || blk_no);

DBMS_OUTPUT.PUT_LINE('row number : ' || row_no);

10.3. 함수본 절에서는 DBMS_ROWID 패키지에서 제공하는 함수를 알파벳 순으로 설명한다.

10.3.1. ROWID_CREATE

입력한 정보에 맞는 ROWID를 생성하는 함수이다. 주로 가져온 ROWID가 올바로 만들어진 것인지 확인

해보는 용도로 사용한다. 사용자가 임의의 정보로 ROWID를 생성할 수도 있지만 큰 의미는 없다.

ROWID_CREATE 함수의 세부 내용은 다음과 같다.

● 프로토타입

FUNCTION ROWID_CREATE

(

segment_number IN NUMBER,

absolute_fno IN NUMBER,

block_number IN NUMBER,

row_number IN NUMBER

)

RETURN ROWID;

● 파라미터

설명파라미터

세그먼트의 번호이다.segment_number

절대 파일의 번호이다.absolute_fno

파일 내의 블록의 번호이다.block_number

144 Tibero RDBMS tbPSM 참조 안내서

Page 167: [11]-TmaxData - Tibero RDBMS 4 SP1... · 2019-06-26 · 본 제품은 “OpenSSL”, “RSA Data Security, Inc.”, “Apache Foundation” 및 “Jean-loup Gailly와 Mark Adler”

설명파라미터

블록 내의 로우의 번호이다.row_number

● 예제

DBMS_ROWID.ROWID_INFO(rowid_1, sgmt_no, fno, blk_no, row_no);

my_rowid := DBMS_ROWID.ROWID_CREATE(sgmt_no, fno, blk_no, row_no);

DBMS_OUTPUT.PUT_LINE(rowid_1 || ' ' || my_rowid);

10.3.2. ROWID_SEGMENT

주어진 ROWID에서 세그먼트의 번호를 추출하여 반환하는 함수이다.

ROWID_SEGMENT 함수의 세부 내용은 다음과 같다.

● 프로토타입

FUNCTION ROWID_SEGMENT

(

row_id IN ROWID

)

RETURN NUMBER;

● 파라미터

설명파라미터

정보를 추출할 ROWID이다.row_id

● 예제

SELECT dbms_rowid.rowid_segment(rowid)

FROM table;

10.3.3. ROWID_BLOCK_NUMBER

주어진 ROWID에서 파일 내의 블록의 번호를 추출하여 반환하는 함수이다.

ROWID_BLOCK_NUMBER 함수의 세부 내용은 다음과 같다.

● 프로토타입

제10장 DBMS_ROWID 145

Page 168: [11]-TmaxData - Tibero RDBMS 4 SP1... · 2019-06-26 · 본 제품은 “OpenSSL”, “RSA Data Security, Inc.”, “Apache Foundation” 및 “Jean-loup Gailly와 Mark Adler”

FUNCTION ROWID_BLOCK_NUMBER

(

row_id IN ROWID

)

RETURN NUMBER;

● 파라미터

설명파라미터

정보를 추출할 ROWID이다.row_id

● 예제

SELECT dbms_rowid.rowid_block_number(rowid)

FROM table;

10.3.4. ROWID_ROW_NUMBER

주어진 ROWID에서 블록 내의 로우의 번호를 추출하여 반환하는 함수이다.

ROWID_ROW_NUMBER 함수의 세부 내용은 다음과 같다.

● 프로토타입

FUNCTION ROWID_ROW_NUMBER

(

row_id IN ROWID

)

RETURN NUMBER;

● 파라미터

설명파라미터

정보를 추출할 ROWID이다.row_id

● 예제

SELECT dbms_rowid.rowid_row_number(rowid)

FROM table;

146 Tibero RDBMS tbPSM 참조 안내서

Page 169: [11]-TmaxData - Tibero RDBMS 4 SP1... · 2019-06-26 · 본 제품은 “OpenSSL”, “RSA Data Security, Inc.”, “Apache Foundation” 및 “Jean-loup Gailly와 Mark Adler”

10.3.5. ROWID_ABSOLUTE_FNO

주어진 ROWID에서 세그먼트 내의 절대 파일의 번호를 추출하여 반환하는 함수이다.

ROWID_ABSOLUTE_FNO 함수의 세부 내용은 다음과 같다.

● 프로토타입

FUNCTION ROWID_ABSOLUTE_FNO

(

row_id IN ROWID

)

RETURN NUMBER;

● 파라미터

설명파라미터

정보를 추출할 ROWID이다.row_id

● 예제

SELECT dbms_rowid.rowid_absolute_fno(rowid)

FROM table;

10.3.6. ROWID_TO_RELATIVE_FNO

주어진 ROWID에서 절대 파일의 번호를 추출해 테이블스페이스의 상대적인 파일 번호로 변환하는 함수

이다. 일반적으로 SELECT 문장에서 절대 파일의 번호를 추출했을 때의 파일 번호는 이러한 상대적 파일

번호이다.

ROWID_TO_RELATIVE_FNO 함수의 세부 내용은 다음과 같다.

● 프로토타입

FUNCTION ROWID_TO_RELATIVE_FNO

(

row_id IN ROWID

)

RETURN NUMBER;

● 파라미터

제10장 DBMS_ROWID 147

Page 170: [11]-TmaxData - Tibero RDBMS 4 SP1... · 2019-06-26 · 본 제품은 “OpenSSL”, “RSA Data Security, Inc.”, “Apache Foundation” 및 “Jean-loup Gailly와 Mark Adler”

설명파라미터

정보를 추출할 ROWID이다.row_id

● 예제

SELECT dbms_rowid.rowid_to_relative_fno(rowid)

FROM table;

148 Tibero RDBMS tbPSM 참조 안내서

Page 171: [11]-TmaxData - Tibero RDBMS 4 SP1... · 2019-06-26 · 본 제품은 “OpenSSL”, “RSA Data Security, Inc.”, “Apache Foundation” 및 “Jean-loup Gailly와 Mark Adler”

제11장 DBMS_JAVA

본 장에서는 DBMS_JAVA 패키지의 기본 개념과 패키지 내의 프로시저와 함수를 사용하는 방법을 설명

한다.

11.1. 개요DBMS_JAVA는 데이터베이스에서 사용하는 Java 객체에 접근하기 위한 함수를 제공하는 패키지이다.

11.2. 프로시저본 절에서는 DBMS_JAVA 패키지에서 제공하는 프로시저를 알파벳 순으로 설명한다.

11.2.1. SET_OUTPUT

Java 객체의 출력을 화면으로 보여주고, 입력 값으로 주어진 크기만큼 버퍼를 사용하는 프로시저이다.

SET_OUTPUT 프로시저의 세부 내용은 다음과 같다.

● 프로토타입

PROCEDURE SET_OUTPUT

(

bufsize IN NUMBER DEFAULT 2000

);

● 파라미터

설명파라미터

출력을 저장할 버퍼의 크기이다.bufsize

● 예제

call DBMS_JAVA.SET_OUTPUT();

call DBMS_JAVA.SET_OUTPUT(5000);

제11장 DBMS_JAVA 149

Page 172: [11]-TmaxData - Tibero RDBMS 4 SP1... · 2019-06-26 · 본 제품은 “OpenSSL”, “RSA Data Security, Inc.”, “Apache Foundation” 및 “Jean-loup Gailly와 Mark Adler”

11.3. 함수본 절에서는 DBMS_JAVA 패키지에서 제공하는 함수를 알파벳 순으로 설명한다.

11.3.1. LONGNAME

Java 객체의 완전한 이름을 반환하는 함수이다.

LONGNAME 함수의 세부 내용은 다음과 같다.

● 프로토타입

FUNCTION LONGNAME

(

shortname IN VARCHAR2

)

RETURN VARCHAR2;

● 파라미터

설명파라미터

짧게 줄인 Java 객체의 이름이다.shortname

● 예제

SELECT dbms_java.longname(object_name)

FROM user_objects

WHERE object_type='JAVA CLASS' AND status='VALID';

11.3.2. SHORTNAME

Java 객체의 이름으로 저장할 수 없는 긴 이름을 짧은 형식으로 바꿔주는 함수이다.

SHORTNAME 함수의 세부 내용은 다음과 같다.

● 프로토타입

FUNCTION SHORTNAME

(

longname IN VARCHAR2

)

RETURN VARCHAR2;

150 Tibero RDBMS tbPSM 참조 안내서

Page 173: [11]-TmaxData - Tibero RDBMS 4 SP1... · 2019-06-26 · 본 제품은 “OpenSSL”, “RSA Data Security, Inc.”, “Apache Foundation” 및 “Jean-loup Gailly와 Mark Adler”

● 파라미터

설명파라미터

Java 객체의 원래 이름이다.longname

● 예제

DECLARE

short_java_object_name VARCHAR2(128);

long_laga_object_name VARCHAR2(128) ;

BEGIN

...

short_java_object_name := dbms_java.shortname(long_java_object_name);

END;

제11장 DBMS_JAVA 151

Page 174: [11]-TmaxData - Tibero RDBMS 4 SP1... · 2019-06-26 · 본 제품은 “OpenSSL”, “RSA Data Security, Inc.”, “Apache Foundation” 및 “Jean-loup Gailly와 Mark Adler”
Page 175: [11]-TmaxData - Tibero RDBMS 4 SP1... · 2019-06-26 · 본 제품은 “OpenSSL”, “RSA Data Security, Inc.”, “Apache Foundation” 및 “Jean-loup Gailly와 Mark Adler”

제12장 UTL_FILE

본 장에서는 UTL_FILE 패키지의 기본 개념과 패키지 내의 프로시저와 함수를 사용하는 방법을 설명한다.

12.1. 개요UTL_FILE은 운영체제에서 관리하는 파일에 접근하기 위한 함수와 프로시저를 제공하는 패키지이다. 파

일의 경로는 디렉터리명으로 지정할 수 있다.

UTL_FILE 패키지에서 정의된 타입과 예외 상황은 다음과 같다.

● 타입

FILE_TYPE의 타입은 파일 식별자로 사용된다.

TYPE FILE_TYPE IS RECORD

(

id BINARY_INTEGER,

datatype BINARY_INTEGER

);

● 예외 상황

설명예외 상황

파일의 경로가 유효하지 않은 경우이다.INVALID_PATH

유효하지 않은 모드를 사용한 경우이다.INVALID_MODE

유효하지 않은 파일 핸들에 파일 연산을 하는 경우이다.INVALID_FILEHANDLE

파일에 대한 연산을 수행할 수 없는 경우이다.INVALID_OPERATION

읽기 연산 중에 에러가 발생하는 경우이다.READ_ERROR

쓰기 연산 중에 에러가 발생하는 경우이다.WRITE_ERROR

예기치 못한 에러가 발생하는 경우이다.INTERNAL_ERROR

파일이 열려 있어서 해당 연산을 수행할 수 없는 경우이다.FILE_OPEN

FOPEN 함수를 사용할 때 max_linesize 값이 유효하지 않은 경우이다.INVALID_MAXLINESIZE

max_linesize 값은 1과 32767byte 사이의 값이어야 한다.

파일 이름이 유효하지 않은 경우이다.INVALID_FILENAME

해당 파일에 대한 접근 권한이 없는 경우이다.ACCESS_DENIED

제12장 UTL_FILE 153

Page 176: [11]-TmaxData - Tibero RDBMS 4 SP1... · 2019-06-26 · 본 제품은 “OpenSSL”, “RSA Data Security, Inc.”, “Apache Foundation” 및 “Jean-loup Gailly와 Mark Adler”

설명예외 상황

다음과 같이 유효하지 않은 오프셋이 주어진 경우이다.INVALID_OFFSET

– 상대 오프셋과 절대 오프셋이 모두 NULL일 때 유효하지 않다.

– 절대 오프셋이 음수일 때 유효하지 않다.

– 오프셋이 파일 끝의 위치를 초과했을 때 유효하지 않다.

DELETE 연산이 실패한 경우이다.DELETE_FAILED

RENAME 연산이 실패한 경우이다.RENAME_FAILED

12.2. 프로시저본 절에서는 UTL_FILE 패키지에서 제공하는 프로시저를 알파벳 순으로 설명한다.

12.2.1. FCLOSE

파일을 닫는 프로시저이다.

FCLOSE 프로시저의 세부 내용은 다음과 같다.

● 프로토타입

PROCEDURE FCLOSE

(

file IN OUT FILE_TYPE

);

● 파라미터

설명파라미터

파일 핸들이다.file

● 예외 상황

– WRITE_ERROR

– INVALID_FILEHANDLE

● 예제

154 Tibero RDBMS tbPSM 참조 안내서

Page 177: [11]-TmaxData - Tibero RDBMS 4 SP1... · 2019-06-26 · 본 제품은 “OpenSSL”, “RSA Data Security, Inc.”, “Apache Foundation” 및 “Jean-loup Gailly와 Mark Adler”

CREATE OR REPLACE DIRECTORY USER_PATH AS '/HOME/TIBERO/PATH';

DECLARE

fname VARCHAR2(1024);

BEGIN

file := UTL_FILE.FOPEN('USER_PATH', 'MYFILE.DAT', 'r');

UTL_FILE.FCLOSE(file);

END;

/

12.2.2. FCLOSE_ALL

현재 세션에 열린 모든 파일을 닫는 프로시저이다.

FCLOSE_ALL 프로시저의 세부 내용은 다음과 같다.

● 프로토타입

PROCEDURE FCLOSE_ALL;

● 예외 상황

– WRITE_ERROR

● 예제

CREATE OR REPLACE DIRECTORY USER_PATH AS '/HOME/TIBERO/PATH';

DECLARE

outfile UTL_FILE.FILE_TYPE;

appfile UTL_FILE.FILE_TYPE;

path VARCHAR(10);

BEGIN

path := 'USER_PATH';

outfile := UTL_FILE.FOPEN(path, 'output_file.txt', 'w');

appfile := UTL_FILE.FOPEN(path, 'append_file.txt', 'w');

UTL_FILE.FCLOSE_ALL;

END;

/

제12장 UTL_FILE 155

Page 178: [11]-TmaxData - Tibero RDBMS 4 SP1... · 2019-06-26 · 본 제품은 “OpenSSL”, “RSA Data Security, Inc.”, “Apache Foundation” 및 “Jean-loup Gailly와 Mark Adler”

12.2.3. FCOPY

파일의 연속되는 부분을 새로 생성된 파일에 복사하는 프로시저이다.

FCOPY 프로시저의 세부 내용은 다음과 같다.

● 프로토타입

PROCEDURE FCOPY

(

location IN VARCHAR2,

filename IN VARCHAR2,

dest_dir IN VARCHAR2,

dest_file IN VARCHAR2,

start_line IN BINARY_INTEGER DEFAULT 1,

end_line IN BINARY_INTEGER DEFAULT NULL

);

● 파라미터

설명파라미터

복사를 진행할 대상 파일이 위치할 경로의 디렉터리명이다.location

복사를 진행할 대상 파일의 이름이다.filename

복사가 진행된 이후, 파일이 위치할 경로의 디렉터리명이다.dest_dir

복사가 진행된 이후의 파일의 이름이다.dest_file

복사를 진행할 시작 위치이다. 파일의 라인 번호를 사용해 명시한다.start_line

기본값은 1이며, 파일의 첫 번째 의미한다.

복사를 끝낼 종료 위치이다. start_line과 마찬가지로 라인 번호로 명시한다.end_line

기본값은 NULL이며, 파일의 마지막 라인을 의미한다.

● 예제

CREATE OR REPLACE DIRECTORY USER_PATH AS '/HOME/TIBERO/PATH';

BEGIN

UTL_FILE.FCOPY('USER_PATH', 'MYFILE.DAT', 'USER_PATH', 'MTFILE.BAK');

END;

/

156 Tibero RDBMS tbPSM 참조 안내서

Page 179: [11]-TmaxData - Tibero RDBMS 4 SP1... · 2019-06-26 · 본 제품은 “OpenSSL”, “RSA Data Security, Inc.”, “Apache Foundation” 및 “Jean-loup Gailly와 Mark Adler”

12.2.4. FFLUSH

아직 파일에 쓰지 않고 버퍼에 남아 있는 데이터를 파일에 쓰는 프로시저이다. 데이터는 반드시 EOL 문자

로 끝나야 한다.

FFLUSH 프로시저의 세부 내용은 다음과 같다.

● 프로토타입

PROCEDURE FFLUSH

(

file IN FILE_TYPE

);

● 파라미터

설명파라미터

파일 핸들러이다.file

● 예외 상황

– INVALID_FILEHANDLE

– INVALID_OPERATION

– WRITE_ERROR

● 예제

CREATE OR REPLACE DIRECTORY USER_PATH AS '/home/user/path';

DECLARE

fhandle UTL_FILE.FILE_TYPE;

buffer VARCHAR2(32767);

path VARCHAR2(1024);

fname VARCHAR2(1024);

BEGIN

path := 'USER_PATH';

fname := 'MYFILE.TXT';

fhandle := UTL_FILE.FOPEN(path, fname, 'w');

buffer := 'This is the message for output file';

for i in 1..10 loop

UTL_FILE.PUT(fhandle, buffer);

end loop;

UTL_FILE.NEW_LINE(fhandle);

UTL_FILE.FFLUSH(fhandle);

제12장 UTL_FILE 157

Page 180: [11]-TmaxData - Tibero RDBMS 4 SP1... · 2019-06-26 · 본 제품은 “OpenSSL”, “RSA Data Security, Inc.”, “Apache Foundation” 및 “Jean-loup Gailly와 Mark Adler”

UTL_FILE.FCLOSE(fhandle);

END;

/

12.2.5. FGETATTR

디스크 파일의 속성을 반환하는 프로시저이다.

FGETATTR 프로시저의 세부 내용은 다음과 같다.

● 프로토타입

PROCEDURE FGETATTR

(

location IN VARCHAR2,

filename IN VARCHAR2,

fexists OUT BOOLEAN,

file_length OUT NUMBER,

blocksize OUT BINARY_INTEGER

);

● 파라미터

설명파라미터

파일의 경로를 나타내는 디렉터리명이다.location

파일의 이름이다.filename

파일의 존재 여부이다.fexists

파일의 길이(byte)이다.file_length

파일 시스템의 블록 크기(byte)이다.blocksize

● 예제

CREATE OR REPLACE DIRECTORY USER_PATH AS '/home/user/path';

DECLARE

info_exists BOOLEAN;

info_flen NUMBER;

info_bsz BINARY_INTEGER;

etc_path VARCHAR2(1024);

fname VARCHAR2(1024);

BEGIN

etc_path := 'USER_PATH';

158 Tibero RDBMS tbPSM 참조 안내서

Page 181: [11]-TmaxData - Tibero RDBMS 4 SP1... · 2019-06-26 · 본 제품은 “OpenSSL”, “RSA Data Security, Inc.”, “Apache Foundation” 및 “Jean-loup Gailly와 Mark Adler”

fname := 'hostname';

UTL_FILE.FGETATTR(etc_path, fname, info_exists, info_flen, info_bsz);

if info_exists = TRUE then

DBMS_OUTPUT.PUT_LINE('file name :' || fname);

DBMS_OUTPUT.PUT_LINE('file size (bytes) :' || TO_CHAR(info_flen));

DBMS_OUTPUT.PUT_LINE('block size(bytes) :' || TO_CHAR(info_bsz));

end if;

END;

/

12.2.6. FREMOVE

파일을 삭제하는 프로시저이다. 파일을 삭제하는 데 충분한 권한이 없는 경우 DELETE_FAILED 예외 상

황이 발생한다.

FREMOVE 프로시저의 세부 내용은 다음과 같다.

● 프로토타입

PROCEDURE FREMOVE

(

location IN VARCHAR2,

filename IN VARCHAR2

);

● 파라미터

설명파라미터

파일의 위치를 나타내는 디렉터리명이다.location

파일의 이름이다.filename

● 예외 상황

– DELETE_FAILED

● 예제

CREATE OR REPLACE DIRECTORY USER_PATH AS '/home/user/path';

BEGIN

UTL_FILE.FREMOVE('USER_PATH', 'MYFILE.BAK');

제12장 UTL_FILE 159

Page 182: [11]-TmaxData - Tibero RDBMS 4 SP1... · 2019-06-26 · 본 제품은 “OpenSSL”, “RSA Data Security, Inc.”, “Apache Foundation” 및 “Jean-loup Gailly와 Mark Adler”

END;

/

12.2.7. FRENAME

파일의 이름을 변경하는 프로시저이다. OS 셸에서 사용하는 mv 명령어와 동일하게 동작한다.

FRENAME 프로시저의 세부 내용은 다음과 같다.

● 프로토타입

PROCEDURE FRENAME

(

location IN VARCHAR2,

filename IN VARCHAR2,

dest_dir IN VARCHAR2,

dest_file IN VARVCHAR2,

overwrite IN BOOLEAN DEFAULT FALSE

);

● 파라미터

설명파라미터

원본 파일의 경로를 나타내는 디렉터리명이다.location

원본 파일의 이름이다.filename

변경된 파일의 경로를 나타내는 디렉터리명이다.dest_dir

변경된 파일의 이름이다.dest_file

변경된 파일의 이름이 이미 존재할 경우 덮어쓸지를 지정한다.overwrite

● 예제

CREATE OR REPLACE DIRECTORY USER_PATH AS '/home/user/path';

BEGIN

UTL_FILE.FRENAME('USER_PATH', 'MTFILE.BAK', 'USER_PATH', 'MYFILE.DAT');

END;

/

160 Tibero RDBMS tbPSM 참조 안내서

Page 183: [11]-TmaxData - Tibero RDBMS 4 SP1... · 2019-06-26 · 본 제품은 “OpenSSL”, “RSA Data Security, Inc.”, “Apache Foundation” 및 “Jean-loup Gailly와 Mark Adler”

12.2.8. FSEEK

파일 포인터의 위치를 변경하는 프로시저이다.

FSEEK 프로시저의 세부내용은 다음과 같다.

● 프로토타입

PROCEDURE FSEEK

(

fid IN UTL_FILE.FILE_TYPE,

absolute_offset IN PLS_INTEGER DEFAULT NULL,

relative_offset IN PLS_INTEGER DEFAULT NULL

);

● 파라미터

설명파라미터

UTL_FILE 패키지의 FILE_TYPE 타입의 파일 식별자이다.fid

절대 오프셋, 파일의 시작부터의 오프셋 값이다. (기본값: NULL)absolute_offset

상대 오프셋, 현재 파일 포인터 위치에서 양수이면 뒤쪽, 음수이면 앞쪽 방향

을 나타낸다. 절대 오프셋이 있는 경우, 상대 오프셋은 무시된다.

relative_offset

(기본값: NULL)

● 예외 상황

– INVALID_OFFSET

● 예제

CREATE OR REPLACE DIRECTORY USER_PATH AS '/home/user/path';

DECLARE

infile UTL_FILE.FILE_TYPE;

absolute_offset PLS_INTEGER:= 10;

scan_first RAW(32767);

scan_second RAW(32767);

len CONSTANT PLS_INTEGER := 32767;

BEGIN

infile := UTL_FILE.FOPEN('USER_PATH','codd.bcnf', 'r');

UTL_FILE.FSEEK(infile, absolute_offset, -5);

UTL_FILE.GET_RAW(infile, scan_first, 1);

UTL_FILE.FSEEK(infile, 5);

제12장 UTL_FILE 161

Page 184: [11]-TmaxData - Tibero RDBMS 4 SP1... · 2019-06-26 · 본 제품은 “OpenSSL”, “RSA Data Security, Inc.”, “Apache Foundation” 및 “Jean-loup Gailly와 Mark Adler”

UTL_FILE.GET_RAW(infile, scan_second, 1);

if scan_first != scan_second then

DBMS_OUTPUT.PUT_LINE('ralative_offset ignored!');

end if;

UTL_FILE.FCLOSE(infile);

END;

/

12.2.9. GET_LINE

EOL 문자 또는 파일이 끝날 때까지의 내용을 읽어 오는 프로시저이다. FOPEN 함수에서 지정한

max_linesize 이상을 읽어 올 수 없다.

GET_LINE 프로시저의 세부 내용은 다음과 같다.

● 프로토타입

PROCEDURE GET_LINE

(

file IN FILE_TYPE,

buffer OUT VARCHAR2,

len IN PLS_INTEGER DEFAULT NULL

);

● 파라미터

설명파라미터

파일 핸들러이다.file

읽어 온 데이터이다.buffer

파일로부터 읽어 올 byte의 크기이다.len

(기본값: NULL, NULL인 경우 max_linesize 값을 갖는다.)

● 예외상황

– INVALID_FILEHANDLE

– INVALID_OPERATION

● 예제

162 Tibero RDBMS tbPSM 참조 안내서

Page 185: [11]-TmaxData - Tibero RDBMS 4 SP1... · 2019-06-26 · 본 제품은 “OpenSSL”, “RSA Data Security, Inc.”, “Apache Foundation” 및 “Jean-loup Gailly와 Mark Adler”

CREATE OR REPLACE DIRECTORY USER_PATH AS '/home/user/path';

DECLARE

infile UTL_FILE.FILE_TYPE;

length CONSTANT PLS_INTEGER := 1024;

read_buffer VARCHAR2(1024) := NULL;

BEGIN

infile := UTL_FILE.FOPEN('USER_PATH','hosts', 'r');

loop

UTL_FILE.GET_LINE(infile, read_buffer, length);

DBMS_OUTPUT.PUT_LINE(read_buffer);

if read_buffer is NULL then

DBMS_OUTPUT.PUT_LINE(read_buffer);

else

exit;

end if;

end loop;

UTL_FILE.FCLOSE(infile);

END;

/

12.2.10. GET_RAW

파일로부터 RAW 타입의 문자열을 읽어 오는 프로시저이다. EOL 문자를 무시하며, 읽은 byte의 크기를

반환한다.

GET_RAW 프로시저의 세부 내용은 다음과 같다.

● 프로토타입

PROCEDURE GET_RAW

(

fid IN UTL_FILE.FILE_TYPE,

r OUT NOCOPY RAW,

len IN PLS_INTEGER DEFAULT NULL

);

● 파라미터

설명파라미터

파일 식별자이다.fid

읽은 데이터이다.buffer

제12장 UTL_FILE 163

Page 186: [11]-TmaxData - Tibero RDBMS 4 SP1... · 2019-06-26 · 본 제품은 “OpenSSL”, “RSA Data Security, Inc.”, “Apache Foundation” 및 “Jean-loup Gailly와 Mark Adler”

설명파라미터

파일로부터 읽어 올 byte의 크기이다.len

(기본값: NULL, NULL인 경우 max_linesize 값을 갖는다.)

● 예제

CREATE OR REPLACE DIRECTORY USER_PATH AS '/home/user/path';

DECLARE

infile UTL_FILE.FILE_TYPE;

length CONSTANT PLS_INTEGER := 32;

read_buffer RAW(32767);

BEGIN

infile := UTL_FILE.FOPEN('USER_PATH','hosts', 'r');

UTL_FILE.GET_RAW(infile, read_buffer, length);

UTL_FILE.FCLOSE(infile);

END;

/

12.2.11. NEW_LINE

파일에 하나 이상의 EOL 문자를 넣는 프로시저이다. EOL 문자는 플랫폼에 따라 다르다.

NEW_LINE 프로시저의 세부 내용은 다음과 같다.

● 프로토타입

PROCEDURE NEW_LINE

(

file IN FILE_TYPE,

lines IN NATURAL DEFAULT 1

);

● 파라미터

설명파라미터

파일 핸들러이다.file

파일에 넣을 EOL 문자의 개수이다.lines

● 예외 상황

– INVALID_FILEHANDLE

164 Tibero RDBMS tbPSM 참조 안내서

Page 187: [11]-TmaxData - Tibero RDBMS 4 SP1... · 2019-06-26 · 본 제품은 “OpenSSL”, “RSA Data Security, Inc.”, “Apache Foundation” 및 “Jean-loup Gailly와 Mark Adler”

– INVALID_OPERATION

– WRITE_ERROR

12.2.12. PUT

파일에 문자열을 넣을 때 사용하는 프로시저이다.

PUT 프로시저의 세부 내용은 다음과 같다.

● 프로토타입

PROCEDURE PUT

(

file IN FILE_TYPE,

buffer IN VARCHAR2

);

● 파라미터

설명파라미터

파일 핸들러이다.file

파일에 쓸 내용이다.buffer

파일이 w(쓰기 텍스트)나 a(추가 텍스트) 모드로 열리지 않은 경우 IN

VALID_OPERATION 예외 상황이 발생한다.

● 예외 상황

– INVALID_FILEHANDLE

– INVALID_OPERATION

– WRITE_ERROR

● 예제

CREATE OR REPLACE DIRECTORY USER_PATH AS '/home/user/path';

DECLARE

outfile UTL_FILE.FILE_TYPE;

buf VARCHAR(1024) := NULL;

BEGIN

제12장 UTL_FILE 165

Page 188: [11]-TmaxData - Tibero RDBMS 4 SP1... · 2019-06-26 · 본 제품은 “OpenSSL”, “RSA Data Security, Inc.”, “Apache Foundation” 및 “Jean-loup Gailly와 Mark Adler”

outfile := UTL_FILE.FOPEN('USER_PATH', 'MYFILE.DAT', 'w');

for i in 1..10 loop

buf := buf || '0123456789';

end loop;

UTL_FILE.PUT( outfile, buf );

UTL_FILE.FCLOSE(outfile);

END;

/

12.2.13. PUTF

형식화된 PUT 프로시저이다. PUTF의 형식화된 문자열은 C언어에서 표준 입출력(standard I/O)의 fprintf

에서의 형식화된 문자열과 동일하게 %s와 이스케이프 문자를 포함한다. 이스케이프 문자로 \n을 사용할

수 있으며 %s는 그 뒤에 나오는 인수 문자열을 대체한다.

예를 들어 다음과 같은 세 개의 인수가 있다고 가정하면,

arg1 = 'string1';

arg2 = 'string2';

arg3 = 'string3';

위의 세 개의 인수를 사용하는 형식화된 문자열은 다음과 같다.

utl_file.putf( ofile, 'This is example of formatted string : %s %s %s \n',

arg1, arg2, arg3);

또한 위의 내용이 실행되면 다음과 같은 내용이 출력된다.

This is example of formated string : string1 string2 string3

PUTF 프로시저의 세부 내용은 다음과 같다.

● 프로토타입

PROCUDURE PUTF

(

file IN FILE_TYPE,

format IN VARCHAR2,

arg1 IN VARCHAR2 DEFAULT NULL,

arg2 IN VARCHAR2 DEFAULT NULL,

arg3 IN VARCHAR2 DEFAULT NULL,

arg4 IN VARCHAR2 DEFAULT NULL,

arg5 IN VARCHAR2 DEFAULT NULL

);

166 Tibero RDBMS tbPSM 참조 안내서

Page 189: [11]-TmaxData - Tibero RDBMS 4 SP1... · 2019-06-26 · 본 제품은 “OpenSSL”, “RSA Data Security, Inc.”, “Apache Foundation” 및 “Jean-loup Gailly와 Mark Adler”

● 파라미터

설명파라미터

파일 핸들러이다.file

%s와 이스케이프 문자(\n)를 포함하는 형식화된 문자열이다.format

%s에 대체되는 선택할 수 있는 문자열이다. (기본값: NULL)arg1-5

● 예외 상황

– INVALID_FILEHANDLE

– INVALID_OPERATION

– WRITE_ERROR

● 예제

CREATE OR REPLACE DIRECTORY USER_PATH AS '/home/user/path';

DECLARE

fname VARCHAR2(2048);

path VARCHAR2(2048);

outfile UTL_FILE.FILE_TYPE;

BEGIN

fname := 'MYFILE.DAT';

path := 'USER_PATH';

outfile := UTL_FILE.FOPEN(path, fnamet /home/posung/path/MYFILE.DAT!cat

/home/posung/path/MYFILE.DAT, 'w');

UTL_FILE.PUTF( outfile, '%s %s formated file output example\n', path, fname);

UTL_FILE.FCLOSE(outfile);

END;

/

12.2.14. PUT_RAW

RAW 타입 데이터의 내용을 파일에 쓰는 프로시저이다.

PUT_RAW 프로시저의 세부 내용은 다음과 같다.

● 프로토타입

PROCEDURE PUT_RAW

(

제12장 UTL_FILE 167

Page 190: [11]-TmaxData - Tibero RDBMS 4 SP1... · 2019-06-26 · 본 제품은 “OpenSSL”, “RSA Data Security, Inc.”, “Apache Foundation” 및 “Jean-loup Gailly와 Mark Adler”

fid IN UTL_FILE.FILE_TYPE,

r IN RAW,

autoflush IN BOOLEAN DEFAULT FALSE

);

● 파라미터

설명파라미터

파일 식별자이다.fid

파일에 쓸 데이터이다.r

쓰기를 한 후 출력 버퍼를 비울지 여부를 결정한다.autoflush

– TRUE: 버퍼를 비운다.

– FALSE: 기본값으로 버퍼를 비우지 않는다.

● 예제

CREATE OR REPLACE DIRECTORY USER_PATH AS '/home/user/path';

DECLARE

outfile UTL_FILE.FILE_TYPE;

buf RAW(8) := HEXTORAW('6161616100616100');

BEGIN

outfile := UTL_FILE.FOPEN('USER_PATH', 'MYFILE.DAT', 'wb');

UTL_FILE.PUT_RAW(outfile, buf);

UTL_FILE.FCLOSE(outfile);

END;

/

12.2.15. PUT_LINE

라인을 파일에 쓰는 프로시저이다. 이때 라인은 플랫폼에 종속적인 EOL 문자로 끝낸다.

PUT_LINE 프로시저의 세부 내용은 다음과 같다.

● 프로토타입

PROCEDURE PUT_LINE

(

file IN FILE_TYPE,

168 Tibero RDBMS tbPSM 참조 안내서

Page 191: [11]-TmaxData - Tibero RDBMS 4 SP1... · 2019-06-26 · 본 제품은 “OpenSSL”, “RSA Data Security, Inc.”, “Apache Foundation” 및 “Jean-loup Gailly와 Mark Adler”

buffer IN VARCHAR2,

autoflush IN BOOLEAN DEFAULT FALSE

);

● 파라미터

설명파라미터

파일 핸들러이다.file

파일에 쓸 라인이다.buffer

쓰기를 한 후 출력 버퍼를 비울지 여부를 결정한다.autoflush

– TRUE: 버퍼를 비운다.

– FALSE: 기본값으로 버퍼를 비우지 않는다.

● 예제

CREATE OR REPLACE DIRECTORY USER_PATH AS '/home/user/path';

DECLARE

outfile UTL_FILE.FILE_TYPE;

out_buf VARCHAR2(1024);

BEGIN

outfile := UTL_FILE.FOPEN('USER_PATH', 'MYFILE.DAT', 'w');

for i in 1..10 loop

UTL_FILE.PUT_LINE(outfile, i || ' put_line is complete', TRUE);

end loop;

UTL_FILE.FCLOSE(outfile);

END;

/

12.3. 함수본 절에서는 UTL_FILE 패키지에서 제공하는 함수를 알파벳 순으로 설명한다.

12.3.1. FGETPOS

파일 내에서 파일 포인터의 상대적인 위치(byte)를 반환하는 함수이다.

FGETPOS 함수의 세부 내용은 다음과 같다.

제12장 UTL_FILE 169

Page 192: [11]-TmaxData - Tibero RDBMS 4 SP1... · 2019-06-26 · 본 제품은 “OpenSSL”, “RSA Data Security, Inc.”, “Apache Foundation” 및 “Jean-loup Gailly와 Mark Adler”

● 프로토타입

FUNCTION FGETPOS

(

fid IN FILE_TYPE

)

return PLS_INTEGER;

● 파라미터

설명파라미터

파일 핸들러이다.fid

● 예제

CREATE OR REPLACE DIRECTORY USER_PATH AS '/home/user/path';

DECLARE

file UTL_FILE.FILE_TYPE;

fpos PLS_INTEGER := 0;

path VARCHAR2(1024);

fname VARCHAR2(1024);

BEGIN

file := UTL_FILE.FOPEN('USER_PATH', 'MYFILE.DAT', 'r');

UTL_FILE.FSEEK(file, 10, 1);

fpos := UTL_FILE.FGETPOS(file);

DBMS_OUTPUT.PUT_LINE('Offest is ' || TO_CHAR(fpos, 'S9999999999'));

UTL_FILE.FCLOSE(file);

END;

/

12.3.2. FOPEN

파일을 여는 함수이다. 최대 50개의 파일을 동시에 열 수 있다.

FOPEN 함수의 세부 내용은 다음과 같다.

● 프로토타입

FUNCTION FOPEN

(

location IN VARCHAR2,

filename IN VARCHAR2,

open_mode IN VARCHAR2,

170 Tibero RDBMS tbPSM 참조 안내서

Page 193: [11]-TmaxData - Tibero RDBMS 4 SP1... · 2019-06-26 · 본 제품은 “OpenSSL”, “RSA Data Security, Inc.”, “Apache Foundation” 및 “Jean-loup Gailly와 Mark Adler”

max_linesize IN BINARY_INTEGER DEFAULT 1024

)

return FILE_TYPE;

● 파라미터

설명파라미터

파일의 경로를 나타내는 디렉터리명이다.location

파일의 이름이다.filename

파일 모드이다.open_mode

– r: 읽기 텍스트 모드이다.

– w: 쓰기 텍스트 모드이다.

– a: 추가 텍스트 모드이다.

– rb: 읽기 바이트 모드이다.

– wb: 쓰기 바이트 모드이다.

– ab: 추가 바이트 모드로, 추가 모드에서 파일이 존재하지 않으면 쓰기 모드

로 파일을 생성한다.

각 라인에 포함되는 문자 수의 최댓값으로 newline 문자를 포함한다.max_linesize

최소 1byte에서 최대 32767byte이다. (기본값: 1024byte)

● 예외 상황

– INVALID_PATH

– INVALID_MODE

– INVALID_OPERATION

– INVALID_MAXLINESIZE

● 예제

CREATE OR REPLACE DIRECTORY USER_PATH AS '/home/user/path';

DECLARE

infile UTL_FILE.FILE_TYPE;

outfile UTL_FILE.FILE_TYPE;

appfile UTL_FILE.FILE_TYPE;

제12장 UTL_FILE 171

Page 194: [11]-TmaxData - Tibero RDBMS 4 SP1... · 2019-06-26 · 본 제품은 “OpenSSL”, “RSA Data Security, Inc.”, “Apache Foundation” 및 “Jean-loup Gailly와 Mark Adler”

max_lsz CONSTANT BINARY_INTEGER := 4096;

buffer VARCHAR2(1024);

data1 VARCHAR2(1024);

data2 VARCHAR2(1024);

path VARCHAR2(1024);

BEGIN

path := 'USER_PATH';

outfile := UTL_FILE.FOPEN(path, 'output_file.txt', 'w', max_lsz);

appfile := UTL_FILE.FOPEN(path, 'append_file.txt', 'w', max_lsz);

data1 := '0123456789';

data2 := 'abcdefghij';

for i in 1..10 loop

UTL_FILE.PUT_LINE(outfile, data1);

UTL_FILE.PUT_LINE(outfile, data2);

end loop;

UTL_FILE.FCLOSE(outfile);

UTL_FILE.FCLOSE(appfile);

infile := UTL_FILE.FOPEN(path, 'output_file.txt', 'r', max_lsz);

UTL_FILE.GET_LINE(infile, buffer);

DBMS_OUTPUT.PUT_LINE(buffer);

UTL_FILE.FCLOSE(infile);

appfile := UTL_FILE.FOPEN( path, 'append_file.txt', 'a', max_lsz );

UTL_FILE.PUT_LINE(appfile, 'appended');

UTL_FILE.FCLOSE(appfile);

END;

/

12.3.3. IS_OPEN

파일 핸들러를 통해 파일이 열려 있는지 검사하는 함수이다. 반환값은 TRUE, FALSE이며, 파일이 열려있

는 경우 TRUE를 반환하고, 그렇지 않은 경우 FALSE를 반환한다.

IS_OPEN 함수의 세부 내용은 다음과 같다.

● 프로토타입

PROCEDURE IS_OPEN

(

file IN FILE_TYPE

)

return BOOLEAN;

172 Tibero RDBMS tbPSM 참조 안내서

Page 195: [11]-TmaxData - Tibero RDBMS 4 SP1... · 2019-06-26 · 본 제품은 “OpenSSL”, “RSA Data Security, Inc.”, “Apache Foundation” 및 “Jean-loup Gailly와 Mark Adler”

● 파라미터

설명파라미터

파일 핸들러이다.file

● 예제

CREATE OR REPLACE DIRECTORY USER_PATH AS '/home/user/path';

DECLARE

openfile UTL_FILE.FILE_TYPE;

open_flag BOOLEAN;

status VARCHAR(10);

fname VARCHAR(10);

BEGIN

fname := 'MYFILE.DAT';

openfile := UTL_FILE.FOPEN('USER_PATH', fname, 'r');

if UTL_FILE.IS_OPEN(openfile) then

status := 'opened';

else

status := 'not opened';

end if;

DBMS_OUTPUT.PUT_LINE(fname || ' file status : ' || status);

UTL_FILE.FCLOSE(openfile);

dbms_output.put_line(fname || 'is closed');

if utl_file.IS_OPEN(openfile) then

status := 'opened';

else

status := 'not opened';

end if;

DBMS_OUTPUT.PUT_LINE(fname || ' file status : ' || status);

END;

/

제12장 UTL_FILE 173

Page 196: [11]-TmaxData - Tibero RDBMS 4 SP1... · 2019-06-26 · 본 제품은 “OpenSSL”, “RSA Data Security, Inc.”, “Apache Foundation” 및 “Jean-loup Gailly와 Mark Adler”
Page 197: [11]-TmaxData - Tibero RDBMS 4 SP1... · 2019-06-26 · 본 제품은 “OpenSSL”, “RSA Data Security, Inc.”, “Apache Foundation” 및 “Jean-loup Gailly와 Mark Adler”

제13장 DBMS_REDEFINITION

본 장에서는 DBMS_REDEFINITION 패키지의 기본 개념과 패키지 내의 프로시저를 사용하는 방법을 설

명한다.

13.1. 개요DBMS_REDEFINITION은 온라인 상태에서 특정 테이블을 재정의하기 위한 프로시저를 제공하는 패키지

이다.

재정의할 대상인 원본 테이블을 지정된 컬럼 대응 정보에 따라 새 테이블로 재정의할 수 있다. 새 테이블

은 재정의 수행 이전에 미리 생성되어 있어야 하며, 재정의가 끝나면 원본 테이블의 구조와 새 테이블의

구조가 서로 바뀐다.

13.2. 프로시저본 절에서는 DBMS_REDEFINITION 패키지에서 제공하는 프로시저를 알파벳 순으로 설명한다.

13.2.1. ABORT_REDEF_TABLE

온라인 테이블 재정의를 취소하는 프로시저이다. 이 프로시저에 원본 테이블과 새 테이블의 이름을 지정

하면, 온라인 테이블을 재정의하기 위해 생성한 내부 객체는 제거되고 재정의가 취소된다. 이때 원본 테이

블과 새 테이블은 취소 시점의 상태로 남는다.

ABORT_REDEF_TABLE 프로시저의 세부 내용은 다음과 같다.

● 프로토타입

PROCEDURE ABORT_REDEF_TABLE

(

uname IN VARCHAR2,

orig_table IN VARCHAR2,

int_table IN VARCHAR2

);

● 파라미터

설명파라미터

원본 테이블과 새 테이블이 속한 스키마의 이름이다.uname

제13장 DBMS_REDEFINITION 175

Page 198: [11]-TmaxData - Tibero RDBMS 4 SP1... · 2019-06-26 · 본 제품은 “OpenSSL”, “RSA Data Security, Inc.”, “Apache Foundation” 및 “Jean-loup Gailly와 Mark Adler”

설명파라미터

원본 테이블의 이름이다.orig_table

새 테이블의 이름이다.int_table

● 예제

BEGIN

DBMS_REDEFINITION.ABORT_REDEF_TABLE('TIBERO', 'ORIG_TABLE', 'INT_TABLE');

END;

/

13.2.2. FINISH_REDEF_TABLE

온라인 테이블 재정의를 종료하는 프로시저이다. 이 프로시저에 원본 테이블과 새 테이블의 이름을 지정

하면, 재정의 중에 변경된 데이터를 서로 교체한 후 원본 테이블과 새 테이블의 이름을 동기화한다. 이로

써 재정의가 종료된다. 단, 시스템이 객체를 바꾸는 등의 작업을 하기 때문에 해당 테이블에서 수행되는

트랜잭션이 없는 경우에만 프로시저가 종료 작업을 수행한다.

FINISH_REDEF_TABLE 프로시저의 세부 내용은 다음과 같다.

● 프로토타입

PROCEDURE FINISH_REDEF_TABLE

(

uname IN VARCHAR2,

orig_table IN VARCHAR2,

int_table IN VARCHAR2

);

● 파라미터

설명파라미터

원본 테이블과 새 테이블이 속한 스키마의 이름이다.uname

원본 테이블의 이름이다.orig_table

새 테이블의 이름이다.int_table

● 예제

BEGIN

DBMS_REDEFINITION.FINISH_REDEF_TABLE('TIBERO', 'ORIG_TABLE', 'INT_TABLE');

END;

/

176 Tibero RDBMS tbPSM 참조 안내서

Page 199: [11]-TmaxData - Tibero RDBMS 4 SP1... · 2019-06-26 · 본 제품은 “OpenSSL”, “RSA Data Security, Inc.”, “Apache Foundation” 및 “Jean-loup Gailly와 Mark Adler”

13.2.3. START_REDEF_TABLE

온라인 테이블 재정의를 시작하는 프로시저이다. 이 프로시저에 원본 테이블과 새 테이블의 이름 그리고

컬럼 대응 정보를 지정하면, 원본 테이블의 데이터를 새 테이블에 옮기기 시작한다.

여기서 새 테이블은 이 프로시저를 실행하기 전에 미리 생성해야 하며, 원본 테이블과 같은 스키마에 존재

해야 한다. 단, 파티셔닝, 인덱스, 제약조건, 트리거와 같은 테이블의 구조와 관련된 객체는 원본 테이블과

같지 않아도 된다.

참고

컬럼 대응 정보란 원본 테이블의 어떤 컬럼을 새 테이블의 어떤 컬럼에 저장할지를 지정하는 것을 말

한다.

START_REDEF_TABLE 프로시저의 세부 내용은 다음과 같다.

● 프로토타입

PROCEDURE START_REDEF_TABLE

(

uname IN VARCHAR2,

orig_table IN VARCHAR2,

int_table IN VARCHAR2,

col_mapping IN VARCHAR2 DEFAULT NULL,

options_flag IN BINARY_INTEGER DEFAULT cons_use_pk

);

● 파라미터

설명파라미터

원본 테이블과 새 테이블이 속한 스키마의 이름이다.uname

원본 테이블의 이름이다.orig_table

새 테이블의 이름이다.int_table

원본 테이블과 새 테이블의 컬럼 대응 정보이다.col_mapping

원본 테이블에서 새 테이블로 데이터를 옮길 때 어떤 정보를 사용할 것인지

를 지정한다.

options_flag

– cons_use_pk: 기본 키의 정보를 사용한다. (기본값)

– cons_use_rowid: ROWID를 사용한다.

● 예제

제13장 DBMS_REDEFINITION 177

Page 200: [11]-TmaxData - Tibero RDBMS 4 SP1... · 2019-06-26 · 본 제품은 “OpenSSL”, “RSA Data Security, Inc.”, “Apache Foundation” 및 “Jean-loup Gailly와 Mark Adler”

create table ORIG_TABLE

(

PRODUCT_ID NUMBER primary key,

PRODUCT_NAME VARCHAR2(20),

PRICE NUMBER,

SOLD_DATE DATE

)

/

insert into ORIG_TABLE values (1, 'Tibero', 10000, SYSDATE)

/

commit

/

create table INT_TABLE

(

ID NUMBER primary key,

NAME VARCHAR2(30),

PRICE NUMBER(8,2),

SOLD_DATE DATE

)

partition by range (SOLD_DATE)

(

partition P_2008 values less than ('2009-01-01'),

partition P_2009 values less than (maxvalue)

)

/

BEGIN

DBMS_REDEFINITION.START_REDEF_TABLE('TIBERO', 'ORIG_TABLE', 'INT_TABLE',

'PRODUCT_ID ID, PRODUCT_NAME NAME, PRICE PRICE, SOLD_DATE SOLD_DATE');

END;

/

13.2.4. SYNC_INTERIM_TABLE

원본 테이블과 새 테이블의 데이터를 동기화하는 프로시저이다. 물론 FINISH_REDEF_TABLE 프로시저

를 실행해도 동기화가 되지만, 온라인 테이블을 재정의하는 중에 해당 테이블에 DML 문장이 많이 수행되

는 경우라면 변경된 데이터를 한꺼번에 반영해야 하므로 처리 속도가 늦어질 수 있다. 또한, 재정의를 종

료하는 동안에도 해당 테이블에 트랜잭션이 없어야 하기 때문에 DML 문장의 수행이 제한된다.

SYNC_INTERIM_TABLE 프로시저는 이러한 경우와는 다르게 재정의 중에도 동기화를 수행할 수 있으며,

재정의를 종료하는 시간을 줄일 수 있다.

SYNC_INTERIM_TABLE 프로시저의 세부 내용은 다음과 같다.

● 프로토타입

178 Tibero RDBMS tbPSM 참조 안내서

Page 201: [11]-TmaxData - Tibero RDBMS 4 SP1... · 2019-06-26 · 본 제품은 “OpenSSL”, “RSA Data Security, Inc.”, “Apache Foundation” 및 “Jean-loup Gailly와 Mark Adler”

PROCEDURE SYNC_INTERIM_TABLE

(

uname IN VARCHAR2,

orig_table IN VARCHAR2,

int_table IN VARCHAR2

);

● 파라미터

설명파라미터

원본 테이블과 새 테이블이 속한 스키마의 이름이다.uname

원본 테이블의 이름이다.orig_table

새 테이블의 이름이다.int_table

● 예제

BEGIN

DBMS_REDEFINITION.SYNC_INTERIM_TABLE('TIBERO', 'ORIG_TABLE', 'INT_TABLE');

END;

/

제13장 DBMS_REDEFINITION 179

Page 202: [11]-TmaxData - Tibero RDBMS 4 SP1... · 2019-06-26 · 본 제품은 “OpenSSL”, “RSA Data Security, Inc.”, “Apache Foundation” 및 “Jean-loup Gailly와 Mark Adler”
Page 203: [11]-TmaxData - Tibero RDBMS 4 SP1... · 2019-06-26 · 본 제품은 “OpenSSL”, “RSA Data Security, Inc.”, “Apache Foundation” 및 “Jean-loup Gailly와 Mark Adler”

제14장 UTL_ENCODE

본 장에서는 UTL_ENCODE 패키지의 기본 개념과 패키지 내의 함수를 사용하는 방법을 설명한다.

14.1. 개요UTL_ENCODE는 호스트 간의 데이터를 전송할 수 있도록 표준 인코딩 기술로 인코딩하는 함수를 제공하

는 패키지이다.

14.2. 함수본 절에서는 UTL_ENCODE 패키지에서 제공하는 함수를 알파벳 순으로 설명한다.

14.2.1. BASE64_DECODE

BASE64 형태로 인코딩된 RAW 타입의 문자열을 원래의 이진 값으로 변환하는 함수이다.

BASE64_DECODE 함수의 세부 내용은 다음과 같다.

● 프로토타입

FUNCTION BASE64_DECODE

(

r IN RAW

)

RETURN RAW;

● 파라미터

설명파라미터

원본 테이블과 새 테이블이 속한 스키마의 이름이다.r

● 예제

DECLARE

org raw(100);

enc raw(100);

BEGIN

org := 'aaabae64ecde';

제14장 UTL_ENCODE 181

Page 204: [11]-TmaxData - Tibero RDBMS 4 SP1... · 2019-06-26 · 본 제품은 “OpenSSL”, “RSA Data Security, Inc.”, “Apache Foundation” 및 “Jean-loup Gailly와 Mark Adler”

enc := UTL_ENCODE.BASE64_ENCODE(org);

...

org := UTL_ENCODE.BASE64_DECODE(enc);

...

END;

/

14.2.2. BASE64_ENCODE

RAW 타입의 이진 값을 BASE64 형태로 인코딩된 RAW 타입의 문자열로 변환하는 함수이다.

BASE64_ENCODE 함수의 세부 내용은 다음과 같다.

● 프로토타입

FUNCTION BASE64_ENCODE

(

r IN RAW

)

RETURN RAW;

● 파라미터

설명파라미터

인코딩할 RAW 타입의 문자열이다.r

● 예제

DECLARE

org raw(100);

enc raw(100);

BEGIN

org := 'aaabae64ecde';

enc := UTL_ENCODE.BASE64_ENCODE(org);

...

END;

/

182 Tibero RDBMS tbPSM 참조 안내서

Page 205: [11]-TmaxData - Tibero RDBMS 4 SP1... · 2019-06-26 · 본 제품은 “OpenSSL”, “RSA Data Security, Inc.”, “Apache Foundation” 및 “Jean-loup Gailly와 Mark Adler”

14.2.3. TEXT_ENCODE

문자 집합을 갖는 문자열을 인코딩하는 함수이다. 변경할 문자 집합에 따라 텍스트를 변환하고 인코딩한

다.

TEXT_ENCODE 함수의 세부 내용은 다음과 같다.

● 프로토타입

FUNCTION TEXT_ENCODE

(

buf IN VARCHAR2,

encode_charset IN VARCHAR2 DEFAULT NULL,

encoding IN PLS_INTEGER DEFAULT NULL

)

RETURN VARCHAR2;

● 파라미터

설명파라미터

인코딩할 문자열이다.buf

변경할 문자 집합을 지정한다. 단, 문자 집합을 변경하는 기능은 다음에 구현

할 예정이므로, 기본값인 NULL로 이 파라미터를 지정한다.

encode_charset

인코딩할 타입을 지정한다.encoding

– 기본값: NULL이며, Quoted-printable 방식으로 인코딩한다.

– 1:BASE64 방식으로 인코딩한다.

– 2:Quoted-printable 방식으로 인코딩한다.

● 예제

DECLARE

src VARCHAR2(32767);

tar VARCHAR2(32767);

BEGIN

src := 'tibero';

tar := UTL_ENCODE.TEXT_ENCODE(src, NULL, 1);

...

END;

/

제14장 UTL_ENCODE 183

Page 206: [11]-TmaxData - Tibero RDBMS 4 SP1... · 2019-06-26 · 본 제품은 “OpenSSL”, “RSA Data Security, Inc.”, “Apache Foundation” 및 “Jean-loup Gailly와 Mark Adler”
Page 207: [11]-TmaxData - Tibero RDBMS 4 SP1... · 2019-06-26 · 본 제품은 “OpenSSL”, “RSA Data Security, Inc.”, “Apache Foundation” 및 “Jean-loup Gailly와 Mark Adler”

제15장 UTL_URL

본 장에서는 UTL_URL 패키지의 기본 개념과 패키지 내의 함수를 사용하는 방법을 설명한다.

15.1. 개요UTL_URL는 URL 주소를 ESCAPE 형태로 변환하기 위한 함수를 제공하는 패키지이다. ESCAPE 형태는

Legal Characters와 Reserved characters를 제외한 문자를 %xx{ASCII의 16진수 표현}으로 변경하는 것

을 말한다.

정규 표현식문자 구분

[0-9] | [a-zA-Z] | - | _ | . | ! | ~ |* | ` | ( | )Legal Characters

; | / | ? | ; | @ | & | = | + | $ | ,Reserved characters

15.2. 함수본 절에서는 UTL_URL 패키지에서 제공하는 함수를 알파벳 순으로 설명한다.

15.2.1. ESCAPE

URL 주소를 ESCAPE 형태로 변환하는 함수이다.

ESCAPE 함수의 세부 내용은 다음과 같다.

● 프로토타입

FUNCTION ESCAPE

(

url IN VARCHAR2,

escape_reserved_chars IN BOOLEAN DEFAULT FALSE,

url_charset IN VARCHAR2 DEFAULT NULL

)

RETURN VARCHAR2;

● 파라미터

설명파라미터

ESCAPE 형태로 변경할 URL 이름이다.url

제15장 UTL_URL 185

Page 208: [11]-TmaxData - Tibero RDBMS 4 SP1... · 2019-06-26 · 본 제품은 “OpenSSL”, “RSA Data Security, Inc.”, “Apache Foundation” 및 “Jean-loup Gailly와 Mark Adler”

설명파라미터

Reserved characters를 ESCAPE 형태로 변환할지의 여부를 결정한다.escape_reserved_chars

– TRUE: 변환한다.

– FALSE: 변환하지 않는다. (기본값)

변경할 URL 주소의 문자 집합이다.url_charset

문자 집합을 변경하는 기능은 다음에 구현할 예정이므로, 기본값인 NULL로

이 파라미터를 지정한다.

● 예제

BEGIN

dbms_output.put_line( UTL_URL.ESCAPE('http://www.w3.org/blah blah.html') );

END;

/

15.2.2. UNESCAPE

ESCAPE 형태(%xx)를 포함하는 URL 주소를 ESCAPE 형태가 아닌 일반 문자열로 변환하는 함수이다.

UNESCAPE 함수의 세부 내용은 다음과 같다.

● 프로토타입

FUNCTION UNESCAPE

(

url IN VARCHAR2,

url_charset IN VARCHAR2 DEFAULT NULL

)

RETURN VARCHAR2;

● 파라미터

설명파라미터

ESCAPE 형태의 URL 주소의 문자열이다.url

변경할 URL 주소의 문자 집합이다.url_charset

문자 집합을 변경하는 기능은 다음에 구현할 예정이므로, 기본값인 NULL로

이 파라미터를 지정한다.

186 Tibero RDBMS tbPSM 참조 안내서

Page 209: [11]-TmaxData - Tibero RDBMS 4 SP1... · 2019-06-26 · 본 제품은 “OpenSSL”, “RSA Data Security, Inc.”, “Apache Foundation” 및 “Jean-loup Gailly와 Mark Adler”

● 예외 상황

설명예외 상황

잘못된 ESCAPE 문자열을 포함하는 경우이다.URL_BAD_URL

● 예제

DECLARE

ourl VARCHAR2(32767);

eurl VARCHAR2(32767);

BEGIN

eurl := UTL_URL.ESCAPE('http://www.w3.org/Protocols/');

ourl := UTL_URL.UNESCAPE(eurl);

END;

/

제15장 UTL_URL 187

Page 210: [11]-TmaxData - Tibero RDBMS 4 SP1... · 2019-06-26 · 본 제품은 “OpenSSL”, “RSA Data Security, Inc.”, “Apache Foundation” 및 “Jean-loup Gailly와 Mark Adler”
Page 211: [11]-TmaxData - Tibero RDBMS 4 SP1... · 2019-06-26 · 본 제품은 “OpenSSL”, “RSA Data Security, Inc.”, “Apache Foundation” 및 “Jean-loup Gailly와 Mark Adler”

제16장 UTL_HTTP

본 장에서는 UTL_HTTP 패키지의 기본 개념과 패키지 내의 함수를 사용하는 방법을 설명한다.

16.1. 개요UTL_HTTP는 웹 표준(RFC2616)에 따라 웹 페이지의 요청을 처리하기 위한 함수를 제공하는 패키지이다.

16.2. 함수본 절에서는 UTL_HTTP 패키지에서 제공하는 함수를 알파벳 순으로 설명한다.

16.2.1. REQUEST

URL을 통해 웹 서버로 요청을 보내 최대 2000byte의 데이터를 반환하는 함수이다. 웹 서버로 요청을 보

낼 때에는 HTTP/1.1 표준의 GET 메소드를 이용한다.

REQUEST 함수의 세부 내용은 다음과 같다.

● 프로토타입

FUNCTION REQUEST

(

url IN VARCHAR2,

proxy IN VARCHAR2 DEFAULT NULL,

wallet_path IN VARCHAR2 DEFAULT NULL,

wallet_password IN VARCHAR2 DEFAULT NULL

)

RETURN VARCHAR2;

● 파라미터

설명파라미터

URL은 'scheme://[user[password]@]host[:port]/[...]'와 같은 형태로

구성된다.

url

– scheme은 http/https가 있으며, https는 다음에 구현할 예정이다.

– user와 password는 proxy를 위해 존재하며, 다음에 구현할 예정이다.

제16장 UTL_HTTP 189

Page 212: [11]-TmaxData - Tibero RDBMS 4 SP1... · 2019-06-26 · 본 제품은 “OpenSSL”, “RSA Data Security, Inc.”, “Apache Foundation” 및 “Jean-loup Gailly와 Mark Adler”

설명파라미터

프록시 서버의 이름이다.proxy

(기본값: NULL, 다음에 구현할 예정이다.)

클라이언트 쪽에서 HTTPS를 사용하기 위해 필요한 인증서를 저장하는

경로이다.

wallet_path

(기본값: NULL, 다음에 구현할 예정이다.)

인증서를 보기 위한 패스워드이다.wallet_password

(기본값: NULL, 다음에 구현할 예정이다.)

● 예외 사항

설명예외 사항

잘못된 요청으로 웹 서버와 통신할 수 없는 경우에 발생한다.PKG_REQUEST_FAILED

URL이 올바른지 혹은 웹 서버가 정상적으로 동작하는지 확인한다.

20초 이상 웹 서버로부터 응답이 없을 때 타임아웃이 발생한 경우이다.PKG_TRANSFER_TIMEOUT

● 예제

DECLARE

resp VARCHAR2(32767);

BEGIN

resp := UTL_HTTP.REQUEST('http://www.w3.org/Protocols/');

END;

/

190 Tibero RDBMS tbPSM 참조 안내서

Page 213: [11]-TmaxData - Tibero RDBMS 4 SP1... · 2019-06-26 · 본 제품은 “OpenSSL”, “RSA Data Security, Inc.”, “Apache Foundation” 및 “Jean-loup Gailly와 Mark Adler”

제17장 DBMS_APM

본 장에서는 DBMS_APM 패키지의 기본 개념과 패키지 내의 프로시저를 사용하는 방법을 설명한다. 보다

자세한 설명은 Tibero RDBMS 관리자 안내서의 "Automatic Performance Monitoring"을 참조하기 바란다.

17.1. 개요DBMS_APM 패키지는 Automatic Performance Monitoring (이하 APM) 기능을 사용하는데 필요로 하는

기능을 제공하기 위한 패키지이다.

17.2. 프로시저본 절에서는 DBMS_APM 패키지에서 제공하는 프로시저를 설명한다.

다음은 DBMS_APM 패키지에서 제공하는 프로시저를 요약한 목록이다.

설명프로시저명

APM을 위한 스냅샷을 바로 남긴다.CREATE_SNAPSHOT

특정 구간의 성능 분석 리포트를 생성한다.REPORT_TEXT

17.2.1. CREATE_SNAPSHOT

APM을 위한 스냅샷을 바로 남긴다.

CREATE_SNAPSHOT 프로시저의 세부 내용은 다음과 같다.

● 프로토타입

PROCEDURE CREATE_SNAPSHOT();

● 예제

exec DBMS_APM.CREATE_SNAPSHOT();

/

제17장 DBMS_APM 191

Page 214: [11]-TmaxData - Tibero RDBMS 4 SP1... · 2019-06-26 · 본 제품은 “OpenSSL”, “RSA Data Security, Inc.”, “Apache Foundation” 및 “Jean-loup Gailly와 Mark Adler”

17.2.2. REPORT_TEXT

특정 구간의 성능 분석 리포트를 생성한다.

REPORT_TEXT 프로시저의 세부 내용은 다음과 같다.

● 프로토타입

PROCEDURE REPORT_TEXT

(

begin_time IN DATE

end_time IN DATE

);

● 파라미터

설명파라미터

성능 분석 리포트 대상 구간 중 시작 시간이다.begin_time

성능 분석 리포트 대상 구간 중 종료 시간이다.end_time

● 예제

exec DBMS_APM.REPORT_TEXT('2011/07/01 12:00:00', '2011/07/02 11:59:59');

/

주의

단, 위의 예제에서 두 개의 인자 모두 DATE 타입이므로, 사용 중인 DATE 포맷에 맞게 입력해야 함

에 주의한다.

192 Tibero RDBMS tbPSM 참조 안내서

Page 215: [11]-TmaxData - Tibero RDBMS 4 SP1... · 2019-06-26 · 본 제품은 “OpenSSL”, “RSA Data Security, Inc.”, “Apache Foundation” 및 “Jean-loup Gailly와 Mark Adler”

제18장 DBMS_MVIEW

본 장에서는 DBMS_MVIEW 패키지의 기본 개념과 패키지 내의 프로시저를 사용하는 방법을 설명한다.

18.1. 개요DBMS_MVIEW는 실체화 뷰와 관련된 정보를 제공하고 이 정보를 최근의 것으로 변경할 수 있는 REFRESH

기능을 사용하기 위한 프로시저를 제공하는 패키지이다.

18.2. 프로시저본 절에서는 DBMS_MVIEW 패키지에서 제공하는 프로시저를 알파벳 순으로 설명한다.

18.2.1. EXPLAIN_REWRITE

SQL의 질의 다시 쓰기(Query Rewrite) 정보를 설명하는 프로시저이다. 이 프로시저는 왜 SQL 질의가 재

작성에 실패했는지 혹은 어떤 실체화 뷰를 사용해서 재작성 되었는지, 재작성된 SQL 질의는 무엇인지를

설명해준다.

이러한 정보를 밑바탕으로 사용자는 SQL 질의가 재작성될 수 있도록 처리할 수 있다. query 파라미터로

전달받은 SQL 질의문은 실제로 수행되지 않으며, 결과는 현재 스키마의 REWRITE_TABLE 테이블에 저

장된다. 단, 이 프로시저를 호출하기 전에 $TB_HOME/scripts/rewrite_table.sql 스크립트를 실행하여

REWRITE_TABLE 테이블을 미리 생성해야 한다.

EXPLAIN_REWRITE 프로시저의 세부 내용은 다음과 같다.

● 프로토타입

DBMS_MVIEW.EXPLAIN_REWRITE

(

query IN VARCHAR2,

statement_id IN VARCHAR2

);

● 파라미터

설명파라미터

SQL 질의문이다.query

SQL 질의문의 결과를 구별하기 위해 사용자가 정한 고유 식별자이다.statement_id

제18장 DBMS_MVIEW 193

Page 216: [11]-TmaxData - Tibero RDBMS 4 SP1... · 2019-06-26 · 본 제품은 “OpenSSL”, “RSA Data Security, Inc.”, “Apache Foundation” 및 “Jean-loup Gailly와 Mark Adler”

설명파라미터

이 식별자는 REWRITE_TABLE 테이블의 STATEMENT_ID 컬럼에 저장된다.

● 예제

SQL> create table base as (select mod(level, 100) a, level*10 b from dual

connect by level<=100);

SQL> create materialized view mv enable query rewrite as

select sum(a+b) s, count(b+a) c from base;

SQL> @rewrite_table.sql

SQL> exec dbms_mview.explain_rewrite('select avg(a+b) from base')

SQL> select MV_OWNER, MV_NAME, QUERY, REWRITTEN_TXT, MESSAGE

from rewrite_table;

MV_OWNER MV_NAME QUERY REWRITTEN_TXT MESSAGE

-------- ------- --------------- ------------------------ ------------------------

SYS MV SELECT AVG(A+B) SELECT ("MV"."S" 010: query was rewritten

FROM BASE / "MV"."C") "AVG(A+B)" with materialized view

FROM "SYS"."MV"

select avg(a+b) SELECT ("MV"."S" 000: whole query was

from base / "MV"."C") "AVG(A+B)" written

FROM "SYS"."MV"

18.2.2. REFRESH

실체화 뷰를 리프레시하는 프로시저이다.

REFRESH 프로시저의 세부 내용은 다음과 같다.

● 프로토타입

DBMS_MVIEW.REFRESH

(

mview IN VARCHAR2,

refresh_method IN VARCHAR2

);

● 파라미터

설명파라미터

리프레시할 실체화 뷰이다.mview

리프레시에 사용될 방법이다.refresh_method

194 Tibero RDBMS tbPSM 참조 안내서

Page 217: [11]-TmaxData - Tibero RDBMS 4 SP1... · 2019-06-26 · 본 제품은 “OpenSSL”, “RSA Data Security, Inc.”, “Apache Foundation” 및 “Jean-loup Gailly와 Mark Adler”

설명파라미터

– C 또는 c: 완전 리프레시를 사용한다.

– F 또는 f: 빠른 리프레시를 사용한다.

– ?: 디폴트 값으로, 빠른 리프레시가 가능한 경우 빠른 리프레시를 사용하고,

그렇지 않으면 완전 리프레시를 사용한다.

● 예제

call dbms_mview.refresh('myuser.mv_t','f');

call dbms_mview.refresh('mv_t','c');

제18장 DBMS_MVIEW 195

Page 218: [11]-TmaxData - Tibero RDBMS 4 SP1... · 2019-06-26 · 본 제품은 “OpenSSL”, “RSA Data Security, Inc.”, “Apache Foundation” 및 “Jean-loup Gailly와 Mark Adler”
Page 219: [11]-TmaxData - Tibero RDBMS 4 SP1... · 2019-06-26 · 본 제품은 “OpenSSL”, “RSA Data Security, Inc.”, “Apache Foundation” 및 “Jean-loup Gailly와 Mark Adler”

제19장 DBMS_SPACE

본 장에서는 DBMS_SPACE 패키지의 기본 개념과 패키지 내의 프로시저를 사용하는 방법을 설명한다.

19.1. 개요DBMS_SPACE는 세그먼트의 크기와 공간 사용에 대한 정보를 제공하는 패키지이다.

19.2. 프로시저본 절에서는 DBMS_SPACE 패키지에서 제공하는 프로시저를 알파벳 순으로 설명한다.

19.2.1. SPACE_USAGE

세그먼트의 High Water Mark(이하 HWM) 아래의 공간(즉 현재 사용하는 공간)에 대한 사용 정보를 제공

한다. 단, 비트맵 블록(bitmap block), 세그먼트 헤더(segment header), 익스텐트 맵 블록(extent map block)

의 정보는 포함되지 않는다.

참고

High Water Mark란 테이블, 인덱스, 클러스터가 생성되고 한 번도 사용되지 않은 공간을 의미한다.

SPACE_USAGE 프로시저의 세부 내용은 다음과 같다.

● 프로토타입

DBMS_SPACE.SPACE_USAGE

(

segment_owner IN VARCHAR2,

segment_name IN VARCHAR2,

segment_type IN VARCHAR2,

unformatted_blocks OUT NUMBER,

unformatted_bytes OUT NUMBER,

fs1_blocks OUT NUMBER,

fs1_bytes OUT NUMBER,

fs2_blocks OUT NUMBER,

fs2_bytes OUT NUMBER,

fs3_blocks OUT NUMBER,

fs3_bytes OUT NUMBER,

제19장 DBMS_SPACE 197

Page 220: [11]-TmaxData - Tibero RDBMS 4 SP1... · 2019-06-26 · 본 제품은 “OpenSSL”, “RSA Data Security, Inc.”, “Apache Foundation” 및 “Jean-loup Gailly와 Mark Adler”

fs4_blocks OUT NUMBER,

fs4_bytes OUT NUMBER,

full_blocks OUT NUMBER,

full_bytes OUT NUMBER,

partition_name IN VARCHAR2 DEFAULT NULL

);

● 파라미터

설명파라미터

스키마 객체를 소유한 사용자의 이름이다.segment_owner

스키마 객체의 이름이다.segment_name

스키마 객체의 종류로, 다음 중 하나의 값을 갖는다.segment_type

– TABLE

– TABLE PARTITION

– TABLE SUBPATITION

– INDEX

– INDEX PARTITION

– INDEX SUBPATITION

– CLUSTER

– LOB

– LOB PARTITION

– LOB SUBPATITION

세그먼트의 HWM 아래에서 포맷되지 않은 블록의 개수이다.unformatted_blocks

세그먼트의 HWM 아래에서 포맷되지 않은 블록의 양(in bytes)이다.unformatted_bytes

0%와 25% 사이에 free space를 갖는 블록의 개수이다.fs1_blocks

0%와 25% 사이에 free space를 갖는 블록의 양(in bytes)이다.fs1_bytes

25%와 50% 사이에 free space를 갖는 블록의 개수이다.fs2_blocks

25%와 50% 사이에 free space를 갖는 블록의 양(in bytes)이다.fs2_bytes

50%와 75% 사이에 free space를 갖는 블록의 개수이다.fs3_blocks

50%와 75% 사이에 free space를 갖는 블록의 양(in bytes)이다.fs3_bytes

75%와 100% 사이에 free space를 갖는 블록의 개수이다.fs4_blocks

75%와 100% 사이에 free space를 갖는 블록의 양(in bytes)이다.fs4_bytes

full로 marking된 블록의 개수이다.full_blocks

198 Tibero RDBMS tbPSM 참조 안내서

Page 221: [11]-TmaxData - Tibero RDBMS 4 SP1... · 2019-06-26 · 본 제품은 “OpenSSL”, “RSA Data Security, Inc.”, “Apache Foundation” 및 “Jean-loup Gailly와 Mark Adler”

설명파라미터

full로 marking된 블록의 양(in bytes)이다.full_bytes

다음의 경우에 따라 다르게 정의된다.partition_name

– 파티션이면 파티션의 이름이다.

– 파티션이 compose 방식이라면 서브파티션(subpartition)의 이름이다.

● 예제

set serveroutput on;

DECLARE

unformatted_blocks NUMBER;

unformatted_bytes NUMBER;

fs1_blocks NUMBER;

fs1_bytes NUMBER;

fs2_blocks NUMBER;

fs2_bytes NUMBER;

fs3_blocks NUMBER;

fs3_bytes NUMBER;

fs4_blocks NUMBER;

fs4_bytes NUMBER;

full_blocks NUMBER;

full_bytes NUMBER;

BEGIN

DBMS_SPACE.SPACE_USAGE('SYS', 'EMP', 'TABLE'

,unformatted_blocks

,unformatted_bytes

,fs1_blocks

,fs1_bytes

,fs2_blocks

,fs2_bytes

,fs3_blocks

,fs3_bytes

,fs4_blocks

,fs4_bytes

,full_blocks

,full_bytes);

DBMS_OUTPUT.PUT_LINE('Space utilization (TABLES) ');

DBMS_OUTPUT.PUT_LINE('unformatted_blocks: '|| TO_CHAR(unformatted_blocks) );

DBMS_OUTPUT.PUT_LINE('unformatted_bytes: '|| TO_CHAR(unformatted_bytes) );

DBMS_OUTPUT.PUT_LINE('fs1_blocks: '|| TO_CHAR(fs1_blocks) );

DBMS_OUTPUT.PUT_LINE('fs1_bytes: '|| TO_CHAR(fs1_bytes) );

DBMS_OUTPUT.PUT_LINE('fs2_blocks: '|| TO_CHAR(fs2_blocks) );

제19장 DBMS_SPACE 199

Page 222: [11]-TmaxData - Tibero RDBMS 4 SP1... · 2019-06-26 · 본 제품은 “OpenSSL”, “RSA Data Security, Inc.”, “Apache Foundation” 및 “Jean-loup Gailly와 Mark Adler”

DBMS_OUTPUT.PUT_LINE('fs2_bytes: '|| TO_CHAR(fs2_bytes) );

DBMS_OUTPUT.PUT_LINE('fs3_blocks: '|| TO_CHAR(fs3_blocks) );

DBMS_OUTPUT.PUT_LINE('fs3_bytes: '|| TO_CHAR(fs3_bytes) );

DBMS_OUTPUT.PUT_LINE('fs4_blocks: '|| TO_CHAR(fs4_blocks) );

DBMS_OUTPUT.PUT_LINE('fs4_bytes: '|| TO_CHAR(fs4_bytes) );

DBMS_OUTPUT.PUT_LINE('full_blocks: '|| TO_CHAR(full_blocks) );

DBMS_OUTPUT.PUT_LINE('full_bytes: '|| TO_CHAR(full_bytes) );

END;

19.2.2. UNUSED_SPACE

세그먼트의 HWM 위의 공간(즉 현재 사용하지 않는 공간)에 대한 사용 정보를 제공한다.

UNUSED_SPACE 프로시저의 세부 내용은 다음과 같다.

● 프로토타입

DBMS_SPACE.UNUSED_SPACE

(

segment_owner IN VARCHAR2,

segment_name IN VARCHAR2,

segment_type IN VARCHAR2,

total_blocks OUT NUMBER,

total_bytes OUT NUMBER,

unused_blocks OUT NUMBER,

unused_bytes OUT NUMBER,

last_used_extent_file_id OUT NUMBER,

last_used_extent_block_id OUT NUMBER,

last_used_block OUT NUMBER,

partition_name IN VARCHAR2 DEFAULT NULL

);

● 파라미터

설명파라미터

스키마 객체를 소유한 사용자의 이름이다.segment_owner

스키마 객체의 이름이다.segment_name

스키마 객체의 종류로, 다음 중 하나의 값을 갖는다.segment_type

– TABLE

– TABLE PARTITION

– TABLE SUBPATITION

200 Tibero RDBMS tbPSM 참조 안내서

Page 223: [11]-TmaxData - Tibero RDBMS 4 SP1... · 2019-06-26 · 본 제품은 “OpenSSL”, “RSA Data Security, Inc.”, “Apache Foundation” 및 “Jean-loup Gailly와 Mark Adler”

설명파라미터

– INDEX

– INDEX PARTITION

– INDEX SUBPATITION

– CLUSTER

– LOB

– LOB PARTITION

– LOB SUBPATITION

세그먼트의 전체 블록의 개수이다.total_blocks

세그먼트의 전체 블록의 양(in bytes)이다.total_bytes

세그먼트의 HWM 위의 블록의 개수이다.unused_blocks

세그먼트의 HWM 위의 블록의 양(in bytes)이다.unused_bytes

맨 마지막에 INSERT를 위해 사용된 익스텐트가 속한 파일 ID이다.last_used_extent_file_id

맨 마지막에 INSERT를 위해 사용된 익스텐트가 속한 시작 블록(starting block)

의 ID이다. 파일 ID와 같이 합하면 DBA가 된다.

last_used_ex

tent_block_id

맨 마지막에 INSERT를 위해 사용된 블록의 숫자(익스텐트 내에서의 오프셋)

이다.

last_used_extent_block

다음의 경우에 따라 다르게 정의된다.partition_name

– 파티션이면 파티션의 이름이다.

– 파티션이 compose 방식이라면 서브파티션(subpartition)의 이름이다.

● 예제

set serveroutput on;

DECLARE

total_blocks NUMBER;

total_bytes NUMBER;

unused_blocks NUMBER;

unused_bytes NUMBER;

last_used_extent_file_id NUMBER;

last_used_extent_block_id NUMBER;

last_used_block NUMBER;

BEGIN

DBMS_SPACE.UNUSED_SPACE('SYS', 'EMP', 'TABLE'

제19장 DBMS_SPACE 201

Page 224: [11]-TmaxData - Tibero RDBMS 4 SP1... · 2019-06-26 · 본 제품은 “OpenSSL”, “RSA Data Security, Inc.”, “Apache Foundation” 및 “Jean-loup Gailly와 Mark Adler”

,total_blocks

,total_bytes

,unused_blocks

,unused_bytes

,last_used_extent_file_id

,last_used_extent_block_id

,last_used_block);

DBMS_OUTPUT.PUT_LINE('Unused space utilization (TABLES) ');

DBMS_OUTPUT.PUT_LINE('total_blocks: '|| TO_CHAR(total_blocks) );

DBMS_OUTPUT.PUT_LINE('total_bytes: '|| TO_CHAR(total_bytes) );

DBMS_OUTPUT.PUT_LINE('unused_blocks: '|| TO_CHAR(unused_blocks) );

DBMS_OUTPUT.PUT_LINE('unused_bytes: '|| TO_CHAR(unused_bytes) );

DBMS_OUTPUT.PUT_LINE('last_used_extent_file_id: '||

TO_CHAR(last_used_extent_file_id) );

DBMS_OUTPUT.PUT_LINE('last_used_extent_block_id: '||

TO_CHAR(last_used_extent_block_id) );

DBMS_OUTPUT.PUT_LINE('last_used_block: '|| TO_CHAR(last_used_block) );

END;

202 Tibero RDBMS tbPSM 참조 안내서

Page 225: [11]-TmaxData - Tibero RDBMS 4 SP1... · 2019-06-26 · 본 제품은 “OpenSSL”, “RSA Data Security, Inc.”, “Apache Foundation” 및 “Jean-loup Gailly와 Mark Adler”

제20장 DBMS_SPACE_ADMIN

본 장에서는 DBMS_SPACE_ADMIN 패키지의 기본 개념과 패키지 내의 프로시저를 사용하는 방법을 설

명한다.

20.1. 개요DBMS_SPACE_ADMIN은 세그먼트를 관리하는 기능을 제공하는 패키지이다.

20.2. 프로시저본 절에서는 DBMS_SPACE_ADMIN 패키지에서 제공하는 프로시저를 알파벳 순으로 설명한다.

다음은 DBMS_SPACE_ADMIN 패키지에 정의할 수 있는 상수이다.

● SEGMENT_DUMP_EXTENT_MAP

– 익스텐트 맵의 정보를 같이 덤프(dump)한다.

– 타입: POSITIVE

– 값: 5

● SEGMENTS_DUMP_BITMAP_SUMMARY

– 비트맵 정보만 덤프한다.

– 타입: POSITIVE

– 값: 27

20.2.1. SEGMENT_DUMP

세그먼트 헤더와 비트맵 블록의 정보를 덤프한다. 덤프 정보는 USER_DUMP_DEST 파라미터에 정의된 경

로에 저장되며, ALTER SYSTEM DUMP DEST 문으로 확인할 수 있다.

SEGMENT_DUMP 프로시저의 세부 내용은 다음과 같다.

제20장 DBMS_SPACE_ADMIN 203

Page 226: [11]-TmaxData - Tibero RDBMS 4 SP1... · 2019-06-26 · 본 제품은 “OpenSSL”, “RSA Data Security, Inc.”, “Apache Foundation” 및 “Jean-loup Gailly와 Mark Adler”

● 프로토타입

DBMS_SPACE_ADMIN.SEGMENT_DUMP

(

tablespace_name IN VARCHAR2,

header_relative_file IN POSITIVE,

header_block IN POSITIVE,

dump_option IN POSITIVE DEFAULT SEGMENT_DUMP_EXTENT_MAP

);

● 파라미터

설명파라미터

세그먼트가 있는 테이블스페이스의 이름이다.tablespace_name

세그먼트 헤더가 속한 파일의 Relative file number이다.header_relative_file

세그먼트 헤더 블록(segment header block)의 블록 숫자(block number)이다.header_block

다음 중 하나의 옵션을 갖는다.dump_option

– SEGMENT_DUMP_EXTENT_MAP

– SEGMENT_DUMP_BITMAP_SUMMARY

● 예제

BEGIN

DBMS_SPACE_ADMIN.SEGMENT_DUMP('TS', 3, 9,

DBMS_SPACE_ADMIN.SEGMENT_DUMP_EXTENT_MAP);

END;

204 Tibero RDBMS tbPSM 참조 안내서

Page 227: [11]-TmaxData - Tibero RDBMS 4 SP1... · 2019-06-26 · 본 제품은 “OpenSSL”, “RSA Data Security, Inc.”, “Apache Foundation” 및 “Jean-loup Gailly와 Mark Adler”

제21장 DBMS_CRYPTO

본 장에서는 DBMS_CRYPTO 패키지의 기본 개념과 패키지 내의 프로시저와 함수를 사용하는 방법을 설

명한다.

21.1. 개요DBMS_CRYPTO은 데이터 암복호화 및 인증 등에 쓰이는 해시 알고리즘을 제공하는 패키지이다. 이 패

키지의 암복호화 알고리즘들은 모두 키를 사용하는데, 이와 같이 키를 사용하는 암호화 알고리즘에서는

키를 안전하게 관리하는 것이 무엇보다 중요하다.

암호화 알고리즘에서 키를 관리하는 방법은 DBMS_OBFUSCATION_TOOLKIT 챕터를 참고하기 바란다.

해시 알고리즘은 임의의 길이의 데이터를 고정길이의 해시값으로 변환한다.

21.2. 암호화/복호화 알고리즘 및 체인, 패딩DBMS_CRYPTO은 데이터의 암호화 및 복호화를 위해 DES(Data Encryption Standard), 3DES(Triple

DES), AES(Advanced Encryption Standard) 등의 더욱 다양한 알고리즘 및 블록 패딩 방식을 지원하고 있

다. DBMS_OBFUSCATION_TOOLKIT보다 많은 종류의 알고리즘을 사용하므로, 이 패키지를 사용할 것

을 권장한다.

각 알고리즘, 체인, 패딩 방식은 아래와 같다.

● 알고리즘

설명알고리즘

64 bit의 블록 단위로 나누어 각각을 56 bit의 키를 사용하는 알고리즘이

다. 그 동안 널리 사용되어 왔으나 최근에는 보안성이 보장되지 않아 점

차 사용 빈도가 줄어들고 있다.

DES

대칭 키를 사용하는 알고리즘이다.

하나의 데이터에 DES 알고리즘을 두 번 내지 세 번 반복하여 적용하는

알고리즘이다. 각각 112(56 * 2) bit와 168(56 * 3) bit 키를 사용한다. DES

알고리즘과 마찬가지로 대칭 키를 사용하는 알고리즘이다.

3DES

다른 대칭 키를 사용하는 알고리즘에 비해 암호화 및 복호화를 하는 시

간이 많이 필요하다는 단점이 있다.

제21장 DBMS_CRYPTO 205

Page 228: [11]-TmaxData - Tibero RDBMS 4 SP1... · 2019-06-26 · 본 제품은 “OpenSSL”, “RSA Data Security, Inc.”, “Apache Foundation” 및 “Jean-loup Gailly와 Mark Adler”

설명알고리즘

128 bit의 블록 단위로 나누어 각각을 128, 192, 혹은 256 bit의 키를 사

용하는 알고리즘이다. DES 방식보다 강력한 알고리즘으로 설계되었으

며, 사실상 암호화 표준으로 자리 잡을 것으로 보인다.

AES

● 체인(chaining) 방식

설명체인 방식

각 원본 데이터 블록들이 각각 별개로 암호화된다.ECB(Electronic Codebook)

현재 블록이 바로 앞에 암호화된 블록의 데이터와 XOR 연산을 거친 후

암호화된다.

CBC(Cipher Block Chaining)

ECB 방식에서처럼 동일한 원본이 있을 경우 동일한 암호문이 생성되는

위험을 방지하기 위함이다.

CBC와 유사하지만, 비트 단위로 암호화하면서 쉬프트시키는 방식으로,

스트림 암호화 방식에 가깝다.

CFB(Cipher-Feedback)

그러므로 블록 크기보다 작은 단위의 데이터의 암호화도 가능해진다.

블록 암호가 동기화된 스트림 암호처럼 동작하게 한다.OFB(Output-Feedback)

CFB와 유사하지만, 다음 블록을 위한 키배열 조합에 있어서 현재 블록

의 암호문이 영향을 끼치지 않으므로, 현재 블록 암호화에서 오류가 발

생해도 다음 블록에 영향을 끼치지 않는 장점이 있다.

● 패딩(padding) 방식

설명패딩 방식

PKCS #5 (Password-Based Cryptography Standard) 표준에 따르는 패

딩 방식이다.

PKCS5

패딩을 사용하지 않는다. 이러할 경우 데이터가 단위 블록의 크기(128

bit)의 배수가 아니면 암호화가 불가능하여 에러를 리턴하므로, 반드시

데이터의 크기를 확인해야 한다.

NONE

마지막 블록의 남는 바이트들을 0으로 채운다. 문자열과 같이 0의 값으

로 끝을 체크하는 데이터에만 사용해야 한다.

ZERO

206 Tibero RDBMS tbPSM 참조 안내서

Page 229: [11]-TmaxData - Tibero RDBMS 4 SP1... · 2019-06-26 · 본 제품은 “OpenSSL”, “RSA Data Security, Inc.”, “Apache Foundation” 및 “Jean-loup Gailly와 Mark Adler”

21.3. 해시 알고리즘DBMS_CRYPTO은 임의의 길이의 데이터를 고정 길이의 해시값으로 변환하는데, 해시값을 만드는 것은

쉽지만, 해시값을 원래의 데이터로 복원하는 일은 지극히 어렵게 함으로써, 데이터의 안전성을 보장한다.

데이터 변경 여부 체크 및 암호 인증 등 인증(authentication) 작업에 주로 사용된다.

MD4(Message Digest 4), MD5(Message Digest 5), SHA-1(Secure Hash Algorithm 1) 더욱 다양한 알고리

즘 및 블록 패딩 방식을 지원하고 있다.

각 알고리즘은 아래와 같다.

설명알고리즘

SHA는 미국 NIST에 의해 개발된 SHS(secure hash standard) 내에 정의된 알고

리즘으로, 길이 264bit 이하의 메시지를 160bit 길이의 축약된 메시지로 만들어낸

다.

SHA-1

MD5보다는 다소 느리지만, 대규모 메시지 요약들이 폭력적 충돌 및 도치 공격을

받을 때, 좀더 안전하게 지켜준다.

입력 데이터 (길이에 상관없는 하나의 메시지)로부터 128bit 메시지 축약을 만듦

으로써 데이터 무결성을 검증하는데 사용되는 알고리즘이다.

MD5

MD4의 확장판인데, MD4에 비해 속도가 빠르지는 않지만, 데이터 보안성에 있어

더 많은 확신을 제공한다.

MD4는 MD5의 초기 버전으로서, 입력 데이터 (길이에 상관없는 하나의 메시지)로

부터 128bit 메시지 축약을 만듦으로써 데이터 무결성을 검증하는데 사용되는 알

고리즘이다

MD4

21.4. 프로시저와 함수본 절에서는 DBMS_OBFUSCATION_TOOLKIT 패키지에서 제공하는 프로시저와 함수를 알파벳 순으로

설명한다.

21.4.1. DECRYPT

사용자가 명시한 암호화 알고리즘 및 체인, 패딩 기법을 이용하여 암호화된 데이터를 복호화하는 함수이

다. 주어진 알고리즘에 맞는 키의 크기와 블록의 크기를 설정해야 올바르게 동작한다. 알고리즘 각각에 따

른 키의 크기와 블록의 크기는 위의 표에 언급되어 있으니 참고하기 바란다.

DECRYPT 프로시저와 함수의 세부 내용은 다음과 같다.

● 프로토타입

제21장 DBMS_CRYPTO 207

Page 230: [11]-TmaxData - Tibero RDBMS 4 SP1... · 2019-06-26 · 본 제품은 “OpenSSL”, “RSA Data Security, Inc.”, “Apache Foundation” 및 “Jean-loup Gailly와 Mark Adler”

DBMS_CRYPTO.DECRYPT

(

src IN RAW,

cipher_type IN PLS_INTEGER,

key IN RAW,

init_vector IN RAW DEFAULT NULL

)

RETURN RAW;

● 파라미터

설명파라미터

복호화할 데이터이다.src

사용할 암호화 알고리즘, 체인, 패딩 기법이다.cipher_type

복호화하기 위해 주어진 키 값이다.key

초기화 벡터이다. NULL이면 0으로 채워진 초기화 벡터를 사용한다.init_vector

● 예외 상황

설명예외 상황

파라미터 중 하나라도 NULL인 경우이다.INVALID_ARGUMENT

cipher_type 값이 잘못 설정된 경우이다.INVALID_NTH_ARGUMENT

input_data의 길이가 8의 배수가 아닌 경우이다.INVALID_INPUT

key 값의 길이가 필요한 크기보다 작은 경우이다.KEY_TOO_SHORT

● 예제

DECLARE

data RAW(256);

key RAW(16);

encrypted_data RAW(256);

decrypted_data RAW(256);

iv RAW(256);

BEGIN

data := '0102030405AE030D0102030405AE030D';

key := '0A123B8E002CD3FFA021B3E800C23DFF';

iv := '00000000000000000000000000000000';

encrypted_data := DBMS_CRYPTO.ENCRYPT(

src => data,

cipher_type => DBMS_CRYPTO.ENCRYPT_AES128 + DBMS_CRYPTO.CHAIN_CBC +

DBMS_CRYPTO.PAD_PKCS5,

key => key,

208 Tibero RDBMS tbPSM 참조 안내서

Page 231: [11]-TmaxData - Tibero RDBMS 4 SP1... · 2019-06-26 · 본 제품은 “OpenSSL”, “RSA Data Security, Inc.”, “Apache Foundation” 및 “Jean-loup Gailly와 Mark Adler”

init_vector => iv);

encrypted_data := DBMS_CRYPTO.DECRYPT(

src => encrypted_data,

cipher_type => DBMS_CRYPTO.ENCRYPT_AES128 + DBMS_CRYPTO.CHAIN_CBC +

DBMS_CRYPTO.PAD_PKCS5,

key => key,

init_vector => iv);

END;

21.4.2. ENCRYPT

사용자가 명시한 암호화 알고리즘 및 체인, 패딩 기법을 이용하여 데이터를 암호화하는 함수이다.

주어진 알고리즘에 맞는 키의 크기와 블록의 크기를 설정해야 올바르게 동작한다. 알고리즘 각각에 따른

키의 크기와 블록의 크기는 위의 표에 언급되어 있으니 참고하기 바란다.

ENCRYPT 프로시저와 함수의 세부 내용은 다음과 같다.

● 프로토타입

DBMS_CRYPTO.ENCRYPT

(

src IN RAW,

cipher_type IN PLS_INTEGER,

key IN RAW,

init_vector IN RAW DEFAULT NULL

)

RETURN RAW;

● 파라미터

설명파라미터

암호화할 데이터이다.src

사용할 암호화 알고리즘, 체인, 패딩 기법이다.cipher_type

암호화하기 위해 주어진 키 값이다.key

초기화 벡터이다. NULL이면 0으로 채워진 초기화 벡터를 사용한다.init_vector

● 예외 상황

설명예외 상황

파라미터 중 하나라도 NULL인 경우이다.INVALID_ARGUMENT

제21장 DBMS_CRYPTO 209

Page 232: [11]-TmaxData - Tibero RDBMS 4 SP1... · 2019-06-26 · 본 제품은 “OpenSSL”, “RSA Data Security, Inc.”, “Apache Foundation” 및 “Jean-loup Gailly와 Mark Adler”

설명예외 상황

cipher_type 값이 잘못 설정된 경우이다.INVALID_NTH_ARGUMENT

ZERO 패딩 방식일 때, input_data의 길이가 블록 크기의 배수가 아닌

경우이다.

INVALID_INPUT

key 값의 길이가 필요한 크기보다 작은 경우이다.KEY_TOO_SHORT

● 예제

DECLARE

data RAW(256);

key RAW(16);

encrypted_data RAW(256);

decrypted_data RAW(256);

iv RAW(256);

BEGIN

data := '0102030405AE030D0102030405AE030D';

key := '0A123B8E002CD3FFA021B3E800C23DFF';

iv := '00000000000000000000000000000000';

encrypted_data := DBMS_CRYPTO.ENCRYPT(

src => data,

cipher_type => DBMS_CRYPTO.ENCRYPT_AES128 + DBMS_CRYPTO.CHAIN_CBC +

DBMS_CRYPTO.PAD_PKCS5,

key => key,

init_vector => iv);

END;

21.4.3. HASH

사용자가 명시한 알고리즘을 이용하여 임의의 길이의 데이터를 고정길이의 해시값으로 변환하는 함수이

다.

HASH 함수의 세부 내용은 다음과 같다.

● 프로토타입

DBMS_CRYPTO.HASH

(

src IN RAW,

hash_type IN PLS_INTEGER

)

RETURN RAW;

● 파라미터

210 Tibero RDBMS tbPSM 참조 안내서

Page 233: [11]-TmaxData - Tibero RDBMS 4 SP1... · 2019-06-26 · 본 제품은 “OpenSSL”, “RSA Data Security, Inc.”, “Apache Foundation” 및 “Jean-loup Gailly와 Mark Adler”

설명파라미터

원본 데이터이다.src

사용할 해시 알고리즘이다.hash_type

● 예외 상황

설명예외 상황

파라미터 중 하나라도 NULL인 경우이다.INVALID_ARGUMENT

hash_type 값이 잘못 설정된 경우이다.INVALID_NTH_ARGUMENT

● 예제

DECLARE

input varchar2(100);

hash_val raw(20);

BEGIN

input := 'DBMS_CRYPTO.HASH 테스트';

hash_val := DBMS_CRYPTO.HASH(

src => utl_raw.cast_to_raw(input),

hash_type => DBMS_CRYPTO.HASH_SH1);

END;

제21장 DBMS_CRYPTO 211

Page 234: [11]-TmaxData - Tibero RDBMS 4 SP1... · 2019-06-26 · 본 제품은 “OpenSSL”, “RSA Data Security, Inc.”, “Apache Foundation” 및 “Jean-loup Gailly와 Mark Adler”
Page 235: [11]-TmaxData - Tibero RDBMS 4 SP1... · 2019-06-26 · 본 제품은 “OpenSSL”, “RSA Data Security, Inc.”, “Apache Foundation” 및 “Jean-loup Gailly와 Mark Adler”

제22장 DBMS_TYPES

본 장에서는 DBMS_TYPES 패키지의 기본 개념과 패키지 내의 변수들의 의미를 설명한다.

22.1. 개요DBMS_TYPES은 Tibero의 데이터 타입들의 번호를 열거하는 패키지이다.

DBMS_SQL.DESCRIBE_COLUMNS 프로시저를 이용한 컬럼의 타입 번호를 추출하는 경우 이 패키지에

정의된 값을 비교함으로써 실제 타입을 알 수 있다.

22.2. 상수 목록DBMS_TYPES에서 정의된 상수 목록은 아래와 같다.

설명알고리즘

NUMBER 타입TYPECODE_NUMBER

CHAR 타입TYPECODE_CHAR

VARCHAR 타입TYPECODE_VARCHAR

RAW 타입TYPECODE_RAW

DATE 타입TYPECODE_DATE

TIME 타입TYPECODE_TIME

TIMESTAMP 타입TYPECODE_TIMESTAMP

INTERVAL YEAR TO MONTH 타입TYPECODE_ITV_YTM

INTERVAL DAY TO SECOND 타입TYPECODE_ITV_DTS

LONG 타입TYPECODE_LONG

LONG RAW 타입TYPECODE_LONG_RAW

BLOB 타입TYPECODE_BLOB

CLOB 타입TYPECODE_CLOB

BFILE 타입TYPECODE_BFILE

ROWID 타입TYPECODE_ROWID

CSR 타입TYPECODE_CSR

NCHAR 타입TYPECODE_NCHAR

NVARCHAR 타입TYPECODE_NVARCHAR

제22장 DBMS_TYPES 213

Page 236: [11]-TmaxData - Tibero RDBMS 4 SP1... · 2019-06-26 · 본 제품은 “OpenSSL”, “RSA Data Security, Inc.”, “Apache Foundation” 및 “Jean-loup Gailly와 Mark Adler”

설명알고리즘

NCLOB 타입TYPECODE_NCLOB

지정되지 않은 타입으로, null 등이 해당된다.TYPECODE_NONE

알 수 없는 타입이다.TYPECODE_UNKNOWN

214 Tibero RDBMS tbPSM 참조 안내서

Page 237: [11]-TmaxData - Tibero RDBMS 4 SP1... · 2019-06-26 · 본 제품은 “OpenSSL”, “RSA Data Security, Inc.”, “Apache Foundation” 및 “Jean-loup Gailly와 Mark Adler”

제23장 DBMS_RANDOM

본 장에서는 DBMS_RANDOM 패키지의 기본 개념과 패키지 내의 프로시저와 함수를 사용하는 방법을 설

명한다.

23.1. 개요DBMS_RANDOM은 임의의 숫자를 생성하는 기능을 제공한다.

23.2. 프로시저와 함수본 절에서는 DBMS_RANDOM 패키지에서 제공하는 프로시저와 함수를 알파벳 순으로 설명한다.

23.2.1. NORMAL

표준 정규 분포(가우스 분포)에서의 임의값을 추출하는 함수이다.

NORMAL 함수의 세부 내용은 다음과 같다.

● 프로토타입

DBMS_RANDOM.NORMAL

RETURN NUMBER;

● 예제

DECLARE

a NUMBER;

BEGIN

a := DBMS_RANDOM.NORMAL;

END;

/

23.2.2. RANDOM

-(2의 31제곱)보다 크거나 같고, 2의 31제곱보다 작은 임의의 정수를 생성한다.

RANDOM 함수의 세부 내용은 다음과 같다.

제23장 DBMS_RANDOM 215

Page 238: [11]-TmaxData - Tibero RDBMS 4 SP1... · 2019-06-26 · 본 제품은 “OpenSSL”, “RSA Data Security, Inc.”, “Apache Foundation” 및 “Jean-loup Gailly와 Mark Adler”

● 프로토타입

DBMS_RANDOM.RANDOM

RETURN BINARY_INTEGER;

● 예제

DECLARE

a BINARY_INTEGER;

BEGIN

a := DBMS_RANDOM.RANDOM;

END;

/

23.2.3. SEED

새로운 시드를 지정하여 임의값 생성 시퀀스를 새로이 생성한다. 기존과 동일한 시드를 지정하면 동일 시

퀀스 내의 첫번째 값으로 돌아가므로 매 호출 후 임의값을 추출하면 같은 값이 나온다.

SEED 프로시저의 세부 내용은 다음과 같다.

● 프로토타입

– 시드가 번호인 경우

DBMS_RANDOM.SEED

(

val IN BINARY_INTEGER

);

– 시드가 문자열인 경우

DBMS_RANDOM.SEED

(

val IN VARCHAR2

);

● 파라미터

설명파라미터

임의값을 생성할 시드 번호나 문자열이다.val

● 예제

216 Tibero RDBMS tbPSM 참조 안내서

Page 239: [11]-TmaxData - Tibero RDBMS 4 SP1... · 2019-06-26 · 본 제품은 “OpenSSL”, “RSA Data Security, Inc.”, “Apache Foundation” 및 “Jean-loup Gailly와 Mark Adler”

DECLARE

a BINARY_INTEGER;

BEGIN

DBMS_RANDOM.SEED(3);

a := DBMS_RANDOM.NORMAL;

DBMS_RANDOM.SEED('abc');

a := DBMS_RANDOM.RANDOM;

END;

/

23.2.4. STRING

임의의 문자열을 생성한다.

STRING 함수의 세부 내용은 다음과 같다.

● 프로토타입

DBMS_RANDOM.STRING

(

opt IN CHAR,

len IN NUMBER

)

RETURN VARCHAR2;

● 파라미터

설명파라미터

생성하고 싶은 문자열의 형태이고, 항목은 아래와 같다.opt

– 'u' 혹은 'U' : 대문자 알파벳의 문자열

– 'l' 혹은 'L' : 소문자 알파벳의 문자열

– 'a' 혹은 'A' : 대소문자 구분 없이 임의의 알파벳의 문자열

– 'x' 혹은 'X' : 임의의 대문자 알파벳 혹은 숫자의 문자열

– 'p' 혹은 'P' : 임의의 출력 가능한 문자들의 배열

그 외의 값일 경우에는 기본적으로 대문자 알파벳의 문자열이다.

생성할 문자열의 길이이다.len

● 예제

제23장 DBMS_RANDOM 217

Page 240: [11]-TmaxData - Tibero RDBMS 4 SP1... · 2019-06-26 · 본 제품은 “OpenSSL”, “RSA Data Security, Inc.”, “Apache Foundation” 및 “Jean-loup Gailly와 Mark Adler”

DECLARE

a varchar2(1000);

BEGIN

a := DBMS_RANDOM.STRING('x', 20);

dbms_output.put_line(a);

END;

/

23.2.5. VALUE

범위 내에서 임의의 숫자를 생성한다. 범위가 지정되지 않은 경우는 0보다 크거나 같고 1보다 작은 숫자

를 생성한다.

VALUE 함수의 세부 내용은 다음과 같다.

● 프로토타입

– 범위가 지정되지 않은 경우

DBMS_RANDOM.VALUE

RETURN NUMBER;

– 범위가 지정된 경우

DBMS_RANDOM.VALUE

(

low IN NUMBER,

high IN NUMBER

)

RETURN NUMBER;

● 파라미터

설명파라미터

임의값 범위 내에서의 최소값이다.low

임의값 범위 내에서의 최대값은 이 값보다 크거나 같을 수 없다.high

● 예제

DECLARE

a number;

BEGIN

a := DBMS_RANDOM.VALUE;

a := DBMS_RANDOM.VALUE(-30, 100);

218 Tibero RDBMS tbPSM 참조 안내서

Page 241: [11]-TmaxData - Tibero RDBMS 4 SP1... · 2019-06-26 · 본 제품은 “OpenSSL”, “RSA Data Security, Inc.”, “Apache Foundation” 및 “Jean-loup Gailly와 Mark Adler”

END;

/

제23장 DBMS_RANDOM 219

Page 242: [11]-TmaxData - Tibero RDBMS 4 SP1... · 2019-06-26 · 본 제품은 “OpenSSL”, “RSA Data Security, Inc.”, “Apache Foundation” 및 “Jean-loup Gailly와 Mark Adler”
Page 243: [11]-TmaxData - Tibero RDBMS 4 SP1... · 2019-06-26 · 본 제품은 “OpenSSL”, “RSA Data Security, Inc.”, “Apache Foundation” 및 “Jean-loup Gailly와 Mark Adler”

제24장 DBMS_SYSTEM

본 장에서는 DBMS_SYSTEM 패키지의 기본 개념과 패키지 내의 프로시저와 함수를 사용하는 방법을 설

명한다.

24.1. 개요DBMS_SYSTEM은 특정 경우에 대한 시스템적인 제어에 유용한 프로시저 및 함수(들)을 제공한다.

SYS 권한이 있는 사용자만 이 패키지를 사용할 수 있다.

24.2. 프로시저와 함수본 절에서는 DBMS_SYSTEM 패키지에서 제공하는 프로시저와 함수를 알파벳 순으로 설명한다.

24.2.1. SET_SQL_TRACE_IN_SESSION

특정 세션의 SQL 추적 로그 작성을 시작하거나 중지할 수 있다.

세션의 식별자 및 시리얼 번호는 V$SESSION 뷰를 통해 조회할 수 있다.

SQL 추적 로그는 $TB_HOME/instance/$TB_SID/log/sqltrace 경로에 생성된다.

SET_SQL_TRACE_IN_SESSION 프로시저의 세부 내용은 다음과 같다.

● 프로토타입

DBMS_SYSTEM.SET_SQL_TRACE_IN_SESSION

(

sid IN NUMBER,

serial# IN NUMBER,

sql_trace IN BOOLEAN

);

● 파라미터

설명파라미터

세션의 식별자이다.sid

세션의 시리얼 번호이다.serial#

SQL 추적 로그를 작성하려면 true, 중지하려면 false를 입력한다.sql_trace

제24장 DBMS_SYSTEM 221

Page 244: [11]-TmaxData - Tibero RDBMS 4 SP1... · 2019-06-26 · 본 제품은 “OpenSSL”, “RSA Data Security, Inc.”, “Apache Foundation” 및 “Jean-loup Gailly와 Mark Adler”

● 예제

begin

for c in (select sid, serial# from v$session where username = 'TIBERO') loop

DBMS_SYSTEM.SET_SQL_TRACE_IN_SESSION(c.sid, c.serial#, true);

end loop;

end;

/

222 Tibero RDBMS tbPSM 참조 안내서

Page 245: [11]-TmaxData - Tibero RDBMS 4 SP1... · 2019-06-26 · 본 제품은 “OpenSSL”, “RSA Data Security, Inc.”, “Apache Foundation” 및 “Jean-loup Gailly와 Mark Adler”

제25장 DBMS_UTILITY

본 장에서는 DBMS_UTILITY 패키지의 기본 개념과 패키지 내의 프로시저와 함수를 사용하는 방법을 설

명한다.

25.1. 개요DBMS_UTILITY은 여러 가지 유용한 기능들을 제공한다.

25.2. 프로시저와 함수본 절에서는 DBMS_UTILITY 패키지에서 제공하는 프로시저와 함수를 알파벳 순으로 설명한다.

25.2.1. COMMA_TO_TABLE

테이블 이름들이 쉼표로 구분되어 나열된 문자열을 분석하여 테이블 이름들을 구성 요소로 하는 인덱스

테이블로 변환하는 프로시저이다.

COMMA_TO_TABLE 프로시저의 세부 내용은 다음과 같다.

● 프로토타입

DBMS_UTILITY.COMMA_TO_TABLE

(

list IN VARCHAR2,

tablen OUT BINARY_INTEGER,

tab OUT UNCL_ARRAY

);

● 파라미터

설명파라미터

쉼표로 구분되어 있는 테이블 이름들의 목록 문자열이다.list

테이블 이름들은 a [. b [. c]][ @ d ] (a, b, c, d는 따옴표로 묶이거나 묶이지 않

은 식별자 형태의 문자열이다.

생성되는 이름들의 갯수이다.tablen

테이블 이름들을 구성 요소로 갖는 인덱스 테이블이다.tab

제25장 DBMS_UTILITY 223

Page 246: [11]-TmaxData - Tibero RDBMS 4 SP1... · 2019-06-26 · 본 제품은 “OpenSSL”, “RSA Data Security, Inc.”, “Apache Foundation” 및 “Jean-loup Gailly와 Mark Adler”

● 예제

declare

tab_len binary_integer;

tab dbms_utility.uncl_array;

begin

DBMS_UTILITY.COMMA_TO_TABLE('a,"b".c,d.e.f,g.h@i', tab_len, tab);

for i in 1..tab_len loop

dbms_output.put_line(tab(i));

end loop;

end;

/

25.2.2. GET_TIME

현재 시간을 1/100초 단위의 숫자로 표현하는 함수이다. 일반적으로 시작과 끝에 호출하여 소요 시간을

측정하는 데 사용된다.

GET_TIME 함수의 세부 내용은 다음과 같다.

● 프로토타입

DBMS_UTILITY.GET_TIME

RETURN NUMBER;

● 예제

declare

s number;

e number;

c sys_refcursor;

begin

s := DBMS_UTILITY.GET_TIME;

open c for select * from all_objects;

close c;

e := DBMS_UTILITY.GET_TIME;

dbms_output.put_line(e - s);

end;

/

224 Tibero RDBMS tbPSM 참조 안내서

Page 247: [11]-TmaxData - Tibero RDBMS 4 SP1... · 2019-06-26 · 본 제품은 “OpenSSL”, “RSA Data Security, Inc.”, “Apache Foundation” 및 “Jean-loup Gailly와 Mark Adler”

제26장 DBMS_ERRLOG

본 장에서는 DBMS_ERRLOG 패키지의 기본 개념과 패키지 내의 프로시저와 함수를 사용하는 방법을 설

명한다.

26.1. 개요DBMS_ERRLOG는 에러 로깅 테이블(error logging table)을 생성하는 하나의 프로시져를 제공한다.

일반적인 DML에서는 에러가 발생하면 실패하고 롤백이 이루어진다. 하지만, DML문에 error_logging_clause

를 명시하면 에러를 발생시키지 않고 에러의 내용과 데이터를 에러 로깅 테이블에 기록하고 수행을 계속

하게 된다.

26.2. 프로시저

26.2.1. CREATE_ERROR_LOG

DML의 에러 로깅에 사용할 테이블을 만드는 함수이다.

CREATE_ERROR_LOG 프로시저의 세부 내용은 다음과 같다.

● 프로토타입

DBMS_ERRLOG.DECRYPT

(

dml_table_name IN VARCHAR2,

err_log_table_name IN VARCHAR2 DEFAULT NULL,

err_log_table_owner IN VARCHAR2 DEFAULT NULL,

err_log_table_space IN VARCHAR2 DEFAULT NULL,

skip_unsupported IN BOOLEAN DEFAULT FALSE

)

RETURN RAW;

● 파라미터

설명파라미터

DML의 대상 테이블명이다.dml_table_name

제26장 DBMS_ERRLOG 225

Page 248: [11]-TmaxData - Tibero RDBMS 4 SP1... · 2019-06-26 · 본 제품은 “OpenSSL”, “RSA Data Security, Inc.”, “Apache Foundation” 및 “Jean-loup Gailly와 Mark Adler”

설명파라미터

에러 로깅 테이블명. 명시하지 않으면 ERR$_를 dml_table_name 앞에 붙여

서 사용한다.

err_log_table_name

에러 로깅 테이블을 생성할 스키마명이다.err_log_table_owner

에러 로깅 테이블을 생성할 테이블 스페이스명이다.err_log_table_space

현재, TRUE 값을 지원하지 않는다. FALSE 값으로 고정되어 있다.skip_unsupported

● 예제

SQL> create table p (a number primary key);

Table 'P' created.

SQL> insert into p values (1);

1 row inserted.

SQL> insert into p values (2);

1 row inserted.

SQL> insert into p values (3);

1 row inserted.

SQL> insert into p values (4);

1 row inserted.

SQL> create table f (a number references p(a));

Table 'F' created.

SQL> insert into f values (1);

1 row inserted.

SQL> insert into f values (3);

1 row inserted.

SQL> exec dbms_errlog.create_error_log('f');

PSM completed.

226 Tibero RDBMS tbPSM 참조 안내서

Page 249: [11]-TmaxData - Tibero RDBMS 4 SP1... · 2019-06-26 · 본 제품은 “OpenSSL”, “RSA Data Security, Inc.”, “Apache Foundation” 및 “Jean-loup Gailly와 Mark Adler”

SQL> commit;

Commit completed.

SQL> insert into f (select 1 from dual union all select 5 from dual)

log errors reject limit 1;

1 row inserted.

SQL> select * from f;

A

----------

1

3

1

3 rows selected.

SQL> select * from err$_f;

TIB_ERR_NUMBER$

---------------

TIB_ERR_MESG$

--------------------------------------------------------------------------------

TIB_ERR_ROWID$ TIB_ERR_OPTYP$

------------------ --------------------

TIB_ERR_TAG$

--------------------------------------------------------------------------------

A

--------------------------------------------------------------------------------

-10008

INTEGRITY constraint ('SYS'.'SYS_CON25700497') violated: primary key not found.

I

5

1 row selected.

제26장 DBMS_ERRLOG 227

Page 250: [11]-TmaxData - Tibero RDBMS 4 SP1... · 2019-06-26 · 본 제품은 “OpenSSL”, “RSA Data Security, Inc.”, “Apache Foundation” 및 “Jean-loup Gailly와 Mark Adler”
Page 251: [11]-TmaxData - Tibero RDBMS 4 SP1... · 2019-06-26 · 본 제품은 “OpenSSL”, “RSA Data Security, Inc.”, “Apache Foundation” 및 “Jean-loup Gailly와 Mark Adler”

제27장 DBMS_REPAIR

본 장에서는 DBMS_REPAIR 패키지의 기본 개념과 패키지 내의 프로시저를 사용하는 방법을 설명한다.

27.1. 개요DBMS_REPAIR는 테이블과 인덱스 내의 깨진 블록을 검사하고 복구하는 기능을 제공하는 패키지이다.

다음은 DBMS_REPAIR 패키지 내에 정의된 상수이다.

● ALL_INDEX_ID

인덱스의 스키마 객체 ID를 지정할 때 사용하며, 모든 인덱스에 대해 클린업을 수행하도록 지정한다.

ALL_INDEX_ID CONSTANT BINARY_INTEGER := 0

● LOCK_NOWAIT

관련된 테이블, 파티션 또는 서브파티션에 대한 DML LOCK을 NOWAIT 모드로 요청한다.

LOCK_NOWAIT CONSTANT BOOLEAN := true

● LOCK_WAIT

관련된 테이블, 파티션 또는 서브파티션에 대한 DML LOCK을 WAIT 모드로 요청한다.

LOCK_NOWAIT CONSTANT BOOLEAN := false

27.2. 함수본 절에서는 DBMS_REPAIR 패키지에서 제공하는 함수를 알파벳 순으로 설명한다.

27.2.1. ONLINE_INDEX_CLEAN

실패하거나 중단된 인덱스 online-build 또는 online-rebuild에 대한 클린업을 수행한다.

ONLINE_INDEX_CLEAN 함수의 세부 내용은 다음과 같다.

● 프로토타입

제27장 DBMS_REPAIR 229

Page 252: [11]-TmaxData - Tibero RDBMS 4 SP1... · 2019-06-26 · 본 제품은 “OpenSSL”, “RSA Data Security, Inc.”, “Apache Foundation” 및 “Jean-loup Gailly와 Mark Adler”

DBMS_REPAIR.ONLINE_INDEX_CLEAN

(

object_id IN BINARY_INTEGER DEFAULT ALL_INDEX_ID,

wait_for_lock IN BOOLEAN DEFAULT LOCK_WAIT

)

RETURN BOOLEAN;

● 파라미터

설명파라미터

클린업을 수행할 인덱스의 스키마 객체 ID이다.object_id

ALL_INDEX_ID 상수로 지정할 경우 모든 인덱스에 대해 클린업을 수행한다.

인덱스와 관련된 테이블, 파티션 또는 서브파티션에 대한 DML LOCK을 요청

할 때의 LOCK 모드이다.

wait_for_lock

LOCK_NOWAIT 상수로 설정할 경우 LOCK을 얻는 데 실패하면 클린업이 바

로 중단된다. LOCK_WAIT 상수로 설정할 경우 LOCK을 얻을 때까지 계속 기

다린다.

● 반환값

설명반환값

지정된 모든 인덱스에 대해 클린업이 수행된 경우에 반환된다.TRUE

지정된 인덱스 중 하나 이상의 인덱스에 대한 클린업이 실패한 경우에 반환

된다.

FALSE

● 예제

DECLARE

cleaned BOOLEAN;

BEGIN

cleaned := false;

WHILE cleaned = false

LOOP

cleaned := DBMS_REPAIR.ONLINE_INDEX_CLEAN(DBMS_REPAIR.ALL_INDEX_ID,

DBMS_REPAIR.LOCK_WAIT);

DBMS_LOCK.SLEEP(10);

END LOOP;

EXCEPTION

WHEN OTHERS THEN

RAISE;

END;

230 Tibero RDBMS tbPSM 참조 안내서

Page 253: [11]-TmaxData - Tibero RDBMS 4 SP1... · 2019-06-26 · 본 제품은 “OpenSSL”, “RSA Data Security, Inc.”, “Apache Foundation” 및 “Jean-loup Gailly와 Mark Adler”

/

PSM completed

SQL>

제27장 DBMS_REPAIR 231

Page 254: [11]-TmaxData - Tibero RDBMS 4 SP1... · 2019-06-26 · 본 제품은 “OpenSSL”, “RSA Data Security, Inc.”, “Apache Foundation” 및 “Jean-loup Gailly와 Mark Adler”
Page 255: [11]-TmaxData - Tibero RDBMS 4 SP1... · 2019-06-26 · 본 제품은 “OpenSSL”, “RSA Data Security, Inc.”, “Apache Foundation” 및 “Jean-loup Gailly와 Mark Adler”

제28장 DBMS_APPLICATION_INFO

본 장에서는 DBMS_APPLICATION_INFO 패키지의 기본 개념과 패키지 내의 프로시저를 사용하는 방법

을 설명한다.

28.1. 개요DBMS_APPLICATION_INFOV$SESSION, SYS._VT_SESSION_LONGOPS 뷰의 값을 변경하는 패키지

이다.

28.2. 프로시저본 절에서는 DBMS_DBMS_APPLICATION_INFO 패키지에서 제공하는 프로시저를 알파벳 순으로 설명

한다.

28.2.1. READ_CLIENT_INFO

현재 세션의 client_info 값을 읽는다.

READ_CLIENT_INFO 프로시저의 세부 내용은 다음과 같다.

● 프로토타입

DBMS_APPLICATION_INFO.READ_CLIENT_INFO

(

client_info OUT VARCHAR2

);

● 파라미터

설명파라미터

세션으로 부터 읽을 client info 값이다.client_info

● 예제

DECLARE

client_info VARCHAR2(64);

BEGIN

DBMS_APPLICATION_INFO.READ_CLIENT_INFO(client_info);

제28장 DBMS_APPLICATION_INFO 233

Page 256: [11]-TmaxData - Tibero RDBMS 4 SP1... · 2019-06-26 · 본 제품은 “OpenSSL”, “RSA Data Security, Inc.”, “Apache Foundation” 및 “Jean-loup Gailly와 Mark Adler”

DBMS_OUTPUT.PUT_LINE(client_info);

END;

/

28.2.2. READ_MODULE

현재 세션의 모듈 정보와 액션 정보를 읽는 프로시져이다.

READ_MODULE 프로시저의 세부 내용은 다음과 같다.

● 프로토타입

DBMS_APPLICATION_INFO.READ_MODULE

(

module_name OUT VARCHAR2,

action_name OUT VARCHAR2

);

● 파라미터

설명파라미터

현재 세션의 module 값이다.module_name

현재 세션의 action 값이다.action_name

● 예제

DECLARE

module_name VARCHAR(64);

action_name VARCHAR(64);

BEGIN

DBMS_APPLICATION_INFO.READ_MODULE(module_name, action_name);

DBMS_OUTPUT.PUT_LINE(module_name);

DBMS_OUTPUT.PUT_LINE(action_name);

END;

/

28.2.3. SET_ACTION

현재 세션의 액션 이름을 지정한다.

SET_ACTION 프로시져의 세부 내용은 다음과 같다.

● 프로토타입

234 Tibero RDBMS tbPSM 참조 안내서

Page 257: [11]-TmaxData - Tibero RDBMS 4 SP1... · 2019-06-26 · 본 제품은 “OpenSSL”, “RSA Data Security, Inc.”, “Apache Foundation” 및 “Jean-loup Gailly와 Mark Adler”

DBMS_APPLICATION_INFO.SET_ACTION

(

action_name IN VARCHAR2

);

● 파라미터

설명파라미터

세션에 저장할 액션 이름이다. 64byte 이상의 값은 잘린다.action_name

● 예제

CREATE TABLE NEW_DATA_TBL(DATA NUMBER)

/

BEGIN

DBMS_APPLICATION_INFO.SET_ACTION('데이터 추가');

INSERT INTO NEW_DATA_TBL VALUES(1);

INSERT INTO NEW_DATA_TBL VALUES(2);

COMMIT;

DBMS_APPLICATION_INFO.SET_ACTION(NULL);

END;

/

28.2.4. SET_CLIENT_INFO

현재 세션의 액션 이름을 지정한다.

SET_CLIENT_INFO 프로시져의 세부 내용은 다음과 같다.

● 프로토타입

DBMS_APPLICATION_INFO.SET_CLIENT_INFO

(

client_info IN VARCHAR2

);

● 파라미터

설명파라미터

현재 세션 내에 저장될 client_info 이다. 64byte 이상의 값은 잘린다.client_info

● 예제

제28장 DBMS_APPLICATION_INFO 235

Page 258: [11]-TmaxData - Tibero RDBMS 4 SP1... · 2019-06-26 · 본 제품은 “OpenSSL”, “RSA Data Security, Inc.”, “Apache Foundation” 및 “Jean-loup Gailly와 Mark Adler”

BEGIN

DBMS_APPLICATION_INFO.SET_CLIENT_INFO('my_client_info');

END;

/

SELECT sid, client_info FROM V$SESSION WHERE client_info = 'my_client_info';

28.2.5. SET_MODULE

현재 세션의 액션 이름을 지정한다.

SET_MODULE 프로시져의 세부 내용은 다음과 같다.

● 프로토타입

DBMS_APPLICATION_INFO.SET_MODULE

(

module_name IN VARCHAR2,

action_name IN VARCHAR2

);

● 파라미터

설명파라미터

세션에 저장할 모듈 이름이다. 64byte 이상의 값은 잘린다.module_name

세션에 저장할 액션 이름이다. 64byte 이상의 값은 잘린다.module_name

● 예제

CREATE TABLE NEW_DATA_TBL(DATA NUMBER)

/

BEGIN

DBMS_APPLICATION_INFO.SET_MODULE('데이터 추가', '새로운 데이터 인서트');

INSERT INTO NEW_DATA_TBL VALUES(1);

INSERT INTO NEW_DATA_TBL VALUES(2);

COMMIT;

DBMS_APPLICATION_INFO.SET_MODULE(NULL, NULL);

END;

/

236 Tibero RDBMS tbPSM 참조 안내서

Page 259: [11]-TmaxData - Tibero RDBMS 4 SP1... · 2019-06-26 · 본 제품은 “OpenSSL”, “RSA Data Security, Inc.”, “Apache Foundation” 및 “Jean-loup Gailly와 Mark Adler”

28.2.6. SET_SESSION_LONGOPS

SYS._VT_SESSION_LONGOPS 뷰의 값을 변경한다.

SET_SESSION_LONGOPS 프로시져의 세부 내용은 다음과 같다.

● 프로토타입

DBMS_APPLICATION_INFO.SET_SESSION_LONGOPS

(

id IN OUT PLS_INTEGER,

op_name IN VARCHAR DEFAULT NULL,

sofar IN NUMBER DEFAULT 0,

totalwork IN NUMBER DEFAULT 0,

target_desc IN VARCHAR2 DEFAULT 'unknown target',

units IN VARCHAR2 DEFAULT NULL

);

● 파라미터

설명파라미터

사용할 longops의 ID이다.id

-1을 넣은 경우, 새로운 ID를 할당 받는다.

SYS._VT_SESSION_LONGOPS에 저장될 opname column 값이다.op_name

128byte 이상은 무시된다.

SYS._VT_SESSION_LONGOPS에 저장될 sofar column 값이다.sofar

SYS._VT_SESSION_LONGOPS에 저장될 totalwork column 값이다.totalwork

SYS._VT_SESSION_LONGOPS에 저장될 target_desc column 값이다.target_desc

128byte 이상은 무시된다.

SYS._VT_SESSION_LONGOPS에 저장될 units column 값이다.units 값이다.

128byte 이상은 무시된다.

● 예제

DECLARE

idx PLS_INTERGER := -1;

BEGIN

DBMS_APPLICATION_INFO.SET_SESSION_LONGOPS(idx);

END;

제28장 DBMS_APPLICATION_INFO 237

Page 260: [11]-TmaxData - Tibero RDBMS 4 SP1... · 2019-06-26 · 본 제품은 “OpenSSL”, “RSA Data Security, Inc.”, “Apache Foundation” 및 “Jean-loup Gailly와 Mark Adler”

/

SELECT * FROM SYS._VT_SESSION_LONGOPS;

238 Tibero RDBMS tbPSM 참조 안내서

Page 261: [11]-TmaxData - Tibero RDBMS 4 SP1... · 2019-06-26 · 본 제품은 “OpenSSL”, “RSA Data Security, Inc.”, “Apache Foundation” 및 “Jean-loup Gailly와 Mark Adler”

제29장 DBMS_LOCK

본 장에서는 DBMS_LOCK 패키지의 기본 개념과 패키지 내의 프로시저를 사용하는 방법을 설명한다.

29.1. 개요DBMS_LOCK현재 SLEEP 기능만 구현되어 있는 패키지이다. 추후 락을 관리하는 기능이 추가될 예정이

다.

29.2. 프로시저본 절에서는 DBMS_DBMS_LOCK 패키지에서 제공하는 프로시저를 알파벳 순으로 설명한다.

29.2.1. SLEEP

현재 세션을 일정 시간만큼 대기시킨다.

SLEEP 프로시저의 세부 내용은 다음과 같다.

● 프로토타입

DBMS_LOCK.SLEEP

(

seconds IN NUMBER

);

● 파라미터

설명파라미터

대기 시간 (초)이다.seconds

● 예제

DECLARE

second NUMBER;

BEGIN

second := 0.11;

DBMS_LOCK.SLEEP(second);

제29장 DBMS_LOCK 239

Page 262: [11]-TmaxData - Tibero RDBMS 4 SP1... · 2019-06-26 · 본 제품은 “OpenSSL”, “RSA Data Security, Inc.”, “Apache Foundation” 및 “Jean-loup Gailly와 Mark Adler”

END;

/

240 Tibero RDBMS tbPSM 참조 안내서

Page 263: [11]-TmaxData - Tibero RDBMS 4 SP1... · 2019-06-26 · 본 제품은 “OpenSSL”, “RSA Data Security, Inc.”, “Apache Foundation” 및 “Jean-loup Gailly와 Mark Adler”

제30장 UTL_I18N

본 장에서는 UTL_I18N 패키지의 기본 개념과 패키지 내의 프로시저와 함수를 사용하는 방법을 설명한다.

30.1. 개요UTL_I18N은 국가, 언어들 간의 다양한 변환 및 호환 기능을 제공한다.

30.2. 프로시저와 함수본 절에서는 UTL_I18N 패키지에서 제공하는 프로시저와 함수를 알파벳 순으로 설명한다.

30.2.1. RAW_TO_CHAR

입력받은 RAW 데이터를 현재 데이터베이스 문자 집합 문자열로 변환한다.

RAW_TO_CHAR 함수의 세부 내용은 다음과 같다.

● 프로토타입

UTL_I18N.RAW_TO_CHAR

(

data IN RAW,

src_charset IN VARCHAR2

)

RETURN VARCHAR2;

● 파라미터

설명파라미터

입력 문자열의 바이너리 데이터이다.data

입력 데이터 문자열의 문자 집합이다.src_charset

● 예제

DECLARE

v_in_raw raw(100) := '74696265726F';

x varchar2(100);

BEGIN

제30장 UTL_I18N 241

Page 264: [11]-TmaxData - Tibero RDBMS 4 SP1... · 2019-06-26 · 본 제품은 “OpenSSL”, “RSA Data Security, Inc.”, “Apache Foundation” 및 “Jean-loup Gailly와 Mark Adler”

x := UTL_I18N.RAW_TO_CHAR (v_in_raw, 'UTF8');

END;

30.2.2. STRING_TO_RAW

현재 데이터베이스 문자 집합인 입력문자열을 다른 문자 집합의 문자열 바이너리 데이터로 변환한다.

STRING_TO_RAW 함수의 세부 내용은 다음과 같다.

● 프로토타입

UTL_I18N.STRING_TO_RAW

(

data IN VARCHAR2,

dst_charset IN VARCHAR2

)

RETURN RAW;

● 파라미터

설명파라미터

현재 데이터베이스 문자 집합의 입력 문자열이다.data

변환하려는 문자 집합이다.dst_charset

● 예제

DECLARE

v_in_string varchar2(100) := 'tibero';

x raw(100);

BEGIN

x := UTL_I18N.STRING_TO_RAW (v_in_string, 'UTF8');

END;

242 Tibero RDBMS tbPSM 참조 안내서

Page 265: [11]-TmaxData - Tibero RDBMS 4 SP1... · 2019-06-26 · 본 제품은 “OpenSSL”, “RSA Data Security, Inc.”, “Apache Foundation” 및 “Jean-loup Gailly와 Mark Adler”

제31장 DBMS_SESSION

본 장에서는 DBMS_SESSION 패키지의 기본 개념과 패키지 내의 프로시저와 함수를 사용하는 방법을 설

명한다.

31.1. 개요DBMS_SESSION세션의 식별자를 설정하고, 시스템에 고유한 세션의 식별자를 가져오는데 사용되는 패

키지이다.

31.2. 프로시저본 절에서는 DBMS_DBMS_SESSION 패키지에서 제공하는 프로시저와 함수를 알파벳 순으로 설명한다.

31.2.1. CLEAR_IDENTIFIER

현재 세션의 IDENTIFIER를 NULL로 설정한다.

SET_IDENTIFIER 프로시저의 세부 내용은 다음과 같다.

● 프로토타입

DBMS_SESSION.CLEAR_IDENTIFIER

● 예제

BEGIN

DBMS_SESSION.CLEAR_IDENTIFIER;

END;

/

SELECT CLIENT_IDENTIFIER FROM V$SESSION;

31.2.2. UNIQUE_SESSION_ID

시스템 유일의 세션 식별자를 반환한다. 세션 식별자는 64byte이다.

UNIQUE_SESSION_ID 함수의 세부 내용은 다음과 같다.

● 프로토타입

제31장 DBMS_SESSION 243

Page 266: [11]-TmaxData - Tibero RDBMS 4 SP1... · 2019-06-26 · 본 제품은 “OpenSSL”, “RSA Data Security, Inc.”, “Apache Foundation” 및 “Jean-loup Gailly와 Mark Adler”

DBMS_SESSION.UNIQUE_SESSION_ID RETURN VARCHAR2

● 예제

DECLARE

u_sess_id VARCHAR2(64);

BEGIN

u_sess_id := DBMS_SESSION.UNIQUE_SESSION_ID;

DBMS_OUTPUT.PUT_LINE(u_sess_id);

END;

/

31.2.3. SET_IDENTIFIER

세션의 CLIENT_IDENTIFIER를 설정한다.

SET_IDENTIFIER 프로시저의 세부 내용은 다음과 같다.

● 프로토타입

DBMS_SESSION.SET_IDENTIFIER

(

client_id IN NUMBER

);

● 파라미터

설명파라미터

클라이언트 식별자이다. 64byte 이상은 무시된다.client_id

● 예제

DECLARE

client_id VARCHAR2(64);

BEGIN

client_id := 'MY_CLIENT_ID';

DBMS_SESSION.SET_IDENTIFIER(client_id);

END;

/

SELECT CLIENT_IDENTIFIER FROM V$SESSION;

244 Tibero RDBMS tbPSM 참조 안내서

Page 267: [11]-TmaxData - Tibero RDBMS 4 SP1... · 2019-06-26 · 본 제품은 “OpenSSL”, “RSA Data Security, Inc.”, “Apache Foundation” 및 “Jean-loup Gailly와 Mark Adler”

색인

Symbols3DES, 31, 205

AAES, 206

CCBC, 206

CFB, 206

DDBMS_APM 패키지, 191

CREATE_SNAPSHOT 프로시저, 191

REPORT_TEXT 프로시저, 192

DBMS_APM 패키지의 프로시저 목록, 191

DBMS_APPLICATION_INFO 패키지

READ_CLIENT_INFO 프로시저, 233

READ_MODULE 프로시저, 234

SET_ACTION 프로시져, 234

SET_CLIENT_INFO 프로시져, 235

SET_MODULE 프로시져, 236

SET_SESSION_LONGOPS 프로시져, 237

DBMS_APPLICATION_INFO.READ_CLIENT_INFO,

233

DBMS_APPLICATION_INFO.READ_MODULE, 234

DBMS_APPLICATION_INFO.SET_ACTION, 234

DBMS_APPLICATION_INFO.SET_CLIENT_INFO, 235

DBMS_APPLICATION_INFO.SET_MODULE, 236

DBMS_APPLICATION_INFO.SET_SESSION_LON

GOPS, 237

DBMS_CRYPTO 패키지

DECRYPT 프로시저와 함수, 207

ENCRYPT 프로시저와 함수, 209

HASH 함수, 210

DBMS_CRYPTO.DECRYPT, 207

DBMS_CRYPTO.ENCRYPT, 209

DBMS_CRYPTO.HASH, 210

DBMS_ERRLOG 패키지

CREATE_ERROR_LOG 프로시저와 함수, 225

DBMS_ERRLOG.CREATE_ERROR_LOG, 225

DBMS_JAVA 패키지

LONGNAME 함수, 150

SET_OUTPUT 프로시저, 149

SHORTNAME 함수, 150

DBMS_JOB.BROKEN, 111

DBMS_JOB.CHANGE, 112

DBMS_JOB.INTERVAL, 113

DBMS_JOB.NEXT_DATE, 114

DBMS_JOB.REMOVE, 115

DBMS_JOB.RUN, 115

DBMS_JOB.SUBMIT, 116

DBMS_JOB.WHAT, 117

DBMS_JOB패키지

BROKEN 프로시저, 111

CHANGE 프로시저, 112

INTERVAL 프로시저, 113

NEXT_DATE 프로시저, 114

REMOVE 프로시저, 115

RUN 프로시저, 115

SUBMIT 프로시저, 116

WHAT 프로시저, 117

DBMS_LOB 패키지

APPEND 프로시저, 9

COMPARE 함수, 22

COPY 프로시저, 10

CREATETEMPORARY 프로시저, 12

ERASE 프로시저, 13

FREETEMPORARY 프로시저, 15

GETLENGTH 함수, 24

INSTR 함수, 25

ISTEMPORARY 함수, 27

READ 프로시저, 16

SUBSTR 함수, 28

TRIM 프로시저, 17

WRITE 프로시저, 19

WRITEAPPEND 프로시저, 20

DBMS_LOB 패키지 상수, 8

DBMS_LOB.APPEND, 9

DBMS_LOB.COMPARE, 22

색인 245

Page 268: [11]-TmaxData - Tibero RDBMS 4 SP1... · 2019-06-26 · 본 제품은 “OpenSSL”, “RSA Data Security, Inc.”, “Apache Foundation” 및 “Jean-loup Gailly와 Mark Adler”

DBMS_LOB.COPY, 10

DBMS_LOB.CREATETEMPORARY, 12

DBMS_LOB.ERASE, 13

DBMS_LOB.FREETEMPORARY, 15

DBMS_LOB.GETLENGTH, 24

DBMS_LOB.INSTR, 25

DBMS_LOB.ISTEMPORARY, 27

DBMS_LOB.READ, 16

DBMS_LOB.SUBSTR, 28

DBMS_LOB.TRIM, 17

DBMS_LOB.WRITE, 19

DBMS_LOB.WRITEAPPEND, 21

DBMS_LOCK 패키지

SLEEP 프로시저, 239

DBMS_LOCK.SLEEP, 239

DBMS_MVIEW.EXPLAIN_REWRITE, 193

DBMS_MVIEW.REFRESH, 194

DBMS_MVIEW패키지

EXPLAIN_REWRITE 프로시저, 193

REFRESH 프로시저, 194

DBMS_OBFUSCATION 패키지

DES3DESCRYPT 프로시저와 함수, 32

DES3DESENCRYPT 프로시저와 함수, 34

DES3GETKEY 프로시저와 함수, 36

DESDECRYPT 프로시저와 함수, 38

DESENCRYPT 프로시저와 함수, 40

DESGETKEY 프로시저와 함수, 41

DBMS_OBFUSCATION_TOOLKIT.DES3DECRYPT,

32

DBMS_OBFUSCATION_TOOLKIT.DES3ENCRYPT,

34

DBMS_OBFUSCATION_TOOLKIT.DES3GETKEY, 36

DBMS_OBFUSCATION_TOOLKIT.DESDECRYPT, 38

DBMS_OBFUSCATION_TOOLKIT.DESENCRYPT, 40

DBMS_OBFUSCATION_TOOLKIT.DESGETKEY, 41

DBMS_OUTPUT 패키지

DISABLE 프로시저, 45

ENABLE 프로시저, 46

GETLINE, GETLINES 프로시저, 47

NEW_LINE프로시저, 49

PUT, PUT_LINE 프로시저, 49

DBMS_OUTPUT 패키지 타입, 45

DBMS_OUTPUT.DISABLE, 46

DBMS_OUTPUT.ENABLE, 46

DBMS_OUTPUT.GET_LINE, 47

DBMS_OUTPUT.GET_LINES, 47

DBMS_OUTPUT.NEW_LINE, 49

DBMS_OUTPUT.PUT, 49

DBMS_OUTPUT.PUT_LINE, 49

DBMS_RANDOM 패키지

NORMAL 프로시저와 함수, 215

RANDOM 프로시저와 함수, 215

SEED 프로시저와 함수, 216

STRING 프로시저와 함수, 217

VALUE 프로시저와 함수, 218

DBMS_RANDOM.NORMAL, 215

DBMS_RANDOM.RANDOM, 215

DBMS_RANDOM.SEED, 216

DBMS_RANDOM.STRING, 217

DBMS_RANDOM.VALUE, 218

DBMS_REDEFINITION 패키지

ABORT_REDEF_TABLE 프로시저, 175

FINISH_REDEF_TABLE 프로시저, 176

START_REDEF_TABLE 프로시저, 177

SYNC_INTERIM_TABLE 프로시저, 178

DBMS_REPAIR

ONLINE_INDEX_CLEAN 함수, 229

DBMS_REPAIR 패키지 상수, 229

DBMS_REPAIR.ONLINE_INDEX_CLEAN, 229

DBMS_ROWID 패키지

ROWID_ABSOLUTE_FNO 함수, 147

ROWID_BLOCK_NUMBER 함수, 145

ROWID_CREATE 함수, 144

ROWID_INFO 프로시저, 143

ROWID_ROW_NUMBER 함수, 146

ROWID_SEGMENT 함수, 145

ROWID_TO_RELATIVE_FNO 함수, 147

DBMS_SESSION 패키지

CLEAR_IDENTIFIER 프로시저, 243

SET_IDENTIFIER 프로시저, 244

UNIQUE_SESSION_ID 함수, 243

DBMS_SESSION.CLEAR_IDENTIFIER, 243

DBMS_SESSION.SET_IDENTIFIER, 244

DBMS_SESSION.UNIQUE_SESSION_ID, 243

DBMS_SPACE 패키지

SPACE_USAGE 프로시저, 197

246 Tibero RDBMS tbPSM 참조 안내서

Page 269: [11]-TmaxData - Tibero RDBMS 4 SP1... · 2019-06-26 · 본 제품은 “OpenSSL”, “RSA Data Security, Inc.”, “Apache Foundation” 및 “Jean-loup Gailly와 Mark Adler”

UNUSED_SPACE 프로시저, 200

DBMS_SPACE_ADMIN 패키지

SEGMENT_DUMP 프로시저, 203

DBMS_SPACE_ADMIN 패키지의 상수

SEGMENT_DUMP_EXTENT_MAP, 203

SEGMENTS_DUMP_BITMAP_SUMMARY, 203

DBMS_SPACE_ADMIN.SEGMENT_DUMP, 203

DBMS_SPACE.SPACE_USAGE, 197

DBMS_SPACE.UNUSED_SPACE, 200

DBMS_SQL 패키지

DESCRIBE_COLUMNS 프로시저와 함수, 213

DBMS_SQL패키지

BIND_VARIABLE 프로시저, 121

CLOSE_CURSOR 프로시저, 124

COLUMN_VALUE 프로시저, 125

DEFINE_COLUMN 프로시저, 129

DESC_REC 타입, 120

DESC_REC2 타입, 120

DESC_TAB 타입, 121

DESC_TAB2 타입, 121

DESCRIBE_COLUMNS 프로시저, 132

DESCRIBE_COLUMNS2 프로시저, 133

EXECUTE 함수, 135

EXECUTE_AND_FETCH 함수, 136

FETCH_ROWS 함수, 137

IS_OPEN 함수, 139

LAST_ERROR_POSITION 함수, 140

LAST_ROW_COUNT 함수, 141

OPEN_CURSOR 함수, 139

PARSE 프로시저, 134

DBMS_STATS 패키지

CREATE_STAT_TABLE 프로시저, 51

DELETE_COLUMN_STATS 프로시저, 52, 64

DELETE_DATABASE_STATS 프로시저, 53

DELETE_DICTIONARY_STATS 프로시저, 53

DELETE_INDEX_STATS 프로시저, 53

DELETE_SCHEMA_STATS 프로시저, 54

DELETE_SYSTEM_STATS 프로시저, 55

DELETE_TABLE_STATS 프로시저, 55

DROP_STAT_TABLE 프로시저, 56

EXPORT_COLUMN_STATS 프로시저, 57

EXPORT_DATABASE_STATS 프로시저, 58

EXPORT_INDEX_STATS 프로시저, 58

EXPORT_SCHEMA_STATS 프로시저, 59

EXPORT_SYSTEM_STATS 프로시저, 60

EXPORT_TABLE_STATS 프로시저, 61

GATHER_DATABASE_STATS 프로시저, 61

GATHER_DICTIONARY_STATS 프로시저, 63

GATHER_SCHEMA_STATS 프로시저, 65

GATHER_SYSTEM_STATS 프로시저, 66

GATHER_TABLE_STATS 프로시저, 67

GET_PARAM 함수, 76

IMPORT_COLUMN_STATS 프로시저, 69

IMPORT_DATABASE_STATS 프로시저, 70

IMPORT_INDEX_STATS 프로시저, 70

IMPORT_SCHEMA_STATS 프로시저, 71

IMPORT_SYSTEM_STATS 프로시저, 72

IMPORT_TABLE_STATS 프로시저, 72

LOCAL_TRANSACTION_ID 함수, 76

SET_PARAM 프로시저, 73

SET_SYSTEM_STATS 프로시저, 75

TO_BOOLEAN 함수, 77

DBMS_STATS.CREATE_STAT_TABLE, 51

DBMS_STATS.DELETE_COLUMN_STATS, 52

DBMS_STATS.DELETE_DATABASE_STATS, 53

DBMS_STATS.DELETE_DICTIONARY_STATS, 53

DBMS_STATS.DELETE_INDEX_STATS, 53

DBMS_STATS.DELETE_SCHEMA_STATS, 54

DBMS_STATS.DELETE_SYSTEM_STATS, 55

DBMS_STATS.DELETE_TABLE_STATS, 55

DBMS_STATS.DROP_STAT_TABLE, 56

DBMS_STATS.EXPORT_COLUMN_STATS, 57

DBMS_STATS.EXPORT_DATABASE_STATS, 58

DBMS_STATS.EXPORT_INDEX_STATS, 58

DBMS_STATS.EXPORT_SCHEMA_STATS, 59

DBMS_STATS.EXPORT_SYSTEM_STATS, 60

DBMS_STATS.EXPORT_TABLE_STATS, 61

DBMS_STATS.GATHER_DATABASE_STATS, 61

DBMS_STATS.GATHER_DICTIONARY_STATS, 63

DBMS_STATS.GATHER_INDEX_STATS, 64

DBMS_STATS.GATHER_SCHEMA_STATS, 65

DBMS_STATS.GATHER_SYSTEM_STATS, 66

DBMS_STATS.GATHER_TABLE_STATS, 67

DBMS_STATS.GET_PARAM, 76

DBMS_STATS.IMPORT_COLUMN_STATS, 69

DBMS_STATS.IMPORT_DATABASE_STATS, 70

색인 247

Page 270: [11]-TmaxData - Tibero RDBMS 4 SP1... · 2019-06-26 · 본 제품은 “OpenSSL”, “RSA Data Security, Inc.”, “Apache Foundation” 및 “Jean-loup Gailly와 Mark Adler”

DBMS_STATS.IMPORT_INDEX_STATS, 70

DBMS_STATS.IMPORT_SCHEMA_STATS, 71

DBMS_STATS.IMPORT_SYSTEM_STATS, 72

DBMS_STATS.IMPORT_TABLE_STATS, 72

DBMS_STATS.LOCAL_TRANSACTION_ID, 76

DBMS_STATS.SET_PARAM, 73

DBMS_STATS.SET_SYSTEM_STATS, 75

DBMS_STATS.TO_BOOLEAN, 77

DBMS_SYSTEM 패키지

SET_SQL_TRACE_IN_SESSION 프로시저와 함수,

221

DBMS_SYSTEM.SET_SQL_TRACE_IN_SESSION,

221

DBMS_TRANSACTION 패키지

COMMIT 프로시저, 79

ROLLBACK, ROLLBACK_SAVEPOINT 프로시저, 80

SAVEPOINT 프로시저, 80

DBMS_TRANSACTION.COMMIT, 79

DBMS_TRANSACTION.ROLLBACK, 80

DBMS_TRANSACTION.ROLLBACK_SAVEPOINT, 80

DBMS_TRANSACTION.SAVEPOINT, 80

DBMS_UTILITY 패키지

COMMA_TO_TABLE 프로시저와 함수, 223

GET_TIME 프로시저와 함수, 224

DBMS_UTILITY.COMMA_TO_TABLE, 223

DBMS_UTILITY.GET_TIME, 224

DES, 31, 205

Dynamic SQL 문장, 119

EECB, 206

FFUNCTION BASE64_DECODE, 181

FUNCTION BASE64_ENCODE, 182

FUNCTION ESCAPE, 185

FUNCTION EXECUTE, 135

FUNCTION EXECUTE_AND_FETCH, 136

FUNCTION FETCH_ROWS, 137

FUNCTION FGETPOS, 169

FUNCTION FOPEN, 170

FUNCTION IS_OPEN, 139

FUNCTION LAST_ERROR_POSITION, 140

FUNCTION LAST_ROW_COUNT, 141

FUNCTION LONGNAME, 150

FUNCTION OPEN_CURSOR, 139

FUNCTION REQUEST, 189

FUNCTION ROWID_ABSOLUTE_FNO, 147

FUNCTION ROWID_BLOCK_NUMBER, 145

FUNCTION ROWID_CREATE, 144

FUNCTION ROWID_ROW_NUMBER, 146

FUNCTION ROWID_SEGMENT, 145

FUNCTION ROWID_TO_RELATIVE_FNO, 147

FUNCTION SHORTNAME, 150

FUNCTION TEXT_ENCODE, 183

FUNCTION UNESCAPE, 186

IINVALID_ARGVAL, 7

LLOB 패키지

CLOSE 프로시저, 8

OPEN 프로시저, 8

LOBMAXSIZE, 7

MMD4, 207

MD5, 207

NNONE, 206

OOFB, 206

PPKCS5, 206

PROCEDURE ABORT_REDEF_TABLE, 175

PROCEDURE BIND_VARIABLE, 121

PROCEDURE CLOSE_CURSOR, 124

PROCEDURE COLUMN_VALUE, 125

PROCEDURE CREATE_SNAPSHOT, 191

248 Tibero RDBMS tbPSM 참조 안내서

Page 271: [11]-TmaxData - Tibero RDBMS 4 SP1... · 2019-06-26 · 본 제품은 “OpenSSL”, “RSA Data Security, Inc.”, “Apache Foundation” 및 “Jean-loup Gailly와 Mark Adler”

PROCEDURE DEFINE_COLUMN, 129

PROCEDURE DESCRIBE_COLUMNS, 120, 121, 132

PROCEDURE DESCRIBE_COLUMNS2, 120, 121, 133

PROCEDURE FCLOSE, 154

PROCEDURE FCLOSE_ALL, 155

PROCEDURE FCOPY, 156

PROCEDURE FFLUSH, 157

PROCEDURE FGETATTR, 158

PROCEDURE FINISH_REDEF_TABLE, 176

PROCEDURE FREMOVE, 159

PROCEDURE FRENAME, 160

PROCEDURE FSEEK, 161

PROCEDURE GET_LINE, 162

PROCEDURE GET_RAW, 163

PROCEDURE IS_OPEN, 172

PROCEDURE NEW_LINE, 164

PROCEDURE PARSE, 132, 133, 134

PROCEDURE PUT, 165

PROCEDURE PUT_LINE, 168

PROCEDURE PUT_RAW, 167

PROCEDURE PUTF, 166

PROCEDURE REPORT_TEXT, 192

PROCEDURE ROWID_INFO, 143

PROCEDURE SET_OUTPUT, 149

PROCEDURE START_REDEF_TABLE, 177

PROCEDURE SYNC_INTERIM_TABLE, 178

SSHA-1, 207

TTYPE DESC_REC, 120, 132

TYPE DESC_REC2, 120, 133

TYPE DESC_TAB, 120, 121, 132

TYPE DESC_TAB2, 120, 121, 133

UUTL_DECODE 패키지

BASE64_DECODE 함수, 181

TEXT_ENCODE 함수, 183

UTL_ENCODE 패키지

BASE64_ENCODE 함수, 182

UTL_FILE 패키지

FCLOSE 프로시저, 154

FCLOSE_ALL 프로시저, 155

FCOPY 프로시저, 156

FFLUSH 프로시저, 157

FGETATTR 함수, 158

FGETPOS 함수, 169

FOPEN 함수, 170

FREMOVE 프로시저, 159

FRENAME 프로시저, 160

FSEEK 프로시저, 161

GET_LINE 프로시저, 162

GET_RAW 프로시저, 163

IS_OPEN 함수, 172

NEW_LINE 프로시저, 164

PUT 프로시저, 165

PUT_LINE 프로시저, 168

PUT_RAW 프로시저, 167

PUTF 프로시저, 166

UTL_HTTP 패키지

REQUEST 함수, 189

UTL_I18N 패키지

RAW_TO_CHAR 프로시저와 함수, 241

STRING_TO_RAW 프로시저와 함수, 242

UTL_I18N.RAW_TO_CHAR, 241

UTL_I18N.STRING_TO_RAW, 242

UTL_RAW 패키지

BIT_AND 함수, 83

BIT_COMPLEMENT 함수, 84

BIT_OR 함수, 85

BIT_XOR 함수, 86

CAST_FROM_BINARY_DOUBLE 함수, 87

CAST_FROM_BINARY_FLOAT 함수, 88

CAST_FROM_BINARY_INTEGER 함수, 89

CAST_FROM_NUMBER 함수, 91

CAST_TO_BINARY_DOUBLE 함수, 92

CAST_TO_BINARY_FLOAT 함수, 93

CAST_TO_BINARY_INTEGER 함수, 94

CAST_TO_NUMBER 함수, 95

CAST_TO_RAW 함수, 96

CAST_TO_VARCHAR2 함수, 97

COMPARE 함수, 98

CONCAT 함수, 99

색인 249

Page 272: [11]-TmaxData - Tibero RDBMS 4 SP1... · 2019-06-26 · 본 제품은 “OpenSSL”, “RSA Data Security, Inc.”, “Apache Foundation” 및 “Jean-loup Gailly와 Mark Adler”

COPIES 함수, 101

LENGTH 함수, 102

OVERLAY 함수, 103

REVERSE 함수, 104

SUBSTR 함수, 105

TRANSLATE 함수, 106

TRANSLITERATE 함수, 107

XRANGE 함수, 108

UTL_RAW.BIT_AND, 83

UTL_RAW.BIT_COMPLEMENT, 84

UTL_RAW.BIT_OR, 85

UTL_RAW.BIT_XOR, 86

UTL_RAW.CAST_FROM_BINARY_DOUBLE, 87

UTL_RAW.CAST_FROM_BINARY_FLOAT, 88

UTL_RAW.CAST_FROM_BINARY_INTEGER, 89

UTL_RAW.CAST_FROM_NUMBER, 91

UTL_RAW.CAST_TO_BINARY_DOUBLE, 92

UTL_RAW.CAST_TO_BINARY_FLOAT, 93

UTL_RAW.CAST_TO_BINARY_INTEGER, 94

UTL_RAW.CAST_TO_NUMBER, 95

UTL_RAW.CAST_TO_RAW, 96

UTL_RAW.CAST_TO_VARCHAR2, 97

UTL_RAW.COMPARE, 98

UTL_RAW.CONCAT, 99

UTL_RAW.COPIES, 101

UTL_RAW.LENGTH, 102

UTL_RAW.OVERLAY, 103

UTL_RAW.REVERSE, 104

UTL_RAW.SUBSTR, 105

UTL_RAW.TRANSLATE, 106

UTL_RAW.TRANSLITERATE, 107

UTL_RAW.XRANGE, 108

UTL_URL 패키지

ESCAPE 함수, 185

UNESCAPE 함수, 186

VV$SESSION, 221

ZZERO, 206

뷰안의 패키지에 대한 권한, 4

사용자 정의 패키지, 1

시스템 패키지, 4

시스템 패키지의 목록, 5

온라인 테이블 재정의, 175

컬럼 대응 정보, 177

패키지, 1

DBMS_APPLICATION_INFO, 233

DBMS_CRYPTO, 205, 207

DBMS_ERRLOG, 225

DBMS_JAVA, 149

DBMS_JOB, 111

DBMS_LOB, 7

DBMS_LOCK, 239

DBMS_MVIEW, 193

DBMS_OBFUSCATION, 31, 205

DBMS_OUTPUT, 45

DBMS_RANDOM, 215

DBMS_REDEFINITION, 175

DBMS_REPAIR, 229

DBMS_ROWID, 143

DBMS_SESSION, 243

DBMS_SPACE, 197

DBMS_SPACE_ADMIN, 203

DBMS_SQL, 119

DBMS_STATS, 51

DBMS_SYSTEM, 221

DBMS_TRANSACTION, 79

DBMS_TYPES, 213

DBMS_UTILITY, 223

UTL_ENCODE, 181

UTL_FILE, 153

250 Tibero RDBMS tbPSM 참조 안내서

Page 273: [11]-TmaxData - Tibero RDBMS 4 SP1... · 2019-06-26 · 본 제품은 “OpenSSL”, “RSA Data Security, Inc.”, “Apache Foundation” 및 “Jean-loup Gailly와 Mark Adler”

UTL_HTTP, 189

UTL_I18N, 241

UTL_RAW, 83

UTL_URL, 185

패키지 구현부, 2

패키지 선언부, 2

색인 251

Page 274: [11]-TmaxData - Tibero RDBMS 4 SP1... · 2019-06-26 · 본 제품은 “OpenSSL”, “RSA Data Security, Inc.”, “Apache Foundation” 및 “Jean-loup Gailly와 Mark Adler”