阻止特定的ip登陆数据库的2种方法 (轉)
方法1:使用系统触发器
方法2:修改监听器参数文件
(window nt平台,oracle 8.1.7下验证通过)
方法1:使用系统触发器
create or replace trigger sys_trigger_test
after logon on database
begin
if sys_context('userenv','ip_address')='200.200.200.35' then
raise_application_error(-20001,'logon forbidden');
end if;
end sys_trigger_test;
用户登陆时的出错提示:
ERROR:
ORA-00604: 递归 SQL 层 1 出现错误
ORA-20001: logon forbidden
ORA-06512: 在line 3
方法2:修改监听器参数文件
在$ORACLE_HOME/network/admin/目录下的protocol.ora文件(如果没有该文件则添加)中加入两行:
tcp.validnode_checking=yes
tcp.excluded_nodes=(200.200.200.33)
其中tcp.excluded_nodes指的是要阻止的ip地址或机器名
然后重启监听器即可
注1:oracle 815及以上版本可以使用方法1,在init.ora文件中设置_system_trig_enabled=false,则系统触发器失效
注2:方法1使用灵活,可以阻止登陆的形式很多,比如说特定时间内、用户使用特定程序禁止登陆等 情况,但系统开销较大,同时对某些用户起不到阻止登陆的作用;方法2系统开销小,但功能单一
注3:对拥有系统权限ADMINISTER DATABASE TRIGGER或sysdbasysoper的用户,方法1无法阻止用户登陆,但触发器仍然会执行,系统缺省拥有ADMINISTER DATABASE TRIGGER权限的role有IMP_FULL_DATABASE、DBA,可以通过视图role_sys_priv,user_sys_priv等等来查询某个用户所拥有的系统权限
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· winform 绘制太阳,地球,月球 运作规律
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人