一,user_objects
作用:記錄了用戶使用的所有對象,根據Object_type可以查看所有對象信息;
比如:
select * from user_objects o where object_type='PACKAGE' ---查看所有的包對象;
select distinct(o.OBJECT_TYPE) from user_objects o
字段說明:
created:對象的創建時間;
last_ddl_time:跟對象相關的(如,如果此對象是表,則將該表的select權限賦給其他用戶也會改變這個字段的值)最後ddl操作的執行時間;
timestamp:對象自身結構發生改變的時間,比如刪除字段、添加字段等;
status:對象狀態。
查看對象內容
--查看序列的DDL語句
select dbms_metadata.get_ddl('SEQUENCE',u.object_name) from user_objects u where object_type='SEQUENCE' ;
--查看存儲過程的DDL
select dbms_metadata.get_ddl('PROCEDURE',u.object_name) from user_objects u where object_type='PROCEDURE' ;
--查看包的DDL
select dbms_metadata.get_ddl('PACKAGE',u.object_name) from user_objects u where object_type='PACKAGE'
--查看包的觸發器
select dbms_metadata.get_ddl('TRIGGER',u.object_name) from user_objects u where object_type='TRIGGER'
select dbms_metadata.get_ddl('TABLE',u.object_name) from user_objects u where object_type='TABLE'
select dbms_metadata.get_ddl('INDEX',u.object_name) from user_objects u where object_type='INDEX'
二,ALL_DEPENDENCIES
作用:保存的是用戶可存取的對象之間的從屬關係。
主要字段:
OWNER 對象的所有者;
REFERENCED_OWNER :被引用對象的所有者;
REFERENCED_NAME: 被應用對的名稱
REFERENCED_TYPE: 被應用對象的類型
REFERENCED_LINK_NAME: 被引用對象是遠程連接是的數據庫名 比如DBLINK
DEPENDENCY_TYPE:從屬類型 ,強弱關係, 比如表爲強關係,表不存在,存儲過程是編譯不過去的
sql:
SELECT *
FROM user_dependencies
WHERE name = 'PKG_TEST'
and referenced_type IN ('TABLE', 'SEQUENCE') ---查看PKG_TEST包所有的表和序列;
三,常用SQL
---查看系統內每個表所使用的表
select object_name,
object_type,
created,
last_ddl_time,
status,
t.use_tables
from user_objects u
left join (SELECT name,
type,
wm_concat(referenced_owner || '.' || referenced_name) use_tables
FROM user_dependencies
WHERE referenced_type IN ('TABLE')
and type in ('PACKAGE BODY', 'PACKAGE')
group by name, type) t on u.object_name = t.name
and u.object_type = t.type
where object_type in ('PACKAGE BODY', 'PACKAGE')