[OCI] Autonomous Database에서 Oracle Cloud Infrastructure SDK for PL/SQL a.k.a. PL/SQL SDK를 사용해 보았습니다.

소개


Oracle Cloud Infrastructure SDK for PL/SQL(PL/SQL SDK)이 출시되어 공유 인프라의 Autonomous Database에서 이미 사용할 수 있습니다.
Oracle Cloud Infrastructure Documentation Developer Guide
PL/SQL SDK를 사용하여 오브젝트 스토리지 버킷의 오브젝트 목록을 검색하고 오브젝트 이름을 DB의 테이블에 저장하는 PL/SQL 프로그램을 작성해 보았습니다.

절차


1. 키 쌍 만들기
2. 테넌트, 사용자의 OCID 확인
3. API 키 생성
4. SDK를 이용하기 위한 자격 증명(자격 증명)의 작성
5. PL/SQL SDK를 사용한 프로그램 작성

1. 키 쌍 만들기


이 정보를 참조하여 PEM 형식의 RSA 키 쌍을 만듭니다.
htps : // / cs. cぉd. 오라 cぇ. 코 m/엔-우 s/아아 s/곤텐 t/아피/곤세 pts/아피시 g 닌 g케 y. htm

2. 테넌트, 사용자의 OCID 확인


콘솔에서 테넌트의 OCID, 사용자의 OCID를 확인하고 메모해 둡니다.

3. API 키 생성


「아이덴티티」→「유저」→「유저의 상세」
리소스 필드에서 API 키를 클릭합니다.
공개 키 추가 버튼을 클릭합니다.

공개 키 붙여넣기를 선택하여 만든 키 쌍의 공개 키 내용을 복사하여 붙여넣고 추가를 클릭합니다.

공개 키를 추가한 후 표시되는 지문을 기록해 둡니다.

4. SDK를 이용하기 위한 자격 증명(자격 증명)의 작성


이번에는 MY_SDK_CRED라는 SDK 액세스를 위한 자격 증명을 만듭니다.
private_key에는 작성한 비공개 키의 내용으로부터 헤더(-----BEGIN RSA PRIVATE KEY-----), 꼬리말(-----END RSA PRIVATE KEY-----)를 제외한 부분 를 설명합니다.
SET DEFINE OFF
BEGIN
  DBMS_CLOUD.CREATE_CREDENTIAL(
    credential_name => 'MY_SDK_CRED',
    user_ocid => 'ユーザのOCID',
    tenancy_ocid => 'テナントのOCID',
    private_key => 'MIIE......',
    fingerprint => '公開キーのフィンガープリント'
  );
END;
/
이번에는 Autonomous Database에 표준 탑재된 SQL Developer Web에서 실행했습니다.

5. PL/SQL SDK를 사용하여 PL/SQL 프로시저 작성


이번에는 다음과 같은 PL/SQL 프로시저를 작성했습니다.
· 리전, 네임 스페이스 및 버킷 이름을 받고 해당 스토리지 버킷에있는 객체 목록을 검색하고 검색된 객체의 이름을 object_list 테이블에 삽입
object_list 테이블은 다음 SQL로 작성됩니다.
CREATE TABLE object_list (
object_name VARCHAR2(100)
);
실제로 작성한 PL/SQL 프로시저는 다음과 같습니다.
CREATE OR REPLACE PROCEDURE get_obj_list(namespace IN VARCHAR2, bucket IN VARCHAR2, region_id IN VARCHAR2)
IS

  object_summary dbms_cloud_oci_obs_object_storage_object_summary_tbl;
  response_body  dbms_cloud_oci_obs_object_storage_list_objects_t;
  response       dbms_cloud_oci_obs_object_storage_list_objects_response_t;
  json_obj       json_object_t;
  l_keys         json_key_list;

BEGIN

  -- 指定されたバケット内のオブジェクトリストの取得
  response := dbms_cloud_oci_obs_object_storage.list_objects(
                namespace_name => namespace,
                bucket_name => bucket,
                credential_name => 'MY_SDK_CRED',
                region => region_id);
 
  response_body := response.response_body;

  object_summary := response_body.objects;

  -- 取得したオブジェクト名をobject_list表にINSERT
  FOR i IN object_summary.first..object_summary.last LOOP
     INSERT INTO object_list VALUES (object_summary(i).name);
  END LOOP;
  COMMIT;

END;
/

6. PL/SQL 프로시저의 동작 확인


PL/SQL 프로시저를 작성할 수 있었으므로, 동작을 확인해 보겠습니다.
먼저 object_list 테이블을 비웁니다.
TRUNCATE TABLE object_list;

그런 다음 실제로 테이블에 데이터가 있는지 확인합니다.
SELECT * FROM object_list;

방금 만든 PL/SQL 프로시저를 실행합니다.
여기에서는,
네임스페이스: nrhnlrqdttaw
버킷 이름: MyBucket
지역: ap-tokyo-1
로 실행합니다.
또한 이 버킷에는 5개의 객체가 저장되어 있습니다.
EXECUTE get_obj_list('nrhnlrqdttaw','MyBucket','ap-tokyo-1');

object_list 테이블의 내용을 확인합니다.
SELECT * FROM object_list;

이런 식으로 PL/SQL SDK를 사용하여 버킷의 객체 이름 목록을 검색하고 Autonomous Database의 테이블에 저장할 수있었습니다.
PL/SQL SDK는 오브젝트 스토리지 뿐만 아니라 다양한 OCI의 서비스에 대응하고 있기 때문에, 여러가지 활용할 수 있을 것 같습니다.
앞으로도 여러가지 시험해보고 싶습니다.

좋은 웹페이지 즐겨찾기