一.分类

可以分为在非归档模式下和归档模式下的完全恢复,完全恢复主要是针对归档模式下的,在非归档模式下很难做到完全恢复,除非是在做恢复时,联机重做日志还没有被重写。

二.非归档的有关性质

1.在非归档模式下,在丢失数据文件后唯一的选择是执行完整的数据库还原,而不能进行恢复;

2.还原完整的数据库是还原所用的数据文件和控制文件;

3.还原前提是要备份,因为是非归档模式所以只能进行冷备份,主要备份所有的数据文件和控制文件。对于联机重做日志文件,在正常关闭数据库的情况下,可以不备份它,但是在不正常关闭数据库的情况下要进行备份,建议备份下来,这样就可以不用重建了。

有关备份可以查看:Oracle—用户管理的备份(一)

三.非归档模式下的恢复

1.如果放数据文件的磁盘没有损坏,只是某种原因导致某些数据文件的丢失,那么只要把备份的数据库(所有数据文件和控制文件),复制到原来的地方即可。

2.如果是磁盘损坏,则不能放到原来的位置了,必须放到新的磁盘下。这样就要修改参数文件和控制文件的信息, 才能正常打开数据库。

3..现在模拟第二种情况(即磁盘损坏),首先对数据库进行冷备份,新建个目录/u01/ubackup,在/u01/oradata/wilson下的所有文件(数据文件,控制文件和联机重做日志文件)复制到ubackup目录下。命令如下,

