Oracle通过move表来整理碎片操作步骤

2024-03-12 07:12

本文主要是介绍Oracle通过move表来整理碎片操作步骤,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

Oracle通过move表来整理碎片操作步骤

适用场景:
数据库经常性的通过delete来清数,导致数据库出现高水位,通过对表move或者行迁移来降低高水位。

操作前提:
在对表进行move前要注意,move操作时如果不指定表空间,则在原表空间移动数据块,在这个表空间中需要至少额外一倍该表大小的空间。
数据重组后,其 rowid 发生了改变。index是通过 rowid 来 fetch 数据行的,所以表上的 index 需要 rebuild。

检查事项:
操作前先确认业务是否已经停止。

检查表空间大小是否足够使用。

SQL>set linesize 120
COLUMN tablespace_name FORMAT a20
COLUMN status FORMAT a10
COLUMN ext_management FORMAT a15
COLUMN count for 9999
COLUMN CONTENTS FORMAT a10
COLUMN ASSM FORMAT a10
set pages 999
SELECT   d.tablespace_name,round(NVL (a.bytes - NVL (f.bytes, 0), 0) / 1024 / 1024) used_mb,round(NVL (a.bytes / 1024 / 1024, 0)) total_mb,         round(NVL ( (a.bytes - NVL (f.bytes, 0)) / a.bytes * 100, 0),2) ratio,d.status,a.COUNT,d.contents,d.extent_management ext_managementFROM   sys.dba_tablespaces d,(  SELECT   tablespace_name, SUM (bytes) bytes, COUNT (file_id) COUNTFROM   dba_data_filesGROUP BY   tablespace_name) a,(  SELECT   tablespace_name, SUM (bytes) bytesFROM   dba_free_spaceGROUP BY   tablespace_name) fWHERE       d.tablespace_name = a.tablespace_name(+)AND d.tablespace_name = f.tablespace_name(+)AND NOT d.contents LIKE 'UNDO'AND NOT (d.extent_management LIKE 'LOCAL'AND d.contents LIKE 'TEMPORARY')
UNION ALL
SELECT   d.tablespace_name,round(NVL (t.bytes, 0) / 1024 / 1024),round(NVL (a.bytes / 1024 / 1024, 0)),         round(NVL (t.bytes / a.bytes * 100, 0),2),d.status,a.COUNT,d.contents,d.extent_managementFROM   sys.dba_tablespaces d,(  SELECT   tablespace_name, SUM (bytes) bytes, COUNT (file_id) COUNTFROM   dba_temp_filesGROUP BY   tablespace_name) a,(  SELECT   ss.tablespace_name,SUM ( (ss.used_blocks * ts.blocksize)) bytesFROM   gv$sort_segment ss, sys.ts$ tsWHERE   ss.tablespace_name = ts.nameGROUP BY   ss.tablespace_name) tWHERE       d.tablespace_name = a.tablespace_name(+)AND d.tablespace_name = t.tablespace_name(+)AND d.extent_management LIKE 'LOCAL'AND d.contents LIKE 'TEMPORARY'
UNION ALL
SELECT   d.tablespace_name,round(NVL (u.bytes, 0) / 1024 / 1024),round(NVL (a.bytes / 1024 / 1024, 0)),         round(NVL (u.bytes / a.bytes * 100, 0),2),d.status,a.COUNT,d.contents,d.extent_managementFROM   sys.dba_tablespaces d,(  SELECT   tablespace_name, SUM (bytes) bytes, COUNT (file_id) COUNTFROM   dba_data_filesGROUP BY   tablespace_name) a,(  SELECT   tablespace_name, SUM (bytes) bytesFROM   dba_undo_extentsWHERE   status IN ('ACTIVE', 'UNEXPIRED')GROUP BY   tablespace_name) uWHERE       d.tablespace_name = a.tablespace_name(+)AND d.tablespace_name = u.tablespace_name(+)AND d.contents LIKE 'UNDO'
ORDER BY   4 desc;t.sql

Move前后都要检查索引状态

SQL> select index_owner,index_name,column_name,colum_position,status from dba_ind_columns where table_name= ‘tableName’ order by 1,2,3;

操作步骤:
对表进行move操作,move到原本表空间内

SQL> alter table tabName move;

重建索引开启4个并行

SQL> alter index indexName rebuild parallel 4;

索引创建完后并行度调至回1(即不适用并行)

SQL> alter index indexNamen noparallel;

重建主键

SQL> alter index PkName rebuild;

