每个mission的文件大小被限制了,要是长时间跑,前面的内容被覆盖,如何能把这个调大呢?
在压力测试的中,发现数据库很慢,通过如下语句发现是log_sync
select * from v$session_wait
在结合如下语句,发现日志切换的频率非常之快
select * from v$log
针对这个情况我就增加redo文件的大小的个数
在线修改redo.log文件的大小
1.查找日志文件的路径名和group#号
SQL> select * from v$log;
GROUP# THREAD# SEQUENCE# BYTES MEMBERS ARCHIV
STATUS FIRST_CHANGE# FIRST_TIME
1 1 755 52428800 1 YES
INACTIVE 1024261938 11-3月 -09
2 1 756 52428800 1 NO
CURRENT 1024549334 11-3月 -09
3 1 754 52428800 1 YES
INACTIVE 1024203168 11-3月 -09
SQL> select member from v$logfile;
E:/ORACLE/PRODUCT/10.2.0/ORADATA/ORCL/REDO03.LOG E:/ORACLE/PRODUCT/10.2.0/ORADATA/ORCL/REDO01.LOG E:/ORACLE/PRODUCT/10.2.0/ORADATA/ORCL/REDO02.LOG
已选择3行。
SQL> alter database add logfile group 4 'E:/ORACLE/PRODUCT/10.2.0/ORADATA/ORCL/ REDO04.LOG' size 100m;
数据库已更改。
SQL> alter database add logfile group 5 'E:/ORACLE/PRODUCT/10.2.0/ORADATA/ORCL/ REDO05.LOG' size 100m;
数据库已更改。
SQL> alter database add logfile group 6 'E:/ORACLE/PRODUCT/10.2.0/ORADATA/ORCL/ REDO06.LOG' size 100m;
数据库已更改。
SQL> alter database add logfile group 7 'E:/ORACLE/PRODUCT/10.2.0/ORADATA/ORCL/ REDO07.LOG' size 100m;
数据库已更改。
SQL> alter database add logfile group 8 'E:/ORACLE/PRODUCT/10.2.0/ORADATA/ORCL/ REDO08.LOG' size 100m;
数据库已更改。
#######这个时候会发现新添加的日志状态为:unused
eg:
SQL> select * from v$log;
GROUP# THREAD# SEQUENCE# BYTES MEMBERS ARCHIV
STATUS FIRST_CHANGE# FIRST_TIME
9 1 0 104857600 1 YES
UNUSED 0
切换日志,使其可用
SQL> alter system switch logfile;
系统已更改。
SQL> alter system switch logfile;
系统已更改。
SQL> alter system switch logfile;
系统已更改。
####如果你想删除哪个日志就要把他的状态切换为:inactive
SQL> alter database drop logfile group 1;
数据库已更改。
SQL> alter database drop logfile group 2;
数据库已更改。
如果他的状态是:active, 你删除会报错的,提示无法删除在线的redo
SQL> alter database drop logfile group 3; alter database drop logfile group 3 * 第 1 行出现错误: ORA-01624: 日志 3 是紧急恢复实例 orcl (线程 1) 所必需的 ORA-00312: 联机日志 3 线程 1: 'E:/ORACLE/PRODUCT/10.2.0/ORADATA/ORCL/REDO03.LOG'
#######继续切换日志
SQL> alter system switch logfile;
系统已更改。
SQL> alter system switch logfile;
系统已更改。
SQL> alter system switch logfile;
系统已更改。
SQL> alter database add logfile group 1 'E:/ORACLE/PRODUCT/10.2.0/ORADATA/ORCL/ REDO01.LOG' size 100m; alter database add logfile group 1 'E:/ORACLE/PRODUCT/10.2.0/ORADATA/ORCL/REDO0 1.LOG' size 100m * 第 1 行出现错误: ORA-00301: 添加日志文件 'E:/ORACLE/PRODUCT/10.2.0/ORADATA/ORCL/REDO01.LOG' 时出错 - 无法创建文件 ORA-27038: 所创建的文件已存在 OSD-04010: ????? ??, ??????????
########根据上面的错误提示,要在系统级把redo文件删除,删除之后,如下:
SQL> alter database add logfile group 1 'E:/ORACLE/PRODUCT/10.2.0/ORADATA/ORCL/ REDO01.LOG' size 100m;
数据库已更改。
#######然后再切换日志
SQL> alter system switch logfile;
系统已更改。
SQL> alter system switch logfile;
系统已更改。
SQL>
#####查询所有的日志的状态
SQL> select group#,bytes,members status from v$log;
GROUP# BYTES STATUS
1 104857600 1
2 104857600 1
3 104857600 1
4 104857600 1
5 104857600 1
6 104857600 1
7 104857600 1
8 104857600 1
9 104857600 1
已选择9行。
SQL>
经过增加redo的大小和个数后,发现没有log_sync的等待事件了,速度有所提升
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。