IT忍者神龟之oracle 中一个用户怎么可以不使用用户名访问其他用户的表

故事背景是这样的:一个项目大概涉及到4个工程同时开发,在我自己的工程中需要做一个报表,但是要访问另一个工程所连接的DB,当然两个工程的DB Server是在同一个IP上,也就是说我们之间只是schema不一样,那我怎样完成下面的报表的开发呢?

  一开始我直接创建了一个DBLink,但是回头和同时沟通,他认为DBLink的影响过大,当两个数据库不在同一个服务器上的时候才会用到这个,当前的情况最好用schema,但是此处还是把创建DBLink的方法写出来方便记忆:

  create database link link名称  connect to 对方数据库用户名 identifiedby 对方数据库用户密码using ‘对方数据库ip:端口/实例名‘;

  Eg:create database linkdbLinkToAA connect to Jason identified by abc123 using ‘serviceA‘,创建一个连接就行了

  接下来就是用schema了,下面的语句就是用schema做关联

  Eg:grant select on Jason.emp to Lucy; 授权查询

  关于schema我个人的理解是:A要见B,当A和B在河岸的同一侧(同一个Server),B只要允许A见他就可以了,当A和B不在河岸的同一侧(不同Server),那A要搭一座桥,并且还得获得B的同意,也就是知道B的用户名和密码。

  以上是个人理解,如果那里不合适,还请各位指正,共同学习。

别忘了被访问的用户中的表被授权其他用户可以访问。

时间: 2024-10-26 20:38:00

IT忍者神龟之oracle 中一个用户怎么可以不使用用户名访问其他用户的表的相关文章

5.oracle中一个字段中存储'a','b'与'a'与a的写法,存储过程中与之对应

select '''a'',''b''' from dual; --'a','b' select '''a''' from dual; --'a' select 'a' from dual; --a 5.oracle中一个字段中存储'a','b'与'a'与a的写法,存储过程中与之对应

IT忍者神龟之Oracle查询树形结构

Oracle中的select语句可以用START WITH...CONNECT BY PRIOR子句实现递归查询,connect by 是结构化查询中用到的, 其基本语法是: ------------------------------------------------------------------------------------- select * from 表名start with 查询条件1 connect by  查询条件2 where 查询条件3; ------------

IT忍者神龟之Oracle 的数据导入导出及 Sql Loader (sqlldr) 的用法

在 Oracle 数据库中,我们通常在不同数据库的表间记录进行复制或迁移时会用以下几种方法: 1. A 表的记录导出为一条条分号隔开的 insert 语句,然后执行插入到 B 表中 2. 建立数据库间的 dblink,然后用 create table B as select * from [email protected] where ...,或 insert into B select * from [email protected] where ... 3. exp A 表,再 imp 到

IT忍者神龟之Oracle 树操作(select…start with…connect by…prior)

oracle树查询的最重要的就是select-start with-connect by-prior语法了.依托于该语法,我们可以将一个表形结构的以树的顺序列出来.在下面列述了oracle中树型查询的常用查询方式以及经常使用的与树查询相关的oracle特性函数等,在这里只涉及到一张表中的树查询方式而不涉及多表中的关联等. 1.准备测试表和测试数据 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28

IT忍者神龟之oracle 在分组内排序的方法回顾

oracle分析函数十分强大,我们只要掌握这些方法,更直接的说法就是知道这些分析函数的作用就能完成很多工作. 下边贴出这些函数,及简单应用. 其中我想对lag()和lead()函数坐下说明:lag()本身是延后的意思也就是延后出现某列的数,而lead()有引领.领先的意思也就是提前几行显示某列数据 RANK() dense_rank() [语法]RANK ( ) OVER ( [query_partition_clause] order_by_clause ) dense_RANK ( ) OV

IT忍者神龟之oracle 集合的使用

每组查询均能得到其结果集,若需将多个查询结果合并成一个结果集,则可利用集合运算来实现. 如并集(UNION).并集且不去除重复行(UNOIN  ALL).交集(INTERSECT).差集(MINUS). 集合命令的目的是将两个(含以上)SQL语句产生的结果合并.由于需要将两个(含以上)数据集合并 因此字段数量必须相等,且类型也必须兼容.如果字段数量无法相同,可以将不足部分以NULL值取代, 以使其字段数量符合要求. 新建两张表并插入数据进行测试: [sql] view plaincopy cre

IT忍者神龟之oracle connect by用法回顾

先用scott用户下的emp表做实验. emp表有个字段,一个是empno(员工编号),另一个是mgr(上级经理编号) 下面是表中所有数据 1 select * from emp start with empno=7698 connect by  mgr=prior empno; 执行结果如下: 得到的结果是empno=7698的数据,以及会得到mgr=7698的数据. 它是向下递归的, 即我们从empno=7698开始遍历,去找出mgr=7698的所有数据S(用S代表查出的所有数据.), 然后

IT忍者神龟之oracle存储过程简单从ODS抽取数据_面向对象思想

第一步:创建包接口类似java中的接口定义 create or replace PACKAGE pack_sc_hmd_kh IS --方法的声明 PROCEDURE proc_hmd_kh( p_y VARCHAR2, p_m VARCHAR2, p_d VARCHAR2); END pack_sc_hmd_kh; 第二步:常见包体又称包的实现类似于java中实现接口的具体类 create or replace PACKAGE body pack_sc_hmd_kh IS PROCEDURE

IT忍者神龟之oracle存储过程——面向对象编程

第一步:创建包接口类似java中的接口定义 create or replace PACKAGE pack_sc_hmd_kh IS --方法的声明 PROCEDURE proc_hmd_kh( p_y VARCHAR2, p_m VARCHAR2, p_d VARCHAR2); END pack_sc_hmd_kh; 第二步:常见包体又称包的实现类似于java中实现接口的具体类 create or replace PACKAGE body pack_sc_hmd_kh IS PROCEDURE