DBMS_CLOUD_ADMIN 程序包

本节介绍 Autonomous Database 随附的 DBMS_CLOUD_ADMIN 子程序。

子程序 说明

ATTACH_FILE_SYSTEM 过程

此过程将文件系统附加到数据库上的目录中。

CREATE_DATABASE_LINK 过程

此过程将创建指向目标数据库的数据库链接。您可以选择创建指向其他 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
);

参数

Parameter (参数) 说明

file_system_name

指定文件系统的名称。

此参数是必需的。

file_system_location

指定文件系统的位置。

file_system_location 提供的值包含全限定域名 (Fully Qualified Domain Name,FQDN) 和文件路径,格式为: FQDN:file_path

例如:

  • 常见问题: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 特权。

  • 必须对数据库中的目录对象具有 WRITE 特权,才能使用 DBMS_CLOUD_ADMIN.ATTACH_FILE_SYSTEM 附加文件系统。

  • DBMS_CLOUD_ADMIN.ATTACH_FILE_SYSTEM 过程只能在启用了专用端点的数据库中附加专用文件存储服务。

    有关详细信息,请参阅 OCI 文件存储服务配置开发系统以访问数据库

  • DBMS_CLOUD_ADMIN.ATTACH_FILE_SYSTEM 过程在客户的虚拟云网络 (Virtual Cloud Network,VCN) 上查找网络文件系统主机名。如果无法找到在位置中指定的主机名,则返回错误 "ORA-20000: Mounting NFS fails"

  • Oracle Cloud Infrastructure File Storage 使用 NFSv3 共享

  • 如果连接到非 Oracle Cloud Infrastructure File Storage 系统,则该过程支持 NFSv3 和 NFSv4

  • 如果连接的 NFS 服务器使用 NFSv3,并且 NFS 版本在 NFS 服务器中更新为 NFSv4,则必须先运行 DBMS_CLOUD_ADMIN.DETACH_FILE_SYSTEM ,然后运行 DBMS_CLOUD_ADMIN.ATTACH_FILE_SYSTEM (使用 params 参数,将 nfs_version 设置为 4)。这将附加具有匹配协议的 NFS,以便 Autonomous Database 可以访问 NFSv4 服务器。如果不分离,然后重新连接,NFS 服务器将无法访问,您可能会看到以下错误:"Protocol not supported"

CREATE_DATABASE_LINK 过程

此过程将在调用 API 的方案中创建指向目标数据库的数据库链接。

重载的表单支持以下内容:

  • 使用 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);

参数

Parameter (参数) 说明

db_link_name

要创建的数据库链接的名称。

hostname

目标数据库的主机名。

不允许为 hostname 指定 localhost

通过提供 gateway_params 参数指定与 Oracle 管理的异构连接的连接时,请注意以下事项:

  • 如果 db_type 值为 google_bigquery,则不使用 hostname,您可以提供 example.com 等值。

  • db_type 值为 snowflake 时,hostname 是 Snowflake 帐户标识符。要查找 Snowflake 帐户标识符,请参见 Account Identifier Formats by Cloud Platform and Region

使用此参数或 rac_hostnames,不要同时使用两者。

DBMS_CLOUD_ADMIN.CREATE_DATABASE_LINK 输入应将目标专用 Autonomous Database 的扫描名称作为 'hostname' 参数。

rac_hostnames

指定目标 Oracle RAC 数据库的主机名。该值是一个 JSON 数组,用于为目标 Oracle RAC 数据库的节点指定一个或多个单独的主机名。可以使用 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

指定与目标数据库的连接端口。

使用 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.zip 中的 tnsnames.ora 文件。

  • 单击 Oracle Cloud Infrastructure 控制台上的数据库连接连接字符串列中列出的每个连接字符串都包含一个带有相应服务的连接字符串的 service_name 条目。有关详细信息,请参阅查看 Autonomous Database 的连接字符串

  • 查询 V$SERVICES 视图。例如:

    SELECT name FROM V$SERVICES;

使用 gateway_params 参数指定与 Oracle 管理的异构连接的连接时,service_name 是非 Oracle 数据库的数据库名称。

ssl_server_cert_dn

在服务器证书中发现 DN 值。

