[20181203]drop table後如何獲得表結構.txt

lfree發表於2018-12-03

[20181203]drop table後如何獲得表結構.txt


--//別人問的問題,要恢復刪除的表,一些特殊的工具事先要知道表結構,這樣恢復方便一些.

--//實際上如果發現及時,可以使用as of查詢功能,確定表結構.透過例子說明:


1.環境:

SCOTT@book> @ ver1

PORT_STRING                    VERSION        BANNER

------------------------------ -------------- --------------------------------------------------------------------------------

x86_64/Linux 2.4.xx            11.2.0.4.0     Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - 64bit Production


SCOTT@book> create table empy as select * from emp;

Table created.


SCOTT@book> set numw 12

SCOTT@book> select sysdate,current_scn from v$database;

SYSDATE              CURRENT_SCN

------------------- ------------

2018-12-03 15:30:16  13815350216


SCOTT@book> drop table empy purge ;

Table dropped.


2.如何確定表結構,查詢dba_tab_columns:

--//drop table 的scn或者時間可以透過logminer 確定,我這裡省略.

--//執行如下:

SELECT column_name, data_type, data_length,DATA_PRECISION,DATA_SCALE,column_id 

    FROM dba_tab_columns AS OF SCN 13815350216

   WHERE owner = 'SCOTT' AND table_name = 'EMPY'

ORDER BY column_id;


COLUMN_NAME          DATA_TYPE   DATA_LENGTH DATA_PRECISION   DATA_SCALE    COLUMN_ID

-------------------- ---------- ------------ -------------- ------------ ------------

EMPNO                NUMBER               22              4            0            1

ENAME                VARCHAR2             10                                        2

JOB                  VARCHAR2              9                                        3

MGR                  NUMBER               22              4            0            4

HIREDATE             DATE                  7                                        5

SAL                  NUMBER               22              7            2            6

COMM                 NUMBER               22              7            2            7

DEPTNO               NUMBER               22              2            0            8

8 rows selected.


--//複製下來,稍微編輯一些就可以了.數字取DATA_PRECISION,字串取DATA_LENGTH,日期型別僅僅定義date就ok了.

--//對比表結構:

SCOTT@book> @ ddl scott.emp

C100

----------------------------------------------------------------------------------------------------

  CREATE TABLE "SCOTT"."EMP"

   (    "EMPNO" NUMBER(4,0),

        "ENAME" VARCHAR2(10),

        "JOB" VARCHAR2(9),

        "MGR" NUMBER(4,0),

        "HIREDATE" DATE,

        "SAL" NUMBER(7,2),

        "COMM" NUMBER(7,2),

        "DEPTNO" NUMBER(2,0),

         CONSTRAINT "PK_EMP" PRIMARY KEY ("EMPNO")

  USING INDEX PCTFREE 10 INITRANS 2 MAXTRANS 255 COMPUTE STATISTICS

  STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645

  PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1

  BUFFER_POOL DEFAULT FLASH_CACHE DEFAULT CELL_FLASH_CACHE DEFAULT)

  TABLESPACE "USERS"  ENABLE,

         CONSTRAINT "FK_DEPTNO" FOREIGN KEY ("DEPTNO")

          REFERENCES "SCOTT"."DEPT" ("DEPTNO") ENABLE

   ) SEGMENT CREATION IMMEDIATE

  PCTFREE 10 PCTUSED 40 INITRANS 1 MAXTRANS 255

 NOCOMPRESS LOGGING

  STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645

  PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1

  BUFFER_POOL DEFAULT FLASH_CACHE DEFAULT CELL_FLASH_CACHE DEFAULT)

  TABLESPACE "USERS" ;



來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/267265/viewspace-2222534/,如需轉載,請註明出處,否則將追究法律責任。

相關文章