sql >> Databasteknik >  >> RDS >> Oracle

Hur replikerar man ett schema med samma privilegier som ett befintligt konto i Oracle?

Öppna avsnittet DBA, Säkerhet och Användare i Oracle SQL Developer.

Välj ditt konto.

Högerklicka.

Välj, skapa gilla.

Slå på "Kopiera objekt privs"

Ange det nya användarnamnet/lösenordet.

Voila.

Gå till SQL-sidan för att se koden som vi har plockat från dataordboken åt dig.

Den har tagit tag i kvoter, roller, systemprivat och objektprivat.

I version 18.1 kan du också bara öppna användaren och gå till SQL-sidan och kopiera/klistra in/ersätta schemanamnet i koden som tillhandahålls där.

Ack! (Jag hör dig säga, jag behöver KODEN för att göra detta.)

Du kan se den SQL vi använder för att hämta den här informationen från databasen genom att öppna loggpanelen i SQL Developer och klicka på sidan Statements.

Här är koden:

select M.NAME,
       decode(
    NVL(
        S.ADMIN_OPTION,
        'NULL'
    ),
    'NO',
    'YES',
    'NULL',
    'NO',
    'YES'
) GRANTED,
       NVL(
    ADMIN_OPTION,
    'NO'
) ADMIN
  from SYSTEM_PRIVILEGE_MAP M,
       (
    select *
      from DBA_SYS_PRIVS
     where (
        GRANTEE   =?
            or ?         = null
    )
) S
 where S.PRIVILEGE (+)   = M.NAME
 order by 1;

select R.ROLE,
       decode(
    S.NAME,
    R.ROLE,
    'YES',
    'NO'
) GRANTED,
       NVL(
    S.ADMIN,
    'NO'
) ADMIN,
       NVL(
    S.DEF,
    'NO'
) DEF
  from DBA_ROLES R,
       (
    select GRANTED_ROLE NAME,
           ADMIN_OPTION ADMIN,
           DEFAULT_ROLE DEF
      from DBA_ROLE_PRIVS
     where GRANTEE   =?
) S
 where S.NAME (+)   = R.ROLE
   and R.AUTHENTICATION_TYPE != 'GLOBAL'
 order by 1;

select OWNER,
       TABLE_NAME,
       PRIVILEGE,
       GRANTABLE
  from DBA_TAB_PRIVS
 where GRANTEE   =?;

select ACCOUNT_STATUS,
       DEFAULT_TABLESPACE DEF,
       TEMPORARY_TABLESPACE TEMP,
       PASSWORD,
       EXTERNAL_NAME,
       EDITIONS_ENABLED,
       ALL_SHARD
  from DBA_USERS
 where USERNAME   =?;

select T.TABLESPACE_NAME,
       NVL(
    Q.UNLIMITED,
    'NO'
) UNLIMITED,
       Q.QUOTA,
       Q.UNIT,
       T.CONTENTS
  from DBA_TABLESPACES T,
       (
    select TABLESPACE_NAME,
           decode(
        MAX_BYTES,
        -1,
        'YES',
        'NO'
    ) UNLIMITED,
           decode(
        MAX_BYTES,
        -1,
        null,
        MAX_BYTES / 1024
    ) QUOTA,
           'K' UNIT
      from DBA_TS_QUOTAS
     where (
        USERNAME   =:1
            or :1         = null
    )
) Q
 where Q.TABLESPACE_NAME (+)   = T.TABLESPACE_NAME
 order by 1;


  1. Oracle:ORA-12154:TNS-problem:Excel 64-bitars/Windows 10 64-bitars

  2. Wampserver-ikonen blir inte helt grön, mysql-tjänster startar inte?

  3. Användning av MySQL-utlösare för att logga alla tabelländringar till en sekundär tabell

  4. Spara base64encoded image till server-side databas som BLOB