DBMS_CLOUD_ADMIN 패키지

이 절에서는 Autonomous Database와 함께 제공되는 DBMS_CLOUD_ADMIN 서브프로그램을 다룹니다.

하위 프로그램 설명

ATTACH_FILE_SYSTEM 프로시저

이 프로시저는 데이터베이스의 디렉토리에 파일 시스템을 연결합니다.

CREATE_DATABASE_LINK 프로시저

이 프로시저는 Target Database에 대한 데이터베이스 링크를 생성합니다. 다른 Autonomous Database 인스턴스, Autonomous Database가 아닌 Oracle Database 또는 Oracle이 관리하는 이기종 연결을 사용하는 비Oracle Database에 대한 데이터베이스 링크를 생성하는 옵션이 있습니다.

DETACH_FILE_SYSTEM 프로시저

이 프로시저는 데이터베이스의 디렉토리에서 파일 시스템을 분리합니다.

DISABLE_EXTERNAL_AUTHENTICATION 프로시저

이 절차에서는 Autonomous Database 인스턴스에 대한 외부 인증을 사용 안함으로 설정합니다.

DROP_DATABASE_LINK 프로시저

이 프로시저는 데이터베이스 링크를 삭제합니다.

ENABLE_EXTERNAL_AUTHENTICATION 프로시저

이 절차에서는 사용자가 지정된 외부 인증 체계를 사용하여 Autonomous Database에 로그온할 수 있습니다.

ATTACH_FILE_SYSTEM 프로시저

이 프로시저는 데이터베이스의 파일 시스템을 연결합니다.

DBMS_CLOUD_ADMIN.ATTACH_FILE_SYSTEM 프로시저는 데이터베이스에 파일 시스템을 연결하고 파일 시스템에 대한 정보를 DBA_CLOUD_FILE_SYSTEMS 뷰에 저장합니다.

구문

DBMS_CLOUD_ADMIN.ATTACH_FILE_SYSTEM (
    file_system_name         IN VARCHAR2,
    file_system_location     IN VARCHAR2,
    directory_name           IN VARCHAR2,
    description              IN VARCHAR2 DEFAULT NULL,
    params                   IN CLOB DEFAULT NULL
);

매개변수

매개변수 설명

file_system_name

파일 시스템의 이름을 지정합니다.

이 매개변수는 필수입니다.

file_system_location

파일 시스템의 위치를 지정합니다.

file_system_location에 제공하는 값은 FQDN(전체 도메인 이름) 및 FQDN:file_path 형식의 파일 경로로 구성됩니다.

예:

  • FQDN: myhost.sub000445.myvcn.oraclevcn.com

    Oracle Cloud Infrastructure File Storage의 경우 파일 시스템을 생성할 때 고급 옵션 표시에서 FQDN을 설정합니다. 자세한 내용은 Creating File Systems를 참조하십시오.

  • 파일 경로: /results

이 매개변수는 필수입니다.

directory_name

연결된 파일 시스템의 디렉토리 이름을 지정합니다. 디렉토리가 있어야 합니다.

이 매개변수는 필수입니다.

description

(선택 사항) 작업에 대한 설명을 제공합니다.

params

파일 시스템에 대한 추가 매개변수를 제공하는 JSON 문자열입니다.

  • nfs_version: NFS가 연결될 때 사용할 NFS 버전을 지정합니다(NFSv3 또는 NFSv4). 적합한 값: 3, 4.

    기본값: 3

예를 들면 다음과 같습니다.

NFSv3 파일 시스템에 연결합니다.

BEGIN
   DBMS_CLOUD_ADMIN.ATTACH_FILE_SYSTEM (
    file_system_name      => 'FSS',
    file_system_location  => 'myhost.sub000445.myvcn.oraclevcn.com:/results',
    directory_name        => 'FSS_DIR',
    description           => 'Source NFS for sales data'
  );
END;
/     

NFSv4 파일 시스템에 연결:

BEGIN
   DBMS_CLOUD_ADMIN.ATTACH_FILE_SYSTEM (
    file_system_name      => 'FSS',
    file_system_location  => 'myhost.sub000445.myvcn.oraclevcn.com:/results',
    directory_name        => 'FSS_DIR',  
    description           => 'Source NFS for sales data',
    params                => JSON_OBJECT('nfs_version' value 4)
);                                                      
END;                                                        
/

사용법 참고

  • 이 프로시저를 실행하려면 ADMIN 사용자로 로그인하거나 DBMS_CLOUD_ADMIN에 대한 EXECUTE 권한이 있어야 합니다.

  • DBMS_CLOUD_ADMIN.ATTACH_FILE_SYSTEM를 사용하여 파일 시스템을 연결하려면 데이터베이스의 디렉토리 객체에 대한 WRITE 권한이 있어야 합니다.

  • DBMS_CLOUD_ADMIN.ATTACH_FILE_SYSTEM 프로시저는 프라이빗 끝점이 사용으로 설정된 데이터베이스의 프라이빗 파일 스토리지 서비스만 연결할 수 있습니다.

    자세한 내용은 OCI File Storage ServiceConfigure a Development System to Access the Database을 참조하십시오.

  • DBMS_CLOUD_ADMIN.ATTACH_FILE_SYSTEM 프로시저는 고객의 VCN(가상 클라우드 네트워크)에서 네트워크 파일 시스템 호스트 이름을 조회합니다. 위치에 지정된 호스트 이름을 찾을 수 없는 경우 "ORA-20000: Mounting NFS fails" 오류가 반환됩니다.

  • Oracle Cloud Infrastructure File Storage는 NFSv3를 사용하여 공유

  • Oracle Cloud Infrastructure File Storage 시스템에 연결하는 경우 이 절차에서는 NFSv3 및 NFSv4를 지원합니다.

  • NFSv3를 사용하는 연결된 NFS 서버가 있고 NFS 서버에서 NFS 버전이 NFSv4로 업데이트된 경우 DBMS_CLOUD_ADMIN.DETACH_FILE_SYSTEM, DBMS_CLOUD_ADMIN.ATTACH_FILE_SYSTEM(nfs_version가 4로 설정된 params 매개변수 사용)을 차례로 실행해야 합니다. 그러면 Autonomous Database가 NFSv4 서버에 액세스할 수 있도록 일치하는 프로토콜을 사용하여 NFS가 연결됩니다. 분리한 후 다시 연결하지 않으면 NFS 서버에 액세스할 수 없으며 "Protocol not supported"과 같은 오류가 표시될 수 있습니다.