Oracle 管理的异构连接预配置有一个 Wallet,其中包含大多数常见的可信根和中间 SSL 证书。提供 gateway_params 参数时,ssl_server_cert_dn 必须为 NULL,或者不包含 ssl_server_cert_dn 参数(默认值为 NULL)。

指向没有 Wallet 的 Autonomous Database 目标的公共端点链接:

要在没有 wallet (TLS) 的公共端点上连接到 Autonomous Database 目标:

  • directory_name 参数必须为 NULL
  • ssl_server_cert_dn 参数必须为 NULL,或者不包含此参数(默认值为 NULL)。

没有 Wallet 的专用端点链接:

要在没有 wallet 的专用端点上连接到 Oracle Database,请执行以下操作:

  • 目标数据库必须位于专用端点上。
  • directory_name 参数必须为 NULL
  • ssl_server_cert_dn 参数必须为 NULL 或不包括此参数(默认值为 NULL)。
  • private_target 参数必须为 TRUE
credential_name

使用 DBMS_CLOUD.CREATE_CREDENTIAL 创建的存储身份证明的名称。这是用于访问目标数据库的身份证明。

directory_name

cwallet.sso 文件的目录。此参数的默认值为 'data_pump_dir'.

Oracle 管理的异构连接预配置有一个 Wallet,其中包含大多数常见的可信根和中间 SSL 证书。提供 gateway_params 参数时,不需要 directory_name 参数。

指向没有 Wallet 的 Autonomous Database 目标的公共端点链接:

要在没有 wallet (TLS) 的公共端点上连接到 Autonomous Database

  • directory_name 参数必须为 NULL
  • ssl_server_cert_dn 参数必须为 NULL,或者不包含此参数(默认值为 NULL)。

此外,要使用 TCP 连接到 Autonomous Databasessl_server_cert_dn 参数必须为 NULL,或者不包含此参数(默认值为 NULL)。

没有 Wallet 的专用端点链接:

要在没有 wallet 的专用端点上连接到目标 Oracle Database:

  • 目标数据库必须位于专用端点上。
  • directory_name 参数必须为 NULL
  • ssl_server_cert_dn 参数必须为 NULL,或者不包含此参数(默认值为 NULL)。
  • private_target 参数必须为 TRUE
gateway_link

指示是创建到其他 Oracle Database 还是创建到 Oracle Database Gateway 的数据库链接。

如果将 gateway_link 设置为 FALSE,则指定指向其他 Autonomous Database 或其他 Oracle Database 的数据库链接。

如果将 gateway_link 设置为 TRUE,则指定指向非 Oracle 系统的数据库链接。这将在数据库链接定义中创建指定 (HS=OK) 的连接描述符。

gateway_link 设置为 TRUEgateway_paramsNULL 时,这将指定指向客户管理的 Oracle 网关的数据库链接。

此参数的默认值为 FALSE

public_link

指示是否将数据库链接创建为公共数据库链接。

要在此参数设置为 TRUE 的情况下运行 DBMS_CLOUD_ADMIN.CREATE_DATABASE_LINK ,调用该过程的用户必须对与公共数据库链接关联的凭证具有 EXECUTE 特权,并且必须具有 CREATE PUBLIC DATABASE LINK 系统特权。凭证的 EXECUTE 权限可以由 ADMIN 用户或凭证所有者授予。

此参数的默认值为 FALSE

private_target

当数据库链接访问需要在 VCN DNS 服务器中解析的主机名时,使用值 TRUE 指定 private_target 参数。

如果 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_paramsNULLgateway_link 设置为 TRUE 时,这将指定指向客户管理的 Oracle 网关的数据库链接。

使用 json_object 表单指定参数。

例如:

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

gateway_paramsNULLprivate_targetTRUE 时,如果 directory_nameNULL,则会创建基于 TCP 的数据库链接。

gateway_paramsNULLprivate_targetTRUE 时,如果 directory_nameNULL,则会创建基于 TCPS 的数据库链接。

