我在oracle10i中为表建立了索引。但是当时并没为其指定表空间,现在我用下列语句查找他们,找不到
select tablespace_name FROM user_segments where segment_name='索引名';
这些索引去哪了。还有一个问题,有张表事先在SYSTEM表空间下存在索引,索引是2字段的复合索引,现在我将这张表移动到indexdatatbs表空间中,然后删除了这张表的索引,然后又给这张表建立新的索引,但是系统提示总是存在这2个字段的索引,我只给这张表的一个字段重新建立索引是成功的,2个字段的复合索引总是不成功,请问这是因为表空间的原因导致的吗?该怎样解决呢?新手上路,还望指教

解决方案 »

  1.   

    1、原因一:字典表的‘索引名’要大写,可能是你给出的索引名是小写,所以查不到);原因二:你使用的是什么用户建立索引的,如果建立在其它用户下,然后用当前用户,USER_SEGMENTS是查不到的,你可以查ALL_SEGMENTS试试,如果用DBA权限可以查查DBA_SEGMENTS。
    2、删除索引后,再在另一表空间建立索引是没有问题的。
      

  2.   

    还请教您一个问题:
    我在建一个新表的时候,设置了主键后,会在索引中自动创建一个如PK_TABLENAME之类的索引,我又要对该表新建一个索引IND_TABLENAME,那这张表不是有两个索引了?还有我想把索引放在单独的表空间,那么这个PK_TABLENAME索引要移动吗?
      

  3.   

    1、首先不能在同一个字段上,建立两个一样的索引。
    2、如果要移动索引到另一个表空间,可以使用
    alter index <索引名> rebuild tablespace <表空间名>;
      

  4.   

    1.
    select tablespace_name FROM user_segments where segment_name='索引名';
    or 
    select index_name,table_name,tablespace_name from user_indexes where index_name='索引名'  ---索引名要大写没有指定表空间 那就在里默认用户的表空间下2
    报什么错 存在这2个字段的索引  估计没删成功
      

  5.   

    我是想问,那个PK_TABLENAME这个索引是怎么回事,我并没有建。
      

  6.   

    那我想将索引和表分别设置表空间,那这个系统建立的索引我要额外管理吗?
    比如我想将IND_TABLENAME放在indexdatatbs表空间中,将TABLE放在datatbs表空间中,那我要将PK_TABLENAME索引移动到indexdatatbs中么?
      

  7.   


    --可以手动移动
    alter index IND_TABLENAME rebuild tablespace indexdatatbs
    --也可以这样,建主键的时候指定
    SQL> ed
    已写入 file afiedt.buf  1  create table tt_01(id number,name varchar2(10),
      2* constraint pk_tt_01id primary key(id) using index tablespace mytb)
    SQL> /表已创建。
    SQL> select index_name,table_name,tablespace_name from user_indexes
      2  where index_name=upper('pk_tt_01id')
      3  /
     
    INDEX_NAME                     TABLE_NAME                     TABLESPACE_NAME
    ------------------------------ ------------------------------ ------------------------------
    PK_TT_01ID                     TT_01                          MYTB
     SQL> select table_name,tablespace_name from user_tables where table_name='TT_01'
      2  /TABLE_NAME                     TABLESPACE_NAME
    ------------------------------ ------------------------------
    TT_01                          USERS