【Oracle】删除(释放)数据文件/表空间流程
oracle删除(释放)数据文件/表空间流程
生产环境:数据库里空间不足,niptest 表空间251G,只使用了17G
再alter database datafile '...../niptest1' resize 10G; 的时候说超出了范围要求
由于表变动比较频繁,高水位值比较大
(高水位 HWM “High Water Mark “:oracle中block有没有使用的分界线,它会随着数据的insert而上升,但它并不会随数据的delete而下降,因此全表扫描的时间并不因数据的delete而减少,相反可能由于块清除反而全表扫描时间增加)
删除表空间步骤:
1) 批量将niptest表空间中的表move 到USERS表空间,再删除表空间niptest
首先看下此表空间内的表 move到其他表空间 防止数据丢失
select * from dba_tables where tablespace_name='NIPTEST';
select * from dba_extents where tablespace_name='NIPTEST';
select * from dba_segments where tablespace_name='NIPTEST';
SELECT 'alter table '||owner||'.'||table_name||' move tablespace USERS;' FROM DBA_tables WHERE TABLESPACE_NAME='NIPTEST'; 批量把表移动到其他表空间
****** move (降低高水位)
优点:可以移动表到其他表空间,在执行命令时不需要执行alter table table_name enable row movement
缺点:表move 会导致表中的索引失效,要rebuild;同时表会产生行级锁......;在此如果表中有LOB字段 时要用一下命令来实现表空间移动:alter table owner.table_name move tablespace tablespace_name lob (lob_column) store as lob segment tablespace tablespace_name;也可以单独move lob,index要rebuild
****** shrink space
优点:降低高水位时索引不会失效
缺点:不能将表移动到其他表空间;高水位降低效果没有move明显;同时在执行命令前要先执行(alter table table_name enable row movement允许行移动)也会表会产生行级锁.......,shrink比move更耗费cpu,产生很多current block这样生成巨大的redo与undo 如果表中索引很少可以建议使用move降低高水位
2) 移动完表发现 主键和索引还是在源表空间
SELECT * FROM DBA_extents WHERE TABLESPACE_NAME='USERS'; -->查看原表空间的主键和索引
alter index XX rebuild tablespace ;
---> 批量执行索引重建
SELECT 'alter index '||owner||'.'||segment_name||' rebuild tablespace USERS;' FROM DBA_extents WHERE TABLESPACE_NAME='NIPTEST'; 批量将主键索引重建到其他表空间
select * from dba_segments where tablespace_name='NIPTEST';弄完上面的操作,这里还有数据,不要在意,那是回收站的,无需修改直接删表空间即清空
(3) 表都移动完了 之后 先把数据文件offline drop再删除数据文件
alter database datafile '/home/oracle/app/oracle/oradata/kfdb/niptest1' offline drop;
---> 查看下数据文件状态
select status from dba_tablespaces v$datafile where tablespace_name='NIPTEST'; -----offline
--> 再删除表空间
drop tablespace niptest; --> 删除表空间,但不删除其文件
drop tablespace niptest including contents; -->删除表空间同时删除表空间的数据对象
drop tablespace niptest including contents and datafiles;
--> 删除表空间时删除数据对象及其OS系统文件一起删除,,以便释放空间,前提表空间不能是数据库默认表空间
否则会 报错:ORA-12919: Can not drop the default permanent tablespace
(4) 怎么查看下数据库的默认表空间是什么:
select * from database_properties where property_name = 'DEFAULT_PERMANENT_TABLESPACE';
如果您删除的表空间是数据库默认表空间要用一下命令来
更换数据库默认表空间:alter database default tablespace users;
再执行: drop tablespace niptest including contents and datafiles;
[root@kfdb49 kfdb]# df -hl --> 看下OS系统空间情况 --- 表空间释放
------创建表空间的语句:
create tablespace niptest datafile '/home/oracle/app/oracle/oradata/kfdb/niptest1' size 10G autoextend on next XXM maxsize XXm extent management local;
有的人会想着再创建一个niptest 为10G的表空间,避免后期imp时源表的表空间是niptest
: 其实不需要,如果库中没有niptest表空间,就算imp源表的表空间是niptest,也会导入到用户的默认表空间,有niptest表空间的话则会导入到niptest表空间(如果后续不想拥有niptest表空间 就要斩草除根的将niptest删除之后不要创建)
回收unlimited tablespace 给予额外权限niptest表空间权限会正常导入,否则报错
额外权限和用户默认表空间是一个的话可以正常导入,否则知道表结构到用户默认表空间
具体实验参考: http://space.itpub.net/28602568/viewspace-760169#xspace-tracks
转自:http://blog.itpub.net/28602568/viewspace-759786/
【Oracle】删除(释放)数据文件/表空间流程的更多相关文章
- 如何删除offline数据文件/表空间上的分区
接上一篇"Oracle 10g RAC全库flashback " http://www.cnblogs.com/cqubityj/p/3265552.html 在打开数据库之前把2 ...
- oracle删除非空的表空间
oracle删除非空的表空间: drop tablespace tablespaceName including contents;
- Oracle添加数据文件创建表空间,创建用户代码
1,添加数据文件创建表空间 CREATE TABLESPACE "TEST1" DATAFILE 'D:\ORACLE\11G\ORADATA\ORCL\TEST1.DBF' SI ...
- Linux环境下利用句柄恢复Oracle误删除的数据文件
在误删除Oracle的数据文件后,如果未关闭数据库,文件句柄还没有释放,且被删除的数据文件占用的磁盘块未被复写,则可以利用句柄的方式来恢复数据文件.下面模拟恢复过程. (一)环境 OS版本:redha ...
- Oracle基础(三) 表空间
数据库的存储结构 数据库主要用于存储和检索相关的信息,Oracle数据库包含逻辑结构和物理结构. 物理结构是指现实存储单元,由一组文件组成如数据文件.日志文件.控制文件. 数据文件:用于存储数据的文件 ...
- Oracle架构设计01:表空间的管理维护规范
Oracle数据库的表空间管理可以说是非常简单和基础的一项维护工作,但是越简单的事情就越要制定统一的规范,这样数据库的各项管理工作才会愈加的简单高效. 那么接下来,问题来了.. Q1:当我们接手一个新 ...
- Oracle创建、管理撤销表空间
撤销管理模式: 用户通过设定撤销管理模式(undo mode)就可以灵活地选择使用手动撤销管理(manual undo management)或自动撤销管理(automatic undo manage ...
- oracle入坑日记<四>表空间
1 表空间是什么 1.1.数据表看做的货品,表空间就是存放货品的仓库.SQLserver 用户可以把表空间看做 SQLserver 中的数据库. 1.2.引用[日记二]的总结来解释表空间. 一个数 ...
- Oracle数据库体系结构(7) 表空间管理1
表空间是Oracle数据库最大的逻辑存储结构,有一系列段构成.Oracle数据库对象存储结构的管理主要是通过表空间的管理实现的. 1.表空间的分类 表空间根据存储类型不同分为系统表空间和非系统表空间 ...
随机推荐
- C++ 虚函数表与多态 —— 多态的简单用法
首先看下边的代码,先创建一个父类,然后在来一个继承父类的子类,两个类中都有自己的 play() 方法,在代码的第35-37行,创建一个父类指针,然后将子类地址引用赋值给父类,这时调用 P 指针的 pl ...
- 容器编排系统之Kubernetes基础入门
一.kubernetes简介 1.什么是kubernetes?它是干什么用的? kubernetes是google公司用go语言开发的一套容器编排系统,简称k8s:它主要用于容器编排:所谓容器编排简单 ...
- Missing Private key解决方案——IOS证书 .cer 以p12文件以及配置方案
一个苹果证书怎么多次使用--导出p12文件 为什么要导出.p12文件 因为苹果规定 .cer证书只能存在于一台机器上,因此 如果另一台电脑想要用的话,需要导出为.p12 file ,安装到另一台没有安 ...
- [日常摸鱼]UVA393 The Doors 简单计算几何+最短路
The Boy Next Doors 题意:给定一个固定大小的房间($x,y$的范围都是$[0,10]$),有$n$个墙壁作为障碍(都与横坐标轴垂直),每个墙壁都有两扇门分别用四个点来描述,起点 ...
- SQL精华总结索引类型优化SQL优化事务大表优化思维导图❤️
索引类型 从数据结构角度: B+树索引, hash索引,基于哈希表实现,只有全值匹配才有效.以链表的形式解决冲突.查找速度非常快 O(1) 全文索引,查找的是文本中的关键词,而不是直接比较索引中的值, ...
- 网站开发学习Python实现-Django的models学习-生鲜项目(6.3.2)
@ 目录 1.说明 2.模型类的设计 3.代码的具体实现 4.详情地址 关于作者 1.说明 models是django的很重要的部分,所以深入研究. 本文章的所研究项目为黑马教育python课程中的项 ...
- 一目了然的 Node.js Windows10 安装篇
本篇文章 介绍 NodeJS 的安装 及环境变量配置 Node JS 的 了解 1.Node.js简介 简单的说 Node.js 就是运行在服务端的 JavaScript.Node.js 是一个基于 ...
- vue封装API接口
第一步: 首先引入axios 然后创建两个文件夹api和http http.js 里面的 1 import axios from 'axios';//引入axios 2 3 //环境的切换 开发环境( ...
- C#获取时间戳的几种方式
Console.WriteLine(Convert.ToDouble(DateTime.UtcNow.Ticks - 621355968000000000) / (10 * 1000 * 1000)) ...
- Powerdesigner中表导出sql语句关于字段注释乱码的问题
问题说明 注释中的汉字都变成了?,应该是编码的问题. declare @CurrentUser sysname select @CurrentUser = user_name() execute sp ...