Amazon RDS for Db2 외부 저장 프로시저

Amazon RDS for Db2 외부 저장 프로시저

이 문서는 Amazon RDS 사용자 가이드의 Db2 관련 페이지를 한국어로 설명합니다.

출처: 문서

본문

외부 루틴을 생성하고 이를 외부 저장 프로시저로 Amazon RDS for Db2 데이터베이스에 등록할 수 있습니다. 현재 RDS for Db2는 외부 저장 프로시저에 대해 Java 기반 루틴만 지원합니다.

Java 기반 외부 저장 프로시저

Java 기반 외부 저장 프로시저는 RDS for Db2 데이터베이스에 외부 저장 프로시저로 등록하는 외부 Java 루틴입니다.

Topics
  • Java 기반 외부 저장 프로시저의 제한 사항
  • Java 기반 외부 저장 프로시저 구성

Java 기반 외부 저장 프로시저의 제한 사항

외부 루틴을 개발하기 전에 다음 제한 사항을 고려하세요.

  • 외부 루틴을 만들려면 Db2가 제공하는 JDK(Java Development Kit)를 사용하세요. 자세한 내용은 Db2 데이터베이스 제품에 대한 Java 소프트웨어 지원을 참조하세요.

  • Java 프로그램은 /tmp 디렉터리에서만 파일을 생성할 수 있으며, Amazon RDS는 이러한 파일에 실행(executable) 권한이나 Set User ID(SUID) 권한을 활성화하는 것을 지원하지 않습니다. 또한 Java 프로그램은 소켓 시스템 호출이나 다음 시스템 호출을 사용할 수 없습니다.

    _sysctl
    acct
    afs_syscall
    bpf
    capset
    chown
    chroot
    create_module
    delete_module
    fanotify_init
    fanotify_mark
    finit_module
    fsconfig
    fsopen
    fspick
    get_kernel_syms
    getpmsg
    init_module
    mount
    move_mount
    nfsservctl
    open_by_handle_at
    open_tree
    pivot_root
    putpmsg
    query_module
    quotactl
    reboot
    security
    setdomainname
    setfsuid
    sethostname
    sysfs
    tuxcall
    umount2
    uselib
    ustat
    vhangup
    vserver
    
  • Db2 외부 루틴에 대한 추가 제한 사항은 IBM Db2 설명서의 외부 루틴에 대한 제한 사항을 참조하세요.

Java 기반 외부 저장 프로시저 구성

외부 저장 프로시저를 구성하려면 외부 루틴이 포함된 .jar 파일을 생성하고, RDS for Db2 데이터베이스에 설치한 다음, 외부 저장 프로시저로 등록합니다.

Topics
  • Step 1: 외부 저장 프로시저 활성화
  • Step 2: 외부 루틴이 포함된 .jar 파일 설치
  • Step 3: 외부 저장 프로시저 등록
  • Step 4: 외부 저장 프로시저 검증

Step 1: 외부 저장 프로시저 활성화

외부 저장 프로시저를 활성화하려면 DB 인스턴스와 연결된 사용자 지정 파라미터 그룹에서 db2_alternate_authz_behaviour 매개변수를 다음 값 중 하나로 설정합니다.

  • EXTERNAL_ROUTINE_DBADM – DBADM 권한이 있는 모든 사용자, 그룹 또는 역할에 CREATE_EXTERNAL_ROUTINE 권한을 암시적으로 부여합니다.
  • EXTERNAL_ROUTINE_DBAUTH – DBADM 권한이 있는 사용자가 CREATE_EXTERNAL_ROUTINE 권한을 모든 사용자, 그룹 또는 역할에 부여할 수 있게 허용합니다. 이 경우 DBADM 권한이 있는 사용자조차도 이 권한이 암시적으로 부여되지 않습니다.

이 설정에 대한 자세한 내용은 IBM Db2 설명서의 GRANT(데이터베이스 권한) 문을 참조하세요.

AWS Management Console, AWS CLI 또는 Amazon RDS API를 사용하여 사용자 지정 파라미터 그룹을 생성하고 수정할 수 있습니다.

사용자 지정 파라미터 그룹에서 db2_alternate_authz_behaviour 매개변수를 구성하려면
  1. DB 인스턴스가 사용 중인 파라미터 그룹과 다른 사용자 지정 DB 파라미터 그룹을 사용하려면 새 DB 파라미터 그룹을 생성하세요. BYOL(Bring Your Own License) 모델을 사용하는 경우 새 사용자 지정 파라미터 그룹에 IBM ID가 포함되어 있는지 확인하세요. 이러한 ID에 대한 정보는 Db2용 BYOL(Bring Your Own License)을 위한 IBM ID를 참조하세요. DB 파라미터 그룹 생성에 대한 자세한 내용은 Amazon RDS에서 DB 파라미터 그룹 생성을 참조하세요.
  2. 사용자 지정 파라미터 그룹에서 db2_alternate_authz_behaviour 매개변수의 값을 설정하세요. 파라미터 그룹 수정에 대한 자세한 내용은 Amazon RDS에서 DB 파라미터 그룹의 파라미터 수정을 참조하세요.
