一、一些oracle日志的常用命令

oracle的日志文件是记录数据库变化的一个凭证,就是oracle对于一切数据库的操作的记录方便以后查找分析错误。有可以恢复数据等作用。oracle的文件可以分为数据文件、控制文件和重做日志文件(也就是咱们平时说的redo), oracle的日志文件时分组存放的,一个oracle数据库最少使用3个日志文件存放这些信息,以防写满之后的溢出,为了防止数据库的灾难性宕机,日志文件可以提供一个支持,可以把数据库恢复到宕机之前的某个时间点,我们也经常对日志文件做一些操作,常用的操作如下:

Oracle日志文件

1.查询系统使用的是哪一组日志文件:

select * from v$log;

2.查询正在使用的组所对应的日志文件:

select * from v$logfile;

3.强制日志切换:

alter system switch logfile;

4.查询历史日志:

select * from v$log_history;

5.查询日志的归档模式:

Select

dbid,name,created,log_mode from v$database;

6.查询归档日志的信息:

select recid,stamp,thread#,sequence#,name

from v$archived_log;

7.增加与删除日志文件组

alter database add logfile group 1

('/home1/oracle/oradata/ora8i/log1a.log'),'/home2/oracle/oradata/ora8i/log1b.log')

size 100M;

alter database drop logfile group 1;

8.增加与删除日志成员

alter database add logfile member

'/home1/oracle/oradata/ora8i/log1a.log' to group

1,'/home1/oracle/oradata/ora8i/log2a.log' to group 2;

alter database drop logfile member '/home1/oracle/oradata/ora8i/log1a.log'

;

9.日志文件移动

alter database rename file

'/home1/oracle/oradata/ora8i/log1a.log' to

'/home2/oracle/oradata/ora8i/log1a.log';

执行该命令之前必须保证该日志文件物理上已经移动到新目录

10.清除日志文件

alter database clear logfile

'/home1/oracle/oradata/ora8i/log1a.log';

该命令用于不能用删除组及组成员命令删除日志时使用

二、oracle日志文件类型及日志管理

如果是安全关闭数据库.数据库处于一致状态:

SQL> startup nomount

SQL> create controlfile reuse database "TEST

" resetlogs archivelog

SQL> alter database open tesetlogs;

马上备份

如果不是非安全关闭:

非当前日志就是

SQL> alter database clear unarchived logfile group n;

SQL> alter database clear logfile

'C:\oracle\product\10.1.0\oradata\hupan\REDO01

.LOG' group 1;

当前日志:

在initsid> .ora中加入如下参数:

_allow_resetlogs_corruption=TRUE

alter system set "_allow_resetlogs_corruption"

= true scope = spfile;

SQL> recover database until cancel;

Cancel

如果出错,不再理会,发出

SQL> alter database open resetlogs;

1、Oracle中的几类日志文件

Redo log

files      -->联机重做日志

Archive log

files   -->归档日志

Alert log

files     -->告警日志

Trace

files         -->跟踪日志

user_dump_dest          -->用户跟踪日志

backupground_dump_dest  -->进程跟踪日志

--查看后台进程相关目录

SQL> show parameter dump

NAME                    TYPE

VALUE

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

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

background_core_dump         string

partial

background_dump_dest         string      /u01/app/oracle/admin/orcl/bdump

core_dump_dest               string      /u01/app/oracle/admin/orcl/cdump

max_dump_file_size           string

UNLIMITED

shadow_core_dump             string

partial

user_dump_dest               string

/u01/app/oracle/admin/orcl/udump

关于Oracle常用目录及路径请参考:Oracle常用目录结构(10g)

关于Oracle体系结构请参考:Oracle实例和Oracle数据库(Oracle体系结构)

2、联机重做日志的规划管理

1.联机重做日志

记录了数据的所有变化(DML,DDL或管理员对数据所作的结构性更改等)

提供恢复机制(对于意外删除或宕机利用日志文件实现数据恢复)

可以被分组管理

2.联机重做日志组

由一个或多个相同的联机日志文件组成一个联机重做日志组

至少两个日志组,每组一个成员(建议每组两个成员,分散放开到不同的磁盘)

