图文深入介绍Oracle DB link(二)

1. 引言:

本文承接上篇继续深入介绍Oracle DB link,主要介绍如何配置DB link的连接及确保连接的安全。

2. 创建 DB Link 时配置连接参数

1. 配置连接参数

1. 使用 TNSNAMES.ORA 文件配置连接参数(常用方式)
  1. TNSNAMES.ORA 文件位置和作用
    在 Oracle 数据库环境中,TNSNAMES.ORA 文件通常位于Oracle家目录下,即ORACLE_HOME/network/admin
    (windows操作系统下ORACLE_HOME 对应的是安装目录)。这个文件用于存储数据库服务名(也称为 TNS 别名)及其对应的连接参数。
  2. 配置内容格式
    TNSNAMES.ORA 文件中的条目格式如下:
    R
EMOTE_DB_SERVICE =(DESCRIPTION =(ADDRESS_LIST =(ADDRESS = (PROTOCOL = TCP)(HOST = remote_host_ip)(PORT = remote_port))CONNECT_DATA =(SERVICE_NAME = remote_service_name)))

其中,REMOTE_DB_SERVICE是自定义的 TNS 别名,用于在创建 DB Link 时引用。PROTOCOL通常是 TCP 协议,HOST是远程数据库服务器的 IP 地址,PORT是远程数据库监听的端口号(默认是 1521,但可以修改),SERVICE_NAME是远程数据库的服务名。

  1. 演示
    假设远程数据库服务器的 IP 地址是 192.168.1.100,端口是 1521,服务名是 ORCL,那么在 TNSNAMES.ORA 文件中的配置如下:
   MY_REMOTE_DB =(DESCRIPTION =(ADDRESS_LIST =(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.100)(PORT = 1521))CONNECT_DATA =(SERVICE_NAME = ORCL)))

在创建 DB Link 时,就可以在USING子句中使用这个 TNS 别名,如:

CREATE DATABASE LINK my_link CONNECT TO remote_user IDENTIFIED BY remote_password USING 'MY_REMOTE_DB';
2. 使用 LDAP(轻量级目录访问协议)配置连接参数(企业级环境会用到)
  1. LDAP 简介和优势
    LDAP 是一种用于存储和检索目录信息的协议。在大型企业环境中,使用 LDAP 来存储数据库连接信息可以方便集中管理和维护。它可以提供更好的安全性和可扩展性,因为可以通过 LDAP 服务器的权限管理机制来控制对连接参数的访问。
  2. 配置步骤
    –首先,需要在 LDAP 服务器中配置数据库连接信息条目。涉及到定义对象类(Object Class)和属性(Attribute)来存储数据库服务名、主机地址、端口号、服务名等信息。
    –例如,创建一个类似 “oracleDBConnection” 的对象类,其中包含 “host”、“port”、“serviceName” 等属性。然后,将各个数据库的连接信息作为一个条目存储在 LDAP 目录树中。
    –在 Oracle 数据库端,需要配置数据库能够通过 LDAP 来解析服务名。这需要修改 Oracle 的网络配置文件(如 sqlnet.ora),指定 LDAP 服务器的位置和认证信息等内容。
    例如,在 sqlnet.ora 文件中添加如下内容:
   NAMES.DIRECTORY_PATH=(LDAP, TNSNAMES)LDAP. SERVERS = (ldap_server_ip:ldap_port)LDAP. AUTHENTICATE_SERVER = TRUE

–之后,在创建 DB Link 时,就可以像使用 TNSNAMES.ORA 中的服务名一样使用在 LDAP 中配置的服务名,如:

CREATE DATABASE LINK ldap_link CONNECT TO remote_user IDENTIFIED BY remote_password USING 'LDAP_DB_SERVICE';

(其中LDAP_DB_SERVICE是在 LDAP 服务器中配置的服务名)。

3. 直接指定连接参数(这个实际应用中我个人并不不推荐,因为灵活性和维护性较差)

在创建 DB Link 时,可以直接在USING子句中指定连接参数,而不使用 TNSNAMES.ORA 文件或 LDAP 配置。语法如下:

 CREATE DATABASE LINK my_direct_linkCONNECT TO remote_user IDENTIFIED BY remote_passwordUSING '(DESCRIPTION =(ADDRESS_LIST =(ADDRESS = (PROTOCOL = TCP)(HOST = remote_host_ip)(PORT = remote_port)))CONNECT_DATA =(SERVICE_NAME = remote_service_name))';

