Oracle移除表空间的数据文件 ora-00604 ora-01426
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了Oracle移除表空间的数据文件 ora-00604 ora-01426,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含3115字,纯文字阅读大概需要5分钟。
内容图文
确认oracle版本(我是以本机(windows)查看数据库版本,测试环境为AIX操作系统,但数据库版本一致),版本满足可以直接删除数据文件select * from v$version;
B.确认移除的数据文件
a.确定需要移去的数据文件,可以用数据文件最大扩展的大小和对象多少综合评估一下,是否将这个文件进行移除
扩展大小:
select file_id,tablespace_name,max(t.block_id)*8192/1024/1024 from dba_extents t
where tablespace_name = ‘FERMATDATA‘
group by file_id,tablespace_name
对象多少:
select * from dba_extents t
where t.file_id =10
C.将数据文件中己有的对象move到其他表空间
a.对于segment_type为TABLE的非分区表采用以下语句
alter table bob_rwa3.db move tablespace ETLDATA;
批量语句:
select ‘alter table ‘||t.owner||‘.‘||t.segment_name||‘ move tablespace ETLDATA ;‘ from dba_extents t
where t.file_id =10
and t.partition_name is null
b.对于segment_type为TABLE的分区表采用以下语句(非复合分区)
alter table BOB_RAY.T_TRANSITION_MATRIX move partition P199001010001 tablespace ETLDATA update global indexes ;
批量脚本:
select ‘alter table ‘||t.owner||‘.‘||t.segment_name||‘ move partition ‘||t.partition_name||‘ tablespace ETLDATA update global indexes ;‘
from dba_extents t
where t.file_id =10
and t.partition_name is not null ;
c.对于segment_type 为TABLE复合分区采用以下语句
alter table BOB_RAY.LOG_TABLE move subpartition P199001010001_NULL tablespace IRM_DATA;
批量脚本可以自己关联dba_tab_subpartitions表写出.
d.对于segment_type为LOBSEGMENT或LOBINDEX可以采用以下语句,因为LOB类型的字段会自动生成存储数据和索引两部份(lobsegment,lobindex)
1.查看找segment_type为lob的segment_name:
select * from dba_extents t
where t.file_id =10
and t.segment_type like ‘%LOB%‘;
2.查看segment_type为LOB对应的column
select * from dba_lobs t
where t.segment_name like ‘%SYS_LOB0000145648C00003%‘
;
3.将segment_type为LOB类型转移到其他表空间,因为move table只转移动非lob字段,所以需要执行以下语句
alter table BOB_RAY.BIRT_RESOURCE move tablespace ETLDADA lob(CONTENT) store as (tablespace ETLDATA);
批量脚本关联即可写出
因为本项目中数据表空间和索引表空间是分开的,所以这里不涉及索引的相关操作,如果有索引的情况估计与表的情况相似.
D.确认数据文件是否为空
a.查看dba_extents 是否有记录(需要没有记录)
select * from dba_extents t
where t.file_id =10;
b.查看dba_segments是否有记录(需要没有记录)
select * from dba_segments t
where t.header_file = 10
注意:如果dba_segments有回收站的数据,那么在删除表空间数据文件时会报错 ora-00604 ora-01426
c.删除回收站数据
purge recyclebin;
E.删除表空间对应的数据文件
1.查看数据文件名称
select * from dba_data_files t
where t.file_id = 10
;
2.删除表空间数据文件
alter tablespace FERMATDATA drop datafile ‘D:\APP\ORADATA\RWADB\FERMATDATA02.DBF‘;
注意:当执行完语句时数据库服务器用df -g查看空间时没有变化,重启数据库后才能看到空间明显回收了
F.指定表存储在固定的数据文件方法以(扩展)
alter table bob_ray.bis_risk_bucket allocate extent( datafie ‘/oracle/oradata/orcl/appdata.dbf‘ );
此语句不会改变表中现有数据的存储,当新insert数据时才生效,
版权声明:本文为博主原创文章,未经博主允许不得转载。
Oracle移除表空间的数据文件 ora-00604 ora-01426
标签:
本文系统来源:http://blog.csdn.net/warden2010/article/details/46711345
内容总结
以上是互联网集市为您收集整理的Oracle移除表空间的数据文件 ora-00604 ora-01426全部内容,希望文章能够帮你解决Oracle移除表空间的数据文件 ora-00604 ora-01426所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。