标签: ora-24247

获取已建立的 Oracle 11 连接的 IP 地址

在开发过程中,我发现数据库有大量活动连接:

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 sqlplus ora-24247

4
推荐指数
1
解决办法
4万
查看次数

Oracle Database 11g中的访问控制列表(ACL)拒绝了网络访问

最近,我们已经从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)

oracle plsql oracle11g ora-24247

2
推荐指数
1
解决办法
3万
查看次数

标签 统计

ora-24247 ×2

oracle ×2

oracle11g ×1

plsql ×1

sqlplus ×1