当前位置: 首页 > news >正文

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

1. 引言:

本文图文深入介绍Oracle DB link,先介绍基本概念。

2.DB link的定义

数据库链接(Database Link,简称 DB Link)是 Oracle 数据库中的一个重要功能。它是一种在一个 Oracle 数据库实例中访问另一个 Oracle 数据库实例中的对象(如表、视图等)的机制。通过 DB Link,可以实现跨数据库的查询、插入、更新和删除等操作,就好像这些对象是在本地数据库中一样。

3. DB link的工作原理

当在本地数据库中通过 DB Link 访问远程数据库对象时,Oracle 会建立一个网络连接到远程数据库。这个连接是基于 Oracle 的网络配置(如 TNSNAMES.ORA 文件或者 LDAP 等方式的配置)来确定远程数据库的位置和连接参数。
例如,假设本地数据库为 DB1,远程数据库为 DB2,在 DB1 中创建了一个指向 DB2 的 DB Link。当在 DB1 中执行一个查询语句,如 “SELECT * FROM table@DBLink_to_DB2;”(其中 “DBLink_to_DB2” 是指向 DB2 的 DB Link 名称),Oracle 会根据 DB Link 中的配置信息,通过网络连接到 DB2,在 DB2 中执行该查询语句,然后将结果返回给 DB1。如下图所示:有A、B两个数据库实例,A下面有user1和user2两个用户,B实例下有用户user3,在user1 用户下建连接user3名为link的DBLINK。
在这里插入图片描述

4. DB link的类型与权限

  1. 类型:
    公有数据库链接:所有用户都可以使用的数据库链接。
    私有数据库链接:只能被创建它的用户使用。
    全局数据库链接:在Oracle Names服务器上定义的,可以被网络中的所有数据库使用。
  2. 权限:
    创建DB link的用户需要具有CREATE DATABASE LINK权限。
    使用DB link的用户需要具有对远程数据库对象的相应权限(如SELECT、INSERT、UPDATE、DELETE等)。

5. 创建 DB Link

在Oracle数据库中,创建数据库链接(DB Link)通常使用CREATE DATABASE LINK语句。下面介绍具体步骤:

1.权限检查

  1. 检查权限:
    要确保当前用户具有创建DB Link的权限。可以使用以下SQL语句检查:
    SELECT * FROM user_sys_privs WHERE privilege LIKE ‘%DATABASE LINK%’;
    如果没有创建DB Link的权限,需要请求具有DBA权限的用户授予权限。例如:
    GRANT CREATE DATABASE LINK TO your_username;

2. 创建DB Link

  1. 使用TNS名称创建:
    如果Oracle的tnsnames.ora文件中已经配置了远程数据库的连接信息,可以直接使用TNS名称来创建DB Link。例如:
CREATE DATABASE LINK link_name  
CONNECT TO remote_username IDENTIFIED BY remote_password  
USING 'tns_alias';

其中:link_name是DB Link的名称,
remote_username和remote_password是远程数据库的用户名和密码,
tns_alias是tnsnames.ora文件中配置的远程数据库的连接别名。

  1. 使用描述信息创建:
    如果不想依赖tnsnames.ora文件,可以直接在创建DB Link的语句中提供远程数据库的连接描述信息。例如:
CREATE DATABASE LINK link_name  
CONNECT TO remote_username IDENTIFIED BY remote_password  
USING '(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=remote_host)(PORT=remote_port)))(CONNECT_DATA=(SERVICE_NAME=remote_service_name)))';

其中:
remote_host是远程数据库的主机名或IP地址,
remote_port是远程数据库监听的端口号,
remote_service_name是远程数据库的服务名称。

3. 验证DB Link

  1. 查询远程数据:
    创建成功后,可以使用DB Link来查询远程数据库中的数据。例如:
    SELECT * FROM remote_table@link_name;
    其中,remote_table是远程数据库中的表名,link_name是之前创建的DB Link的名称。
  2. 查看DB Link:
    可以使用以下SQL语句查看数据库中存在的DB Link:
