oracle用得不是很多,但总体用起来也没啥问题,因为大多数时候就是增删查改的操作,这些跟其他数据库也没多大区别。不过当遇到备份和恢复的时候,才发现区别是比较大的,因此留下这篇文章做一个记录,方便以后查阅。

当然要备份和恢复数据库,我们一定要先安装数据库,这里oracle 12c在安装的时候有个需要注意的地方,如下图


注意到那个“创建为容器数据库”的选项了吗?那个钩一定取消。本次的恢复和备份都在非容器数据库中进行了,如果你安装的时候已经创建为容器数据库了,本方法可能就不适合你做备份和恢复了。

好了说了那么多就直接进入正题了(啰嗦一下,所有备份和恢复都是用sys账号操作

先说备份操作,如下

1、  首先通过

select *from dba_directories;

查询备份的路径

DATA_PUMP_DIR就是备份文件所在位置

2、 select *from dba_tablespaces;查询表空间,恢复端与备份端表空间要保持一致

3、  通过以下命令,直接在命令行界面运行完成备份

expdp 'sys/密码 as sysdba'  directory=DATA_PUMP_DIR schemas=表空间所在用户 dumpfile=备份文件名.dmp logfile=日志文件名.log

再来说下恢复,因为我不是在本机恢复,而是在另一台机器恢复,所以过程要繁琐一点。如果你只是在本机执行备份和恢复操作,那么只需用到恢复操作的最后一步即可。

1、首先通过

select *from dba_directories;

查询备份的路径

将备份文件放到DATA_PUMP_DIR路径下

 

2、创建表空间

create table space 表空间名称(与你备份时的表空间名称保持一致)

datafile'D:\database\oracle_data\表空间名称.dbf'设置表空间文件位置

size 2048m  --设置初始大小

autoextend on 

next 50m

extent management local;

 

3、创建用户

create user 用户名 identified by 密码(用户也跟备份时的所在用户名保持一致)

default tablespace 表空间名称

temporary tablespace temp;

 

 

 

4、给用户授权

GRANT

CREATE SESSION,        

CREATE ANY SEQUENCE,    

CREATE ANY TABLE,       

CREATE ANY VIEW ,       

CREATE ANY INDEX,       

CREATE ANY PROCEDURE,   

CREATE ANY DIRECTORY,   

SELECT ANY TABLE,

SELECT ANY DICTIONARY,

INSERT ANY TABLE,

UPDATE ANY TABLE,

DEBUG ANY PROCEDURE

to 用户名(及刚创建的这个用户);

 

5、执行恢复(在运行中cmd命令调出命令行界面,直接在命令行中执行以下语句)

impdp 'sys/密码 as sysdba' directory=DATA_PUMP_DIR schemas=表空间所在用户 dumpfile= 备份文件名.dmp


好了这样就完成了oracle 12c的备份与恢复


Logo

权威|前沿|技术|干货|国内首个API全生命周期开发者社区

更多推荐