рдУрд░реЗрдХрд▓ рдбреЗрдЯрд╛рдмреЗрд╕ рдЕрдиреБрд╕рдВрдзрд╛рди рдХреЛ рд╕рд░рд▓ рдХреИрд╕реЗ рдХрд░реЗрдВ: рд▓рд┐рдкрд┐рдпреЛрдВ рдХрд╛ "рд╕рдЬреНрдЬрди рд╕реЗрдЯ"

рд╢реБрдн рджреЛрдкрд╣рд░ рд╣рдо рд░реЛрд╕реНрдЯреЗрд▓рдХреЙрдо рдХреЗ рдбреЗрдЯрд╛ рдкреНрд░рдмрдВрдзрди рдкреНрд░рднрд╛рдЧреЛрдВ рдореЗрдВ рд╕реЗ рдПрдХ рдкрд░ рд╕рд┐рд╕реНрдЯрдо рд╡рд┐рд╢реНрд▓реЗрд╖рдХреЛрдВ рдХреА рдПрдХ рдЯреАрдо рд╣реИрдВред рд╣рдорд╛рд░реА рдХрдВрдкрдиреА рдХреЗ рдкрд╛рд╕ 300 рд╕реЗ рдЕрдзрд┐рдХ рд╡рд┐рд╖рдо рдбреЗрдЯрд╛ рд╕реНрд░реЛрдд рд╣реИрдВ - рдЗрд╕ рддрд░рд╣ рдХреА рд╡рд┐рд╡рд┐рдзрддрд╛ рд╕рднреА рдХрдИ рдХреНрд╖реЗрддреНрд░реЛрдВ рдореЗрдВ рд░реЛрд╕реНрдЯреЗрд▓рдХреЙрдо рдХреЗ рдХрд╛рдо рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рд╣реИред рд╣рдо рдбреЗрдЯрд╛ рд╕реНрд░реЛрддреЛрдВ рдХрд╛ рдЕрдзреНрдпрдпрди рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рдпрджрд┐ рдЖрд╡рд╢реНрдпрдХ рд╣реЛ, рддреЛ рдЖрдВрд╢рд┐рдХ рд░реВрдк рд╕реЗ рд╕реНрдЯреЛрд░реЗрдЬ рд▓реВрдк рдкрд░ рдЕрдкрд▓реЛрдб рдХрд░реЗрдВред


рд╕рддрд╣ рдкрд░ рдЬрд┐рдЬреНрдЮрд╛рд╕рд╛ рд░реЛрд╡рд░ред рдЗрд╕рдХреЗ рдХрдИ рд╡рд┐рд╖рдо рдбреЗрдЯрд╛ рд╕реНрд░реЛрдд рднреА рд╣реИрдВред Therahnuma.com рд╕реЗ рд▓реА рдЧрдИ рдЫрд╡рд┐ред

рдЗрд╕ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдореЗрдВ, рджреЛ рдЙрдк-рдкреНрд░рдХрд╛рд░реЛрдВ рдХреЛ рдкреНрд░рддрд┐рд╖реНрдард┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ: рдЕрдкрдиреЗ рдЧреБрдгреЛрдВ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рд╕реНрд░реЛрдд рддрд╛рд▓рд┐рдХрд╛рдУрдВ рд╕реЗ рдбреЗрдЯрд╛ рдПрдХрддреНрд░ рдХрд░рдиреЗ рдФрд░ рдбреЗрдЯрд╛ рд╡реЗрдпрд░рд╣рд╛рдЙрд╕ рдХреЗ "рд░рд┐рд╕реАрд╡рд░реНрд╕" рддреИрдпрд╛рд░ рдХрд░рдиреЗ рд╡рд╛рд▓реА рд░рдгрдиреАрддрд┐ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рдирд╛ред рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдо рд╡рд┐рднрд┐рдиреНрди GUI рдФрд░ рд░рд┐рд╡рд░реНрд╕ рдЗрдВрдЬреАрдирд┐рдпрд░рд┐рдВрдЧ рдЯреВрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдЬрд╛рдирдХрд╛рд░реА рдПрдХрддреНрд░ рдХрд░рддреЗ рд╕рдордп, рдПрдХ рд╕рд┐рд╕реНрдЯрдо рд╡рд┐рд╢реНрд▓реЗрд╖рдХ DBMS рд╕реВрдЪрдирд╛ рддрд╛рд▓рд┐рдХрд╛рдУрдВ (рдореБрдЦреНрдп рд░реВрдк рд╕реЗ рдУрд░реЗрдХрд▓) рдХреЗ рд╕рд╣рд╛рдпрдХ рдкреНрд░рд╢реНрдиреЛрдВ рдХрд╛ рдПрдХ рдкреВрд▓ рд╣рд╛рд╕рд┐рд▓ рдХрд░рдирд╛ рд╢реБрд░реВ рдХрд░ рджреЗрддрд╛ рд╣реИред рдЗрд╕ рд▓реЗрдЦ рдореЗрдВ рдореИрдВ рд╣рдорд╛рд░реА рдЯреАрдо рджреНрд╡рд╛рд░рд╛ рдЙрдкрдпреЛрдЧ рдХреА рдЬрд╛рдиреЗ рд╡рд╛рд▓реА рдРрд╕реА рд▓рд┐рдкрд┐рдпреЛрдВ рдХреЗ "рд╕рдЬреНрдЬрди рд╕реЗрдЯ" рдХреЛ рд╕рд╛рдЭрд╛ рдХрд░реВрдВрдЧрд╛ред

рдЖрд░рдВрдн рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╕реВрдЪреАрдмрджреНрдз рд╕рднреА рд▓рд┐рдкрд┐рдпреЛрдВ рдХреА рдПрдХ рдЫреЛрдЯреА рд╡реНрдпрд╛рдЦреНрдпрд╛:

  • рдХрдИ рд╕реНрдХреНрд░рд┐рдкреНрдЯ xmlagg рдХрд╛ рдЙрдкрдпреЛрдЧ рдПрдЧреНрд░реАрдЧреЗрдЯ рд╕реНрдЯреНрд░рд┐рдВрдЧреНрд╕ рдХреЗ рд▓рд┐рдП рдХрд░рддреА рд╣реИрдВ, рдХреНрдпреЛрдВрдХрд┐ рд▓рд┐рд╕реНрдЯрд╛рдЧреЗрд╢рди рдХреЗ рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк рд▓рд┐рд╕реНрдЯреИрдЧ рдмрд╣реБрдд рд▓рдВрдмреЗ рд╕реНрдЯреНрд░рд┐рдВрдЧреНрд╕ рдХреЛ рд╕рдВрд╕рд╛рдзрд┐рдд рдирд╣реАрдВ рдХрд░ рд╕рдХрддрд╛ рд╣реИред
  • "рдкреНрд░рдХреНрд░рд┐рдпрд╛, рдХрд╛рд░реНрдп рдФрд░ рдкреИрдХреЗрдЬ" рдХреЛ рдЫреЛрдбрд╝рдХрд░ рд╕рднреА рд▓рд┐рдкрд┐рдпреЛрдВ рдореЗрдВ, рд▓рдХреНрд╖реНрдп рддрд╛рд▓рд┐рдХрд╛ рдХреЛ "рддрд╛рд▓рд┐рдХрд╛" рдмреНрд▓реЙрдХ рдореЗрдВ рдлрд╝рд┐рд▓реНрдЯрд░ рддрд╛рд▓рд┐рдХрд╛ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдпреЛрдЬрдирд╛ рдХрд╛ рдирд╛рдо рдФрд░ рддрд╛рд▓рд┐рдХрд╛ рдХрд╛ рдирд╛рдо рднрд░рд╛ рдЬрд╛рддрд╛ рд╣реИред
  • рдкреНрд░рддреНрдпреЗрдХ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдПрдХ рдпрд╛ рдЕрдзрд┐рдХ рдЙрдкрдпреЛрдЧ рдХреЗ рдорд╛рдорд▓реЛрдВ рдХреЗ рд╕рд╛рде рд╣реЛрддреА рд╣реИ, рд╡рд┐рдирд┐рд░реНрджреЗрд╢ рдХрд╛ рд╡рд┐рд╡рд░рдг (рдкрд░рд┐рдгрд╛рдо рд╕реЗрдЯ), рдФрд░ рдкреНрд░рдпреБрдХреНрдд рд╕рд┐рд╕реНрдЯрдо рддрд╛рд▓рд┐рдХрд╛рдУрдВ рдХреА рд╕реВрдЪреА (рдХрд┐рд╕реА рд╡рд┐рд╢реЗрд╖ рдбреЗрдЯрд╛рдмреЗрд╕ рдкрд░ рдЙрдкрдпреЛрдЧ рдХреА рд╕рдВрднрд╛рд╡рдирд╛ рдХрд╛ рдЖрдХрд▓рди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП)ред

рд╕реНрдХреНрд░рд┐рдкреНрдЯ "рддрд╛рд▓рд┐рдХрд╛рдУрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬрд╛рдирдХрд╛рд░реА"


рд╡рд┐рд╢рд┐рд╖реНрдЯрддрд╛ :
рд╕реНрддрдВрдн рдирд╛рдо
рдЯрд┐рдкреНрдкрдгреА
SCHEMA_NAME
рдбреЗрдЯрд╛ рдпреЛрдЬрдирд╛ рдХрд╛ рдирд╛рдо (OWNER)
TABLE_NAME
рдЯреЗрдмрд▓ рдХрд╛ рдирд╛рдо
рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ
рдЯреЗрдмрд▓ рдкрд░ рдЯрд┐рдкреНрдкрдгреА рдХрд░реЗрдВ
рдКрдБрдЪрд╛рдИ
рддрд╛рд▓рд┐рдХрд╛ рдореЗрдВ рдкрдВрдХреНрддрд┐рдпреЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ (рд▓рдЧрднрдЧ)
рдЪреМрдбрд╝рд╛рдИ
рд╕реНрддрдВрднреЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛
DATETIME_COLUMNS
рдирд╛рдо рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдЕрд╕реНрдерд╛рдпреА рдбреЗрдЯрд╛ рдкреНрд░рдХрд╛рд░реЛрдВ рдФрд░ рд╕реНрддрдВрднреЛрдВ рдХреЗ рд╕рд╛рде рдХреЙрд▓рдо, рд╕рдВрднрд╡рдд: рдЯрд╛рдЗрдо рд╕реНрдЯреИрдореНрдкреНрд╕ (рдкреИрдЯрд░реНрди -% рдЕрд╡рдзрд┐%,% рджрд┐рдирд╛рдВрдХ%,% рд╕рдордп%)
AVG_ROW_LEN
рдмрд╛рдЗрдЯреНрд╕ рдореЗрдВ рдФрд╕рдд рд╕реНрдЯреНрд░рд┐рдВрдЧ рдХреА рд▓рдВрдмрд╛рдИ
PART_KEY
рд╡рд┐рднрд╛рдЬрди рдХреЙрд▓рдо
SUBPART_KEY
рдЙрдкрдЦрдВрдб рдХреЙрд▓рдо

рдкреНрд░рдпреБрдХреНрдд рд╕рд┐рд╕реНрдЯрдо рдЯреЗрдмрд▓: all_tab_columns, all_tab_comments, all_tab_statistics, all_part_key_columns, all_subpart_key_columnsред

рд╕реНрд░реЛрдд рд╕рд┐рд╕реНрдЯрдо рд╕реЗ рдбреЗрдЯрд╛ рдЕрдкрд▓реЛрдб рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд░рдгрдиреАрддрд┐ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреНрд╡реЗрд░реА рдЙрдкрдпреЛрдЧреА рд╣реИред рдпрджрд┐ рдкреНрд░рд╛рдердорд┐рдХ рдХреБрдВрдЬреА рдХреЛ рд╡рд┐рдЪрд╛рд░ рдХреЗ рддрд╣рдд рдЯреЗрдмрд▓ рдкрд░ рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ, рддреЛ рдЙрд╕ рдкрд░ "рд╡реЗрддрди рд╡реГрджреНрдзрд┐" рдХреЗ рдмрд╛рдж рдХреЗ рдЖрд╡рдВрдЯрди рдХреЗ рд╕рд╛рде рдЕрдирд▓реЛрдбрд┐рдВрдЧ рдХреЛ рд╡реНрдпрд╡рд╕реНрдерд┐рдд рдХрд░рдирд╛ рд╕рдВрднрд╡ рд╣реИред рдпрджрд┐ рдХреЛрдИ рд╕рдордп рдЯрд┐рдХрдЯ рд╣реИ - рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдбреЗрдЯрд╛ рдбрд╛рд▓рдиреЗ рдпрд╛ рдЕрджреНрдпрддрди рдХрд░рдиреЗ рдХреА рдЬрд╛рдирдХрд╛рд░реА рд╡рд╛рд▓реЗ рддрдХрдиреАрдХреА рдХреНрд╖реЗрддреНрд░реЛрдВ рдореЗрдВ - рдЖрдк рдХреЗрд╡рд▓ рдХреБрдЫ рд╕рдордп рдХреЗ рд▓рд┐рдП рдкрд░рд┐рд╡рд░реНрддрд┐рдд / рдЬреЛрдбрд╝реЗ рдЧрдП рд░рд┐рдХреЙрд░реНрдб рдЕрдкрд▓реЛрдб рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рд╡рд┐рднрд╛рдЬрди рдХреА рд╕рдВрд░рдЪрдирд╛ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬрд╛рдирдХрд╛рд░реА рд╕рдорд╛рди рддрд╛рд▓рд┐рдХрд╛ рдмрдирд╛рддреЗ рд╕рдордп рдХрд╛рдо рдЖ рд╕рдХрддреА рд╣реИ, "рд░рд┐рд╕реАрд╡рд░"ред

рдЕрдиреБрд░реЛрдз рдирд┐рдХрд╛рдп:

with filter (owner, table_name) as (    select 'SCHEMA_NAME_1', t.*    from table(        sys.odcivarchar2list(            'TABLE_NAME_1'            , 'TABLE_NAME_2'        )    ) t    union all    select        owner        , table_name    from        all_tables    where owner = 'SCHEMA_NAME_2' ) select    a.owner as schema_name    , a.table_name    , e.comments    , b.height    , c.width    , d.datetime_columns    , b.avg_row_len    , p.part_key    , s.subpart_key from    filter a    left join (        select            owner            , table_name            , num_rows as height            , avg_row_len        from all_tab_statistics        where object_type = 'TABLE'    ) b        on            a.table_name = b.table_name            and a.owner = b.owner    left join (        select            owner            , table_name            , count(1) as width        from all_tab_columns        group by            owner            , table_name    ) c        on            a.table_name = c.table_name            and a.owner = c.owner    left join (        select            owner            , table_name            , listagg(                column_name || ' (' || data_type || ')'                , ', '            ) within group (order by column_id) as datetime_columns        from all_tab_columns        where            data_type = 'DATE'            or data_type like 'TIMESTAMP%'            or data_type like 'INTERVAL%'            or lower(column_name) like '%period%'            or lower(column_name) like '%date%'            or lower(column_name) like '%time%'        group by            owner            , table_name    ) d        on            a.table_name = d.table_name            and a.owner = d.owner    left join (        select            owner            , table_name            , comments        from all_tab_comments        where table_type = 'TABLE'    ) e        on            a.table_name = e.table_name            and a.owner = e.owner    left join (        select            owner            , name as table_name            , listagg(                column_name                , ', '            ) within group (order by column_position) as part_key        from all_part_key_columns        where object_type = 'TABLE'        group by            owner            , name    ) p        on            a.owner = p.owner            and a.table_name = p.table_name    left join (        select            owner            , name as table_name            , listagg(                column_name                , ', '            ) within group (order by column_position) as subpart_key        from all_subpart_key_columns        where object_type = 'TABLE'        group by            owner            , name    ) s        on            a.owner = s.owner            and a.table_name = s.table_name order by    e.owner    , e.table_name ; 

рд╕реНрдХреНрд░рд┐рдкреНрдЯ "рд╡рд┐рднрд╛рдЬрди рдФрд░ рдЙрдкрдкреНрд░рдХрд╛рд░"


рд╡рд┐рд╢рд┐рд╖реНрдЯрддрд╛:

рд╕реНрддрдВрдн рдирд╛рдо
рдЯрд┐рдкреНрдкрдгреА
SCHEMA_NAME
рдбреЗрдЯрд╛ рдпреЛрдЬрдирд╛ рдХрд╛ рдирд╛рдо (OWNER)
TABLE_NAME
рдЯреЗрдмрд▓ рдХрд╛ рдирд╛рдо
PART_KEY
рд╡рд┐рднрд╛рдЬрди рдХреЙрд▓рдо
PARTITION_NAME
рд╡рд┐рднрд╛рдЬрди рдХрд╛ рдирд╛рдо
PARTITION_POSITION
рд╡рд┐рднрд╛рдЬрди рд╕рдВрдЦреНрдпрд╛
PARTITION_HEIGHT
рд╡рд┐рднрд╛рдЬрди рдореЗрдВ рдкрдВрдХреНрддрд┐рдпреЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛
SUBPART_KEY
рдЙрдкрдЦрдВрдб рдХреЙрд▓рдо
SUBPARTITION_NAME
рдорд╛рддрд╣рдд рдХрд╛ рдирд╛рдо
SUBPARTITION_POSITION
рдЙрдкрдЦрдВрдб рд╕рдВрдЦреНрдпрд╛
SUBPARTITION_HEIGHT
рдПрдХ рдорд╛рддреГрддреНрд╡ рдореЗрдВ рдкрдВрдХреНрддрд┐рдпреЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛

рдкреНрд░рдпреБрдХреНрдд рд╕рд┐рд╕реНрдЯрдо рдЯреЗрдмрд▓: all_tab_partitions, all_tab_subpartitions, all_part_key_columns, all_subpart_key_columnsред

рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд╡рд┐рднрд╛рдЬрди рдХреА рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ (рдирд╛рдо, рдЖрдХрд╛рд░) рдХреЛ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧреА рд╣реЛрдЧреА рдЬрдм рдЙрдиреНрд╣реЗрдВ рд╕реАрдзреЗ рдбреЗрдЯрд╛ рд╕реНрд░реЛрддреЛрдВ рдХреЗ рд░реВрдк рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред

рдЕрдиреБрд░реЛрдз рдирд┐рдХрд╛рдп:

 with filter (owner, table_name) as (   select 'SCHEMA_NAME_1', t.*   from table(       sys.odcivarchar2list(           'TABLE_NAME_1'           , 'TABLE_NAME_2'       )   ) t   union all   select       owner       , table_name   from       all_tables   where owner = 'SCHEMA_NAME_2' ) select   f.owner as schema_name   , f.table_name   , p.part_key   , pc.partition_name   , pc.partition_position   , pc.num_rows as partition_height   , s.subpart_key   , sc.subpartition_name   , sc.subpartition_position   , sc.num_rows as subpartition_height from   filter f   join (       select           owner           , name as table_name           , listagg(               column_name               , ', '           ) within group (order by column_position) as part_key       from all_part_key_columns       where object_type = 'TABLE'       group by           owner           , name   ) p       on           f.owner = p.owner           and f.table_name = p.table_name   left join all_tab_partitions pc       on           p.table_name = pc.table_name           and p.owner = pc.table_owner   left join (       select           owner           , name as table_name           , listagg(               column_name               , ', '           ) within group (order by column_position) as subpart_key       from all_subpart_key_columns       where object_type = 'TABLE'       group by           owner           , name   ) s       on           p.owner = s.owner           and p.table_name = s.table_name   left join all_tab_subpartitions sc       on           f.owner = sc.table_owner           and f.table_name = sc.table_name           and pc.partition_name = sc.partition_name   order by       f.owner       , f.table_name ; 

рд╕реНрдХреНрд░рд┐рдкреНрдЯ "рддрд╛рд▓рд┐рдХрд╛рдУрдВ рдХреА рд░рдЪрдирд╛ рд░рдЪрдирд╛"


рд╡рд┐рд╢рд┐рд╖реНрдЯрддрд╛:

рд╕реНрддрдВрдн рдирд╛рдо
рдЯрд┐рдкреНрдкрдгреА
SCHEMA_NAME
рдбреЗрдЯрд╛ рдпреЛрдЬрдирд╛ рдХрд╛ рдирд╛рдо (OWNER)
TABLE_NAME
рдЯреЗрдмрд▓ рдХрд╛ рдирд╛рдо
COLUMN_ID
рдХреЙрд▓рдо рдЕрдиреБрдХреНрд░рдо рд╕рдВрдЦреНрдпрд╛
рд╕реНрддрдВрдн
рд╕реНрддрдВрдн рдирд╛рдо
DATA_TYPE
рдбреЗрдЯрд╛ рдкреНрд░рдХрд╛рд░
COLUMN_COMMENT
рд╕реНрддрдВрдн рдЯрд┐рдкреНрдкрдгреА
рд╕реНрдХреЗрд▓
рд╕реНрдХреЗрд▓ (рдбреЗрдЯрд╛ рдкреНрд░рдХрд╛рд░ NUMBER рдХреЗ рд▓рд┐рдП)
PRECISION
рд╕рдЯреАрдХрддрд╛ (рдбреЗрдЯрд╛ рдкреНрд░рдХрд╛рд░ NUMBER рдХреЗ рд▓рд┐рдП)
BYTE_LENGTH
рдмрд╛рдЗрдЯреНрд╕ рдореЗрдВ рдлрд╝реАрд▓реНрдб рдХреА рд▓рдВрдмрд╛рдИ
ENCODING
рдкрд╛рда рдбреЗрдЯрд╛ рдкреНрд░рдХрд╛рд░реЛрдВ рдХреЗ рд▓рд┐рдП рдПрдиреНрдХреЛрдбрд┐рдВрдЧ (CHAR, VARCHAR2, NCHAR, NVARCHAR2)
CHAR_LENGTH
рдкрд╛рда рдбреЗрдЯрд╛ рдкреНрд░рдХрд╛рд░реЛрдВ рдХреЗ рд▓рд┐рдП рдЕрдзрд┐рдХрддрдо рд╕реНрдЯреНрд░рд┐рдВрдЧ рд▓рдВрдмрд╛рдИ (CHAR, VARCHAR2, NCHAR, NVARCHAR2)
NOT_NULL
рдЭрдВрдбрд╛ "рдЖрд╡рд╢реНрдпрдХ"
IS_PRIMARY
рдЭрдВрдбрд╛ "рдкреНрд░рд╛рдердорд┐рдХ рдХреБрдВрдЬреА рдореЗрдВ рд╢рд╛рдорд┐рд▓"
DEFAULT_VALUE
рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдорд╛рди
COLUMN_IMPACT
рд╕реНрддрдВрднреЛрдВ рдХреЛ рд╕рдВрджрд░реНрднрд┐рдд рдХрд░рдиреЗ рд╡рд╛рд▓реА рдЕрдиреНрдп рддрд╛рд▓рд┐рдХрд╛рдУрдВ рдореЗрдВ рд╕реНрддрдВрднреЛрдВ рдХреА рдПрдХ рд╕реВрдЪреАред
COLUMN_DEPEND
рд╕реНрддрдВрдн рджреНрд╡рд╛рд░рд╛ рд╕рдВрджрд░реНрднрд┐рдд рдЕрдиреНрдп рддрд╛рд▓рд┐рдХрд╛рдУрдВ рдореЗрдВ рд╕реНрддрдВрднреЛрдВ рдХреА рд╕реВрдЪреАред

рдкреНрд░рдпреБрдХреНрдд рд╕рд┐рд╕реНрдЯрдо рдЯреЗрдмрд▓: all_tables, all_constraints, all_cons_columns, all_tab_columns, all_col_comments, v $ nls_parametersред

