これはほとんど完全に自動化したくないという問題です。以下のコードは関連するオブジェクトを見つけ、DDLを返します。しかし、コードの変更とコードの実行は手動で行う必要があります。
コードを正しく解析して変更することは難しい問題です。使用している検索文字列は、12.2のSYSスキーマで多くの誤検出を返します。おそらくそれらのオブジェクトを変更したくないでしょう。
--Create DDL statements that contain "%environment_v%".
--These statements must be modified to include the new code.
select owner, object_type, object_name, dbms_metadata.get_ddl(object_type, object_name, owner)
from
(
--Convert DBA_OBJECTS.OBJECT_TYPE to DBMS_METADATA object type:
select
owner,
--Java object names may need to be converted with DBMS_JAVA.LONGNAME.
--That code is not included since many database don't have Java installed.
object_name,
decode(object_type,
'DATABASE LINK', 'DB_LINK',
'JOB', 'PROCOBJ',
'RULE SET', 'PROCOBJ',
'RULE', 'PROCOBJ',
'EVALUATION CONTEXT', 'PROCOBJ',
'PACKAGE', 'PACKAGE_SPEC',
'PACKAGE BODY', 'PACKAGE_BODY',
'TYPE', 'TYPE_SPEC',
'TYPE BODY', 'TYPE_BODY',
'MATERIALIZED VIEW', 'MATERIALIZED_VIEW',
'QUEUE', 'AQ_QUEUE',
'JAVA CLASS', 'JAVA_CLASS',
'JAVA TYPE', 'JAVA_TYPE',
'JAVA SOURCE', 'JAVA_SOURCE',
'JAVA RESOURCE', 'JAVA_RESOURCE',
object_type
) object_type
from dba_objects
where
--These objects are included with other object types.
object_type not in ('INDEX PARTITION','INDEX SUBPARTITION',
'LOB','LOB PARTITION','TABLE PARTITION','TABLE SUBPARTITION')
--Ignore system-generated types that support collection processing.
and not (object_type = 'TYPE' and object_name like 'SYS_PLSQL_%')
--Exclude nested tables, their DDL is part of their parent table.
and (owner, object_name) not in (select owner, table_name from dba_nested_tables)
--Exclude overflow segments, their DDL is part of their parent table.
and (owner, object_name) not in (select owner, table_name from dba_tables where iot_type = 'IOT_OVERFLOW')
--Only look for objects with a specific variable.
and (owner, object_name, object_type) in
(
select owner, name, type
from dba_source
where lower(text) like '%environment_v%'
)
)
order by owner, object_type, object_name;
上記クエリは、this answerに基づいています。その答えは10回編集されています。私は何千ものオブジェクトに使っていますので、DDLを生成するための出発点になるはずです。
理想的には、バージョン管理されたテキストファイルで、データベース上で直接変更することはありません。