CREATE_DATABASE_LINK 프로시저

이 프로시저는 API를 호출하는 스키마의 Target Database에 대한 데이터베이스 링크를 생성합니다.

오버로드된 폼은 다음을 지원합니다.

  • gateway_params 매개변수를 사용하면 Oracle이 관리하는 이기종 접속을 사용하여 데이터베이스 링크를 생성할 수 있습니다. 이 링크는 지원되는 비Oracle 데이터베이스에 대한 링크입니다.

  • rac_hostnames 매개변수를 사용하면 프라이빗 끝점의 Autonomous Database에서 대상 Oracle RAC 데이터베이스로 데이터베이스 링크를 생성할 수 있습니다. 이 경우 rac_hostnames 매개변수를 사용하여 대상 Oracle RAC 데이터베이스에 있는 하나 이상의 개별 노드의 호스트 이름을 지정합니다.

구문

DBMS_CLOUD_ADMIN.CREATE_DATABASE_LINK(
       db_link_name         IN VARCHAR2,
       hostname             IN VARCHAR2,
       port                 IN NUMBER,
       service_name         IN VARCHAR2,
       ssl_server_cert_dn   IN VARCHAR2 DEFAULT,
       credential_name      IN VARCHAR2 DEFAULT,
       directory_name       IN VARCHAR2 DEFAULT,
       gateway_link         IN BOOLEAN DEFAULT,
       public_link          IN BOOLEAN DEFAULT,
       private_target       IN BOOLEAN DEFAULT
       gateway_params       IN CLOB DEFAULT);
DBMS_CLOUD_ADMIN.CREATE_DATABASE_LINK(
       db_link_name         IN VARCHAR2,
       rac_hostnames        IN CLOB,
       port                 IN NUMBER,
       service_name         IN VARCHAR2,
       ssl_server_cert_dn   IN VARCHAR2 DEFAULT,
       credential_name      IN VARCHAR2 DEFAULT,
       directory_name       IN VARCHAR2 DEFAULT,
       gateway_link         IN BOOLEAN DEFAULT,
       public_link          IN BOOLEAN DEFAULT,
       private_target       IN BOOLEAN DEFAULT);

매개변수

매개변수 설명

db_link_name

생성할 데이터베이스 링크 이름입니다.

hostname

대상 데이터베이스의 호스트 이름입니다.

hostname에 대해 localhost를 지정할 수 없습니다.

gateway_params 매개변수를 제공하여 Oracle이 관리하는 이기종 접속과의 접속을 지정할 때는 다음 사항에 유의하십시오.

  • db_type 값이 google_bigquery인 경우 hostname가 사용되지 않으며 example.com와 같은 값을 제공할 수 있습니다.

  • db_type 값이 snowflake인 경우 hostname는 Snowflake 계정 식별자입니다. Snowflake 계정 식별자를 찾으려면 클라우드 플랫폼 및 지역별 계정 식별자 형식을 참조하십시오.

이 매개변수 또는 rac_hostnames를 사용하고 둘 다 사용하지 마십시오.

DBMS_CLOUD_ADMIN.CREATE_DATABASE_LINK 입력은 대상 전용 Autonomous Database의 스캔 이름을 'hostname' 매개변수로 언급해야 합니다.

rac_hostnames

대상 Oracle RAC 데이터베이스에 대한 호스트 이름을 지정합니다. 값은 대상 Oracle RAC 데이터베이스의 노드에 대해 하나 이상의 개별 호스트 이름을 지정하는 JSON 배열입니다. JSON에서 ","으로 구분된 여러 호스트 이름을 전달할 수 있습니다. 예:

'["sales1-svr1.domain", "sales1-svr2.domain",
      "sales1-svr3.domain"]'

대상이 Oracle RAC 데이터베이스인 경우 rac_hostnames 매개변수를 사용하여 DBMS_CLOUD_ADMIN.CREATE_DATABASE_LINK와 함께 하나 이상의 호스트 이름을 지정합니다. 따라서 Oracle RAC의 고가용성 기능을 활용할 수 있습니다. rac_hostnames 값에서 IP 주소, SCAN IP 또는 SCAN 호스트 이름을 사용할 수 없습니다.

rac_hostnames 매개변수에 호스트 이름 목록을 지정하면 CREATE_DATABASE_LINK는 지정된 모든 호스트 이름을 접속 문자열의 주소로 사용합니다. 지정된 호스트 중 하나를 대상 Oracle RAC 데이터베이스에서 사용할 수 없는 경우 Autonomous Database는 목록에서 다른 호스트 이름을 사용하여 자동으로 접속을 시도합니다.

이 매개변수 또는 hostname를 사용하고 둘 다 사용하지 마십시오.

rac_hostname 값에 대해 localhost을 지정할 수 없습니다.

port

Target Database에 대한 연결의 포트를 지정합니다.