рдпрд╣ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдбреЗрдЯрд╛ рд╡реЗрдпрд░рд╣рд╛рдЙрд╕ рдореЗрдВ "рд░рд┐рд╕реАрд╡рд░" рддрд╛рд▓рд┐рдХрд╛рдУрдВ рдХреЛ рддреИрдпрд╛рд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧреА рд╣реЛрдЧреА рдЬрдм рддрд╛рд▓рд┐рдХрд╛ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╡рд┐рд╕реНрддреГрдд рдЬрд╛рдирдХрд╛рд░реА, рдЕрдиреНрдп рддрд╛рд▓рд┐рдХрд╛рдУрдВ рдХреЗ рд╕рд╛рде-рд╕рд╛рде рдкреВрд░реНрдг рд╡рд┐рд╢реЗрд╖рддрд╛ рд╕рдВрд░рдЪрдирд╛ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред рдлрд╝рд┐рд▓реНрдЯрд░ 2 рдЯреЗрдмрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдЯреЗрдмрд▓ рдХреЛ рдлрд╝рд┐рд▓реНрдЯрд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдЬрд┐рд╕рдХреЗ рд▓рд┐рдП рд▓рд┐рдВрдХ (рд╕реЗ рдФрд░) рдЦреЛрдЬреЗ рдЬрд╛рддреЗ рд╣реИрдВред рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ, рд╕рд┐рд╕реНрдЯрдо рд╕реНрдХреАрдореЛрдВ рдХреЛ рдЫреЛрдбрд╝рдХрд░, рд╕рднреА рдпреЛрдЬрдирд╛рдУрдВ рд╕реЗ рддрд╛рд▓рд┐рдХрд╛рдПрдВ рд▓реА рдЬрд╛рддреА рд╣реИрдВред

рдЕрдиреБрд░реЛрдз рдирд┐рдХрд╛рдп:

 with filter (owner, table_name) as (   select 'SCHEMA_NAME_1', t.*   from table(       sys.odcivarchar2list(           'TABLE_NAME_1'           , 'TABLE_NAME_2'       )   ) t   union all   select       owner       , table_name   from       all_tables   where owner = 'SCHEMA_NAME_2' ) , filter2 (owner, table_name) as (   select owner, table_name   from all_tables   where owner not in ('MDSYS', 'CTXSYS', 'SYSTEM', 'XDB', 'SYS') ) , refs as (   select       b.constraint_type as from_constraint_type       , b.constraint_name as from_constraint_name       , d.position as from_position       , d.column_name as from_column_name       , b.table_name as from_table_name       , b.owner as from_owner       , a.owner as to_owner       , a.table_name as to_table_name       , c.column_name as to_column_name       , c.position as to_position       , a.constraint_name as to_constraint_name       , a.constraint_type as to_constraint_type   from       all_constraints a       left join all_constraints b           on               a.r_constraint_name = b.constraint_name               and a.r_owner = b.owner       left join all_cons_columns c           on               a.constraint_name = c.constraint_name               and a.table_name = c.table_name               and a.owner = c.owner       left join all_cons_columns d           on               b.constraint_name = d.constraint_name               and b.table_name = d.table_name               and b.owner = d.owner       where           a.constraint_type = 'R'           and b.constraint_type in ('P', 'U')           and c.position = d.position ) , depends as (   select       rtrim(           xmlagg(               xmlelement(                   e                   , to_owner || '.' || to_table_name || '.' || to_column_name                   , ', '               ).extract('//text()')               order by to_owner           ).getclobval()           , ', '       ) as val       , from_owner as owner       , from_table_name as table_name       , from_column_name as column_name   from refs   where (to_owner, to_table_name) in (select * from filter2)   group by       from_table_name       , from_column_name       , from_owner ) , impacts as (   select       rtrim(           xmlagg(               xmlelement(                   e                   , from_owner || '.' || from_table_name || '.' || from_column_name                   , ', '               ).extract('//text()')               order by from_owner           ).getclobval()           , ', '       ) as val       , to_owner as owner       , to_table_name as table_name       , to_column_name as column_name   from refs   where (from_owner, from_table_name) in (select * from filter2)   group by       to_table_name       , to_column_name       , to_owner ) select   f.owner as schema_name   , f.table_name   , a.column_id   , a.column_name   , a.data_type   , b.comments as column_comment   /*         precision  ,    38       (      )       ,    scale,    0 (  ). */   , decode (       a.data_type       , 'NUMBER', nvl(a.data_scale, 0)       , ''   ) as scale   , decode (       a.data_type       , 'NUMBER', nvl(a.data_precision, 38)       , ''   ) as precision   /*             CHAR, VARCHAR2           DDL-   ,    NCHAR or NVARCHAR2        .*/   , a.data_length as byte_length   , case       when a.data_type in ('CHAR', 'VARCHAR2', 'NCHAR', 'NVARCHAR2')       then d.value   end as encoding   , case       when a.data_type in ('CHAR', 'VARCHAR2', 'NCHAR', 'NVARCHAR2')       then a.char_length --a.char_col_decl_length   end as char_length   , decode(a.nullable, 'Y', 'N', 'Y') as not_null   , decode(c.is_primary, 1, 'Y', 'N') as is_primary   , a.data_default as default_value   , impacts.val as column_impact   , depends.val as column_depend from   filter f   left join all_tab_columns a       on           f.owner = a.owner           and f.table_name = a.table_name   left join all_col_comments b       on           a.owner = b.owner           and a.table_name = b.table_name           and a.column_name = b.column_name   left join (       select           1 as is_primary           , owner           , table_name           , column_name       from all_cons_columns       where (owner, constraint_name) in (           select owner, constraint_name           from all_constraints           where constraint_type = 'P'       )   ) c       on           a.owner = c.owner           and a.table_name = c.table_name           and a.column_name = c.column_name   left join v$nls_parameters d       on decode (           a.character_set_name           , 'CHAR_CS', 'NLS_CHARACTERSET'           , 'NCHAR_CS', 'NLS_NCHAR_CHARACTERSET'           , a.character_set_name       ) = d.parameter   left join depends       on           a.owner = depends.owner           and a.table_name = depends.table_name           and a.column_name = depends.column_name   left join impacts       on           a.owner = impacts.owner           and a.table_name = impacts.table_name           and a.column_name = impacts.column_name order by   f.owner   , f.table_name   , a.column_id ; 

