背景:oracle数据库中有很多无效对象(这里以 视图举例) 使用dbms_metadata.get_ddl()函数可以做到
SQL> select owner, object_name, object_type from dba_objects where status = 'INVALID' and owner='GAC_GAEI_USER' and OBJECT_TYPE='VIEW'; OWNER OBJECT_NAME OBJECT_TYPE ------------------------------ -------------------------------------------------------------------------------------------------------------------------------- ------------------- GAC_GAEI_USER V_REG_INSU01_SEGMENT_LV02 VIEW GAC_GAEI_USER V_REG_TERM_MANFBRAND_CITY_Q VIEW GAC_GAEI_USER V_NE_VERSION_PRICE VIEW GAC_GAEI_USER V_NE_MANF_PRICE VIEW GAC_GAEI_USER V_NE_MARKET_PRICE VIEW GAC_GAEI_USER V_DEALER_QUARTER_CITY_NO_BRAND VIEW GAC_GAEI_USER V_PART_CUST_SRC VIEW GAC_GAEI_USER V_PART_MAINTAIN VIEW GAC_GAEI_USER V_SPARE_PART_PRICE VIEW GAC_GAEI_USER V_REG_INSU01_SEGMENT_LV03 VIEW GAC_GAEI_USER V_NE_SUB_MODEL_PRICE VIEW
SQL> SET PAGESIZE 0
SQL> SET LONG 1000
SQL> select dbms_metadata.get_ddl('VIEW','V_NE_MARKET_SALES','GAC_GAEI_USER') from dual;
DBMS_METADATA.GET_DDL('VIEW','V_NE_MARKET_SALES','GAC_GAEI_USER')
--------------------------------------------------------------------------------
CREATE OR REPLACE FORCE VIEW "GAC_GAEI_USER"."V_NE_MARKET_SALES" ("STANDARD_ID
", "YM_ID", "SALES_TYPE_ID", "FUEL_TYPE_ID", "BQ_SALES", "BQ_YEARACC_SALES") AS
select
STANDARD_ID,
YM_ID,
SALES_TYPE_ID,
FUEL_TYPE_ID,
SUM(BQ_SALES) AS BQ_SALES,
SUM(BQ_YEARACC_SALES) AS BQ_YEARACC_SALES
DBMS_METADATA.GET_DDL('VIEW','V_NE_MARKET_SALES','GAC_GAEI_USER')
--------------------------------------------------------------------------------
from FDW_NE_MANF_SALES
GROUP BY STANDARD_ID, YM_ID, SALES_TYPE_ID, FUEL_TYPE_ID