gateway_params 매개변수를 사용하여 Oracle 관리 이기종 접속으로 접속을 지정할 경우 db_type 값을 기반으로 포트를 설정합니다.

  • awsredshift: 포트 5439 사용
  • azure: 포트 1433 사용
  • db2: Db2 버전 >= 11.5.6에 포트 2500 사용
  • db2: Db2 버전 <= 11.5.5에 포트 5000 사용
  • google_analytics: 포트 443 사용
  • google_bigquery: 포트 443 사용
  • hive: 포트 433 사용
  • mongodb: 포트 27017 사용
  • mysql: 3306 포트를 사용합니다.
  • mysql_community: 포트 3306 사용
  • postgres: 포트 5432 사용
  • salesforce: 포트 19937 사용
  • servicenow: 포트 443 사용
  • snowflake: 포트 443 사용

service_name

링크할 데이터베이스의 service_name입니다. Autonomous Database 대상의 경우 다음 방법 중 하나를 사용하여 서비스 이름을 찾습니다.

  • Autonomous Database에서 다운로드한 wallet.ziptnsnames.ora 파일에서 연결을 확인합니다.

  • Oracle Cloud Infrastructure 콘솔에서 데이터베이스 연결을 누릅니다. 접속 문자열 열에 나열된 각 접속 문자열에는 해당 서비스에 대한 접속 문자열이 포함된 service_name 항목이 포함됩니다. 자세한 내용은 View Connection Strings for an Autonomous Database를 참조하십시오.

  • V$SERVICES 뷰를 query합니다. 예:

    SELECT name FROM V$SERVICES;

gateway_params 매개변수를 사용하여 Oracle 관리 이기종 접속과의 접속을 지정할 경우 service_name은 비Oracle 데이터베이스의 데이터베이스 이름입니다.

ssl_server_cert_dn

서버 인증서에서 발견된 DN 값입니다.

Oracle이 관리하는 이기종 연결은 대부분의 일반적인 신뢰할 수 있는 루트 및 중간 SSL 인증서가 포함된 전자 지갑으로 사전 구성됩니다. gateway_params 매개변수를 제공하거나 ssl_server_cert_dn 매개변수를 포함하지 않는 경우 ssl_server_cert_dnNULL이어야 합니다(기본값: NULL).

전자 지갑 없이 Autonomous Database 대상에 퍼블릭 끝점 링크:

TLS(전자 지갑) 없이 퍼블릭 끝점에서 Autonomous Database 대상에 접속하려면 다음과 같이 하십시오.

  • directory_name 매개변수는 NULL여야 합니다.
  • ssl_server_cert_dn 매개변수는 NULL이거나 이 매개변수를 포함하지 않아야 합니다(기본값은 NULL).

전자 지갑이 없는 프라이빗 끝점 링크:

전자 지갑 없이 프라이빗 끝점에서 Oracle Database에 접속하려면 다음과 같이 하십시오.

  • 대상 데이터베이스는 프라이빗 끝점에 있어야 합니다.
  • directory_name 매개변수는 NULL여야 합니다.
  • ssl_server_cert_dn 매개변수는 NULL이거나 이 매개변수를 포함하지 않아야 합니다(기본값: NULL).
  • private_target 매개변수는 TRUE이어야 합니다.
credential_name

DBMS_CLOUD.CREATE_CREDENTIAL로 생성된 저장된 인증서의 이름입니다. 이것은 Target Database에 액세스하기 위한 인증서입니다.

directory_name

cwallet.sso 파일의 디렉토리입니다. 이 매개변수의 기본값은 'data_pump_dir'.입니다.

Oracle이 관리하는 이기종 연결은 대부분의 일반적인 신뢰할 수 있는 루트 및 중간 SSL 인증서가 포함된 전자 지갑으로 사전 구성됩니다. directory_name 매개변수는 gateway_params 매개변수를 제공할 때 필요하지 않습니다.

전자 지갑 없이 Autonomous Database 대상에 퍼블릭 끝점 링크:

TLS(전자 지갑) 없이 퍼블릭 끝점에서 Autonomous Database에 접속하려면 다음과 같이 하십시오.

  • directory_name 매개변수는 NULL여야 합니다.
  • ssl_server_cert_dn 매개변수는 NULL이거나 이 매개변수를 포함하지 않아야 합니다(기본값은 NULL).

또한 TCP를 사용하여 Autonomous Database에 접속하려면 ssl_server_cert_dn 매개변수가 NULL이거나 이 매개변수를 포함하지 않아야 합니다(기본값: NULL).

전자 지갑이 없는 프라이빗 끝점 링크:

전자 지갑 없이 프라이빗 끝점에서 대상 Oracle Database에 접속하려면 다음과 같이 하십시오.

  • 대상 데이터베이스는 프라이빗 끝점에 있어야 합니다.
  • directory_name 매개변수는 NULL여야 합니다.
  • ssl_server_cert_dn 매개변수는 NULL이거나 이 매개변수를 포함하지 않아야 합니다(기본값은 NULL).
  • private_target 매개변수는 TRUE이어야 합니다.
gateway_link

데이터베이스 링크가 다른 Oracle Database 또는 Oracle Database Gateway에 생성되는지 여부를 나타냅니다.

gateway_linkFALSE로 설정된 경우 다른 Autonomous Database 또는 다른 Oracle Database에 대한 데이터베이스 링크를 지정합니다.

gateway_linkTRUE로 설정된 경우 비Oracle 시스템에 대한 데이터베이스 링크를 지정합니다. 그러면 (HS=OK)를 지정하는 데이터베이스 링크 정의에 접속 기술자가 생성됩니다.

gateway_linkTRUE로 설정되고 gateway_paramsNULL인 경우 고객 관리 Oracle 게이트웨이에 대한 데이터베이스 링크를 지정합니다.