사용자 지정 파라미터 그룹에서 db2_alternate_authz_behaviour 매개변수를 구성하려면
  1. DB 인스턴스가 사용 중인 파라미터 그룹과 다른 사용자 지정 DB 파라미터 그룹을 사용하려면 create-db-parameter-group 명령을 실행하여 사용자 지정 파라미터 그룹을 생성하세요. BYOL(Bring Your Own License) 모델을 사용하는 경우 새 사용자 지정 파라미터 그룹에 IBM ID가 포함되어 있는지 확인하세요. 이러한 ID에 대한 정보는 Db2용 BYOL(Bring Your Own License)을 위한 IBM ID를 참조하세요.

    다음 필수 옵션을 포함하세요.

    • --db-parameter-group-name – 생성 중인 파라미터 그룹의 이름.
    • --db-parameter-group-family – Db2 엔진 에디션과 주 버전. 유효한 값은 db2-se-11.5 및 db2-ae-11.5입니다.
    • --description – 이 파라미터 그룹에 대한 설명.

    DB 파라미터 그룹 생성에 대한 자세한 내용은 Amazon RDS에서 DB 파라미터 그룹 생성을 참조하세요.

    다음 예제는 파라미터 그룹 패밀리 db2-se-11.5에 대해 MY_EXT_SP_PARAM_GROUP이라는 사용자 지정 파라미터 그룹을 생성하는 방법을 보여줍니다.

    Linux, macOS 또는 Unix의 경우:

    aws rds create-db-parameter-group \
    --region us-east-1 \
    --db-parameter-group-name MY_EXT_SP_PARAM_GROUP \
    --db-parameter-group-family db2-se-11.5 \ 
    --description "test db2 external routines"
    

    Windows의 경우:

    aws rds create-db-parameter-group ^
    --region us-east-1 ^
    --db-parameter-group-name MY_EXT_SP_PARAM_GROUP ^
    --db-parameter-group-family db2-se-11.5 ^ 
    --description "test db2 external routines"
    
  2. modify-db-parameter-group 명령을 실행하여 사용자 지정 파라미터 그룹의 db2_alternate_authz_behaviour 매개변수를 수정합니다.

    다음 필수 옵션을 포함하세요.

    • --db-parameter-group-name – 생성한 파라미터 그룹의 이름.
    • --parameters – 파라미터 업데이트에 대한 파라미터 이름, 값, 적용 방법의 배열.

    파라미터 그룹 수정에 대한 자세한 내용은 Amazon RDS에서 DB 파라미터 그룹의 파라미터 수정을 참조하세요.

    다음 예제는 db2_alternate_authz_behaviour 값을 EXTERNAL_ROUTINE_DBADM으로 설정하여 MY_EXT_SP_PARAM_GROUP 파라미터 그룹을 수정하는 방법을 보여줍니다.

    Linux, macOS 또는 Unix의 경우:

    aws rds modify-db-parameter-group \
        --db-parameter-group-name MY_EXT_SP_PARAM_GROUP \
        --parameters "ParameterName='db2_alternate_authz_behaviour',ParameterValue='EXTERNAL_ROUTINE_DBADM',ApplyMethod=immediate"
    

    Windows의 경우:

    aws rds modify-db-parameter-group ^
        --db-parameter-group-name MY_EXT_SP_PARAM_GROUP ^
        --parameters "ParameterName='db2_alternate_authz_behaviour',ParameterValue='EXTERNAL_ROUTINE_DBADM',ApplyMethod=immediate"
    
사용자 지정 파라미터 그룹에서 db2_alternate_authz_behaviour 매개변수를 구성하려면
  1. DB 인스턴스가 사용 중인 파라미터 그룹과 다른 사용자 지정 DB 파라미터 그룹을 사용하려면 Amazon RDS API CreateDBParameterGroup 작업을 사용하여 새 DB 파라미터 그룹을 생성하세요. BYOL(Bring Your Own License) 모델을 사용하는 경우 새 사용자 지정 파라미터 그룹에 IBM Db2 ID가 포함되어 있는지 확인하세요. 이러한 ID에 대한 정보는 Db2용 BYOL(Bring Your Own License)을 위한 IBM ID를 참조하세요.

    다음 필수 매개변수를 포함하세요.

    • DBParameterGroupName
    • DBParameterGroupFamily
    • Description

    DB 파라미터 그룹 생성에 대한 자세한 내용은 Amazon RDS에서 DB 파라미터 그룹 생성을 참조하세요.

  2. 생성한 사용자 지정 파라미터 그룹의 db2_alternate_authz_behaviour 매개변수를 RDS API ModifyDBParameterGroup 작업을 사용하여 수정합니다.

    다음 필수 매개변수를 포함하세요.

    • DBParameterGroupName
    • Parameters

    파라미터 그룹 수정에 대한 자세한 내용은 Amazon RDS에서 DB 파라미터 그룹의 파라미터 수정을 참조하세요.

