如何自动创建LOB索引段和重建索引

76次阅读
没有评论

共计 2187 个字符,预计需要花费 6 分钟才能阅读完成。

这篇文章主要为大家展示了“如何自动创建 LOB 索引段和重建索引”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让丸趣 TV 小编带领大家一起研究并学习一下“如何自动创建 LOB 索引段和重建索引”这篇文章吧。

LOBs,或 Large Objects 字段,是 Oracle 中用于处理存储非字符数据推荐的一种字段类型,例如 mp3,video,图片,和 long 字符串数据。二进制大对象,或 BLOBs,字符大对象,或 CLOBs,能够存储 TB 的数据。

LOB 列有许多相关的属性,每个 LOB 列属性可以使用“LOB (lobcolname) STORE AS …”这种语法来描述。

一个包含 LOBs 字段类型的表 (CLOB,NCLOB 和 BLOB) 会为每个 LOB 列创建两个额外的磁盘段 segment,LOBINDEX 和 LOBSEGMENT。可以通过 DBA_LOBS,ALL_LOBS 或 USER_LOBS 数据字典视图表来查看他们以及 LOB 属性。

按照 MOS(1490228.1)的示例,可以指定 LOBINDEX 和 LOBSEGMENT 的表空间(8i 以前的版本允许 LOBINDEX 和 LOBSEGMENT 使用的表空间不同):

Create table DemoLob ( A number, B clob )
 LOB(b) 
 STORE AS lobsegname ( 
 TABLESPACE lobsegts 
 STORAGE (lobsegment storage clause) 
 INDEX lobindexname (
 TABLESPACE lobidxts
 STORAGE ( lobindex storage clause ) 
 ) 
 )
 TABLESPACE tables_ts
 STORAGE( tables storage clause )
 ;

下面再做个简单的实验,证明 LOB 列的表会自动创建 LOB 索引:

SQL create table ml_test1(a clob);
Table created

SQL   create index idx_ml_test1 on ml_test1 (a);
create index idx_ml_test1 on ml_test1 (a)
  *
ERROR at line 1:
ORA-02327: cannot create index on expression with datatype LOB
ORA-02327: 无法以数据类型 LOB 的表达式创建索引

表明不能用 CREATE INDEX 为 LOB 列创建索引。

SQL col table_name for a10 
SQL select index_name,status,index_type,table_name from user_indexes where table_name= ML_TEST1
INDEX_NAME    STATUS  INDEX_TYPE    TABLE_NAME
—————————— ——– ————————— ———-
SYS_IL0000013716C00001$$  VALID  LOB    ML_TEST1

查看已经为 LOB 列自动创建了一个索引。

col segment_name for a25

SQL select segment_name, segment_type, bytes from user_segments where segment_type like %LOB%  or segment_name like %ML%

SEGMENT_NAME                      SEGMENT_TY     BYTES
————————-                ———-            ———-
SYS_IL0000013716C00001$$    LOBINDEX      65536
SYS_LOB0000013716C00001$$ LOBSEGMENT     65536
ML_TEST1                                TABLE              65536

查看该表包含了三个 segment,分别是 TABLE、LOBINDEX 和 LOBSEGMENT 类型。

堆表 MOVE 时,LOB 类型字段和该索引不会跟着 MOVE,必须手工操作 MOVE:

(MOS)ALTER TABLEtest MOVE TABLESPACE tbs1 LOB (lob1, lob2) STORE AS (TABLESPACE tbs2 DISABLE STORAGE IN ROW);

alter tableml_test1 move tablespace users;
alter tableml_test1 move lob(a) store as (tablespace users);

alter table ml_test1 move tablespace users LOB (a) STORE AS lobsegment (TABLESPACE users);

alter table 除了用于移动 LOB,也可以是重建 LOB 字段索引的方法,无法单独重建 LOBINDEX 或 LOBSEGMENT。

以上是“如何自动创建 LOB 索引段和重建索引”这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注丸趣 TV 行业资讯频道!

正文完
 
丸趣
版权声明:本站原创文章,由 丸趣 2023-07-24发表,共计2187字。
转载说明:除特殊说明外本站除技术相关以外文章皆由网络搜集发布,转载请注明出处。
评论(没有评论)