有不少的生产库是跑在与办公网络隔离的安全网段中, 因此很多的客户端工具, 如Toad, SQL Deveoper或PL/SQL Developer是不能直接连接数据库的, 许多习惯于用这些图形工具的人, 面对没有图形工具的场合时, 就会手忙脚乱, 有点束手无策, Oracle也不提供足够方便的命令, 就还是按照常规的方法写一个工具来玩一下.

    比如要查看SCOTT用户下EMP表的建表语句, 可以用如下命令.

D:\temp>getddl scott.emp

CREATE TABLE EMP (
  EMPNO                  NUMBER(4)  NOT NULL,
  ENAME                  VARCHAR2(10)  ,
  JOB                    VARCHAR2(9)  ,
  MGR                    NUMBER(4)  ,
  HIREDATE              DATE DEFAULT sysdate ,
  SAL                    NUMBER(7,2)  ,
  COMM                  NUMBER(7,2)  ,
  DEPTNO                NUMBER(2)
);

CREATE  UNIQUE  INDEX PK_EMP ON EMP (EMPNO) ONLINE;

    或者看一下某个索引的创建语法.

D:\temp>getddl SCOTT.PK_EMP

CREATE  UNIQUE  INDEX PK_EMP ON EMP (EMPNO) ONLINE;

    或者看一下某个视图的创建语法.

D:\temp>getddl TAB

CREATE OR REPLACE VIEW TAB (
  TNAME, TABTYPE, CLUSTERID)
AS
select o.name,
      decode(o.type#, 2, ‘TABLE’, 3, ‘CLUSTER’,
            4, ‘VIEW’, 5, ‘SYNONYM’), t.tab#
  from  sys.tab$ t, sys.obj$ o
  where o.owner# = userenv(‘SCHEMAID’)
  and o.type# >=2
  and o.type# <=5
  and o.linkname is null
  and o.obj# = t.obj# (+);

    现在提供下载的程序还是不完善的, 比如还不支持分区, 也不能查看触发器代码, 也不能生成SEQUENCE的创建语句, 本人并不保证现在提供的版本生成的建表语句是完全准确的, 因此不要用它来进行表结构的拷贝.

    也会将DBMS_METADATA包装一下, 提供一个独立的工具.