Oracle veritabanı kullanıcısını çoğaltma


17

Oracle veritabanımızda inceleme yapmak için harici denetçilerin gelmesini sağlayacağız. İncelemeyi gerçekleştirmek için bir araç çalıştırıyor olacaklar ve bunun için veritabanına bağlanabilecek ve ondan bilgi alabilecek bir kullanıcı kimliği gerektiriyorlar.

Bunun için veritabanında mevcut bir kullanıcımız var. Ancak, bu bir üretim kimliğidir ve kilitlenmesini göze alamayız. Rolleri ve hakları da dahil olmak üzere bu kimliği klonlamak / çoğaltmak istiyoruz.

Oracle'da bunu yapmanın bir yolu var mı?

Yanıtlar:


21

Kullanıcı oluşturma:

select dbms_metadata.get_ddl( 'USER', 'PHIL' ) from dual;

Varsayılan rol:

select dbms_metadata.get_granted_ddl( 'DEFAULT_ROLE', 'PHIL' ) from dual;

Sistem hibeleri:

select dbms_metadata.get_granted_ddl( 'SYSTEM_GRANT', 'PHIL' ) from  dual;

Nesne hibeleri:

select dbms_metadata.get_granted_ddl( 'OBJECT_GRANT', 'PHIL' ) from dual;

Rol hibeleri:

select dbms_metadata.get_granted_ddl( 'ROLE_GRANT', 'PHIL' ) from dual;

Kotalar:

select dbms_metadata.get_granted_ddl( 'TABLESPACE_QUOTA', 'PHIL' ) from dual;

Yukarıdakilerden herhangi birinin çıktısı yoksa, şuna benzer bir istisna alırsınız:

SQL> select dbms_metadata.get_granted_ddl( 'TABLESPACE_QUOTA', 'PHIL' ) from dual;
ERROR:
ORA-31608: specified object of type TABLESPACE_QUOTA not found
ORA-06512: at "SYS.DBMS_METADATA", line 4018
ORA-06512: at "SYS.DBMS_METADATA", line 5991
ORA-06512: at line 1

no rows selected

SQL>

Ardından kullanıcı adını değiştirmek için bir arama yapın ve çıktıyı değiştirin.


DDL nesnesinin mevcut kullanıcıyı çift tırnak içine aldığını unutmayın; bu, mevcut kullanıcı adının değiştirilmesini çok basit hale getirir.
Andrew Wolfe

1
Başarılı olmak için yeni kullanıcı oluştururken ROLE_GRANT'ın DEFAULT_ROLE deyiminden önce gelmesi gerekir.
Theofilos

@Theofilos teşekkürler, düzenlendi
Betlista
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.