이 매개변수의 기본값은 FALSE입니다.

public_link

데이터베이스 링크가 공용 데이터베이스 링크로 생성되는지 여부를 나타냅니다.

이 매개변수를 TRUE로 설정하여 DBMS_CLOUD_ADMIN.CREATE_DATABASE_LINK를 실행하려면 프로시저를 호출하는 사용자에게 퍼블릭 데이터베이스 링크와 연관된 인증서에 대한 EXECUTE 권한이 있어야 하며 CREATE PUBLIC DATABASE LINK 시스템 권한이 있어야 합니다. 인증서에 대한 EXECUTE 권한은 ADMIN 사용자 또는 인증서 소유자가 부여할 수 있습니다.

이 매개변수의 기본값은 FALSE입니다.

private_target

데이터베이스 링크가 VCN DNS 서버에서 확인해야 하는 호스트 이름에 액세스하면 private_target 매개변수를 TRUE 값으로 지정합니다.

private_targetTRUE인 경우 hostname 매개변수는 단일 호스트 이름(프라이빗 끝점에서 IP 주소, SCAN IP 또는 SCAN 호스트 이름을 사용하는 것은 지원되지 않음)이어야 합니다.

이 매개변수의 기본값은 FALSE입니다.

gateway_params

db_type 이 매개변수는 비Oracle 데이터베이스에 접속하기 위한 Oracle 관리 이기종 접속의 대상 데이터베이스 유형을 지정합니다. db_type 값은 다음 중 하나입니다.

  • awsredshift
  • azure
  • db2
  • google_analytics
  • google_bigquery

    * db_typegoogle_bigquery인 경우 지원되는 추가 gateway_params에 대한 사용 정보를 참조하십시오.

  • hive

    * db_typehive인 경우 지원되는 추가 gateway_params에 대한 사용 정보를 참조하십시오.

  • mongodb
  • mysql
  • postgres
  • salesforce

    * db_typesalesforce인 경우 지원되는 추가 gateway_params에 대한 사용 정보를 참조하십시오.

  • servicenow

    * db_typeservicenow인 경우 지원되는 추가 gateway_params에 대한 사용 정보를 참조하십시오.

  • snowflake

    * db_typesnowflake인 경우 지원되는 추가 gateway_params에 대한 사용 정보를 참조하십시오.

  • NULL

    gateway_paramsNULL이고 gateway_linkTRUE로 설정된 경우 고객 관리 Oracle 게이트웨이에 대한 데이터베이스 링크가 지정됩니다.

json_object 폼으로 매개변수를 지정합니다.

예:

gateway_params => json_object('db_type' value 'awsredshift')

gateway_paramsNULL이고 private_targetTRUE인 경우 directory_nameNULL이면 TCP 기반 데이터베이스 링크가 생성됩니다.

gateway_paramsNULL이고 private_targetTRUE인 경우 directory_nameNULL이면 TCPS 기반 데이터베이스 링크가 생성됩니다.

