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

ORACLE 如何使用dblink实现跨库访问

dbLink是简称,全称是databaselink。database link是定义一个数据库到另一个数据库的路径的对象,database link允许你查询远程表及执行远程程序。在任何分布式环境里,database都是必要的。另外要注意的是database link是单向的连接。在创建database link的时候,Oracle再数据字典中保存相关的database link的信息,在使用database link的时候,Oracle通过Oracle Net用用户预先定义好的连接信息访问相应的远程数据库以完成相应的工作。

1.赋值权限

例如为用户BOSS823赋值link相关的权限

grant create public database link,create database link to BOSS823;
2.创建dblink

语法:

CREATE [SHARED] [PUBLIC] database link link_name[CONNECT TO [user] [current_user] IDENTIFIED BY [password] [AUTHENTICATED BY user IDENTIFIED BY password] [USING 'connect_string']

  • 权限:创建数据库链接的帐号必须有CREATE DATABASE LINK或CREATE PUBLIC DATABASE LINK的系统权限,用来登录到远程数据库的帐号必须有CREATE SESSION权限。这两种权限都包含在CONNECT角色中(CREATE PUBLIC DATABASE LINK权限在DBA中)。一个公用数据库链接对于数据库中的所有用户都是可用的,而一个私有链接仅对创建它的用户可用。由一个用户给另外一个用户授权私 有数据库链接是不可能的,一个数据库链接要么是公用的,要么是私有的。
  • link : 当source端的参数(parameter)GLOBAL_NAMES=TRUE时,link名必须与远程数据库的全局数据库名global_name)相同;否则,可以任意命名。
  • current_user使用该选项是为了创建global类型的dblink。在分布式体系中存在多个数据库的话。如果想要在每一个数据库中都可以使用同样的名字来访问数据库a,那在每个数据库中都要创建一个到数据库a的db_link,太麻烦了。所以有这个选项的话你只要创建一次。所有的数据库都可以使用这个db_link来访问了。要使用这个特性,必须有oracle nameserver或者ORACLE目录服务器。并且数据库a的参数global_names=true.具体我也没有创建过,没有这个环境。
  • connectstring:连接字符串,tnsnames.ora中定义远程数据库的连接串,也可以在创建dblink的时候直接指定。
  • username、password:远程数据库的用户名,口令。如果不指定,则使用当前的用户名和口令登录到远程数据库,当创建connected user类型的dblink时,需要如果采用数据字典验证,则需要两边数据库的用户名密码一致

举例:创建名称为dblink821的dbLink, 链接访问10.0.192.36数据库的BOSS821T用户

create database link dblink821connect to BOSS821T identified by BOSS821using '10.0.192.36_STARSMS';

或者使用图形界面创建

3.查询dblink
SQL> select * from dba_db_links;OWNER                          DB_LINK                                                                          USERNAME                       HOST                                                                             CREATED
------------------------------ -------------------------------------------------------------------------------- ------------------------------ -------------------------------------------------------------------------------- -----------
BOSS823                        DBLINK821.REGRESS.RDBMS.DEV.US.ORACLE.COM                                        BOSS821T                       10.0.192.36_STARSMS                                                              2024/3/6 17SQL> 
4.删除dblink
DROP database link link_name;

5.使用dblink

1>访问链接数据库中的表
select * from BOSS821T.CUSTOMEREN @dblink821
2>通过dblink复制表

通过dblink复制表性能很高,例如下面的测试,复制17W数据执行时间约3秒

SQL> select COUNT(*) from BOSS821T.CUSTOMEREN @dblink821T;COUNT(*)
----------171736SQL> create table CUSTOMER821T as select * from BOSS821T.CUSTOMEREN @dblink821T;Table createdSQL> 执行时间:3.089秒

6.常见问题ORA-02063

如果出现ORA-02063可能是由于11开始支持字符大小写问题引起的

--ORA-01017: invalid username/password; logon denied 
--ORA-02063: preceding line from <link_name>

查看数据库信息

