一、常规导入导出
1、导出dmp文件
说明: 导出dmp文件一般用于数据库备份,或者数据迁移
2、导出数据的三种方式
- 全库导出(这种方式一般不用)
- 按用户导出
- 按表导出
3、exp常用命令解释
1、全库导出
exp test/123456@ORCL full=y file=d:\expdata.dmp log=explog.txt
2、按用户导出
exp test/123456@ORCL owner=test file=d:\expdata.dmp log=explog.txt
3、按表导出
exp test/123456@ORCL tables=test.test file=d:\expdata.dmp log=explog.txt
4、导入数据
1、先查询数据库表空间
SELECT TBS 表空间名,
SUM(TOTALM) 总共大小M,
SUM(USEDM) 已使用空间M,
SUM(REMAINEDM) 剩余空间M,
SUM(USEDM) / SUM(TOTALM) 使用率
FROM (SELECT B.FILE_ID ID,
B.TABLESPACE_NAME TBS,
B.FILE_NAME NAME,
B.BYTES / 1024 / 1024 TOTALM,
(B.BYTES - SUM(A.BYTES)) / 1024 / 1024 USEDM,
SUM(A.BYTES) / 1024 / 1024 REMAINEDM
FROM DBA_FREE_SPACE A, DBA_DATA_FILES B
WHERE A.FILE_ID = B.FILE_ID
GROUP BY B.TABLESPACE_NAME, B.FILE_NAME, B.FILE_ID, B.BYTES
ORDER BY B.TABLESPACE_NAME) GROUP BY TBS;
2、导入前先创建用户并授权
2.1、创建用户
create user test identified by test default tablespace TEST_SPACE
其中 TEST_SPACE代表指定的表空间,导入的数据到指定的表空间中。
2.2、授权用户操作
grant connect,resource,dba to test
2.3、执行导入操作
imp test/123456@TS fromuser=test_2 touser=test_2 file=d:\expdata.dmp;
二、采用数据泵快速导入导出
1、数据泵导入条件
- 数据泵必须是oracle 10.1以上版本才支持
- 数据泵必须登录到数据库服务器,在数据库服务器上执行相关操作
2、数据泵导入
创建逻辑目录,该命令不会在操作系统创建真正的目录,最好以system等管理员创建。
create directory dpdata1 as 'd:\test\dump';
查看管理理员目录(同时查看操作系统是否存在,因为Oracle并不关心该目录是否存在,如果不存在,则出错)
select * from dba_directories;
给scott用户赋予在指定目录的操作权限,最好以system等管理员赋予。
grant read,write on directory dpdata1 to scott;
3、导出数据
按用户导
expdp scott/tiger@orcl schemas=scott dumpfile=expdp.dmp DIRECTORY=dpdata1;
并行进程parallel
expdp scott/tiger@orcl directory=dpdata1 dumpfile=scott3.dmp parallel=40 job_name=scott3
按表名导
expdp scott/tiger@orcl TABLES=emp,dept dumpfile=expdp.dmp DIRECTORY=dpdata1;
按查询条件导
expdp scott/tiger@orcl directory=dpdata1 dumpfile=expdp.dmp Tables=emp query='WHERE deptno=20';
按表空间导
expdp system/manager DIRECTORY=dpdata1 DUMPFILE=tablespace.dmp TABLESPACES=temp,example;
导整个数据库
expdp system/manager DIRECTORY=dpdata1 DUMPFILE=full.dmp FULL=y;
4、数据泵导出
导到指定用户下
impdp scott/tiger DIRECTORY=dpdata1 DUMPFILE=expdp.dmp SCHEMAS=scott;
改变表的owner
impdp system/manager DIRECTORY=dpdata1 DUMPFILE=expdp.dmp TABLES=scott.dept REMAP_SCHEMA=scott:system;
导入表空间
impdp system/manager DIRECTORY=dpdata1 DUMPFILE=tablespace.dmp TABLESPACES=example;
导入数据库
impdb system/manager DIRECTORY=dump_dir DUMPFILE=full.dmp FULL=y;
追加数据
impdp system/manager DIRECTORY=dpdata1 DUMPFILE=expdp.dmp SCHEMAS=system TABLE_EXISTS_ACTION