技术开发 频道

Oracle数据库常见真实问题处理步骤

6 在VM维护的裸设备上添加表空间的过程

创建裸设备,大小是2G
#
/usr/sbin/vxassist -g datadg make vol183 2G
修改指定裸设备的权限
#vxedit
-g datadg set user=oracle group=oinstall mode=600 vol182
创建连接
#ln
-s /dev/vx/rdsk/datadg/vol182 pre_ln2_182.dbf
添加到指定的表空间,例如UNDOTBS1
SQL
> alter tablespace UNDOTBS1
  
2  add datafile '/usr5/linkdata/pre/pre_ln2_182.dbf' size 2000M;


7 在SUN DiskSuit维护的裸设备上添加表空间的过程

1,创建裸设备
metainit
-s cqcdg d6049 -p /dev/did/rdsk/d4s0 2g
2,创建连接文件
ln
-s /dev/md/cqcdg/rdsk/d6049 pre_ln2_63.dbf
3,修改权限
chown oracle:dba pre_ln2_63.dbf
4,添加表空间
alter tablespace PERFDBS add datafile '/usr5/linkdata/pre/pre_ln2_63.dbf' SIZE 2000M;


8 在Oracle数据库中从文件系统迁移到裸设备的处理过程
故障现象:
C网数据库/文件系统空间使用率突然达到99%,检查发现原来是因为本地维护给数据库添加了数据文件,但是该数据文件添加到文件系统上导致根文件系统使用率突然增大。
将文件系统上的数据文件迁移到裸设备,裸设备在文件系统上只存在一个链接,几乎不占空间。
处理步骤:
1) 检查发现C网已没有已建好的可用裸设备,有一个建好的30G的裸设备没有使用,首先需要添加适合适用的裸设备。
2) 删除这个没有使用的30G的soft partition:
metaclear -s cqcdg -r d6042
3) 在删除的空间上建立一个2G的裸设备:
metainit -s cqcdg d6044 -p /dev/did/rdsk/d4s0 2g:
4) 在文件系统上建立到裸设备的链接
ln -s /dev/md/cqcdg/rdsk/d6044 pre_ln2_57.dbf
5) 更改链接文件的所有者
chown oracle:dba pre_ln2_57.dbf
6) 以sysdba身份登录并关闭数据库
sqlplus “/as sysdba”
SQL>shutdown immediate
7) 将文件系统文件上的数据导到裸设备文件上
dd if=/usr5/linkdata/sys/pre_ln2_61.dbf of=/usr5/linkdata/pre/pre_ln2_57.
dbf bs=134217728
if 文件系统文件名
of 新建裸设备链接名
bs dd时的blocksize,单位为byte,如果不设此项,dd的速度非常慢
8) 启动数据库到mount状态
SQL>startup mount
9) 更改数据文件名
SQL>ALTER DATABASE RENAME FILE '/usr5/linkdata/sys/pre_ln2_61.dbf' TO '/usr5/linkdata/pre/pre_ln2_57.dbf';
10) 打开数据库
SQL〉alter database open;
11) 验证更改

9 解决在Oracle Open状态下shutdown immediate不能关闭数据库问题
故障现象:
XX网数据库使用shutdown immediate不能关闭,日志中不断输出以下内容:
 

Shutting down instance: further logons disabled
Shutting down instance (immediate)
License high water mark
= 215
All dispatchers and shared servers shutdown
Fri Aug
12 21:52:34 2005
ALTER DATABASE CLOSE NORMAL
Fri Aug
12 21:52:38 2005
Thread
1 advanced to log sequence 69953
  
Current log# 2 seq# 69953 mem# 0: /ora_sys/cqgdb/redo02.log
Thread
1 advanced to log sequence 69954
  
Current log# 4 seq# 69954 mem# 0: /ora_sys/cqgdb/redo04.log
... ... ..
  
Current log# 3 seq# 69966 mem# 0: /ora_sys/cqgdb/redo03.log
Thread
1 advanced to log sequence 69967
  
Current log# 1 seq# 69967 mem# 0: /ora_sys/cqgdb/redo01.log


解决办法:
Oracle工程师首先怀疑是临时表空间空间不足导致,经检查临时表空间没有空间不足的情况,仔细观察日志发现重做日志文件不断切换,分析应该是有较多的事务没有完成提交或者有较多没有提交的事务完成回滚。现在面临的问题是我们没有很多时间去等待所有的事务去完成回滚或提交。解决问题的思路就是如何尽快结束这些事务的回滚或提交。
1) 查看spfile文件中是否有fast_start_parallel_rollback参数的设置,检查结果G网数据库没有设置该参数。如果没有显式设置,则该参数的默认值为low。修改该参数值为false
2) 将数据库启动到nomount状态:startup nomount
3) 修改改参数值:alter system set fast_start_parallel_rollback = FALSE scope=spfile
4) shutdown immediate关闭数据库
5) startup启动
6) 查看该参数是否生效:show parameter fast_start_parallel_rollback
7) 等待一段时间
8) shutdown immediate数据库可以关闭
分析:FAST_START_PARALLEL_ROLLBACK是用来控制事务并行回滚最大进程数的参数。该参数有三个可设值,low,high,false。当设置为false时并行回滚被禁止,由于禁止了并行回滚,在数据库关闭时,需要回滚的事务将被取消。
 

0
相关文章