oracle数据库:数据导入/导出之一
一、任务
1\bnet125服务器exp2.sql导出不成功
此脚本在192.168.3.125上,已定制任务,每天00:30,但不知何故,近期没有导出
2\需要把生产环境里属于hb_lhzx 用户的对象转移到开发数据库里的dever 用户下,以供开发人员使用
二、分解
1\exp2.sql脚本为
column today new_val dt
select to_char( sysdate, 'yyyymmdd') today from dual;
host exp hb_lhzx/zjhcsoft@192.168.3.184/zjhc file=D:\orabak\lhbnetorabak\&dt..dmp
log=D:\orabak\lhbnetorabak\log\&dt..log
exit
exp2.bat内容为
echo off
cd..
cd D:\oracle\product\10.2.0\client_1\BIN
sqlplus hb_lhzx/zjhcsoft@192.168.3.184/zjhc @D:\orabak\bak\exp2.sql
相关情况:
1)125上D盘可用空间21.7G;
2)125上任务中管理员帐号已输入;
3)数据库服务器184及帐号hb_lhzx可用;
4)数据库服务器184上直接exp hb_lhzx/zjhcsoft file=/home/oracle/20130708.dmp full=y log=/home/oracle/20130708.log(与exp hb_lhzx/zjhcsoft file=/home/oracle/2013070802.dmp log=/home/oracle/2013070802.log有啥区别?)可正常导出
5)tnsping 192.168.3.184/zjhc提示OK
2\
1)先创建一个目录对象workingdir,指向\home\oracle\workingdir
create directory "workingdir" as '\home\oracle\workingdir';
grant read on directory "workingdir" to "hb_lhzx ";
grant write on directory "workingdir" to "hb_lhzx ";
2)编辑一个导出参数文件
userid=hb_lhzx/zjhcsoft
directory=workingdir
dumpfile=hb_lhzx.dmp
schemas=hb_lhzx
job_name=exp_job
3)执行如下命令,把hb_lhzx 用户下的对象全部导出 expdp parfile=\home\oracle\exp_par.txt
4)编辑导入参数文件
userid=system/manager
directory=workingdir
dumpfile=hb_lhzx.dmp
schemas=(hb_lhzx)
remap_schema=hb_lhzx:dever
remap_tablespace=hb_lhzx_tbs:dever_tbs
job_name=imp_job
5)执行如下命令,把dump文件导入到开发环境里 impdp parfile=\home\oracle\imp_par.txt
三、相关知识点
1\目录对象与表、索引等类似,都是数据库中的一种对象,表示数据库所在的服务器上的文件系统里的目录结构。目录对象能够在数据库的操作中,对某个指定目录下的文件进行读取和写入操作。使用目录对象后,在PL/SQL程序中就不需要对文件系统路径进行硬编码。目录对象所对应的文件系统路径可以随时变化,只要目录对象的名称不变化,引用目录对象的程序就不需要修改。目录对象只能被SYS用户所拥有。
2\数据泵包括导出数据泵和导入数据泵,导出数据泵能够把表里的数据生成特定格式的文件(通常称这种文件为dump文件) ,而导入数据泵则能读取导出的dump文件并将其中的数据导入到目标数据库里。数据泵在导出/导入数据时,本质是通过访问数据库中的DBMS_DATAPUMP包来实现的。在导出/导入数据时,数据泵通常都会采用直接路径(也就是直接读取数据块的方式),因为这种方式速度最快。但是遇到某些表时,比如簇表(Cluster表)或具有加密列的表时,无法采用直接路径方式,这时数据泵会自动转换为外部表的方式来导出或导入数据。在数据泵运行过程中,会用到一个关键的表:主表(Master Table,MT)。在MT表中保存了整个数据泵运行过程中的相关信息。这些信息包括要处理的所有的对象信息(包括这些对象的名称、大小尺寸等)、当前正在导出或导入的对象信息等。
3\expdp在执行导出操作时,首先创建MT表,并把所要导出的对象的信息插入MT表,然后开始执行实际的导出任务。当所有的对象都导出以后,将MT表也一起导出到文件中,最后删除MT表。如果导出任务异常终止,则MT表会被保留,需要手工删除该MT表。在执行导入时,impdp首先把MT表从dump文件中读出,并写入到目标数据库里。然后读取MT表中所记录的对象信息,并根据读取出来的对象名称,将这些对象从转储文件中读取出来,并插入到目标数据库里。在使用数据泵时,可以通过命令行的方式执行,也可以通过指定参数文件的形式执行。通常建议使用参数文件的形式,因为这种形式能够使用数据泵所有的功能。
4\数据泵具有以下4种数据传输模式:
1)表模式:可以导出某个用户下指定的表,授权的用户可以导出其他用户下的表。
2)用户模式:导出某个指定的用户下所有的对象,授权的用户可以导出其他用户下的所有的对象。
3)数据库模式:可以导出除了sys用户以外的数据库里所有的对象,只有已授权的用户才能在该模式中执行导出。
4)可传输表空间模式:如果要导出某个指定表空间中的所有对象时,可以使用该模式。通过使用该模式,可以将一组表空间从一个数据库快速地转移到另一个数据库里。
本文来源 我爱IT技术网 http://www.52ij.com/jishu/5119.html 转载请保留链接。
- 评论列表(网友评论仅供网友表达个人看法,并不表明本站同意其观点或证实其描述)
-
