Oracle数据库导入导出方法.docx
《Oracle数据库导入导出方法.docx》由会员分享,可在线阅读,更多相关《Oracle数据库导入导出方法.docx(14页珍藏版)》请在冰豆网上搜索。
![Oracle数据库导入导出方法.docx](https://file1.bdocx.com/fileroot1/2023-1/23/c84f039b-1ff7-4772-b3ea-bdf943225759/c84f039b-1ff7-4772-b3ea-bdf9432257591.gif)
Oracle数据库导入导出方法
Oracle数据库导入导出方法:
1.使用命令行:
数据导出:
1.将数据库TEST完全导出,用户名system密码manager导出到D:
daochu.dmp中
expsystem/manager@TESTfile=d:
daochu.dmpfull=y
2.将数据库中system用户与sys用户的表导出
expsystem/manager@TESTfile=d:
daochu.dmpowner=(system,sys)
3.将数据库中的表inner_notify、notify_staff_relat导出
expaichannel/aichannel@TESTDB2file=d:
datanewsmgnt.dmptables=(inner_notify,notify_staff_relat)
4.将数据库中的表table1中的字段filed1以"00"打头的数据导出
expsystem/manager@TESTfile=d:
daochu.dmptables=(table1)query="wherefiled1like'00%'"
上面是常用的导出,对于压缩,既用winzip把dmp文件可以很好的压缩。
也可以在上面命令后面加上compress=y来实现。
数据的导入:
1.将D:
daochu.dmp中的数据导入TEST数据库中。
impsystem/manager@TESTfile=d:
daochu.dmp
impaichannel/aichannel@HUSTfull=yfile=file=d:
datanewsmgnt.dmpignore=y
上面可能有点问题,因为有的表已经存在,然后它就报错,对该表就不进行导入。
在后面加上ignore=y就可以了。
2.将d:
daochu.dmp中的表table1导入
impsystem/manager@TESTfile=d:
daochu.dmptables=(table1)
2.plsql:
数据导出:
TOOLS-Exportuserobjects(用户对象)
TOOLS-Exporttables(表)
数据的导入:
TOOLS-Importtables
OracleImport(表)SQLInserts(用户对象)
也可以将用户对象的语句拷贝出来,粘贴到CommandWindow这样的好处是可以看到执行的过程。
oracle数据库导入导出命令!
Oracle数据导入导出imp/exp
功能:
Oracle数据导入导出imp/exp就相当与oracle数据还原与备份。
大多情况都可以用Oracle数据导入导出完成数据的备份和还原(不会造成数据的丢失)。
Oracle有个好处,虽然你的电脑不是服务器,但是你装了oracle客户端,并建立了连接
(通过NetConfigurationAssistant添加正确的服务命名,其实你可以想成是客户端与服务器端修了条路,然后数据就可以被拉过来了)
这样你可以把数据导出到本地,虽然可能服务器离你很远。
你同样可以把dmp文件从本地导入到远处的数据库服务器中。
利用这个功能你可以构建俩个相同的数据库,一个用来测试,一个用来正式使用。
执行环境:
可以在SQLPLUS.EXE或者DOS(命令行)中执行,
DOS中可以执行时由于在oracle8i中 安装目录\$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中
expsystem/manager@TESTfile=d:
\daochu.dmpfull=y
2将数据库中system用户与sys用户的表导出
expsystem/manager@TESTfile=d:
\daochu.dmpowner=(system,sys)
3将数据库中的表table1、table2导出
expsystem/manager@TESTfile=d:
\daochu.dmptables=(table1,table2)
4将数据库中的表table1中的字段filed1以"00"打头的数据导出
expsystem/manager@TESTfile=d:
\daochu.dmptables=(table1)query=\"wherefiled1like '00%'\"
上面是常用的导出,对于压缩我不太在意,用winzip把dmp文件可以很好的压缩。
不过在上面命令后面加上compress=y 就可以了
数据的导入
1将D:
\daochu.dmp中的数据导入TEST数据库中。
impsystem/manager@TEST file=d:
\daochu.dmp
上面可能有点问题,因为有的表已经存在,然后它就报错,对该表就不进行导入。
在后面加上ignore=y就可以了。
2将d:
\daochu.dmp中的表table1导入
impsystem/manager@TEST file=d:
\daochu.dmp tables=(table1)
基本上上面的导入导出够用了。
不少情况我是将表彻底删除,然后导入。
注意:
你要有足够的权限,权限不够它会提示你。
数据库时可以连上的。
可以用tnspingTEST来获得数据库TEST能否连上。
数据导出:
exphkb/hkb@boss_14full=yfile=c:
\orabackup\hkbfull.dmplog=c:
\orabackup\hkbfull.log;
导出注意事项:
导出的是当前用户的的数据,当前用户如果有DBA的权限,则导出所有数据!
同名用户之间的数据导入:
imphkb/hkb@xe file=c:
\orabackup\hkbfull.dmplog=c:
\orabackup\hkbimp.logfull=y
不同名之间的数据导入:
impsystem/test@xefromuser=hkbtouser=hkb_newfile=c:
\orabackup\hkbfull.dmp
log=c:
\orabackup\hkbimp.log;
oracle导入导出命令详解(附数据库每天定时备份脚本)
一.导出工具exp
1.它是操作系统下一个可执行的文件存放目录/ORACLE_HOME/bin
exp导出工具将数据库中数据备份压缩成一个二进制系统文件.可以在不同OS间迁移
它有三种模式:
a.用户模式:
导出用户所有对象以及对象中的数据;
b.表模式:
导出用户所有表或者指定的表;
c.整个数据库:
导出数据库中所有对象。
2.导出工具exp交互式命令行方式的使用的例子
$exptest/test123@appdb
Enterarrayfetchbuffersize:
4096>回车
Exportfile:
expdat.dmp>m.dmp生成导出的文件名
(1)E(ntiredatabase),
(2)U(sers),or(3)T(ables):
(2)U>3
Exporttabledata(yes/no):
yes>回车
Compressextents(yes/no):
yes>回车
ExportdoneinZHS16GBKcharactersetandZHS16GBKNCHARcharacterset
AbouttoexportspecifiedtablesviaConventionalPath...
Table(T)orPartition(T:
P)tobeexported:
(RETURNtoquit)>cmamenu要导出的表名
..exportingtableCMAMENU4336rowsexported
Table(T)orPartition(T:
P)tobeexported:
(RETURNtoquit)>要导出的表名n
Table(T)orPartition(T:
P)tobeexported:
(RETURNtoquit)>回车
Exportterminatedsuccessfullywithoutwarnings.
3.导出工具exp非交互式命令行方式的例子
$expscott/tigertables=emp,deptfile=/directory/scott.dmpgrants=y
说明:
把scott用户里两个表emp,dept导出到文件/directory/scott.dmp
$expscott/tigertables=empquery=\"wherejob=\'salesman\'andsal\<1600\"file=/directory/scott2.dmp
说明:
在exp里面加上导出emp的查询条件job='salesman'andsal<1600
(但我个人很少这样用,还是把满足条件的记录生成临时表后,再exp会方便一些)
$expparfile=username.parfile=/directory1/username_1.dmp,/directory1/username_2.dmpfilesize=2000Mlog=/directory2/username_exp.log
参数文件username.par内容
userid=username/userpassword
buffer=8192000
compress=n
grants=y
说明:
username.par为导出工具exp用的参数文件,里面具体参数可以根据需要去修改
filesize指定生成的二进制备份文件的最大字节数
(可用来解决某些OS下2G物理文件的限制及加快压缩速度和方便刻历史数据光盘等)
4.命令参数说明
关键字说明(默认)
---------------------------------------------------
USERID用户名/口令
FULL导出整个文件(N)
BUFFER数据缓冲区的大小
OWNER所有者用户名列表
FILE输出文件(EXPDAT.DMP)
TABLES表名列表
COMPRESS导入一个范围(Y)
RECORDLENGTHIO记录的长度
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将传输的表空间列表
二.导入工具imp
1.它是操作系统下一个可执行的文件存放目录/ORACLE_HOME/bin
imp导入工具将EXP形成的二进制系统文件导入到数据库中.
它有三种模式:
a.用户模式:
导出用户所有对象以及对象中的数据;
b.表模式:
导出用户所有表或者指定的表;
c.整个数据库:
导出数据库中所有对象。
只有拥有IMP_FULL_DATABASE和DBA权限的用户才能做整个数据库导入
imp步骤:
(1)createtable
(2)insertdata(3)createindex(4)createtriggers,constraints
2.导入工具imp交互式命令行方式的例子
$imp
Import:
Release8.1.6.0.0-Productionon星期五12月717:
01:
082001
(c)Copyright1999OracleCorporation.Allrightsreserved.
用户名:
test
口令:
****
连接到:
Oracle8iEnterpriseEditionRelease8.1.6.0.0-64bitProduction
WiththePartitioningoption
JServerRelease8.1.6.0.0-Production
导入文件:
expdat.dmp>/tmp/m.dmp
输入插入缓冲区大小(最小为8192)30720>
经由常规路径导出由EXPORT:
V08.01.06创建的文件
警告:
此对象由TEST导出,而不是当前用户
已经完成ZHS16GBK字符集和ZHS16GBKNCHAR字符集中的导入
只列出导入文件的内容(yes/no):
no>
由于对象已存在,忽略创建错误(yes/no):
no>yes
导入权限(yes/no):
yes>
导入表数据(yes/no):
yes>
导入整个导出文件(yes/no):
no>yes
.正在将TEST的对象导入到SCOTT
..正在导入表"CMAMENU"4336行被导入
成功终止导入,但出现警告。
3.导入工具imp非交互式命令行方式的例子
$impsystem/managerfromuser=jonestables=(accts)
$impsystem/managerfromuser=scotttables=(emp,dept)
$impsystem/managerfromuser=scotttouser=joetables=emp
$impscott/tigerfile=expdat.dmpfull=y
$impscott/tigerfile=/mnt1/t1.dmpshow=nbuffer=2048000ignore=ncommit=ygrants=yfull=ylog=/oracle_backup/log/imp_scott.log
$impsystem/managerparfile=params.dat
params.dat内容
file=dba.dmpshow=nignore=ngrants=yfromuser=scotttables=(dept,emp)
4.导入工具imp可能出现的问题
(1)数据库对象已经存在
一般情况,导入数据前应该彻底删除目标数据下的表,序列,函数/过程,触发器等;
数据库对象已经存在,按缺省的imp参数,则会导入失败
如果用了参数ignore=y,会把exp文件内的数据内容导入
如果表有唯一关键字的约束条件,不合条件将不被导入
如果表没有唯一关键字的约束条件,将引起记录重复
(2)数据库对象有主外键约束
不符合主外键约束时,数据会导入失败
解决办法:
先导入主表,再导入依存表
disable目标导入对象的主外键约束,导入数据后,再enable它们
(3)权限不够
如果要把A用户的数据导入B用户下,A用户需要有imp_full_database权限
(4)导入大表(大于80M)时,存储分配失败
默认的EXP时,compress=Y,也就是把所有的数据压缩在一个数据块上.
导入时,如果不存在连续一个大数据块,则会导入失败.
导出80M以上的大表时,记得compress=N,则不会引起这种错误.
(5)imp和exp使用的字符集不同
如果字符集不同,导入会失败,可以改变unix环境变量或者NT注册表里NLS_LANG相关信息.
导入完成后再改回来.
(6)imp和exp版本不能往上兼容
imp可以成功导入低版本exp生成的文件,不能导入高版本exp生成的文件
根据情况我们可以用
$impusername/password@connect_string
说明:
connect_string是在/ORACLE_HOME/network/admin/tnsnames.ora
定义的本地或者远端数据库的名称
5.命令参数说明
关键字说明(默认)
----------------------------------------------
USERID用户名/口令
FULL导入整个文件(N)
BUFFER数据缓冲区大小
FROMUSER所有人用户名列表
FILE输入文件(EXPDAT.DMP)
TOUSER用户名列表
SHOW只列出文件内容(N)
TABLES表名列表
IGNORE忽略创建错误(N)
RECORDLENGTHIO记录的长度
GRANTS导入权限(Y)
INCTYPE增量导入类型
INDEXES导入索引(Y)
COMMIT提交数组插入(N)
ROWS导入数据行(Y)
PARFILE参数文件名
LOG屏幕输出的日志文件
CONSTRAINTS导入限制(Y)
DESTROY覆盖表空间数据文件(N)
INDEXFILE将表/索引信息写入指定的文件
SKIP_UNUSABLE_INDEXES跳过不可用索引的维护(N)
ANALYZE执行转储文件中的ANALYZE语句(Y)
FEEDBACK显示每x行(0)的进度
TOID_NOVALIDATE跳过指定类型id的校验
FILESIZE各转储文件的最大尺寸
RECALCULATE_STATISTICS重新计算统计值(N)
下列关键字仅用于可传输的表空间
TRANSPORT_TABLESPACE导入可传输的表空间元数据(N)
TABLESPACES将要传输到数据库的表空间
DATAFILES将要传输到数据库的数据文件
TTS_OWNERS拥有可传输表空间集中数据的用户
三.unix下oracle数据库定时备份脚本(按用户备份)
以下命令可以用crontab方式每天夜里2点定时执行,脚本最多分30个文件,每个文件大小最大1G的形式将数据库导出,
如果数据库数据量很大,多于30G,则会导出不成功,此时只需根据数据量大小调整变量num的值即可。
该脚本将数据库
导出后用gzip进行压缩,然后保存到系统/data/expfiles,导出之前,会将前一天的备份移到/data/expfiles_bak,
此种备份方式可以保存最近两天的数据备份。
outfile=`date+%Y%m%d_%H%M`
num=30
i=1
files=
if[!
-d/data/expfiles];then
mkdir/data/expfiles
fi
if[!
-d/data/expfiles_bak];then
mkdir/data/expfiles_bak
fi
dfile=`ls-1/data/expfiles_bak/|awk'{if(NR<2){print$1}}'`
prefix=`echo|awk'{printsubstr("'"${dfile}"'",1,13)}'`
rm-f/data/expfiles_bak/${prefix}*
dfile=`ls-1/data/expfiles/|awk'{if(NR<2){print$1}}'`
prefix=`echo|awk'{printsubstr("'"${dfile}"'",1,13)}'`
mv/data/expfiles/${prefix}*/data/expfiles_bak
while[$i-lt$num]
do
files=$files/data/expfiles/${outfile}_$i.dmp,
i=`expr$i+1`
done
files=$files/data/expfiles/${outfile}_$i.dmp
#echo$files
expuserid=user/passwd@acctFILE=$filesfilesize=1024Mgrants=N2>>exp_rpt.log
gzip/data/expfiles/${outfile}*
Oracleexp/imp导出导入工具的使用
一.导出工具exp
1.它是操作系统下一个可执行的文件存放目录/ORACLE_HOME/bin
exp导出工具将数据库中数据备份压缩成一个二进制系统文件.可以在不同OS间迁移
它有三种模式:
a. 用户模式:
导出用户所有对象以及对象中的数据;
b. 表模式:
导出用户所有表或者指定的表;
c. 整个数据库:
导出数据库中所有对象。
2.导出工具exp交互式命令行方式的使用的例子
$exptest/test123@appdb
Enterarrayfetchbuffersize:
4096>回车
Exportfile:
expdat.dmp>m.dmp 生成导出的文件名
(1)E(ntiredatabase),
(2)U(sers),or(3)T(ables):
(2)U>3
Exporttabledata(yes/no):
yes>回车
Compressextents(yes/no):
yes>回车
ExportdoneinZHS16GBKcharactersetandZHS16GBKNCHARcharacterset
AbouttoexportspecifiedtablesviaConventionalPath...
Table(T)orPartition(T:
P)tobeexported:
(RETURNtoquit)>cmamenu 要导出的表名
.