[Oracle]-[同义词]-public与非public同义词

[现象]:

Sys账户给bisal账户的t_emp表创建public同义词,bisal用户可以访问t_emp_syn,但scott账户无法查询,select ... t_emp_syn提示表或视图不存在。

SQL> select * from t_emp_syn;

select * from t_emp_syn

              *

ERROR at line 1:

ORA-00942: table or view does not exist

[原因]:

Scott没有bisal.t_emp表的访问权限,因此提示表或视图不存在。

[解决]:

使用bisal,执行grant select on t_emp to scott;

使用scott,可以执行t_emp_syn。

SQL> select * from t_emp_syn;

     EMPNO EN     DEPTNO

 ---------- --  ----------

         1  c       1

         2  d       2

         3  f       0

        10  1       1

        12  1a      1

[总结]:

Public同义词,一个用户A若需要访问另一个用户B建立的表的同义词,则需要有用户B该表(也就是基表)的访问权限。

若是普通同义词,DBA用户可以访问任何用户创建的非public同义词,但不同的普通用户之间,除非授予基表的访问权限,否则不能随意访问其它用户的非public同义词,这也是public存在的用途。

可以为一个基本建立多个不同的同义词。

时间: 2024-09-17 14:48:16

[Oracle]-[同义词]-public与非public同义词的相关文章

如何调用.Net中的非Public方法

今天在网上闲逛,无意见发现一个代码中使用反射调用.Net框架中的非Public方法,觉得这个思路很好. 我怎么就没有想到呢?前两个还在想怎样调用Page类中的Internal方法DecryptString来解一个隐藏 域"__PREVIOUSPAGE"的值,看判断自己的一个分析是否正确.马上动手代码如下,^_^问题解决了. protected void Button2_Click(object sender, EventArgs e) { //Server.Transfer("

oracle-初学ORACLE数据库,关于非空约束问题请教大家。

问题描述 初学ORACLE数据库,关于非空约束问题请教大家. 建表的时候有些字段设置了not null,但是插入记录时并没有哪一行插入记录,为什么会报错了?01400, 比如所有A/B/C三个字段,A设置类not null 但是我要插入记录时并不需要给A插入记录,只想给B/C插入记录.insert int table_name(b,c) values(value1,values2); 这样,报错了,无法将null插入A这个很不理解,请求大神,帮助一下. 解决方案 你已经把A设置为非空了,当插入这

Oracle归档模式和非归档模式

Oracle归档模式和非归档模式 解释归档和非归档模式之间的不同和它们各自的优缺点? 答:归档模式是指可以备份所有的数据库transactions并恢复到任意一个时间点.         非归档模式则相反,不能恢复到任意一个时间点.         但是非归档模式可以带来数据库性能上的少许提高. 记忆方式:归档模式>热备份>恢复任意时间点>性能少许下降                       非归档模式>冷备份>恢复完全备份>性能少许提高 一.查看oracle数据库

【Oracle】v$表和v_$同义词的访问权限

买了最新的11gr2tom kyte的书编程艺术,参考其中的例子做实验,发现: yang@RAC> create or replace view stats   2  as select 'STAT...' || a.name name, b.value   3        from v$statname a, v$mystat b   4       where a.statistic# = b.statistic#   5      union all   6      select 'L

Oracle中如何用非默认方式创建外键

创建外键约束时如果使用Oracle默认的创建方式,在删除被参照的数据时,将无法被删除,这一点在Oracle9i中给了我们更多灵活的选择,我们可是使用on delete cascade和 on delete set null关键字来决定删除被参照数据时是否要将参照这个数据的那些数据一并删除,还是将那些参照这条数据的数据的对应值赋空. 例如下面这两个表中分别存的时员工的基本信息和公司的部门信息.我们为 create table dept (deptno number(10) not null, de

Oracle判断值为非数字

select * from product_info t where t.contract_detailid is not null and length(translate(t.contract_detailid,'-.0123456789'||t.contract_detailid,'-.0123456789'))<>length(t.contract_detailid) for update

深入理解Java:类加载机制及反射

一.Java类加载机制 1.概述 Class文件由类装载器装载后,在JVM中将形成一份描述Class结构的元信息对象,通过该元信息对象可以获知Class的结构信息:如构造函数,属性和方法等,Java允许用户借由这个Class相关的元信息对象间接调用Class对象的功能. 虚拟机把描述类的数据从class文件加载到内存,并对数据进行校验,转换解析和初始化,最终形成可以被虚拟机直接使用的Java类型,这就是虚拟机的类加载机制. 2.工作机制 类装载器就是寻找类的字节码文件,并构造出类在JVM内部表示

Java反射机制的学习

Java反射机制是Java语言被视为准动态语言的关键性质.Java反射机制的核心就是允许在运行时通过Java Reflection APIs来取得已知名字的class类的相关信息,动态地生成此类,并调用其方法或修改其域(甚至是本身声明为private的域或方法). 也许你使用Java已经很长时间了,可是几乎不会用到Java反射机制.你会嗤之以鼻地告诉我,Java反射机制没啥用.或许在J2EE.J2SE等平台,Java反射机制没啥用(具体我也不了解,不多做评论),但是在Android应用开发中,该

Java反射机制的学习总结_java

一.什么是反射机制 简单的来说,反射机制指的是程序在运行时能够获取自身的信息.在java中,只要给定类的名字,那么就可以通过反射机制来获得类的所有信息. 二.哪里用到反射机制 有些时候,我们用过一些知识,但是并不知道它的专业术语是什么,在刚刚学jdbc时用过一行代码, Class.forName("com.mysql.jdbc.Driver.class").newInstance();但是那时候只知道那行代码是生成驱动对象实例,并不知道它的具体含义.听了反射机制这节课后,才知道,原来这