【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.表空间的分类 表空间根据存储类型不同分为系统表空间和非系统表空间 ...
随机推荐
- 算法(Java实现)—— 二分搜索算法
二分搜索算法 有序数列才可用二分查找算法 思路分析 思路分析 首先确定该数组的中间下标mid = (left + right)/ 2 然后让需要查找的数findVal和arr[mid]比较 findV ...
- gitbook 安装和使用
gitbook 安装和使用 安装nodejs wget https://nodejs.org/dist/v10.22.0/node-v10.22.0-linux-arm64.tar.xz tar - ...
- webshell学习
参考文章: https://www.bilibili.com/video/BV1T4411t7BW?p=14 https://blog.csdn.net/mmmsss987/article/detai ...
- 【C】C语言位域(位段)详解
作者:李春港 出处:https://www.cnblogs.com/lcgbk/p/14215449.html 目录 一.位域是什么? 二.位域的存储 2.1 相邻成员的类型相同 2.2 相邻成员的类 ...
- 访问需要HTTP Basic Authentication认证的资源的c#的实现 将账号密码放入url
string url = ""; string usernamePassword = username + ":" + password; HttpWebReq ...
- SpringBoot全局异常拦截
SpringBoot全局异常捕获 使用到的技能 @RestControllerAdvice或(@ControllerAdvice+@ResponseBody) @ExceptionHandler 代码 ...
- chrome实现网页高清截屏(F12、shift+ctrl+p、capture)
打开需要载屏的网页,在键盘上按下F12,出现以下界面 上图圈出的部分有可能会出现在浏览器下方,这并没有关系.此时按下 Ctrl + Shift + P(Mac 为 ⌘Command +⇧Shift + ...
- Putty或MobaXTerm无法连接VMware虚拟机 报Network error: Connection timed out的解决方案
当出现无法连接的问题时, 我们要先对可能出现的问题进行梳理, 然后进行排查, 以下我先整理一些可能出现问题的地方: 1. 通过 ping 查看两台终端是否均有联网 windows下通过控制台 cmd ...
- TurtleBot3 Waffle (tx2版华夫)(13)RC100遥控杆控制
13.1.遥控器说明 使用ROBOTIS RC100的设置已经在ROS的OpenCR固件中,因此不需要安装必需软件包, 安装号即可使用. 13.2.遥控器的安装 1接线口穿过后壳的过孔. 2接线口连接 ...
- hive on spark:return code 30041 Failed to create Spark client for Spark session原因分析及解决方案探寻
最近在Hive中使用Spark引擎进行执行时(set hive.execution.engine=spark),经常遇到return code 30041的报错,为了深入探究其原因,阅读了官方issu ...