Sao y người dùng cơ sở dữ liệu Oracle


17

Chúng tôi sẽ có các kiểm toán viên bên ngoài đến để thực hiện đánh giá trên cơ sở dữ liệu Oracle của chúng tôi. Họ sẽ chạy một công cụ để thực hiện đánh giá và vì thế, họ yêu cầu ID người dùng có thể kết nối với cơ sở dữ liệu và lấy thông tin từ nó.

Chúng tôi có một người dùng hiện có trong cơ sở dữ liệu cho việc này. Tuy nhiên, đó là ID sản xuất và chúng tôi không thể đủ khả năng để khóa nó. Chúng tôi muốn sao chép / sao chép ID này bao gồm cả vai trò và quyền của nó.

Có cách nào chúng ta có thể làm như vậy trong Oracle không?

Câu trả lời:


21

Tạo người dùng:

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

Vai trò mặc định:

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

Tài trợ hệ thống:

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

Tài trợ đối tượng:

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

Vai trò tài trợ:

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

Hạn ngạch:

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

Nếu bất kỳ mục nào ở trên không có đầu ra, bạn sẽ nhận được một ngoại lệ giống như thế này:

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>

Sau đó thực hiện tìm kiếm và thay thế trên đầu ra để thay đổi tên người dùng.


Lưu ý rằng thế hệ DDL kết thúc người dùng hiện tại trong dấu ngoặc kép; điều này làm cho việc thay thế tên người dùng hiện tại rất đơn giản.
Andrew Wolfe

1
ROLE_GRANT phải đi trước câu lệnh DEFAULT_ROLE khi tạo người dùng mới để thành công.
Theofilos

@Theofilos cảm ơn, đã chỉnh sửa
Betlista
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.