今天接到维护人员的电话,说是要对数据库表空间进行扩充.
用oem 很长时间才能看到表空间的情况,eom客户端特别容易挂掉. 这个问题也困扰了我很久.
于是我建议用命令行的方式,并给了命令作为参考:
建立表空间的语句如下:
CREATE TABLESPACE TMS2006_INDEX LOGGING DATAFILE '/dev/vgora/rlvora_4g_051' SIZE 4050M EXTENT MANAGEMENT LOCAL SEGMENT SPACE MANAGEMENT AUTO ;
CREATE TABLESPACE TMS2006_HOT LOGGING DATAFILE '/dev/vgora/rlvora_4g_101' SIZE 4050M EXTENT MANAGEMENT LOCAL SEGMENT SPACE MANAGEMENT AUTO ;
LOGGING 选项 记录操作日志,可以利用操作日志来恢复
EXTENT MANAGEMENT LOCAL 选项 区管理为本地化 即数据块的使用与否是在此文件的头部 用一串二进制位来标示数据块块的使用与否。
SEGMENT SPACE MANAGEMENT AUTO 选项 段空间管理为自动
把后续的数据文件加入表空间
ALTER TABLESPACE TMS2006_INDEX ADD DATAFILE '/dev/vgora/rlvora_4g_052' SIZE 4050M;
......
......
ALTER TABLESPACE TMS2006_INDEX ADD DATAFILE '/dev/vgora/rlvora_4g_065' SIZE 4050M;
把后续的数据文件加入表空间
ALTER TABLESPACE TMS2006_HOT ADD DATAFILE '/dev/vgora/rlvora_4g_102' SIZE 4050M;
......
......
ALTER TABLESPACE TMS2006_HOT ADD DATAFILE '/dev/vgora/rlvora_4g_105' SIZE 4050M;
并且提醒他,那些文件设备用过,那些文件设备没有用过,必须搞清楚.因为碰到的系统,都是主机工程师
把存储都已经划分成裸设备,然后让数据库使用,结果维护人员因为维护日志,和文档记录不详细,会把
已经在用的裸设备 再 进行划分.这种情况,很容易出问题.
维护人员后来飞秋我说:
我使用alter tablespace tmsztf0731space add datafile '/dev/rtmsztf-731IIII.dbf' size 1000M;命令扩展表空间就会出错。说磁盘空间已满
我郁闷了,于是问:
windows? unix?
维护人员说:
应该是 unix 吧。
我说:
把select * from v$datafile 的结果给我看看
/dev/rcwsystem
/dev/rcwundo_1
/dev/rcwsysaux
看到这个结果我就知道是 unix 了。
于是要了 root 和 ip 自己登上去看看。
过了一会维护人员又把平台的报错发给我:
PSQLException:ORA-00604: 递归 SQL 级别 1 出现错误
ORA-01654: 索引 SYS.I_COL3 无法通过 1024 (在表空间 SYSTEM 中) 扩展
[ 详细信息请查看系统异常日志], kmdm2=, kmdm1=, q_dwdm=A5204, userid=T_F491582187
, qy=1, q_kmdm_d=, qyqjchoose=0, ztdm=A5204, k_sfmj=0, kmyetmptable=KMYETMPT_F49
1582187}{导航主题:}
我一看这个报错,直觉和经验告诉我,回收站没有及时清。
我们现在的软件系统设计有一个比较大的缺陷,后台数据库从9i迁移到10g以后,
对于 drop table 有了重大的改动,10g不再真正的删除表,而且转移到回收站
相应的资源还是占用的。而我们的系统里面在计算报表的时候会使用大量的临时表
这个临时表需要打上一个引号,因为不是oracle的真正的临时表。
而是在数据库里面 创建一张表,然后再drop掉。
现在无论我们开发人员和维护人员,对于此事都不清楚。
结果一查 回收站里面 16万张表, 最早的时间 是 2010年12月1日的。
上面平台的报错,就是回收站不清,导致系统表越来越大。最后把system表空间撑满了。
根据以上的检查,先治标,再治本
治标:
创建裸设备,分配权限给oracle,扩system表空间。
治本:
从开发入手,解决临时表的问题。
从维护入手,定期删除回收站。
治本,其实早就开始了,我们给维护提了很多次,要定期清回收站。但收效甚微,我估计现在还有很多
省的维护人员不知道此事。贵州今天就是这个状况。
现在开始治表:
先查看 目前磁盘的状况:
# df -k
Filesystem 1024-blocks Free %Used Iused %Iused Mounted on
/dev/hd4 2097152 982020 54% 3341 2% /
/dev/hd2 4194304 1467040 66% 48618 13% /usr
/dev/hd9var 2097152 1974176 6% 1116 1% /var
/dev/hd3 2097152 2043600 3% 741 1% /tmp
/dev/fwdump 1048576 1047948 1% 5 1% /var/adm/ras/platform
/dev/hd1 2097152 2096432 1% 18 1% /home
/proc - - - - - /proc
/dev/hd10opt 2097152 1987844 6% 2748 1% /opt
/dev/fslv00 4194304 376492 92% 3866 5% /fix
/dev/oracle_lv 10485760 3603372 66% 37835 5% /oracle
/dev/fslv01 10485760 3849364 64% 6816 1% /oradata
/dev/fslv02 20971520 18374264 13% 67 1% /ora_arch
# lsvg
rootvg
oravg01
oravg02
oravg03
oravg04
oravg06
oravg07
oravg05
# lsvg -l rootvg
rootvg:
LV NAME TYPE LPs PPs PVs LV STATE MOUNT POINT
hd5 boot 1 1 1 closed/syncd N/A
hd6 paging 16 16 1 open/syncd N/A
hd8 jfs2log 1 1 1 open/syncd N/A
hd4 jfs2 8 8 1 open/syncd /
hd2 jfs2 16 16 1 open/syncd /usr
hd9var jfs2 8 8 1 open/syncd /var
hd3 jfs2 8 8 1 open/syncd /tmp
hd1 jfs2 8 8 1 open/syncd /home
hd10opt jfs2 8 8 1 open/syncd /opt
fwdump jfs2 4 4 1 open/syncd /var/adm/ras/platform
lg_dumplv sysdump 4 4 1 closed/syncd N/A
fslv00 jfs2 16 16 1 open/syncd /fix
oracle_lv jfs2 40 40 1 open/syncd /oracle
fslv01 jfs2 40 40 1 open/syncd /oradata
fslv02 jfs2 80 80 1 open/syncd /ora_arch
# lsvg -l oravg01
oravg01:
LV NAME TYPE LPs PPs PVs LV STATE MOUNT POINT
cwredo_1 raw 4 4 1 open/syncd N/A
cwredo_2 raw 4 4 1 open/syncd N/A
cwredo_3 raw 4 4 1 closed/syncd N/A
cwredo_4 raw 4 4 1 closed/syncd N/A
cwredo_5 raw 4 4 1 closed/syncd N/A
cwredo_6 raw 4 4 1 closed/syncd N/A
cwconfile_1 raw 4 4 1 open/syncd N/A
cwconfile_2 raw 4 4 1 open/syncd N/A
cwconfile_3 raw 4 4 1 open/syncd N/A
cwsystem raw 16 16 1 open/syncd N/A
cwundo_1 raw 32 32 1 open/syncd N/A
cwundo_2 raw 32 32 1 closed/syncd N/A
cwtemp raw 32 32 1 open/syncd N/A
cwindex raw 4 4 1 closed/syncd N/A
cwusers raw 4 4 1 open/syncd N/A
cwtools raw 4 4 1 closed/syncd N/A
cwdbspfile raw 1 1 1 closed/syncd N/A
cwdblvora01 raw 32 32 1 closed/syncd N/A
cwdblvora02 raw 32 32 1 closed/syncd N/A
cwdblvora03 raw 32 32 1 closed/syncd N/A
cwdblvora04 raw 32 32 1 closed/syncd N/A
cwsysaux raw 32 32 1 open/syncd N/A
cwflash raw 16 16 1 closed/syncd N/A
tmsztf0731 raw 40 40 1 open/syncd N/A
tms2006 raw 40 40 1 open/syncd N/A
tmsztfwf raw 40 40 1 open/syncd N/A
tms2006II jfs 32 32 1 open/syncd N/A
tms2006III jfs 32 32 1 open/syncd N/A
tms2006temp jfs 32 32 1 open/syncd N/A
tmsztf0731II jfs 32 32 1 open/syncd N/A
tmsztf-731III jfs 32 32 1 open/syncd N/A
看了以上的 存储划分,我又开始郁闷了。 raw也有,jfs 也有,jfs2 也有。
名称也没有统一命名。有的用了,有的没有用。唉,无语。
不说了,说什么都是浮云,干活。
lsvg -l jstrdmm_DATA02
lvstat open/sync
lsvg jstrdmm_DATA02
建立裸设备类型的 的逻辑卷 40个lps
mklv -y ‘lvdata0331’ - t ‘raw’ datavg09 40
mklv -y ‘lvdata0331’ - t ‘jfs2’ datavg09 40 九鼎推荐使用这种 类型的裸设备
lsvg
lsvg vgdata
lsvg -l vgdata
就这样吧。
维护水平要提高,维护人员的水平要提高,维护人员的工资水平要提高,客户满意度才会提高,公司的收入才能提高。
什么时候才能良性循环呢。