Step 2: 외부 루틴이 포함된 .jar 파일 설치

Java 루틴을 만든 후 .jar 파일을 생성하고 db2 "call sqlj.install_jar('file:file_path',jar_ID)"를 실행하여 RDS for Db2 데이터베이스에 설치하세요.

다음 예제는 Java 루틴을 생성하고 RDS for Db2 데이터베이스에 설치하는 방법을 보여줍니다. 이 예제에는 프로세스를 테스트하는 데 사용할 수 있는 간단한 루틴의 샘플 코드가 포함되어 있습니다. 이 예제는 다음 사항을 가정합니다.

  • Java 코드는 Db2가 설치된 서버에서 컴파일됩니다. IBM 제공 JDK로 컴파일하지 않으면 설명할 수 없는 오류가 발생할 수 있으므로 이는 모범 사례입니다.
  • 서버에 RDS for Db2 데이터베이스가 로컬로 카탈로그화되어 있습니다.

다음 샘플 코드로 프로세스를 시험해 보려면 코드를 복사하여 MYJAVASP.java라는 파일에 저장하세요.

import java.sql.*;
public class MYJAVASP
{
public static void my_JAVASP (String inparam) throws SQLException, Exception
{
try
{
// Obtain the calling context's connection details.
Connection myConn = DriverManager.getConnection("jdbc:default:connection");
String myQuery = "INSERT INTO TEST.TEST_TABLE VALUES (?, CURRENT DATE)";
PreparedStatement myStmt = myConn.prepareStatement(myQuery);
myStmt.setString(1, inparam);
myStmt.executeUpdate();
}
catch (SQLException sql_ex)
{
throw sql_ex;
}
catch (Exception ex)
{
throw ex;
}
}

다음 명령은 Java 루틴을 컴파일합니다.

~/sqllib/java/jdk64/bin/javac MYJAVASP.java

다음 명령은 .jar 파일을 생성합니다.

~/sqllib/java/jdk64/bin/jar cvf MYJAVASP.jar MYJAVASP.class

다음 명령은 MY_DB2_DATABASE라는 데이터베이스에 연결하고 .jar 파일을 설치합니다.

db2 "connect to MY_DB2_DATABASE user master_username using master_password" 

db2 "call sqlj.install_jar('file:/tmp/MYJAVASP.jar','MYJAVASP')"
db2 "call sqlj.refresh_classes()"

Step 3: 외부 저장 프로시저 등록

RDS for Db2 데이터베이스에 .jar 파일을 설치한 후 db2 CREATE PROCEDURE 또는 db2 REPLACE PROCEDURE 명령을 실행하여 저장 프로시저로 등록합니다.

다음 예제는 데이터베이스에 연결하고 이전 단계에서 만든 Java 루틴을 저장 프로시저로 등록하는 방법을 보여줍니다.

db2 "connect to MY_DB2_DATABASE user master_username using master_password"

create procedure TESTSP.MYJAVASP (in input char(6))
specific myjavasp
dynamic result sets 0
deterministic
language java
parameter style java
no dbinfo
fenced
threadsafe
modifies sql data
program type sub
external name 'MYJAVASP!my_JAVASP';

Step 4: 외부 저장 프로시저 검증

다음 단계를 사용하여 이전 단계에서 등록한 샘플 외부 저장 프로시저를 테스트하세요.

외부 저장 프로시저를 검증하려면
  1. 다음 예제의 TEST.TEST_TABLE 같은 테이블을 생성합니다.

    db2 "create table TEST.TEST_TABLE(C1 char(6), C2 date)"
    
  2. 새 외부 저장 프로시저를 호출합니다. 호출은 상태 0을 반환합니다.

    db2 "call TESTSP.MYJAVASP('test')"
    Return Status = 0
    
  3. 1단계에서 만든 테이블을 쿼리하여 저장 프로시저 호출 결과를 확인합니다.

    db2 "SELECT * from TEST.TEST_TABLE"
    

    쿼리는 다음 예제와 유사한 출력을 생성합니다.

    C1     C2
    ------ ----------
    test   02/05/2024
    

더 알아보기 (Learn more)