Oracle数据库访问其他用户下的表,不加表所属的用户名的实现方法
一. 问题:
如何实现在Oracle数据库中访问其他用户的表时不需加表所属的用户名
二. 举例:
Oracle里面的用户A,要访问用户B的表需要带用户B的前缀,如访问用户B的 TEST表,需要这样访问 select * from B.TEST;现在就是问如何才能无需添加用户名的前缀。
三. 原因:
- 方便访问常用表
- 隐藏表的用户
四. 解决方案:
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数据库访问其他用户下的表,不加表所属的用户名的实现方法的更多相关文章
- 如何将备份的oracle数据库还原到指定用户下。
上一文章 oracle11g数据库--创建表空间,创建用户,用户授权并指定表空间.我们已经建好了指定的新用户pdmis. 接下来我们需要将备份好的数据库,还原至新用户pdmis下. 想要还原,我们需要 ...
- Oracle数据库中SCOTT用户下的默认表
①EMP(雇员表): ②DEPT(部门表): ③BONUS(奖金表): ④SALGRADE(工资等级表):
- 分享知识-快乐自己: Oracle数据库实例、用户、表、表空间之间关系
数据库: Oracle数据库是数据的物理存储.这就包括(数据文件ORA或者DBF.控制文件.联机日志.参数文件). 其实Oracle数据库的概念和其它数据库不一样,这里的数据库是一个操作系统只有一个库 ...
- oracle批量删除某用户下的表
昨天干了一天的体力活,到快下班时被要求删除一批测试库上错误的表,主要是这些表的字段和生产上字段顺序对不上,然后让我写个脚本,让dba执行一下,主要是删表这种东西我们都没权限. 然后,我就被难到了,我记 ...
- 基于Mysql数据库亿级数据下的分库分表方案
移动互联网时代,海量的用户数据每天都在产生,基于用户使用数据的用户行为分析等这样的分析,都需要依靠数据都统计和分析,当数据量小时,问题没有暴露出来,数据库方面的优化显得不太重要,一旦数据量越来越大时, ...
- 数栈运维实例:Oracle数据库运维场景下,智能运维如何落地生根?
从马车到汽车是为了提升运输效率,而随着时代的发展,如今我们又希望用自动驾驶把驾驶员从开车这项体力劳动中解放出来,增加运行效率,同时也可减少交通事故发生率,这也是企业对于智能运维的诉求. 从人工运维到自 ...
- oracle 如何搜索当前用户下所有表里含某个值的字段?(转)
oracle 如何搜索当前用户下所有表里含某个值的字段? create or replace procedure MY_Pro_SearchKeyWord is v_sql VARCHAR2(400 ...
- Oracle数据库访问客户端 sqldeveloper-18.4.0-376.1900-x64 下载
Oracle数据库访问客户端 sqldeveloper-18.4.0-376.1900-x64 下载地址:https://pan.baidu.com/s/1RnHVuMcCNZQ7ncHLKDJ33Q
- Oracle数据库访问客户端 sqldeveloper-19.2.1.247.2212-x64 下载
Oracle数据库访问客户端 sqldeveloper-19.2.1.247.2212-x64 地址:https://pan.baidu.com/s/1iojCVxwXocyM8oObTf0xaw 这 ...
随机推荐
- Newtonsoft.Json WindowPhone7.1
才发现最新版本的Newtonsoft.Json 已经不支持wp71了… 查了下最后一个支持的版本是Json.NET 5.0 Release 8… 安装的时候需要: Install-Package Ne ...
- Genius ACM
题解: 发现匹配一定会选最大和最小匹配,确定左右端点之后nlogn排序后算 比较容易想到二分 最坏情况每次1个 $n^2*(logn)^2$ 没错暴力的最差复杂度是$n^2*logn$的 发现长度与次 ...
- mysql-5.7.10-winx64 绿色版安装办法
mysql-5.7.10-winx64 绿色版安装办法 为了防止安装程序造成电脑系统冗余,经过测试,终于将绿色版的mysql for windows安装成功.当然很多是从事百度搜索到的,但作为一种积累 ...
- 【Android】修改Android 模拟器IMSI
修改Android 模拟器IMEI 在.....\android_sdk\tools文件下找到emulator-arm.exe,使用UltraEdit文本编辑器打开,搜索CIMI关键字,把310260 ...
- shell判断文件是否为空
[[ `cat a.log |wc -l` -eq 0 ]] && echo "file is empty"
- 关于input type=file上传图片的总结
最近比较忙,现在来整理一下近期的成果,方便以后再次使用. 关于图片上传的js 和jq jq $("input").change(function () { var $file = ...
- linux运行python程序
linux下有多种方式运行python: 1. 命令行执行: 建立一个*.py文档,在其中书写python代码.之后,在命令行执行: $ python *.py 注意事项:1. 需要指明文件的 ...
- BZOJ4025 二分图 分治 并查集 二分图 带权并查集按秩合并
原文链接http://www.cnblogs.com/zhouzhendong/p/8683831.html 题目传送门 - BZOJ4025 题意 有$n$个点,有$m$条边.有$T$个时间段.其中 ...
- 042 spring boot在启动之后,自动关闭
在学校数据源的时候,还没有开始使用数据源,项目就关闭了. 为了学习数据源,就只能使用测试类. 但是,最近需要使用restful进行测试的时候,项目是关闭的,就很糟糕,不好进行测试. 1.日志如下: D ...
- java日志的相关配置文件知识
w2bc.com/article/261758”“”“