若系统中缺少联机日志,以resetlogs方式重建控制文件,那么当我们以alter database open resetlogs方式打开数据库时,新生成的联机日志会位于何处?

一:下面分别讨论几种情况

1 如果在重建控制文件语句中未指定日志条目,未指定omf参数,那么resetlogs 打开数据库时,自动创建的日志位于何处

2 如果在重建控制文件语句中未指定日志条目,仅指定了omf参数db_create_file_dest, 那么resetlogs 打开数据库时,自动创建的日志位于何处

3 如果在重建控制文件语句中指定了日志条目,指定了omf参数,那么resetlogs 打开数据库事,自动创建的日志位于何处

4 如果在重建控制文件语句中未指定日志条目,指定了omf参数db_create_file_dest和 db_create_online_log_dest_n 那么resetlogs 打开数据库时,自动创建的日志位于何处

二:实验
实验1 重建控制文件语句未指定日志条目,未指定omf参数,那么resetlogs打开数据库后日志位置

1 实验前提

    重建控制文件中不指定日志条目语句如下

STARTUP NOMOUNT

CREATE CONTROLFILE REUSE DATABASE "ZBCRM" RESETLOGS  ARCHIVELOG

    MAXLOGFILES 16

    MAXLOGMEMBERS 3

    MAXDATAFILES 100

    MAXINSTANCES 8

    MAXLOGHISTORY 292

DATAFILE

  '/oracle/CRM/ZBCRM/system01.dbf',

  '/oracle/CRM/ZBCRM/sysaux01.dbf',

  '/oracle/CRM/ZBCRM/undotbs01.dbf',

  '/oracle/CRM/ZBCRM/users01.dbf',

  '/oracle/CRM/ZBCRM/sysaux02.dbf'

CHARACTER SET ZHS16GBK

;

参数文件中未指定omf参数

NAME                                     VALUE

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

db_create_file_dest

db_create_online_log_dest_1

db_create_online_log_dest_2

db_create_online_log_dest_3

db_create_online_log_dest_4

db_create_online_log_dest_5 

db_recovery_file_dest

db_recovery_file_dest_size               0

2 过程如下:

SQL> @/oracle/control1.sql

ORACLE instance started.

Total System Global Area 1152450560 bytes

Fixed Size                  2225832 bytes

Variable Size             704645464 bytes

Database Buffers          436207616 bytes

Redo Buffers                9371648 bytes

Control file created.

SQL> alter database open;

alter database open

*

ERROR at line 1:

ORA-01589: must use RESETLOGS or NORESETLOGS option for database open

SQL> alter database open resetlogs;

Database altered.

SQL> select open_mode from v$database;

OPEN_MODE

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

READ WRITE

SQL> col member for a50

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

GROUP# MEMBER

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

         2 /oracle/app/db1/dbs/log2ZBCRM.dbf

         1 /oracle/app/db1/dbs/log1ZBCRM.dbf

结果:当控制文件重建语句中未指定日志条目,也未设置omf参数,那么resetlogs 打开数据库后新创建的日志文件位于dbs目录下。


实验2 重建控制文件语句中未指定了日志位置,指定omf参数,那么resetlogs打开数据库后日志位置

 1 实验前提

      重建控制文件语句如下

STARTUP NOMOUNT

CREATE CONTROLFILE REUSE DATABASE "ZBCRM" RESETLOGS  ARCHIVELOG

    MAXLOGFILES 16

    MAXLOGMEMBERS 3

    MAXDATAFILES 100

    MAXINSTANCES 8

    MAXLOGHISTORY 292

DATAFILE

  '/oracle/CRM/ZBCRM/system01.dbf',

  '/oracle/CRM/ZBCRM/sysaux01.dbf',

  '/oracle/CRM/ZBCRM/undotbs01.dbf',

  '/oracle/CRM/ZBCRM/users01.dbf',

  '/oracle/CRM/ZBCRM/sysaux02.dbf'

CHARACTER SET ZHS16GBK



参数文件中指定omf参数

NAME                                     VALUE

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

db_create_file_dest                      /oracle/CRM/ZBCRM/

