我们都知道在9i之前,要想获得建表和索引的语句是一件很麻烦的事。我们通常的做法都是通过export with rows=no来得到,但它的输出因为格式的问题并不能直接拿来用。而另一种方法就是写复杂的脚本来查询数据字典,但这对于一稍微复杂的对象,如IOT和嵌套表等,还是无法查到。
从数据字典中获得DDL语句是经常要用的,特别是在系统升级/重建的时候。在Oracle 9i中,我们可以直接通过执行dbms_metadata从数据字典中查处DDL语句。使用这个功能强大的工具,我们可以获得单个对象或整个SCHEMA的DDL语句。最好不过的是因为它使用起来很简单。
1、获得单个表和索引DDL语句的方法:
set heading off;
set echo off;
Set pages 999;
set long 90000;
spool get_single.sql
select dbms_metadata.get_ddl('TABLE','SZT_PQSO2','SHQSYS') from dual;
select dbms_metadata.get_ddl('INDEX','INDXX_PQZJYW','SHQSYS') from dual;
spool off; |
下面是输出。我们只要把建表/索引语句取出来在后面加个分号就可以直接运行了。
SQL> select dbms_metadata.get_ddl('TABLE','SZT_PQSO2','SHQSYS') from dual;
CREATE TABLE "SHQSYS"."SZT_PQSO2"
( "PQBH" VARCHAR2(32) NOT NULL ENABLE,
"ZJYW" NUMBER(10,0),
"CGSO" NUMBER(10,0) NOT NULL ENABLE,
"SOLS" VARCHAR2(17),
"SORQ" VARCHAR2(8),
"SOWR" VARCHAR2(8),
"SOCL" VARCHAR2(6),
"YWHM" VARCHAR2(10),
"YWLX" VARCHAR2(6)
) PCTFREE 10 PCTUSED 40 INITRANS 1 MAXTRANS 255 NOCOMPRESS LOGGING
STORAGE(INITIAL 1048576 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645
PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT)
TABLESPACE "DATA1"
SQL> select dbms_metadata.get_ddl('INDEX','INDXX_PQZJYW','SHQSYS') from dual;
CREATE INDEX "SHQSYS"."INDXX_PQZJYW" ON "SHQSYS"."SZT_PQSO2" ("ZJYW")
PCTFREE 10 INITRANS 2 MAXTRANS 255
STORAGE(INITIAL 1048576 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645
PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT)
TABLESPACE "DATA1"
SQL>
SQL> spool off; |
2、获得整个SCHEMA DDL语句的方法:
set pagesize 0
set long 90000
set feedback off
set echo off
spool get_schema.sql
connect shqsys/shqsys@hawk1;
SELECT DBMS_METADATA.GET_DDL('TABLE',u.table_name)
FROM USER_TABLES u;
SELECT DBMS_METADATA.GET_DDL('INDEX',u.index_name)
FROM USER_INDEXES u;
spool off; |
需要注意的是,当我们的表中有外健(参照约束)时,我们需要判别参照表之间的顺序,确保重建时按照合理的顺序进行。你可以通过查询dba_constraints and dba_cons_columns来确定各表之间的顺序,不再详述。
分享到:
相关推荐
我们都知道在9i之前,要想获得建表和索引的语句是一件很麻烦的事。我们可以通过 export with rows=no来得到,但它的输出因为格式的问题并不能直接拿来用。而另一种方法就是写复杂的脚本来查询数据字典,但这对于一...
获得单个表和索引DDL语句的方法: 使用dbms_metadata.get_ddl函数可以获取单个表或索引的DDL语句,该函数的参数包括对象类型、对象名称和schema名称。例如: ``` select dbms_metadata.get_ddl('TABLE','SZT_PQSO2...
总之,Oracle 9i通过`DBMS_METADATA`包提供了方便的方式来获取数据库对象的DDL语句,极大地简化了系统管理和维护的工作。不论是对单个对象的操作,还是对整个SCHEMA的管理,都能通过这个强大的工具高效完成。通过...
本教程“Oracle9i中文版基础培训教程”由赵松涛制作,旨在帮助初学者掌握Oracle 9i的基本操作和概念,对于那些从其他数据库系统(如MySQL)转而学习Oracle的人来说,这是一个宝贵的资源。 Oracle数据库系统的核心...
综上所述,Oracle 9i对DML和DDL的扩展主要集中在提升数据处理的效率和灵活性上,如多表插入的各种模式、外部表的使用以及创建约束和索引的优化。这些特性使得数据库管理员和开发人员能够更有效地管理大量数据,提高...
Oracle9i教程是一套针对数据库管理系统Oracle9i的详尽学习资源,旨在帮助初学者和有一定经验的用户深入了解和掌握这一强大的数据库系统。教程内容丰富,涵盖了从基础到高级的各种主题,无论你是刚接触Oracle的新手,...
在Oracle 9I中,你需要学习如何使用DML(数据操纵语言)进行插入、更新和删除数据,以及如何使用DDL(数据定义语言)创建和修改表结构。此外,SQL的查询功能,如SELECT语句,能帮助你从数据库中提取所需信息。 性能...
- SQL语言:深入学习SQL查询、DML操作(插入、更新、删除)、DDL语句(创建、修改、删除数据库对象)以及事务处理。 2. **Oracle 9i管理** - 数据库实例与启动关闭:掌握如何启动和关闭Oracle实例,理解实例和...
3. **数据库对象**:Oracle 9i包含多种数据库对象,如表、视图、索引、存储过程、触发器和游标等。理解这些对象的功能和用途是数据库管理的基础,例如,表用于存储数据,视图提供虚拟表,索引提高查询速度,而存储...
12. **分区与分片**:为了管理和优化大规模数据,Oracle 9i支持表和索引的分区,以及数据库的分片,这有助于提高查询性能和简化管理。 13. **备份与恢复**:Oracle 9i提供了全面的备份和恢复策略,包括在线备份、...
3. **SQL基础**:教授SQL语言的基本语法,如SELECT语句、DML(数据操纵语言)操作、DDL(数据定义语言)用于创建表和视图,以及索引和约束的管理。 4. **数据存储与逻辑结构**:阐述Oracle9i的数据文件、控制文件、...
1. 数据定义语言(DDL):在Oracle 9i中,DDL用于创建、修改和删除数据库对象,如表、视图、索引、存储过程等。创建表的关键语法包括指定列名、数据类型和约束条件,如NOT NULL、UNIQUE和PRIMARY KEY等。 2. 数据...
在Oracle 9i中,常见的DDL语句包括: 1. CREATE:用于创建新的数据库对象,如表格、用户、序列、索引等。 2. ALTER:用于修改已存在的数据库对象,如增加或删除表格的列,改变索引类型等。 3. DROP:用于删除不再...
Oracle9i全称为"Oracle9i Database",其中"9i"指的是第9代产品,并且强调了其在网络环境下的特性,特别是对Internet的集成和支持。此版本在数据管理、性能优化、可扩展性以及安全性等方面都有显著提升,为用户提供了...
3. **实际使用**:Oracle9i的实际使用包括数据的插入、查询、更新和删除(DML语句),以及数据库对象的创建如表、视图、索引等(DDL语句)。此外,还有事务管理、备份恢复策略、性能优化等内容。例如,通过SQL*Plus...
4. **SQL语言**:Oracle 9i支持SQL标准,包括SELECT、INSERT、UPDATE、DELETE等DML语句,以及CREATE、ALTER、DROP等DDL语句,用于创建和修改数据库对象。 5. **表和索引**:了解如何创建、修改和删除表,以及建立...