Oracle OCP(22):查询表信息

收集表信息脚本

-- | PURPOSE  : Prompt the user for a schema and and table name then query all  |
-- |            metadata about the table.                                       |
-- | NOTE    : As with any code, ensure to test this script in a development    |
-- |            environment before attempting to run it in production.          |
-- +----------------------------------------------------------------------------+


SET PAGESIZE 9999
SET VERIFY  OFF
SET FEEDBACK OFF
SET LONG 9000

-- +----------------------------------------------------------------------------+
-- | PROMPT USER FOR SCHEMA AND TABLE                                           |
-- +----------------------------------------------------------------------------+

ACCEPT sch prompt 'Enter Schema (i.e. SCOTT) : '
ACCEPT tab prompt 'Enter Table  (i.e. EMP) : '


PROMPT
PROMPT +----------------------------------------------------------------------------+
PROMPT | TABLE INFORMATION                                                          |
PROMPT +----------------------------------------------------------------------------+

COLUMN owner              FORMAT A15                HEADING "Owner"
COLUMN table_name          FORMAT A30                HEADING "Table Name"
COLUMN tablespace_name    FORMAT A28                HEADING "Tablespace"
COLUMN last_analyzed      FORMAT A20                HEADING "Last Analyzed"
COLUMN num_rows            FORMAT 999,999,999        HEADING "# of Rows"

SELECT
    owner
  , table_name
  , tablespace_name
  , TO_CHAR(last_analyzed, 'DD-MON-YYYY HH24:MI:SS') last_analyzed
  , num_rows
FROM
    dba_tables
WHERE
      owner      = UPPER('&sch')
  AND table_name = UPPER('&tab')
/

PROMPT
PROMPT +----------------------------------------------------------------------------+
PROMPT | OBJECT INFORMATION                                                         |
PROMPT +----------------------------------------------------------------------------+

COLUMN object_id                                    HEADING "Object ID"
COLUMN data_object_id                                HEADING "Data Object ID"
COLUMN created            FORMAT A20                HEADING "Created"
COLUMN last_ddl_time      FORMAT A20                HEADING "Last DDL"
COLUMN status                                        HEADING "Status"

SELECT
    object_id
  , data_object_id
  , TO_CHAR(created, 'DD-MON-YYYY HH24:MI:SS')        created
  , TO_CHAR(last_ddl_time, 'DD-MON-YYYY HH24:MI:SS')  last_ddl_time
  , status
FROM
    dba_objects
WHERE
      owner      = UPPER('&sch')
  AND object_name = UPPER('&tab')
  AND object_type = 'TABLE'
/

PROMPT
PROMPT +----------------------------------------------------------------------------+
PROMPT | SEGMENT INFORMATION                                                        |
PROMPT +----------------------------------------------------------------------------+

COLUMN segment_type                                  HEADING "Segment Type"
COLUMN bytes              FORMAT 9,999,999,999,999  HEADING "Bytes"
COLUMN extents            FORMAT 999,999,999        HEADING "Extents"
COLUMN initial_extent      FORMAT 999,999,999,999    HEADING "Initial|Extent"
COLUMN next_extent        FORMAT 999,999,999,999    HEADING "Next|Extent"
COLUMN min_extents        FORMAT 999                HEADING "Min|Extents"
COLUMN max_extents        FORMAT 9,999,999,999      HEADING "Max|Extents"
COLUMN pct_increase        FORMAT 999.00            HEADING "Pct|Increase"
COLUMN freelists                                    HEADING "Free|Lists"
COLUMN freelist_groups                              HEADING "Free|List Groups"

SELECT
    segment_type    segment_type
  , bytes/1024/1024  Mbytes
  , extents          extents
  , initial_extent  initial_extent
  , next_extent      next_extent
  , min_extents      min_extents
  , max_extents      max_extents
  , pct_increase    pct_increase
  , freelists        freelists
  , freelist_groups  freelist_groups
FROM
    dba_segments
WHERE
      owner        = UPPER('&sch')
  AND segment_name = UPPER('&tab')
/


PROMPT
PROMPT +----------------------------------------------------------------------------+
PROMPT | COLUMNS                                                                    |
PROMPT +----------------------------------------------------------------------------+

COLUMN column_name        FORMAT A20                HEADING "Column Name"
COLUMN data_type          FORMAT A25                HEADING "Data Type"
COLUMN nullable            FORMAT A13                HEADing "Null?"

SELECT
    column_name
  , DECODE(nullable, 'Y', ' ', 'NOT NULL') nullable
  , DECODE(data_type
              , 'RAW',      data_type || '(' ||  data_length || ')'
              , 'CHAR',    data_type || '(' ||  data_length || ')'
              , 'VARCHAR',  data_type || '(' ||  data_length || ')'
              , 'VARCHAR2', data_type || '(' ||  data_length || ')'
              , 'NUMBER', NVL2(  data_precision
                                , DECODE(    data_scale
                                            , 0
                                            , data_type || '(' || data_precision || ')'
                                            , data_type || '(' || data_precision || ',' || data_scale || ')'
                                  )
                                , data_type)
              , data_type
    ) data_type
FROM
    dba_tab_columns
WHERE
      owner      = UPPER('&sch')
  AND table_name = UPPER('&tab')
ORDER BY
    column_id
/


PROMPT
PROMPT +----------------------------------------------------------------------------+
PROMPT | CONSTRAINTS                                                                |
PROMPT | UNCOMMENT THIS SECTION FROM THE SCRIPT TO GET THE INFO ABOUT CONST        |
PROMPT +----------------------------------------------------------------------------+
PROMPT

COLUMN constraint_name    FORMAT A18                HEADING "Constraint Name"
COLUMN constraint_type    FORMAT A11                HEADING "Constraint|Type"
COLUMN search_condition    FORMAT A15                HEADING "Search Condition"
COLUMN r_constraint_name  FORMAT A20                HEADING "R / Constraint Name"
COLUMN delete_rule        FORMAT A11                HEADING "Delete Rule"
COLUMN status                                        HEADING "Status"

BREAK ON constraint_name ON constraint_type

SELECT
    a.constraint_name
  , DECODE(a.constraint_type
            , 'P', 'Primary Key'
            , 'C', 'Check'
            , 'R', 'Referential'
            , 'V', 'View Check'
            , 'U', 'Unique'
            , a.constraint_type
    ) constraint_type
  , b.column_name
  , a.search_condition
  , NVL2(a.r_owner, a.r_owner || '.' ||  a.r_constraint_name, null) r_constraint_name
  , a.delete_rule
  , a.status
FROM
    dba_constraints  a
  , dba_cons_columns b
WHERE
      a.owner            = UPPER('&sch')
  AND a.table_name      = UPPER('&tab')
  AND a.constraint_name  = b.constraint_name
  AND b.owner            = UPPER('&sch')
  AND b.table_name      = UPPER('&tab')
ORDER BY
    a.constraint_name
  , b.position
/


SET PAGESIZE 9999
SET VERIFY  OFF
SET FEEDBACK ON
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值