db_create_online_log_dest_1

db_create_online_log_dest_2

db_create_online_log_dest_3

db_create_online_log_dest_4

db_create_online_log_dest_5

db_recovery_file_dest

db_recovery_file_dest_size               0

2 实验过程如下:

[oracle@oracle ~]$ cat control1.sql

STARTUP NOMOUNT

CREATE CONTROLFILE REUSE DATABASE "ZBCRM" RESETLOGS  ARCHIVELOG

    MAXLOGFILES 16

    MAXLOGMEMBERS 3

    MAXDATAFILES 100

    MAXINSTANCES 8

    MAXLOGHISTORY 292

DATAFILE

  '/oracle/CRM/ZBCRM/system01.dbf',

  '/oracle/CRM/ZBCRM/sysaux01.dbf',

  '/oracle/CRM/ZBCRM/undotbs01.dbf',

  '/oracle/CRM/ZBCRM/users01.dbf',

  '/oracle/CRM/ZBCRM/sysaux02.dbf'

CHARACTER SET ZHS16GBK

;

[oracle@oracle ~]$ sqlplus / as sysdba

SQL*Plus: Release 11.2.0.2.0 Production on Fri Jul 26 16:33:49 2013

Copyright (c) 1982, 2010, Oracle.  All rights reserved.

Connected to an idle instance.

SQL> @/oracle/control1.sql 

ORACLE instance started.

Total System Global Area 1152450560 bytes

Fixed Size                  2225832 bytes

Variable Size             704645464 bytes

Database Buffers          436207616 bytes

Redo Buffers                9371648 bytes

Control file created.

SQL> alter database open resetlogs;

Database altered.

SQL> col member for a60

SQL> /

GROUP# MEMBER

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

         2 /oracle/CRM/ZBCRM/ZBCRM/onlinelog/o1_mf_2_8z4f4kon_.log

         1 /oracle/CRM/ZBCRM/ZBCRM/onlinelog/o1_mf_1_8z4f4gcl_.log
结果:当重建控制文件语句中为指定日志条目,仅指定omf参数db_create_file_dest时,resetlogs打开数据库后,日志位于db_create_file_dest指定的目录。

实验3 重建控制文件语句指定日志条目,指定omf参数,那么resetlogs打开数据库后日志位置

1 实验前提

    重建控制文件中指定日志条目语句如下

STARTUP NOMOUNT

CREATE CONTROLFILE REUSE DATABASE "ZBCRM" RESETLOGS  ARCHIVELOG

    MAXLOGFILES 16

    MAXLOGMEMBERS 3

    MAXDATAFILES 100

    MAXINSTANCES 8

    MAXLOGHISTORY 292

LOGFILE

  GROUP 1 '/oracle/CRM/ZBCRM/redo01.log'  SIZE 200M BLOCKSIZE 512,

  GROUP 2 '/oracle/CRM/ZBCRM/redo02.log'  SIZE 200M BLOCKSIZE 512,

  GROUP 3 '/oracle/CRM/ZBCRM/redo03.log'  SIZE 200M BLOCKSIZE 512

-- STANDBY LOGFILE

DATAFILE

  '/oracle/CRM/ZBCRM/system01.dbf',

  '/oracle/CRM/ZBCRM/sysaux01.dbf',

  '/oracle/CRM/ZBCRM/undotbs01.dbf',

  '/oracle/CRM/ZBCRM/users01.dbf',

  '/oracle/CRM/ZBCRM/sysaux02.dbf'

CHARACTER SET ZHS16GBK

;

2 omf 参数如下:

NAME                                               VALUE

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

db_create_file_dest                                /oracle/CRM/ZBCRM/

db_create_online_log_dest_1                        /oracle/CRM/ZBCRM/log1

db_create_online_log_dest_2                        /oracle/CRM/ZBCRM/log2

db_create_online_log_dest_3

db_create_online_log_dest_4

db_create_online_log_dest_5

db_recovery_file_dest

db_recovery_file_dest_size                         0

3 实验过程如下:

[oracle@oracle ~]$ cat control2.sql

STARTUP NOMOUNT

