Parece que lo que desea es poder enumerar todos los paquetes que potencialmente pueden tener estado.
Lo que está buscando son solo paquetes que tengan variables o constantes globales. Para un solo paquete, esto es bastante simple mediante inspección. Sin embargo, para buscar todos los paquetes en un esquema, puede usar PL/Scope:
Primero, inicie sesión como propietario del esquema, active PL/Scope en su sesión:
alter session set plscope_settings='IDENTIFIERS:ALL';
Luego, vuelva a compilar todos los cuerpos de sus paquetes.
Luego, ejecute esta consulta para encontrar todas las variables y constantes declaradas a nivel de paquete:
select object_name AS package,
type,
name AS variable_name
from user_identifiers
where object_type IN ('PACKAGE','PACKAGE BODY')
and usage = 'DECLARATION'
and type in ('VARIABLE','CONSTANT')
and usage_context_id in (
select usage_id
from user_identifiers
where type = 'PACKAGE'
);
Sugeriría que la lista resultante de paquetes sea su objetivo.
Si está en 11gR2, las constantes ya no causan este problema, por lo que usaría esta consulta en su lugar:
select object_name AS package,
type,
name AS variable_name
from user_identifiers
where object_type IN ('PACKAGE','PACKAGE BODY')
and usage = 'DECLARATION'
and type = 'VARIABLE'
and usage_context_id in (
select usage_id
from user_identifiers
where type = 'PACKAGE'
);