热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

oracle触发器中使用UTL_INADDR.GET_HOST_ADDRESS时出现ORA24247的解决方法

最近数据库中有张表要用触发器把本机的IP取出来,写到另一张表,使用了UTL_INADDR.GET_HOST_ADDRESS(),结果触发器

最近数据库中有张表要用触发器把本机的IP取出来,写到另一张表,使用了UTL_INADDR.GET_HOST_ADDRESS(),结果触发器在执行时报ORA-24247错误。在9i上不会报错,在11G上报错。好容易在网上找到了解决方法,三个步骤解决,在oracle 11GR2 for linux上成功取到了IPV4的IP,记下来:

用sys用户通过sqlplus连接数据库:sqlplus / as sysdba,然后执行以下三个存储过程。

1 创建 ACL

 begindbms_network_acl_admin.create_acl (acl => 'UTL_INADDR.xml',description => 'utl_inaddr',principal => 'MYDBUSER',   --即将要为之授权的用户,要大写,小写会报找不到该用户is_grant => TRUE,privilege => 'resolve');commit;end;/

2  增加权限

begindbms_network_acl_admin.add_privilege (acl => 'UTL_INADDR.xml',principal => 'MYDBUSER',  --即将要为之授权的用户,要大写,小写会报找不到该用户is_grant => TRUE,privilege => 'connect');commit;end;/

3  授予用户权限
 

 begindbms_network_acl_admin.assign_acl(acl => 'UTL_INADDR.xml',host => '*');commit;end;/

延伸:
1、如果想查看一下数据里有几个ACL文件呢?如下:

SELECT * FROM DBA_NETWORK_ACLS

2、如果想看看ACL都为哪些用户授权了呢?如下:

SELECT * FROM DBA_NETWORK_ACL_PRIVILEGES

 

 

网上找到一个比较全的对于以上命令的解释,原文地址:https://blog.csdn.net/zxnlmj/article/details/22877743

