`
aaron0927
  • 浏览: 28436 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

跨用户创建view ORA-00942: 表或视图不存在错误

阅读更多

今天在我的ORACLE 9.2.0.1 /WINXP平台创建跨用户的VIEW发现一个奇怪问题。
我执行了grant dba to userc,然后运行
create or replace   view  userc.view
  2   As
  3   select a.pkg_id,a.scheme_id,c.item_code,c.adjustrate_id,
  4     to_char(c.valid_date,'YYYYMMDD') valid_date,
  5     to_char( c.expire_date,'YYYYMMDD') expire_date
  6     from usera.table_a c,userb.table_b a
  7     where c.scheme_id = a.scheme_id and a.event_id=1
  8     group  by  a.pkg_id,to_char(c.valid_date,'YYYYMMDD'),
  9     a.scheme_id,c.item_code,c.adjustrate_id,to_char( c.expire_date,'YYYYMMDD')
 10  ;

create or replace   view  userc.view
 As
 select a.pkg_id,a.scheme_id,c.item_code,c.adjustrate_id,
   to_char(c.valid_date,'YYYYMMDD') valid_date,
   to_char( c.expire_date,'YYYYMMDD') expire_date
   from usera.table_a c,userb.table_b a
   where c.scheme_id = a.scheme_id and a.event_id=1
   group  by  a.pkg_id,to_char(c.valid_date,'YYYYMMDD'),
   a.scheme_id,c.item_code,c.adjustrate_id,to_char( c.expire_date,'YYYYMMDD')


ORA-00942: 表或视图不存在
实际上表都是存在的并且SELECT部分使用USERC也是可以运行正常的,奇怪。后来试试显式赋权运行

SQL> grant all on usera.table_a to userc;

Grant succeeded

SQL> grant all on userb.table_b to userc;

Grant succeeded

SQL>
SQL> create or replace   view  userc.view
  2   As
  3   select a.pkg_id,a.scheme_id,c.item_code,c.adjustrate_id,
  4     to_char(c.valid_date,'YYYYMMDD') valid_date,
  5     to_char( c.expire_date,'YYYYMMDD') expire_date
  6     from usera.table_a c,userb.table_b a
  7     where c.scheme_id = a.scheme_id and a.event_id=1
  8     group  by  a.pkg_id,to_char(c.valid_date,'YYYYMMDD'),
  9     a.scheme_id,c.item_code,c.adjustrate_id,to_char( c.expire_date,'YYYYMMDD')
 10  ;

View created

OK了,不知道是不是ORACLE的BUG还是本来就要求如此,查ORACLE手册
The owner of the view (whether it is you or another user) must have been
explicitly granted privileges to access all objects referenced in the view
definition. The owner cannot have obtained these privileges through roles

原本要求就是必须显式赋权,可惜ORACLE错误实在不够清楚

分享到:
评论

相关推荐

    创建物化视图ORA-12014错误解决方法

    创建物化视图时遇到ORA-12014错误是比较常见的问题,主要是由于基表结构、列类型或配置等方面不符合要求所致。通过对基表进行必要的结构调整和优化刷新策略,通常可以有效避免此类错误的发生。希望本文提供的解决...

    oracle常见错误号

    9. ORA-00942:table or view does not exist - 表或视图不存在。确保表或视图已创建,并且拼写和大小写正确。 10. ORA-12560:TNS:protocol adapter error - 连接问题,可能是网络问题、配置错误或监听器问题。...

    oracle+ora-各种常见java.sq

    - `java.sql.SQLException: ORA-00942: table or view does not exist`: 查询的表或视图不存在。核实表名或视图名的拼写和大小写,以及是否有访问权限。 6. **并发问题** - `java.sql.SQLException: ORA-00054: ...

    oracle 错误一览表

    - **描述**:不支持对字典管理的表/视图进行DML操作。 - **解决方法**:使用本地管理的表空间或禁用字典管理。 #### ORA-00056: '.' not allowed in object names for non-default schemas - **描述**:在非默认...

    ORACLE ORA

    - **ORA-02240**:表示在修改表时,OBJNO或ABNO的值不合法。 - **ORA-02241**:表示在扩展表空间时,格式不正确。 - **ORA-02242**:表示在执行ALTER INDEX操作时,缺少必要的选项。 - **ORA-02243**:表示在执行...

    Oracle错误码及处理步骤

    14. ORA-0942:表或视图不存在 尝试在不存在的表或视图上操作。检查CREATE VIEW语句的语法,确保引用的对象正确。 15. ORA-1779:不能修改映射到非键保留表中的列 在非键保留的视图上执行DML操作时,会出现此错误...

    SQLException

    3. **ORA-00942: table or view does not exist** - **含义**:试图访问的表或视图不存在。 - **解决方法**:检查表或视图名称是否正确,以及是否已经被删除或重命名。 4. **ORA-01400: cannot insert NULL into...

    Oracle DATABASE LINK(DBLINK)创建与删除方法

    如果在尝试关闭或删除DBLINK时遇到 `ORA-02080: database link is in use` 的错误,可能是因为DBLINK正被其他会话使用。可以查询 `v$dblink` 视图来检查DBLINK的状态,或者等待当前使用DBLINK的会话结束,或者强制...

    Oracle错误信息浏览表_2.docx

    4. ORA-02204: 不允许 ALTER, INDEX 和 EXECUTE 用于视图 - 在试图对视图执行非SELECT或ALTER操作时,可能会出现这个错误。 5. ORA-02205: 只有 SELECT 和 ALTER 权限对序列有效 - 序列对象仅允许SELECT和ALTER操作...

    oracle 10g错误代码手册

    - **ORA-00942: table or view does not exist** - **含义**:试图访问不存在的表或视图。 - **解决方法**:确认表或视图名称正确无误。 - **ORA-01008: not all variables bound** - **含义**:执行的SQL语句中...

    Oracle创建视图(View)

    视图:是基于一个表或多个表或视图的逻辑表,本身不包含数据,通过它可以对表里面的数据进行查询和修改。视图基于的表称为基表,Oracle的数据库对象分为五种:表,视图,序列,索引和同义词。 视图是存储在数据字典...

    oracle面试题

    2. 创建表的语句错误在于SELECT语句中不应该直接用于CREATE TABLE。应该先执行SELECT,然后使用INSERT INTO来创建新表。答案是C。 3. 主键是表中的唯一标识符,A和C正确。一个表可以有一个或多个列组成的复合主键,...

    oracle error message

    4. **ORA-00942: table or view does not exist** - **含义**:尝试访问不存在的表或视图时会触发此错误。 - **原因**:可能是由于表名或视图名拼写错误,或者是表已被删除。 - **解决方案**: - 检查表或视图...

    Oracle_存储过程exception异常处理大全及实例经典最终.docx

    例如,ORA-00942:table or view does not exist(表或视图不存在),ORA-01403:no data found(没有找到数据)。 ### 用户自定义的异常处理 用户自定义的异常处理是程序执行过程中,出现编程人认为的非正常情况...

    Oracle ORA 07445 evaopn2()+128错误问题的解决方案

    在Oracle 10.2.0.4.0这个版本中,存在一个已知的bug,当尝试合并多个复杂视图时,可能会触发这个错误。 **问题原因**: 这个问题的根本原因在于Oracle数据库的优化器在处理某些特定类型的复杂视图合并时,可能会...

    oracle_11gR2_09 视图 VIEW 的介绍(

    例如,根据给定的部分内容,创建一个名为`xs_view`的视图,该视图将显示`xue_sheng`表中的所有列: ```sql CREATE VIEW xs_view AS SELECT * FROM xue_sheng; ``` 如果需要替换已存在的视图,可以使用`CREATE OR ...

    Oracle经典教程4——表空间和数据库对象

    若SCOTT未授权XiaoMei访问EMP表,会报错`ORA-00942: 表或视图不存在`。解决方法是授予XiaoMei相应的访问权限。 ```sql GRANT ALL ON EMP TO XiaoMei; ``` ##### 2. 序列(Sequences) - **定义**: 序列是一种自动...

    oracle面试1000例

    - 数据泵(EXPDP/IMPDP):用于导出导入数据,支持表、用户或整个数据库。 9. **性能优化**: - SQL优化:使用EXPLAIN PLAN分析执行计划,调整SQL语句。 - 索引优化:选择合适的索引类型,避免全表扫描。 - ...

    Oracle和SqlServer系统表操作差异对比

    - `sysobjects` 表(在较新版本中已废弃,应使用 `sys.tables`)包含了所有对象的信息,其中 'U' 表示用户表。 - `sys.columns` 表提供了表列的详细信息,而 `sysconstraints` 或 `sys.indexes` 可用于查找约束和...

    oracle 10g 导入 9i 00003 错误解决.txt

    2. **表空间或段信息不匹配**:如果在导入过程中表空间或段信息存在差异,也可能导致该错误。 3. **元数据损坏**:如果源数据库中的元数据发生损坏,那么在导入过程中可能会遇到问题。 #### 解决方案 为了解决00003...

Global site tag (gtag.js) - Google Analytics