基本概念
备份(Backup)——是对存储在数据库里的数据的一个拷贝,分为物理备份和逻辑备份。物理备份是对于文件在某个时间点的一个拷贝;逻辑备份是提取数据到一个特定格式的文件。
恢复(Restore)——从存储媒体中将提取和恢复备份的文件。
还原(Recovery)——根据数据文件、日志将数据库完全或者恢复到指定时间点。
备份工具
imp/exp
Oracle配备的标准工具。可以跨版本,跨平台。imp/exp为客户端工具,可以在服务器及客户端使用。
$ export NLS_LANG="Simplified Chinese_CHINA".AL32UTF8
如果NLS_LANG设置不正确,会出现EXP-00091错误。
$ exp system/password@iotiap file=iotiap-10.1.1.10-$(date +%Y%m%d%-H%M%S).dmp owner=IOTIAP
注意Oracle在数据库中存在的空表默认没有分配空间,导出时不会导出这些空表,如果要在导出中保留这些空表,需要先分配空间给这些空表,可以批量生成数据库修改语句,如下,完成后全部执行再次导出就可以了。
select 'alter table '||table_name||' allocate extent;' from user_tables where num_rows=0 or num_rows is null
impdb/expdb
称为数据泵,是Oracle 10g开始提供的一种新的导入导出方式。大幅提升了导入导出效率,对于版本要求较严格,必须版本一致。impdp/expdp为服务器端工具,仅在Oracle服务器端的机器上使用。
0)注意事项:
- 这种方式是在服务器端进行的,所以只能导出文件至本机。
- 要处理别名、序列、表空间、表
- 表空间需要预先建立对应的表空间
1)准备工作
要先建立dump目录和授权
mkdir \home\oracle\dump sqlplus / as sysdba SQL> create or replace directory dump_dir as '\home\oracle\dump'; SQL> grant read,write on directory dump_dir to hunter;
查看dump目录
select * from dba_directories
注意:要确认操作系统中存在这个实际的目录,创建语句不会创建目录,语句使用system用户执行;
2)执行导出
[11g]
$ expdp surfing_vbox/db.2.0708@192.168.15.21:1521/surfing dumpfile=surfing_vbox-15.21-20101021-0918.dmp schemas=SURFING_VBOX
3)执行导入
[11g]
$ impdp surfing_vbox/ocs_test directory=dump_dir dumpfile=surfing_vbox-15.21-20101021-0918.dmp schemas=SURFING_VBOX TABLE_EXISTS_ACTION=TRUNCATE
4)并行导出
parallel=4 dumpfile=dbdata_%U.dmp