注:备份还原oracle数据库的方式有很多种,本文只讲解使用expdp、impdp数据泵方式备份与还原(恢复)数据库,此种方式可以备份数据库表以及表中的数据
一、备份
step1:使用system登录oracle
打开DOS命令行界面,使用system用户登录oracle,格式:sqlplus 用户名/密码@实例名(或者使用plsql、sqlyog等工具登录)。
C:\Users\Administrator>sqlplus system/000000@orcl?
step2:创建逻辑目录
创建备份逻辑目录,此目录不是真实的目录(单引号里面的内容是备份的目录)
SQL>create directory data as ‘D:\app\Administrator\admin\orcl\dpdump’;
注:如果目录已经存在,需要先删除再创建(如果不存在,则忽略下面两个sql):??
SQL>drop directory data;
SQL>create directory data as ‘D:\app\Administrator\admin\orcl\dpdump’;
step3:给用户授权
SQL>grant read, write on directory data to jeecg_test;
step4:导出数据库
退出数据库,进入DOS命令行界面,执行下列命令导出数据库
expdp jeecg_test/000000@orcl directory=data dumpfile=JEECG_20180226.DMP logfile=jeecg.log schemas=jeecg_test
解读:
directory是step2创建的目录
dumpfile是导出的文件名,存放于directory目录里
schemas后面是用户名
二、还原数据库前准备工作
注:在本地或者另外一台电脑都可以进行还原
step1:删除表空间与用户
导入前需要先删除原来的表空间和用户,如果之前没创建过该表空间,则忽略此步骤
drop tablespace JEECG_TEST including contents and datafiles;
drop user jeecg_test cascade;
step2:创建表空间与用户
create tablespace JEECG_TEST datafile ‘D:\app\shuhao\Administrator\orcl\dpdump\JEECG_TEST.DBF’ size 50m? autoextend on;
注:单引号里面的文件名与表空间名字相同
create user jeecg_test identified by 000000 default tablespace JEECG_TEST temporary tablespace temp;
step3:给用户授权
grant connect to JEECG_TEST;?
grant resource to JEECG_TEST;?
grant dba to JEECG_TEST;
注:dba为最高级权限,可以创建数据库,表等。
三、还原
step1:使用system登录oracle
打开dos命令行界面,使用system登录oracle,格式:sqlplus 用户名/密码@实例名(或者使用plsql、sqlyog等工具登录)。
C:\Users\Administrator>sqlplus system/000000@orcl?
step2:创建逻辑目录
创建还原目录(单引号里面的内容是导入的目录,与前面创建的目录相同)
SQL>create directory data as ‘D:\app\Administrator\admin\orcl\dpdump’;
注:如果目录已经存在,需要先删除再创建(如果不存在,则忽略下面两个sql):??
SQL>drop directory data;
SQL>create directory data as ‘D:\app\Administrator\admin\orcl\dpdump’;
step3:给目标用户授权
SQL>grant read,write on directory data to jeecg_test;
step4:创建真实目录,存放备份文件
在相应位置创建真实目录,把备份的文件JEECG_20180226.DMP放到真实目录里
step5:导入备份文件
DOS命令行执行下列命令
impdp jeecg_test/000000@orcl directory=data dumpfile=JEECG_20180226.DMP?logfile=jeecg.log remap_schema =JEECG_TEST:JEECG_TEST
注:remap_schema=JEECG_TEST:JEECG_TEST表示把左边的JEECG_TEST用户的数据,导入到右边的JEECG_TEST用户里面