在用户管理的备份(三)中,最后打开数据库时,用了alter database open resetlogs;的命令,这里为什么用resetlogs命令?

一.resetlogs的作用

1.将当前的日志序列号重置为1,抛弃以前所有日志信息,你可以在操作系统上删除它们;

2.在非归档模式下,如果联机重做日志丢失,则可以创建它;参考:Oracle—用户管理的完全恢复(一)

3.更新控制文件里面的信息;

4.更新所有当前的数据文件,联机重做日志文件和相关的归档日志文件并用新的SCN号开始。

所以你使用备份的控制文件或者不完全恢复,则必须使用resetlogs来打开数据库。

在归档文件名格式中有个参数%r,它就是表示incarnation号的。

二.数据在数据库中的位置

在commit后数据会被放在联机重做日志中;如果发生检查点,则把数据放在数据文件中;若触发归档,则数据会放在归档日志中。

下面来实验证明一下,上面的结论,

1.创建个表,插入数据,

SQL> create table t3(id int,name char(10))  tablespace app1;

Table created.

SQL> insert into t3 values(0,'apple');

1 row created.

2.查看当前的联机重做日志文件

SQL> select group#,members,status from  v$log;

GROUP#    MEMBERS STATUS

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

1          1 CURRENT

2          1 INACTIVE

3          1 ACTIVE

可以看到当前的联机重做日志文件是1号,再通过查看视图v$logfile可以看到1号是哪个。

SQL> select * from v$logfile;

GROUP# STATUS  TYPE    MEMBER                              IS_

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

1         ONLINE  /u01/oradata/wilson/redo01.log      NO

3         ONLINE  /u01/oradata/wilson/redo03.log      NO

2         ONLINE  /u01/oradata/wilson/redo02.log      NO

3.查看联机重做文件

因为还没有提交,来查看一下redo01.log ,

[oracle@oracle11g wilson]$ strings  redo01.log  |   grep apple

看不到数据,

然后提交数据,可以看到

[oracle@oracle11g wilson]$ strings redo01.log | grep apple

apple

有了插入的数据了。

4.查看数据文件

[oracle@oracle11g wilson]$ strings  app1_01.dbf  |  grep apple

在内存中的脏数据没有写到数据文件中之前是没有结果的,

手动发生检查点,

SQL> alter system  checkpoint;

System altered.

再次查看数据文件,

[oracle@oracle11g wilson]$ strings app1_01.dbf | grep apple

apple     ,

可以查看到数据了。

5.查看归档日志文件

因为联机重做日志文件还没归档,所有手动归档一下,

SQL> alter system archive log current;

System altered.

查看新归档的日志文件,

[oracle@oracle11g arch]$ strings sun_1_0000000004_824956547.arc |  grep apple

apple

可以看到有数据在,从而很清楚了每个步骤数据会在什么地方。

三.只读表空间的恢复

1.如果一直是只读表空间,损坏了则直接还原就可以;

2.备份时候是只读表空间,然后改为可读可写表空间,损坏了则还原和恢复即可;

3.备份时候是可读可写表空间,然后改为只读表空间,损坏了则还原和恢复即可;

特别注意是,只读表空间会影响到控制文件,当使用重建的控制文件,使用备份的控制文件时(不含有只读表空间的信息)或者是重命名数据文件时,要使用命令alter database rename ‘......’ to ‘........’;来修改控制文件。

下面通过备份控制文件的脚本来查看在有无只读表空间时,控制文件有什么不同。

备份控制文件,

SQL> alter database backup controlfile to trace as '/tmp/t1.sql';

Database altered.

将app2表空间改为只读表空间,

SQL> alter  tablespace app2 read only;

Tablespace altered.

再备份控制文件,

SQL> alter database backup controlfile to trace as '/tmp/t2.sql';

Database altered.

对比在有无只读表空间下的控制文件备份,备份是创建控制文件的脚本。

[oracle@oracle11g tmp]$ diff t1.sql t2.sql

70d69

<   '/u01/oradata/wilson/app2_01.dbf',

98a98,103

> -- Files in read-only tablespaces are now named.

> ALTER DATABASE RENAME FILE 'MISSING00006'

>   TO '/u01/oradata/wilson/app2_01.dbf';

>

> -- Online the files in read-only tablespaces.

> ALTER TABLESPACE "APP2" ONLINE;

140d144

<   '/u01/oradata/wilson/app2_01.dbf',

165a170,175

> -- Files in read-only tablespaces are now named.

> ALTER DATABASE RENAME FILE 'MISSING00006'

>   TO '/u01/oradata/wilson/app2_01.dbf';

>

> -- Online the files in read-only tablespaces.

> ALTER TABLESPACE "APP2" ONLINE;

可以看到控制文件中的差异。

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

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

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

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

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

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

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

  4. 三、oracle 用户管理一

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

  5. Oracle 用户管理权限

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

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

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

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

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

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

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

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

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

随机推荐

  1. 使用Java程序调用MatLab

    Java代码实现的计算难免会显得不够高效.而利用MATLAB写好相应的计算函数,然后打包成jar包供Java调用,在某些情况下会更加方便.或者有些时候会涉及到使用Java调用MatLab展现一些二维三 ...

  2. Windows 2003 服务器安全设置-批处理 (附参考链接)

    长期维护windows服务器终结出来的安全设置批处理与大家分享,复制以下全部内容用记事本另存为bat或者cmd执行 ===================分隔符号=================== ...

  3. C#: 方法的默认参数

    大家都知道在C++中,我们可以为方法的参数指定一个默认值,像这样: void foo(int i = 100); 当我们以这种形式调用方法的时候: foo(); 实际上参数i被赋于了默认值,所以相当于 ...

  4. jsp两种包含方式

    jsp中存在两种文件的包含指令 1.<%@include file="xxx.jsp" %> 2.<jsp:include page="xxx.jsp& ...

  5. mysql处理大数据量的查询速度究竟有多快和能优化到什么程度

    mysql处理大数据量的查询速度究竟有多快和能优化到什么程度 深圳-ftx(1433725026) 18:10:49  mysql有没有排名函数啊 横瓜(601069289) 18:13:06  无 ...

  6. jquery操作select 的value和text值

    获取select 的text值: $('#testSelect option:selected').text(); 获取select 的value值: $('#testSelect').val(); ...

  7. 对于 Javascript 闭包理解

    一.变量的作用域 要理解闭包,首先必须理解Javascript特殊的变量作用域. 变量的作用域无非就是两种:全局变量和局部变量. Javascript语言的特殊之处,就在于函数内部可以直接读取全局变量 ...

  8. AP(应付帐管理)

    --更新供应商地点 PROCEDURE update_vendor_site(p_init_msg_list IN VARCHAR2 DEFAULT fnd_api.g_false, x_return ...

  9. TextView 实现复制文本功能

    Android api 11 以后可以直接设置 android:textIsSelectable="true" <TextView android:layout_width= ...

  10. hdu 1861-游船出租

    游船出租                                                                                   Time Limit: 1 ...