如何使用 expdp 导出 Oracle 中的用户及其角色和系统权限?
How to export users in Oracle with its roles and system privileges using expdp?
我正在尝试在 Oracle 中导出 schema/user 及其角色和系统权限。我不想导出任何数据或任何 table。我尝试使用以下命令导出用户。
expdp system/system@gisdblocal include=user DIRECTORY = TestBack
logfile=test12.log DUMPFILE=test12.dmp SCHEMAS=test_replication
当我将其导入其他数据库或使用不同名称的同一数据库时,即
impdp system/system@gisdblocal DIRECTORY = TestBack DUMPFILE = test12.dmp
SCHEMAS = test_replication REMAP_SCHEMA =
test_replication:test_replication_copy
用户或模式已创建,但尚未授予任何角色或系统权限。
我这样做是因为我使用没有所需权限的用户创建了模式备份 DATAPUMP_IMP_FULL_DATABASE 或 DATAPUMP_EXP_FULL_DATABASE。当我在另一个数据库中恢复该备份时,它说用户不存在。因此,我想先创建一个具有相同权限的用户,然后再恢复备份。
使用SQL...
SELECT dbms_metadata.get_ddl('USER', :name)
FROM dual
UNION ALL
SELECT dbms_metadata.get_granted_ddl('ROLE_GRANT', grantee)
FROM dba_role_privs
WHERE grantee = :name
AND ROWNUM = 1
UNION ALL
SELECT dbms_metadata.get_granted_ddl('DEFAULT_ROLE', grantee)
FROM dba_role_privs
WHERE grantee = :name
AND ROWNUM = 1
UNION ALL
SELECT dbms_metadata.get_granted_ddl('SYSTEM_GRANT', grantee)
FROM dba_sys_privs sp,
system_privilege_map spm
WHERE sp.grantee = :name
AND sp.privilege = spm.name
AND spm.property <> 1
AND ROWNUM = 1
UNION ALL
SELECT dbms_metadata.get_granted_ddl('OBJECT_GRANT', grantee)
FROM dba_tab_privs
WHERE grantee = :name
AND ROWNUM = 1
UNION ALL
SELECT dbms_metadata.get_granted_ddl('TABLESPACE_QUOTA', username)
FROM dba_ts_quotas
WHERE username = :name
AND ROWNUM = 1
:name 是...您要重新创建的 USER 的绑定变量。
我正在尝试在 Oracle 中导出 schema/user 及其角色和系统权限。我不想导出任何数据或任何 table。我尝试使用以下命令导出用户。
expdp system/system@gisdblocal include=user DIRECTORY = TestBack
logfile=test12.log DUMPFILE=test12.dmp SCHEMAS=test_replication
当我将其导入其他数据库或使用不同名称的同一数据库时,即
impdp system/system@gisdblocal DIRECTORY = TestBack DUMPFILE = test12.dmp
SCHEMAS = test_replication REMAP_SCHEMA =
test_replication:test_replication_copy
用户或模式已创建,但尚未授予任何角色或系统权限。
我这样做是因为我使用没有所需权限的用户创建了模式备份 DATAPUMP_IMP_FULL_DATABASE 或 DATAPUMP_EXP_FULL_DATABASE。当我在另一个数据库中恢复该备份时,它说用户不存在。因此,我想先创建一个具有相同权限的用户,然后再恢复备份。
使用SQL...
SELECT dbms_metadata.get_ddl('USER', :name)
FROM dual
UNION ALL
SELECT dbms_metadata.get_granted_ddl('ROLE_GRANT', grantee)
FROM dba_role_privs
WHERE grantee = :name
AND ROWNUM = 1
UNION ALL
SELECT dbms_metadata.get_granted_ddl('DEFAULT_ROLE', grantee)
FROM dba_role_privs
WHERE grantee = :name
AND ROWNUM = 1
UNION ALL
SELECT dbms_metadata.get_granted_ddl('SYSTEM_GRANT', grantee)
FROM dba_sys_privs sp,
system_privilege_map spm
WHERE sp.grantee = :name
AND sp.privilege = spm.name
AND spm.property <> 1
AND ROWNUM = 1
UNION ALL
SELECT dbms_metadata.get_granted_ddl('OBJECT_GRANT', grantee)
FROM dba_tab_privs
WHERE grantee = :name
AND ROWNUM = 1
UNION ALL
SELECT dbms_metadata.get_granted_ddl('TABLESPACE_QUOTA', username)
FROM dba_ts_quotas
WHERE username = :name
AND ROWNUM = 1
:name 是...您要重新创建的 USER 的绑定变量。