目录
一、导入:imp,导出:exp
二、导入:impdp,导出:expdp
Oracle导入导出数据库可以使用两种命令
1.创建表空间
create tablespace ekp1
datafile 'D:\app\orcl\ekp.dbf'
size 8G
autoextent on
next 100M
maxsize unlimited
extent management local autoallocate
segment space management auto
2.增加表空间
alter tablespace ekp1 datafile 'D:\app\orcl\ekp1.dbf' size 8G;
alter tablespace ekp1 datafile 'D:\app\orcl\ekp2.dbf' size 8G;
3.创建用户并指定表空间
create user tengpengfei identified by 123 default tablespace ekp1
4.给用户权限
grant dba to tengpengfei
5.导入/导出数据库,导入/导出数据库有两种命令imp/exp,impdp/expdp
导入导出只能使用对应的命令
IMP
imp 用户名/密码@数据库实例名 --创建实例
file=D:\20190811.dmp --待导入的dmp文件
log=D:\20190811.log --导入时生成的日志文件
[ fromuser=导出数据的用户名] --导出dmp文件的用户(根据用户名导入数据时配置)
[ touser=导入数据的用户名] --导入dmp文件的用户(根据用户名导入数据时配置)
[full=y] --导入dmp文件中的全部内容
ignore=y --导入时如果没有表,创建表导入数据,有表,忽略表导入数据
注意:full和fromuser,touser不能同时使用
EXP
exp 用户名/密码@数据库实例 --创建实例
file=D:\20190811.dmp --待导出的dmp文件
log=D:\20190811.log --导出时生成的日志文件
[owner=(用户名)] --导出哪个用户下的表和数据
[tables=(test1,test2)] --导出test1表和test2表
[query=\" where filed like'%0'\"] --导出指定条件结果
[full=y]
这个命令可以导入到指定的表空间,或者指定用户,而imp/exp命令,导出时是什么用户/表空间,导入时不能修改。
源数据:
表空间ekp
用户ekp12
目标数据
表空间ekp1
用户tengpengfei
前三步和上面是一致的
4.创建逻辑目录: create directory dump_dir as 'd:\';
5.给导出用户赋予读写权限: grant read,write on directory dump_dir to tengpengfei;
6.导入\导出
IMPDP
impdp 用户名/密码@数据库实例
directory=dump_dir
dumpfile=20190811.dmp
remap_schema=ekp12:tengpengfei
remap_tablespace=ekp:ekp1
logfile=20190811.log
EXPDP
expdp 用户名/密码@数据库实例
schemas=ekp12
directory=dump_dir
dumpfile=20190811.dmp
logfile=20910811.log
注意:dump_dir是逻辑目录,使用以下命令创建,查看,删除
create directory dump_dir as 'd:\test';
select * from dba_directories;
drop directory dump_dir;
注意:在导入时,可能会卡死,当我们想删除用户再次创建用户,再次重新执行以上命令出现异常
①:ora-01940:无法删除当前已连接用户,我的原因是强行终止导入导致用户tengpengfei被锁住了,可以使用
查看用户对应的session:select username,sid,serial# from v$session where username='tengpengfei';
删除session信息: alter system kill session'对应sid,对应serial#';
再次删除用户即可完成。
②ora-28000:账户已被锁定
解锁账户:alter user tengpengfei account unlock;
其他的一些命令:
删除表空间:drop tablespace ekp1 including contents and datafiles;
删除用户以及用户下的数据:drop user tengpengfei cascade
查看表数据硬盘上所在位置:select * from dba_data_files
查看指定用户下的数据量:select sum(s.bytes)/1024/1024 "size(MB)" from dba_segments s where s.owner='tengpengfei'