사용법 참고

  • gateway_params 매개변수를 지정할 때 일부 db_type 값에 대해 추가 gateway_params 매개변수가 지원됩니다.

    db_type 추가 gateway_params
    google_analytics

    db_typegoogle_analytics인 경우 지정하는 인증서가 Google OAuth 인증서여야 합니다(gcp_oauth2) 자세한 내용은 CREATE_CREDENTIAL 프로시저 참조).

    google_bigquery

    db_typegoogle_bigquery인 경우 지정하는 인증서가 Google OAuth 인증서여야 합니다(gcp_oauth2) 자세한 내용은 CREATE_CREDENTIAL 프로시저 참조).

    db_typegoogle_bigquery인 경우 project 매개변수가 적합합니다. 이 매개변수는 google_bigquery에 대한 프로젝트 이름을 지정하며 필수입니다.

    SELECT를 Google BigQuery과 함께 사용할 때 지정하는 테이블 이름은 따옴표로 묶어야 합니다. 예:

    SELECT * FROM "sales"@GOOGLE_BIGQUERY_LINK
    hive

    db_typehive인 경우 http_path 매개변수가 적합합니다. 이 매개변수는 필요한 경우 Hive 인스턴스에 접속하기 위한 HttpPath 값을 지정합니다.

    salesforce

    db_typesalesforce인 경우 security_token 매개변수가 적합합니다. 보안 토큰은 대소문자를 구분하는 영숫자 코드입니다. Salesforce에 접근하려면 security_token 값을 제공해야 합니다. 예:

    gateway_params => JSON_OBJECT(
         'db_type' value 'salesforce',
         'security_token' value 'security_token_value' )

    자세한 내용은 Reset Your Security Token을 참조하십시오.

    servicenow

    ServiceNow에 접속하고 데이터를 가져오려면 게이트웨이 매개변수 directory_namefile_name를 제공해야 합니다. 이러한 매개변수는 JSON 응답을 관계형 모델에 매핑하는 모델 파일(REST 구성 파일)을 지정합니다. 모델 파일은 JSON 응답을 처리하기 위한 끝점, 테이블 매핑 및 HTTP 응답 코드를 지정합니다. 자세한 내용은 모델 파일 구문예제 모델 파일을 참조하십시오.

    gateway_params 매개변수를 db_type servicenow와 함께 사용할 경우 다음 두 가지 옵션이 지원됩니다.

    • 기본 인증: gateway_params 매개변수 db_type'servicenow' 값을 제공하고 directory_namefile_name 매개변수를 사용자 이름/비밀번호 유형 인증서와 함께 제공해야 합니다.

    • OAuth 2.0 인증: OAuth 유형 인증서와 함께 gateway_params 매개변수 db_type'servicenow' 값, directory_name, file_nametoken_uri 매개변수를 제공해야 합니다.

    directory_name 매개변수는 ServiceNow REST 구성 파일을 사용하여 디렉토리를 지정합니다. 다음과 같이 이 디렉토리를 생성할 수 있습니다.

    create or replace directory servicenow_dir as 'SERVICENOW_DIR';

    ServiceNow REST 구성 파일을 가져와서 지정된 디렉토리로 다운로드합니다. 예:

    exec DBMS_CLOUD.get_object('servicenow_dir_cred',
         'https://objectstorage.<...>/servicenow.rest','SERVICENOW_DIR');

    file_name 값을 다운로드한 REST 구성 파일 이름인 "servicenow.rest"로 설정합니다.

    그런 다음 ServiceNow REST 구성 파일을 기본 인증 또는 OAuth2.0과 함께 사용할 수 있습니다.

    snowflake

    db_typeSNOWFLAKE인 경우 선택적 매개변수인 role, schemawarehouse가 적합합니다. 이러한 값은 기본값이 아닌 다른 스키마, 롤 또는 웨어하우스 값을 지정합니다. 예:

    gateway_params => JSON_OBJECT(
         'db_type' value 'snowflake',
         'role' value 'ADMIN',
         'schema' value 'PUBLIC',
         'warehouse' value 'TEST' )
  • private_target 매개변수를 사용하는 경우 Autonomous Database에서 프라이빗 끝점에 있는 데이터베이스 서비스로의 데이터베이스 링크는 상용 지역 및 미국 정부 지역에서만 지원됩니다.

    이 기능은 모든 상업 지역에서 기본적으로 사용으로 설정됩니다.

    이 기능은 새로 프로비전된 데이터베이스에 대해 미국 정부 지역에서 기본적으로 사용으로 설정됩니다.

    프라이빗 끝점에 있는 기존 미국 정부 데이터베이스의 경우 Autonomous Database에서 미국 정부 지역의 대상으로 데이터베이스 링크를 생성하려면 Oracle Cloud Support에서 서비스 요청을 제출하고 정부 지역 데이터베이스 링크 기능의 프라이빗 끝점 사용으로 설정을 요청하십시오.

    미국 정부 리전에는 다음이 포함됩니다.

  • 비Oracle 데이터베이스에 접속할 때는 대상 데이터베이스에 퍼블릭 IP 또는 퍼블릭 호스트 이름을 통해 액세스할 수 있는 경우에만 데이터베이스 링크가 지원됩니다.
  • ADMIN 이외의 다른 사용자와 함께 DBMS_CLOUD_ADMIN.CREATE_DATABASE_LINK를 실행하려면 해당 사용자에게 EXECUTECREATE DATABASE LINK 권한을 부여해야 합니다.예를 들어, ADMIN으로 다음 명령을 실행하여 atpc_user에 권한을 부여합니다.

    GRANT EXECUTE ON DBMS_CLOUD_ADMIN TO atpc_user;
    GRANT CREATE DATABASE LINK TO atpc_user;

    또한 ADMIN 스키마가 아닌 스키마(예: atpc_user라는 스키마)에서 데이터베이스 링크를 생성하는 경우 atpc_user 스키마가 DBMS_CLOUD_ADMIN.CREATE_DATABASE_LINK와 함께 사용하는 인증서를 소유해야 합니다.

  • directory_name 매개변수로 지정된 디렉토리당 하나의 전자 지갑 파일만 적합합니다. 한 번에 하나의 cwallet.sso만 전자 지갑 파일에 대해 선택한 디렉토리로 업로드할 수 있습니다. 즉, 디렉토리에 cwallet.sso가 있으면 해당 디렉토리의 전자 지갑이 적합한 데이터베이스에 대한 데이터베이스 링크만 생성할 수 있습니다. 데이터베이스 링크와 함께 여러 cwallet.sso 파일을 사용하려면 추가 디렉토리를 만들고 각 cwallet.sso를 다른 디렉토리에 배치해야 합니다.

    디렉토리 생성에 대한 자세한 내용은 Autonomous Database에서 디렉토리 생성을 참조하십시오.

  • Autonomous Database에 대한 데이터베이스 링크를 생성하려면 소스 데이터베이스(비Autonomous Database)에서 GLOBAL_NAMESFALSE로 설정합니다.

    SQL> ALTER SYSTEM SET GLOBAL_NAMES = FALSE;
     
    System altered.
    
    SQL> SHOW PARAMETER GLOBAL_NAMES
    NAME                     TYPE        VALUE
    ----------------------   ----------- -----------
    global_names             boolean     FALSE
    
  • private_target 매개변수가 TRUE인 경우 hostname 매개변수는 VCN 내의 프라이빗 호스트를 지정합니다.

BEGIN
  DBMS_CLOUD.CREATE_CREDENTIAL(
     credential_name => 'DB_LINK_CRED',
     username => 'adb_user',
     password => 'password');
  DBMS_CLOUD_ADMIN.CREATE_DATABASE_LINK(
     db_link_name => 'SALESLINK', 
     hostname => 'adb.eu-frankfurt-1.oraclecloud.com', 
     port => '1522',
     service_name => 'example_medium.atpc.example.oraclecloud.com',
     ssl_server_cert_dn => 'CN=atpc.example.oraclecloud.com,OU=Oracle BMCS FRANKFURT,O=Oracle Corporation,L=Redwood City,ST=California,C=US',
     credential_name => 'DB_LINK_CRED');
END;
/
BEGIN
  DBMS_CLOUD.CREATE_CREDENTIAL(
    credential_name => 'AWS_REDSHIFT_LINK_CRED',
    username => 'NICK',
    password => 'password'
  );
