EXP/IMP 学习(五)

2.2  高级选项
1. Conventional Path Load  与  Direct Path Load
Conventional-path Load:
通过常规通道方式上载。
特点:commit, always  gen redo logs,  enforce all constraints, fire insert triggers, can load into cluster, other user can make change
rows:每次提交的记录数
bindsize:每次提交记录的缓冲区
readsize:与 bindsize 成对使用,其中较小者会自动调整到较大者
sqlldr 先计算单条记录长度,乘以 rows,如小于 bindsize,不会试图扩张 rows以填充 bindsize;如超出,则以 bindsize 为准。 命令为:
$ sqlldr dbuser/oracle control=emp.ctl log=emp.log rows=10000 bindsize=8192000
Direct-Path Load:
通过直通方式上载,可以跳过数据库的相关逻辑,不进行  SQL解析,而直接将数 据导入到数据文件中。
特点:save, conditionly gen redo logs, enforce PK UK NN, not fire triggers, can not load into cluster, other user can not make change命令为:
$ sqlldr dbuser/oracle control=emp.ctl log=emp.log direct=true
2. SPOOL导出文本数据方法
导入的数据文件可以用 SPOOL导出文本数据方法生成。
SQL*PLUS环境设置
SET NEWPAGE NONE HEADING OFF SPACE 0 PAGESIZE 0
SET TRIMOUT ON TRIMSPOOL ON LINESIZE 2500
注:LINESIZE 要稍微设置大些,免得数据被截断,它应和相应的 TRIMSPOOL结合使用防止导出的文本有太多的尾部空格。
但是如果 LINESIZE 设置太大,会大大降低导出的速度,另外在 WINDOWS下导 出最好不要用 PLSQL导出,速度比较慢,直接用  COMMEND 下的 SQLPLUS命令最 小化窗口执行。对于字段内包含很多回车换行符的应该给与过滤,形成比较规矩的文本 文件。
通常情况下,我们使用 SPOOL方法,将数据库中的表导出为文本文件,如下述:
set trimspool on
set linesize 120 pagesize 2000 newpage 1 heading off    term off spool  路径+文件名
select col1||','||col2||','||col3||','||col4||'..' from tablename;
 
