一.分类

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

二.非归档的有关性质

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. iOS 并发:NSOperation 与调度队列入门(1)

    一直以来,并发都被视为 iOS 开发中的「洪水猛兽」.许多开发者都将其视为危险地带,唯恐避之而不及.更有谣传认为,多线程代码应该尽力避免.笔者同意,如果你对并发的了解不够深入,就容易造成危险.但是,危 ...

  2. Java 开发者不容错过的 12 种高效工具

    Java 开发者常常都会想办法如何更快地编写 Java 代码,让编程变得更加轻松.目前,市面上涌现出越来越多的高效编程工具.所以,以下总结了一系列工具列表,其中包含了大多数开发人员已经使用.正在使用或 ...

  3. Jmeter Constant Throughput Timer 使用

    Jmeter提供了一个非常有用的定时器,称为Constant Throughput Timer (常数吞吐量定时器),该定时器可以方便地控制给定的取样器发送请求的吞吐量. 右键点击fnng.cnblo ...

  4. 关于安装完Node.js 出现node is not dedined 问题

    今天想来接触下Node.js 神奇  怀着揣揣的心 从官网下载了windows 的64位mis版本  几个下一步就顺利安装完毕了 接着跟着新手教程走  不懂教程里的 苹果shell 是什么 反正就是检 ...

  5. [jobdu]矩形覆盖

    推导一下,就是斐波那契数列那样的.但是要注意的是,int存不下,算一下需要long long才行,因为是指数级上升的. #include <cstdio> #define LEN 75 # ...

  6. .NET事件的指导原则

    C#允许编写所需的各种类型的事件.但是,为了与.NET Framwork的组件相兼容,开发人员必须遵循微软为此建立的一系列指导原则.这些指导原则的核心是,事件处理程序必须拥有两个参数.第一个参数是一个 ...

  7. WPF 3D 小小小小引擎 - ·WPF 3D变换应用

    原文:WPF 3D 小小小小引擎 - ·WPF 3D变换应用 WPF可以提供的3D模型使我们可以轻松地创建3D实体,虽然目前来看还很有一些性能上的问题,不过对于一些简单的3D应用应该是可取的,毕竟其开 ...

  8. Android Studio 快捷键 for Mac OS X 10.5+

    Action Mac OSX Win/Linux 注释代码(//) Cmd + / Ctrl + / 注释代码(/**/) Cmd + Option + / Ctrl + Alt + / 格式化代码 ...

  9. 屏幕尺寸,屏幕分辨率,屏幕密度,各种长宽单位(px,sp,dp,in.pt,mm)

    常见长宽单位表 名称 单位缩写 单位全拼 介绍 屏幕尺寸 '' 或 in inch 屏幕的大小,通常用屏幕对角线的长度表示.单位是寸 屏幕分辨率 px pixels 整个屏幕的像素数,一般用屏幕的像素 ...

  10. 应付描述性弹性域 Description Flexfield

    (N) AP > Setup > Flexfield > Description > Segments To define your descriptive flexfield ...