DBMS_CLOUD_ADMIN.CREATE_DATABASE_LINK(
          db_link_name => 'AWSREDSHIFT_LINK', 
          hostname => 'example.com', 
          port => '5439',
          service_name => 'example_service_name',
          ssl_server_cert_dn => NULL,
          credential_name => 'AWS_REDSHIFT_LINK_CRED',
          gateway_params => JSON_OBJECT('db_type'  value 'awsredshift'));
END;
/
BEGIN
  DBMS_CLOUD.CREATE_CREDENTIAL(
    credential_name => 'PRIVATE_ENDPOINT_CRED',
    username => 'db_user',
    password => 'password'
  );
DBMS_CLOUD_ADMIN.CREATE_DATABASE_LINK(
          db_link_name => 'PRIVATE_ENDPOINT_DB_LINK', 
          hostname => 'exampleHostname', 
          port => '1521',
          service_name => 'exampleServiceName',
          credential_name => 'PRIVATE_ENDPOINT_CRED',
          ssl_server_cert_dn => NULL,
          directory_name => NULL,
          private_target => TRUE);
END;
/
BEGIN
  DBMS_CLOUD.CREATE_CREDENTIAL(
    credential_name => 'GOOGLE_BIGQUERY_CRED',
    params => JSON_OBJECT( 'gcp_oauth2' value JSON_OBJECT(
          'client_id' value 'client_id',
          'client_secret' value 'client_secret', 
          'refresh_token' value 'refresh_token' )));

DBMS_CLOUD_ADMIN.CREATE_DATABASE_LINK(
          db_link_name => 'GOOGLE_BIGQUERY_LINK', 
          hostname => 'example.com', 
          port => '443',
          service_name => 'example_service_name',
          credential_name => 'GOOGLE_BIGQUERY_CRED',
          gateway_params => JSON_OBJECT(
                     'db_type' value 'google_bigquery',
                     'project' value 'project_name1' ));
END;
/

SELECT를 Google BigQuery 또는 Google Analytics와 함께 사용할 때 지정하는 테이블 이름은 따옴표로 묶어야 합니다. 예:

SELECT * FROM "sales"@GOOGLE_BIGQUERY_LINK

프라이빗 끝점에서 대상 Oracle RAC 데이터베이스와 함께 rac_hostnames 매개변수를 사용합니다.

BEGIN
  DBMS_CLOUD.CREATE_CREDENTIAL(
     credential_name => 'DB_LINK_CRED1',
     username => 'adb_user',
     password => 'password');
      DBMS_CLOUD_ADMIN.CREATE_DATABASE_LINK(
     db_link_name => 'SALESLINK', 
     rac_hostnames => '["sales1-svr1.example.adb.us-ashburn-1.oraclecloud.com",
                        "sales1-svr2.example.adb.us-ashburn-1.oraclecloud.com",
                        "sales1-svr3.example.adb.us-ashburn-1.oraclecloud.com"]',
     port => '1522',
     service_name => 'example_high.adb.oraclecloud.com',
     ssl_server_cert_dn => 'CN=adb.example.oraclecloud.com,OU=Oracle BMCS FRANKFURT,O=Oracle Corporation,L=Redwood City,ST=California,C=US',
     credential_name => 'DB_LINK_CRED1',
     directory_name => 'EXAMPLE_WALLET_DIR',
     private_target => TRUE);
END;
/

DETACH_FILE_SYSTEM 프로시저

이 프로시저는 데이터베이스에서 파일 시스템을 분리합니다.

DBMS_CLOUD_ADMIN.DETACH_FILE_SYSTEM 프로시저는 파일 시스템을 데이터베이스에서 분리합니다. 이 외에도 DBMS_CLOUD_ADMIN.DETACH_FILE_SYSTEM 프로시저는 DBA_CLOUD_FILE_SYSTEMS 뷰에서 파일 시스템에 대한 정보도 제거합니다.

구문

DBMS_CLOUD_ADMIN.DETACH_FILE_SYSTEM(
    file_system_name         IN VARCHAR2
);

매개변수

매개변수 설명

file_system_name

파일 시스템의 이름을 지정합니다.

이 매개변수는 필수입니다.

예:

BEGIN
   DBMS_CLOUD_ADMIN.DETACH_FILE_SYSTEM (
    file_system_name      => 'FSS'                                       
  );                                                                          
END;                                                                          
/     

사용법 참고

  • 이 프로시저를 실행하려면 ADMIN 사용자로 로그인하거나 DBMS_CLOUD_ADMIN에 대한 EXECUTE 권한이 있어야 합니다.

  • DBMS_CLOUD_ADMIN.DETACH_FILE_SYSTEM 프로시저를 사용하여 디렉토리에서 파일 시스템을 분리하려면 데이터베이스의 디렉토리 객체에 대한 WRITE 권한이 있어야 합니다.

  • DBMS_CLOUD_ADMIN.DETACH_FILE_SYSTEM 프로시저는 프라이빗 끝점이 사용으로 설정된 데이터베이스의 프라이빗 파일 스토리지 서비스만 분리할 수 있습니다.

    자세한 내용은 OCI File Storage ServiceConfigure a Development System to Access the Database을 참조하십시오.

  • DBMS_CLOUD_ADMIN.DETACH_FILE_SYSTEM 프로시저는 고객의 VCN(가상 클라우드 네트워크)에서 네트워크 파일 시스템 호스트 이름을 조회합니다. 위치에 지정된 호스트 이름을 찾을 수 없는 경우 "ORA-20000: Mounting NFS fails" 오류가 반환됩니다.

DISABLE_EXTERNAL_AUTHENTICATION 프로시저

데이터베이스에 대한 외부 인증 체계를 통한 사용자 인증을 사용 안함으로 설정합니다.

구문

