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

news2024/11/5 11:15:15

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_link
   CONNECT TO remote_user IDENTIFIED BY remote_password
   USING '(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 访问远程服务:
BEGIN
     DBMS_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.coloradmin.cn/o/2232532.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

华为HarmonyOS打造开放、合规的广告生态 - 贴片广告

场景介绍 贴片广告是一种在视频播放前、视频播放中或视频播放结束后插入的视频或图片广告。 接口说明 接口名 描述 loadAd(adParam: AdRequestParams, adOptions: AdOptions, listener: AdLoadListener): void 请求单广告位广告,通过AdRequestParams、AdOptions…

基于 Transformer 的语言模型

基于 Transformer 的语言模型 Transformer 是一类基于注意力机制(Attention)的模块化构建的神经网络结构。给定一个序列,Transformer 将一定数量的历史状态和当前状态同时输入,然后进行加权相加。对历史状态和当前状态进行“通盘…

【天线&运输】冲浪者检测系统源码&数据集全套:改进yolo11-DySnakeConv

改进yolo11-SCConv等200全套创新点大全:冲浪者检测系统源码&数据集全套 1.图片效果展示 项目来源 人工智能促进会 2024.11.03 注意:由于项目一直在更新迭代,上面“1.图片效果展示”和“2.视频效果展示”展示的系统图片或者视频可…

计算机毕业设计Hadoop+Spark大模型微博情感分析 微博舆情分析 微博爬虫 微博可视化 微博大数据分析 微博大数据 大数据毕业设计 Hive数据仓库

温馨提示:文末有 CSDN 平台官方提供的学长联系方式的名片! 温馨提示:文末有 CSDN 平台官方提供的学长联系方式的名片! 温馨提示:文末有 CSDN 平台官方提供的学长联系方式的名片! 作者简介:Java领…

WPF中如何简单的使用MvvmLight创建一个项目并进行 增删改查

第一步:创建项目后下载如下两个NuGet程序包,然后删除删掉using Microsoft.Practices.ServiceLocation; 并且引入using CommonServiceLocator; 第二步:删除原来的XAML文件并创建如下的包结构然后创建一个在View文件夹中创建一个Main窗体 再将…

java项目之校园资料分享平台(springboot)

风定落花生,歌声逐流水,大家好我是风歌,混迹在java圈的辛苦码农。今天要和大家聊的是一款基于springboot的校园资料分享平台。项目源码以及部署相关请联系风歌,文末附上联系信息 。 项目简介: 校园资料分享平台的主要…

Spring Security-02-Spring Security认证方式-HTTP基本认证、Form表单认证、HTTP摘要认证、前后端分离安全处理方案

Lison <dreamlison163.com>, v1.0.0, 2024.06.01 Spring Security-02-Spring Security认证方式-HTTP基本认证、Form表单认证、HTTP摘要认证、前后端分离安全处理方案 文章目录 Spring Security-02-Spring Security认证方式-HTTP基本认证、Form表单认证、HTTP摘要认证、…

2-9 存储管理

9.1 传统磁盘管理 1.添加磁盘 在关闭虚拟机情况下添加磁盘(SATA) 别忘记点确定&#xff01;&#xff01;&#xff01; 重启虚拟机&#xff0c;并查看磁盘情况 [rootlocalhost ~]# lsblk NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINTS sda 8:0 0 20G…

word及Excel常见功能使用

最近一直在整理需规文档及表格&#xff0c;Word及Excel需要熟练使用。 Word文档 清除复制过来的样式 当复制文字时&#xff0c;一般会带着字体样式&#xff0c;此时可选中该文字 并使用 ctrlshiftN 快捷键进行清除。 批注 插入->批注&#xff0c;选中文本 点击“批注”…

【Linux 27】HTTP 协议中的 cookie 和 session

文章目录 &#x1f308;一、Cookie 的相关概念⭐ 1. Cookie 的概念⭐ 2. Cookie 的工作原理⭐ 3. Cookie 的分类⭐ 4. Cookie 的用途⭐ 5. Cookie 设置的基本格式⭐ 6. Cookie 设置时的注意事项⭐ 7. Cookie 的生命周期⭐ 8. Cookie 的安全性问题 &#x1f308; 二、Session 的…