--查看当前数据库的版本
SQL> select * from v$version;BANNER
----------------------------------------------------------------
Oracle Database 10g Enterprise Edition Release 10.2.0.3.0 - Prod
PL/SQL Release 10.2.0.3.0 - Production
CORE    10.2.0.3.0    Production
TNS for 32-bit Windows: Version 10.2.0.3.0 - Production
NLSRTL Version 10.2.0.3.0 - Production--查看链接到数据库的版本
SQL> select * from v$version;BANNER
--------------------------------------------------------------------------------
Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - 64bit Production
PL/SQL Release 11.2.0.4.0 - Production
CORE    11.2.0.4.0    Production
TNS for Linux: Version 11.2.0.4.0 - Production
NLSRTL Version 11.2.0.4.0 - Production

被访问的数据库的版本是11g,因此修改dblink,使用双引号来设置密码

-- Create database link 
create database link dblink821Tconnect to BOSS821T identified by "boss821T"using '10.0.192.36_STARSMS';

上一篇:Oracle 的同义词(Synonym) 作用

相关文章:

ORACLE 如何使用dblink实现跨库访问

dbLink是简称&#xff0c;全称是databaselink。database link是定义一个数据库到另一个数据库的路径的对象&#xff0c;database link允许你查询远程表及执行远程程序。在任何分布式环境里&#xff0c;database都是必要的。另外要注意的是database link是单向的连接。在创建dat…...

Sentinel 面试题及答案整理,最新面试题

Sentinel的流量控制规则有哪些&#xff0c;各自的作用是什么&#xff1f; Sentinel的流量控制规则主要包括以下几种&#xff1a; 1、QPS&#xff08;每秒查询量&#xff09;限流&#xff1a; 限制资源每秒的请求次数&#xff0c;适用于控制高频访问。 2、线程数限流&#xf…...

Qt在windows编译hiredis依赖库

目录 0 前言1 Qt安装遇到的问题2 hiredis源码下载2.0 redis源码下载2.1 hiredis源码下载2.2 编译hiredis源码2.3 遇到的问题列表参考资料0 前言 当前参与的项目需要用Qt对redis进行操作,以前没玩过这块,顺手记下笔记梳理起来~ 1 Qt安装 安装版本下载:https://download.qt…...

【工作向】protobuf编译生成pb.cc和pb.py文件

序言 首先通过protoc --version查看protoc版本&#xff0c;避免pb文件生成方和使用方版本不一致 1. 生成pb.cc 生成命令 protoc -I${proto_file_dir} --cpp_out${pb_file_dir} *.proto参数&#xff1a; -I表示 proto 文件的路径&#xff1b; --cpp_out 表示输出路径&#xff…...

android 快速实现 垂直SeekBar(VerticalSeekBar)

1.话不多说上源码&#xff1a; package com.example.widget;import android.content.Context; import android.graphics.Canvas; import android.util.AttributeSet; import android.view.MotionEvent;/*** Class to create a vertical slider*/ public class VerticalSeekBar…...

算法刷题day23:双指针

目录 引言概念一、牛的学术圈I二、最长连续不重复序列三、数组元素的目标和四、判断子序列五、日志统计六、统计子矩阵 引言 关于这个双指针算法&#xff0c;主要是用来处理枚举子区间的事&#xff0c;时间复杂度从 O ( N 2 ) O(N^2) O(N2) 降为 O ( N ) O(N) O(N) &#xf…...

学术论文GPT的源码解读与二次开发:从ChatPaper到gpt_academic

前言 本文的前两个部分最早是属于此旧文的《学术论文GPT的源码解读与微调&#xff1a;从ChatPaper到七月论文审稿GPT第1版》&#xff0c;但为了每一篇文章各自的内容更好的呈现&#xff0c;于是我今天做了以下三个改动 原来属于mamba第五部分的「Mamba近似工作之线性Transfor…...

报表生成器FastReport .Net用户指南:表达式(下)

在上一篇文章《报表生成器FastReport .Net用户指南&#xff1a;表达式&#xff08;上&#xff09;》中&#xff0c;我们已经介绍了表达式中的表达式编辑器、引用报告对象、使用 .Net 函数、数据元素参考这四部分&#xff0c;接下来让我们继续介绍表达式中的&#xff1a;引用数据…...

JavaScript极速入门(1)

初识JavaScript JavaScript是什么 JavaScript(简称JS),是一个脚本语言,解释型或者即时编译型语言.虽然它是作为开发Web页面的脚本语言而著名,但是也应用到了很多非浏览器的环境中. 看似这门语言叫JavaScript,其实在最初发明之初,这门语言的名字其实是在蹭Java的热度,实际上和…...