DBMS_CLOUD_ADMIN.DISABLE_EXTERNAL_AUTHENTICATION;

예외사항

예외사항 오류 설명
invalid_ext_auth ORA-20004

자세한 설명은 함께 표시되는 메시지를 참조하십시오.

BEGIN 
   DBMS_CLOUD_ADMIN.DISABLE_EXTERNAL_AUTHENTICATION;
END;
/

PL/SQL procedure successfully completed.

DROP_DATABASE_LINK 프로시저

이 프로시저는 데이터베이스 링크를 삭제합니다.

구문

DBMS_CLOUD_ADMIN.DROP_DATABASE_LINK(
        db_link_name      IN VARCHAR2,
        public_link       IN BOOLEAN DEFAULT);

매개변수

매개변수 설명

db_link_name

삭제할 데이터베이스 링크 이름입니다.

public_link

public_linkTRUE로 설정된 상태에서 DBMS_CLOUD_ADMIN.DROP_DATABASE_LINK를 실행하려면 DROP PUBLIC DATABASE LINK 시스템 권한이 있어야 합니다.

이 매개변수의 기본값은 FALSE입니다.

BEGIN
    DBMS_CLOUD_ADMIN.DROP_DATABASE_LINK(
        db_link_name => 'SALESLINK' );
END;
/

사용법 참고

데이터베이스 링크 사용이 완료되면 DBMS_CLOUD_ADMIN.DROP_DATABASE_LINK를 실행하여 Oracle 데이터베이스 보안을 유지하면 저장된 전자 지갑 파일이 제거됩니다. 예:

  • 객체 저장소에서 전자 지갑 파일을 제거합니다.

  • DBMS_CLOUD.DELETE_FILE을 사용하여 전자 지갑 파일이 업로드된 사용자 정의 디렉토리 또는 data_pump_dir 디렉토리에서 전자 지갑 파일을 제거합니다.

ENABLE_EXTERNAL_AUTHENTICATION 프로시저

사용자가 외부 인증 체계를 사용하여 데이터베이스에 로그인할 수 있도록 합니다.

구문

DBMS_CLOUD_ADMIN.ENABLE_EXTERNAL_AUTHENTICATION(
   type         IN VARCHAR2,
   force        IN BOOLEAN DEFAULT FALSE,
   params       IN CLOB DEFAULT NULL
);

매개변수

매개변수 설명

type

외부 인증 유형을 지정합니다. 적합한 값은 또는 입니다.

  • 'OCI_IAM'
  • 'AZURE_AD'
  • 'CMU'
  • 'KERBEROS'

force

(선택 사항) 현재 사용으로 설정된 외부 인증 체계를 무효화합니다. 적합한 값은 TRUE 또는 FALSE입니다.

기본값은 FALSE입니다.

params

외부 인증에 대한 추가 매개변수를 제공하는 JSON 문자열입니다.

CMU 매개변수:

  • location_uri: CMU에 필요한 파일이 저장되는 버킷에 대한 클라우드 스토리지 URI를 지정합니다.

    location_uri를 지정할 경우 CMU 구성 파일을 저장하기 위해 'cmu_wallet' 경로의 데이터베이스에 생성된 고정 이름 디렉토리 객체 CMU_WALLET_DIR가 있습니다. 이 경우 directory_name 매개변수를 제공할 필요가 없습니다.

  • credential_name: 객체 저장소에서 디렉토리 객체로 CMU 구성 파일을 다운로드하는 데 사용되는 자격 증명을 지정합니다.

    기본값은 객체 저장소 버킷 또는 하위 폴더에 대해 퍼블릭, 사전 인증 또는 사전 서명된 URL을 제공할 수 있는 NULL입니다.

  • directory_name: CMU에 필요한 구성 파일이 저장되는 디렉토리 이름을 지정합니다. directory_name가 제공된 경우 CMU 구성 파일 dsi.oracwallet.sso를 이 디렉토리 객체에 복사해야 합니다.

KERBEROS 매개변수:

  • location_uri: Kerberos에 필요한 파일이 저장되는 버킷에 대한 클라우드 스토리지 URI를 지정합니다.

    location_uri를 지정할 경우 Kerberos 구성 파일을 저장할 고정 이름 디렉토리 객체 KERBEROS_DIR가 데이터베이스에 생성됩니다. 이 경우 directory_name 매개변수를 제공할 필요가 없습니다.

  • credential_name: 객체 저장소 위치에서 디렉토리 객체로 Kerberos 구성 파일을 다운로드하는 데 사용되는 인증서를 지정합니다.

    기본값은 객체 저장소 버킷 또는 하위 폴더에 대해 퍼블릭, 사전 인증 또는 사전 서명된 URL을 제공할 수 있는 NULL입니다.

  • directory_name: Kerberos에 필요한 파일이 저장되는 디렉토리 이름을 지정합니다. directory_name가 제공된 경우 Kerberos 구성 파일을 이 디렉토리 객체에 복사해야 합니다.
  • kerberos_service_name: Kerberos 서비스 이름으로 사용할 이름을 지정합니다. 이 매개변수는 선택 사항입니다.

    기본값: 지정하지 않을 경우 kerberos_service_name 값이 Autonomous Database 인스턴스의 GUID로 설정됩니다.

AZURE_AD 매개변수:

  • tenant_id: Azure 계정의 테넌트 ID입니다. 테넌트 ID는 Autonomous Database 인스턴스의 Azure AD 애플리케이션 등록을 지정합니다.
  • application_id: Autonomous Database 인스턴스에서 외부 인증에 대한 롤/스키마 매핑을 지정하기 위해 Azure AD에서 생성된 Azure 애플리케이션 ID입니다.
  • application_id_uri: Azure 애플리케이션에 지정된 고유 URI입니다.

    이 식별자는 Autonomous Database 인스턴스에 대한 식별자입니다. 이름은 도메인이 적격해야 합니다. 이 이름은 교차 테넌시 리소스 액세스를 지원합니다.

    이 매개변수의 최대 길이는 256자입니다.

