今天查看偶得可爱的dbora发现了一个问题 select sidevent from v$session_wait; 发现了 buffer busy waits log file switch (archiving needed) 这是咋个回事呢? 最近我做了什么事情呢?原来早上我本打算对数据库进行压力测试所以往一个表里面insert了万的数据 不想偶得pc根本受不了sqlplus死掉了我就直接把它Ctrl+C了不过session还在而且v$session_wait里和 v$locked_object里面还有这个session的信息 于是我就把这个session给直接干掉了 alter system kill session ; 这个问题是解决了 没想为insert的数据太多我得重做日志设的只有M大小而且只有三个所以当重做日志三个都被填满了而且archive 还没做完所以就在v$session_wait里出现log file switch (archiving needed)的event 试着Troubleshooting一下 a SQL> alter system switch logfile; 不想这个操作也hung住了根本没反应这个应该是本来logfile都已经满了肯定switch也是没法子做得了 b增加第四组logfile大小为M SQL> alter database add logfile group C:ORACLEORADATASYMIELDREDOLOG size m; 发现做完了之后第一步里的alter system switch logfile也成功完成了 c删掉第一组的logfile SQL> alter database drop logfile group ; alter database drop logfile group * ERROR 位于第 行: ORA: 日志 (线程 ) 中需要归档 ORA: 联机日志 线程 : C:ORACLEORADATASYMIELDREDOLOG 删不掉提示第一组联机日志需要归档 d归档联机日志 SQL> archive log start 已处理的语句 SQL> archive log NEXT ORA: 没有需要存档的日志 SQL> archive log all; ORA: 没有需要存档的日志 归档完成 e删掉第一组的logfile SQL> alter database drop logfile group ; 数据库已更改 f增加第一组logfile大小为M SQL> alter database add logfile group C:ORACLEORADATASYMIELDREDOLOG size m; alter database add logfile group C:ORACLEORADATASYMIELDREDOLOG size m * ERROR 位于第 行: ORA: 添加日志文件 C:ORACLEORADATASYMIELDREDOLOG 时出错 无法创建文件 ORA: skgfrcre: 文件存在 OSD: <创建> 选项指定文件已经存在 第一组logfile已经存在?因为drop掉的第一组日志的操作系统文件并没有被删除 del C:ORACLEORADATASYMIELDREDOLOG 再try一次 SQL> alter database add logfile group C:ORACLEORADATASYMIELDREDOLOG size m; 数据库已更改 g再更改剩下的logfile 注意的是v$log中status为active和arc为No的日志文件不能被drop 查看结果 数据库SQL> select sidevent from v$session_wait; SID EVENT ok搞定 已经没有相关的event了 added by : 昨晚上看《Oracle 备份与恢复手册》发现 原来如果Archivelog模式下的数据库如果归档的操作没有被正常执行那么整个数据库将被挂起 偶怀疑这次就是一个挂起的事件 |