由LGWR后台进程同时将日志内容写入到一个组的所有成员

LGWR的触发条件

在事务提交的时候(COMMIT)

Redo Log Buffer三分之一满

Redo Log Buffer多于一兆的变化记录

在DBWn写入数据文件之前

3.联机重做日志成员

重做日志组内的每一个联机日志文件称为一个成员

一个组内的每一个成员具有相同的日志序列号(log sequence number),且成员的大小相同

每次日志切换时,Oracle服务器分配一个新的LSN号给即将写入日志的日志文件组

LSN号用于唯一区分每一个联机日志组和归档日志

处于归档模式的联机日志,LSN号在归档时也被写入到归档日志之中

4.日志文件的工作方式

日志文件采用按顺序循环写的方式

当一组联机日志组写满,LGWR则将日志写入到下一组,当最后一组写满则从第一组开始写入

写入下一组的过程称为日志切换

切换时发生检查点过程

检查点的信息同时写入到控制文件

5.联机日志文件的规划

总原则

分散放开,多路复用

日志所在的磁盘应当具有较高的I/O

一般日志组大小应满足自动切换间隔至少15-20分钟左右业务需求

建议使用rdo结尾的日志文件名,避免误删日志文件。如redo1.rdo,redo2.rdo

规划样例

Redo

Log Group1     Redo Log Group2     Redo Log Group3

Member1             Member1              Member1            -->Physical Disk 1

Member2             Member2              Member2            -->Physical Disk 2

Member3             Member3              Member3            -->Physical Disk 3

6.日志切换和检查点切换

ALTER

SYSTEM SWITCH LOGFILE;   --强制手动切换

ALTER SYSTEM CHECKPOINT;

强制设置检查点间隔

ALTER

SYSTEM SET FAST_START_MTTR_TARGET = n

7.添加日志文件组

ALTER

DATABASE ADD LOGFILE [GROUP n]

('$ORACLE_BASE/oradata/u01/logn1.rdo',

'$ORACLE_BASE/oradata/u01/logn2.rdo')

SIZE mM;

8.添加日志成员

ALTER

DATABASE ADD LOGFILE MEMBER

'$ORACLE_BASE/oradata/u01/logn1.rdo' TO GROUP 1,

'$ORACLE_BASE/oradata/u01/logn2.rdo' TO GROUP 2;

9.删除日志成员

不能删除组内的唯一一个成员

不能删除处于active和current状态组内的成员

删除处于active和current状态组内的成员,应使用日志切换使其处于INACTIVE状态后再删除

对于组内如果一个成员为NULL值,一个为INVALID,且组处入INACTIVE,仅能删除INVALID状态成员

删除日志成员,物理文件并没有真正删除,需要手动删除

删除日志文件后,控制文件被更新

对于处于归档模式下的数据库,删除成员时确保日志已被归档,查看v$log视图获得归档信息

ALTER

DATABASE DROP LOGFILE MEMBER '$ORACLE_BASE/oradata/u01/logn1.rdo'

10.删除日志组

一个实例至少需要两个联机日志文件组

活动或当前的日志组不能被删除

组内成员状态有NULL值或INVALID状态并存,组不可删除

日志组被删除后,物理文件需要手动删除(对于非OMF)

ALTER

DATABASE DROP LOGFILE GROUP n

11.日志的重定位及重命名

所需权限

ALTER DATABASE系统权限

复制文件到目的位置操作系统权限(写权限)

CURRENT状态组内的成员不能被重命名

建议该行为之前备份数据库

重命名或重定位之后建议立即备份控制文件

重定位及重命名的两种方法

添加一个新成员到日志组,然后删除一个旧的成员

使用ALTER

DATABASE RENAME FILE命令(不区分归档与非归档模式)

复制联机日志文件到新路径:ho cp

执行ALTER

DATABASE RENAME FILE '' TO ''

对于处于CURRENT状态的需要改名且不切换的情况下

办法是切换到MOUNT状态下再执行上述操作

12.清空日志文件组

ALTER DATABASE CLEAR

LOGIFLE GROUP n

