将网络文件存储附加到专用 Exadata 基础结构上的 Autonomous Database
如果数据库和文件系统位于同一专用网络中,则可以将网络文件存储 (Network File Storage,NFS) 共享附加到 Autonomous Database 。默认情况下,Autonomous Database on Dedicated Exadata Infrastructure 支持 NFSv4。
- 以高度安全的方式将高敏感数据从其他数据库加载到 Exadata Cloud@Customer 上的 Autonomous Database 。
- 将数据移入和移出多个 Exadata Cloud@Customer 部署,以促进供应商数据、导出转储和其他业务流程。
- 使用 NFS 挂载点克隆 Autonomous Database 创建的克隆数据库。
- 在主数据库附加到 NFS 共享的 Autonomous Data Guard 设置中执行故障转移或切换操作后承担主角色的备用数据库。
网络文件系统要求
- 客户提供的 NFS 可从自治 VM 集群节点进行网络访问。
- 所有自治 VM 集群节点上的
oracle
操作系统用户均可读取和写入已挂载 NFS 的文件系统。 - 如果在用户级别控制权限,则自治 VM 集群的
oracle
用户的 uid:gid 为 1001:1001。
附加网络文件系统
DBMS_CLOUD_ADMIN.ATTACH_FILE_SYSTEM
将文件系统附加到 Autonomous Database 中的目录。
注意:
只有当 Autonomous Database 实例位于专用端点上时,DBMS_CLOUD_ADMIN.ATTACH_FILE_SYSTEM
过程才能附加专用文件存储服务。
-
创建目录或使用现有目录在 Autonomous Database 中附加外部文件系统。必须对 Autonomous Database 实例上的目录对象具有
WRITE
权限,才能将文件系统附加到数据库中的目录位置。例如,以下命令创建名为NFS_DIR
的数据库目录并创建文件系统目录nfs
:CREATE DIRECTORY NFS_DIR AS ‘nfs’;
有关更多信息,请参见创建目录。
-
运行
DBMS_CLOUD_ADMIN.ATTACH_FILE_SYSTEM
以将文件系统附加到 Autonomous Database 中的目录。要运行此过程,您必须以 ADMIN 用户身份登录,或者对DBMS_CLOUD_ADMIN
具有EXECUTE
权限。-
缺省情况下,
DBMS_CLOUD_ADMIN.ATTACH_FILE_SYSTEM
使用 NFSv3。但是,您可以选择显式使用params
参数,并使用值 3 指定nfs_version
以指定 NFSv3。BEGIN DBMS_CLOUD_ADMIN.ATTACH_FILE_SYSTEM ( file_system_name => 'NFS', file_system_location => 'myhost.sub000445.myvcn.oraclevcn.com:/results', directory_name => 'NFS_DIR', description => 'Source NFS for sales data' );END; /
-
要使用 NFSv4,请将
params
参数与DBMS_CLOUD_ADMIN.ATTACH_FILE_SYSTEM
一起使用,并将值为 4 的nfs_version
指定为 NFSv4。BEGIN DBMS_CLOUD_ADMIN.ATTACH_FILE_SYSTEM ( file_system_name => 'NFS', file_system_location => 'myhost.sub000445.myvcn.oraclevcn.com:/results', directory_name => 'NFS_DIR', description => 'Source NFS for sales data', params => JSON_OBJECT('nfs_version' value 4) ); END; /
上面的示例将
file_system_name
参数中指定的网络文件系统附加到 Autonomous Database 。file_system_location
参数指定文件系统的位置。file_system_location
提供的值由全限定域名 (Fully Qualified Domain Name,FQDN) 和文件路径组成,格式为:FQDN:
file_path 。例如:- 常见问题:
myhost.sub000445.myvcn.oraclevcn.com
- 文件路径:
/results
directory_name
参数指定要在其中附加文件系统的 Autonomous Database 中的目录名称。这是您在步骤 1 中创建的目录,或者是您以前创建的另一个目录。description
参数指定任务的说明。params
参数是指定附加属性nfs_version
的 JSON 值,其值可以是 3 或 4(NFSv3 或 NFSv4)。 -
DBMS_CLOUD_ADMIN.ATTACH_FILE_SYSTEM
的说明:
-
Oracle Cloud Infrastructure File Storage 使用 NFSv3 进行共享。有关更多信息,请参见 Overview of File Storage (文件存储概述)。
-
如果您连接到非 Oracle Cloud Infrastructure 文件存储系统,则该过程支持 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"
。
查询 DBA_CLOUD_FILE_SYSTEMS
附加文件系统后,可以查询 DBA_CLOUD_FILE_SYSTEMS
视图以检索有关所附加文件系统的信息。
SELECT file_system_name, file_system_location, directory_path
FROM dba_cloud_file_systems
WHERE file_system_name = 'FSS';
此查询返回 FSS
文件系统名称的详细信息。有关更多信息,请参见 DBMS_CLOUD_FILE_SYSTEMS 视图。
通过附加的文件系统,您可以使用接受目录名称的任何 PL/SQL API 读取和写入附加文件系统上的文件。例如,您可以使用以下任一方法处理附加的 FSS 目录:
-
UTL_FILE
软件包。 -
Data Pump Export and Import 实用程序。
-
使用目录(如
DBMS_CLOUD.LIST_FILES
和DBMS_CLOUD.PUT_OBJECT
)的DBMS_CLOUD
API。
UTL_FILE
在附加的文件系统上写入文件:DECLARE
l_file UTL_FILE.FILE_TYPE;
l_location VARCHAR2(100) := 'FSS_DIR';
l_filename VARCHAR2(100) := 'test.csv';
BEGIN
-- Open the file.
l_file := UTL_FILE.FOPEN(l_location, l_filename, 'w');
UTL_FILE.PUT(l_file, 'Scott, male, 1000');
-- Close the file.
UTL_FILE.FCLOSE(l_file);
END;
/
UTL_FILE
在附加的文件系统上读取文件:DECLARE
l_file UTL_FILE.FILE_TYPE;
l_location VARCHAR2(100) := 'FSS_DIR';
l_filename VARCHAR2(100) := 'test.csv';
l_text VARCHAR2(32767);
BEGIN
-- Open the file.
l_file := UTL_FILE.FOPEN(l_location, l_filename, 'r');
UTL_FILE.GET_LINE(l_file, l_text, 32767);
-- Close the file.
UTL_FILE.FCLOSE(l_file);
END;
/
DBMS_CLOUD.LIST_FILES
显示附加文件系统上的列表文件:SELECT object_name FROM DBMS_CLOUD.LIST_FILES('FSS_DIR');
DBMS_CLOUD_FILE_SYSTEMS 查看
DBA_CLOUD_FILE_SYSTEMS
视图列出附加到数据库中的目录位置的外部文件系统的相关信息。
列 | 数据类型 | 说明 |
---|---|---|
FILE_SYSTEM_NAME |
VARCHAR2(128) |
文件系统名称 |
FILE_SYSTEM_LOCATION |
VARCHAR2(4000) |
文件系统位置 |
DIRECTORY_NAME |
VARCHAR2(128) |
附加的目录名称 |
DIRECTORY_PATH |
VARCHAR2(4000) |
附加的目录路径 |
NFS_VERSION |
NUMBER |
NFS 版本 |
DESCRIPTION |
VARCHAR2(4000) |
运行 DBMS_CLOUD_ADMIN.ATTACH_FILE_SYSTEM 时为说明参数提供的值 |
CREATION_TIME |
TIMESTAMP(6) WITH TIME ZONE |
创建时间戳 |
UPDATE_TIME |
TIMESTAMP(6) WITH TIME ZONE |
更新时间戳 |
分离网络文件系统
DBMS_CLOUD_ADMIN.DETACH_FILE_SYSTEM
过程将文件系统与 Autonomous Database 中的目录分离。
注意:
DBMS_CLOUD_ADMIN.DETACH_FILE_SYSTEM
过程只能将专用文件存储服务与位于专用端点上的数据库分离。
必须对目录对象具有 WRITE
特权,才能将文件系统从目录位置分离。
DBMS_CLOUD_ADMIN.DETACH_FILE_SYSTEM
过程以将文件系统与 Autonomous Database 中的目录位置分离。要运行此过程,您必须以 ADMIN 用户身份登录,或者对 DBMS_CLOUD_ADMIN
具有 EXECUTE
特权。BEGIN
DBMS_CLOUD_ADMIN.DETACH_FILE_SYSTEM (
file_system_name => 'NFS'
);END;
/
此示例将 file_system_name
参数中指定的网络文件系统与 Autonomous Database 分离。必须为此参数提供值。有关此文件系统的信息将从 DBA_CLOUD_FILE_SYSTEMS
视图中删除。
有关更多信息,请参见DETACH_FILE_SYSTEM Procedure 。