begindbms_network_acl_admin.create_acl ( -- 创建访问控制文件(ACL)acl => 'utl_http.xml', -- 文件名称description => 'HTTP Access', -- 描述principal => 'ITS', -- 授权或者取消授权账号,大小写敏感is_grant => TRUE, -- 授权还是取消授权privilege => 'connect', -- 授权或者取消授权的权限列表start_date => null, -- 起始日期end_date => null -- 结束日期);dbms_network_acl_admin.add_privilege ( -- 添加访问权限列表项acl => 'utl_http.xml', -- 刚才创建的acl名称 principal => 'ITS', -- 授权或取消授权用户is_grant => TRUE, -- 与上同 privilege => 'resolve', -- 权限列表start_date => null, end_date => null);dbms_network_acl_admin.assign_acl ( -- 该段命令意思是允许访问acl名为utl_http.xml下授权的用户,使用oracle网络访问包,所允许访问的目的主机,及其端口范围。acl => 'utl_http.xml',host => '100.1.2.1', -- ip地址或者域名,填写http://localhost:9000/hello与http://localhost:9000/是会报host无效的-- 且建议使用ip地址或者使用域名,若用localhost,当oracle不是安装在本机上的情况下,会出现问题lower_port => 9000, -- 允许访问的起始端口号upper_port => Null -- 允许访问的截止端口号);commit;
end;begindbms_network_acl_admin.assign_acl ( -- 可以授权多个主机,或者多个主机的多个端口acl => 'utl_http.xml',host => '10.100.49.138',lower_port => 80,upper_port => NUll);commit;
end;

 


推荐阅读
  • 基于PgpoolII的PostgreSQL集群安装与配置教程
    本文介绍了基于PgpoolII的PostgreSQL集群的安装与配置教程。Pgpool-II是一个位于PostgreSQL服务器和PostgreSQL数据库客户端之间的中间件,提供了连接池、复制、负载均衡、缓存、看门狗、限制链接等功能,可以用于搭建高可用的PostgreSQL集群。文章详细介绍了通过yum安装Pgpool-II的步骤,并提供了相关的官方参考地址。 ... [详细]
  • Spring源码解密之默认标签的解析方式分析
    本文分析了Spring源码解密中默认标签的解析方式。通过对命名空间的判断,区分默认命名空间和自定义命名空间,并采用不同的解析方式。其中,bean标签的解析最为复杂和重要。 ... [详细]
  • 在说Hibernate映射前,我们先来了解下对象关系映射ORM。ORM的实现思想就是将关系数据库中表的数据映射成对象,以对象的形式展现。这样开发人员就可以把对数据库的操作转化为对 ... [详细]
  • 本文详细介绍了SQL日志收缩的方法,包括截断日志和删除不需要的旧日志记录。通过备份日志和使用DBCC SHRINKFILE命令可以实现日志的收缩。同时,还介绍了截断日志的原理和注意事项,包括不能截断事务日志的活动部分和MinLSN的确定方法。通过本文的方法,可以有效减小逻辑日志的大小,提高数据库的性能。 ... [详细]
  • 本文介绍了Java工具类库Hutool,该工具包封装了对文件、流、加密解密、转码、正则、线程、XML等JDK方法的封装,并提供了各种Util工具类。同时,还介绍了Hutool的组件,包括动态代理、布隆过滤、缓存、定时任务等功能。该工具包可以简化Java代码,提高开发效率。 ... [详细]
  • android listview OnItemClickListener失效原因
    最近在做listview时发现OnItemClickListener失效的问题,经过查找发现是因为button的原因。不仅listitem中存在button会影响OnItemClickListener事件的失效,还会导致单击后listview每个item的背景改变,使得item中的所有有关焦点的事件都失效。本文给出了一个范例来说明这种情况,并提供了解决方法。 ... [详细]
  • 使用Ubuntu中的Python获取浏览器历史记录原文: ... [详细]
  • 本文介绍了Oracle数据库中tnsnames.ora文件的作用和配置方法。tnsnames.ora文件在数据库启动过程中会被读取,用于解析LOCAL_LISTENER,并且与侦听无关。文章还提供了配置LOCAL_LISTENER和1522端口的示例,并展示了listener.ora文件的内容。 ... [详细]
  • Spring特性实现接口多类的动态调用详解
    本文详细介绍了如何使用Spring特性实现接口多类的动态调用。通过对Spring IoC容器的基础类BeanFactory和ApplicationContext的介绍,以及getBeansOfType方法的应用,解决了在实际工作中遇到的接口及多个实现类的问题。同时,文章还提到了SPI使用的不便之处,并介绍了借助ApplicationContext实现需求的方法。阅读本文,你将了解到Spring特性的实现原理和实际应用方式。 ... [详细]
  • eclipse学习(第三章:ssh中的Hibernate)——11.Hibernate的缓存(2级缓存,get和load)
    本文介绍了eclipse学习中的第三章内容,主要讲解了ssh中的Hibernate的缓存,包括2级缓存和get方法、load方法的区别。文章还涉及了项目实践和相关知识点的讲解。 ... [详细]
  • 本文介绍了通过ABAP开发往外网发邮件的需求,并提供了配置和代码整理的资料。其中包括了配置SAP邮件服务器的步骤和ABAP写发送邮件代码的过程。通过RZ10配置参数和icm/server_port_1的设定,可以实现向Sap User和外部邮件发送邮件的功能。希望对需要的开发人员有帮助。摘要长度:184字。 ... [详细]
  • Mac OS 升级到11.2.2 Eclipse打不开了,报错Failed to create the Java Virtual Machine
    本文介绍了在Mac OS升级到11.2.2版本后,使用Eclipse打开时出现报错Failed to create the Java Virtual Machine的问题,并提供了解决方法。 ... [详细]
  • 本文介绍了使用postman进行接口测试的方法,以测试用户管理模块为例。首先需要下载并安装postman,然后创建基本的请求并填写用户名密码进行登录测试。接下来可以进行用户查询和新增的测试。在新增时,可以进行异常测试,包括用户名超长和输入特殊字符的情况。通过测试发现后台没有对参数长度和特殊字符进行检查和过滤。 ... [详细]
  • 本文详细介绍了MysqlDump和mysqldump进行全库备份的相关知识,包括备份命令的使用方法、my.cnf配置文件的设置、binlog日志的位置指定、增量恢复的方式以及适用于innodb引擎和myisam引擎的备份方法。对于需要进行数据库备份的用户来说,本文提供了一些有价值的参考内容。 ... [详细]
  • 本文介绍了Hyperledger Fabric外部链码构建与运行的相关知识,包括在Hyperledger Fabric 2.0版本之前链码构建和运行的困难性,外部构建模式的实现原理以及外部构建和运行API的使用方法。通过本文的介绍,读者可以了解到如何利用外部构建和运行的方式来实现链码的构建和运行,并且不再受限于特定的语言和部署环境。 ... [详细]
author-avatar
开心宝2502869253
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有