数据库还原技术

oracle数据库还原技术

  1. 新建项目数据库文件夹 (1、将文件夹属性改为777权限。 2、为什么在backup里面新建项目数据库文件夹,因为他是泵导。其实建在这里也可以是为全导,后面会有解释)
    新建项目数据库文件夹,将文件夹属性改为777权限
  2. 使用相同服务器的数据库去还原要还原的项目数据库。(这里是26)
    使用同为26的数据库去还原hnyyjsxy的数据库
    3.导入相应的dmp文件 (1、超过15个G的新建两个表空间,不然后面报表空间不足。2、泵导dmp必须在所查询的泵目录里面不能乱放。3、全导不作要求)
    导入相应的dmp文件,注意超过15个G的新建两个表空间

–强制删除连接

select ‘alter system kill session ‘’’||s.sid||’,’||s.serial#||’’’;’ from v$session s where username=‘HNYYJSXY’;
alter system kill session ‘33,12055’;
alter system kill session ‘604,31771’;
alter system kill session ‘1160,57385’;
alter system kill session ‘1166,47577’;
alter system kill session ‘1731,7253’;
alter system kill session ‘1751,7643’;
alter system kill session ‘1756,7083’;
在这里插入图片描述

–删除用户

drop user hnyyjsxy cascade;

–删除表空间

drop tablespace hnyyjsxy including contents and datafiles;

–创建表空间

create tablespace hnyyjsxy datafile ‘/oradata/database/hnyyjsxy /hnyyjsxy .dbf’ size 1024M autoextend on next 50m maxsize unlimited;
/*create tablespace ncdx2015 datafile ‘/oradata/database/ncdx/ncdx2015.dbf’ size 3000M autoextend on next 50m maxsize unlimited extent management local segment space management auto;
*/

–创建两个表空间

create tablespace hnyyjsxy datafile ‘/oradata/database/hnyyjsxy /hnyyjsxy .dbf’ size 10m autoextend on next 10m maxsize 32767m,’/oradata/database/hnyyjsxy /hnyyjsxy 1.dbf’ size 10m autoextend on next 10m maxsize 32767m;
在这里插入图片描述

–创建用户名

create user hnyyjsxy identified by hnyyjsxy default tablespace hnyyjsxy;

–创建权限

grant resource,connect,dba,create any procedure,create any table to hnyyjsxy;

–给相关用户授权

grant read,write on directory hnyyjsxy to hnyyjsxy ;

方法一:全导还原.dmp文件

–切换到Linux系统

–切换到oracle用户

su - oracle

–查看磁盘空间

df -k

和windows里一样使用imp等命令还原数据库

imp hnyyjsxy/[email protected] file=/oradata/database/hnyyjsxy/hnyyjsxy.dmp log=/oradata/database/hnyyjsxy/hnyyjsxy.log fromuser=hnyyjsxy touser=hnyyjsxy

file和log的路径一定要正确

方法二:泵导还原.dmp文件

–建立数据泵目录(创建一次就可以了)

create directory hnyyjsxy as ‘/oradata/database/hnyyjsxy’;
新建泵目录的路径

–查看泵导目录

select * from dba_directories
查看学校所在的泵目录,如果没有就新建

–删除泵导目录

delete from dba_directories where directory_name=‘HNYYJSXY’

–切换到Linux系统

–切换到oracle用户

su - oracle

–查看磁盘空间

df -k


impdp/路径(.dmp文件存放):/oracle/dpdump

dumpfile和logfile的路径一定要正确

impdp hnyyjsxy/[email protected]/orcl dumpfile=hnyyjsxy.dmp logfile=hnyyjsxy.log schemas=hnyyjsxy directory=hnyyjsxy
/*
impdp hnyyjsxy/[email protected] schemas=hnyyjsxy dumpfile=hnyyjsxy.dmp directory=hnyyjsxy job_name=hnyyjsxy logfile=hnyyjsxy.log
*/
impdp njnydx/[email protected] schemas=hnyyjsxy dumpfile=hnyyjsxy.dmp directory=hnyyjsxy logfile=hnyyjsxy .log gfile=hnyyjsxy.log

区分全导还是泵导看日志文件是dumpfile还是file,logfile还是log

在这里插入图片描述

汇总

drop user hnyyjsxy cascade; --删除用户
drop tablespace hnyyjsxy including contents and datafiles; --删除表空间

select ‘alter system kill session ‘’’||s.sid||’,’||s.serial#||’’’;’ from v$session s where username=‘hnyyjsxy’;–强制删除连接
alter system kill session ‘33,12055’;
alter system kill session ‘604,31771’;
alter system kill session ‘1160,57385’;
alter system kill session ‘1166,47577’;
alter system kill session ‘1731,7253’;
alter system kill session ‘1751,7643’;
alter system kill session ‘1756,7083’;

–创建表空间
create tablespace szjsdx datafile ‘/oradata/database/hnyyjsxy/hnyyjsxy.dbf’ size 1024M autoextend on next 50m maxsize unlimited;
/*create tablespace ncdx2015 datafile ‘/oradata/database/ncdx/ncdx2015.dbf’ size 3000M autoextend on next 50m maxsize unlimited extent management local segment space management auto;
*/
–创建两个表空间
create tablespace hnyyjsxy datafile ‘/oradata/database/hnyyjsxy/hnyyjsxy.dbf’ size 10m autoextend on next 10m maxsize 32767m,’/oradata/database/hnyyjsxy/hnyyjsxy1.dbf’ size 10m autoextend on next 10m maxsize 32767m;

create user hnyyjsxy identified by hnyyjsxy default tablespace hnyyjsxy; --创建用户名
grant resource,connect,dba,create any procedure,create any table to hnyyjsxy; – -创建权限

–建立数据泵目录
create directory hnyyjsxy as ‘/oradata/database/hnyyjsxy’; —创建一次就可以了
select * from dba_directories --查看泵导目录
delete from dba_directories where directory_name=‘hnyyjsxy’
–给相关用户授权
grant read,write on directory hnyyjsxy to hnyyjsxy;

–切换到oracle用户
su - oracle

查看磁盘空间

df -k

(Linux)
2) 和windows里一样使用imp等命令还原数据库
imp hnyyjsxy/[email protected] file=/oradata/database/hnyyjsxy/hnyyjsxy28.dmp log=/oradata/database/hnyyjsxy/hnyyjsxy.log fromuser=hnyyjsxy touser=hnyyjsxy


impdp/路径(.dmp文件存放):/oracle/dpdump

impdp hnyyjsxy/[email protected]/orcl dumpfile=hnyyjsxy.dmp logfile=hnyyjsxy.log schemas=hnyyjsxy directory=hnyyjsxy
/*
impdp ncdx2015/[email protected] schemas=ncdx2015 dumpfile=ncdx201520161128.dmp directory=NCDX2015 job_name=ncdx2015 logfile=ncdx20161217.log
*/
impdp njnydx/[email protected] schemas=njnydx dumpfile=20171218.dmp directory=NJNYDX1 logfile=20171218.log

gfile=20171218.log