ทำสำเนาผู้ใช้ฐานข้อมูล Oracle


17

เราจะให้ผู้ตรวจสอบภายนอกมาตรวจสอบฐานข้อมูล Oracle ของเรา พวกเขาจะใช้เครื่องมือในการตรวจสอบและพวกเขาต้องการ ID ผู้ใช้ที่สามารถเชื่อมต่อกับฐานข้อมูลและรับข้อมูลจากมัน

เรามีผู้ใช้ที่มีอยู่ในฐานข้อมูลสำหรับสิ่งนี้ อย่างไรก็ตามมันเป็นรหัสการผลิตและเราไม่สามารถล็อคเอาไว้ได้ เราต้องการโคลน / ทำซ้ำ ID นี้รวมถึงบทบาทและสิทธิ์

มีวิธีที่เราสามารถทำได้ใน Oracle หรือไม่?

คำตอบ:


21

การสร้างผู้ใช้:

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

บทบาทเริ่มต้น:

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

ทุนระบบ:

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

ทุนวัตถุ:

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

บทบาทที่ได้รับ:

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

โควต้า:

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

หากข้อใดข้อหนึ่งข้างต้นไม่มีผลลัพธ์คุณจะได้รับข้อยกเว้นที่มีลักษณะดังนี้:

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>

จากนั้นทำการค้นหาและแทนที่บนเอาต์พุตเพื่อเปลี่ยนชื่อผู้ใช้


โปรดทราบว่าการสร้าง DDL ล้อมรอบผู้ใช้ที่มีอยู่ในเครื่องหมายคำพูดคู่ ทำให้การเปลี่ยนชื่อผู้ใช้ที่มีอยู่ง่ายมาก
Andrew Wolfe

1
ROLE_GRANT จะต้องนำหน้าคำสั่ง DEFAULT_ROLE เมื่อสร้างผู้ใช้ใหม่เพื่อที่จะประสบความสำเร็จ
Theofilos

@Theofilos ขอบคุณแก้ไข
Betlista
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.