[20181203]drop table后如何获得表结构.txt

[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" ;



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