当执行插入等操作时出现错误提示“unable to extand table ……” ,则说明该表所在表空间空间不足了。
如果是在winserver下则为表空间增加文件即可(本文不做介绍)。
本文主要介绍数据库服务器环境为AIX时,如何为表空间增加裸设备。
包含AIX系统存储管理的基本介绍;
AIX通过三个层次对存储进行管理:物理卷(PV)、卷组(GV),逻辑卷(LV);
数据库空间不足了就需要给表空间增加裸设备(逻辑卷),在sqlplus中通过alter命令将LV增加给表空间;
大体分为以下几步:
1、查看可用卷组
在AIX命令行中执行:
#lsvg – o //查看所有可用卷组
2、查看卷组中的逻辑卷
在AIX命令行中执行:
lsvg –l datavg03
其中datavg03为1中查看到某卷组名称,管理人员希望将此卷组分配给数据库使用。
返回结果中STATE MOUNT列表名了逻辑卷的占用状态,open/syncd表示已被表空间占用,closed/syncd表示未使用
3、查看逻辑卷容量大小
在AIX命令行中执行:
#lslv lvdata0315
其中lvdata0315为2中查看到的某未分配逻辑卷,在分配给表空间之前需要先确定它的容量。
容量大小为LPs×PPSIZE
4、将未使用的逻辑卷加入表空间
在sqlplus中以sysdba执行:
SQL>alter tablespace tablespacename add datafile ‘/dev/rlvdata0318’ size 4090
注意:将上句中/dev/rlvdata0318替换成2中查到未占用的逻辑卷名称,将该逻卷名称前加“/dev/r”;
逻辑卷名称注意大小写
size指示的大小应略小于3中计算逻辑卷大小
5、查看是否添加成功
在sqlplus中执行:
select t1.name , t2.name from system.v$tablespace t1,system.v$datafile t2 where t1.ts#=t2.ts# ;
返回结果包含两列:表空间名、文件名;如果结果中某行包含了4中操作的表空间及4中增加的逻辑卷名,那就说明增加成功了。
如果是创建新的表空间,操作也类似。这里只记录一个遇到的问题。
执行创建表空间的ddl语句,则报错:
ORA-01119: error in creating database file '/dev/r****'
ORA-27041: unable to open file
IBM AIX RISC System/6000 Error: 13: Permission denied
Additional information: 11
如果你确信裸设备路径没有写错的话,那可能是由于裸设备的属主没有赋予Oracle用户所引起的。
可在aix命令行中执行 #chown -R oracle:dba lvname 更改要添加到表空间的裸设备的属主,其中lvname为裸设备名称。
如果使用的oracle RAC,那么创建了用裸设备创建了表空间,建立了表,在查询新表有时成功有时失败,失败时提示:
ORA-01157: cannot identify/lock data file [number] - see DBWR trace file
ORA-01110: data file [number]:"dev/r*****"
这可能是由于没有在RAC中的所有节点上配置裸设备属主引起的。
解决方式,telnet到所哟节点,然后执行命令 #chown -R oracle:dba lvname