Oracle中建立了dblink怎么使用

Oracle应用服务器OS

1.查看数据库的global_name

SELECT * FROM GLOBAL_NAME;

2.查看global_name参数是true还是false

 show parameter global_name

如果为true,本地建立的dblink名称必须与远程的global_name一致才行。

3.创建dblink

CREATE DATABASE LINK数据库链接名
    CONNECT TO 用户名
    IDENTIFIED BY 密码
    USING ‘数据库连接字符串';

例1:

 CREATE PUBLIC DATABASE LINK CONN_MY_LINK
    CONNECT TO MYUSER IDENTIFIED BY MYPASSWORD
    USING 'MYORAL';

其中MYORAL为客户端服务器建立的访问服务端服务器的本地命名,

LINK CONN_MY_LINK为本地建立的dblink名称

例2:

  CREATE PUBLIC DATABASE LINK LINK_HSMIS
        CONNECT TO BI
        IDENTIFIED BY BI
       USING '(DESCRIPTION =
             (ADDRESS_LIST =
             (ADDRESS = (PROTOCOL = TCP)(HOST = 10.188.245.201)(PORT = 1521))
             )
            (CONNECT_DATA =
            (SERVICE_NAME = hsmis)
            )
        )';

直接用本地命名连接字符串替代本地命名。

// 赋予创建权限
    grant CREATE DATABASE LINK to smis;
    grant CREATE SYNONYM to smis;

4.查询dblink是否创建成功

 SELECT * FROM DUAL@数据库链接名
   或SELECT * FROM表名@数据库链接名

5.删除dblink

 drop public database link CONN_MY_LINK

6.使用同义词简化:

 CREATE SYNONYM S_MY_TABLE FOR TABLENAME@数据库链接名;

7.db_link查询时出现锁的解决方案

每次使用db_link查询时释放连接,调用dbms_session包中的关闭函数即可

例:dbms_session.close_database_link(CONN_MY_LINK);

或使用dblink的时候,即使是select文也要进行commit,或者是rollback,否则时间长了会阻碍其他进程。

8.查询dblink时出现无法处理服务器名的解决方案

要在相应的数据库在服务器上建立相应的连接, 如A数据库在A1服务器上,B数据库在b1服务器上,如果要在A数据库中连接B数据库,则要在服务器A1上建立相应的tnsnames配置项如下:
     (在Win环境下的Oracle中,Oracle\Network\ADMIN\tnsnames.ora 文件中进行配置)

A_TO_B =
   (DESCRIPTION =
   (ADDRESS_LIST =
   (ADDRESS = (PROTOCOL = TCP)(HOST =A2服务器的IP)(PORT = 1521)) )
   (CONNECT_DATA =
   (SERVICE_NAME = B数据库的服务名))) 

然后建立相应dblink,容易犯的错误是:

在自已的客户端的tnsname.ora中建立连接,而没有在A数据库所有的

服务器A1的tnsname.ora中建立连接。

9.查看锁表进程和解锁

(1)方式一:

 select sess.sid,
   sess.serial#,
   lo.oracle_username,
   lo.os_user_name,
   ao.object_name,
   lo.locked_mode
   from v$locked_object lo,
   dba_objects ao,
   v$session sess
   where ao.object_id = lo.object_id and lo.session_id = sess.sid;

(2)方式二:

 select * from v$session t1, v$locked_object t2
   where t1.sid = t2.SESSION_ID;

(3)进程解锁

如有记录则表示有锁,记录下SID和serial# ,将记录的ID替換下面的SID, serial,即可解除LOCK

   alter system kill session 'SID,serial';

以上所述是小编给大家介绍的oracle中dblink应用小结,希望对大家有所帮助,如果大家有任何疑问欢迎给我留言,小编会及时回复大家的,在此也非常感谢大家对我们网站的支持!

(0)

相关推荐

  • oracle数据库在客户端建立dblink语法

    oracle服务器没有建立目标数据库的TNS时,在客户端(有权限的情况下)建立dblink语法如下: 复制代码 代码如下: create database link dblink_name connect to user_name identified by user_psw using '(DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = xxx.xx.xxx.xx)(PORT = 1521)) ) (CONNEC

  • 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中dblink的实际应用示例详解

    前言 本文介绍的是关于Oracle同义词+dblink的实际应用,下面话不多说了,来一起看看详细的介绍吧. 业务需求:原数据库(10.2.0.4.0),新数据库(11.2.0.3) 由于程序的需求原因,现在需要把新库上的某个用户直接映射到老库用户下: 1. 备份原库的用户 nohup exp scott/scott OWNER=scott BUFFER=10240000 STATISTICS=none RESUMABLE=y FILE=scott_all_exp.dmp LOG=scott_al

  • Oracle10g通过DBLink访问MySQL示例

    1, 首先在Oracle所在计算机安装MySQL的Client端软件,并且x86_64和i386版本的都需要安装,以便可以连接MySQL数据库.查看Client安装情况: 复制代码 代码如下: rpm -qa |grep mysql mysql-5.0.45-7.el5 mysql-5.0.45-7.el5 得到两条记录,一条是x86_64的,一条是i386的.如果看到还没有安装mysql客户端软件,则需要安装: 复制代码 代码如下: yum install mysql yum install

  • Oracle DATABASE LINK(DBLINK)创建与删除方法

    Oracle创建.删除DATABASE LINK 创建dblink: create database link [name] connect to [username] IDENTIFIED BY [password] using '(DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = [ip])(PORT = [port])) ) (CONNECT_DATA = (SERVER = DEDICATED) (SERVI

  • Oracle中建立了dblink怎么使用

    Oracle应用服务器OS 1.查看数据库的global_name SELECT * FROM GLOBAL_NAME; 2.查看global_name参数是true还是false show parameter global_name 如果为true,本地建立的dblink名称必须与远程的global_name一致才行. 3.创建dblink CREATE DATABASE LINK数据库链接名 CONNECT TO 用户名 IDENTIFIED BY 密码 USING '数据库连接字符串';

  • Oracle数据库中建立索引的基本方法讲解

    怎样建立最佳索引? 1.明确地创建索引 create index index_name on table_name(field_name) tablespace tablespace_name pctfree 5 initrans 2 maxtrans 255 storage ( minextents 1 maxextents 16382 pctincrease 0 ); 2.创建基于函数的索引 常用与UPPER.LOWER.TO_CHAR(date)等函数分类上,例: create index

  • oracle中dblink查看、创建、使用以及删除实例代码

    目录 一.查看dblink 二.创建dblink 三.删除dblink 补充:DBLink 的使用查询 总结 一.查看dblink --查看全部用户 SELECT OWNER,OBJECT_NAME FROM DBA_OBJECTS WHERE OBJECT_TYPE='DATABASE LINK'; --查看全部用户 SELECT * FROM DBA_DB_LINKS; --查看本用户 SELECT * FROM USER_DB_LINKS; 二.创建dblink 1.如果没有权限的话给权限

  • Oracle中使用触发器(trigger)和序列(sequence)模拟实现自增列实例

    问题:在SQL Server数据库中,有自增列这个字段属性,使用起来也是很方便的.而在Oracle中却没有这个功能,该如何实现呢? 答:在Oracle中虽然没有自增列的说法,但却可以通过触发器(trigger)和序列(sequence)来模式实现. 示例: 1.建立表 复制代码 代码如下: create table user  (       id   number(6) not null,       name   varchar2(30)   not null primary key  )

  • Oracle 中 table 函数的应用浅析

    表函数可接受查询语句或游标作为输入参数,并可输出多行数据.该函数可以平行执行,并可持续输出数据流,被称作管道式输出.应用表函数可将数据转换分阶段处理,并省去中间结果的存储和缓冲表. 1. 用游标传递数据 利用游标 REF CURSOR 可将数据集(多行记录)传递到PL/SQL函数: SELECT * FROM TABLE (myfunction (CURSOR (SELECT * FROM mytab))); 2. 利用两个实体化视图(或表)作为样板数据 CREATE MATERIALIZED

  • oracle中动态SQL使用详细介绍

    1.静态SQLSQL与动态SQL Oracle编译PL/SQL程序块分为两个种:其一为前期联编(early binding),即SQL语句在程序编译期间就已经确定,大多数的编译情况属于这种类型:另外一种是后期联编(late binding),即SQL语句只有在运行阶段才能建立,例如当查询条件为用户输入时,那么Oracle的SQL引擎就无法在编译期对该程序语句进行确定,只能在用户输入一定的查询条件后才能提交给SQL引擎进行处理.通常,静态SQL采用前一种编译方式,而动态SQL采用后一种编译方式.

  • oracle中利用关键字rownum查询前20名员工信息及rownum用法

    注意:对 rownum(伪列) 只能使用 < 或 <=, 而用 =, >, >= 都将不能返回任何数据 例:查询工资前20名的员工姓名,工资 ,工资由高到低 Select rownum,first_name,salary from (Select first_name, salary from employees Group by salary desc) Where rownum=<20 如果直接按如下查询得下图结果,显然不正确的,rownum(伪列) 是按查询顺序来排列的

  • ORACLE中查找定位表最后DML操作的时间小结

    在Oracle数据库中,如何查找,定位一张表最后一次的DML操作的时间呢? 方式有三种,不过都有一些局限性,下面简单的解析.总结一下. 1:使用ORA_ROWSCN伪列获取表最后的DML时间 ORA_ROWSCN伪列是Oracle 10g开始引入的,可以查询表中记录最后变更的SCN.然后通过SCN_TO_TIMESTAMP函数可以将SCN转换为时间戳,从而找到最后DML操作时SCN的对应时间.但是,默认情况下,每行记录的ORA_ROWSCN是基于Block的,除非在建表的时候开启行级跟踪. SE

  • Oracle中定义以及使用同义词的方法

    前言 在Oracle中对用户的管理是使用权限的方式来管理的,也就是说,如果我们想使用数据库,我们就必须得有权限,但是如果是别人将权限授予了我们,我们也是能对数据库进行操作的,但是我们必须要已授权的表的名称前键入该表所有者的名称,所以这就是比较麻烦的,遇到这种情况,我们该怎么办呢?创建个Oracle同义词吧!这样我们就可以直接使用同义词来使用表了. 下面话不多说了,来一起看看详细的介绍吧 Oracle 同义词概念: Oracle的同义词(synonyms)从字面上理解就是别名的意思,和视图的功能类

随机推荐