错误提示:表或视图不存在
流程:登录sqlplus 用户是sys/tianfei123 as sysdba
       导入dmp文件:imp userid=sys/tianfei123 full=y file=myeln.dmp
      创建新用户:Create user tianfei identified by tianfei;
      赋予用户权限:grant connect, resource,dba to tianfei;
      推出:sqlplus。
 
     登录:pl/sql 用户名:tianfei 密码:tianfei 方式:normal
     打开sql窗口:  1  使用sql语句:select * from userinfo
                        报错:表或视图不存在
                    2  使用sql语句  select * from  sys.userinfo
                        信息正确显示。    因为我要在java中连接该数据库,不可能在每个表前都要加上sys,能不能直接给tianfei用户授权,使该用户能直接使用
      
select * from userinfo ,语句,而不报错误。
    谢谢大家的帮助。
                          
      

解决方案 »

  1.   

    再询问,同义词是不是只针对数据库中的表的,有针对oracle数据库的吗?
      

  2.   


    针对oracle数据库的叫dblink的方式。两外synchoyn还可以针对view等。
      

  3.   

    恩啊,你创建的用户不在你所用的表的实例下,所以必须要用 xxx.xxx可以定义同义词
    select * from mwx.student
     声明: create synonym 同义次名称 for  对象。
      create synonym dep for mwx.student;表示把mwx用户对应的方案的表student,取个别名dep。可以直接用   select * from dep
      

  4.   

    更改会话的当前架构
    alter session set current_schema=sys;这样,会话就可以直接解析 sys 架构下的对象。
      

  5.   


    对 也可以改变会话架构 很好alter session set current_schema=sys(拥有对象的用户)
      

  6.   

    用具有DBA权限的用户登录并执行该语句
    grant select on sys.userinfo to tianfei
      

  7.   

    我这个方法不一定好,由于没有权限设置,也有可能没权限创建 同义词或者dblink.
    那么可不可以用这个流程呢?
    用C得方式简单写一下。
    SELECT NVL(OWNER || '.' || OBJECT_NAME,'')
      INTO :TABLENAME
     FROM ALL_OBJECTS;if(strlen(TABLENAME)==0)
      return -1;select * from TABLENAME;TABLENAME是你想要的表,因为每次真正读表之前都作了对象的所属用户和对象名字的拼接,所以查询的每一次结果都是真正存在的表(或者别的同义词什么的)