SELECT * FROM dba_db_links; -- 需要DBA权限  
SELECT * FROM all_db_links; -- 查看当前用户可访问的DB Link  
SELECT * FROM user_db_links; -- 查看当前用户拥有的DB Link

4. 注意事项

  1. 安全性:
    在创建DB Link时,需要确保提供的远程数据库用户名和密码是安全的,避免泄露给未经授权的用户。
  2. 网络性能:
    使用DB Link进行查询时,会涉及到网络传输,因此需要注意网络性能的影响。特别是在查询大量数据时,可能会对网络造成较大的负担。
  3. 事务处理:
    如果需要在分布式事务中使用DB Link,需要确保Oracle数据库支持分布式事务,并且正确配置了相关的事务管理器。

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

相关文章:

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

1. 引言: 本文图文深入介绍Oracle DB link,先介绍基本概念。 2.DB link的定义 数据库链接(Database Link,简称 DB Link)是 Oracle 数据库中的一个重要功能。它是一种在一个 Oracle 数据库实例中访问另一个 Oracle 数…...

Uniswap/v2-core使用及其交易流程

Uniswap是一个开源的去中心化的交易所,在github上面有以下重要仓库: uniswap-v2-core: 币对池pair的核心智能合约。这个repository包含了Uniswap的币对池pair的所有核心逻辑,增加流动性、减少流动性等。uniswap-v2-periphery&…...

clickhouse运维篇(二):多机器手动部署ck集群

熟悉流程并且有真正部署需求可以看一下我的另一篇简化部署的文章,因为多节点配置还是比较麻烦的先要jdk、zookeeper,再ck,还有各种配置文件登录不同机器上手动改配置文件还挺容易出错的。 clickhouse运维篇(三)&#x…...

OpenCV视觉分析之目标跟踪(7)目标跟踪器类TrackerVit的使用

操作系统:ubuntu22.04 OpenCV版本:OpenCV4.9 IDE:Visual Studio Code 编程语言:C11 算法描述 VIT 跟踪器由于特殊的模型结构而变得更快且极其轻量级,模型文件大约为 767KB。模型下载链接:https://github.com/opencv/…...

Java 实现 RESTful 风格的 Web 服务详解

前言 RESTful(Representational State Transfer)风格的 API 已经成为现代 Web 服务的标准。它通过简单的 HTTP 方法和资源定位来提供了一种高度可扩展和易于维护的服务接口。Java 作为一种功能强大且广泛使用的编程语言,提供了多种框架来实现…...

18.网工入门篇--------今天介绍下广域网技术

广域网(Wide Area Network,WAN)是一种能连接多个城市、国家甚至横跨几个洲,提供远距离通信的网络。以下是关于广域网技术的详细介绍: 广域网的组成: 结点交换机:这是广域网的核心设备&#xff0…...

鸿蒙原生应用开发及部署:首选华为云,开启HarmonyOS NEXT App新纪元

