[Oracle] DBA管理之"中止事务和修改日志回滚组"
来源:互联网 发布:mac如何打开隐藏文件夹 编辑:程序博客网 时间:2024/04/28 08:05
5.1 修改数据库日志文件
任务说明
数据库安装完成后,需要修改数据库日志文件,提高数据库性能。
操作指引
修改数据库日志文件操作步骤如下:
步骤 1 以oracle用户登录节点。
步骤 2 连接数据库。
$ sqlplus "/as sysdba"
步骤 3 修改回滚日志组和回滚日志文件。
1. 检查数据库当前事务。
SQL> select count(*) from v$transaction;
正常情况下,屏幕显示类似如下信息。
COUNT(*)
----------
0
− 如果显示的值不为“0”,需要杀掉相关事务进程,执行子步骤2~3。
− 如果显示的值为0,直接执行子步骤4。
2. 查看事务进程ID。
SQL> select p.SPID from v$session s,v$process p where s.PADDR=p.ADDR and s.SID in (select s.sid From v$transaction t,v$session s where t.addr=s.taddr);
正常情况下,屏幕显示类似如下信息。
SPID
------------
24509
706
16329
21467
19335
“SPID”即为查询到的事务进程ID,如屏显信中的信息中的“24509”、“706”、“16329”、“21467”和“19335”。
3. 杀死事务进程。
SQL> exit
$ kill SPID
然后执行子步骤1,查看事务进程是否去全部杀掉。
4. 切换回滚表空间。
SQL> alter system set undo_tablespace='tbs_undo' sid='wisgrpt';
正常情况下,屏幕显示如下信息。
System altered.
5. 使原undotbs1回滚表空间脱机并删除
SQL> alter tablespace undotbs1 offline;
正常情况下,屏幕显示如下信息。
Tablespace altered.
SQL> drop tablespace undotbs1;
正常情况下,屏幕显示如下信息。
Tablespace dropped.
6. 创建回滚日志组。
按安装规划,回滚日志存放在逻辑卷db_lv_00(100GB),该逻辑卷挂载在/opt/oracle/oredodata下,需要根据逻辑卷db_lv_00实际大小调整SIZE。
SQL> alter database add logfile group 4('/opt/oracle/redodata/redo01.rdo') SIZE 20G;
SQL> alter database add logfile group 5('/opt/oracle/redodata/redo02.rdo') SIZE 20G;
SQL> alter database add logfile group 6('/opt/oracle/redodata/redo03.rdo') SIZE 20G;
SQL> alter database add logfile group 7('/opt/oracle/redodata/redo04.rdo') SIZE 20G;
SQL> alter database add logfile group 8('/opt/oracle/redodata/redo05.rdo') SIZE 20G;
由于创建的回滚日志组的空间比较大,需要2分钟左右才能创建完成一个日志组。
正常情况下,屏幕显示如下信息。
Database altered.
如果创建过程中出现,以下错误:
ORA-19502: 文件 "/opt/oracle/redoata/redo06.rdo", 块编号 1873921 (块大小=512)
上出现写入错误
ORA-27072: 文件 I/O 错误
可能是逻辑卷空间不够,执行df –h查看“/opt/oracle/redoata”剩余空间大小,根据现场实际情况修改日志文件大小(SIZE)。
7. 切换日志文件。
SQL> alter system switch logfile;
SQL> alter system switch logfile;
SQL> alter system switch logfile;
SQL> alter system switch logfile;
SQL> alter system switch logfile;
正常情况下,屏幕显示类似如下信息。
System altered.
8. 删除系统自带的回滚日志组。
SQL> alter database drop logfile group 1;
SQL> alter database drop logfile group 2;
SQL> alter database drop logfile group 3;
正常情况下,屏幕显示类似如下信息。
Database altered.
如果在删除时,出现以下错误:
alter database drop logfile group 1
*
ERROR at line 1:
ORA-01624: 日志 1 是紧急恢复实例 wisgrpt (线程 1) 所必需的
ORA-00312: 联机日志 1 线程 1: '/opt/oracle/oradata/wisgrpt/redo01.log'
请参考“异常处理”进行处理。
步骤 4 重新启动数据库。
SQL> shutdown immediate
SQL> startup
步骤 5 检查日志组和日志文件修改是否成功。
$ cd /opt/oracle/redodata
$ ls -l
正常情况下,屏幕显示类似如下信息。
drwx------ 2 oracle dba 16384 2009-01-08 14:40 lost+found/
-rw-r----- 1 oracle dba 8589935104 2009-01-12 22:16 redo01.rdo
-rw-r----- 1 oracle dba 8589935104 2009-01-13 15:28 redo02.rdo
-rw-r----- 1 oracle dba 8589935104 2009-01-12 21:55 redo03.rdo
-rw-r----- 1 oracle dba 8589935104 2009-01-12 21:55 redo04.rdo
-rw-r----- 1 oracle dba 8589935104 2009-01-12 21:55 redo05.rdo
----结束
异常处理
如果在删除统自带的回滚日志组时,出现以下错误:
alter database drop logfile group 1
*
ERROR at line 1:
ORA-01624: 日志 1 是紧急恢复实例 wisgrpt (线程 1) 所必需的
ORA-00312: 联机日志 1 线程 1: '/opt/oracle/oradata/wisgrpt/redo01.log'
是因为当前日志组正在被Oracle数据库软件使用,请按以下步骤处理:
步骤 1 查看日志文件状态。
SQL> select * from v$log;
当其“STATUS”为“CURRENT”或“ACTIVE”时,不能删除。如下屏显信息中,group1的“STATUS”为“CURRENT”无法删除,其余2个group则能删除。
正常情况下,屏幕显示类似如下信息。
GROUP# THREAD# SEQUENCE# BYTES MEMBERS ARCHIV
---------- ---------- ---------- ---------- ---------- ------
STATUS FIRST_CHANGE# FIRST_TIME
-------------------------------- ------------- --------------
1 1 30 52428800 1 NO
CURRENT 1795442 12-1月 -09
2 1 28 52428800 1 NO
INACTIVE 1782428 12-1月 -09
3 1 29 52428800 1 NO
INACTIVE 1795439 12-1月 -09
GROUP# THREAD# SEQUENCE# BYTES MEMBERS ARCHIV
---------- ---------- ---------- ---------- ---------- ------
STATUS FIRST_CHANGE# FIRST_TIME
-------------------------------- ------------- --------------
4 1 23 8589934592 1 NO
INACTIVE 1782412 12-1月 -09
5 1 24 8589934592 1 NO
INACTIVE 1782420 12-1月 -09
6 1 25 8589934592 1 NO
INACTIVE 1782422 12-1月 -09
GROUP# THREAD# SEQUENCE# BYTES MEMBERS ARCHIV
---------- ---------- ---------- ---------- ---------- ------
STATUS FIRST_CHANGE# FIRST_TIME
-------------------------------- ------------- --------------
7 1 26 8589934592 1 NO
INACTIVE 1782424 12-1月 -09
8 1 27 8589934592 1 NO
ACTIVE 1782426 12-1月 -09
8 rows selected.
步骤 2 再次切换日志组,查看日志组状态。
SQL> alter system switch logfile;
SQL> select * from v$log;
步骤 3 直到group1的“STATUS”为“INATIVE”删除日志组。
SQL> alter database drop logfile group 1;
- [Oracle] DBA管理之"中止事务和修改日志回滚组"
- oracle-dba-事务,角色管理
- oracle-dba- 重做日志管理
- oracle-dba- 管理归档日志
- oracle-dba-用户管理和资源文件
- oracle-dba-管理和维护表
- oracle-dba-系统和对象权限管理
- ORACLE DBA学习笔记--管理归档日志文件
- Oracle DBA 日常管理
- Oracle DBA管理
- Oracle DBA日常管理
- Oracle DBA 日常管理
- oracle-dba-内存管理
- db2 事务日志和归档的管理
- ORACLE入门之ORACLE的日志管理
- oracle之 Oracle归档日志管理
- SQL Server DBA面试知识点(四)-- SQL Server事务日志和数据库备份
- Oracle之DBA(一)
- 安全工具集合
- Spring2.5中基于注释的IoC
- JS架构资料收藏
- IREPORT简易教程
- EXCEL作为数据源导入
- [Oracle] DBA管理之"中止事务和修改日志回滚组"
- 《WebGIS开发实践手册》2.5 ArcIMS的管理组件
- QLabel
- 语言沟通十大技巧,使你的表达能力倍增
- IT面试算法题(3)
- 动态变量名的实现方法
- 程序的基本元素(个人感觉)
- SSH+DWR 框架 整合
- 枚举应用