请更正select *from a.* from b a这条语句

解决方案 »

  1.   

    数据库a,b?访问b数据库?
    ========================
    表A、B 还是数据库A、B?
      

  2.   

    在aa用户下,需要访问bb用户下的表,需要在表名a前面加上bb
    例:select * from bb.a
    //aa用户下访问bb用户中的a表
      

  3.   


    授权: 同一SID下的不同用户
    将bb用户的a表的查询权限赋给aa用户
    grant select on bb.a to aa;
    访问:
    select a,* from bb.a;
    不同机器的数据库
      先建立dblink 数据库连接
      create public database 
      link fwq12 connect to fzept 
      identified by neu using 'fjept' 
        fwq12  dblink 的名字
       fzept 用户名
       neu 密码
        fjept 服务名
    访问: select a.* from a@数据库连接名以下为转自网络的
    1、已经配置本地服务 以下是引用片段:
      create public database 
      link fwq12 connect to fzept 
      identified by neu using 'fjept' 
      CREATE DATABASE LINK数据库链接名CONNECT TO 用户名 IDENTIFIED BY 密码 USING ‘本地配置的数据的实例名’;  2、未配置本地服务   以下是引用片段:
    create database link linkfwq 
       connect to fzept identified by neu 
       using '(DESCRIPTION = 
       (ADDRESS_LIST = 
       (ADDRESS = (PROTOCOL = TCP)(HOST = 10.142.202.12)(PORT = 1521)) 
       ) 
       (CONNECT_DATA = 
       (SERVICE_NAME = fjept) 
       ) 
       )'; 
      host=数据库的ip地址,service_name=数据库的ssid。  其实两种方法配置dblink是差不多的,我个人感觉还是第二种方法比较好,这样不受本地服务的影响。  数据库连接字符串可以用NET8 EASY CONFIG或者直接修改TNSNAMES.ORA里定义.  数据库参数global_name=true时要求数据库链接名称跟远端数据库名称一样  数据库全局名称可以用以下命令查出  SELECT * FROM GLOBAL_NAME;  查询远端数据库里的表  SELECT …… FROM 表名@数据库链接名;  查询、删除和插入数据和操作本地的数据库是一样的,只不过表名需要写成“表名@dblink服务器”而已。  附带说下同义词创建:  CREATE SYNONYM同义词名FOR 表名;  CREATE SYNONYM同义词名FOR 表名@数据库链接名;  删除dblink:DROP PUBLIC DATABASE LINK linkfwq。  如果创建全局dblink,必须使用systm或sys用户,在database前加public。