sql >> Databáze >  >> RDS >> Oracle

Jak replikovat schéma se stejnými oprávněními jako stávající účet v oracle?

V aplikaci Oracle SQL Developer otevřete sekci DBA, Zabezpečení a Uživatelé.

Vyberte svůj účet.

Klikněte pravým tlačítkem.

Vyberte, Vytvořte Like.

Zapněte 'Kopírovat priv. objektu'

Zadejte nové uživatelské jméno/heslo.

Voila.

Přejděte na stránku SQL a podívejte se na kód, který jsme pro vás získali z datového slovníku.

Získal kvóty, role, systémové priv a objektové priv.

Ve verzi 18.1 můžete také jednoduše otevřít uživatele a přejít na stránku SQL a zkopírovat/vložit/nahradit název schématu v dodaném kódu.

Běda! (Slyšel jsem, že říkáte, k tomu potřebuji KÓD.)

SQL, který používáme k získání těchto informací z DB, můžete zobrazit otevřením panelu Log v SQL Developer a kliknutím na stránku Statements.

Zde je kód:

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 ERROR 1046 (3D000):Při aktualizačním dotazu není vybrána žádná databáze

  2. Časový rozdíl mezi koncovými daty prvních záznamů a daty prvního záznamu dalšího záznamu

  3. Co je uživatelské jméno/heslo pro připojení na pracovní ploše MySQL?

  4. Chyba PostgreSQL:nelze se připojit k databázi template1:nelze se připojit k serveru:Žádný takový soubor nebo adresář