有没有办法找出 Oracle Dump 文件所需的必要用户、角色和权限?

有没有办法找出 Oracle Dump 文件所需的必要用户、角色和权限?

我负责导入这个我以前没有做过的旧 Oracle 转储文件,因此,负责导出该文件的人和该文件最初所在的服务器早已不存在了。

我对 Oracle 的了解有限,但据我所知,我不能随意恢复数据库;我需要拥有与它所使用的用户、角色和权限完全相同的设置。

问题是,我不知道那些是什么。

有没有办法找出 Oracle Dump 文件所需的必要用户、角色和权限?这些信息可能保存在转储文件中吗?

谢谢。

系统:

  • Windows 7的
  • Oracle 11g XE(尽管我相信转储文件来自 9g)

答案1

我创建一个包含所有相关角色和权限的视图。然后从视图中进行选择。

-- Create the dba_user_privs view:
CREATE OR REPLACE VIEW DBA_USER_PRIVS (USERNAME, ROLENAME, PRIVILEGE) AS 
 SELECT DECODE(SA1.GRANTEE#, 1, 'PUBLIC', U1.NAME), SUBSTR(U2.NAME,1,20),  
   SUBSTR(SPM.NAME,1,27)  
FROM SYS.SYSAUTH$ SA1, SYS.SYSAUTH$ SA2, SYS.USER$ U1,  
     SYS.USER$ U2, SYS.SYSTEM_PRIVILEGE_MAP SPM 
WHERE SA1.GRANTEE# = U1.USER# 
  AND SA1.PRIVILEGE# = U2.USER# 
  AND U2.USER# = SA2.GRANTEE# 
  AND SA2.PRIVILEGE# = SPM.PRIVILEGE 
UNION 
 SELECT U.NAME, NULL, SUBSTR(SPM.NAME,1,27) 
FROM SYS.SYSTEM_PRIVILEGE_MAP SPM, SYS.SYSAUTH$ SA, SYS.USER$ U 
WHERE SA.GRANTEE#=U.USER#  
  AND SA.PRIVILEGE#=SPM.PRIVILEGE ;

-- You can now see any of the privileges that are granted to any user:
--set lines 200
--select * from dba_user_privs where username='ALAN';
--col rolename format a8
--col username format a8

--USERNAME ROLENAME PRIVILEGE
---------- -------- ----------------------
--ALAN     DBA      MANAGE FILE GROUP
--ALAN     DBA      MANAGE SCHEDULER
--ALAN     DBA      MANAGE TABLESPACE
--ALAN     DBA      MERGE ANY VIEW
--ALAN     DBA      ON COMMIT REFRESH
--ALAN     DBA      QUERY REWRITE
--ALAN     DBA      READ ANY FILE GROUP
--ALAN     DBA      RESTRICTED SESSION
--ALAN     DBA      RESUMABLE
--ALAN     DBA      SELECT ANY DICTIONARY
--ALAN     DBA      SELECT ANY SEQUENCE
--ALAN     DBA      SELECT ANY TABLE
--ALAN     DBA      SELECT ANY TRANSACTION
--ALAN     DBA      UNDER ANY TABLE
--ALAN     DBA      UNDER ANY TYPE
--ALAN     DBA      UNDER ANY VIEW
--ALAN     DBA      UPDATE ANY TABLE
--ALAN              SELECT ANY DICTIONARY
--ALAN              UNLIMITED TABLESPACE

相关内容