當執行插入等操作時出現錯誤提示“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