一. 问题:

如何实现在Oracle数据库中访问其他用户的表时不需加表所属的用户名

二. 举例:

Oracle里面的用户A,要访问用户B的表需要带用户B的前缀,如访问用户B的 TEST表,需要这样访问 select * from B.TEST;现在就是问如何才能无需添加用户名的前缀。

三. 原因:

  1. 方便访问常用表
  2. 隐藏表的用户

四. 解决方案:

1. 创建同义词(最好的方式)

语法:

    CREATE [PUBLIC] SYNONYM synonym_name FOR [schema.] object[@db_link];

根据举例进行延伸演示:

 (1)登录sysdba为用户B授予创建同义词的操作权限:
sqlplus /nolog
conn /as sysdba;
grant create synonym to B;
(2)登录B用户为A授予访问特定表TEST的权限:
//注意:这是A用户能够使用同义词访问B的TEST表的前提
grant select on TEST to A; //撤销的方式:
revoke select on TEST from A;
(3)创建同义词
create synonym SY_TEST for B.TEST;
(4)登录用户A进行测试.
2.创建视图(这个方法也不错)
    create view VW_TEST select * from B.TEST;
3.修改current_schema参数

用于切换当前会话的架构(schema)。在进行对象名解析时,如果对象名前没有限定架构名,oracle 会自动在此架构下查询匹配的对象。

例如,当 scott 用户执行select * from emps;语句时,oracle 默认会查询 scott 架构下的 emps 表;但是,如果alter session set current_schema=xx;更改了会话的当前架构,执行此语句时 oracle 会查询 xx 架构下的 emps 表。

        登录用户A时,临时修改current_schema参数:
SQL> alter session set current_schema=B; Session altered. SQL> show user;
USER is "A"
SQL> select SYS_CONTEXT('USERENV','CURRENT_SCHEMA') CURRENT_SCHEMA from dual; CURRENT_SCHEMA
--------------------------------------------------------------------------------
B SQL>
SQL> spool off;

这种方式只是适用于当前一次会话,一旦会话关闭,下次就不行了.所以此种方式一次可行,但是通用不行.

Oracle数据库访问其他用户下的表,不加表所属的用户名的实现方法的更多相关文章

  1. 如何将备份的oracle数据库还原到指定用户下。

    上一文章 oracle11g数据库--创建表空间,创建用户,用户授权并指定表空间.我们已经建好了指定的新用户pdmis. 接下来我们需要将备份好的数据库,还原至新用户pdmis下. 想要还原,我们需要 ...

  2. Oracle数据库中SCOTT用户下的默认表

    ①EMP(雇员表): ②DEPT(部门表): ③BONUS(奖金表): ④SALGRADE(工资等级表):

  3. 分享知识-快乐自己: Oracle数据库实例、用户、表、表空间之间关系

    数据库: Oracle数据库是数据的物理存储.这就包括(数据文件ORA或者DBF.控制文件.联机日志.参数文件). 其实Oracle数据库的概念和其它数据库不一样,这里的数据库是一个操作系统只有一个库 ...

  4. oracle批量删除某用户下的表

    昨天干了一天的体力活,到快下班时被要求删除一批测试库上错误的表,主要是这些表的字段和生产上字段顺序对不上,然后让我写个脚本,让dba执行一下,主要是删表这种东西我们都没权限. 然后,我就被难到了,我记 ...

  5. 基于Mysql数据库亿级数据下的分库分表方案

    移动互联网时代,海量的用户数据每天都在产生,基于用户使用数据的用户行为分析等这样的分析,都需要依靠数据都统计和分析,当数据量小时,问题没有暴露出来,数据库方面的优化显得不太重要,一旦数据量越来越大时, ...

  6. 数栈运维实例:Oracle数据库运维场景下,智能运维如何落地生根?

    从马车到汽车是为了提升运输效率,而随着时代的发展,如今我们又希望用自动驾驶把驾驶员从开车这项体力劳动中解放出来,增加运行效率,同时也可减少交通事故发生率,这也是企业对于智能运维的诉求. 从人工运维到自 ...

  7. oracle 如何搜索当前用户下所有表里含某个值的字段?(转)

    oracle 如何搜索当前用户下所有表里含某个值的字段? create or replace procedure MY_Pro_SearchKeyWord is  v_sql VARCHAR2(400 ...

  8. Oracle数据库访问客户端 sqldeveloper-18.4.0-376.1900-x64 下载

    Oracle数据库访问客户端 sqldeveloper-18.4.0-376.1900-x64 下载地址:https://pan.baidu.com/s/1RnHVuMcCNZQ7ncHLKDJ33Q

  9. Oracle数据库访问客户端 sqldeveloper-19.2.1.247.2212-x64 下载

    Oracle数据库访问客户端 sqldeveloper-19.2.1.247.2212-x64 地址:https://pan.baidu.com/s/1iojCVxwXocyM8oObTf0xaw 这 ...

随机推荐

  1. JAVA-ORM框架整理➣Mybatis操作MySQL

    概述 在Java中,对数据库操作的框架很多,上节概述Hibernate的简单使用,这里简单整理Mybatis的使用.Mybatis也是简单的数据库操作框架,通过IOC方式,获取操作类对象,进行数据的操 ...

  2. Python_configparser模块

    configparser : 用于处理ini结构相似的文件,格式类似于: [DEFAULT] # 相当于一个分组 # option # 注释,说明性文字 ,默认以# 或‘:’开头的行 option1 ...

  3. PHP算法排序之快速排序、冒泡排序、选择排序、插入排序性能对比

    <?php //冒泡排序 //原理:从倒数第一个数开始,相邻的两个数比较,后面比前面的小,则交换位置,一直到比较第一个数之后则最小的会排在第一位,以此类推 function bubble_sor ...

  4. 2018牛客网暑假ACM多校训练赛(第三场)G Coloring Tree 计数,bfs

    原文链接https://www.cnblogs.com/zhouzhendong/p/NowCoder-2018-Summer-Round3-G.html 题目传送门 - 2018牛客多校赛第三场 G ...

  5. Linux下的Mysql数据库备份+还原

    数据库备份: root@debian-mm:/home/debian-mm# mysqldump -u root -p Account > Account.sql Enter password: ...

  6. 队列queue实现线程的消费者和生产者

    import threading import queue import random import time qq = queue.Queue(4) #实例化一个队列,因为是一个进程的线程,所以共资 ...

  7. JAVA基础中的注意点(一)

    1.标识符 标识符:标识某些事物用于区分的符号.  (即区分某些事物的符号) 四条硬性规定: a.不能是 关键字.true.false.null. b.可以包含 字母.数字(0-9).下划线(_)或美 ...

  8. POJ 3090 Visible Lattice Points 【欧拉函数】

    <题目链接> 题目大意: 给出范围为(0, 0)到(n, n)的整点,你站在(0,0)处,问能够看见几个点. 解题分析:很明显,因为 N (1 ≤ N ≤ 1000) ,所以无论 N 为多 ...

  9. 打印星星 - Python

    打印星星是经典面试题目,考察流程控制中的循环和条件.本文对相关方法进行总结. 到的方法只要有(1)嵌套循环(2)center(3)format(^)(4)字符串乘法 # -*- coding:utf- ...

  10. 我与Vuex的第一次邂逅

    new Vue({ // state data () { return { count: 0 } }, // view template: ` <div>{{ count }}</d ...