sql >> Database teknologi >  >> RDS >> Oracle

Hvordan replikeres skema med de samme privilegier som en eksisterende konto i Oracle?

I Oracle SQL Developer skal du åbne afsnittet DBA, Sikkerhed og Brugere.

Vælg din konto.

Højreklik.

Vælg, Opret Synes godt om.

Slå 'Kopier objekt privs'

til

Angiv det nye brugernavn/adgangskode.

Voila.

Gå til SQL-siden for at se koden, som vi har plukket fra dataordbogen for dig.

Den har grebet kvoter, roller, system-privs og objekt-privs.

I version 18.1 kan du også bare åbne brugeren og gå til SQL-siden og kopiere/indsætte/erstat skemanavnet i koden, der leveres der.

Ak! (Jeg hører dig sige, jeg har brug for KODEN for at gøre dette.)

Du kan se den SQL, vi bruger til at hente disse oplysninger fra databasen, ved at åbne Log-panelet i SQL Developer og klikke på siden Udsagn.

Her er den kode:

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. MySQL tilføjer KOMMENTAR til en fremmednøgle

  2. Klassen 'mysqli_connect' blev ikke fundet

  3. Sådan henter du nøjagtige matchende poster i Spring JPA @Query

  4. Kan jeg køre en HTTP GET direkte i SQL under MySQL?