目录 前言 HarmonyOS NEXT:下一代操作系统的愿景 1、核心特性和优势 2、如何推动应用生态的发展 3、对开发者和用户的影响 华为云服务在鸿蒙原生应用开发中的作用 1、华为云ECS C系列实例 (1)全维度性能升级 (2&#xff…...

Spring JdbcTemplate详解

文章目录 Spring JdbcTemplate详解一、引言二、配置JdbcTemplate1、引入依赖2、配置数据库连接池3、配置JdbcTemplate 三、使用JdbcTemplate操作数据库1、添加数据2、查询数据查询某个值根据条件查询返回某个对象查询对象集合 四、总结 Spring JdbcTemplate详解 一、引言 在J…...

Docker篇(Docker安装)

目录 一、Centos7.x 1. yum 包更新到最新 2. 安装需要的软件包 3. 设置 yum 源为阿里云 4. 安装docker 5. 安装后查看docker版本 6. 设置ustc镜像源 二、CentOS安装Docker 前言 1. 卸载(可选) 2. 安装docker 3. 启动docker 4. 配置镜像加速 …...

Pytorch 实现图片分类

CNN 网络适用于图片识别,卷积神经网络主要用于图片的处理识别。卷积神经网络,包括一下几部分,输入层、卷积层、池化层、全链接层和输出层。 使用 CIFAR-10 进行训练, CIFAR-10 中图片尺寸为 32 * 32。卷积层通过卷积核移动进行计…...

得物App获评新奖项,正品保障夯实供应链创新水平

近日,得物App再度获评新奖项——“2024上海市供应链创新与应用优秀案例”。 本次奖项为上海市供应链领域最高奖项,旨在评选出在供应链创新成效上处于领先地位、拥有成功模式和经验的企业。今年以来,得物App已接连获得“上海市质量金奖”、“科…...

【数据结构-邻项消除】力扣735. 小行星碰撞

给定一个整数数组 asteroids,表示在同一行的小行星。 对于数组中的每一个元素,其绝对值表示小行星的大小,正负表示小行星的移动方向(正表示向右移动,负表示向左移动)。每一颗小行星以相同的速度移动。 找…...

002-Kotlin界面开发之Kotlin旋风之旅

Kotlin旋风之旅 Compose Desktop中哪些Kotlin知识是必须的? 在学习Compose Desktop中,以下Kotlin知识是必须的: 基础语法:包括变量声明、数据类型、条件语句、循环等。面向对象编程:类与对象、继承、接口、抽象类等。…...

VMware Workstation Pro for Personal Use (For Windows)

这是从broadcom.com网下载的个人版本的Vmware 17.6.1,存分享不要分。 VMware-workstation-full-17.6.1-24319023.exe(447.93 MB) Build Number: 24319023 Oct 08, 2024 07.33AM SHA2: f95429e395a583eb5ba91f09b040e2f8c53a5e7aa37c4c6bfcaf82115a8…...

论文 | PROMPTAGATOR : FEW-SHOT DENSE RETRIEVAL FROM 8 EXAMPLES

1. 背景信息 在信息检索领域,传统的方法往往依赖于大量的标注数据来训练模型,以便在各种任务中表现良好。然而,许多实际应用中的监督数据是有限的,尤其是在不同的检索任务中。最近的研究开始关注如何从一个拥有丰富监督数据的任务…...

使用 Github 进行项目管理

GitHub 是一个广泛使用的代码托管和协作平台,它提供了强大的工具来支持项目管理和团队协作。在项目开发和工作中,避免不了 Github 的使用,然鹅我一直没有稍微系统地学习过 github 的整个工作流程,对这些操作都是一知半解的&#x…...

企业SRC挖掘选择与信息收集指南

内容预览 ≧∀≦ゞ 企业SRC挖掘选择与信息收集指南导语1. 企业SRC的选择2. 信息收集2.1 集团与子公司2.2 小程序与APP2.3 Web端信息收集 3. 信息收集常用模板总结 企业SRC挖掘选择与信息收集指南 导语 近年来,企业的安全响应中心(SRC)已逐渐…...

Golang | Leetcode Golang题解之第524题通过删除字母匹配到字典里最长单词

题目: 题解: func findLongestWord(s string, dictionary []string) (ans string) {m : len(s)f : make([][26]int, m1)for i : range f[m] {f[m][i] m}for i : m - 1; i > 0; i-- {f[i] f[i1]f[i][s[i]-a] i}outer:for _, t : range dictionary …...

【DBeaver】连接带kerberos的hive[Apache|HDP]

目录 一、安装配置Kerberos客户端环境 1.1 安装Kerberos客户端 1.2 环境配置 二、基于Cloudera驱动创建连接 三、基于Hive原生驱动创建连接 一、安装配置Kerberos客户端环境 1.1 安装Kerberos客户端 在Kerberos官网下载,地址如下:https://web.mit.edu/kerberos…...

Unity3D 开发教程:从入门到精通

Unity3D 开发教程:从入门到精通 Unity3D 是一款强大的跨平台游戏引擎,广泛应用于游戏开发、虚拟现实、增强现实等领域。本文将详细介绍 Unity3D 的基本概念、开发流程以及一些高级技巧,帮助你从零基础到掌握 Unity3D 开发。 目录 Unity3D…...

文件操作和 IO(一):文件基础知识 文件系统操作 => File类

目录 1. 什么是文件 1.1 概念 1.2 硬盘, 内存, 寄存器之间的区别 1.3 机械硬盘和固态硬盘 2. 文件路径 2.1 绝对路径 2.2 相对路径 3. 文件分类 4. File 类 4.1 属性 4.2 构造方法 4.3 方法 1. 什么是文件 1.1 概念 狭义上的文件: 保存在硬盘上的文件广义的上的文…...

用Pyhon写一款简单的益智类小游戏——2048

文字版——代码及讲解 代码—— import random# 初始化游戏棋盘 def init_board():return [[0] * 4 for _ in range(4)]# 在棋盘上随机生成一个2或4 def add_new_tile(board):empty_cells [(i, j) for i in range(4) for j in range(4) if board[i][j] 0]if empty_cells:i,…...

akshare股票涨跌幅自定义范围查询:A股、港股、美股

参看:https://stock.hexun.com/2024-10-31/215251914.html 涨幅计算公式:(当前价格 - 上一个交易日收盘价) 上一个交易日收盘价 100% 。 跌幅计算公式:(上一个交易日收盘价 - 当前价格) 上一个…...

通过js控制修改css变量

在JavaScript中,你可以通过操作CSS变量(也称为自定义属性)来动态改变样式。CSS变量在CSS中使用 – 前缀定义,例如 --main-color: red;。在JavaScript中,你可以使用 document.documentElement.style.setProperty 方法来…...

<HarmonyOS第一课>HarmonyOS SDK开放能力简介的课后习题

不出户&#xff0c;知天下&#xff1b; 不窥牖&#xff0c;见天道。 其出弥远&#xff0c;其知弥少。 是以圣人不行而知&#xff0c;不见而明&#xff0c;不为而成。 本篇<HarmonyOS第一课>HarmonyOS SDK开放能力简介是简单介绍了HarmonyOS SDK&#xff0c;不需要大家过多…...

深度学习:yolo的使用--图像处理

定义了一个名为 ListDataset 的类&#xff0c;它继承自 PyTorch 的 Dataset 类,这个数据集从一个包含图像文件路径的列表中读取图像和对应的标签文件 class ListDataset(Dataset):def __init__(self, list_path, img_size416, augmentTrue, multiscaleTrue, normalized_labelsT…...

TypeScript实用笔记(一):初始化、类型定义与函数使用

文章目录 一、ts初始化1. 初始化.json文件一2. 启动方式2.1 直接运行.ts文件2.2 转换运行 二、类型1. 参数类型1.1 常规参数1.2 symbol1.3 数组\[]1.4 元组\[]1.5 用字面量定义数据类型 2. Object3. 枚举类型\[Enum]3.1 数字枚举3.2 字符串枚举 三、 类型别名1. 数组别名使用2.…...

【大数据学习 | kafka】producer之拦截器,序列化器与分区器

1. 自定义拦截器 interceptor是拦截器&#xff0c;可以拦截到发送到kafka中的数据进行二次处理&#xff0c;它是producer组成部分的第一个组件。 public static class MyInterceptor implements ProducerInterceptor<String,String>{Overridepublic ProducerRecord<…...

零基础学西班牙语,柯桥专业小语种培训泓畅学校

No te comas el coco, seguro que te ha salido bien la entrevista. Ya te llamarn. 别瞎想了&#xff01;我保证你的面试很顺利。他们会给你打电话的。 这里的椰子是"头"的比喻。在西班牙的口语中&#xff0c;我们也可以听到其他同义表达&#xff0c;比如&#x…...

C++学习:类和对象(三)

一、深入讲解构造函数 1. 什么是构造函数&#xff1f; 构造函数&#xff08;Constructor&#xff09;是在创建对象时自动调用的特殊成员函数&#xff0c;用于初始化对象的成员变量。构造函数的名称与类名相同&#xff0c;没有返回类型 2. 构造函数的类型 &#xff08;1&…...