рд╕реНрдХреНрд░рд┐рдкреНрдЯ "рдкреНрд░рдХреНрд░рд┐рдпрд╛рдПрдВ, рдХрд╛рд░реНрдп рдФрд░ рдкреИрдХреЗрдЬ"


рд╡рд┐рд╢рд┐рд╖реНрдЯрддрд╛:
рд╕реНрддрдВрдн рдирд╛рдо
рдЯрд┐рдкреНрдкрдгреА
SCHEMA_NAME
рдбреЗрдЯрд╛ рдпреЛрдЬрдирд╛ рдХрд╛ рдирд╛рдо (OWNER)
рдирд╛рдо
рдкреНрд░рдХреНрд░рд┐рдпрд╛ / рдлрд╝рдВрдХреНрд╢рди / рдкреИрдХреЗрдЬ / рдкреИрдХреЗрдЬ рд╣реЗрдбрд░ рдХрд╛ рдирд╛рдо
рд╢рд░реАрд░
рд╢рд╡
рдкреНрд░рдХрд╛рд░
рдкреНрд░рдХрд╛рд░ (рдкреИрдХреЗрдЬ рдмреЙрдбреА, рдкреИрдХреЗрдЬ, рдлрдВрдХреНрд╢рди, рдкреНрд░рдХреНрд░рд┐рдпрд╛)
рд▓рд┐рдкрдЯреЗ
рдзреНрд╡рдЬ "рд╢рд░реАрд░ рдПрдиреНрдХреЛрдбреЗрдб рдпрд╛ рдирд╣реАрдВ (рд▓рд┐рдкрдЯреЗ)"

рдкреНрд░рдпреБрдХреНрдд рд╕рд┐рд╕реНрдЯрдо рдЯреЗрдмрд▓: all_source

