Naptár

május 2024
Hét Ked Sze Csü Pén Szo Vas
<<  < Archív
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31

Friss topikok

2009.06.25. 21:44 darvat

user cloning DDL generator script - Oracle DBA - Oracle adatbazis - Oracle database

Amennyiben felhasznalokat kell migralnod, objektum/rendszer privilegiumokkal, role-ok, tablater quota-k megorzesevel itt egy szkript amivel a klonozo sql-t generalhatjuk:

 set long 100000
declare
 begin
 DBMS_METADATA.SET_TRANSFORM_PARAM(
DBMS_METADATA.SESSION_TRANSFORM, 'SQLTERMINATOR',TRUE);
 declare
   no_grant      EXCEPTION;
   PRAGMA EXCEPTION_INIT (no_grant, -31608);
   CURSOR get_username
   IS
      SELECT username
        FROM all_users;
      
   file_handle   UTL_FILE.file_type;
   stmt          CLOB;
BEGIN
   file_handle := UTL_FILE.fopen ('DP07', 'cr_users.sql', 'w', 32767);

   FOR l_user IN get_username
   LOOP

-- USERS
    stmt:=DBMS_METADATA.get_ddl ('USER', l_user.username)||chr(10);
    begin
     stmt:=stmt||'---------------------------------------'||chr(10);
     stmt:=stmt||'-- SYSTEM_GRANT'||chr(10);
     stmt:=stmt||'---------------------------------------'||chr(10);
     stmt:=stmt||DBMS_METADATA.get_granted_ddl ('SYSTEM_GRANT', l_user.username)||chr(10);
     exception
      when no_grant then stmt := '-- no system grants'||chr(10);
    end;
    begin
     stmt:=stmt||'---------------------------------------'||chr(10);
     stmt:=stmt||'-- OBJECT_GRANT'||chr(10);
     stmt:=stmt||'---------------------------------------'||chr(10);
     stmt:=stmt||DBMS_METADATA.get_granted_ddl ('OBJECT_GRANT', l_user.username)||chr(10);
     exception
      when no_grant then stmt := '-- no object grants'||chr(10);
    end;
    begin
     stmt:=stmt||'---------------------------------------'||chr(10);
     stmt:=stmt||'-- ROLE_GRANT'||chr(10);
     stmt:=stmt||'---------------------------------------'||chr(10);
     stmt := stmt||DBMS_METADATA.GET_GRANTED_DDL('ROLE_GRANT', l_user.username)||chr(10);
     exception
      when no_grant then stmt := '-- no role grants'||chr(10);
    end;
    begin
     stmt:=stmt||'---------------------------------------'||chr(10);
     stmt:=stmt||'-- TABLESPACE_QUOTA'||chr(10);
     stmt:=stmt||'---------------------------------------'||chr(10);
     stmt:=stmt||DBMS_METADATA.GET_GRANTED_DDL(
'TABLESPACE_QUOTA',l_user.username)||chr(10);
     exception
      when no_grant then stmt := '-- no tablespace quota'||chr(10);
    end;
   begin
     stmt:=stmt||'---------------------------------------'||chr(10);
     stmt:=stmt||'-- DEFAULT_ROLE'||chr(10);
     stmt:=stmt||'---------------------------------------'||chr(10);
    stmt := stmt||DBMS_METADATA.GET_GRANTED_DDL('DEFAULT_ROLE', l_user.username)||chr(10);
    exception
     when no_grant then stmt := '-- no default role'||chr(10);
   end;

   UTL_FILE.put (file_handle, stmt);

 end loop;
 UTL_FILE.fclose (file_handle);
 END;
DBMS_METADATA.SET_TRANSFORM_PARAM(
DBMS_METADATA.SESSION_TRANSFORM,
'SQLTERMINATOR',FALSE);
end;

Szólj hozzá!


A bejegyzés trackback címe:

https://oracle.blog.hu/api/trackback/id/tr841208703

Kommentek:

A hozzászólások a vonatkozó jogszabályok  értelmében felhasználói tartalomnak minősülnek, értük a szolgáltatás technikai  üzemeltetője semmilyen felelősséget nem vállal, azokat nem ellenőrzi. Kifogás esetén forduljon a blog szerkesztőjéhez. Részletek a  Felhasználási feltételekben és az adatvédelmi tájékoztatóban.

Nincsenek hozzászólások.
süti beállítások módosítása