• Oracle 跨库 查询 复制表数据 分布式查询


    方法一:

    在眼下绝大部分数据库有分布式查询的须要。以下简单的介绍怎样在oracle中配置实现跨库訪问。

    比方如今有2个数据库服务器,安装了2个数据库。数据库server A和B。如今来实如今A库中訪问B的数据库。

    第一步、配置Aserver端的tnsnames.ora文件(TNSNAMES.ORA Network Configuration File),该文件存放的位置为:

    $ORACLE_HOME/network/admin/tnsnames.ora

    加入例如以下行,当中DBLINK为连接名(可自己定义),HOST和PORT为数据库侦听的IP及port,SERVICE_NAME为数据库的SID, 
     
    MEDIADBLINK = 
      (DESCRIPTION = 
        (ADDRESS_LIST = 
          (ADDRESS = (PROTOCOL = TCP)(HOST = 10.0.0.1)(PORT = 1521)) 
        ) 
        (CONNECT_DATA = 
          (SERVICE_NAME = db) 
        ) 
      ) 

    第二步、在Aserver的一个库中建立B的一个数据的DBLINK。语法例如以下:

    运行例如以下查询语句,当中MEDIADB为database link名(可自己定义),MEDIADBLINK为先前在tnsnames.ora中定义的连接名, 
      dbuser为username,password为密码 
        
      -- Create database link 
      create database link MEDIADB 
      connect to dbuser identified by password 
      using 'MEDIADBLINK'; 

    第三步.使用链接的数据库 
      
      3.1 查询、删除和插入数据和操作本地的数据库是一样的。仅仅只是表名须要写成“表名@database link名”,如 
     
      select * from table_name@MEDIADB ; 
     
      3.2 也能够为这个表创建一个同义词 
      
      create synonym aaa for table_name@MEDIADB ; 
     
      例如以下语句的效果和3.1中的一样 
     
      select * from aaa; 
     
      删除同义词的语句为 
     
      drop synonym aaa; 

    select * from tabname@dcmdb where 1=1;

    方法二:

    首先创建数据库链接:
    CREATE PUBLIC DATABASE LINK 数据链名称 CONNECT TO 登陆username IDENTIFIED BY password USING '(DESCRIPTION =
         (ADDRESS_LIST =
           (ADDRESS = (PROTOCOL = TCP)(HOST = 对方Oracleserver的IP地址)(PORT = port号))
         )
         (CONNECT_DATA =
    (SERVICE_NAME = 对方Oracleserver服务名)
         )
       )' 
    当中 数据链名称 为加入到本地Oracle数据库控制台(Oracle Enterprise Manager Console)树节点的服务名
    要查询对方数据库的表TableName语句例如以下:
    SELECT 字段名 FROM TableName@数据链名称;

    复制表数据:

    insert into 表名(字段名) (SELECT 字段名 FROM TableName@数据链名称);


    查看DBLINK:

    select owner, db_link from dba_db_links;

    删除: 

    drop database link dblink名称

    drop public database link dblink名称


    Oraclepassword的问题:

    SQL> CREATE USER AAA IDENTIFIED BY 1;
    CREATE USER AAA IDENTIFIED BY 1
                                  *
    ERROR 位于第 1 行:
    ORA-00988: 缺少或无效口令

    SQL> CREATE USER AAA IDENTIFIED BY"1";

    用户已创建


    版权声明:本文博客原创文章,博客,未经同意,不得转载。

  • 相关阅读:
    linux tcp中time_wait
    linux查看系统信息
    运行程序出错无法找到库文件
    安装keepalived
    python 深拷贝与浅拷贝
    python import eventlet包时提示ImportError: cannot import name eventlet
    [原创] 用两个queue实现stack的功能
    [原创] 用两个stack实现queue的功能
    [原创] 编写函数,实现对链表元素的排序与分类
    python 装饰器
  • 原文地址:https://www.cnblogs.com/mengfanrong/p/4620933.html
Copyright © 2020-2023  润新知