ITPub博客

首页 > Linux操作系统 > Linux操作系统 > 64位环境AUTO_FILTER和INSO_FILTER失效的问题

64位环境AUTO_FILTER和INSO_FILTER失效的问题

原创 Linux操作系统 作者:yangtingkun 时间:2009-06-18 20:47:09 0 删除 编辑

10g开始,Oracle推出了AUTO_FILTER来替代INSO_FILTER,不过根据Oracle的描述,AUTO_FILTER更像是在INSO_FILTER上增加了一些自动的判断而已。因此,可以认为二者是相同的问题。

 

 

EYGLE聊天时他提到,碰到了一个奇怪的现象,11gLinux平台64Oracle环境创建全文索引后,索引为空。同样的问题在32位环境中没有问题。

看一个简单的例子:

SQL> SELECT * FROM V$VERSION;

BANNER
--------------------------------------------------------------------------------
Oracle Database 11g Enterprise Edition Release 11.1.0.6.0 - Production
PL/SQL Release 11.1.0.6.0 - Production
CORE    11.1.0.6.0      Production
TNS for Linux: Version 11.1.0.6.0 - Production
NLSRTL Version 11.1.0.6.0 - Production

SQL> HOST more /home/oracle/a.txt    
You remove the substitute key columns for a table by specifying NULL for the
column_list or column_table parameter in the SET_KEY_COLUMNS procedure in
the DBMS_APPLY_ADM package. If the table has a primary key, then the table's primary
key is used by any apply process for local changes to the database after you remove
the substitue primary key.


SQL> CREATE TABLE T_FILTER (ID NUMBER PRIMARY KEY, DOC VARCHAR2(30));

Table created.

SQL> INSERT INTO T_FILTER VALUES (1, 'a.txt');

1 row created.

SQL> COMMIT;

Commit complete.

SQL> BEGIN
  2  CTX_DDL.CREATE_PREFERENCE('TEST_FILE', 'FILE_DATASTORE');
  3  CTX_DDL.SET_ATTRIBUTE('TEST_FILE', 'PATH', '/home/oracle');
  4  END;
  5  /

PL/SQL procedure successfully completed.

SQL> CREATE INDEX IND_T_FILTER_DOC ON T_FILTER (DOC) INDEXTYPE IS CTXSYS.CONTEXT
  2  PARAMETERS('DATASTORE TEST_FILE FILTER CTXSYS.AUTO_FILTER');

Index created.

SQL> SELECT COUNT(*) FROM DR$IND_T_FILTER_DOC$I;

  COUNT(*)
----------
        24

SQL> SELECT TOKEN_TEXT
  2  FROM DR$IND_T_FILTER_DOC$I;

TOKEN_TEXT
----------------------------------------------------------------
ADM
AFTER
APPLY
CHANGES
COLUMN
COLUMNS
DATABASE
DBMS
KEY
LIST
LOCAL
NULL
PACKAGE
PARAMETER
PRIMARY
PROCEDURE
PROCESS
REMOVE
SET
SPECIFYING
SUBSTITUE
SUBSTITUTE
TABLE
USED

24 rows selected.

可以看到,32Linux上没有问题,而在64Linux上则出现下面的问题:

SQL> SELECT * FROM V$VERSION;

BANNER
--------------------------------------------------------------------------------
Oracle Database 11g Enterprise Edition Release 11.1.0.6.0 - 64bit Production
PL/SQL Release 11.1.0.6.0 - Production
CORE    11.1.0.6.0      Production
TNS for Linux: Version 11.1.0.6.0 - Production
NLSRTL Version 11.1.0.6.0 - Production

SQL> HOST more /opt/oracle/a.txt
You remove the substitute key columns for a table by specifying NULL for the
column_list or column_table parameter in the SET_KEY_COLUMNS procedure in
the DBMS_APPLY_ADM package. If the table has a primary key, then the table's primary
key is used by any apply process for local changes to the database after you remove
the substitute primary key.


SQL> CREATE TABLE T_FILTER (ID NUMBER PRIMARY KEY, DOC VARCHAR2(30));

Table created.

SQL> INSERT INTO T_FILTER VALUES (1, 'a.txt');

1 row created.

SQL> COMMIT;

Commit complete.

SQL> BEGIN
  2  CTX_DDL.CREATE_PREFERENCE('TEST_FILE', 'FILE_DATASTORE');
  3  CTX_DDL.SET_ATTRIBUTE('TEST_FILE', 'PATH', '/opt/oracle');
  4  END;
  5  /

PL/SQL procedure successfully completed.

SQL> CREATE INDEX IND_T_FILTER_DOC ON T_FILTER (DOC) INDEXTYPE IS CTXSYS.CONTEXT
  2  PARAMETERS('DATASTORE TEST_FILE FILTER CTXSYS.AUTO_FILTER');

Index created.

SQL> SELECT COUNT(*) FROM DR$IND_T_FILTER_DOC$I;

  COUNT(*)
----------
         0

查询了一下metalik,感觉和文档Bug No. 7421367描述很接近,对于64位的环境,Oracle安装的时候漏掉了一些用来过滤文档的driver,导致INSO_FILTERAUTO_FILTER无效。

Solaris上的64Oracle11g,则没有发现这个问题。

 

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/4227/viewspace-606828/,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论
暂无介绍

注册时间:2007-12-29

  • 博文量
    1955
  • 访问量
    10423775