ALTER DATABASE CLEAR

UNARCHIVED LOGFILE GROUP n

--使用unarchived避免归档

13.日志周期循环及切换分析

Group

1      Group 2      Group 3

Current      Inactive     Inactive

----------

Log Switch -------------

Active       Current      Inactive

----------

Log Switch -------------

Active       Active       Current

---------- Log Switch -------------

Current      Inactive     Inactive

--Active和Current称之为在一个循环周期之内(按顺序写日志)

--Inactive称为一个周期之外(一个新的循环)

--新一轮循环开始如在归档状态则先归档再清空,否则直接清空日志

--数据库启动时Active和Current状态的日志不能丢失,否则出错

对于CURRENT组的也可以使用隐藏参数来解决

步骤:

alter system

set "_allow_resetlogs_corruption" = true scope = spfile;

recover

database using bakcup controlfile;

alter database

open resetlogs;

shutdown

immediate;

startup

mount;

alter

database open resetlogs;

alter

system reset "_allow_resetlogs_corruption" scope = spfile sid = '*'

对于归档模式下的日志文件丢失,同样可以按上述步骤处理

REDO01.LOG文件误删除后恢复的方法如下:

conn

sys/sys@数据库服务名称as sysdba;

SQL>shutdown

immediate;

SQL>startup

mount;

SQL>recover

database until cancel;

SQL>alter

database open resetlogs;

SQL>shutdown;

SQL>startup;

三、归档日志文件的操作

1.将数据库日志模式由非归档改为归档模式

Startup

mount

Alter

database archivelog;

2.查看v$log和v$logfile

Desc

v$log,desc v$logfile

Group#表示组别,members表示成员多少,arc表示是否归档保存了,status中current表示当前正在使用的日志文件,不能删除,INACTIVE表示已经归档出去了的日志,可以删除,要想删除当前日志,必须先切换日志(alter

system switch logfile),让其归档出去,然后status变成ACTIVE,然后利用检查点来删除(alter system

checkpoint,alter database drop logfile member‘’,或者alter database drop logfile group 1)

3.增加一个日志文件组4,组中放入一个成员(redo04.log)

Alter

database add logfile group 4

(‘I:\oracle\product\10.2.0\oradata\orcl\redo04.log’)

size 10M;

4.向日志文件组4再增加一个成员(redo04a.log)

Alter

database add logfile member ‘…\redo04a.log’ to group 4;

5.将redo01.log移动到一个新的地方

(日志文件的移动重命名

1.关闭数据库

2.使用操作系统命令拷贝,移动或重命名重做日志文件

3.启动

4.使用alter database rename file‘original name’to‘new

name’ 命令更新控制文件

5.打开数据库)

Sql>Shutdown

immediate

手动移走redo01.log文件

Sql>startup

报错说找不到redo01.log文件

Sql>alter

database rename file‘原路径’to‘新路径’

Alter

database open;

6.删除日志成员和日志文件组

Alter

database drop logfile member‘路径’;

Alter

database drop logfile group 4;

7.设置归档目的地并测试文档

Alter

system set log_archive_dest_1=’location:d:\arch’;

每当进行日志切换的时候,日志文件就被备份到归档日志里;

8.日志文件修复

当status为INACTIVE时

SQL>alter

database clear logfile group 4;

SQL>alter

database clear unarchived logfile group 4;

SQL>shutdown

immediate;

SQL>startup

mount;

SQL>recover

database until cancel;

SQL>alter

database open resetlogs;

SQL>archive

log list;