CREATE CONTROLFILE REUSE DATABASE "ZBCRM" RESETLOGS  ARCHIVELOG

    MAXLOGFILES 16

    MAXLOGMEMBERS 3

    MAXDATAFILES 100

    MAXINSTANCES 8

    MAXLOGHISTORY 292

LOGFILE

  GROUP 1 '/oracle/CRM/ZBCRM/redo01.log'  SIZE 200M BLOCKSIZE 512,

  GROUP 2 '/oracle/CRM/ZBCRM/redo02.log'  SIZE 200M BLOCKSIZE 512,

  GROUP 3 '/oracle/CRM/ZBCRM/redo03.log'  SIZE 200M BLOCKSIZE 512

-- STANDBY LOGFILE

DATAFILE

  '/oracle/CRM/ZBCRM/system01.dbf',

  '/oracle/CRM/ZBCRM/sysaux01.dbf',

  '/oracle/CRM/ZBCRM/undotbs01.dbf',

  '/oracle/CRM/ZBCRM/users01.dbf',

  '/oracle/CRM/ZBCRM/sysaux02.dbf'

CHARACTER SET ZHS16GBK

;

[oracle@oracle ~]$ sqlplus / as sysdba

SQL*Plus: Release 11.2.0.2.0 Production on Fri Jul 26 16:52:26 2013

Copyright (c) 1982, 2010, Oracle.  All rights reserved.

Connected to an idle instance.

SQL> @/oracle/control2.sql

ORACLE instance started.

Total System Global Area 1152450560 bytes

Fixed Size                  2225832 bytes

Variable Size             704645464 bytes

Database Buffers          436207616 bytes

Redo Buffers                9371648 bytes

Control file created.

SQL> alter database open resetlogs;

Database altered.

SQL> col member for a50

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

GROUP# MEMBER

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

         3 /oracle/CRM/ZBCRM/redo03.log

         2 /oracle/CRM/ZBCRM/redo02.log

         1 /oracle/CRM/ZBCRM/redo01.log

结果:当重建控制文件语句中指定日志条目,又指定了omf参数,那么新生成的日志文件位置以控制文件为准。

实验4 重建控制文件语句中未指定了日志位置,指定omf参数db_create_file_dest和 db_create_online_log_dest_n,那么resetlogs打开数据库后日志位置

1 实验前提

    重建控制文件中指定日志条目语句如下

STARTUP NOMOUNT

CREATE CONTROLFILE REUSE DATABASE "ZBCRM" RESETLOGS  ARCHIVELOG

    MAXLOGFILES 16

    MAXLOGMEMBERS 3

    MAXDATAFILES 100

    MAXINSTANCES 8

    MAXLOGHISTORY 292

LOGFILE

  GROUP 1 '/oracle/CRM/ZBCRM/redo01.log'  SIZE 200M BLOCKSIZE 512,

  GROUP 2 '/oracle/CRM/ZBCRM/redo02.log'  SIZE 200M BLOCKSIZE 512,

  GROUP 3 '/oracle/CRM/ZBCRM/redo03.log'  SIZE 200M BLOCKSIZE 512

-- STANDBY LOGFILE

DATAFILE

  '/oracle/CRM/ZBCRM/system01.dbf',

  '/oracle/CRM/ZBCRM/sysaux01.dbf',

  '/oracle/CRM/ZBCRM/undotbs01.dbf',

  '/oracle/CRM/ZBCRM/users01.dbf',

  '/oracle/CRM/ZBCRM/sysaux02.dbf'

CHARACTER SET ZHS16GBK

;

2 omf 参数如下:

NAME                                               VALUE

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

db_create_file_dest                                /oracle/CRM/ZBCRM/

db_create_online_log_dest_1                        /oracle/CRM/ZBCRM/log1

db_create_online_log_dest_2                        /oracle/CRM/ZBCRM/log2

db_create_online_log_dest_3

db_create_online_log_dest_4

db_create_online_log_dest_5

db_recovery_file_dest

db_recovery_file_dest_size                         0

3 实验过程如下:
[oracle@oracle ~]$ cat control1.sql

STARTUP NOMOUNT

