七、在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;
八、在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/lin kdata/pre/pre_ln2_57.dbf'; 10.开数据库 SQL>alter database open; 11.证更改
九、解决在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时并行回滚被禁止,由于禁止了并行回滚,在数据库关闭时,需要回滚的事务将被取消。
十、数据库服务器字符集更改步骤 问题描述: 在客户端插入字符“咪咪”,从数据库中查询显示时出现乱码。 处理步骤: 1.据库做全库导出,备份全库数据,以防故障发生 首先设定客户端的字符集,必须以ZHS16GBK的字符集导出,然后才能在更改失败后顺利倒入新建的库。 #setenv NLS_LANG \#stty -istrip -parity cs8; #setenv LANG zh 拟在/sybdata(磁盘阵列)下建立一个目录orabak,用于存放dmp文件。 #mkdir /sybdata/orabak #chown oracle:oinstall /sybdata/orabak #su – oracle #cd /sybdata/orabak %exp system/manager@hnsdh file=hnsdh_2005-8-17 log=hnsdh_exp_2005-8-17 full=y (此处命名为示例,以实施当日日期为准) 察看日志结尾,以判定导出是否成功。 #cat hnsdh_2005-8-17.dmp | od -x | head 看第二和第三个字节组成的十六进制数是多少可判断导出文件的字符集。 示例如下: #cat example.dmp | od -x | head 0000000 0303 5445 5850 4f52 543a 5630 392e 3032 。。。