风险提示:

进行move操作时,查询 v$locked_objects视图,可以看到表上加了 exclusive lock锁,所以切勿在业务时间段进行move表操作。

这篇关于Oracle通过move表来整理碎片操作步骤的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/800486

相关文章

SQL Server修改数据库名及物理数据文件名操作步骤

《SQLServer修改数据库名及物理数据文件名操作步骤》在SQLServer中重命名数据库是一个常见的操作,但需要确保用户具有足够的权限来执行此操作,:本文主要介绍SQLServer修改数据... 目录一、背景介绍二、操作步骤2.1 设置为单用户模式(断开连接)2.2 修改数据库名称2.3 查找逻辑文件名

MyBatis Plus 中 update_time 字段自动填充失效的原因分析及解决方案(最新整理)

《MyBatisPlus中update_time字段自动填充失效的原因分析及解决方案(最新整理)》在使用MyBatisPlus时,通常我们会在数据库表中设置create_time和update... 目录前言一、问题现象二、原因分析三、总结:常见原因与解决方法对照表四、推荐写法前言在使用 MyBATis

MySQL复杂SQL之多表联查/子查询详细介绍(最新整理)

《MySQL复杂SQL之多表联查/子查询详细介绍(最新整理)》掌握多表联查(INNERJOIN,LEFTJOIN,RIGHTJOIN,FULLJOIN)和子查询(标量、列、行、表子查询、相关/非相关、... 目录第一部分:多表联查 (JOIN Operations)1. 连接的类型 (JOIN Types)

Oracle修改端口号之后无法启动的解决方案

《Oracle修改端口号之后无法启动的解决方案》Oracle数据库更改端口后出现监听器无法启动的问题确实较为常见,但并非必然发生,这一问题通常源于​​配置错误或环境冲突​​,而非端口修改本身,以下是系... 目录一、问题根源分析​​​二、保姆级解决方案​​​​步骤1:修正监听器配置文件 (listener.

Ubuntu设置程序开机自启动的操作步骤

《Ubuntu设置程序开机自启动的操作步骤》在部署程序到边缘端时,我们总希望可以通电即启动我们写好的程序,本篇博客用以记录如何在ubuntu开机执行某条命令或者某个可执行程序,需要的朋友可以参考下... 目录1、概述2、图形界面设置3、设置为Systemd服务1、概述测试环境:Ubuntu22.04 带图

Maven项目中集成数据库文档生成工具的操作步骤

《Maven项目中集成数据库文档生成工具的操作步骤》在Maven项目中,可以通过集成数据库文档生成工具来自动生成数据库文档,本文为大家整理了使用screw-maven-plugin(推荐)的完... 目录1. 添加插件配置到 pom.XML2. 配置数据库信息3. 执行生成命令4. 高级配置选项5. 注意事

Maven项目打包时添加本地Jar包的操作步骤

《Maven项目打包时添加本地Jar包的操作步骤》在Maven项目开发中,我们经常会遇到需要引入本地Jar包的场景,比如使用未发布到中央仓库的第三方库或者处理版本冲突的依赖项,本文将详细介绍如何通过M... 目录一、适用场景说明​二、核心操作命令​1. 命令格式解析​2. 实战案例演示​三、项目配置步骤​1

JAVA数组中五种常见排序方法整理汇总

《JAVA数组中五种常见排序方法整理汇总》本文给大家分享五种常用的Java数组排序方法整理,每种方法结合示例代码给大家介绍的非常详细,感兴趣的朋友跟随小编一起看看吧... 目录前言:法一:Arrays.sort()法二:冒泡排序法三:选择排序法四:反转排序法五:直接插入排序前言:几种常用的Java数组排序

Spring Boot 常用注解整理(最全收藏版)

《SpringBoot常用注解整理(最全收藏版)》本文系统整理了常用的Spring/SpringBoot注解,按照功能分类进行介绍,每个注解都会涵盖其含义、提供来源、应用场景以及代码示例,帮助开发... 目录Spring & Spring Boot 常用注解整理一、Spring Boot 核心注解二、Spr

Oracle 通过 ROWID 批量更新表的方法

《Oracle通过ROWID批量更新表的方法》在Oracle数据库中,使用ROWID进行批量更新是一种高效的更新方法,因为它直接定位到物理行位置,避免了通过索引查找的开销,下面给大家介绍Orac... 目录oracle 通过 ROWID 批量更新表ROWID 基本概念性能优化建议性能UoTrFPH优化建议注