рд╕реНрд░реЛрдд рдХрд╛ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХрд░рддреЗ рд╕рдордп, рд╕рд┐рд╕реНрдЯрдо рдореЗрдВ рдкрд░рд┐рд╕рдВрдЪрд╛рд░реА рдбреЗрдЯрд╛ рдкреНрд░рд╡рд╛рд╣ рдХрд╛ рдЕрдзреНрдпрдпрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдХрд╛рд░реНрдп рдЙрддреНрдкрдиреНрди рд╣реЛ рд╕рдХрддрд╛ рд╣реИред рд╕рдВрдХреБрд▓, рдХрд╛рд░реНрдпреЛрдВ рдФрд░ рдкреНрд░рдХреНрд░рд┐рдпрд╛рдУрдВ рдХреЗ рдХреЛрдб рдЖрдзрд╛рд░ рдХреЗ рдмрд┐рдирд╛ рдРрд╕рд╛ рдХрд░рдирд╛ рд▓рдЧрднрдЧ рдЕрд╕рдВрднрд╡ рд╣реИ, рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдЕрдкреВрд░реНрдг рдпрд╛ рд▓рд╛рдкрддрд╛ рдкреНрд░рд▓реЗрдЦрди рдХреЗ рд╕рд╛рдеред рд╕реБрд╡рд┐рдзрд╛ рдХреЗ рд▓рд┐рдП, рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд╕реВрдЪреАрдмрджреНрдз рд╡рд╕реНрддреБрдУрдВ рдХреЛ рддрд╛рд▓рд┐рдХрд╛ рдХреЗ рд░реВрдк рдореЗрдВ рджрд░реНрд╢рд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдХрдВрд╕реЛрд▓ рдЙрдкрдпреЛрдЧрд┐рддрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдХреНрд╡реЗрд░реА рдХрд╛ рдкрд░рд┐рдгрд╛рдо рдПрдХ рд╕реНрдЯреНрд░реАрдо рдХреЗ рд▓рд┐рдП рдЖрдЙрдЯрдкреБрдЯ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдФрд░ рдЖрдкрдХреЗ рдкрд╕рдВрджреАрджрд╛ рд╕рдВрдкрд╛рджрдХ рджреНрд╡рд╛рд░рд╛ рдЖрдЧреЗ рдХреЗ рдЕрдзреНрдпрдпрди рдХреЗ рд▓рд┐рдП рдПрдХ рд╕рд╛рдзрд╛рд░рдг рд╣реИрдВрдбрд▓рд░ (рдмреИрд╢ рд╕реНрдХреНрд░рд┐рдкреНрдЯ) рджреНрд╡рд╛рд░рд╛ рд░реАрдбрд╛рдпрд░реЗрдХреНрдЯ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рд╡рд┐рднрд┐рдиреНрди рд╣реИрдВрдбрд▓рд░ рдЖрдЙрдЯрдкреБрдЯ рд╕реНрдЯреНрд░реАрдо рдкрд░ "рддреНрд░рд┐рд╢рдВрдХреБ" рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВ - рд╕реМрдВрджрд░реНрдпреАрдХрд░рдг, рдЕрд▓рдВрдХреГрдд рдХрд░рдирд╛, рдЖрджрд┐ред

рдЕрдиреБрд░реЛрдз рдирд┐рдХрд╛рдп:

 select   t.owner as schema_name   , t.name as name   , xmlagg(       xmlelement(           e           , t.text           , ''       ).extract('//text()')       order by t.line asc   ).getclobval() as body   , f.wrapped   , t.type as type from (   select       owner, name, type       , case           when lower(text) like '%wrapped%' then 1           else 0       end as wrapped   from all_source   where type in (       'PACKAGE BODY'       , 'PACKAGE'       , 'FUNCTION'       , 'PROCEDURE'   )   and line = 1   and owner not in ('MDSYS', 'CTXSYS', 'SYSTEM', 'XDB', 'SYS') ) f join all_source t on   f.owner = t.owner   and f.name = t.name   and f.type = t.type group by   t.owner   , t.name   , t.type   , f.wrapped order by   t.owner   , t.name   , t.type ; 

рдирд┐рд╖реНрдХрд░реНрд╖


рдКрдкрд░ рд╡рд░реНрдгрд┐рдд рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд╣рдорд╛рд░реЗ рд╕рд┐рд╕реНрдЯрдо рд╡рд┐рд╢реНрд▓реЗрд╖рдХреЛрдВ рдХреЛ рдбреЗрдЯрд╛рдмреЗрд╕ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬрд╛рдирдХрд╛рд░реА рдЗрдХрдЯреНрдард╛ рдХрд░рдиреЗ рдХреЗ рдХрдИ рдирд┐рдпрдорд┐рдд рдХрд╛рд░реНрдпреЛрдВ рд╕реЗ рдЫреБрдЯрдХрд╛рд░рд╛ рдкрд╛рдиреЗ рдореЗрдВ рдорджрдж рдХрд░рддреА рд╣реИрдВ рдФрд░ рдЕрдзрд┐рдХ рд░рдЪрдирд╛рддреНрдордХ рдЪреАрдЬреЛрдВ рдкрд░ рдзреНрдпрд╛рди рдХреЗрдВрджреНрд░рд┐рдд рдХрд░рддреА рд╣реИрдВ, рдЬреИрд╕реЗ рд▓реЛрдбрд┐рдВрдЧ рд░рдгрдиреАрддрд┐ рдФрд░ "рд░рд┐рд╕реАрд╡рд░" рддрд╛рд▓рд┐рдХрд╛рдУрдВ рдХреА рд╕рдВрд░рдЪрдирд╛ред рдореБрдЭреЗ рдЙрдореНрдореАрдж рд╣реИ рдХрд┐ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЖрдкрдХреЗ рд▓рд┐рдП рднреА рдХрд╛рдо рдЖрдПрдЧреАред рдпрд╣ рдЬрд╛рдирдирд╛ рджрд┐рд▓рдЪрд╕реНрдк рд╣реЛрдЧрд╛ рдХрд┐ рдЖрдк рдЗрди рдФрд░ рдЗрд╕реА рддрд░рд╣ рдХреЗ рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рдХреИрд╕реЗ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рдХрд░рддреЗ рд╣реИрдВред

Source: https://habr.com/ru/post/hi442082/


All Articles