Oracle移除表空间的数据文件 ora-00604 ora-01426
项目背景:在之前开发环境数据库管理比較乱,在表空间不足时仅仅是加入数据文件,測试完后数据己删除,但数据库表空间所占的空间不能回收,导致数据库的存储文件夹使用率达到97%以上实际使用仅仅有10%,迫切须要将不用空间进行回收.
技术背景:Oracle不提供如删除表、视图一样删除数据文件的方法。数据文件是表空间的一部分,所以不能“移走”表空间。Oracle 10G R2開始,能够採用:Alter tablespace tablespace_name drop datafile file_name;来删除一个空数据文件,而且对应的数据字典信息也会清除:
A.确认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';
注意:当运行完语句时数据库server用df -g查看空间时没有变化,重新启动数据库后才干看到空间明显回收了
F.指定表存储在固定的数据文件方法以(扩展)
alter table bob_ray.bis_risk_bucket allocate extent( datafie '/oracle/oradata/orcl/appdata.dbf' );
此语句不会改变表中现有数据的存储,当新insert数据时才生效,
Oracle移除表空间的数据文件 ora-00604 ora-01426的更多相关文章
- 十四、oracle 数据库管理--管理表空间和数据文件
一.概念表空间是数据库的逻辑组成部分.从物理上讲,数据库数据存放在数据文件中:从逻辑上讲,数据库数据则是存放在表空间中,表空间由一个或多个数据文件组成. 二.数据库的逻辑结构oracle中逻辑结构包括 ...
- oracle 数据库管理--管理表空间和数据文件
一.概念表空间是数据库的逻辑组成部分.从物理上讲,数据库数据存放在数据文件中:从逻辑上讲,数据库数据则是存放在表空间中,表空间由一个或多个数据文件组成. 二.数据库的逻辑结构oracle中逻辑结构包括 ...
- 【基础】Oracle 表空间和数据文件
多个表空间的优势:1.能够将数据字典与用户数据分离出来,避免由于字典对象和用户对象保存在同一个数据文件中而产生的I/O冲突2.能够将回退数据与用户数据分离出来,避免由于硬盘损坏而导致永久性的数据丢失3 ...
- 【转】Oracle 表空间与数据文件
--============================== --Oracle 表空间与数据文件 --============================== /* 一.概念 表空间:是一个或 ...
- Oracle 表空间与数据文件
-============================== --Oracle 表空间与数据文件 --============================== /* 一.概念 表空间:是一个或多 ...
- Oracle的表空间和数据文件
一. 概念 表空间:是一个或多个数据文件的逻辑集合 表空间逻辑存储对象: 永久段-->如表与索引 临时段-->如临时表数据与排序段 回滚段-->用于事物回滚或闪回内存的撤销数据 表空 ...
- oracle维护表空间和数据文件
1:重要参考 wiki 2: oracle doc 表空间参考 3:来自dba-oracle的参考 26,27,28,29 一:oracle 表空间概念 表空间是联系数据库的物理磁盘(数据文件)和逻辑 ...
- ORACLE - 管理表空间和数据文件
ORACLE表空间是一个逻辑分区,一个数据文件只能属于一个表空间,一个表空间可以拥有多个数据文件. 一般情况下,如果一个实例分配给多个应用使用,需要创建不同的表空间,每个用户使用自己的表空间. 一.表 ...
- Oracle管理表空间和数据文件详解
介绍 表空间是数据库的逻辑组成部分 从物理上将:数据库数据存放在数据文件中 从逻辑上将:数据库则是存放在表空间中 表空间由一个或是多个数据文件组成 数据库的逻辑结构 介绍: Oracle中逻辑结构包括 ...
随机推荐
- opencv识别验证码的教程和资料
简书教程:https://www.jianshu.com/p/41127bf90ca9 博客园教程(较详细):https://www.cnblogs.com/qqandfqr/p/7866650.ht ...
- PHP常见问题总结
1.为什么会出现这种情况?端口什么的都设置正确了. 解决方法: 请将本机的IIS服务关闭,开启Apache服务.IIS服务的关闭方法可参见 https://jingyan.baidu.com/arti ...
- UVM基础之---Command-line Processor
提供一个厂商独立的通用接口命令行参数,支持分类: 1. 基本参数和值:get_args,get_args_matches 2. 工具信息:get_tool_name(),get_tool_ve ...
- ElasticSearch 安装使用
安装: 1.下载ElasticSearch.解压到相关文件夹 2.运行elasticsearch.bat,启动程序 3.在浏览器输入:http://localhost:9200/,显示相关Es内容即安 ...
- PHP7中session_start 使用注意事项,会导致浏览器刷时页面数据不更新
//PHP7中session_start 使用注意事项, session_start([ 'cache_limiter' => 'private', //在读取完毕会话数据之后马上关闭会话存储文 ...
- Xcode 6 Beta 高速官方下载地址
推荐迅雷下载: http://adcdownload.apple.com//wwdc_2014/xcode_6_beta_ie8g3n/xcode_6_beta.dmg
- RocketMQ学习笔记(16)----RocketMQ搭建双主双从(异步复制)集群
1. 修改RocketMQ默认启动端口 由于只有两台机器,部署双主双从需要四个节点,所以只能修改rocketmq的默认启动端口,从官网下载rocketmq的source文件,解压后使用idea打开,全 ...
- vue基础---模板语法
Vue.js 使用了基于 HTML 的模板语法,允许开发者声明式地将 DOM 绑定至底层 Vue 实例的数据.所有 Vue.js 的模板都是合法的 HTML ,所以能被遵循规范的浏览器和 HTML 解 ...
- 调用微信扫一扫功能,踩坑'invalid signature'
在vue项目中,调用微信扫一扫功能,在安卓系统下完全正常,ios系统下却报错'invalid signature'的错误,这可能令许多小伙伴困惑,经过查询大量博客相关资料,才找到了解决的方法. 原因: ...
- HTML5大数据可视化效果(一)彩虹爆炸图
前言 25年过去了,Brooks博士著名的“没有银弹”的论断依旧没有被打破.HTML5也是一样.但这并不妨碍HTML5是一个越来越有威力的“炸蛋”:发展迅速.势不可挡.随着HTML5技术的普及,用HT ...