这里的参数含义与在 TNSNAMES.ORA 文件中配置的相同,remote_host_ip是远程数据库服务器的 IP 地址,remote_port是端口号,remote_service_name是服务名。
注意:这种方式将连接参数硬编码在创建 DB Link 的语句中,不利于维护。如果远程数据库的连接参数发生变化,如 IP 地址或端口号改变,就需要修改所有使用该直接指定参数方式创建的 DB Link 语句,而使用 TNSNAMES.ORA 或 LDAP 配置则只需要修改一处配置即可。

3. 配置安全参数

1. 用户认证与权限管理

  1. 用户认证方式
    用户名和密码认证:这是最常见的方式。在创建 DB Link 时,通过CONNECT TO user IDENTIFIED BY password指定用于连接远程数据库的用户名和密码。例如,CREATE DATABASE LINK my_link CONNECT TO remote_user IDENTIFIED BY remote_password USING ‘tns_alias’;。需要确保所使用的用户名和密码具有足够的权限来访问远程数据库中的对象,并且要妥善保管密码,避免泄露。
    操作系统认证(使用较少):在某些特定的环境下,可以配置基于操作系统的认证方式。这要求本地和远程数据库所在的操作系统环境进行相应的配置,使得 Oracle 能够识别操作系统用户身份来进行数据库连接。这种方式相对复杂,并且安全性依赖于操作系统的安全机制。
  2. 权限管理
    本地权限管理:对于本地数据库中的 DB Link,权限控制可以通过 GRANT 和 REVOKE 语句来实现。如果是私有 DB Link,只有创建者能够访问,但是可以使用GRANT ALL ON DATABASE LINK my_private_link TO another_user;语句将访问权限授予其他用户。对于公共 DB Link,所有用户都可以访问,需要谨慎配置权限,防止未授权的访问。
    远程权限管理:在远程数据库中,需要确保用于连接的用户(在CONNECT TO语句中指定的用户)具有合适的权限来执行所需的操作,如查询、插入、更新和删除等。可以在远程数据库的用户管理模块中设置用户的角色和权限,比如将用户添加到具有特定权限的角色组中,或者直接为用户授予对表、视图等对象的操作权限。

2. 网络安全配置

  1. 加密连接(使用 SSL/TLS)
    配置服务器端:在远程数据库服务器端,需要配置 Oracle Net Services 以支持 SSL/TLS 加密。这涉及到生成证书、配置密钥库等操作。例如,在 Oracle 12c 及以上版本中,可以使用 Oracle Wallet Manager 来创建和管理钱包(包含证书和私钥)。配置文件(如 sqlnet.ora)需要添加相关参数,如SSL_VERSION = TLSv1.2(指定加密协议版本),WALLET_LOCATION(指定钱包位置)等。
    配置客户端(本地数据库):在本地数据库所在的客户端机器上,同样需要配置 sqlnet.ora 文件来启用 SSL/TLS 加密连接。需要指定与服务器端相同的加密协议版本,并且要正确配置钱包位置,使得客户端能够使用证书来建立加密连接。在创建 DB Link 时,确保使用的 TNS 别名(在USING子句中指定的)对应的连接是经过加密配置的。
  2. 防火墙和访问控制列表(ACL)
    防火墙设置:在企业网络环境中,防火墙可以限制对远程数据库服务器的访问。需要在防火墙上开放 Oracle 数据库使用的端口(通常是 1521,但可能因配置而异),并且可以根据源 IP 地址(本地数据库服务器的 IP 地址)和目标 IP 地址(远程数据库服务器的 IP 地址)来配置访问规则。例如,只允许来自特定 IP 网段的数据库服务器建立连接。
    访问控制列表(ACL):在 Oracle 数据库内部,可以使用 ACL 来控制对网络资源的访问。可以创建一个 ACL 来指定哪些用户或角色可以通过 DB Link 访问远程数据库,以及可以访问的远程数据库服务名等内容。例如,通过 DBMS_NETWORK_ACL_ADMIN 包来创建和管理 ACL。以下是一个简单的示例,创建一个 ACL 允许用户local_user通过 DB Link 访问远程服务:
BEGINDBMS_NETWORK_ACL_ADMIN.CREATE_ACL (acl         => 'my_acl.xml',description => 'ACL for DB Link access',principal   => 'local_user',is_grant    => TRUE,privilege   => 'connect');DBMS_NETWORK_ACL_ADMIN.ASSIGN_ACL (acl  => 'my_acl.xml',host => 'remote_host');END;

3. 安全审计与监控

  1. 审计设置
    在 Oracle 数据库中,可以启用审计功能来记录与 DB Link 相关的操作。通过设置审计选项,如审计 DB Link 的创建、使用、删除等操作,可以跟踪用户对 DB Link 的访问行为。在初始化参数文件(如 init.ora 或 spfile)中,可以设置AUDIT_TRAIL参数来指定审计记录的存储位置和方式,例如AUDIT_TRAIL = DB(将审计记录存储在数据库内部的审计表中)。
  2. 监控工具和指标
    动态性能视图:可以使用 Oracle 的动态性能视图来监控 DB Link 的使用情况。例如,V$DBLINK视图可以显示当前打开的 DB Link 的信息,包括 DB Link 名称、连接状态、用户名等。通过定期查询这些视图,可以发现异常的 DB Link 活动,如频繁的连接失败或者长时间未关闭的连接。
    企业管理器(OEM):如果部署了 Oracle 企业管理器,可以使用它来监控 DB Link 的性能和安全性。OEM 提供了图形化的界面,可以方便地查看 DB Link 的状态、配置信息,以及相关的审计记录。并且可以设置警报,当出现与 DB Link 相关的安全事件或者性能问题时,及时通知管理员。

未完待续

码字不易,宝贵经验分享不易,请各位支持原创,转载注明出处,多多关注作者,后续不定期分享DB基本知识和排障案例及经验、性能调优等。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/464680.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【MySQL】深层理解索引及特性(重点)--下(12)

索引(重点) 1. 索引的作用2. 索引操作2.1 主键索引2.1.1 主键索引的特点2.1.2 创建主键索引 2.2 唯一键索引2.2.1 唯一键索引的特点2.2.2 唯一索引的创建 2.3 普通索引2.3.1 普通索引的特点2.3.2 普通索引的创建 2.4 全文索引2.4.1 全文索引的作用2.4.2 …

临街矩阵乘以自己转置的含义

总结: 临街矩阵* 邻接矩阵转置的(i,j) 位置表示有多少种线路从元素A跳转一条边最终落到元素j的路线. 这个也叫1_degree.

A010-基于SpringBoot的宠物健康咨询系统的设计与实现

🙊作者简介:在校研究生,拥有计算机专业的研究生开发团队,分享技术代码帮助学生学习,独立完成自己的网站项目。 代码可以查看文章末尾⬇️联系方式获取,记得注明来意哦~🌹 赠送计算机毕业设计600…

DP3复现基础知识(一)—— Hydra 库

DP3 无论是 train 还是 eval 均使用了 Hydra 这一个python 库,这就有些代码在看的时候难以理解其通讯逻辑,例如: hydra.main(version_baseNone,config_pathstr(pathlib.Path(__file__).parent.joinpath(diffusion_policy_3d, config)) ) Hy…

记单词,不要迷信一种方法

记单词,不要迷信一种方法。因为,记单词的目的,就是记住单词呀。 哪一种方法能让你记住,快速、高效、长久地记住,你就使用哪种方法;而且,方法和方法之间,不见得是矛盾的呀。 我们举个…

【自动化利器】12个评估大语言模型(LLM)质量的自动化框架

LLM评估是指在人工智能系统中评估和改进语言和语言模型的过程。在人工智能领域,特别是在自然语言处理(NLP)及相关领域,LLM评估具有至高无上的地位。通过评估语言生成和理解模型,LLM评估有助于细化人工智能驱动的语言相…

IO流篇(一、File)

目录 一、学习前言 二、文件简介 三、文件使用 1. 绝对路径 vs 相对路径 2. 路径分隔符 3. 属性(字段) 4. 构造方法 5. 常用方法 5.1. 获取文件的相关信息 5.2. 判断功能 5.3. 新建和删除 5.4. 文件的获取 5.5. 重命名文件 四、文件使用练习…

spring ai 入门 之 结构化输出 - 把大模型llm返回的内容转换成java bean

