1、导出工具的参数详解
[oracle@linux exp]$ exp help=y Export: Release 10.2.0.4.0 - Production on 星期三 10月 5 15:08:57 2011 Copyright (c) 1982, 2007, Oracle. All rights reserved. 通过输入 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) DIRECT 直接路径 (N) TRIGGERS 导出触发器 (Y) LOG 屏幕输出的日志文件 STATISTICS 分析对象 (ESTIMATE) ROWS 导出数据行 (Y) PARFILE 参数文件名 CONSISTENT 交叉表的一致性 (N) CONSTRAINTS 导出的约束条件 (Y) OBJECT_CONSISTENT 只在对象导出期间设置为只读的事务处理 (N) FEEDBACK 每 x 行显示进度 (0) FILESIZE 每个转储文件的最大大小 FLASHBACK_SCN 用于将会话快照设置回以前状态的 SCN FLASHBACK_TIME 用于获取最接近指定时间的 SCN 的时间 QUERY 用于导出表的子集的 select 子句 RESUMABLE 遇到与空格相关的错误时挂起 (N) RESUMABLE_NAME 用于标识可恢复语句的文本字符串 RESUMABLE_TIMEOUT RESUMABLE 的等待时间 TTS_FULL_CHECK 对 TTS 执行完整或部分相关性检查 VOLSIZE 写入每个磁带卷的字节数 TABLESPACES 要导出的表空间列表 TRANSPORT_TABLESPACE 导出可传输的表空间元数据 (N) TEMPLATE 调用 iAS 模式导出的模板名 成功终止导出, 没有出现警告。
2、常用导出命令
完全模式导出(整个数据库)
exp system/oracle@orcl full=y file=demo1.dmp log=demo1.log
用户模式导出(导出用户ing下面的所有对象)
exp system/oracle owner=ing file=demo2.dmp log=demo2.log
表模式导出(导出用户ing下的dept表)
exp system/oracle tables=ing.dept file=demo3.dmp log=demo3.log
带where条件的导出(导出用户ing下dept表的前两行)
exp system/oracle tables=ing.dept query=\"where rownum \< 3\" file=demo4.dmp log=demo4.log
模糊导出(导出用户ing下以de开头的表)
exp system/oracle@orcl tables=ing.de% file=demo5.dmp log=demo5.log
3、通过dmp文件察看Oracle字符集
首先通过UE等编辑软件打开dmp文件或者在Linux下执行如下然后察看第二、三字节。如果dmp文件很大,比如有2G以上(这也是最常见的情况),用文本编辑器打开很慢或者完全打不开,可以用以下命令(在linux主机上):
[oracle@linux exp]$ cat demo5.dmp | od -x | head -1 | awk '{print $2 $3}' | cut -c 3-6 0345
SQL> select nls_charset_name(to_number('0354','xxxx')) from dual; NLS_CHARSET_NAME(TO_NUMBER('0354','XXXX' ---------------------------------------- ZHS16GBK
4、导出权限问题
如果是普通用户导出、导入,需要授予权限
SQL> grant exp_full_database,imp_full_database to ing; 授权成功。
5、字符集问题
在导出的时候最还设置客户端的字符集和数据库一样。
[oracle@linux exp]$ echo $NLS_LANG SIMPLIFIED CHINESE_CHINA.ZHS16GBK