AJM*_*AJM 50 oracle plsql oracle9i
我正在比较三个Oracle模式.
我想获得每个数据库中使用的所有函数和过程的列表.这可以通过查询吗?(最好包括一个关于它们是否编译的标志)
理想情况下,使用一个标志来指示函数/过程是否在每个模式中都是很好的.但即使只是第一位也比手动检查每个模式更好.
Eri*_*ler 101
SELECT * FROM ALL_OBJECTS WHERE OBJECT_TYPE IN ('FUNCTION','PROCEDURE','PACKAGE')
Run Code Online (Sandbox Code Playgroud)
列STATUS告诉您对象是VALID还是INVALID.如果它无效,你必须尝试重新编译,ORACLE不能告诉你它是否会起作用.
对dba_arguments,dba_errors,dba_procedures,dba_objects,dba_source,dba_object_size进行描述.其中每个都有部分图片,用于查看程序和功能.
对于包的dba_objects中的object_type也是定义的'PACKAGE'和正文的'PACKAGE BODY'.
如果要比较同一数据库上的模式,请尝试:
select * from dba_objects
where schema_name = 'ASCHEMA'
and object_type in ( 'PROCEDURE', 'PACKAGE', 'FUNCTION', 'PACKAGE BODY' )
minus
select * from dba_objects
where schema_name = 'BSCHEMA'
and object_type in ( 'PROCEDURE', 'PACKAGE', 'FUNCTION', 'PACKAGE BODY' )
Run Code Online (Sandbox Code Playgroud)
并切换ASCHEMA和BSCHEMA的订单.
如果您还需要查看触发器并比较模式之间的其他内容,您应该查看关于Ask Tom有关比较模式的文章