Oracle
 sql >> Baza danych >  >> RDS >> Oracle

Jak zreplikować schemat z tymi samymi uprawnieniami istniejącego konta w Oracle?

W Oracle SQL Developer otwórz sekcję DBA, Bezpieczeństwo i Użytkownicy.

Wybierz swoje konto.

Kliknij prawym przyciskiem myszy.

Wybierz Utwórz polubienie.

Włącz opcję „Kopiuj uprawnienia obiektu”

Podaj nową nazwę użytkownika/hasło.

Voila.

Przejdź do strony SQL, aby zobaczyć kod, który wyciągnęliśmy dla Ciebie ze słownika danych.

Pobrał limity, role, uprawnienia systemowe i uprawnienia obiektu.

W wersji 18.1 możesz również po prostu otworzyć użytkownika i przejść do strony SQL i skopiować/wkleić/zamienić nazwę schematu w dostarczonym tam kodzie.

Niestety! (Słyszę, jak mówisz, żeby to zrobić, potrzebuję KODU).

Możesz zobaczyć SQL, którego używamy do uzyskania tych informacji z bazy danych, otwierając panel Log w SQL Developer i klikając stronę Statements.

Oto ten kod:

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. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Jak określić tydzień kwartału w zapytaniu Oracle

  2. cx_Oracle:Jak iterować zestaw wyników?

  3. CriteriaQuery filtr miesiąca i roku

  4. Wykonywanie skryptu SQL w Oracle db po jednej instrukcji na raz

  5. Kodowanie w ROracle