- 浏览: 918314 次
- 性别:
- 来自: 黑龙江
文章分类
- 全部博客 (209)
- struts1 (3)
- hibernate3 (19)
- java (13)
- spring2 (5)
- netBeans (1)
- eclipse (1)
- JSF (1)
- DIV+CSS篇章 (1)
- jFreeChart+Oracle之曲线,柱状及饼状图的实现 (1)
- JSF知识与技巧 (3)
- Oracle数据类型的介绍与比较 (2)
- J2EE (2)
- Ajax技术 (4)
- javaScript技术 (25)
- struts2 (16)
- C/C++程序设计 (1)
- oracle系统学习 (29)
- 算法分析 (0)
- Linux实践 (7)
- extjs开发经验 (13)
- flex开发总结 (1)
- FusionCharts总结 (0)
- 高级数据库总结 (0)
- SVG拓扑图开发总结 (0)
- CSS (1)
- CSS使用简介 (1)
- SVG (0)
- DOJO (0)
- Junit测试 (0)
- lucene (24)
- solr (6)
- tokyo tyrant 技术 (7)
- Html5 (1)
- 算法与数据结构 (0)
- 物联网相关技术学习 (0)
- UI设计 (1)
- webservice (0)
- Android (5)
- hibernate4 (3)
- solrcloud (0)
- dorado5 (0)
- dorado7 (0)
- elasticsearch (0)
- GWT (0)
- node.js (0)
- 并发编程 (1)
- 大数据 (1)
- 项目经验 (5)
最新评论
-
cs261244787:
楼主好人! 平安
struts2,hibernate4,spring3配置时问题汇总及解决办法 -
wxluck666:
我也赞一个 很有用
struts2,hibernate4,spring3配置时问题汇总及解决办法 -
wxluck666:
我也赞一个 很有用
struts2,hibernate4,spring3配置时问题汇总及解决办法 -
xinsiyou:
牛逼,就是样式被搞没了
JS实现选项右移,左移,向上,向下调整顺序 -
unnamed__:
这代码风格就像一坨翔
java获取数据库的列名,类型等信息
1.查看当前日志组成员:
SQL> select member from v$logfile;
MEMBER
------------------------------------------------------
C:\ORACLE\PRODUCT\10.2.0\ORADATA\FYDB\REDO01.LOG
C:\ORACLE\PRODUCT\10.2.0\ORADATA\FYDB\REDO02.LOG
C:\ORACLE\PRODUCT\10.2.0\ORADATA\FYDB\REDO03.LOG
2.查看当前日志组状态:
SQL> select group#,members,bytes/1024/1024,status from v$log;
GROUP# MEMBERS BYTES/1024/1024 STATUS
---------- ---------- --------------- ----------------
1 1 50 INACTIVE
2 1 50 INACTIVE
3 1 50 CURRENT
现有三个日志组,每个组内有一个成员,每个成员的大小为50MB,现在想把此三个日志组的成员大小都改为100MB ,步骤如下:
1、创建2个新的日志组
SQL> alter database add logfile group 4 ('C:\ORACLE\PRODUCT\10.2.0\ORADATA\FYDB\REDO04.LOG') size 100MB;
SQL> alter database add logfile group 5 ('C:\ORACLE\PRODUCT\10.2.0\ORADATA\FYDB\REDO05.LOG') size 100MB;
2、切换当前日志到新的日志组
SQL> alter system switch logfile;
SQL> alter system switch logfile;
SQL> select group#,members,bytes/1024/1024,status from v$log;
GROUP# MEMBERS BYTES/1024/1024 STATUS
---------- ---------- --------------- ----------------
1 1 50 ACTIVE
2 1 50 ACTIVE
3 1 50 ACTIVE
4 1 100 CURRENT
5 1 100 ACTIVE
3、删除旧的日志组
SQL> alter database drop logfile group 1;
SQL> alter database drop logfile group 2;
SQL> alter database drop logfile group 3;
4、操作系统下删除原日志组1、2、3中的文件REDO01.LOG、REDO02.LOG、REDO03.LOG。
5、重建日志组1、2、3
SQL> alter database add logfile group 1 ('C:\ORACLE\PRODUCT\10.2.0\ORADATA\FYDB\REDO01.LOG') size 100MB;
SQL> alter database add logfile group 2 ('C:\ORACLE\PRODUCT\10.2.0\ORADATA\FYDB\REDO02.LOG') size 100MB;
SQL> alter database add logfile group 3 ('C:\ORACLE\PRODUCT\10.2.0\ORADATA\FYDB\REDO03.LOG') size 100MB;
6、切换日志组
SQL> alter system switch logfile;
SQL> alter system switch logfile;
7、删除中间过渡用的日志组4、5
SQL> alter database drop logfile group 4;
SQL> alter database drop logfile group 5;
SQL> select group#,status from v$log;
GROUP# STATUS
---------- ----------------
1 UNUSED
2 UNUSED
3 UNUSED
4 INACTIVE
5 CURRENT
8、到操作系统下删除原日志组4、5中的文件
9、备份当前的最新的控制文件
SQL> conn / as sysdba
SQL> alter database backup controlfile to trace resetlogs;
(注意:如果为安全考虑每个group可以多加几个文件)
==============================
跟redo logfile有关的其它数据库参数
1、log_buffer
log_buffer是ORACLE SGA的一部分, 所有DML命令修改的数据块先放在log_buffer里, 如果满了或者到了check_point时候通过lgwr后台进程写
到redo logfile里去。它不能设得太大,这样在意外发生时会丢失很多改变过的数据。它最好不要大于512K或者128K*CPU个数。
我们可以用下面的SQL语句检测log_buffer使用情况:
SQL> select rbar.name,rbar.value,re.name,re.value,(rbar.value*100)/re.value||'%' "radio"
from v$sysstat rbar,v$sysstat re
where rbar.name='redo buffer allocation retries'
and re.name='redo entries';
这个比率小于1%才好,否则增加log_buffer的大小
2、log_checkpoint_interval
Oracle8.1 版本后log_checkpoint_interval指的是两次checkpoint之间操作系统数据块的个数。
checkpoint时Oracle把内存里修改过的数据块用DBWR写到物理文件,用LGWR写到日志和控制文件。
一般UNIX操作系统的数据块为 512 bytes。
从性能优化来说log_checkpoint_interval = redo logfile size bytes / 512 bytes
3、log_checkpoint_timeout
Oracle8.1 版本后log_checkpoint_timeout指的是两次checkpoint之间时间秒数。
Oracle建议不用这个参数来控制,因为事务(transaction)大小不是按时间等量分布的。
log_checkpoint_timeout = 0
log_checkpoint_timeout = 900
Redo Log Buffer
redo log buffer 可以循环使用,存放数据库改变牵涉的信息,其内部放的是redo entry。
redo entry存放的是INSERT, UPDATE, DELETE, CREATE, ALTER, DROP 等操作对数据库的改变信息,这些信息在recovery的时候是很重要。这些redo entry
由oracle server进程从用户内存放到redo buffer。
LGWR(Log writer)
LGWR(Log writer)是oracle启动时候必须启动的进程,它负责把redo log buffer中的redo entry写到redo log文件中。
在如下情况下写文件:
- redo log buffer 三分之一满了
- 达到某时间点
- 在 DBWR w把修改的数据块写到数据文件之前写redo log file
- 事务commit的时候
- 在数据库做归档redo log 文件的时候
Redo Log file
redo log就是存放redo log 信息的文件了,至少有两个redo log 组,oracle循环使用之。当然推荐有更多的redo log 组。既然是循环使用redo log,
必然会有一个log switch的过程。
log switch发生在:
- log file 已经写满了
- 使用了ALTER SYSTEM SWITCH LOGFILE 命令
在log switch 的时候自动会做checkpoint。
只要redo log组里面有一个redo log file可以用,就能进行log switch。当然如果redo log file坏了,LGWR肯定会记录到 trace和alert文件.
关于redo log的设置
一般至少两组redo log 文件,
每组中的redo log文件最好在不同的磁盘上,防止一起损坏。
每组中的redo log文件必须大小一致,它们是同时修改的。
不同组的redo log文件大小不一定一致。
每组的redo log文件数目必须一致。
修改redo log的位置
- 看看当前的redo log文件是不是正在使用,如果在使用如下命令
ALTER SYSTEM SWITCH LOGFILE;
- 把该文件copy到你想要放到位置
- ALTER DATABASE RENAME FILE ’filename’ TO filename’
增加redo log 文件
ALTER DATABASE [database]
ADD LOGFILE MEMBER
[ ’filename’ [REUSE]
[, ’filename’ [REUSE]]...
TO {GROUP integer
|(’filename’[, ’filename’]...)
}
删除redo log 文件
如果redo log 文件是invalid状态,可以删除之
ALTER DATABASE [database] DROP LOGFILE MEMBER ’filename’[, ’filename’]...
相关数据字典
察看
v$log
v$logfile
v$log_history
SQL> select member from v$logfile;
MEMBER
------------------------------------------------------
C:\ORACLE\PRODUCT\10.2.0\ORADATA\FYDB\REDO01.LOG
C:\ORACLE\PRODUCT\10.2.0\ORADATA\FYDB\REDO02.LOG
C:\ORACLE\PRODUCT\10.2.0\ORADATA\FYDB\REDO03.LOG
2.查看当前日志组状态:
SQL> select group#,members,bytes/1024/1024,status from v$log;
GROUP# MEMBERS BYTES/1024/1024 STATUS
---------- ---------- --------------- ----------------
1 1 50 INACTIVE
2 1 50 INACTIVE
3 1 50 CURRENT
现有三个日志组,每个组内有一个成员,每个成员的大小为50MB,现在想把此三个日志组的成员大小都改为100MB ,步骤如下:
1、创建2个新的日志组
SQL> alter database add logfile group 4 ('C:\ORACLE\PRODUCT\10.2.0\ORADATA\FYDB\REDO04.LOG') size 100MB;
SQL> alter database add logfile group 5 ('C:\ORACLE\PRODUCT\10.2.0\ORADATA\FYDB\REDO05.LOG') size 100MB;
2、切换当前日志到新的日志组
SQL> alter system switch logfile;
SQL> alter system switch logfile;
SQL> select group#,members,bytes/1024/1024,status from v$log;
GROUP# MEMBERS BYTES/1024/1024 STATUS
---------- ---------- --------------- ----------------
1 1 50 ACTIVE
2 1 50 ACTIVE
3 1 50 ACTIVE
4 1 100 CURRENT
5 1 100 ACTIVE
3、删除旧的日志组
SQL> alter database drop logfile group 1;
SQL> alter database drop logfile group 2;
SQL> alter database drop logfile group 3;
4、操作系统下删除原日志组1、2、3中的文件REDO01.LOG、REDO02.LOG、REDO03.LOG。
5、重建日志组1、2、3
SQL> alter database add logfile group 1 ('C:\ORACLE\PRODUCT\10.2.0\ORADATA\FYDB\REDO01.LOG') size 100MB;
SQL> alter database add logfile group 2 ('C:\ORACLE\PRODUCT\10.2.0\ORADATA\FYDB\REDO02.LOG') size 100MB;
SQL> alter database add logfile group 3 ('C:\ORACLE\PRODUCT\10.2.0\ORADATA\FYDB\REDO03.LOG') size 100MB;
6、切换日志组
SQL> alter system switch logfile;
SQL> alter system switch logfile;
7、删除中间过渡用的日志组4、5
SQL> alter database drop logfile group 4;
SQL> alter database drop logfile group 5;
SQL> select group#,status from v$log;
GROUP# STATUS
---------- ----------------
1 UNUSED
2 UNUSED
3 UNUSED
4 INACTIVE
5 CURRENT
8、到操作系统下删除原日志组4、5中的文件
9、备份当前的最新的控制文件
SQL> conn / as sysdba
SQL> alter database backup controlfile to trace resetlogs;
(注意:如果为安全考虑每个group可以多加几个文件)
==============================
跟redo logfile有关的其它数据库参数
1、log_buffer
log_buffer是ORACLE SGA的一部分, 所有DML命令修改的数据块先放在log_buffer里, 如果满了或者到了check_point时候通过lgwr后台进程写
到redo logfile里去。它不能设得太大,这样在意外发生时会丢失很多改变过的数据。它最好不要大于512K或者128K*CPU个数。
我们可以用下面的SQL语句检测log_buffer使用情况:
SQL> select rbar.name,rbar.value,re.name,re.value,(rbar.value*100)/re.value||'%' "radio"
from v$sysstat rbar,v$sysstat re
where rbar.name='redo buffer allocation retries'
and re.name='redo entries';
这个比率小于1%才好,否则增加log_buffer的大小
2、log_checkpoint_interval
Oracle8.1 版本后log_checkpoint_interval指的是两次checkpoint之间操作系统数据块的个数。
checkpoint时Oracle把内存里修改过的数据块用DBWR写到物理文件,用LGWR写到日志和控制文件。
一般UNIX操作系统的数据块为 512 bytes。
从性能优化来说log_checkpoint_interval = redo logfile size bytes / 512 bytes
3、log_checkpoint_timeout
Oracle8.1 版本后log_checkpoint_timeout指的是两次checkpoint之间时间秒数。
Oracle建议不用这个参数来控制,因为事务(transaction)大小不是按时间等量分布的。
log_checkpoint_timeout = 0
log_checkpoint_timeout = 900
Redo Log Buffer
redo log buffer 可以循环使用,存放数据库改变牵涉的信息,其内部放的是redo entry。
redo entry存放的是INSERT, UPDATE, DELETE, CREATE, ALTER, DROP 等操作对数据库的改变信息,这些信息在recovery的时候是很重要。这些redo entry
由oracle server进程从用户内存放到redo buffer。
LGWR(Log writer)
LGWR(Log writer)是oracle启动时候必须启动的进程,它负责把redo log buffer中的redo entry写到redo log文件中。
在如下情况下写文件:
- redo log buffer 三分之一满了
- 达到某时间点
- 在 DBWR w把修改的数据块写到数据文件之前写redo log file
- 事务commit的时候
- 在数据库做归档redo log 文件的时候
Redo Log file
redo log就是存放redo log 信息的文件了,至少有两个redo log 组,oracle循环使用之。当然推荐有更多的redo log 组。既然是循环使用redo log,
必然会有一个log switch的过程。
log switch发生在:
- log file 已经写满了
- 使用了ALTER SYSTEM SWITCH LOGFILE 命令
在log switch 的时候自动会做checkpoint。
只要redo log组里面有一个redo log file可以用,就能进行log switch。当然如果redo log file坏了,LGWR肯定会记录到 trace和alert文件.
关于redo log的设置
一般至少两组redo log 文件,
每组中的redo log文件最好在不同的磁盘上,防止一起损坏。
每组中的redo log文件必须大小一致,它们是同时修改的。
不同组的redo log文件大小不一定一致。
每组的redo log文件数目必须一致。
修改redo log的位置
- 看看当前的redo log文件是不是正在使用,如果在使用如下命令
ALTER SYSTEM SWITCH LOGFILE;
- 把该文件copy到你想要放到位置
- ALTER DATABASE RENAME FILE ’filename’ TO filename’
增加redo log 文件
ALTER DATABASE [database]
ADD LOGFILE MEMBER
[ ’filename’ [REUSE]
[, ’filename’ [REUSE]]...
TO {GROUP integer
|(’filename’[, ’filename’]...)
}
删除redo log 文件
如果redo log 文件是invalid状态,可以删除之
ALTER DATABASE [database] DROP LOGFILE MEMBER ’filename’[, ’filename’]...
相关数据字典
察看
v$log
v$logfile
v$log_history
发表评论
-
数据表更名语句
2010-04-21 11:08 1238当前数据表名为A,想要更名为B的语句如下: alter tab ... -
ORA-01078 & LRM-00109错误解决方法
2010-03-23 16:40 5522一同事今天刚装完oracle10g后,通过startup命令启 ... -
怎么确保最终用户在数据库中只有一个会话
2009-08-11 18:47 1512sqlplus / as sysdba create user ... -
测试版-逻辑switchover
2009-07-16 12:41 12571.检查primary数据库是否配置了standby redo ... -
测试版-逻辑standby创建
2009-07-16 12:37 23061、创建物理standby 详见《测试版-物理standb ... -
测试版-物理switchover
2009-07-16 12:35 1089注意:standby数据库应该是alter database ... -
测试版-物理standby创建
2009-07-15 17:37 12861.编辑/etc/hosts文件 # vi /etc/ho ... -
dataguard日志传输方式简介
2009-06-26 12:44 53341、两种日志传输方式 Arch:传统的日志传送方式。现在只 ... -
物理standby的failover
2009-06-26 12:40 1224========================物理stand ... -
物理standby的Switchover
2009-06-26 12:39 1270=======================物理st ... -
dataguard保护模式介绍
2009-06-26 12:38 33301、三种保护模式 1).最大性能(maximize per ... -
查看pga和sga值
2009-05-27 01:07 2540--显示正在使用的参数和文本参数值 1)select * fr ... -
设置sga和pga的值
2009-05-27 01:05 2555--设置sga的值 1)alter system set sg ... -
表的创建时间和表的大小空间
2009-05-27 01:04 1358--查看表的创建时间 select created,last_ ... -
设置parallel_automatic_tuning参数之后的错误的解决方法
2009-05-27 01:02 1769--设置并行度 1)alter system set para ... -
HA、RAC、Datagurad的区别
2009-05-10 20:20 2480标题为:HA、RAC、Datagurad的区别 一.HA简介 ... -
通过shell脚本后台创建表空间
2009-05-10 20:16 20871.用oracle用户登陆并创建shell文件: $ vi / ... -
occi库文件替换
2009-05-10 20:08 20981.从官方下载occi_gcc343_x86_64_10203 ... -
oracle10g查看表空间信息
2009-05-10 20:06 3005SELECT UPPER(F.TABLESPACE_NAME) ... -
oracle10g数据库自启动步骤
2009-05-10 20:05 1749oracle10g数据库自启动自启动设置步骤 一.Oracle ...
相关推荐
在开始修改redo日志文件大小之前,首先需要了解redo日志文件的基本概念。redo日志文件是Oracle数据库用于记录所有数据更改(即事务)的一种特殊文件。每当有数据修改时,Oracle会首先将这些更改写入redo日志文件,...
Oracle DG下修改redo log和standby redo log日志大小.txt
- `SIZE`: 指定每个Redo Log文件的大小。 - `'+DATA/pracdb1/onlinelog/redo05_1.log'` 和 `'+FLASH/pracdb1/onlinelog/flash05_1.ora'` 分别指定了Redo Log文件的实际位置。 ##### 2. 切换Redo Log日志组 在进行...
在MySQL中,redo log并非简单地一条一条写入磁盘文件,而是采用了更为高效和复杂的方式来组织和存储日志数据。 首先,当数据库执行CRUD(创建、读取、更新、删除)操作时,数据页(存储实际数据的单元)首先从磁盘...
redo log分为在线redo log(online redo log)和归档redo log(archived redo log),前者是正在使用的日志,后者是已滚动并保存的历史记录。 在大多数数据库系统中,redo log并不是一条一条记录写入文件,而是以...
Oracle数据库的重做日志(Redo Log)是记录所有事务对数据进行修改的历史记录,用于在系统崩溃或介质故障时恢复数据。重做日志的管理是数据库维护中的重要环节,因为它直接影响到数据库的可用性和性能。以下是关于...
当一个事务修改数据时,这些修改不会立即写入到磁盘上的数据文件,而是先被记录在redo log buffer中。这样做有两个主要目的:提高性能,因为内存操作比磁盘操作快得多;以及确保数据的一致性,即使在系统崩溃或异常...
在给定的数据中,`00 22` 表示这是一个redo log文件,`00 02` 指定了块大小为512字节。接着的`00 90 01 00` 表示文件中的块数,而`7D 7C 7B 7A` 是Oracle特有的MAGIC值,用于验证文件是否为有效的Oracle文件。 接...
撤销日志文件通常以REDO01.LOG、REDO02.LOG、REDO03.LOG等命名,并存储在数据库的数据文件路径下,如E:\APP\ADMINISTRATOR\ORADATA\ORCL。你可以通过查询动态性能视图V$LOGFILE来查看当前的撤销日志文件信息: ```...
Redo日志文件包含的数据内容包括所有的DML操作(如INSERT、UPDATE、DELETE、SELECT FOR UPDATE)和DDL语句造成的数据字典对象的更改。从Oracle 9i版本开始,DDL语句也被包括在redo日志中。 Oracle redo log的写入...
Innodb_log_buffer存储最近的更改,当其达到一定大小或者事务提交时,会将内容刷新到磁盘上的redo log file。 redo log file的结构通常是循环写入的,分为两个部分:当前活动的日志段(Current Log Segment)和已...
5. **DBWn(Database Writer)进程**:虽然DBWn进程主要负责将数据块从缓存写入数据文件,但它也会触发日志写入,特别是在数据块修改后,为了保持数据文件与redo log的一致性。 理解redo log buffer的写入时机对于...
` 更改redo log文件的名称。 6. **Dropping Online Redo Log Group**: `alter database drop logfile group 3;` 删除指定的redo log文件组。 7. **Dropping Online Redo Log Members**: `alter database drop ...
适当的redo log文件大小和数量取决于数据库的写入负载。过大可能导致不必要的磁盘I/O延迟,过小则可能导致频繁的日志切换。管理员应根据实际需求调整这些参数。 6. **归档模式与非归档模式** 在非归档模式下,旧...
这条命令用于向数据库中添加一个新的日志文件组,编号为4,包含两个成员文件`redo04a.log`和`redo04b.log`,每个文件大小设定为20MB。 2. **添加日志文件成员至现有组**: ```sql SQL> alter database add log...
创建新的重做日志文件组使用`ALTER DATABASE ADD LOGFILE [GROUP 正整数] 文件名`语句,例如,要添加名为"redo04_1.log"和"redo04_2.log"的两个文件到组4,每个大小为10MB,可以执行`ALTER DATABASE ADD LOGFILE ...
添加的日志文件包括 redo04.log、redo05.log、redo06.log 和 redo07.log,每个文件大小为 50M。 2.3 修改参数文件 2.3.1 生成 PFILE 使用 CREATE PFILE 语句生成参数文件,从 spfile 生成 pfile。 2.3.2 修改 ...
4. **控制文件大小管理**:通过设置`MAXDATAFILES`、`MAXLOGFILES`等参数来控制控制文件的大小和数量。 #### 二、创建与管理控制文件 1. **初始化控制文件**:可以通过指定`control_files`参数来创建控制文件,并...
在线重做日志(Online Redo Log)是Oracle数据库中用于记录所有事务更改的关键组件之一。每当数据库发生任何变更时,这些更改会被记录到重做日志文件中。这些文件对于数据库恢复过程至关重要,因为它们包含着所有...
频繁的redo log切换可能表明存在checkpoint not complete等问题,需检查alert日志并监控系统I/O状态,必要时增大redo log文件大小以改善性能。 #### 四、redo log状态解析 v$log视图提供了redo log的当前状态信息...