예외사항

예외사항 오류 설명
invalid_ext_auth ORA-20004

자세한 설명은 함께 표시되는 메시지를 참조하십시오.

사용법 참고

  • type OCI_IAM를 사용할 경우 Autonomous Database 인스턴스에서 리소스 주체가 사용으로 설정되지 않은 경우 이 루틴은 DBMS_CLOUD_ADMIN.ENABLE_RESOURCE_PRINCIPAL를 사용하여 리소스 주체를 사용으로 설정합니다.

  • 이 절차에서는 IDENTITY_PROVIDER_TYPEIDENTITY_PROVIDER_CONFIG 시스템 매개변수를 Oracle Cloud Infrastructure Identity and Access Management 인증 및 권한 부여를 사용하여 인스턴스에 액세스하는 데 필요한 사용자로 설정합니다.

OCI_IAM 인증 사용

BEGIN DBMS_CLOUD_ADMIN.ENABLE_EXTERNAL_AUTHENTICATION(
     type => 'OCI_IAM',
     force=> TRUE );
END;
/

PL/SQL procedure successfully completed.

Microsoft Active Directory에 대해 CMU 인증 사용

params JSON 인수를 통해 CMU 구성 파일이 포함된 디렉토리 이름을 전달합니다.

BEGIN DBMS_CLOUD_ADMIN.ENABLE_EXTERNAL_AUTHENTICATION(
     type => 'CMU',
     force => TRUE,
     params => JSON_OBJECT('directory_name' value 'CMU_DIR'); // CMU_DIR directory object already exists
END;
/

PL/SQL procedure successfully completed.

params JSON 인수를 통해 CMU 구성 파일이 포함된 오브젝트 스토리지 위치를 가리키는 위치 URI를 전달합니다.

BEGIN
   DBMS_CLOUD_ADMIN.ENABLE_EXTERNAL_AUTHENTICATION(
       type     => 'CMU',
       params   => JSON_OBJECT('location_uri' value 'https://objectstorage.us-phoenix-1.oraclecloud.com/n/namespace-string/b/bucketname/o',
                               'credential_name' value 'my_credential_name')
   );
END;
/

PL/SQL procedure successfully completed.

Azure AD 인증 사용

BEGIN DBMS_CLOUD_ADMIN.ENABLE_EXTERNAL_AUTHENTICATION(
     type => 'AZURE_AD',
     force => TRUE,
     params   => JSON_OBJECT( 'tenant_id' VALUE '....',
                              'application_id' VALUE '...',
                              'application_id_uri' VALUE '.....' ));
END;
/

PL/SQL procedure successfully completed.

Kerberos 인증 사용

params JSON 인수를 통해 Kerberos 구성 파일이 포함된 디렉토리 이름을 전달합니다.

BEGIN DBMS_CLOUD_ADMIN.ENABLE_EXTERNAL_AUTHENTICATION(
     type => 'KERBEROS',
     force => TRUE,
     params => JSON_OBJECT('directory_name' value 'KERBEROS_DIR'); // KERBEROS_DIR directory object already exists
END;
/

PL/SQL procedure successfully completed.

params JSON 인수를 통해 Kerberos 구성 파일이 포함된 오브젝트 스토리지 위치를 가리키는 위치 URI를 전달합니다.

BEGIN DBMS_CLOUD_ADMIN.ENABLE_EXTERNAL_AUTHENTICATION(
     type => 'KERBEROS',
     force => TRUE,
     params => JSON_OBJECT('location_uri' value 'https://objectstorage.us-phoenix-1.oraclecloud.com/n/namespace-string/b/bucketname/o',
                           'credential_name' value 'my_credential_name');
END;
/

params JSON 인수에서 kerberos_service_name을 사용하여 서비스 이름을 전달합니다.

BEGIN DBMS_CLOUD_ADMIN.ENABLE_EXTERNAL_AUTHENTICATION(
     type => 'KERBEROS',
     force => TRUE,
     params => JSON_OBJECT('directory_name' value 'KERBEROS_DIR', // KERBEROS_DIR directory object already exists
                           'kerberos_service_name' value 'oracle' ));
END;
/

Autonomous Database 인스턴스에서 Kerberos를 사용으로 설정한 후 다음 질의를 사용하여 Kerberos 서비스 이름을 확인합니다.

SELECT SYS_CONTEXT('USERENV','KERBEROS_SERVICE_NAME') FROM DUAL;

DBMS_CLOUD_ADMIN 예외

다음 표에서는 DBMS_CLOUD_ADMIN에 대한 예외사항을 설명합니다.

예외사항 코드 설명
invalid_service 20001 부적합한 서비스가 지정되었습니다.
service_not_exist 20002 지정된 서비스가 존재하지 않습니다.
default_service 20003 지정된 서비스를 수정할 수 없습니다.
invalid_char_set 20029 사전 조건이 누락되었거나 부적합한(국가) 문자 집합입니다.
invalid_enc_key_attr 20030 키 관리에 대한 인수가 누락되었거나 부적합합니다.
Already Using Oracle Managed Key 000000

데이터베이스가 이미 Oracle 관리 키를 사용하고 있습니다. 이미 Oracle 관리 키를 사용하는 동안 프로시저를 호출하려고 시도하는 중입니다.

Argument Provided for the procedure ORA-0000

프로시저에 대한 인수가 제공됩니다. 예상 오류 메시지: 이 프로시저에 인수가 필요하지 않습니다.