利用Export可将数据从数据库中提取出来,利用Import则可将提取出来的数据送回Oracle数据库中去。  
    1. 简单导出数据(Export)和导入数据(Import) 
    Oracle支持三种类型的输出:  
    (1)表方式(T方式),将指定表的数据导出。 
    (2)用户方式(U方式),将指定用户的所有对象及数据导出。 
    (3)全库方式(Full方式),将数据库中的所有对象导出。 
    数据导出(Import)的过程是数据导入(Export)的逆过程,它们的数据流向不同。  
 
通过输入 EXP 命令和用户名/口令,您可以
在用户 / 口令之后的命令:
 
实例: EXP SCOTT/TIGER
 
或者,您也可以通过输入跟有各种参数的 EXP 命令来控制“导出”
的运行方式。要指定参数,您可以使用关键字:
 
格式: EXP KEYWORD=value 或 KEYWORD=(value1,value2,...,valueN)
实例: EXP SCOTT/TIGER GRANTS=Y TABLES=(EMP,DEPT,MGR)
或 TABLES=(T1: P1,T1: P2),如果 T1 是分区表
 
USERID 必须是命令行中的第一个参数。
 
关键字  说明(默认)        关键字      说明(默认)
--------------------------------------------------------------------------
USERID   用户名/口令            FULL         导出整个文件 (N)
BUFFER   数据缓冲区的大小          OWNER        所有者用户名列表
FILE     输出文件 (EXPDAT.DMP)    TABLES       表名列表
COMPRESS 导入一个范围 (Y)   RECORDLENGTH  IO 记录的长度
GRANTS  导出权限 (Y)            INCTYPE      增量导出类型
INDEXES 导出索引 (Y)           RECORD       跟踪增量导出 (Y)
ROWS    导出数据行 (Y)         PARFILE      参数文件名
CONSTRAINTS 导出限制 (Y)    CONSISTENT   交叉表一致性
LOG      屏幕输出的日志文件    STATISTICS  分析对象 (ESTIMATE)
DIRECT   直接路径 (N)              TRIGGERS     导出触发器 (Y)
FEEDBACK 显示每 x 行 (0) 的进度
FILESIZE 各转储文件的最大尺寸
QUERY    选定导出表子集的子句
 
下列关键字仅用于可传输的表空间
TRANSPORT_TABLESPACE 导出可传输的表空间元数据 (N)
TABLESPACES 将传输的表空间列表
 
在没有警告的情况下成功终止导出。

解决方案 »

  1.   

    在Oracle8i中:
    exp userid=<username>/<password> file=<filename.dmp> rows=n
      

  2.   

    呵呵
    penitent(只取一瓢) 加星了
    赶紧开贴散分吧
      

  3.   

    我在sql*plus中执行,这是怎么回事?SQL> EXP system/manager full=Y;
    未知命令开始"EXP system..." -- 其余行忽略。
    SQL> exp -help;
    未知命令"exp -help" -- 其余行忽略。
    SQL>
      

  4.   

    不要在SQLPLUS中执行,直接在命令行执行
      

  5.   

    这两个程序只要是装过ORACLE的地方都有,不管是ORACLE服务器,还是装过ORACLE客户端的WINDOWS机器,而且一般在路径中已经加过了,所以可以直接敲EXP命令。如果不行,可以用操作系统的查找功能找一下EXP*.*。推荐使用WINDOWS上的版本。
    以下是一个备份用的BAT,使用会更简单,用法
    exp_any 本地服务名 应导出用户名 日期
    输出文件在H:\DATA_BAK中,可以自己修改路径。该BAT假设数据库SYSTEM用户的密码是MANAGER
    exp_any.bat
    @echo off
    echo service name: %1
    echo database name: %2
    echo date: %3
    EXP USERID=SYSTEM/MANAGER@%1 OWNER=(%2) FILE=(H:\DATA_BAK\%2a.%3,H:\DATA_BAK\%2b.%3,H:\DATA_BAK\%2c.%3,H:\DATA_BAK\%2d.%3,H:\DATA_BAK\%2e.%3,H:\DATA_BAK\%2f.%3,H:\DATA_BAK\%2g.%3,H:\DATA_BAK\%2h.%3) FILESIZE=1500M DIRECT=Y compress=Y RECORDLENGTH=64000 LOG=H:\DATA_BAK\%2%3.LOG
    类似的是导入程序,可用于恢复:
    imp_any.bat
    @echo off
    echo service name: %1
    echo database name: %2
    echo date: %3
    imp system/manager@%1 fromuser=%2 touser=%2 file=(h:\data_bak\%2a.%3,h:\data_bak\%2b.%3,h:\data_bak\%2c.%3,h:\data_bak\%2d.%3,h:\data_bak\%2e.%3,h:\data_bak\%2f.%3,h:\data_bak\%2g.%3,h:\data_bak\%2h.%3) commit=Y ANALYZE=N ignore=y FEEDBACK=2000 log=h:\imp%3.log这个BAT可以让你用的更方便,找台装了ORACLE客户端的机器试试吧,已经有好多人用过了。我也是高手推荐我用的。
    我也是从别人那里
      

  6.   

    如果真实环境中的数据库复制是需要考虑方案的可行性的经常听人说exp/imp  可是有没有考虑过如果数据量是上百G时候的复制效率问题,或者复制完之后的完整性验证你是如何保证的;更有人说可以写个procedure有时候还是觉得给别人建议
    最好自己有个相关的可行性测试
    而不是理论上可行
      

  7.   

    zhoubf725这个你就说的严重了,
    当然exp/imp对于上百G,甚至TB的数据,是无能为力的,但你要想想。
    如果真是这么大的数据库,还会让楼主这样的连exp/imp都不知道的人来复制吗?
    exp/imp对于小的数据库,绝对是可以保证的,如果说你对完整性有怀疑,那你有怎么相信oracle数据库???
      

  8.   

    zhoubf725(zhoubf725)关于数据量的问题星星版主已经说得很透彻了。我再来说说可靠性的问题。
     当然任何一个方案都有其可靠性的衡量,但应当结合具体的应用来考察。
    如果是一个要求实时进行复制的企业级环境,那自然应该强调自动化和可靠性,特别是复制后数据的完整性,这方面QUEST公司的SHAREPLEX做得不错。但是,对于一个普通的情况下,比如只是数据的日常备份,乃至于是一次性的数据库移植,如果过多的考虑可靠性,就有点杀鸡用牛刀了。这种情况下,往往可以由手工来保证数据的完整性,比如EXP/IMP在出错时都会有相应的提示,如果失败了,重新复制一次好了。千万不要吓着suoduan (suoduan) 了,弄得他连EXP/IMP(ORACLE公司正品原装)都不敢用。如果说可行性测试,我所提供的BAT是用作我们多个开发环境的日常数据备份的,不考虑T级数据量,应当已经用了几年了吧,已经绝不止是理论而已了。而在这里回复的人,据我看来也都是有相当多的使用经历的人吧。
      

  9.   

    有人向我推荐过一种非常有效(因为通过了测试)
    的colone database的办法。
    而且是方法是有点类似standby,
    是通过archive log来前滚另一个instance。
    当然listener。ora和tnsmane。ora的配置有些不同