CREATE CONTROLFILE REUSE DATABASE "ZBCRM" RESETLOGS  ARCHIVELOG

    MAXLOGFILES 16

    MAXLOGMEMBERS 3

    MAXDATAFILES 100

    MAXINSTANCES 8

    MAXLOGHISTORY 292

DATAFILE

  '/oracle/CRM/ZBCRM/system01.dbf',

  '/oracle/CRM/ZBCRM/sysaux01.dbf',

  '/oracle/CRM/ZBCRM/undotbs01.dbf',

  '/oracle/CRM/ZBCRM/users01.dbf',

  '/oracle/CRM/ZBCRM/sysaux02.dbf'

CHARACTER SET ZHS16GBK

;

[oracle@oracle ~]$ sqlplus  / as sysdba

SQL*Plus: Release 11.2.0.2.0 Production on Fri Jul 26 17:01:24 2013

Copyright (c) 1982, 2010, Oracle.  All rights reserved.

Connected to an idle instance.

SQL> @/oracle/control1.sql

ORACLE instance started.

Total System Global Area 1152450560 bytes

Fixed Size                  2225832 bytes

Variable Size             704645464 bytes

Database Buffers          436207616 bytes

Redo Buffers                9371648 bytes

Control file created.

SQL> alter database open resetlogs;

Database altered.

SQL> col member for a60

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

GROUP# MEMBER

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

         2 /oracle/CRM/ZBCRM/log1/ZBCRM/onlinelog/o1_mf_2_8z4grccs_.log

         2 /oracle/CRM/ZBCRM/log2/ZBCRM/onlinelog/o1_mf_2_8z4grd0x_.log

         1 /oracle/CRM/ZBCRM/log1/ZBCRM/onlinelog/o1_mf_1_8z4gr4yz_.log

         1 /oracle/CRM/ZBCRM/log2/ZBCRM/onlinelog/o1_mf_1_8z4gr5p0_.log
结果:ofm参数中优先级db_create_online_log_dest_n高于db_create_file_dest

总结:通过以上实验不难看出,当resetlogs打开数据库时,生成新的日志文件位置由以下因素决定:

先以控制文件中记录的日志文件位置为准.如果控制文件中没日志位置信息,则会查omf参数,优先级为,先db_create_online_log_dest_n后db_create_file_dest。

如果未指定omf参数则生成日志文件的默认位置为:比如linux 就是dbs下。










本文转自 zhangxuwl 51CTO博客,原文链接:http://blog.51cto.com/jiujian/1275820,如需转载请自行联系原作者

resetlogs 打开数据库时新生成日志位置问题的更多相关文章

  1. 解决Oracle ORA-01033: ORACLE initialization or shutdown in progress错误 和 ORA-01589错误 要打开数据库则必须使用 RESETLOGS 或 NORESETLOGS 选项

    要打开数据库则必须使用 RESETLOGS 或 NORESETLOGS 选项 SQL> startupORACLE 例程已经启动. Total System Global Area  13533 ...

  2. SQL Server附加数据库时失败,提示:“未重新生成日志,因为有不止一个日志文件”

    这个只能是试一下的方法,但不一定能成功,可以尝试如下几个方法: 1.登录远程桌面,然后以.登录SQL Server,并以Windows身份登录,然后再附加数据库时把日志文件删除. 2.试下这个脚本: ...

  3. sqlserver无ldf日志文件附加的方法(数据库没有完全关闭,无法重新生成日志)

    数据库的ldf日志文件被删了,直接附加时报错:数据库没有完全关闭,无法重新生成日志 那怎么恢复数据呢?方法如下: 在数据库中新建一个同名的数据库(文件路径要与原来的相同,ldf的文件名也要相同),然后 ...

  4. Mysql数据库之Binlog日志使用总结

    binlog二进制日志对于mysql数据库的重要性有多大,在此就不多说了.下面根据本人的日常操作经历,并结合网上参考资料,对binlog日志使用做一梳理: 一.binlog日志介绍1)什么是binlo ...

  5. (转)Mysql数据库之Binlog日志使用总结

    使用mysqlbinlog提取二进制日志 原文:http://blog.csdn.net/leshami/article/details/41962243 MySQL binlog日志记录了MySQL ...

  6. mysql数据库安全性配置——日志记录

    一:开启数据库日志记录 (1)在查看数据库是否开启日志记录,默认是OFF,即关闭状态.(可在数据库中执行该查询语句,也可在服务器端执行) show variables like 'log_bin'; ...

  7. MySQL/MariaDB数据库的各种日志管理

    MySQL/MariaDB数据库的各种日志管理 作者:尹正杰  版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.事务日志 (transaction log) 1>.Innodb事务日志相 ...

  8. Oracle Listener日志位置及压缩转移

    近日由于Oracle Listener异常断开导致应用无法上传数据,需要从listener日志开始分析问题原因.此文介绍如何获取日志位置.由于日志文件大小问题,同时将日志文件进行压缩存放. alert ...

  9. eclipse从数据库逆向生成Hibernate实体类

    做项目必然要先进行数据库表设计,然后根据数据库设计建立实体类(VO),这是理所当然的,但是到公司里做项目后,让我认识到,没有说既进行完数据库设计后还要再“自己”建立一变VO.意思是,在项目设计时,要么 ...

