作者:金berends_941 | 来源:互联网 | 2023-08-31 12:51
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