使用说明

  • 指定 gateway_params 参数时,对于某些 db_type 值,支持其他 gateway_params 参数:

    db_type 其他 gateway_params
    google_analytics

    When the db_type is google_analytics, the credential you specify must be a Google OAuth credential (gcp_oauth2) See CREATE_CREDENTIAL Procedure for more information.

    google_bigquery

    When the db_type is google_bigquery, the credential you specify must be a Google OAuth credential (gcp_oauth2) See CREATE_CREDENTIAL Procedure for more information.

    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 响应代码。有关更多信息,请参见 Model file syntaxExample Model file

    gateway_params 参数与 db_type servicenow 一起使用时,有两个支持的选项:

    • 基本验证:必须向 gateway_params 参数 db_type 提供值 'servicenow',并提供 directory_namefile_name 参数以及用户名/口令类型身份证明。

    • OAuth 2.0 验证:必须向 gateway_params 参数 db_type 提供值 'servicenow'directory_namefile_nametoken_uri 参数以及 OAuth 类型凭证。

    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 时,可选参数 roleschemawarehouse 有效。这些值指定除默认值之外的其他方案、角色或仓库值。例如:

    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 参数指定的每个目录,只有一个 Wallet 文件有效。一次只能将一个 cwallet.sso 上载到为 wallet 文件选择的目录。这意味着使用目录中的 cwallet.sso,只能创建指向该目录中 Wallet 对其有效的数据库的数据库链接。要将多个 cwallet.sso 文件与数据库链接一起使用,需要创建其他目录并将每个 cwallet.sso 放在不同的目录中。

    有关创建目录的信息,请参见 Create Directory in Autonomous Database

  • 要创建指向 Autonomous Database 的数据库链接,请在源数据库(非 Autonomous Database )上将 GLOBAL_NAMES 设置为 FALSE

    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

rac_hostnames 参数与专用端点上的目标 Oracle RAC 数据库结合使用。

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
);

参数

Parameter (参数) 说明

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 文件存储服务配置开发系统以访问数据库

  • DBMS_CLOUD_ADMIN.DETACH_FILE_SYSTEM 过程在客户的虚拟云网络 (Virtual Cloud Network,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);

参数

Parameter (参数) 说明

db_link_name

要删除的数据库链接的名称。

public_link

要在 public_link 设置为 TRUE 的情况下运行 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 数据库的安全性删除任何存储的 wallet 文件。例如:

  • 删除对象存储中的 wallet 文件。

  • 使用 DBMS_CLOUD.DELETE_FILE 可从 data_pump_dir 目录或从上载 wallet 文件的用户定义目录中删除 wallet 文件。

ENABLE_EXTERNAL_AUTHENTICATION 过程

允许用户使用外部验证方案登录到数据库。

语法

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

Parameter (参数)

Parameter (参数) 说明

type

指定外部验证类型。有效值为:或。

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

force

(可选)覆盖当前启用的外部验证方案。有效值为 TRUEFALSE

默认值为 FALSE

params

为外部验证提供其他参数的 JSON 字符串。

CMU 参数:

  • location_uri:指定存储 CMU 所需文件的存储桶的云存储 URI。

    如果指定 location_uri,则会在数据库中的路径 'cmu_wallet' 中创建固定名称目录对象 CMU_WALLET_DIR 以保存 CMU 配置文件。在这种情况下,不需要提供 directory_name 参数。

  • credential_name:指定用于将 CMU 配置文件从对象存储下载到目录对象的身份证明。

    默认值为 NULL,允许您为对象存储存储存储桶或子文件夹提供公共、预先验证或预先签名的 URL。

  • directory_name:指定存储 CMU 所需的配置文件的目录名称。如果提供了 directory_name,则需要将 CMU 配置文件 dsi.oracwallet.sso 复制到此目录对象。

KERBEROS 参数:

  • location_uri:为存储 Kerberos 所需文件的存储桶指定云存储 URI。

    如果指定 location_uri,则会在数据库中创建固定名称目录对象 KERBEROS_DIR 以保存 Kerberos 配置文件。在这种情况下,不需要提供 directory_name 参数。

  • credential_name:指定用于将 Kerberos 配置文件从对象存储位置下载到目录对象的身份证明。

    默认值为 NULL,允许您为对象存储存储存储桶或子文件夹提供公共、预先验证或预先签名的 URL。

  • 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:在 Azure AD 中创建的 Azure 应用程序 ID,用于在 Autonomous Database 实例中为外部验证分配角色/方案映射。
  • 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

为该过程提供了一个参数。预期错误消息:此过程不需要参数。