我在oracle10i中为表建立了索引。但是当时并没为其指定表空间,现在我用下列语句查找他们,找不到
select tablespace_name FROM user_segments where segment_name='索引名';
这些索引去哪了。还有一个问题,有张表事先在SYSTEM表空间下存在索引,索引是2字段的复合索引,现在我将这张表移动到indexdatatbs表空间中,然后删除了这张表的索引,然后又给这张表建立新的索引,但是系统提示总是存在这2个字段的索引,我只给这张表的一个字段重新建立索引是成功的,2个字段的复合索引总是不成功,请问这是因为表空间的原因导致的吗?该怎样解决呢?新手上路,还望指教
select tablespace_name FROM user_segments where segment_name='索引名';
这些索引去哪了。还有一个问题,有张表事先在SYSTEM表空间下存在索引,索引是2字段的复合索引,现在我将这张表移动到indexdatatbs表空间中,然后删除了这张表的索引,然后又给这张表建立新的索引,但是系统提示总是存在这2个字段的索引,我只给这张表的一个字段重新建立索引是成功的,2个字段的复合索引总是不成功,请问这是因为表空间的原因导致的吗?该怎样解决呢?新手上路,还望指教
2、删除索引后,再在另一表空间建立索引是没有问题的。
我在建一个新表的时候,设置了主键后,会在索引中自动创建一个如PK_TABLENAME之类的索引,我又要对该表新建一个索引IND_TABLENAME,那这张表不是有两个索引了?还有我想把索引放在单独的表空间,那么这个PK_TABLENAME索引要移动吗?
2、如果要移动索引到另一个表空间,可以使用
alter index <索引名> rebuild tablespace <表空间名>;
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个字段的索引 估计没删成功
比如我想将IND_TABLENAME放在indexdatatbs表空间中,将TABLE放在datatbs表空间中,那我要将PK_TABLENAME索引移动到indexdatatbs中么?
--可以手动移动
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