出现ORA-01555错误,有什么办法解决

litgrass 2003-12-15 03:26:31
创建视图的时候报错,说表不存在
查询这个表时出现ORA-01555,增加了200M的回退段,后查询没什么问题,但创建视图还是提示表不存在

...全文
166 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
beckhambobo 2003-12-16
  • 打赏
  • 举报
回复
connect sys/chang_on_install as sysdba
grant select any table to user;
zgh2003 2003-12-16
  • 打赏
  • 举报
回复
唉,
又不是让你查询你自己创建的视图,
而是通过数据字典里的系统视图all_all_tables查看你的表是不是都属于同一个用户。
litgrass 2003-12-16
  • 打赏
  • 举报
回复
可是我现在并没有成功创建视图,当然不能查看了
shuipipi 2003-12-16
  • 打赏
  • 举报
回复
就是一个权限问题!数据库系统权限和数据库对象权限是不同的!

以后请将标题表达准确些,泥遇到的问题并不是ORA-01555错误!
zgh2003 2003-12-16
  • 打赏
  • 举报
回复
你现在的问题是没有视图all_all_tables的查询权限。请看下面:
SQL> conn sys/password as sysdba
Connected to Oracle9i Enterprise Edition Release 9.2.0.1.0
Connected as SYS

SQL>
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 EXAMPLE

7 rows selected
litgrass 2003-12-16
  • 打赏
  • 举报
回复
我执行你的SQL后有问题,owner和ALL_ALL_TABLES是ORACLE的关键字么?
robb27 2003-12-16
  • 打赏
  • 举报
回复
ORA-01555 snapshot too old: rollback segment number string with name "string"
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.
zgh2003 2003-12-15
  • 打赏
  • 举报
回复
如果真是这样的话,肯定有个表不属于当前用户,
你可以通过以下语句查询一下你的这些表是不是都属于该用户:
SQL>SELECT owner,table_name,tablespace_name FROM ALL_ALL_TABLES
SQL>WHERE owner='USER_NAME';
litgrass 2003-12-15
  • 打赏
  • 举报
回复
很感谢你的回帖

执行create view时,提示有个表不存在,我的视图是关联多个表的.
我单独执行select * from '那个表' 时却没提示
zgh2003 2003-12-15
  • 打赏
  • 举报
回复
SQL>conn sys/password as sysdba;
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;
上面代码成功执行。
litgrass 2003-12-15
  • 打赏
  • 举报
回复
表是属于当前用户的,当前用户登陆后,创建视图
zgh2003 2003-12-15
  • 打赏
  • 举报
回复
你把创建视图的代码贴出来看看。
表所属用户名?
当前用户名?
litgrass 2003-12-15
  • 打赏
  • 举报
回复
不是权限的问题.我现在可以select * from that_table ;
问题是我在创建视图(含这个表)的时候提示表不存在
zgh2003 2003-12-15
  • 打赏
  • 举报
回复
那是因为你的权限不足,
或访问其它用户的表时需加完整的名称,
如用户a访问用户b的表table1,则需写成b.table1, 例如:
SQL>conn a/password;
SQL>select * from b.table1; --a访问其它用户的表需要相应的权限。

17,377

社区成员

发帖
与我相关
我的任务
社区描述
Oracle 基础和管理
社区管理员
  • 基础和管理社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