Oracle如何实现跨库查询

实现结果:在一个数据库中某个用户下编写一个存储过程,在存储过程中使用DBLINK连接另一个数据库,从此数据库中的一个用户下取数,然后插入当前的数据库中的一个表中。

二. 实现方法步骤:

1. 创建存储过程
    2. 在存储过程中先创建database link
    3. 创建成功
    4. 从另一个数据库取出数据插入到当前数据库中
    5. 任务完成

三. 创建DBLINK的方法:

create public database link dblink
  connect to totalplant identified by totalplant
  using '(DESCRIPTION =
    (ADDRESS_LIST =
     (ADDRESS = (PROTOCOL = TCP)(HOST = LOCALHOST)(PORT = 1521))
    )
    (CONNECT_DATA =
     (SERVICE_NAME = prd.gdc)
    )
    )';

语法解释:create public database link DBLINK名字(自己随便起)
                  connect to 用户名 identified by 密码

     using '(DESCRIPTION =
       (ADDRESS_LIST =
        (ADDRESS = (PROTOCOL = TCP)(HOST = 要连接的数据库所在服务器的IP地址)(PORT = 1521))
       )
       (CONNECT_DATA =
        (SERVICE_NAME = 要连接的数据库的在本地的服务名(即要连接的数据库的SID))
       )
       )';

2. 如果创建private的DBLINK

  create database link dblink
  connect to totalplant identified by totalplant
  using '(DESCRIPTION =
    (ADDRESS_LIST =
     (ADDRESS = (PROTOCOL = TCP)(HOST = LOCALHOST)(PORT = 1521))
    )
    (CONNECT_DATA =
     (SERVICE_NAME = prd.gdc)
    )
    )';

四. 连接成功后从所连接的数据库中取数的方法:

select * from tbl_ost_notebook@dblink;

说明:只需在表名的后面加上"@DBLINK名字"即可。

五. 在当前数据库下查看所有的DBLINK的方法:

select * from dba_db_links; 

六. 删除当前数据库下的一个指定的DBLINK的方法:

1. 如果创建的是一个public的DBLINK,删除时需要用
        drop public database link dblink;
     2. 如果创建的是一个private的DBLINK,删除时需要用
        drop database link dblink;
     说明:drop public database link DBLINK名字;

七. 查看当前数据库的全局数据库名的方法:
     1. select * from global_name;

八. 查看当前用户具有哪些针对DBLINK的权限的方法:

SELECT DISTINCT PRIVILEGE AS "Database Link Privileges"
  FROM ROLE_SYS_PRIVS
  WHERE PRIVILEGE IN ( 'CREATE SESSION','CREATE DATABASE LINK',
        'CREATE PUBLIC DATABASE LINK'); 
时间: 2017-05-23

oracle跨库查询的方法

