那是因为你的权限不足,
或访问其它用户的表时需加完整的名称,
如用户a访问用户b的表table1,则需写成b.table1, 例如:
SQL>conn a/password;
SQL>select * from b.table1; --a访问其它用户的表需要相应的权限。
或访问其它用户的表时需加完整的名称,
如用户a访问用户b的表table1,则需写成b.table1, 例如:
SQL>conn a/password;
SQL>select * from b.table1; --a访问其它用户的表需要相应的权限。
问题是我在创建视图(含这个表)的时候提示表不存在
SQL>grant create view to user_a;
SQL>conn user_a/password;
SQL>create or replace view tab_view_name as
SQL>select * from tab_name;
上面代码成功执行。
我单独执行select * from '那个表' 时却没提示
你可以通过以下语句查询一下你的这些表是不是都属于该用户:
SQL>SELECT owner,table_name,tablespace_name FROM ALL_ALL_TABLES
SQL>WHERE owner='USER_NAME';
SQL> conn sys/password as sysdba
Connected to Oracle9i Enterprise Edition Release 9.2.0.1.0
Connected as SYSSQL>
SQL> select owner,table_name,tablespace_name from all_all_tables
2 where owner='HR'
3 ;OWNER TABLE_NAME TABLESPACE_NAME
------------------------------ ------------------------------ ------------------------------
HR COUNTRIES
HR DEPARTMENTS EXAMPLE
HR EMPLOYEES EXAMPLE
HR JOBS EXAMPLE
HR JOB_HISTORY EXAMPLE
HR LOCATIONS EXAMPLE
HR REGIONS EXAMPLE7 rows selected
又不是让你查询你自己创建的视图,
而是通过数据字典里的系统视图all_all_tables查看你的表是不是都属于同一个用户。
grant select any table to user;
too small
Cause: Rollback records needed by a reader for consistent read are overwritten
by other writers.
Action: If in Automatic Undo Management mode, increase the setting of
UNDO_RETENTION. Otherwise, use larger rollback segments.