数据库迁移案例.doc
逻辑迁移
方案二、
采用expdp、impdp方法
使用并行expdp
sqlplusassysdba
SQLcreateorreplacedirectoryexport_DIRas/home/new;
catbakwithexpdp.sh
date
expdpsystem/oracle@orclDIRECTORY=export_DIRDUMPFILE=fulldatabase.dmpFULL=Y
job_name=expfulldbparallel=4
date
2,使用正常expdp
catbak.sh
date
expdpsystem/oracle@orclDIRECTORY=export_DIRDUMPFILE=fulldatabase.dmpFULL=Y
job_name=expfulldb
date
3,
SQLcreateorreplacedirectoryexport_DIRas/home/new;
viimpwithimpdp.sh
date
impdpsystem/oracle@repDIRECTORY=export_DIRDUMPFILE=fulldatabase.dmpFULL=Y
date
方案三、
1,先把符合一定时间条件的数据做成文本,spool成文本
viunload.sh
2,然后把文本导入数据库
sqlldrscott/tigercontrol=loader.ctl
控制文件(loader.ctl)将加载一个外部数据文件(含分隔符).loader.ctl如下:
loaddata
infile/home/oracle/backup/script/oradata.txt
replaceintotableemployees
fieldsterminatedby,optionallyenclosedby
(EMPLOYEE_ID,FIRST_NAME,LAST_NAME,EMAIL,PHONE_NUMBER,HIRE_DATEdd-mon-yy,JOB_ID,SALARY,COMMISSION_PCT,MANAGER_ID,DEPARTMENT_ID)
oradata.txt如下:
7369,Scott,CLERK,7902,17-DEC-80,800.00,,20
7902,FORD,ANALYST,7566,17-DEC-80,3000.00,,20
7566,JONES,MANAGER,7839,17-DEC-80,2975.00,,20
7839,KING,PRESIDENT,,17-DEC-80,5000.00,,10
3,最后把增量部分导进去
并发操作?
?sqlldr?userid=/?control=result1.ctl?direct=true?parallel=true?
?sqlldr?userid=/?control=result2.ctl?direct=true?parallel=true?
?sqlldr?userid=/?control=result2.ctl?direct=true?parallel=true?
?当加载大量数据时(大约超过10GB),最好抑制日志的产生:?
??SQLALTER?TABLE?employeesnologging;?
?这样不产生REDOLOG,可以提高效率。然后在CONTROL文件中load?data上面加一行:unrecoverable,此选项必须要与DIRECT共同应用。
??在并发操作时,ORACLE声称可以达到每小时处理100GB数据的能力!其实,估计能到1-10G就算不错了,开始可用结构相同的文件,但只有少量数据,成功后开始加载大量数据,这样可以避免时间的浪费。?
SQL*Loader是Oracle数据库导入外部数据的一个工具.它和DB2的Load工具相似,但有更多的选择,它支持变化的加载模式,可选的加载及多表加载.
如何使用SQL*Loader工具
我们可以用Oracle的sqlldr工具来导入数据。例如:
sqlldrscott/tigercontrol=loader.ctl
控制文件(loader.ctl)将加载一个外部数据文件(含分隔符).loader.ctl如下:
loaddata
infile/home/oracle/backup/script/mydata.csv
rep