场景1:第一次添加
创建访问控制列表 ,第一次添加或者需要添加网络控制列表分组
DECLARE
l_acl_name VARCHAR2(30) := 'xxxx.xml';---不能和现有的ACL重名会被该过程替换
l_ftp_server_ip VARCHAR2(20) := '目标地址IP';---要访问的地址
l_ftp_server_name VARCHAR2(20) := '目标地址IP';---要访问的地址
l_username VARCHAR2(30) := 'UseName'; --访问其他服务的数据库用户
BEGIN
--创建访问控制列表
DBMS_NETWORK_ACL_ADMIN.create_acl (
acl => l_acl_name,
description => 'Allow connections using UTL_TCP',
principal => l_username,
is_grant => TRUE,
privilege => 'connect',
start_date => SYSTIMESTAMP,
end_date => NULL);
COMMIT;
--增加权限
DBMS_NETWORK_ACL_ADMIN.add_privilege (
acl => l_acl_name,
principal => l_username,
is_grant => FALSE,
privilege => 'connect',
position => NULL,
start_date => NULL,
end_date => NULL);
COMMIT;
--授予用户权限
DBMS_NETWORK_ACL_ADMIN.assign_acl (
acl => l_acl_name,
host => l_ftp_server_ip,
lower_port => NULL,--可以指定端口
upper_port => NULL);
--授予FTP访问权限
DBMS_NETWORK_ACL_ADMIN.assign_acl (
acl => l_acl_name,
host => l_ftp_server_name,
lower_port => NULL,
upper_port => NULL);
COMMIT;
END;
场景1:多次添加
其他人或者之前添加过
DECLARE
l_acl_name VARCHAR2(30) := '添加过的ACL名称.xml';---其他人或者之前添加过的ACL名称
l_ftp_server_ip VARCHAR2(20) := '目标地址IP';---要访问的地址
l_ftp_server_name VARCHAR2(20) := '目标地址IP';---要访问的地址
l_username VARCHAR2(30) := 'UseName'; --访问其他服务的数据库用户
BEGIN
--增加权限
DBMS_NETWORK_ACL_ADMIN.add_privilege (
acl => l_acl_name,
principal => l_username,
is_grant => FALSE,
privilege => 'connect',
position => NULL,
start_date => NULL,
end_date => NULL);
COMMIT;
--授予用户权限
DBMS_NETWORK_ACL_ADMIN.assign_acl (
acl => l_acl_name,
host => l_ftp_server_ip,
lower_port => NULL,--可以指定端口
upper_port => NULL);
--授予FTP访问权限
DBMS_NETWORK_ACL_ADMIN.assign_acl (
acl => l_acl_name,
host => l_ftp_server_name,
lower_port => NULL,
upper_port => NULL);
COMMIT;
END;
管理员用户查看添加结果
select * from DBA_NETWORK_ACL_privileges;
select * from DBA_NETWORK_ACLS