oracle index中的TABLESPACE名字怎么批量更新

redpichao 2009-06-30 10:26:03
CREATE UNIQUE INDEX DSZFOA.BASICDATA_ID_KEY ON DSZFOA.TBL_COMN_BASICDATA
(BDATA_ID)
LOGGING
TABLESPACE DSOA
PCTFREE 10
INITRANS 2
MAXTRANS 255
STORAGE (
INITIAL 192K
MINEXTENTS 1
MAXEXTENTS 2147483645
PCTINCREASE 0
FREELISTS 1
FREELIST GROUPS 1
BUFFER_POOL DEFAULT
)
NOPARALLEL;

大家看,我的表名是DSZFOA,但是TABLESPACE DSOA,所有的索引都是这样,我想批量修改,修改后需要rebulid吗?
...全文
325 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
xinpingf 2009-06-30
  • 打赏
  • 举报
回复
9楼的办法没问题,user_indexes是可以使用的,如果你无法使用,请检查你的权限。
redpichao 2009-06-30
  • 打赏
  • 举报
回复
解决了,select 'alter index '|| index_name ||' rebuild tablespace tablespacename;' from user_indexes;
还是感谢你们。
redpichao 2009-06-30
  • 打赏
  • 举报
回复
我懂了,你的语句是可以,但是只能改变一个索引,BASICDATA_ID_KEY 这个只是一个索引而已,有批量的吗?
其实我就是不知道索引的集合名字。我猜了下试后发现user_indexes,indexes,index都不行。
inthirties 2009-06-30
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 redpichao 的回复:]
人呢?人呢?还没解决啊。who can help me?
我不drop的。我个人认为哈,不需要drop就能改变 tablespace 的名字。我会一个一个修改,但是很多啊,我想批量。不会,求教?
[/Quote]

如果是所有的index的话

可以通过对user_indexes表的查询,把所有的indexes查出来,然后拼出上面的一批语句就可以了。


SQL>select 'alter index '||index_name||' rebuild online nologging tablespace index想移动到的表空间的名字;' sql from user_indexes;
inthirties 2009-06-30
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 redpichao 的回复:]
引用 4 楼 inthirties 的回复:

引用 1 楼 inthirties 的回复:
drop以后,重建,这样好一些。


如果不想drop重建的话,可以
SQL>alter index yourIndex_name rebuild online nologging tablespace yourtablespace;


用了,说ORA-01418: specified index does not exist。
我这这样写的:alter index dsoa rebuild online nologging tablespace dszfoa;
[/Quote]
这个错误是提示index不存在
SQL>alter index 你的index的名字 rebuild online nologging tablespace index想移动到的表空间的名字;

dsoa不是index,所以报错。看你上面的create的句子,index的名字是BASICDATA_ID_KEY







redpichao 2009-06-30
  • 打赏
  • 举报
回复
人呢?人呢?还没解决啊。who can help me?
我不drop的。我个人认为哈,不需要drop就能改变 tablespace 的名字。我会一个一个修改,但是很多啊,我想批量。不会,求教?
redpichao 2009-06-30
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 inthirties 的回复:]
引用 1 楼 inthirties 的回复:
drop以后,重建,这样好一些。




如果不想drop重建的话,可以
SQL>alter index yourIndex_name rebuild online nologging tablespace yourtablespace;
[/Quote]

用了,说ORA-01418: specified index does not exist。
我这这样写的:alter index dsoa rebuild online nologging tablespace dszfoa;
inthirties 2009-06-30
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 inthirties 的回复:]
引用 1 楼 inthirties 的回复:

drop以后,重建,这样好一些。



如果不想drop重建的话,可以
SQL>alter index yourIndex_name rebuild online nologging tablespace yourtablespace;
[/Quote]


SQL>alter index DSZFOA.BASICDATA_ID_KEY rebuild online nologging tablespace DSZFOA.你想要的index的表空间;
inthirties 2009-06-30
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 inthirties 的回复:]
drop以后,重建,这样好一些。
[/Quote]


如果不想drop重建的话,可以
SQL>alter index yourIndex_name rebuild online nologging tablespace yourtablespace;
HEROWD 2009-06-30
  • 打赏
  • 举报
回复
是“什么”不是“设么”
HEROWD 2009-06-30
  • 打赏
  • 举报
回复
drop 后重建和rebuild 有设么区别啊?
inthirties 2009-06-30
  • 打赏
  • 举报
回复
drop以后,重建,这样好一些。

17,377

社区成员

发帖
与我相关
我的任务
社区描述
Oracle 基础和管理
社区管理员
  • 基础和管理社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