oracle全文索引之STORAGE PREFERENCE
Oracle的全文索引會生成一張或多張輔助表,由於這些表是Oracle自動生成的,使用者沒有辦法直接設定這些表和索引的物理引數,因此Oracle提供了STORAGE屬性,專門設定這些輔助表和索引的物理引數。
SQL> SELECT * FROM TAB;
TNAME TABTYPE CLUSTERID
------------------------------ ------- ----------
DR$IND_T_DOCS$I TABLE
DR$IND_T_DOCS$K TABLE
DR$IND_T_DOCS$N TABLE
DR$IND_T_DOCS$P TABLE
DR$IND_T_DOCS$R TABLE
T TABLE
已選擇6行。
上面的五張表都是全文索引生成的。CONTEXT索引生成表的規則是DR$+索引名+$+表用途標識。
DR$IND_T_DOCS$I儲存的是索引資料表(Index data table);
DR$IND_T_DOCS$K儲存的是鍵值對映表(Keymap table);
DR$IND_T_DOCS$R是ROWID表(Rowid table);
DR$IND_T_DOCS$N是負鍵值連結串列(Negative list table);
DR$IND_T_DOCS$P這個表只有在CONTEXT索引中設定BASIC_WORDLIST的SUBSTRING_INDEX屬性後才會生成,用來儲存單詞的部分內容。
DR$IND_T_DOCS$X這個索引是DR$IND_T_DOCS$I表的索引。
SQL> SELECT TABLE_NAME, INDEX_NAME FROM USER_INDEXES WHERE INDEX_NAME LIKE 'DR%';
TABLE_NAME INDEX_NAME
------------------------------ ------------------------------
DR$IND_T_DOCS$I DR$IND_T_DOCS$X
如果不進行設定,那麼Oracle會將這些物件存放到預設表空間中,並根據預設表空間的儲存引數設定這些物件的儲存引數。
SQL> SELECT
2 TABLE_NAME NAME,
3 DECODE
4 (
5 IOT_TYPE,
6 'IOT',
7 (
8 SELECT TABLESPACE_NAME
9 FROM USER_INDEXES
10 WHERE TABLE_NAME = A.TABLE_NAME
11 AND INDEX_TYPE = 'IOT - TOP'
12 ),
13 TABLESPACE_NAME
14 ) TABLESPACE_NAME
15 FROM USER_TABLES A
16 WHERE TABLE_NAME LIKE 'DR%'
17 UNION ALL
18 SELECT INDEX_NAME NAME, TABLESPACE_NAME
19 FROM USER_INDEXES
20 WHERE INDEX_NAME LIKE 'DR%';
NAME TABLESPACE_NAME
------------------------------ ----------------------
DR$IND_T_DOCS$I YANGTK
DR$IND_T_DOCS$K YANGTK
DR$IND_T_DOCS$N YANGTK
DR$IND_T_DOCS$P YANGTK
DR$IND_T_DOCS$R YANGTK
DR$IND_T_DOCS$X YANGTK
已選擇6行。
下面透過設定STORAGE屬性,設定自動生成的表和索引的表空間屬性:
SQL> CREATE TABLE T (ID NUMBER, DOCS VARCHAR2(1000));
表已建立。
SQL> INSERT INTO T VALUES (1, 'A simple example for storage.');
已建立 1 行。
SQL> COMMIT;
提交完成。
SQL> CONN CTXSYS/CTXSYS@YANGTK
已連線。
SQL> BEGIN
2 CTX_DDL.CREATE_PREFERENCE('TEST_WORDLIST_STORAGE', 'BASIC_WORDLIST');
3 CTX_DDL.SET_ATTRIBUTE('TEST_WORDLIST_STORAGE', 'SUBSTRING_INDEX', 'TRUE');
4 CTX_DDL.CREATE_PREFERENCE('TEST_STORAGE', 'BASIC_STORAGE');
5 CTX_DDL.SET_ATTRIBUTE('TEST_STORAGE', 'I_TABLE_CLAUSE', 'TABLESPACE USERS');
6 CTX_DDL.SET_ATTRIBUTE('TEST_STORAGE', 'K_TABLE_CLAUSE', 'TABLESPACE TOOLS');
7 CTX_DDL.SET_ATTRIBUTE('TEST_STORAGE', 'R_TABLE_CLAUSE', 'TABLESPACE EXAMPLE');
8 CTX_DDL.SET_ATTRIBUTE('TEST_STORAGE', 'N_TABLE_CLAUSE', 'TABLESPACE USERS');
9 CTX_DDL.SET_ATTRIBUTE('TEST_STORAGE', 'P_TABLE_CLAUSE', 'TABLESPACE TOOLS');
10 CTX_DDL.SET_ATTRIBUTE('TEST_STORAGE', 'I_INDEX_CLAUSE', 'TABLESPACE INDX');
11 END;
12 /
PL/SQL 過程已成功完成。
SQL> CONN YANGTK/YANGTK@YANGTK
已連線。
SQL> CREATE INDEX IND_T_DOCS ON T(DOCS) INDEXTYPE IS CTXSYS.CONTEXT
2 PARAMETERS ('WORDLIST CTXSYS.TEST_WORDLIST_STORAGE STORAGE CTXSYS.TEST_STORAGE');
索引已建立。
SQL> SELECT
2 TABLE_NAME NAME,
3 DECODE
4 (
5 IOT_TYPE,
6 'IOT',
7 (
8 SELECT TABLESPACE_NAME
9 FROM USER_INDEXES
10 WHERE TABLE_NAME = A.TABLE_NAME
11 AND INDEX_TYPE = 'IOT - TOP'
12 ),
13 TABLESPACE_NAME
14 ) TABLESPACE_NAME
15 FROM USER_TABLES A
16 WHERE TABLE_NAME LIKE 'DR%'
17 UNION ALL
18 SELECT INDEX_NAME NAME, TABLESPACE_NAME
19 FROM USER_INDEXES
20 WHERE INDEX_NAME LIKE 'DR%';
NAME TABLESPACE_NAME
------------------------------ ------------------------------
DR$IND_T_DOCS$I USERS
DR$IND_T_DOCS$K TOOLS
DR$IND_T_DOCS$N USERS
DR$IND_T_DOCS$P TOOLS
DR$IND_T_DOCS$R EXAMPLE
DR$IND_T_DOCS$X INDX
已選擇6行。
透過查詢看到,STORAGE屬性的設定已經生效了。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/271283/viewspace-1022361/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- oracle全文索引之WORDLIST PREFERENCEOracle索引
- ORACLE TEXT DATASTORE PREFERENCE(一) 【ORACLE 全文索引】OracleAST索引
- Preference元件探究之自定義Preference元件
- oracle全文索引之幾個關鍵表Oracle索引
- oracle全文索引之commit與DML操作Oracle索引MIT
- oracle全文索引之如何實現查詢Oracle索引
- oracle全文索引之STOPLIST_4_MULTI_STOPLISTOracle索引
- oracle全文索引之STOPLIST_3_DEFAULT_STOPLISTOracle索引
- oracle全文索引之STOPLIST_2_EMPTY_STOPLISTOracle索引
- oracle全文索引之STOPLIST_1_BASIC_STOPLISTOracle索引
- oracle全文索引之LEXER_4_MULTI_LEXEROracle索引
- oracle全文索引之LEXER_3_DEFAULT_LEXEROracle索引
- oracle全文索引之LEXER_2_CHINESE_LEXEROracle索引
- oracle全文索引之LEXER_1_BASIC_LEXEROracle索引
- oracle全文索引之FILTER_4_PROCEDURE_FILTEROracle索引Filter
- oracle全文索引之FILTER_3_FORMAT_COLUMNOracle索引FilterORM
- oracle全文索引之FILTER_1_NULL_FILTEROracle索引FilterNull
- oracle全文索引之datastore_6_NESTED_DATASTOREOracle索引AST
- oracle全文索引之datastore_5_detail_datastoreOracle索引ASTAI
- oracle全文索引之datastore_4_URL_DATASTOREOracle索引AST
- oracle全文索引之datastore_3_FILE_DATASTOREOracle索引AST
- oracle全文索引之datastore_1_DIRECT_DATASTOREOracle索引AST
- Oracle:全文索引Oracle索引
- oracle全文索引之配置全文檢索環境Oracle索引
- oracle 之全文索引表的分割槽交換案例Oracle索引
- oracle全文索引之About_INDEX_THEMES操作Oracle索引Index
- oracle全文索引之STOPLIST_ CTXCAT 索引_INDEX SETOracle索引Index
- oracle全文索引之datastore_2_MULTI_COLUMN_DATASTOREOracle索引AST
- Oracle的全文索引Oracle索引
- ZT oracle全文索引Oracle索引
- oracle全文索引之SECTION GROUP_6_PATH_SECTION_GROUPOracle索引
- oracle全文索引之SECTION GROUP_5_AUTO_SECTION_GROUPOracle索引
- oracle全文索引之SECTION GROUP_4_XML_SECTION_GROUPOracle索引XML
- oracle全文索引之SECTION GROUP_3_HTML_SECTION_GROUPOracle索引HTML
- oracle全文索引之SECTION GROUP_2_BASIC_SECTION_GROUPOracle索引
- oracle全文索引之SECTION GROUP_1_NULL_SECTION_GROUPOracle索引Null
- oracle全文索引之FILTER_2_INSO_FILTEROracle索引Filter
- oracle 全文索引的配置Oracle索引