Oracle数据导入导出imp/exp功能:Oracle数据导入导出imp/exp就相当与oracle数据还原与备份。
大多情况都可以用Oracle数据导入导出完成数据的备份和还原(不会造成数据的丢失)。
Oracle有个好处,虽然你的电脑不是服务器,但是你装了oracle客户端,并建立了连接(通过Net Configuration Assistant添加正确的服务命名,其实你可以想成是客户端与服务器端修了条路,然后数据就可以被拉过来了)这样你可以把数据导出到本地,虽然可能服务器离你很远。
你同样可以把dmp文件从本地导入到远处的数据库服务器中。
利用这个功能你可以构建俩个相同的数据库,一个用来测试,一个用来正式使用。
执行环境:可以在SQLPLUS.EXE或者DOS(命令行)中执行,DOS中可以执行时由于在oracle 8i 中安装目录\$ora10g\BIN被设置为全局路径,该目录下有EXP.EXE与IMP.EXE文件被用来执行导入导出。
oracle用java编写,我想SQLPLUS.EXE、EXP.EXE、IMP.EXE这俩个文件是被包装后的类文件。
SQLPLUS.EXE调用EXP.EXE、IMP.EXE他们所包裹的类,完成导入导出功能。
下面介绍的是导入导出的实例,向导入导出看实例基本上就可以完成,因为导入导出很简单。
数据导出:1 将数据库TEST完全导出,用户名system 密码manager 导出到D:\daochu.dmp 中exp system/manager@TEST file=d:\daochu.dmp full=y2 将数据库中system用户与sys用户的表导出exp system/manager@TEST file=d:\daochu.dmp owner=(system,sys)3 将数据库中的表table1 、table2导出exp system/manager@TEST file=d:\daochu.dmp tables=(table1,table2) 4 将数据库中的表table1中的字段filed1以"00"打头的数据导出exp system/manager@TEST file=d:\daochu.dmp tables=(table1) query=\" where filed1 like '00%'\"上面是常用的导出,对于压缩我不太在意,用winzip把dmp文件可以很好的压缩。
不过在上面命令后面加上 compress=y 就可以了数据的导入1 将D:\daochu.dmp 中的数据导入 TEST数据库中。
imp system/manager@TEST file=d:\daochu.dmp上面可能有点问题,因为有的表已经存在,然后它就报错,对该表就不进行导入。
在后面加上 ignore=y 就可以了。
2 将d:\daochu.dmp中的表table1 导入imp system/manager@TEST file=d:\daochu.dmp tables=(table1)基本上上面的导入导出够用了。
不少情况我是将表彻底删除,然后导入。
注意:你要有足够的权限,权限不够它会提示你。
数据库时可以连上的。
可以用tnsping TEST 来获得数据库TEST能否连上。
数据导出:exp hkb/hkb@boss_14 full=y file=c:\orabackup\hkbfull.dmplog=c:\orabackup\hkbfull.log;导出注意事项:导出的是当前用户的的数据,当前用户如果有DBA的权限,则导出所有数据!同名用户之间的数据导入:imp hkb/hkb@xe file=c:\orabackup\hkbfull.dmplog=c:\orabackup\hkbimp.log full=y不同名之间的数据导入:imp system/test@xe fromuser=hkb touser=hkb_newfile=c:\orabackup\hkbfull.dmplog=c:\orabackup\hkbimp.log;oracle数据库的导入导出(imp和exp)前提是源库和目标库的user和tablespace一样--------------------------------------------------------------------------------------------------------------------------oracle数据库的导出:1、先在运行里输入cmd命令;2、用cd命令切换到oracle安装目录的bin目录下,比如我的目录是:E:\oracle\product\10.2.0\db_1\BIN;3、exp test_user/test_user@testserver file=E:\testserver.dmpowner=test_user即可导出test_user的库,exp命令的参数挺多,请google 一下;--------------------------------------------------------------------------------------------------------------------------oracle数据库的导入:1、先在运行里输入cmd命令;2、用cd命令切换到oracle安装目录的bin目录下,比如我的目录是:E:\oracle\product\10.2.0\db_1\BIN;3、imp test_user/test_user@testserver file=E:\testserver.dmp fromuser=test_user touser=test_user grants=n即可导入test_user的库,imp命令的参数挺多,请google一下;----------------------------------------------------------------------------------------------------------------------------上面exp和imp能够成功的前提是源库和目标库的user和tablespace一样,如果不一样可以用如下的方法解决:(查看属于哪个表空间语句select table_name,tablespace_name fromuser_tables;)这里假设:我的源库的user是test_user、数据表空间是data_test、临时表空间是temp_test以下是在目标oracle上执行.先以system登录oracle//创建临时表空间:create temporary tablespace temp_testtempfile'E:\oracle\product\10.2.0\oradata\testserver\temp_test01.dbf'size 32mautoextend onnext 32m maxsize 2048mextent management local;//创建数据表空间:create tablespace data_testloggingdatafile'E:\oracle\product\10.2.0\oradata\testserver\data_test01.dbf'size 32mautoextend onnext 32m maxsize 2048mextent management local;//创建用户并指定表空间create user test_user identified by test_user default tablespace data_test temporary tablespace temp_test;//授权用户grant connect,resource,dba to test_user;//先收回该用户的默认表空间revoke unlimited tablespace from test_user;//在users表空间上给该用户分配0配额alter user test_user quota 0 on users;//改变该用户的表空间为data_testalter user test_user quota unlimited on data_test;//以下执行imp就可以了。
//创建临时表空间create temporary tablespace temp_bwtempfile'C:\oracle\product\10.2.0\oradata\orcdb\bw.dbf'size32mautoextend onnext32m maxsize2048mextent management local;//创建数据表空间:create tablespace data_bwloggingdatafile'C:\oracle\product\10.2.0\oradata\orcdb\bw_1.dbf'size32mautoextend onnext32m maxsize2048mextent management local;// 创建用户设置用哪个表空间create user oa identified by oa default tablespace data_bw temporary tablespace temp_bw;// 授权用户是dba权限grant connect,resource,dba to oa;D:\oracle\product\10.2.0\db_1\network\ADMINoracle exp/imp命令详解E:\>exp help=y通过输入 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)ROWS 导出数据行 (Y)PARFILE 参数文件名CONSTRAINTS 导出限制 (Y)CONSISTENT 交叉表一致性LOG 屏幕输出的日志文件STATISTICS 分析对象 (ESTIMATE)DIRECT 直接路径 (N)TRIGGERS 导出触发器 (Y)FEEDBACK 显示每 x 行 (0) 的进度FILESIZE 各转储文件的最大尺寸QUERY 选定导出表子集的子句下列关键字仅用于可传输的表空间TRANSPORT_TABLESPACE 导出可传输的表空间元数据 (N)TABLESPACES 将传输的表空间列表E:\>imp help=y可以通过输入 IMP 命令和您的用户名/口令跟有您的用户名 / 口令的命令:实例: IMP SCOTT/TIGER或者, 可以通过输入 IMP 命令和各种自变量来控制“导入”按照不同参数。