如果发现某个表空间存储空间不足时,可以为表空间添加新的数据文件,扩展表空间大小。但是一般建议预先估计表空间所需的存储空间大小,然后为它建立若干适当大小的数据文件。
以下是扩大TBS_TR_IND这个表空间的sql命令:
ALTER TABLESPACE TBS_TR_IND
ADD DATAFILE '/oradata/rTBS_TR_IND_002.dbf' --给rTBS_TR_IND_002.dbf这个数据文件增加32G空间
SIZE 32G
AUTOEXTEND OFF
SQL>ALTER TABLESPACE TBS_EDS_DAT
ADD DATAFILE 'G:\datafile\TBS_EDS_DAT01.DBF' --给TBS_EDS_DAT01.DBF增加100M空间
SIZE 100M
根据表空间的类型不同,扩容方法不同。DB2一般分SMS和DMS两种类型表空间,一个是系统管理表空间,一个是数据库管理表空间。
1、SMS表空间的container是文件系统目录或文件,一般container是自动扩展的,这种情况下你需要扩容文件系统。
查看表空间类型和container
$db2 list tablespaces show detail$db2 list tablespace containers for <tablespaceid>
2、DMS表空间也有自动扩展类型和使用裸设备的情况(container是文件或裸设备),如果是自动扩展则扩容文件系统。非自动扩展的扩容方式是增加container。
DMS+文件
$db2 connect to <dbname>$db2 "alter tablespace <tablespaceName> begin new stripe set (file '<filePath>/<fileName>' 655360)"
DMS+裸设备
$db2 connect to <dbname>$db2 "alter tablespace <tablespaceName> begin new stripe set (device '/dev/rLR_XXXXXX' 671088640)"
语句中使用了begin new stripe set,表示新的数据直接写到新的container上,不进行数据reblance。否则替换为add,表示在container间进行数据reblance(会在后台执行,可用list utilities查看进度)
括号中的数字表示container的page个数(表空间pagesize×这个数字即是container的大小)。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)