目录 ​编辑 将AI非结构化文本转换为特定格式数据的应用场景说明 Spring AI 介绍 :为Java开发者打造的AI应用开发框架 Qwen 介绍 : 一个国内领先的开源大模型 Spring AI Alibaba框架介绍 : 一个国内最好的spring ai实现 使用spring ai …

文心一言 VS 讯飞星火 VS chatgpt (383)-- 算法导论24.5 3题

三、对引理 24.10 的证明进行改善,使其可以处理最短路径权重为 ∞ ∞ ∞ 和 − ∞ -∞ −∞ 的情况。引理 24.10(三角不等式)的内容是:设 G ( V , E ) G(V,E) G(V,E) 为一个带权重的有向图,其权重函数由 w : E → R w:E→R w:E→R 给出&…

漫途焊机安全生产监管方案,提升安全生产管理水平!

随着智能制造时代的到来,企业安全生产管理的重要性日益凸显。特别是在现代工厂中,焊机的安全生产监管成为了一个不容忽视的重要环节。传统的焊机安全生产监管方式存在诸多不足,如人工巡检频率低、数据延迟、安全隐患发现不及时等问题。因此&a…

csp2024T3

题目大意:对于每个数而言,可以将其染成红或蓝,对于每一个数,定义其贡献为,当且仅当这个数最近的同色数与其相等,否则其贡献为0,求最大贡献和。 思路:考虑dp 1.考场20多分钟想的奇怪…

十六届蓝桥杯嵌入式资料 看这个就够了(附CSDN开源程序)

蓝桥杯嵌入式终极模板,简单配置,功能全面 一小时玩转蓝桥杯嵌入式开发版 除按键和 LED 其余模块都来自官方选手资料包 代码简洁工整,参数,函数体分模块,有非常详细的注释,初始化由 cubemx 生成 &#xff08…

【测试工具】Fastbot 客户端稳定性测试

背景 做这个主要为了发版之前提前发现崩溃,风险前置。适合客户端很重的业务。 优点:你不改动也能用, 维护成本不高。 缺点:容易进入H5页面无法返回,效果有限。 备注:我这边接手别人维护,公司…

苍穹外卖Bug集合

初始化后端项目运行出现以下问题 以上报错是因为maven和jdk版本不符合,需要将jdk改成17,mavne改成3.9.9

中国雕塑、

孙溟㠭浅析“印章” 印章又称“图章”,玺印起源商代,至少在春秋战国时已出现,因战国时代已普遍使用。 商玺 古玺是先秦印章的通称,秦始皇统一六国之后,皇帝用印称“璽(玺)”&…

Android App 技能在DuerOS的调试方法

温故知新,我们先回顾一下DuerOS的技能分类。根据不同的视角可以对DuerOS 目前支持的技能类型进行不同的分类,例如,从用户与技能的语音交互方式来看, 可以将技能分为这四种技能类型: L1技能:只支持语音的打开和关闭L2技…

Ghidra无头模式(自动化批处理执行重复性任务)

Ghidra无头模式(自动化批处理执行重复性任务) 与Ghidra GUI探索单个项目中的单个文件不同,Ghidra headless analyzer(Ghidra无头分析器)更加适合批处理和用脚本控制Ghidra。 (一)启动analyzeHea…

ES海量数据插入如何优化性能?

2024年10月NJSD技术盛典暨第十届NJSD软件开发者大会、第八届IAS互联网架构大会在南京召开。百度文心快码总经理臧志分享了《AI原生研发新范式的实践与思考》,探讨了大模型赋能下的研发变革及如何在公司和行业中落地,AI原生研发新范式的内涵和推动经验。 …

el-date-picker日期选择器动态设置日期

需求&#xff1a;选择开始时间&#xff0c;或者在开始时间已存在的情况下&#xff1b;结束时间下拉日期选择框展示从开始日期展示&#xff1b;而不是当前日期&#xff0c;并且结束时间下拉框日期要禁用开始时间之前的日期。 <el-form-item label"开始时间" prop&q…

web实操2——idea创建普通web项目

创建项目 就是普通的java项目&#xff0c;项目右键add framework support&#xff08;添加框架支持&#xff09;,然后点击Web Application&#xff08;web应用程序&#xff09;&#xff0c;然后点击OK。即可。 文件下就会多一个web文件夹&#xff0c;里面是WEB-INF文件夹&…