帶有LOB欄位的表遷移
在建立含有lob欄位的表時,oracle會自動為lob欄位建立兩個單獨的segment,一個用來存放lob資料,另一個用來存放lob索引,並且它們都會儲存在對應表指定的表空間中。但是當我們用alter table tb_name move tablespace tbs_name; 對錶做表空間之間遷移時只能遷移非lob欄位以外的segment,而如果要在移動表資料同時移動lob相關欄位,就必需用如下的含有特殊引數據的文句來完成:alter table tb_name move tablespace tbs_name lob (column_lob1,column_lob2) store as(tablesapce tbs_name);
實驗如下:
C:\>set ORACLE_SID=icmnlsdb
C:\>sqlplus /nolog
SQL*Plus: Release 9.2.0.8.0 - Production on 星期五 6月 13 16:52:08 2008
Copyright (c) 1982, 2002, Oracle Corporation. All rights reserved.
SQL> conn / as sysdba;
已連線。
SQL> select file_name from dba_data_files;
FILE_NAME
-----------------------------------------------------------------------
D:\ORACLE\ORA92\ICMNLSDB\SYSTEM01.DBF
D:\ORACLE\ORA92\ICMNLSDB\UNDOTBS01.DBF
D:\ORACLE\ORA92\ICMNLSDB\INDX01.DBF
D:\ORACLE\ORA92\ICMNLSDB\TOOLS01.DBF
D:\ORACLE\ORA92\ICMNLSDB\USERS01.DBF
D:\ORACLE\ORA92\ICMNLSDB\ALAN.DBF
D:\ORACLE\ORA92\ICMNLSDB\MYCR.DBF
D:\ORACLE\ORA92\ICMNLSDB\LMT.DBF
D:\ORACLE\ORA92\ICMNLSDB\PERFSTAT.DBF
D:\ORACLE\ORA92\ICMNLSDB\MYTEXT01.DBF
已選擇10行。
SQL> create tablespace HJP
2 datafile 'D:\ORACLE\ORA92\ICMNLSDB\hjp.dbf' size 100M
3 autoextend on
4 next 10M
5 maxsize unlimited;
表空間已建立。
SQL> conn alan/passw0rd@abc
已連線。
SQL> select segment_name,segment_type
2 from dba_segments
3 where wner='ALAN';
未選定行
SQL> create table test_lob
2 (id blob,
3 name clob);
表已建立。
SQL> select segment_name,segment_type,tablespace_name
2 from dba_segments
3 where wner='ALAN';
SEGMENT_NAME SEGMENT_TYPE TABLESPACE_NAME
------------------------------ ------------------ --------------------
TEST_LOB TABLE USERS
SYS_IL0000026875C00001$$ LOBINDEX USERS
SYS_IL0000026875C00002$$ LOBINDEX USERS
SYS_LOB0000026875C00001$$ LOBSEGMENT USERS
SYS_LOB0000026875C00002$$ LOBSEGMENT USERS
SQL> alter table test_lob move tablespace hjp;
表已更改。
SQL> select segment_name,segment_type,tablespace_name
2 from dba_segments
3 where wner='ALAN';
SEGMENT_NAME SEGMENT_TYPE TABLESPACE_NAME
------------------------------ ------------------ ------------------
TEST_LOB TABLE HJP
SYS_IL0000026875C00001$$ LOBINDEX USERS
SYS_IL0000026875C00002$$ LOBINDEX USERS
SYS_LOB0000026875C00001$$ LOBSEGMENT USERS
SYS_LOB0000026875C00002$$ LOBSEGMENT USERS
這裡lob段並沒有移動到指定的tablespace去。因此需要額外的命令進行移動
SQL> alter table test_lob move tablespace hjp lob(id,name) store as(tablespace hjp);
表已更改。
SQL> select segment_name,segment_type,tablespace_name
2 from dba_segments
3 where wner='ALAN';
SEGMENT_NAME SEGMENT_TYPE TABLESPACE_NAME
------------------------------ ------------------ ------------------------------
TEST_LOB TABLE HJP
SYS_IL0000026875C00001$$ LOBINDEX HJP
SYS_IL0000026875C00002$$ LOBINDEX HJP
SYS_LOB0000026875C00001$$ LOBSEGMENT HJP
SYS_LOB0000026875C00002$$ LOBSEGMENT HJP
實驗如下:
C:\>set ORACLE_SID=icmnlsdb
C:\>sqlplus /nolog
SQL*Plus: Release 9.2.0.8.0 - Production on 星期五 6月 13 16:52:08 2008
Copyright (c) 1982, 2002, Oracle Corporation. All rights reserved.
SQL> conn / as sysdba;
已連線。
SQL> select file_name from dba_data_files;
FILE_NAME
-----------------------------------------------------------------------
D:\ORACLE\ORA92\ICMNLSDB\SYSTEM01.DBF
D:\ORACLE\ORA92\ICMNLSDB\UNDOTBS01.DBF
D:\ORACLE\ORA92\ICMNLSDB\INDX01.DBF
D:\ORACLE\ORA92\ICMNLSDB\TOOLS01.DBF
D:\ORACLE\ORA92\ICMNLSDB\USERS01.DBF
D:\ORACLE\ORA92\ICMNLSDB\ALAN.DBF
D:\ORACLE\ORA92\ICMNLSDB\MYCR.DBF
D:\ORACLE\ORA92\ICMNLSDB\LMT.DBF
D:\ORACLE\ORA92\ICMNLSDB\PERFSTAT.DBF
D:\ORACLE\ORA92\ICMNLSDB\MYTEXT01.DBF
已選擇10行。
SQL> create tablespace HJP
2 datafile 'D:\ORACLE\ORA92\ICMNLSDB\hjp.dbf' size 100M
3 autoextend on
4 next 10M
5 maxsize unlimited;
表空間已建立。
SQL> conn alan/passw0rd@abc
已連線。
SQL> select segment_name,segment_type
2 from dba_segments
3 where wner='ALAN';
未選定行
SQL> create table test_lob
2 (id blob,
3 name clob);
表已建立。
SQL> select segment_name,segment_type,tablespace_name
2 from dba_segments
3 where wner='ALAN';
SEGMENT_NAME SEGMENT_TYPE TABLESPACE_NAME
------------------------------ ------------------ --------------------
TEST_LOB TABLE USERS
SYS_IL0000026875C00001$$ LOBINDEX USERS
SYS_IL0000026875C00002$$ LOBINDEX USERS
SYS_LOB0000026875C00001$$ LOBSEGMENT USERS
SYS_LOB0000026875C00002$$ LOBSEGMENT USERS
SQL> alter table test_lob move tablespace hjp;
表已更改。
SQL> select segment_name,segment_type,tablespace_name
2 from dba_segments
3 where wner='ALAN';
SEGMENT_NAME SEGMENT_TYPE TABLESPACE_NAME
------------------------------ ------------------ ------------------
TEST_LOB TABLE HJP
SYS_IL0000026875C00001$$ LOBINDEX USERS
SYS_IL0000026875C00002$$ LOBINDEX USERS
SYS_LOB0000026875C00001$$ LOBSEGMENT USERS
SYS_LOB0000026875C00002$$ LOBSEGMENT USERS
這裡lob段並沒有移動到指定的tablespace去。因此需要額外的命令進行移動
SQL> alter table test_lob move tablespace hjp lob(id,name) store as(tablespace hjp);
表已更改。
SQL> select segment_name,segment_type,tablespace_name
2 from dba_segments
3 where wner='ALAN';
SEGMENT_NAME SEGMENT_TYPE TABLESPACE_NAME
------------------------------ ------------------ ------------------------------
TEST_LOB TABLE HJP
SYS_IL0000026875C00001$$ LOBINDEX HJP
SYS_IL0000026875C00002$$ LOBINDEX HJP
SYS_LOB0000026875C00001$$ LOBSEGMENT HJP
SYS_LOB0000026875C00002$$ LOBSEGMENT HJP
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/12361284/viewspace-345706/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Oracle 帶LOB欄位的表的遷移Oracle
- lob欄位表空間遷移
- 遷移帶LOB等大欄位資料到非預設表空間
- 移動一個帶有lob欄位的表到另外一個表空間的語法
- 行連結與行遷移, LOB欄位的儲存及效能影響
- Oracle 建表時LOB欄位語法Oracle
- oracle中lob欄位Oracle
- Long -> lob , to_lob 轉換,遷移
- LOB欄位EMPTY_LOB和NULL的區別Null
- LONG欄位型別向CLOB遷移型別
- 【LOB】使用資料泵時 LOB 欄位存放位置
- ORACLE LOB大欄位維護Oracle
- LOB欄位資料清理 - 更新為null後move lobNull
- 釋放大資料量的lob欄位空間大資料
- pl/sql dev建表加欄位時建的欄位名都帶了“”SQLdev
- lob欄位的ora-1555處理方案
- 小議lob欄位結構和儲存
- postgresql單個表可以有多少欄位SQL
- 一次PLSQL處理LOB欄位的優化SQL優化
- LONG RAW的欄位型別不能使用impdp + dblink遷移型別
- 如果對10g 中含LOB欄位的表僅僅進行insert 的同步 ?
- Oracle lob載入bfile資料到blob欄位中Oracle
- 可以處理LOB欄位的常用字元函式字元函式
- oracle刪除表欄位和oracle表增加欄位Oracle
- SQL Server語句刪除帶有預設值的欄位SQLServer
- DatabaseLink不支援merge和lob欄位查詢Database
- lob欄位型別轉換ora-22858型別
- 匯入一個有lob型別欄位的表且存在與匯入表同名的同義詞會報ora-01403錯誤型別
- 修改表的欄位型別型別
- SQL新增表欄位SQL
- [重慶思莊每日技術分享]-重建LOB欄位上的IndexIndex
- 遷移表到新的表空間
- 表空間遷移
- 遷移表空間
- 移動 oracle object 到新的表空間(表,索引,分割槽,LOB)OracleObject索引
- 用友CDM系統“貨位間商品移庫單(一步)”表體增加“貨位可用數量”欄位,根據表頭的選擇的貨位自動帶出數值...
- MySQL 更新一個表裡的欄位等於另一個表某欄位的值MySql
- Oracle中檢視所有表和欄位以及表註釋.欄位註釋Oracle