在开发过程中,我发现数据库有大量活动连接:
SELECT username, COUNT(*) FROM v$session GROUP BY username;
Run Code Online (Sandbox Code Playgroud)
为了找到真正保持连接的人,我想获取 IP 地址列表。
在一般网络搜索和阅读官方文档期间,我构建查询:
SELECT username, seconds_in_wait, machine, port, terminal, program, module, service_name
FROM v$session
WHERE type = 'USER';
Run Code Online (Sandbox Code Playgroud)
其中machine最重要的部分是select. 但不幸的是,machine字段显示客户端操作系统已知的主机名。
互联网上充斥着使用UTL_INADDR.GET_HOST_ADDRESS 的建议,但这不适用于我的情况。首先是因为ORA-24247: 网络访问被访问控制列表 (ACL) 拒绝,其次是因为客户端操作系统主机名通常在/etc/hostname中定义,并且不可用于我们 Intranet 中的 DNS 服务器...
任何其他方式检索 Oracle DB 的打开会话的 IP(数据库实例在任何情况下都保存有关其套接字的信息...)。
更新
我在受信任的 Intranet 下,但网络层次结构未知。
我尝试查找哪些应用程序使用我的表(几个应用程序服务器,我不知道所有这些)。其中一些过度使用连接,需要修复。但首先应该确定它们...
最近,我们已经从Oracle 10g切换到11g,直到现在我才注意到我的邮件发送功能不起作用,现在我得到一个错误:
ORA-24247: network access denied by access control list (ACL)
Run Code Online (Sandbox Code Playgroud)
因此,我做了一些谷歌搜索,并发现Oracle 11g中的一项新功能现在限制了用户使用某些软件包,包括utl_smtp。因为我正在寻找一种快速的解决方案,所以我没有阅读Oracle文档,而是去寻找更简单的解决方案,并看了本教程:
https://www.pythian.com/blog/setting-up-network-acls-in-oracle-11g-for-dummies/
Run Code Online (Sandbox Code Playgroud)
我稍微弄乱了一点,但是因为我不知道更好,我想我添加了两个单独的配置.xml文件。因此,我的问题的第一部分是-如何删除它?
第二个问题是:
在向用户添加了一些授权之后,我尝试测试它是否有效,但是我很快意识到它没有作用:
SELECT DECODE(
DBMS_NETWORK_ACL_ADMIN.check_privilege('netacl.xml', 'TEST1', 'connect'),
1, 'GRANTED', 0, 'DENIED', NULL) privilege
FROM dual;
Run Code Online (Sandbox Code Playgroud)
返回值:
PRIVILE
-------
DENIED
Run Code Online (Sandbox Code Playgroud)
为什么?(已排序)
问题的第三部分-阅读后被拒绝,我尝试将其修复为:
BEGIN
DBMS_NETWORK_ACL_ADMIN.ADD_PRIVILEGE('netacl.xml' ,'TEST1', TRUE, 'connect');
END;
Run Code Online (Sandbox Code Playgroud)
但这给了我一个错误:
Ora19279 - XQuery dynamic type mismatch.....(more text meaning nothing to me).
Run Code Online (Sandbox Code Playgroud)
为什么?(我想出了,如果您授予同一用户第二次相同的权限,就会发生错误)
更新
我遵循下面kevinsky的建议答案,并且在此过程中学到了很多东西,但是我仍然有问题。我仍然收到ORA-24247:访问控制列表(ACL)拒绝了网络访问。因为我按照建议执行了所有其他操作,所以我开始认为问题可能是我添加的第一个配置文件,但现在无法删除,因为我不记得它的名称了。如果有人可以帮助我,我将非常感谢。
结果(我正在尝试一些不同的事情):
select * from dba_network_acls;
Run Code Online (Sandbox Code Playgroud)
退货
* | 25 | 25 | /sys/acls/utl_smtp.xml| ACLID...
myservername.com | 25 | 25 | /sys/acls/utl_smtp.xml| ACLID...
myDBName …Run Code Online (Sandbox Code Playgroud)