鸿蒙Harmony应用开发—ArkTS声明式开发(通用属性:浮层)

设置组件的遮罩文本。 说明&#xff1a; 从API Version 7开始支持。后续版本如有新增内容&#xff0c;则采用上角标单独标记该内容的起始版本。 overlay overlay(value: string | CustomBuilder, options?: { align?: Alignment; offset?: { x?: number; y?: number } })…...

Meta AI移动设备上部署LLM的新框架MobileLLM

Meta AI 研究团队推出的 MobileLLM 标志着大语言模型(LLMs)朝着模拟人类理解和生成自然语言迈出了革命性的一步。LLMs 在处理和分析大量数据集方面的能力已经显著影响了自动化客户服务、语言翻译和内容创作等多个领域。然而,由于传统 LLMs 在计算和存储资源方面的需求庞大,…...

使用Tesseract-OCR对PDF等图片文件进行文字识别

安装 用 Homebrew 来安装 Tesseract brew install tesseract 2. 完成 tessearact 的安装后&#xff0c;还需要安装中文数据包&#xff0c;执行以下两个操作&#xff0c; brew info tesseract 执行这个指令的目的&#xff0c;是找到 Homebrew 把 tesseract 安装在文件夹内&am…...

部署YOLOv8模型的实用常见场景

可以的话&#xff0c;GitHub上点个小心心&#xff0c;翻不了墙的xdm&#xff0c;csdn也可以点个赞&#xff0c;谢谢啦 车流量检测&#xff08;开源代码github&#xff09;&#xff1a; test3 meiqisheng/YOLOv8-DeepSORT-Object-Tracking (github.com) 车牌检测&#xff0…...

SpringBoot缓存

目录 缓存支持 缓存集成 redis缓存集成 缓存支持 Spring 框架只提供抽象&#xff0c;不提供具体的缓存存储&#xff0c;底层需要依赖第三方存储组件&#xff0c;如果当前应用没有注册CacheManager 或者 CacheResolver 实例&#xff0c;Spring Boot 会按以下缓存组件的顺序来…...

STC89C52串口通信详解

目录 前言 一.通信基本原理 1.1串行通信与并行通信 1.2同步通信和异步通信 1.2.1异步通信 1.2.2同步通信 1.3单工、半双工与全双工通信 1.4通信速率 二.串口通信简介 2.1接口标准 2.2串口内部结构 2.3串口相关寄存器 三.串口工作方式 四.波特率计算 五.串口初始化步骤 六.实验…...

基础算法|线性结构|前缀和学习

参考文章&#xff1a; https://blog.csdn.net/weixin_72060925/article/details/127835303 二维数组的前缀和练习&#xff1a; 这里要注意的地方就是求子矩阵和的时候&#xff0c;这里要减去的是x1-1&#xff0c;y1-1的部分&#xff0c;因为所求的目标值是包括边界的 //前缀…...

设计模式之模版方法实践

模版方法实践案例 实践之前还是先了解一下模版方法的定义 定义 模板方法模式是一种行为设计模式&#xff0c;它定义了一个骨架&#xff0c;并允许子类在不改变结构的情况下重写的特定步骤。模板方法模式通过在父类中定义一个模板方法&#xff0c;其中包含了主要步骤&#xf…...

sql中COALESCE函数详解

在SQL中&#xff0c;COALESCE函数是一个非常有用的函数&#xff0c;用于从其参数列表中返回第一个非NULL值。如果所有给定的参数都是NULL&#xff0c;那么COALESCE函数将返回NULL。这个函数可以接受多个参数&#xff0c;使其在处理可能出现的NULL值时非常灵活和强大。 语法 C…...

rust-analyzer报错“Failed to spawn one or more proc-macro servers,....“怎么解决?

最近,在使用vscode测试rust代码时,遇到了一些问题。在经过反复折腾后,最终解决了问题,在此写下作为记录,以便于以后参考。 我遇到的报错内容是: Failed to spawn one or more proc-macro servers. cannot find proc-macro-srv, the workspace E:\100rust\temp is missin…...

Communications--9--一文读懂双机热备冗余原理

1、热备冗余管理 2、主备系状态判断 3、如何从冷备做到热备&#xff1f; 参见&#xff1a; 用软件实现热备冗余信号系统的安全切换...