oracle重命名日志成员出错,Oracle日志文件相关推荐

  1. oracle 给表空间改名,Oracle重命名表空间和删除表空间

    在需要的情况下,可以对表空间的名称进行修改.修改表空间的名称,不会影响到表空间中的数据.但不能修改系统表空间system与sysa Oracle重命名表空间和删除表空间 [日期:2015-03-10] ...

  2. oracle 表单重命名,Oracle重命名表

    在本教程中,您将学习如何使用Oracle RENAME语句重命名数据库中的表. 要重命名表,可以使用以下Oracle RENAME表语句,如下所示: RENAME table_name TO new_ ...

  3. Windows10文件重命名/复制/移动时,导致文件资源管理器卡顿,解决方案

    Windows10文件重命名/复制/移动时,导致文件资源管理器卡顿的解决方案 有时,重命名文件要卡顿好久,拖拽一个文件也要卡顿好久.解决方式很简单: (1)随便打开一个文件夹,点击左上角文件-> ...

  4. oracle表重命名 索引,CSS_在Oracle数据库中按用户名重建索引的方法,如果你管理的Oracle数据库下某 - phpStudy...

    在Oracle数据库中按用户名重建索引的方法 如果你管理的Oracle数据库下某些应用项目有大量的修改删除操作, 数据索引是需要周期性的重建的. 它不仅可以提高查询性能, 还能增加索引表空间空闲空间大 ...

  5. oracle重命名表空间

    重命名表空间: 在Oracle 11g以前的版本中,表空间无法重命名,但Oracle 11g提供了对表空间进行重命名的新功能,这对于一般的管理和移植来说时非常方便的. 但更要注意的是:数据库管理员只能 ...

  6. tomcat 连接oracle重连,JSP+Tomcat连接Oracle数据库

    1.   首先安裝JDK   1.4.2_01   ,http://java.sun.com/j2se/2.   接著安裝Oracle9i,   安裝完成之後先更改XML   Database的參數 ...

  7. oracle导入java包时出错,Oracle导入导出的常见错误

    做数据的导入导出操作,最常用的就是imp/exp和impdp/expdp,经常会碰见各种错误,之前总结过一些,<解决导入过程中出现的ORA-02289错误>.<生产数据导入测试环境碰 ...

  8. 重命名数据库表空间和数据文件

    一.重命名数据库表空间名 使用alter tablespace- rename to命令,可以重命名一个永久或者临时表空间.例如,下面重命名users表空间: Alter tablespace tbs ...

  9. python实现文件重命名_基于python实现复制文件并重命名

    方法: shutil.copy("c://ccc//模板.xlsx","c://ccc//新文件.xlsx") 需求: 已知的Excel模板格式.已知的文件命名 ...

最新文章

  1. 由于应用universal link校验不通过_垃圾吊称重校验砝码2000kg市场行情分析
  2. python—多线程之共享数据
  3. 计算机指定共享用户,局域网内共享文件夹给指定计算机
  4. ajax返回值怎么取出来_螺丝断孔里了,怎么取出来?
  5. 【转】DICOM之Print!!!!!!!!!
  6. Java 相关计数问题及其实现
  7. 2020你一直在苦找的Ps插件全在这!20款Photoshop实用插件分享
  8. 使用vba宏/python代码更新word目录——只更新页码
  9. 结构作为函数参数要注意什么_为什么要重视间架结构
  10. 安装vue环境,并新建Vue项目
  11. 常用颜色的RGB值及调色方法
  12. android sdl,能通吃所有安卓手机的SDL究竟是何神通?
  13. java输出GPA,简单的C GPA计算器问题
  14. 超分辨率数据集(待填坑版)
  15. PostgreSQL导不了入数据
  16. 一种有效组织Java GUI 源码的编程架构
  17. 高德地图(第三篇)定位
  18. 在线教育类APP开发系统搭建
  19. POJ2987 Firing
  20. MT6761 Android P平台TP按键无效问题分析及解决方法

热门文章

  1. C语言课程设计---歌厅歌曲管理系统
  2. Halcon - 测量 - 轮廓到线的距离
  3. 河中跳房子(noiopenjudge,noip2015)
  4. [BZOJ1385][Baltic2000]Division expression
  5. JavaScript高级程序设计-读书笔记(6)
  6. 科学家用大脑控制平板电脑操作 真的可以!
  7. [BZOJ1007](HNOI2008)水平可见直线(半平面交习题)
  8. 【python数据挖掘课程】二十九.数据预处理之字符型转换数值型、标准化、归一化处理
  9. iOS之深入解析KVC的底层原理和自定义KVC的实现
  10. 【数据结构与算法】之深入解析“路径总和III”的求解思路与算法示例