通过toad连接oracle数据库,无意中发现的一个问题,个人搜索资料未果,向广大朋友请教,问题描述:
执行语句 select * from Tzj_dss(简单的查询) 通过toad连接数据库,用户以sysdba的身份登录,则报错“ORA-00942: 表或视图不存在”,但事实上数据库中存在该表!还是通过toad连接数据库,这次用户以normal身份登录,执行同样的语句就可以查询到,直接通过sql/plus也可以查询得到,请教一下大家,这个是怎么回事?自己搜的答案,有的说是权限的问题,但是在创建用户的时候直接赋予的dba权限,希望大家能帮小弟一下,不胜感激oracletoad

解决方案 »

  1.   

    select * from 登录名.Tzj_dss 试下
      

  2.   

    select * from dba_obects where object_name='Tzj_dss';
    看看是什么东西来的
      

  3.   

    你想表达的是select * from dba_objects where object_name='Tzj_dss_codes',是这个吧?
    我执行这句话,只有表头信息,没有数据?表头是owner object_name等
      

  4.   

    我按照你说的方法可以查询到,请问一下,这是什么原因呢?select * from Tzj_dss这样默认会是(select * from 当前登录用户名.Tzj_dss),而如果Tzj_dss表不是当前用户所有的就会报错。
    表到底是哪个用户的,如果是normal用户的,以Normal用户登录查自己的表直接可以select * from Tzj_dss,sysdba用户登录查看就要select * from Normal用户名.Tzj_dss。
      

  5.   

    你想表达的是select * from dba_objects where object_name='Tzj_dss_codes',是这个吧?
    我执行这句话,只有表头信息,没有数据?表头是owner object_name等
    object_name='TZJ_DSS_CODES',要大写
      

  6.   

    正解
    我按照你说的方法可以查询到,请问一下,这是什么原因呢?select * from Tzj_dss这样默认会是(select * from 当前登录用户名.Tzj_dss),而如果Tzj_dss表不是当前用户所有的就会报错。
    表到底是哪个用户的,如果是normal用户的,以Normal用户登录查自己的表直接可以select * from Tzj_dss,sysdba用户登录查看就要select * from Normal用户名.Tzj_dss。
      

  7.   

    朋友,按照你解释的意思,是不是可以这样理解:两次登录使用的都是同一个用户名(同一个用户),只是以不同的身份登录了,这意味着是两个用户?我按照你说的select * from dba_objects where object_name='TZJ_DSS_CODES'进行了查询,得到的信息显示,表的owner_name就是登录的用户名,只是两次身份不同,并且不管用那种身份登录,都可以在查看表的面板中看到tzj_dss_codes这张表,请问这又如何理解呢?通过sql/plus就能查询到表信息,这又是为何呢?
      

  8.   

    你想表达的是select * from dba_objects where object_name='Tzj_dss_codes',是这个吧?
    我执行这句话,只有表头信息,没有数据?表头是owner object_name等
    object_name='TZJ_DSS_CODES',要大写非常感谢你的回答,小弟菜鸟一枚,请不吝赐教!
      

  9.   

    朋友,按照你解释的意思,是不是可以这样理解:两次登录使用的都是同一个用户名(同一个用户),只是以不同的身份登录了,这意味着是两个用户?我按照你说的select * from dba_objects where object_name='TZJ_DSS_CODES'进行了查询,得到的信息显示,表的owner_name就是登录的用户名,只是两次身份不同,并且不管用那种身份登录,都可以在查看表的面板中看到tzj_dss_codes这张表,请问这又如何理解呢?通过sql/plus就能查询到表信息,这又是为何呢?
    两次登录使用的都是同一个用户名,这样的话,我就没法解释了
      

  10.   

    问题解决了,请教了一位作DBA的大神,给出的解释是 如果采用connect as sysdba登录,那么登录用户就会自动变为了oracle自动创建的sys用户(可以通过select user from dual进行验证,更神奇的是,此时完全没有必要正确输入用户对应的密码,输任何都会连接成功),这样问题就能得到很好的解释了!非常感谢大家的回答,看着给分啦!
      

  11.   

    朋友,按照你解释的意思,是不是可以这样理解:两次登录使用的都是同一个用户名(同一个用户),只是以不同的身份登录了,这意味着是两个用户?我按照你说的select * from dba_objects where object_name='TZJ_DSS_CODES'进行了查询,得到的信息显示,表的owner_name就是登录的用户名,只是两次身份不同,并且不管用那种身份登录,都可以在查看表的面板中看到tzj_dss_codes这张表,请问这又如何理解呢?通过sql/plus就能查询到表信息,这又是为何呢?
    两次登录使用的都是同一个用户名,这样的话,我就没法解释了问题已经解决了,多谢哥们!