可调恒定电流稳压器NSI50150ADT4G车规级LED驱动器 提供专业的汽车级照明解决方案

NSI50150ADT4G产品概述&#xff1a; NSI50150ADT4G可调恒定电流稳压器 (CCR) &#xff0c;是一款简单、经济和耐用的器件&#xff0c;适用于为 LED 中的调节电流提供成本高效的方案&#xff08;与恒定电流二极管 CCD 类似&#xff09;。该 (CCR) 基于自偏置晶体管 (SBT) 技术&…...

Unity中使用代码动态修改URP管线下的标准材质是否透明

//修改为透明 material.SetFloat("_Surface",1.0f); material.SetInt("_SrcBlend", (int)UnityEngine.Rendering.BlendMode.One); material.SetInt("_DstBlend", (int)UnityEngine.Rendering.BlendMode.OneMinusSrcAlpha); material.Set…...

关于制作Python游戏全过程(汇总1)

目录 前言: 1.plane_sprites模块: 1.1导入模块: 1.1.1pygame&#xff1a;一个用于创建游戏的Python库。 1.1.2random&#xff1a;Python标准库中的一个模块&#xff0c;用于生成随机数。 1.2定义事件代号: 1.2.1ENEMY_EVENT&#xff1a;自定义的敌机出场事件代号&#xf…...

独立站营销新纪元:AI与大数据塑造个性化体验的未来

随着全球互联网的深入发展和数字化转型的不断推进&#xff0c;作为品牌建设和市场营销的重要载体&#xff0c;独立站将迎来新的发展机遇。新技术的涌现&#xff0c;特别是人工智能和大数据等技术的广泛应用&#xff0c;为独立站带来了前所未有的机遇与挑战。本文Nox聚星将和大家…...

C语言项目实战——贪吃蛇

C语言实现贪吃蛇 前言一、 游戏背景二、游戏效果演示三、课程目标四、项目定位五、技术要点六、Win32 API介绍6.1 Win32 API6.2 控制台程序6.3 控制台屏幕上的坐标COORD6.4 GetStdHandle6.5 GetConsoleCursorInfo6.5.1 CONSOLE_CURSOR_INFO 6.6 SetConsoleCursorInfo6.7 SetCon…...

ArmSoM规划开发基于RK3576的开发套件

ArmSoM正计划推出一款新的产品&#xff0c;这款产品将采用强大的RK3576芯片。 本文将为您介绍我们的新产品搭载的RK3576性能参数&#xff0c;以及它如何为您提供卓越的性能和功能。 RK3576处理器 RK3576处理器是一款强大的处理器&#xff0c;具备出色的性能和多样化的功能&a…...

视频剪辑如何提取伴奏?短视频剪辑有妙方

在多媒体处理中&#xff0c;音频的编辑和处理是不可或缺的一部分。很多时候&#xff0c;我们可能想要从一段视频或音频中提取伴奏&#xff0c;或者实现人声的分离&#xff0c;以便于进一步制作或混音。以下&#xff0c;将为您介绍一种简单而有效的方法来实现这一目标。 一、提取…...

【Web】浅浅地聊SnakeYaml反序列化两条常见利用链

目录 关于Yaml 关于SnakeYaml SnakeYaml反序列化利用 JdbcRowSetImpl链 ScriptEngineManager链 复现 基本原理 继续深入 关于Yaml 学过SpringBoot开发的师傅都知道&#xff0c;YAML和 Properties 文件都是常见的配置文件格式&#xff0c;用于存储键值对数据。 这里举…...

详解openGauss客户端工具gsql的高级用法

前言&#xff1a; gsql是openGauss提供在命令行下运行的数据库连接工具&#xff0c;可以通过此工具连接服务器并对其进行操作和维护&#xff0c;除了具备操作数据库的基本功能&#xff0c;gsql还提供了若干高级特性&#xff0c;便于用户使用。 gsql的基本功能 连接数据库&…...

开源工业软件:SCADA系统开源

PyScada是一个开源的scada系统 源代码地址 http://www.gitpp.com/huangtomy/pyscada-cn SCADA系统是Supervisory Control And Data Acquisition的缩写&#xff0c;即数据采集与监视控制系统。它是以计算机为基础的DCS与电力自动化监控系统&#xff0c;应用领域非常广&#x…...