Oracle
 sql >> Teknologi Basis Data >  >> RDS >> Oracle

Bagaimana cara mereplikasi skema dengan hak istimewa yang sama dari akun yang ada di Oracle?

Di Oracle SQL Developer, buka bagian DBA, Keamanan, dan Pengguna.

Pilih akun Anda.

Klik kanan.

Pilih, Buat Suka.

Aktifkan 'Salin objek privs'

Berikan nama pengguna/kata sandi baru.

Voila.

Buka halaman SQL untuk melihat kode yang kami ambil dari kamus data untuk Anda.

Itu telah meraih kuota, peran, privs sistem, dan privs objek.

Di versi 18.1, Anda juga dapat membuka Pengguna dan membuka halaman SQL dan menyalin/menempel/mengganti nama skema dalam kode yang disediakan di sana.

Sayang! (Saya mendengar Anda berkata, saya perlu KODE untuk melakukan ini.)

Anda dapat melihat SQL yang kami gunakan untuk mendapatkan info ini dari DB, dengan membuka panel Log di SQL Developer dan mengklik halaman Pernyataan.

Ini kodenya:

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. SQL - Penghapusan duplikat lanjutan menggunakan ID NOT IN

  2. Migrasi Data Dari Oracle Ke SQL Server

  3. DECOMPOSE() Fungsi di Oracle

  4. Tampilan terwujud, refresh cepat dengan klausa HAVING?

  5. Apakah pernyataan CASE dan DECODE setara?