随机推荐

  1. Linux基础:Day01

    Linux操作系统的知识体系: 1.初级  2.中级  3.高级  4.*额外知识*  1.初级  1.1.OS操作系统的原理  1.2.开始了解常用的命令(系统管理的基础命令)   开机关机   时 ...

  2. python socket简介

    一.socket是什么 socket是应用层与TCP/IP协议通信的中间软件抽象层,它是一组接口.在设计模式中,socket其实就是一个门面模式,它把复杂的TCP/IP协议隐藏在socket接口后面, ...

  3. Golang源码分析之目录详解

    开源项目「go home」聚焦Go语言技术栈与面试题,以协助Gopher登上更大的舞台,欢迎go home~ 导读 学习Go语言源码的第一步就是了解先了解它的目录结构,你对它的源码目录了解多少呢? 目 ...

  4. search(4)- elastic4s-ElasticDsl

    上次分析了一下elastic4s的运算框架.本来计划接着开始实质的函数调用示范,不过看过了Elastic4s的所有使用说明文档后感觉还是走的快了一点.主要原因是elasticsearch在7.0后有了 ...

  5. Mybatis对象关系映射 one2one,one2many,many2many

    MyBatis中的高级映射一般要借助select元素中的resultMap属性进行实现,通过此属性配置实现一对一,一对多等关系映射的实现 一对一映射:association 一对多映射:collect ...

  6. Julia的基本知识

    知识来源 1.变量.整数和浮点数 Julia和Matllab挺像的,基本的变量,数值定义都差不多,所以就没必要记录了. 2.数学运算 3.函数

  7. redis 分布式锁的 5个坑,真是又大又深

    引言 最近项目上线的频率颇高,连着几天加班熬夜,身体有点吃不消精神也有些萎靡,无奈业务方催的紧,工期就在眼前只能硬着头皮上了.脑子浑浑噩噩的时候,写的就不能叫代码,可以直接叫做Bug.我就熬夜写了一个 ...

  8. 网站假死 重启NGINX无效 必须重启PHP 原因分析

    一.错误提示说明: Nginx 502 Bad Gateway:请求的PHP-CGI已经执行,但是由于某种原因(一般是读取资源的问题)没有执行完毕而导致PHP-CGI进程终止. Nginx 504 G ...

  9. HTTPoxy漏洞(CVE-2016-5385)复现记录

    漏洞介绍: httpoxy是cgi中的一个环境变量:而服务器和CGI程序之间通信,一般是通过进程的环境变量和管道. CGI介绍 CGI 目前由 NCSA 维护,NCSA 定义 CGI 如下:CGI(C ...

  10. INDIRECT函数实现动态图表的跨数据抓取

    涉及函数: indirect函数:通常有两种用法.直接指定单元格地址和隐式指定单元格地址.直接指定:=indirect("A4"),则会返回A4单元格所显示的内容.参数给定的既是字 ...