Oracle获取数据库中的对象创建语句

背景: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


请使用浏览器的分享功能分享到微信等