Oracle跨用户,跨库关联查询处理
2018-03-02 11:20
218 查看
Oracle跨用户,跨库关联查询处理
一般来说,Oracle的跨用户关联查询可以使用给当前用户授权目标用户访问权限,然后使用目标用户.表名的形式访问.跨库关联查询可以建dblink然后使用远程表@dblink的形式访问.但直接这么做会有一些问题,比如实际项目中需要改用户名,那所有使用用户名.表名的地方都要改.还有虽然预期这两个用户是在同一个实例下,但实际项目中也有可能是在不同的实例下,这时候又得改dblink.而直接使用dblink的也会有类似的问题,要求改dblink名的…这个可能性比较小,但原来预期得使用dblink的,实际项目却发现是在同一实例下,这时候使用dblink就有点低效了,能不用dblink的话,尽量不要用dblink.
理想的做法是,先建立视图或者同义词,在视图或者同义词中使用用户名.表名或者dblink,这样改名或切换的时候,只要改视图或同义词的定义语句就可以了,而不需要动代码.
以下是dblink,同义词,视图的创建脚本:
-- 如果创建全局 dblink,必须使用 systm 或 sys 用户,在 database 前加 public。 create /* public */ database link dblink1 connect to dbusername identified by dbpassword using '(DESCRIPTION =(ADDRESS_LIST =(ADDRESS =(PROTOCOL = TCP)(HOST = 192.168.1.1)(PORT = 1521)))(CONNECT_DATA =(SERVICE_NAME = orcl)))'; --删除dblink DROP /* public */ DATABASE LINK dblink1; -- 查询现有DBLINK select * from ALL_DB_LINKS; --创建同义词 create or replace synonym 同义词名 for 表名; create or replace synonym 同义词名 for 用户.表名; create or replace synonym 同义词名 for 表名@数据库链接名; --删除同义词 drop synonym 同义词名; --查询现有同义词 select * from user_synonyms; --创建视图 create or replace view 视图名 as (select 字段 from 表名); create or replace view 视图名 as (select 字段 from 用户.表名); create or replace view 视图名 as (select 字段 from 表名@数据库链接名); --删除视图 drop view 视图名; --查询现有视图 select * from user_views;
相关文章推荐
- Oracle 查询用户表信息,导入导出处理表空间不一致
- ORACLE建立表空间、用户、授权、查询
- Oracle 基于用户管理恢复的处理
- Oracle 当前用户给另一个用户授权查询指定表或视图的权,否则另一个用户提示不存在视图或表
- Oracle死锁查询及处理
- Oracle 通过触发器 来创建 同步临时表 及处理 通过 自治事务 来解决 查询 基表的问题
- Oracle死锁查询及处理
- oracle 如何创建只有查询权限的用户
- oracle中怎样查询用户权限
- Oracle中like查询下划线等特殊字符的处理
- oracle 10 g 主机用户身份认证失败的处理办法
- 查询Oracle中所有的用户表 USER_TABLES
- Oracle 查询死锁并解锁的终极处理方法
- 在servlet中查询oracle验证用户
- oracle用户查询sql语句
- 查询数据库当前用户连接信息(MySQL,Oracle)
- oracle普通用户查询v$statname, v$mystat,v$timer权限不足
- 实现Oracle查询用户所有表
- Oracle死锁查询及处理
- Oracle死锁查询及处理