使用Oracle DBLink进行数据库之间对象的訪问操作

使用Oracle DBLink进行数据库之间对象的訪问操作

大家好,又见面了,我是全栈君。

Oracle中自带了DBLink功能,它的作用是将多个oracle数据库逻辑上看成一个数据库,也就是说在一个数据库中能够操作还有一个数据库中的对象,比如我们新建了一个数据database1。我们须要操作数据库database2中的表,或者我们须要操作远程机器上数据库database3中的表。我们就能够使用dblink这个强大的功能!

1、我们假设要创建全局的DBLink。就是说不管什么角色都能够使用,那么我们须要先确定用户是否有DBLink权限,假设没有则须要使用sysdba角色给用户授权:

查看用户是有有DBLink权限:

select * from user_sys_privs where privilege like upper('%DATABASE LINK%');  

没有,则使用sysdba授权:

grant create public database link to dbusername; 

2、使用语句创建DBLink:

create database link 要创建的dblink名称
connect to 要连接数据库的username identified by 要连接数据的password
using '(DESCRIPTION =
    (ADDRESS_LIST =
      (ADDRESS = (PROTOCOL = TCP)(HOST = 连接数据库主机IP地址)(PORT = port号))
    )
    (CONNECT_DATA =
      (SERVICE_NAME = 连接数据库服务名)
    )
)';

假设创建全局 dblink,必须使用 systm 或 sys 用户,在 database 前加 public:

create public database....

比如,在testdb2中创建test_dblink,来操作主机192.168.1.254中testdb1数据库:

create database link tset_dblink
connect to username identified by password1
using '(DESCRIPTION =
    (ADDRESS_LIST =
      (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.254)(PORT = 1521))
    )
    (CONNECT_DATA =
      (SERVICE_NAME = testdb1)
    )
)';

3、使用DBLink:

查询还有一个数据库中的数据。其它改动、删除是一样的使用,都是还有一个数据库表名@本数据库创建dblink名称:

select xxx FROM 表名@dblink名称; 

比如我们在testdb2中使用dblink查看testdb1中tb_user表中的数据:

select * from tb_user@tset_dblink;

查看数据中创建的dblink:

select owner,object_name from dba_objects where object_type='DATABASE LINK';
select * from dba_db_links;

删除对应的dblink:

drop database link dblink名称;

关闭dblink连接:

alter session close database link 'dblink_name'

创建和删除视图:

create or replace view 视图名 as (select 字段 from 用户.表名@dblink1);  
drop view 视图名;  

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/115271.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • Java项目框架搭建系列(Java学习路线)-博客提纲

    Java项目框架搭建系列(Java学习路线)-博客提纲

    2020年11月12日
    259
  • 网页刷流量软件开发中的困惑

    网页刷流量软件开发中的困惑客户要求:1.利用代理IP访问指定网页.并且点击指定位置2.代理IP获取方式最好为吸附.吸附我提供的地址.或许你有更好的方案最佳.3.如果能够控制代理访问量最好.比如我在指定的时间内10点-11点的时候需要1W的量.那么程序刷到1W的量就自动停止.4.可以用协议开发.但是协议一定要支持统计代码.也就是一定要让后台统计到具体数据.我的解决方案有二:。一是模…

    2022年9月29日
    0
  • pytest parametrize fixture_pytest参数化可变参数

    pytest parametrize fixture_pytest参数化可变参数前言当某个接口中的一个字段,里面规定的范围为1-5,你5个数字都要单独写一条测试用例,就太麻烦了,这个时候可以使用pytest.mark.parametrize装饰器可以实现测试用例参数化。官方示

    2022年7月31日
    7
  • c语言游戏小型程序代码,C语言小游戏源码「建议收藏」

    c语言游戏小型程序代码,C语言小游戏源码「建议收藏」在此提供C语言小游戏源码,包括扫雷游戏,贪吃蛇游戏,时钟等。运行时只要把红色部分改为自己电脑上TC目录的BGI分目录即可。//扫雷游戏#include#include#include#defineLEFTPRESS0xff01#defineLEFTCLICK0xff10#defineLEFTDRAG0xff19#defineMOUSEMOVE0xff08struct{int…

    2022年5月19日
    51
  • mtk keypad

    mtk keypad驱动位置:kernel-3.18/drivers/input/keyboard/mediatek/kpd.c

    2022年6月12日
    46
  • idea常用快捷键分享|IntelliJ IDEA快捷键分享

    idea常用快捷键分享|IntelliJ IDEA快捷键分享前言idea工具确实好用,从eclipse到idea,永无回头路,从破解到开源license,无法逃脱真想定律。现在列举出如下快捷键,让你在idea中如鱼得水。一、Ctrl快捷键Ctrl+F在当前文件进行文本查找(必备)Ctrl+R在当前文件进行文本替换(必备)Ctrl+Z撤销(必备) Ctrl+Y删除光标所在行或删除选中的行(必备)Ctrl+X剪切光标所在行或剪切选择内容Ctrl+C复制光标所在行

    2022年5月14日
    48

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号