1.前言
oracle常用的备份工具是导出工具expdp和导入命令impdp命令
2.使用
2.1.创建备份目录
create or replace directory exp as '/home/oracle/backup/exp';##创建文件
2.2.给某个用户赋予对这个备份目录权限
grant read,write on directory exp to system; ##比如说给这个system用户赋予对这个目录读写权限 grant 'EXP_FULL_DATABASE' to system; ##给system用户赋予数据导出权限
2.3数据导出
##导出全库
expdp system/system#123 directory=exp dumpfile=实例名_expdp%U.dmp logfile=实例名_expdp.log schemas=用户1,用户2,... exclude=statistics parallel=4
##导出system用户下的t表
expdp system/system#123 directory=exp tables=system.t dumpfile=表名_expdp%U.dmp logfile=表名_expdp.log exclude=statistics parallerl=4
导入完成后若有报错:可以执行grep ORA-实例名_expdp.log 快速地查找错误
2.4数据的导入
1.create or replace directory imp as '/home/oracle/backup/imp';##创建文件
2.grant read,write on directory imp to system;
3.grant 'imp_ful_database' to system ##赋予导入权限
##全库导入
impdp system/system#123 directory=imp dumpfile=实例名_expdp%U.dmp logfile=实例名_impdp.log full=y parallel=2
补充,以上是在一台oracle服务器上就行备份和恢复的,其实在生产中我们用的比较多的是两台oracle服务器上进行数据的迁移和恢复
3.情景
如果有oracle两台服务器,其中一台是旧的,一台是新的,这里要求:需要将就的数据库中的数据迁移到新的数据库中
说明:这里的关于一些准备工作暂时就不说了,比如说有关于旧库中的基线、还有旧库中的待迁移的对象(这个是重点)等等
这里只说说关于数据的导入和导出:
源库上操作:
##创建存放dump文件的目录,并授予导出和导入用户读写权限,目录需要有足够空间存放dump,也可以使用默认的data_pump_dir. create directory <exp_tab_dir> as '/oradata/ext_tab'; grant read,write on directory <exp_tab_dir> to <exp_user>; #授予导出用户EXP_FULL_DATABASE权限 grant 'EXP_FULL_DATABASE' to <exp_user>;
源库上进行数据导出(全库)
expdp <exp_user>/password directory=data_pump_data dumpfile=实例名_expdp%U.dmp logfile=实例名_expdp.log schemas=<schema_name1>,<schema_name2> exclude=statistics parallel=4
该命令会将源库中的数据导出到data_pump_data这个目录下,该data_pump_data只是一个虚拟名,对应的真实路径是在create directory时 as后面的内容此时它实际上的目录,
目标库中操作
create directory <imp_tab_dir> as '/oradata/imp_tab'; grant read,write on directory <imp_tab_dir> to <imp_user>; #授予导入用户EXP_FULL_DATABASE权限 grant 'imp_FULL_DATABASE' to <imp_user>;
当上述源库的数据被导出后,然后再把导出的数据库给放在目标库中对应的目录下面,在这里就是我在上面创建的as后面的路径/oradata/imp_tab
目标库进行数据的导入(全库)
impdp <exp_user>/password directory=<imp_tab_dir> dumpfile=实例名_expdp%U.dmp logfile=实例名_impdp.log full=y parallel=4
注意:
- 在创建导出和导入目录都用data_pump_dir,这里也可以用别的名字替代,然后导出的实际路径用/oradata/exp_tab, 导入的实际路径用/oradata/imp_tab
- 以上两个实际的路径需要我们用oracle用户用户下手工进行创建出来
- 导出和导入的dumpfile后面的内容一定要相同,而logfile后面的内容可以不相同,但最好一个实例名_expdp.log 另一个是实例名_impdp.log.