2.3 脚本
1.  将表中数据记录导出为字段值用分隔符'|'分开的.dat文件
#!/bin/ksh
##################################################################
##    名称: unloadtable
##    功能:  本 shell 用于将表中数据记录导出
##                 导出为字段值用分隔符'|'分开的.dat文件
##    编者:
##    日期: 2006.03.18
##################################################################
if [ $# -ne 3 ]
then
echo "usage:unloadtable tablename username password."
exit 0
fi
##准备工作
echo "set heading off     " >/tmp/$1.col
echo "set pagesize 0" >>/tmp/$1.col
echo "set linesize 800    " >>/tmp/$1.col
echo "set feedback off    " >>/tmp/$1.col
 
echo "set tab off              " >>/tmp/$1.col
echo  "select  column_name||','  from  user_tab_columns  where  lower(table_name)='$1'  order  by
column_id; " >> /tmp/$1.col
##产生 select 语句
echo "set heading off     " >/tmp/$1.sel
echo "set pagesize 0" >>/tmp/$1.sel
echo "set linesize 800    " >>/tmp/$1.sel
echo "set feedback off    " >>/tmp/$1.sel
echo "set tab off              " >>/tmp/$1.sel
echo "select " >>/tmp/$1.sel
echo  `sqlplus  -s  $2/$3  >>/tmp/$1.sel
##生成 dat文件
#echo "from $1;\n/" >>/tmp/$1.sel    由于  /  导致多执行一次 select
echo "from $1;\n" >>/tmp/$1.sel
sqlplus -s $2/$3 $1_tmp.dat
#awk '{if(FNR!=1) print $0}' $1_tmp.dat >$1.dat       FNR 选项使得第一条记录选不出
awk '{print $0}' $1_tmp.dat >$1.dat
rm -f $1_tmp.dat
 
2.  将数据导入到相应表中
#!/bin/ksh
##################################################################
##    名称:loadtable
##    功能:本 shell 用于将已经准备好的.dat数据文件导入相应的表中
##               .dat 文件各个字段值用分隔符'|'分开。
##    编者:
##    日期: 2006.03.18
##################################################################
if [ $# -ne 3 ]
then
echo "usage:loadtable tablename username    password."
exit 0
fi
##准备工作
echo "set heading off " >/tmp/$1.colsql
echo "set pagesize 0" >>/tmp/$1.colsql
echo "set linesize 800    " >>/tmp/$1.colsql
echo "set feedback off    " >>/tmp/$1.colsql
echo "set tab off              " >>/tmp/$1.colsql
echo  "select  column_name||','  from  user_tab_columns  where  lower(table_name)='$1'  order  by
column_id; " >> /tmp/$1.colsql

##产生 ctl文件
echo "load data" >/tmp/$1.ctl
echo "infile *" >>/tmp/$1.ctl
echo "into table $1" >>/tmp/$1.ctl
echo "fields terminated by '|'" >>/tmp/$1.ctl
echo `sqlplus -s $2/$3 >/tmp/$1.ctl

##开始导入数据
echo "truncate table $1;" >/tmp/$1.sql
sqlplus $2/$3 sqlldr $2/$3 data=$1.dat control=/tmp/$1.ctl log=/tmp/$1.log

   用户管理的备份与恢复也称 OS物理备份,是指通过数据库命令设置数据库为备份 状态,然后用操作系统命令,拷贝需要备份或恢复的文件。这种备份与恢复需要用户的 参与手工或自动完成。 
对于使用 OS拷贝备份的数据文件,可以使用 DBVERTIFY  进行检验。DBVERTIFY
是一个外部工具,主要用于校验数据文件或备份的数据文件的数据块是否正确。
例:dbv /u01/oradata/oracle/users01.dbf BLOCKSIZE=8192
参数说明:
关键字                    说明                        (默认)
FILE 要检验的文件 (NONE)
START 起始块 (文件的第一个块)
END 结束块 (文件的最后一个块)
BLOCKSIZE 逻辑块大小 (2048)
LOGFILE 输出日志 (NONE)
FEEDBACK 显示进程 (0)
Recover  还可以进行测试,检测恢复的错误,错误信息记载在  alert_SID.log  文件
中,通过测试,我们可以知道该恢复操作是否能正常完成。
SQL> RECOVER TABLESPACE sales TEST;
SQL> RECOVER DATABASE UNTIL CANCEL TEST;

 

时间: 2024-07-30 10:48:38

EXP/IMP 学习(五)的相关文章

EXP/IMP 学习(四)

1.4  常见问题1.  字符集问题ORACLE  多国语言设置是为了支持世界范围的语言与字符集,一般对语言提示, 货币形式,排序方式和  CHAR,VARCHAR2,C LOB,LONG  字段的数据的显示等有效. ORACLE  的多国语言设置最主要的两个特性就是国家语言设置与字符集设置,国家语 言设置决定了界面或提示使用的语言种类,字符集决定了数据库保存与字符集有关数据(如文本)时候的编码规则.ORACLE 字符集设定,分为数据库字符集和客户端字符集环境设置.在数据库端,字符集在创建数据库

EXP/IMP 学习(三)

1.3  优化1.  加快exp速度加大 large_pool_size,可以提高 exp的速度 采用直接路径的方式(direct=y),数据不需要经过内存进行整合和检查. 设置较大的 buffer,如果导出大对象,小 buffer会失败.export文件不在 ORACLE使用的驱动器上 不要 export到 NFS文件系统UNIX环境:用管道模式直接导入导出来提高 imp/exp的性能 2.  加快imp速度建立一个 indexfile,在数据 import完成后在建立索引将 import 文

EXP/IMP 学习(一)

1.1  基本命令  1.  获取帮助 $ exp help=y$ imp help=y 2.  三种工作方式 (1)交互式方式$ exp        //  然后按提示输入所需要的参数(2)命令行方式$ exp user/pwd@dbname file=/oracle/test.dmp full=y    //  命令行中输入所需的参数 (3)参数文件方式$ exp parfile=username.par    //  在参数文件中输入所需的参数参数文件 username.par 内容 u

EXP/IMP 学习(二)

2.  增量导出/导入// oracle 9i  以后 exp  不再支持  inctype必须为  SYS  或  SYSTEM  才可执行增量导出导入增量导出:   包括三个类型:(1)"完全"增量导出(Complete)  //  备份整个数据库$ exp user/pwd file=/dir/xxx.dmp log=xxx.log inctype=complete(2)"增量型"增量导出      导出上一次备份后改变的数据.$ exp user/pwd f

关于exp/imp的总结学习

关于exp/imp,是很常用的数据导出导入工具,在10g开始推出的数据泵datapump相当于是exp/imp的补充和升级版本.在后续章节再做一个总结. exp/imp的使用相对比较简单,通常用做在不同的数据库或者环境之间转移数据,即使数据库位于不同的平台,也可以通过统一的接口来做数据的导入导出工作. 使用方法可以通过exp -help,imp -help来得到一个简单的帮助说明. USERID must be the first parameter on the command line. K

[20171105]exp imp buffer参数解析.txt

[20171105]exp imp buffer参数解析.txt oracle官方所给的关于buffer的解释如下: https://docs.oracle.com/cd/A84870_01/doc/server.816/a76955/ch01.htm BUFFER Default: operating system-dependent. See your Oracle operating system-specific documentation to determine the defaul

【exp/imp】将US7ASCII字符集的dmp文件导入到ZHS16GBK字符集的数据库中

[exp/imp]将US7ASCII字符集的dmp文件导入到ZHS16GBK字符集的数据库中   1.1  BLOG文档结构图     1.2  前言部分 1.2.1  导读和注意事项 各位技术爱好者,看完本文后,你可以掌握如下的技能,也可以学到一些其它你所不知道的知识,~O(∩_∩)O~: ① 如何将US7ASCII字符集的dmp文件导入到ZHS16GBK字符集的数据库中(重点,2种方法)? ② 从dmp文件可以获取到哪些信息?如何从dmp文件获取到dmp文件的字符集(重点,N种方法)? ③

利用RMAN转移数据和EXP/IMP转移数据的实测比较

比较|数据 由于工程需要经常将客户的现场数据导出到公司的开发环境中,随着客户现场数据量的不断增大,原先 使用的导出导入的方法需要花费越来越长的时间,所以测试一下RMAN的效率,验证是否能用恢复RMAN备 份的方法来代替以往的EXP/IMP方法.原本想过用传输表空间的方法,但是由于我们通常在创建数据库的 时候就给业务所用的表空间创建了很大的数据文件,这样在传输表空间的copy数据文件的步骤上会花费 很长的时间,所以还是决定测试一下RMAN了. 测试目的:实现对于JHJKREC用户的数据转移. 在1

exp/imp与expdp/impdp的用法区别

exp/imp与expdp/impdp的用法区别 1:把用户usera的对象导到用户userb,用法区别在于fromuser=usera touser=userb ,remap_schema='usera':'usera' .例如 imp system/passwd fromuser=usera touser=userb file=/oracle/exp.dmp log=/oracle/exp.log; impdp system/passwd directory=expdp dumpfile=e