`

Create Synonym & Grant Right - Windows version

 
阅读更多

*** Create_Grants.sql

DEFINE EOwner='&1'

SET echo off feed off pages 0 verify off
SET lines 130
SPOOL Sqls/Create_Grants_RBPONL_&EOwner..sql

SELECT    'Grant '
       || DECODE (object_type,
                  'TABLE', 'select,insert,delete,update',
                  'SEQUENCE', 'select',
                  'VIEW', 'select,insert,delete,update',
                  'execute'
                 )
       || ' on '
       || UPPER ('&EOwner')
       || '.'
       || object_name
       || ' to &EOwner._USER;'
  FROM dba_objects
 WHERE owner = UPPER ('&EOwner')
   AND object_type IN
          ('TABLE',
           'SEQUENCE',
           'VIEW',
           'PACKAGE',
           'PROCEDURE',
           'FUNCTION',
           'TYPE'
          );

SPOOL off

exit; 

*** Create_Synonyms.sql
DEFINE EOwner='&1'

SET echo off feed off pages 0 verify off
SET lines 200

SPOOL Sqls/Create_Synonyms_RBPONL_&EOwner..sql
SELECT    'Drop synonym '||d1.owner||'.'
       || synonym_name || ';'
  FROM dba_synonyms d1, 
       ( SELECT DISTINCT grantee FROM dba_role_privs
          WHERE granted_role IN (upper('&EOwner._user'),upper('&EOwner._read'))
            AND grantee NOT IN ('SYS')
       ) d2
 WHERE d1.table_owner=UPPER ('&EOwner') 
   AND d1.owner=d2.grantee
   AND (d1.table_owner, d1.table_name) not in
       ( SELECT owner, object_name from dba_objects
          WHERE object_type IN ('FUNCTION', 'PACKAGE BODY', 'PROCEDURE', 'SEQUENCE', 'TABLE', 'TYPE', 'VIEW')
            AND owner = UPPER ('&EOwner'))
UNION ALL
SELECT    'Create synonym '||d2.grantee||'.'
       || d1.object_name
       || ' for &EOwner..'
       || d1.object_name
       || ';'
  FROM dba_objects d1, 
       ( SELECT DISTINCT grantee FROM dba_role_privs
          WHERE granted_role IN (upper('&EOwner._user'),upper('&EOwner._read'))
            AND grantee NOT IN ('SYS')
       ) d2
 WHERE d1.object_type IN ('FUNCTION', 'PACKAGE BODY', 'PROCEDURE', 'SEQUENCE', 'TABLE', 'TYPE', 'VIEW')
   AND d1.owner = UPPER ('&EOwner')
   AND (d2.grantee,d1.object_name) not in
       ( SELECT owner, synonym_name from dba_synonyms
          WHERE table_owner=UPPER ('&EOwner') )
;
SPOOL off

REM **************************************** END OF FILE ************************************************

exit; 

 

*** Run_Grants.sql

DEFINE EOwner='&1'

SET echo off feed off pages 0 verify off
SET lines 130

SET feed on echo on
SPOOL Logs/Create_Grants_RBPONL_&EOwner..log
START Sqls/Create_Grants_RBPONL_&EOwner..sql
SPOOL off

exit; 

 

*** Run_Synonyms.sql

DEFINE EAppUser='&1'

SET echo off feed off pages 0 verify off
SET lines 200

SET echo on feed on
SPOOL Logs/Create_Synonyms_RBPONL_&EAppUser..log
START Sqls/Create_Synonyms_RBPONL_&EAppUser..sql
SPOOL off

REM **************************************** END OF FILE ************************************************

exit; 

 

 调用程序:

cd %~dp0

set ORACLE_HOME=C:\ORACLE\ORACLE_1120\product\11.2.0\client_1
set SCHEMA_NAME=schema_name
set PASSWORD=password
set DB_NAME=db_name

%ORACLE_HOME%/bin/sqlplus %SCHEMA_NAME%/%PASSWORD%@%DB_NAME% @goldstack/Create_Grants.sql %SCHEMA_NAME%
%ORACLE_HOME%/bin/sqlplus %SCHEMA_NAME%/%PASSWORD%@%DB_NAME% @goldstack/Run_Grants.sql %SCHEMA_NAME%

%ORACLE_HOME%/bin/sqlplus %SCHEMA_NAME%/%PASSWORD%@%DB_NAME% @goldstack/Create_Synonyms.sql %SCHEMA_NAME%

findstr "APPUSER" Sqls\Create_Synonyms_RBPONL_%SCHEMA_NAME%.sql > Sqls\Create_Synonyms_RBPONL_%SCHEMA_NAME%_APPUSER.sql

%ORACLE_HOME%/bin/sqlplus %SCHEMA_NAME%_APPUSER/%PASSWORD%@%DB_NAME% @goldstack/Run_Synonyms.sql %SCHEMA_NAME%_APPUSER
 

 

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics