现有一个java+oracle的项目,数据库表有两类,一类是对权限比较高的,如数据字典,系统设置之类的表,第二类是普通级别的,想在oracle中设计这两类表。应该怎么设计呢?
  我的想法是建两个用户,假设user1对应第一类,user2对应第二类,把user1设置一些管理第二类表的权限,可是这样设计的话,java连接oracle时用哪个用户呢,用user1权限太大,没有达到目地,用user2又操作不了第一类表。望指点! 
  当然还可以直接用java来控制权限,但不想这样,需用oracle。

解决方案 »

  1.   

    可以给第二个用户SELECT INSERT UPDATE DELETE 表的权限就可以了啊
      

  2.   

    grant connect,resource,dba to user1;
    grant select,update,insert,delete to user2;
    细节部分可在程序中进行控制。
      

  3.   

    谢谢你们的回答,你们的意思是说用user2用户连接数据库,然后用user1.table的形式操作第一类表?我的理解有错吗?
    目地是要user2不能INSERT UPDATE DELETE 第一类表,只能select,这里好像要用java来判断用户类型来控制权限了,有没有更好的办法啊?
      

  4.   

    用户登录的时候控制?如果是普通权限登录,就用user1的用户;权限高的就用user2?
    这个不方便的是,注销重新登录时,需要重新初始化。
      

  5.   

    You can use different DB connection pool for different function.
    For system management, use the first db connection with user1.
    For normal operation, use the second db connection with user2.
      

  6.   

    这个没什么大问题阿。
    1.把大权限的表用user1创建
    2.grant select on user1.table to user2
    这样user2就只能select了。
      

  7.   

    两步:
    1\grant dba to user1
    2\grant select on user1.table to user2.
      

  8.   

    请问七楼和八楼,像你们说的是实现了user2不能INSERT UPDATE DELETE 第一类表,只能select,但是java连接oracle用user1还是user2呢,
    就是user2不能INSERT UPDATE DELETE 第一类表了,如果执行这些操作会报错, 可还是要用java来获取错误或者来判断它不能操作才行啊我想好像还是要写两个连接,根据用户判断是user1还是user2类型,连接不同的连接,还有其它好的办法没?