Oracle中将一个用户的所有对象授权给另一个用户


  1. --首先是CPR账号
  2.     --授权表上的读写权限
  3.     select 'grant all on '||owner||'.'||table_name||' to hisuser;' from dba_tables
  4.     where owner = 'CPR';
  5.     
  6.     --授权视图上的读写权限
  7.     select 'grant all on '||owner||'.'||view_name||' to hisuser;' from dba_views
  8.     where owner = 'CPR';

  9.     --授权函数和存储过程的读写权限
  10.     select 'grant execute on '||owner||'.'||name||' to hisuser;' from dba_source
  11.     where owner = 'CPR' and type in ('PROCEDURE','FUNCTION','PACKAGE','PACKAGE BODY','TYPE BODY','TRIGGER','TYPE') ;

  12.     --授权序列的读写权限
  13.     select 'grant all on '||sequence_owner||'.'||sequence_name||' to hisuser;' from dba_sequences where sequence_owner = 'CPR' ;

  14.     --创建同义词
  15.     select 'create or replace public synonym '||synonym_name||' for '||table_owner||'.'||table_name||' ;' from dba_synonyms
  16.     where table_owner='CPR' ;
  17.     select 'create or replace public synonym '||view_name||' for '||owner||'.'||view_name||' ;' from dba_views
  18.     where owner = 'CPR' and (owner NOT LIKE '%$%' OR view_name NOT LIKE '%$%') ;

  19. --然后是system账号
  20.     --授权表上的读写权限
  21.     select 'grant all on '||owner||'.'||table_name||' to hisuser;' from dba_tables
  22.     where owner = 'SYSTEM' and table_name NOT LIKE '%$%';
  23.     
  24.     --授权视图上的读写权限
  25.     select 'grant all on '||owner||'.'||view_name||' to hisuser;' from dba_views
  26.     where owner = 'SYS';    

  27.     --授权函数和存储过程的读写权限
  28.     select DISTINCT 'grant execute on '||owner||'.'||name||' to hisuser;' from dba_source
  29.     where owner = 'SYS' and type in ('PROCEDURE','FUNCTION','PACKAGE','PACKAGE BODY','TYPE BODY','TRIGGER','TYPE') AND name NOT LIKE '%$%'

  30.     --授权序列的读写权限
  31.     select 'grant all on '||sequence_owner||'.'||sequence_name||' to hisuser;' from dba_sequences where sequence_owner = 'SYSTEM' AND sequence_name NOT LIKE '%$%';

  32.     --创建同义词
  33.     select 'create or replace public synonym '||synonym_name||' for '||table_owner||'.'||table_name||' ;' from dba_synonyms
  34.     where table_owner='SYS' and synonym_name NOT LIKE '%$%';
  35.     
  36.     select 'create or replace public synonym '||view_name||' for '||owner||'.'||view_name||' ;' from dba_views
  37.     where owner = 'SYS' and (owner NOT LIKE '%$%' OR view_name NOT LIKE '%$%') ;

请使用浏览器的分享功能分享到微信等