前言
oracle 数据库,备份与恢复,做个笔记。
一、概述
基于sqlplus的方式备份与还原dmp文件
查询数据文件存放位置:
select name from v$datafile;
二、oracle数据备份
1、打开CMD窗口,登录 dba 用户
输入: sqlplus system/密码@orcl (一般管理员登录)--------连接本机oracle数据库
--输入: sqlplus system/密码@IP:端口/orcl (一般管理员登录)--------连接非本机oracle数据库
3、创建一个dmp的目录:
create directory 目录名 as 'D:\DB\bakdmp';
4、查询是否有此目录:
select * from dba_directories; --不要忘记分号
5、在磁盘中新建D:\DB\bakdmp目录
6、赋于要导出数据表的所属用户权限,
grant read,write on directory 目录名 to 用户名;,授权成功以后输入exit 退出sql。
7、开始数据备份,
expdp system/密码@orcl directory=目录名 dumpfile=文件名.dmp logfile=文件名.log schemas=方案名
8、目录D:\DB\bakdmp下面可以看到备份文件
备份完成。
三、oracle数据还原
说明:hr861user-用户名,hr861pwd-用户密码,hr861_STANDARD-永久表空间名,hr861_tmpdata-临时表空间,hr861Directory-目录名
1.打开sqlplus,登录 dba 用户
输入: sqlplus system/密码@orcl (一般管理员登录)--------连接本机oracle数据库
--输入: sqlplus system/密码@IP:端口/orcl (一般管理员登录)--------连接非本机oracle数据库
2.新建表空间
新建永久表空间
create tablespace hr861_STANDARD logging datafile 'D:\DB\bakdmp\xxx.DBF' size 50m autoextend on next 50m maxsize 20480m extent management local;
--删除表空间:DROP TABLESPACE tablespace_name INCLUDING CONTENTS AND DATAFILES;
新建临时表空间
CREATE TEMPORARY TABLESPACE hr861_tmpdata TEMPFILE 'D:\DB\bakdmp\xxx.DBF' SIZE 32M AUTOEXTEND ON NEXT 32M MAXSIZE UNLIMITED EXTENT MANAGEMENT LOCAL;
--表空间扩容的三种方法:
--方法一:增大所需表空间大小: alter database datafile 'D:\DB\bakdmp\xxx.DBF' resize 500M;
--方法二:增加数据文件个数: alter tablespace system add datafile 'D:\DB\bakdmp\xxx.DBF' size 1G;
--方法三:设置表空间自动扩展: alter database datafile 'D:\DB\bakdmp\xxx.DBF' autoextend on next 500m maxsize 10000m;
3.新建用户指定表空间-强烈建议这么做
create user hr861user identified by hr861pwd default tablespace hr861_STANDARD temporary tablespace hr861_tmpdata;
--修改用户密码:alter user 用户名 identified by 新密码;
--删除用户 :drop user 用户名 cascade;
--修改用户表空间:alter user 用户名 default tablespace 表空间名;
4.更新dba权限
grant connect,resource,dba to hr861user;
--创建和会话:grant create session to 用户名;
--连接、资源权限:grant connect,resource to 用户名;
--管理员权限:grant dba to 用户名;
5.创建目录:
create or replace directory hr861Directory as 'D:\DB\bakdmp';
6.查询有哪些directory
select * from dba_directories;
7.赋予用户数据泵目录权限
grant read,write on directory hr861Directory to hr861user;
8.导入命令:打开CMD窗口(不在Sql plus中执行)
impdp 用户名/密码@实例 directory= 文件目录 dumpfile=XXX.dmp
impdp hr861user/hr861pwd@orcdemo directory= hr861Directory dumpfile=xxx.dmp logfile=xxx.log;
9.在plsql或者其他oracle检查数据完整性,脚本如下:
select t.table_name , t.num_rows from user_tables t order by t.num_rows desc
还原完成。
#Over!!!