SQL用一个字段查询出数据的交集

出个SQL查询的题吧&#xff0c;有兴趣的可以看看 1、问题 下面有一份数据&#xff08;图1&#xff09;&#xff0c;由两部分组成&#xff1a;分析数据和基准数据 分析数据标识列为1&#xff0c;基准数据标识列为1&#xff0c;两字段0,1互斥 要求&#xff1a;按找出两部分数据…

后端java——如何为你的网页设置一个验证码

目录 1、工具的准备 2.基本方法 3.实现类 4.实践 HTML文件&#xff1a; Java文件1:创建验证码 Java文件2:验证验证码 本文通过HUTOOL实现&#xff1a;Hutool参考文档Hutool&#xff0c;Java工具集https://hutool.cn/docs/#/ 1、工具的准备 如果我们通过hutool来实现这个…

【Python单元测试】pytest框架单元测试 配置 命令行操作 测试报告 覆盖率

单元测试&#xff08;unit test&#xff09;&#xff0c;简称UT。本文将介绍在Python项目中&#xff0c;pytest测试框架的安装&#xff0c;配置&#xff0c;执行&#xff0c;测试报告与覆盖率 pytest简介 pytest是一款流行的&#xff0c;简单易上手的单元测试框架&#xff0c;…

HTMLCSS:呈现的3D树之美

效果演示 这段代码通过HTML和CSS创建了一个具有3D效果的树的图形&#xff0c;包括分支、树干和阴影&#xff0c;通过自定义属性和复杂的变换实现了较为逼真的立体效果。 HTML <div class"container"><div class"tree"><div class"…

练习LabVIEW第三十八题

学习目标&#xff1a; 刚学了LabVIEW&#xff0c;在网上找了些题&#xff0c;练习一下LabVIEW&#xff0c;有不对不好不足的地方欢迎指正&#xff01; 第三十八题&#xff1a; 创建一个VI&#xff0c;实现对按钮状态的指示和按钮“按下”持续时间简单计算功能&#xff0c;按…

HomeAssistant自定义组件学习-【二】

#要说的话# 前面把中盛科技的控制器组件写完了。稍稍熟悉了一些HA&#xff0c;现在准备写窗帘控制组件&#xff0c;构想的东西会比较多&#xff0c;估计有些难度&#xff0c;过程会比较长&#xff0c;边写边记录吧&#xff01; #设备和场景环境# 使用的是Novo的电机&#xf…

Linux脚本数组与字符串

文章目录 打印数组与长度数组遍历数组赋值下标索引访问切片追加()删除关联数组(像map)字符串字符拼接截取子串字符串长度字符串替换模式匹配截取分割字符串大小写转换 打印数组与长度 ${arrayName[*]} 打印数组${arrayName[]} 打印数组${#arrayName[*]} 打印数组长度${#arrayN…

闯关leetcode——3289. The Two Sneaky Numbers of Digitville

大纲 题目地址内容 解题代码地址 题目 地址 https://leetcode.com/problems/the-two-sneaky-numbers-of-digitville/description/ 内容 In the town of Digitville, there was a list of numbers called nums containing integers from 0 to n - 1. Each number was suppos…

#Jest进阶知识:整合 webpack 综合练习

这一小节&#xff0c;我们来做一个综合的练习&#xff0c;该练习会整合&#xff1a; typescriptwebpackjest 准备工作 首先创建项目目录&#xff0c;通过 npm init -y 进行初始化。 整个项目我们打算使用 typescript 进行开发&#xff0c;因此需要安装 typescript npm i t…

MATLAB——矩阵操作

内容源于b站清风数学建模 数学建模清风老师《MATLAB教程新手入门篇》https://www.bilibili.com/video/BV1dN4y1Q7Kt/ 目录 1.MATLAB中的向量 1.1向量创建方法 1.2向量元素的引用 1.3向量元素修改和删除 2.MATLAB矩阵操作 2.1矩阵创建方法 2.2矩阵元素的引用 2.3矩阵…