导出一个schema,会将table的所有用户的privelege都导出的吗?比如有一个table,有两个role,分别grant了不同的操作,导出的时候肯定是以某一个role进行操作的,那么导出的privelege包括这两个role的,还是只包括当前操作的那个role的?我手上有一份ddl的,发现左右的table只grant了一个select操作给一个role,这个有问题吗?

解决方案 »

  1.   

    exp schema时,默认会将表上的权限全部导出。
    这里的权限与当前执行exp的用户无关,具体的说,某一特定表上有多少授权,所有这些权限均被导出!
      

  2.   


    thanks!
    只有select权限,table的数据都是怎样被insert进去的呢?
      

  3.   


    就是这个意思既然只有select的privelege,那是怎么insert进去的呢?
      

  4.   

    这个问题就有很多种可能性了。
    1  sys用户对数据库里的任何表都有insert权限。2  该表的所有者(即owner)对该表有insert权限。3  可能存在其他role对该表有insert权限,该这些role被授予用户,则这些用户也对该表有insert权限。4  ...........
      

  5.   


    1. app使用的肯定不是sys级别的
    2. 确定不是该表的owner去操作的
    3. 目前只有发现select被grant给了一个role,
    为啥没有其他的insert被grant给某个或某些role呢
    这样的话某个user才有可能被assign了某个role而具有insert权限
      

  6.   

    sys只是一个特例,所有具有dba权限的用户,对该表有insert权限。
    SQL> show user
    USER 为 "EHT"
    SQL> insert into scott.emp (empno,ename) values (7,'帕托');
    insert into scott.emp (empno,ename) values (7,'帕托')
                      *
    第 1 行出现错误:
    ORA-00942: 表或视图不存在
    SQL> conn sys/top10@test as sysdba
    已连接。
    SQL> grant dba to eht;授权成功。SQL> conn eht/eht@test
    已连接。
    SQL> show user
    USER 为 "EHT"
    SQL> insert into scott.emp (empno,ename) values (7,'帕托');已创建 1 行。SQL> commit;提交完成。SQL>