Import的导入模式 与数据的导出相比,Oracle也提供四种导入模式。 全库导入模式(Full):导入整个数据库。 用户导入模式(User):导入指定用户的数据。 表导入模式(Table):导入指定的表。 表空间(Tablespace)导入模式:导入表空间,用于可移动表空间(Transportable Tablespace)。 Import的导入参数介绍。 SHOW=Y 表示只显示导出文件的内容,并不真正执行数据导入。 GRANTS 表示是否导入权限,GRANTS=Y表示导入授权。 HELP表示是否显示帮助信息,HELP=Y表示显示帮助信息。 BUFFER指定缓冲区的大小。 CHARSET=ASCII/EBCDIC指定导出文件导出时使用的字符集。 COMMIT指定一组处理完是否提交,COMMIT=Y表示提交。 COMPILE指定是否在Import时对包、过程、函数进行编译,COMPILE=N表示这 些对象只有第一次被使用时进行编译。 CONSTRAINTS决定是否导入约束,CONSTRAINTS=Y表示导入约束。 TRANSPORT_TABLESPACE 决定是否导入可移动表空间。 DATAFILES列出被导入到目标数据库中的数据文件。 DESTROY决定是否覆盖已经存在的数据文件,DESTROY=N表示不覆盖,但是会返回错误。在裸设备中,即使DESTROY=N,已经存在的数据文件仍然要被覆盖。 FEEDBACK表示处理完成多少行,在屏幕显示一个圆点,主要用于查看导入进度。 FILE指定导入文件。 FILESIZE指定导入文件的最大尺寸,指定的值必须与Export中指定的值相同。 FROMUSER指定只导入哪些模式的对象。 TOUSER指定数据被导入到哪些用户模式。 FULL指定是否执行全库导入。 IGNORE指定是否忽略创建对象时的错误。若IGNORE=Y,则出现问题的表将被跳过。 INDEXES指定是否导入索引。 INDEXFILE指定用于创建索引的脚本文件的名字,在导入时不创建索引,把创建索引的SQL语句写入该文件,当导入完成以后,利用该脚本重建索引。 LOG指定日志文件的名字及路径。 RECORDLENGTH指定记录的长度。 RESUMABLE指定是否可以使用可恢复空间功能,启用可恢复空间的功能,即在Import时,如果空间不足,Import并不会因为空间不足产生错误而退出,而是把Import挂起,如果系统又得到空余空间,Import将继续运行。 RESUMABLE_NAME指定一个名字,用于标识挂起的的语句。 RESUMABLE_TIMEOUT指定挂起多长时间后,如果空间问题还没有解决,Import将会退出。 SKIP_UNUSABLE_INDEXES指定是否跳过被标识为UNUSABLE的索引,这些索引的维护要等到导入完成以后。 STATISTICS指定统计的生成方法,ALWAYS表示无论统计是否有问题,都导入统计;NONE表示不导入统计,也不重新生成统计;SAFE表示只导入没有问题的统计;RECACULATE表示重新生成统计。 TABLES指定要被导入的表,与Export中不同的是,在这里不能指定模式名(如SYSTEM.A),模式名用参数FROMUSER指定。 TOID_NOVALIDATE=([SCHEMANAME.]TYPENAME[,...])指定不进行类型唯一标识符(TOID)验证的类型。 TABLESPACES指定被导入的表空间,TABLESPACES通常和TRANSPORT_ TABLESPACE联合使用。 TTS_OWNERS列出拥有可传输表空间中数据的用户。 VOLSIZE指定磁带卷上每个导出文件的最大尺寸。 实务364 如何把数据导入到另外一个表空间 创建表。其中,BTBS是新的表空间。在使用Import工具导入数据的时候, 设置ignore=y。在参数TABLES中指定要被导入的表即可。 CREATE TABLE student ( ID NUMBER(5), FIRST_NAME VARCHAR2(20), LAST_NAME VARCHAR2(20), MAJOR VARCHAR2(30), CURRENT_CREDITS NUMBER(3) ) tablespace BTBS; imp tar1/wy file=tt rows=n tables=k fromuser=tar1 ignore=y ; 这里就只导入表k中的数据。DUMP文件中的其他表没有被导入。 查看数据库。 SQL> SELECT * FROM k; no rows selected 实务366 如何只导入一个用户的数据 联合使用参数fromuser和参数touser。Fromuser指定要被导入的数据的属主,touser参数指定数据将被导入哪个用户模式。 例如: imp tar1/wy file=fulldb fromuser=tar1 touser=tar2 rows=y ignore=y; Import: Release 9.0.1.1.1 - Production on Sat Aug 26 19:08:23 2006 (c) Copyright 2001 Oracle Corporation. All rights reserved. Connected to: Oracle9i Enterprise Edition Release 9.0.1.1.1 - Production With the Partitioning option JServer Release 9.0.1.1.1 - Production Export file created by Export:V09.00.01 via conventional path Warning: the objects were Exported by SYSTEM, not by you Import done in WE8ISO8859P1 character set and AL16UTF16 NCHAR character set Import server uses ZHS16GBK character set (possible charset conversion) . . Importing table "K" 1000 rows Imported Import terminated successfully without warnings. 上面的参数fromuser=tar1表示只导入用户tar1的数据,DUMP文件中其他用户的数据不会被导入。 如何把表空间从一个数据库移动到另外一个数据库 1)以用户sys的身份登录数据库。 SQL> CONNECT sys as SYSDBA Enter password: Connected. (2)检查表空间是否自我包容,检查的结果将会放到视图TRANSPORT_SET_ VIOLATIONS中。 SQL> EXECUTE dbms_tts.transport_set_check('product,indtbs', TRUE); PL/SQL procedure successfully completed. 其中,product与indtbs是要被导出的表空间。执行过程TRANSPORT_SET_CHECK必须要有EXECUTE_CATALOG_ROLE权限。 (3)查询视图。 SQL> SELECT * FROM TRANSPORT_SET_VIOLATIONS; 如果查询结果为0,说明表空间是自我包容的。 如果出现类似下面的信息,则说明表空间不是自我包容的。 VIOLATIONS ------------------------------------------------------------------------------- Index TEST.SYS_C005112 in tablespace USERS enforces primary constriants of table TEST.student2 in tablespace PRODUCT Index TEST2.SYS_C005128 in tablespace USERS enforces primary constriants of table TEST2.student2 in tablespace PRODUCT 这里给出表空间不自我包容的详细信息。 (4)根据上面的提示信息,解决表空间的不自我包容性问题。 执行表空间的导出。 (1)把要被导出的表空间设成只读。 SQL> ALTER TABLESPACE product read only; Tablespace altered. SQL> ALTER TABLESPACE indtbs read only; Tablespace altered. (2)导出表空间(需要SYSDBA权限)。 E:/oracle9i/BIN>exp 'sys/wy as SYSDBA' TRANSPORT_TABLESPACE=y TABLESPACES= (product,indtbs) TRIGGERS=y CONSTRAINTS=n GRANTS=n FILE=G:/temp/TB.dmp Export: Release 9.0.1.1.1 - Production on Sat Aug 26 16:40:31 2006 (c) Copyright 2001 Oracle Corporation. All rights reserved. Connected to: Oracle9i Enterprise Edition Release 9.0.1.1.1 - Production With the Partitioning option JServer Release 9.0.1.1.1 - Production Export done in WE8ISO8859P1 character set and AL16UTF16 NCHAR character set server uses ZHS16GBK character set (possible charset conversion) Note: table data (rows) will not be Exported Note: grants on tables/views/sequences/roles will not be Exported Note: constraints on tables will not be Exported About to Export transportable tablespace metadata... For tablespace PRODUCT ... . Exporting cluster definitions . Exporting table definitions . . Exporting table K For tablespace INDTBS ... . Exporting cluster definitions . Exporting table definitions . . Exporting table SS . Exporting triggers . end transportable tablespace metadata Export Export terminated successfully without warnings. 这里只导出数据字典的信息,并没有导出表中的数据,表的数据还是放在数据文件中。