ORACLE之逻辑备份–导出
- 通过exp导出,将表的数据,或者用户下所有的对象导出,或者导出全库(除了SYS)
导出导入其他用户需要的权限:
EXP_FULL_DATABASE:导出其他用户需要的权限
IMP_FULL_DATABASE:导入其他用户需要的权限
SQL> grant exp_full_database to hr;
SQL> grant imp_full_database to hr;
查看用户是否具有导入导出其他用户的权限:
SQL> select * from dba_role_privs where grantee = ‘HR’;
命令行方式导出:
- 导出全库数据(除了sys用户)
exp system/oracle full=y file=/u01/app/oracle/exp/exp_orcl_full_20210216.dmp log=/u01/app/oracle/exp/exp_orcl_full_20180216.log
- 导出用户下所有表
exp system/oracle owner=hr file=/u01/app/oracle/exp/exp_hr_20210216.dmp log=/u01/app/oracle/exp/exp_hr_20180216.log compress=n
- 导出一个或多个表
exp hr/hr table=employees, departments file=/u01/app/oracle/exp/exp_hr_multi_tables_20210216.dmp log=/u01/app/oracle/exp/exp_orcl_multi_tables_20180216.log
- 导出
exp hr/hr tables=employees file=/u01/app/oracle/exp/exp_hr_employees_query.dmp query=“where employee_id > 7800”
优缺点
- 缺点:空表无法导出,无法并发导出,数量大时导出速度较慢。
- 优点:简单,可以从客户端导出。
参数说明
ignore 默认为N,不忽略。ignore=y 忽略导入过程中出现的错误,继续导入。
当表存在时,可使用该参数。导入过程可能产生一些错误,不是因为表的存在造成的,最好使用data_only。
feedback=1000 1000行打印一个点
COMPRESS 压缩,Default: y
buffer=1024 设定导出的数据缓冲大小为1024字节,默认大小取决于OS,buffer_size = rows_in_array * maximum_row_size
filesize=1024 指定导出文件最大字节数,默认单位字节,可以是KB,MB,GB。64位OS,最大不限。
exp system/oracle owner=medapp filesize=1MB file=/oradata/exp/exp_medapp_fsize_1.dmp,/oradata/exp/exp_medapp_fsize_2.dmp log=/oradata/exp/exp_medapp_fsize.log
query 按查询条件导出若干行数据
exp scott/tiger TABLES=emp QUERY=“WHERE job=‘SALESMAN’ and sal <1600”