1、首先在cmd下切换到oracle的客户端的exp.exe所在的bin目录下,例如

D:\oracle\product\10.2.0\client_2\BIN

数据导出:导出的数据库名称是在tnsnames.ora文件中定义的


将数据库zxcc完全导出,用户名kf 密码zx 导出到D:\zxcc.dmp中

exp kf/zx@zxcc file=d:\zxcc.dmp full=y

   

表示全库导出。full总共有2个可选项yes(y)/no(n),缺省情况下full=no,这时只会将该用户下的对象导出。

   

将数据库zxcc中kf用户与cc用户的表导出

exp kf/zx@zxcc file=d:\zxcc_ur.dmp owner=(kf,cc)

   

方式可以备份所有用户的数据库对象,包括表空间、用户信息等,owner=XX只能备份指定用户的对象,其他用户下的就不备份了,EXP中full=y和owner=XX是不能同时使用的。


将数据库zxcc中的表kf_operator、kf_role导出

exp kf/zx@zxcc file= d:\zxcc_tb.dmp tables=(kf_operator,kf_role) 
    
表示备份相关表,不能同时和owner、full使用。

将数据库中的表kf_operator中的字段oper_id以"00"打头的数据导出
   exp kf/zx@zxcc file=d:\zxcc_t.dmp tables=(kf_operator) query=\" where oper_id like '00%'\"

主要是导出合适条件的数据。使用该参数时,需要注意对所有操作系统保留字符都要使用转义符号。若有括号()也需要转义:

exp或expdp的PARFILE参数避免query内容的繁琐转义问题。

   例:

oracle DBALNP01 > cat > zxcc.par
   tables=kf_operator
   file=zxcc.dmp
   query="where dt_time=to_date('2010-06-25','yyyy-mm-dd')"

   这时就可以尽情的再双引号中写条件语句了。

 

winzip把dmp文件进行压缩。

compress=y 来实现。


数据的导入:

、将D:\zxcc.dmp 中的数据导入 zxcc数据库中。

   imp kf/zx@zxcc file=D:\zxcc.dmp

   

   导数据得时候,有可能报错。为什么?有以下主要的原因:


A. 导入的对象(表,视图,方法等)原本不属于当前连接的用户的


B. 导入的对象在该数据库的指定用户下已经存在


C. 导入的对象的原本用户不在这个数据库里


    对于这三个问题的处理方法如下:

    

、所有对象全部导入到指定的账户下:

imp kf_new/zx@zxcc_new file=d:\zxcc.dmp fromuser=kf touser=kf_new

fromuser=kf为.dmp文件里的对象的原先的owner, touser=kf_new 为作为导入的对象的新的Owner.

    

、忽略/插入数据:


imp kf_new/zx@zxcc_new file= d:\zxcc.dmp ignore=y

    

ignore=y告诉imp.exe把数据直接插入到相应对象(并且如果导入的对象里面有其他的对象,如约束,索引等,会在数据插入后被创建)。

    

、将d:\zxcc_tb.dmp中的表tb_operator 导入
   imp kf/zx@zxcc  file=d:\zxcc_tb.dmp  tables=(tb_operator)
 
   忽略加载约束

constraints=N

indexs=N
    
rows=N

  对于上述操作登陆操作的用户需是管理员,如果不是管理员,而是普通用户,那么这个用户必须有创建删除对象的权利,对象可能包括表,视图,方法,存储过程等等常见的对象。为什么“可能”包括?因为这个视导入导出的时候是否涉及相关类型的对象而定。 

   

   Imp kf/zx@zxcc_new file=d:\zxcc.dmp fromuser=kf touser=kf_new ignore=y

 

   基本上面的导入导出够用了。不少情况要先是将表彻底删除,然后导入。

 

注意:

1)、操作者要有足够的权限,权限不够会有提示。

2)、数据库链接正常,可以用tnsping zxcc 来检测数据库zxcc能否连上。

3)、导入/导出数据库时注意字符集。可能会出现导出/导入时数据库字符集不一致而报错。


oracle数据库其他常用命令:

、给用户增加导入数据权限的操作

第一,启动sql*puls

    第二,以管理员(DBA)用户登陆

    第三,create user 用户名 IDENTIFIED BY 密码 (如果已经创建过用户,这步可以省略)

    第四,>grant create user , drop user , alter user , create any view , drop any view , exp_full_database , imp_full_database , dba , resource , create session to;

第五, 运行cmd进入dmp文件所在的目录,

管理员用户名/密码 full=y file= filename.dmp
imp userid=管理员用户名/密码 full=y file=filename.dmp


、Oracle 不允许直接改变表的拥有者, 利用Export/Import可以达到这一目的.

.par文件()
imp parfile=/filepath/import9.par
import9.par 内容如下:
        FROMUSER=user

(注:把表的拥有者由FROMUSER改为TOUSER,FROMUSER和TOUSER的用户可以不同)          

ROWS=Y
        INDEXES=Y
        GRANTS=Y
        CONSTRAINTS=Y
        BUFFER=409600
        file==/filepath/xxxx.dmp
        log==/filepath/import_log.log