在Oracle本地数据库端执行赋权dbuser帐号 SQL> grant create database link to dbuser; 1.配置本地数据库服务器的tnsnames.ora文件 $vi $ORACLE_HOME/network/admin/tnsnames.ora 添加如下行,其中DBLINK为连接名(可自定义),HOST和PORT为数据库侦听的IP及端口,SERVICE_NAME为数据库的SID, MEDIADBLINK = (DESCRIPTION = (ADDRESS_LI

oracle跨库查询dblink的用法实例详解

本文实例讲述了oracle跨库查询dblink的用法.分享给大家供大家参考,具体如下: 1.创建之前的工作 在创建dblink之前,首先要查看用户是否有相应的权限.针对特定的用户,使用 sqlplus user/pwd登录后,执行如下语句: 复制代码 代码如下: select * from user_sys_privs t where t.privilege like upper('%link%'); 在sys用户下,显示结果为: SYS CREATE DATABASE LINK NO SYS

Oracle中分组查询group by用法规则详解

Oracle中group by用法 在select 语句中可以使用group by 子句将行划分成较小的组,一旦使用分组后select操作的对象变为各个分组后的数据,使用聚组函数返回的是每一个组的汇总信息. 使用having子句 限制返回的结果集.group by 子句可以将查询结果分组,并返回行的汇总信息Oracle 按照group by 子句中指定的表达式的值分组查询结果. 在带有group by 子句的查询语句中,在select 列表中指定的列要么是group by 子句中指定的列,要么包

oracle 存储过程、函数和触发器用法实例详解

本文实例讲述了oracle 存储过程.函数和触发器用法.分享给大家供大家参考,具体如下: 一.存储过程和存储函数 指存储在数据库中供所有用户程序调用的子程序叫存储过程.存储函数. 创建存储过程 用CREATE PROCEDURE命令建立存储过程. 语法: create [or replace] procedure 过程名(参数列表) as PLSQL子程序体; --给指定员工涨工资 create procedure addSal(empid in number) as psal emp.sal%

Laravel5.1 框架数据库查询构建器用法实例详解

本文实例讲述了Laravel5.1 框架数据库查询构建器用法.分享给大家供大家参考,具体如下: 今儿个咱说说查询构建器.它比运行原生SQL要简单些,它的操作面儿也是比较广泛的. 1 查询结果 先来看看它的语法: public function getSelect() { $result = DB::table('articles')->get(); dd($result); } 查询构建器就是通过table方法返回的,使用get()可以返回一个结果集(array类型) 这里是返回所有的数据,当然

mysql连接查询、联合查询、子查询原理与用法实例详解

本文实例讲述了mysql连接查询.联合查询.子查询原理与用法.分享给大家供大家参考,具体如下: 本文内容: 连接查询 联合查询 子查询 from子查询 where子查询 exists子查询 首发日期:2018-04-11 连接查询: 连接查询就是将多个表联合起来查询,连接查询方式有内连接.外连接.自然连接.交叉连接.连接查询使得可以同时查看多张表中数据. 内连接:有条件连接,多个表之间依据指定条件连接,匹配结果是保留符合匹配结果的记录. 外连接:与内连接不同的是不管匹配符不符合都保留,根据外连接

Oracle addBatch()用法实例详解

Oracle addBatch()用法实例详解 PreparedStatement.addbatch()的使用 Statement和PreparedStatement的区别就不多废话了,直接说PreparedStatement最重要的addbatch()结构的使用. 1.建立链接     Connection connection =getConnection(); 2.不自动 Commit connection.setAutoCommit(false); 3.预编译SQL语句,只编译一回哦,效

Oracle 如何规范清理v$archived_log记录实例详解

Oracle 如何规范清理v$archived_log记录实例详解 单机实例上面,v$archived_log 很多,有上万条记录了,所以得清理一下,不然每次查询都直接滚屏幕了 SQL> select sequence#,applied from v$archived_log order by sequence# ; SEQUENCE# APPLIED .................... SEQUENCE# APPLIED ---------- --------- 9376 NO 9377

MyBatis动态SQL标签用法实例详解

1.动态SQL片段 通过SQL片段达到代码复用 <!-- 动态条件分页查询 --> <sql id="sql_count"> select count(*) </sql> <sql id="sql_select"> select * </sql> <sql id="sql_where"> from icp <dynamic prepend="where&quo

Java List 用法实例详解

Java List 用法实例详解 Java中可变数组的原理就是不断的创建新的数组,将原数组加到新的数组中,下文对Java List用法做了详解. List:元素是有序的(怎么存的就怎么取出来,顺序不会乱),元素可以重复(角标1上有个3,角标2上也可以有个3)因为该集合体系有索引 ArrayList:底层的数据结构使用的是数组结构(数组长度是可变的百分之五十延长)(特点是查询很快,但增删较慢)线程不同步 LinkedList:底层的数据结构是链表结构(特点是查询较慢,增删较快) Vector:底层

C语言中qsort函数的用法实例详解

C语言中qsort函数的用法实例详解 快速排序是一种用的最多的排序算法,在C语言的标准库中也有快速排序的函数,下面说一下详细用法. qsort函数包含在<stdlib.h>中 qsort函数声明如下: void qsort(void * base,size_t nmemb,size_t size ,int(*compar)(const void *,const void *)); 参数说明: base,要排序的数组 nmemb,数组中元素的数目 size,每个数组元素占用的内存空间,可使用si