[oracle@oracle11g ubackup]$ cp  /u01/oradata/wilson/*   /u01/ubackup

现在假设挂载在/u01/oradata/wilson目录上的磁盘损坏了,

[oracle@oracle11g wilson]$ rm -f *.dbf  (删除数据文件,模拟磁盘损坏)

现在因为这个磁盘损坏了,所以原来冷备份的数据库不能再还原到这个磁盘上了,必须加一个新的磁盘。在虚拟机上可以添加个新的磁盘(8G),然后在/u01/oradata/下新建个目录md用于挂载新的磁盘。

[oracle@oracle11g oradata]$ mkdir  md

(1)给新的磁盘进行分区,

[root@oracle11g ~]# fdisk /dev/sdb

Command (m for help): n

Partition number (1-8): 1

First cylinder (0-1866): 1

Last cylinder or +size or +sizeM or +sizeK (1-1866, default 1866): 1866

Command (m for help): p

Disk /dev/sdb (Sun disk label): 7 heads, 80 sectors, 1866 cylinders

Units = cylinders of 560 * 512 bytes

Device Flag    Start       End    Blocks   Id  System

/dev/sdb1             1      1866    522200   83  Linux native

因为磁盘较小,所以直接划分为一个分区。可以在目录/dev下看到多了一个sdb1。

(2)对sdb1做系统文件,命令如下,

[root@oracle11g dev]# mkfs.ext3  sdb1

(3)把这个磁盘挂载到/u01/oradata/md目录山,命令如下,

[root@oracle11g oradata]# mount   /dev/sdb1  /u01/oradata/md

(4)在/u01/oradata目录下可以看到,

[oracle@oracle11g oradata]$ ll

total 17

drwxr-xr-x 3 root   root     1024 Aug 29 23:10 md

drwxr-x--- 3 oracle oinstall 4096 Aug 25 17:09 wilson

md属于root,用户oralce不能使用,故修改一下权限,命令如下,

[root@oracle11g oradata]# chown -R  oracle:oinstall  md

(5)切换到oracle用户(su - oracle),把冷备份的数据库复制到/u01/oradata/md目录下,

[oracle@oracle11g md]$ cp   /u01/ubackup/*  /u01/oradata/md/

(6)修改spfile,先将spfile转换为pfile,因为pfile为文本类型,可以直接修改。

SQL> create  spfile from pfile;

File created.

把pfile 中原来和/u01/oradata/wilson/目录有关的,改为/u01/oradata/md。修改好了,再转换为spfile,命令如下,

SQL> create spfile from pfile;

File created.

(7)在控制文件中有关数据文件,联机重做日志文件和临时文件还在原来的位置,所有修改控制文件。 因为spfile修改好了,所以数据库可以进入mount状态了。

—— 这个时候可以通过查看v$datafile动态性能视图来看到数据文件的位置和名称。

SQL> select file#,name from v$datafile;

FILE#   NAME

---------- -----------------------------------

1  /u01/oradata/wilson/system01.dbf

2  /u01/oradata/wilson/sysaux01.dbf

3  /u01/oradata/wilson/undotbs01.dbf

4  /u01/oradata/wilson/users01.dbf

5  /u01/oradata/wilson/example01.dbf

6  /u01/oradata/wilson/paul01.dbf

7  /u01/oradata/wilson/sun01.dbf

8  /u01/oradata/wilson/smallundo1.dbf

9  /u01/oradata/wilson/assm_1.dbf

10  /u01/oradata/wilson/mssm_1dbf

11  /u01/oradata/wilson/paul02.dbf

FILE# NAME

-      --------- -----------------------------------

12   /u01/oradata/wilson/appl_01.dbf

12 rows selected.

修改控制文件中数据文件的名称,命令如下,

SQL> alter database rename file '/u01/oradata/wilson/system01.dbf' to '/u01/oradata/md/system01.dbf';

把每个数据文件都修改一下,或者做个批量修改。

——通过查看v$logfile动态性能视图来看联机重做日志文件的位置和名称。

SQL> select group#,member from  v$logfile;

GROUP#   MEMBER

---------- -----------------------------------

3 /u01/oradata/wilson/redo03.log

1 /u01/oradata/wilson/redo01.log

2 /u01/oradata/wilson/redo02.log

修改控制文件中联机重做日志文件的名称,命令如下,

SQL>alter database rename file '/u01/oradata/wilson/redo01.log'  to    '/u01/oradata/md/redo01.log' ;

把每个联机重做日志文件都修改一下。

——通过查看v$tempfile动态性能视图来看临时文件的位置和名称。

SQL> select file#,name from  v$tempfile;

FILE#   NAME

---------- -----------------------------------

1 /u01/oradata/wilson/temp01.dbf

2 /u01/oradata/wilson/mytemp01.dbf

修改控制文件中临时文件的名称,命令如下,

SQL>alter database rename file ‘/u01/oradata/wilson/temp01.dbf' to    ‘/u01/oradata/md/temp01.dbf';

把每个临时文件都修改一下。

(8)可以打开数据库了,命令如下,

SQL> alter database  open;

四.在前面说明了备份了联机重做日志文件的情况,下面来说明如果没有备份联机重做日志的情况。(非归档模式中)

1.恢复步骤:

(1)关闭数据库;

(2)从备份中还原数据文件和控制文件;

(3)基于cancel的恢复;

(4)在打开数据库时,带上resetlogs选项。

2.前两步参照上面介绍的,现在在目录/u01/oradata/md下删除联机重做日志文件,命令如下,

[oracle@oracle11g md]$ rm    -f    redo0*

然后进入mount状态,恢复命令如下,

SQL> recover  database  until cancel using backup controlfile;

提示输入cancel,使用如下命令,可以重新创建联机重做日志,

SQL> alter database open resetlogs;

这样既可正常打开数据库了。

Oracle—用户管理的完全恢复(一)的更多相关文章

  1. Oracle—用户管理的完全恢复(四)

    在用户管理的备份(三)中,最后打开数据库时,用了alter database open resetlogs;的命令,这里为什么用resetlogs命令? 一.resetlogs的作用 1.将当前的日志 ...

  2. Oracle 用户管理与权限控制

    Oracle 用户管理与权限控制 oracle数据库的权限系统分为系统权限与对象权限.系统权限( database system privilege )可以让用户执行特定的命令集.例如,create ...

  3. Oracle的学习一:安装与卸载、sql *plus常用命令、Oracle用户管理

    1.为什么学习oracle? 性能优越: 小型数据库 中型数据库 大型数据库 acess.foxbase mysql.sql server.informix sybase.oracle.db2 复杂量 ...

  4. Oracle—用户管理的备份(一)

    用户管理的备份(一) 一.首先要知道数据库中表空间和文件的信息,有几个性能视图,v$datafile,v$tablespace,v$tempfile,v$logfile,v$controlfile,d ...

  5. Oracle—用户管理的备份(二)

    在用户管理的备份(一)中(详见:Oracle—用户管理的备份)对用户管理备份几种情况进行了说明:接下来说明几种特别情况和DBverify的使用. 一.如果在表空间在备份模式下,主机发生了异常关闭,会出 ...

  6. 四、oracle 用户管理(Profile)

    oracle 用户管理 :profile + tablespace + role + user  一.使用profile管理用户口令概述:profile是口令限制,资源限制的命令集合,当建立数据库时, ...

  7. 三、oracle 用户管理一

    三.oracle 用户管理一 一.创建用户概述:在oracle中要创建一个新的用户使用create user语句,一般是具有dba(数据库管理员)的权限才能使用.create user 用户名 ide ...

  8. Oracle 用户管理权限

    Oracle 用户管理权限 一.创建用户的Profile文件 SQL> create profile student limit // student为资源文件名 FAILED_LOGIN_AT ...

  9. ORACLE用户管理方式下备份数据和复制数据库

    首先要明确的是,oracle数据库的备份可以分为逻辑备份和物理备份.           逻辑备份的是通过数据导出对数据进行备份,主要方式有老式的IMP/EXP和数据泵灯方式.适合变化较少的数据库,而 ...

随机推荐

  1. PHP漏洞全解(一)-PHP网站的安全性问题

    本文主要介绍针对PHP网站常见的攻击方式,包括常见的sql注入,跨站等攻击类型.同时介绍了PHP的几个重要参数设置.后面的系列文章将站在攻击者的角度,为你揭开PHP安全问题,同时提供相应应对方案. 针 ...

  2. POJ 2531 Network Saboteur

    http://poj.org/problem?id=2531 题意 :有N台电脑,每两台电脑之间都有个通信量C[i][j]; 问如何将其分成两个子网,能使得子网之间的通信量最大. 也就是说将所有节点分 ...

  3. github Git 原理简介

    由于Git是一个DVCS(Distributed Version Control System,分布式版本控制系统),不同于传统的CVS/SVN版本系统那样必须由一个中央服务器来管理所有的版本记录,它 ...

  4. ASP.NET 弹出对话框和页面之间传递值的经验总结

    今天碰到一个弹出对话框(PopUp dialog)的问题, 因该是个傻瓜问题, 但是还是让我研究了半天, 总结了一些前人经验, 拿出来跟大家分享一下! 在ASP.Net中页面之间的传值方法有很多,但是 ...

  5. Altium Designer学习: 原理图和PCB元件对应查找

    画PCB的时候,需要经常的去查看原理图上对应的元件,元件数目少还好找,数目多了找起来就比较扯淡.还要Altium Designer提供了不错的交叉查找功能. 这里我建议使用两个显示器,一个显示器放原理 ...

  6. 浅析Android的窗口

    一.窗口的概念 在开发过程中,我们经常会遇到,各种跟窗口相关的类,或者方法.但是,在 Android 的框架设计中,到底什么是窗口?窗口跟 Android Framework 中的 Window 类又 ...

  7. Ember.js demo8

    <!DOCTYPE html> <html> <head> <meta name="description" content=" ...

  8. Outlook接收qq的邮件

    1.先去qq邮箱,设置,账户 开启pop3服务,假如之前开启过,最好关闭之后重新开启 最新版本的必须使用邮箱的独立密码才可以收取邮件 (否则就算你之前开通了,也无法用你的qq账号和密码收取邮件的) 2 ...

  9. Oracle系列之表空间

    涉及到表的处理请参看原表结构与数据  Oracle建表插数据等等 创建表空间等等 select tablespace_name from dba_tablespaces;--dba权限用户查询数据库中 ...

  10. redis 用setbit(bitmap)统计活跃用户

    getspool.com的重要统计数据是实时计算的.Redis的bitmap让我们可以实时的进行类似的统计,并且极其节省空间.在模拟1亿2千8百万用户的模拟环境下,在一台MacBookPro上,典型的 ...