我的问题是:数据库Oracle SID:orcl 
我在下面建2个用户:user1 user2 2个用户。 
create user user1 identified by user1 ; 
grant dba to user1 ; create user user2 identified by user2 ; 
grant dba to user2 ; 
2个用户多是使用dba权限 而且都是位于 orcl 下面的用户。 
Classes.hbm.xml 这个事一个班级类的映射文件。现在数据库创建表时候都是使用hibernate在项目启动时候自动创建表,但是我的项目要求是 在项目启动的时候就要查询数据库中的这个 Classes这个表。 
问题出现了》 
如果orcl下面都没有用户,那么第一次使用user1 时候能正常启动, 
如果现在跟换 数据库连接(数据源) 改用 user2  那么就报错 
15:35:11,906  WARN JDBCExceptionReporter:71 - SQL Error: 942, SQLState: 42000 
15:35:11,906 ERROR JDBCExceptionReporter:72 - ORA-00942: 表或视图不存在 table found: USER1.T_Classes 
这里指向的是 User1  而不是User2 
后来我吧user1 删除 了 使用user2 没有问题, 再试,再创建user1 使用user1 出现同样问题 但是 table found: USER2.T_Classes 但是我用其他方式 
create user user1 identified by user1 default tablespace users quota 30m on users; 
grant create session, create table, create view, create trigger, create sequence to user1; 
这样创建的用户就没有出现这样的问题 得出结论 是 数据库指向出现问题。 ------------------------------- 
请大家帮忙解决下》 是不是 我在授权user1 和user2的时候 2个用户只能有一个事dba 啊 还有就是怎么 确保 hibernate的映射文件正确指向相应的用户??? 请问下 各位朋友 你们在创建用户的时候  给用户授权时 怎么授权的? 都有哪些要注意的问题????

解决方案 »

  1.   

    是否跟表的权限由关系?没怎么用过oracle 你可以试试 grant T_class all to plublic 
      

  2.   

    Oracle中是有表空间的概念的, 一个用户会有一个表空间和一个临时表空间.Oracle中的结构: 数据库--表空间--表
    你第一种方式创建的用户没有指定表空间, 默认会为其指定表空间为users, 也就是说两个用户使用的是同一个表空间.
    再试,再创建user1 使用user1 出现同样问题 但是 table found: USER2.T_Classes 
    table found: USERS.TClasses, 是说你这个表已经被发现了.也就是说当前用户的表空间已经有这个表了.
    CREATE USER user IDENTIFIED 
    { BY password | EXTERNALLY | GLOBALLY AS 'external_name' }
    [{ DEFAULT TABLESPACE tablespace
     | TEMPORARY TABLESPACE tablespace
     | QUOTA { integer [ K | M ] | UNLIMITED } ON tablespace 
       [QUOTA { integer [ K | M ] | UNLIMITED } ON tablespace]...
     | PROFILE profile
     | PASSWORD EXPIRE
     | ACCOUNT { LOCK | UNLOCK }
     }
     [ DEFAULT TABLESPACE tablespace  #注意这里, 这里是为其分配表空间.
     | TEMPORARY TABLESPACE tablespace
     | QUOTA { integer [ K | M ] | UNLIMITED } ON tablespace 
       [QUOTA { integer [ K | M ] | UNLIMITED } ON tablespace]...
     | PROFILE profile
     | PASSWORD EXPIRE
     | ACCOUNT { LOCK | UNLOCK }
     ]...
    ]
    ;
    表空间的创建语法:
    CREATE [UNDO] TABLESPACE tablespace 
    [DATAFILE datafile_tempfile_spec [, datafile_tempfile_spec]... ] 
    [{ MINIMUM EXTENT integer [ K | M ]
     | BLOCKSIZE integer [K]
     | logging_clause  
     | FORCE LOGGING
     | DEFAULT [data_segment_compression] storage_clause
     | { ONLINE | OFFLINE }
     | { PERMANENT | TEMPORARY }
     | extent_management_clause
     | segment_management_clause
     }
     [ MINIMUM EXTENT integer [ K | M ]
     | BLOCKSIZE integer [K]
     | logging_clause
     | FORCE LOGGING
     | DEFAULT [data_segment_compression] storage_clause
     | { ONLINE | OFFLINE }
     | { PERMANENT | TEMPORARY }
     | extent_management_clause
     | segment_management_clause
     ]...
    ]
    ;