项目背景:在之前开发环境数据库管理比較乱,在表空间不足时仅仅是加入数据文件,測试完后数据己删除,但数据库表空间所占的空间不能回收,导致数据库的存储文件夹使用率达到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的更多相关文章

  1. 十四、oracle 数据库管理--管理表空间和数据文件

    一.概念表空间是数据库的逻辑组成部分.从物理上讲,数据库数据存放在数据文件中:从逻辑上讲,数据库数据则是存放在表空间中,表空间由一个或多个数据文件组成. 二.数据库的逻辑结构oracle中逻辑结构包括 ...

  2. oracle 数据库管理--管理表空间和数据文件

    一.概念表空间是数据库的逻辑组成部分.从物理上讲,数据库数据存放在数据文件中:从逻辑上讲,数据库数据则是存放在表空间中,表空间由一个或多个数据文件组成. 二.数据库的逻辑结构oracle中逻辑结构包括 ...

  3. 【基础】Oracle 表空间和数据文件

    多个表空间的优势:1.能够将数据字典与用户数据分离出来,避免由于字典对象和用户对象保存在同一个数据文件中而产生的I/O冲突2.能够将回退数据与用户数据分离出来,避免由于硬盘损坏而导致永久性的数据丢失3 ...

  4. 【转】Oracle 表空间与数据文件

    --============================== --Oracle 表空间与数据文件 --============================== /* 一.概念 表空间:是一个或 ...

  5. Oracle 表空间与数据文件

    -============================== --Oracle 表空间与数据文件 --============================== /* 一.概念 表空间:是一个或多 ...

  6. Oracle的表空间和数据文件

    一. 概念 表空间:是一个或多个数据文件的逻辑集合 表空间逻辑存储对象: 永久段-->如表与索引 临时段-->如临时表数据与排序段 回滚段-->用于事物回滚或闪回内存的撤销数据 表空 ...

  7. oracle维护表空间和数据文件

    1:重要参考 wiki 2: oracle doc 表空间参考 3:来自dba-oracle的参考 26,27,28,29 一:oracle 表空间概念 表空间是联系数据库的物理磁盘(数据文件)和逻辑 ...

  8. ORACLE - 管理表空间和数据文件

    ORACLE表空间是一个逻辑分区,一个数据文件只能属于一个表空间,一个表空间可以拥有多个数据文件. 一般情况下,如果一个实例分配给多个应用使用,需要创建不同的表空间,每个用户使用自己的表空间. 一.表 ...

  9. Oracle管理表空间和数据文件详解

    介绍 表空间是数据库的逻辑组成部分 从物理上将:数据库数据存放在数据文件中 从逻辑上将:数据库则是存放在表空间中 表空间由一个或是多个数据文件组成 数据库的逻辑结构 介绍: Oracle中逻辑结构包括 ...

随机推荐

  1. CSS 潜藏着的BFC

    在写样式时,往往是添加了一个样式,又或者是修改了某个属性,就达到了我们的预期. 而BFC就潜藏在其中,当你修改样式时,一不小心就能触发它而毫无察觉,因此没有意识到BFC的神奇之处. 什么是BFC(Bl ...

  2. SQL Server的安装笔记

    SQL安装笔记 安装SQL Server 2008 打开SQL Server 2008中的setup.exe,显示SQL安装程序的对话框. 提示必须安装相关组件Microsoft.NET Framew ...

  3. Linux服务器文件权限被改

    阿里云买的ubuntu服务器遭受了不明攻击,导致站点访问不了,折腾了很久,才发现是文件的权限被修改了.然后就是一点点的修改,很是麻烦.服务器的安全要重视呢! 1.修改权限 chmod 755 * -R ...

  4. VMware 12虚拟机下Ubuntu 16连不上网解决方法

    打开自带Firefox浏览器,显示连接不上网,终端下 ping 也显示 unkown   解决方法: 1.打开虚拟机的“编辑”选项,选择“虚拟网络编辑器” 2.选择VMnet8(我不知道为啥VMnet ...

  5. Java必知必会的20种常用类库和API

    转载:https://blog.csdn.net/u011001084/article/details/79216958 个人感觉工具类对日常开发是很重要的,所以推荐一下这篇文章,虽然有的类库过时了 ...

  6. 【转载】文件上传命令rz和下载命令sz的安装

    一.xshell工具简介 Xshell 是一个强大的安全终端模拟软件,它支持SSH1, SSH2, 以及Microsoft Windows 平台的TELNET 协议.其可以在Windows界面下用来访 ...

  7. js中=,==,===的区别

    =      赋值 ==    先判断类型,在判断值,可以做类型转换 ===  恒等判断

  8. Python基础之字符的编码

    参考原文 Python廖雪峰 为什么要进行编码? 计算机只能处理二进制数字(0100111),要处理文本,就必须先把文本转为数字才能处理,这个过程就叫编码. 字符的编码 ASCII编码 由于计算机是美 ...

  9. 2018NOIP普及T4---对称二叉树

    题目 对称二叉树   题目描述 思路 检查是否符合对称条件 条件很简单——结构对称&&点权对称 要做到点权对称其实也就顺便结构对称了 于是条件可以简化为点权对称 可以考虑并行搜索 bo ...

  10. Number String(HDU 4055,动态规划递推,前缀和优化)

    点击加号查看代码 #include<bits/stdc++.h>//前缀和优化版本,不易理解 using namespace std; #define ll long long ; ; l ...