首页 > 数据库 >Oracle 数据库表空间运维

Oracle 数据库表空间运维

时间:2023-11-28 10:44:17浏览次数:39  
标签:name 运维 -- 数据库 tablespace file Oracle id block

-- https://blog.csdn.net/hanjianahanjian/article/details/83871567
-- 1、block:是Oracle中存储数据块的最小单位,所以数据最终都是存储在block中。它也被称为逻辑blocks或是页(pages)。每个操作系统都有自己的block size。而这里的block是Oracle自己的,不同2于2、extent:OS的blocks。可以通过设置DB_BLOCK_SIZE设置Oracle的block为OS的block的几倍,从而减少不必要的I/O。不管block中存放的数据是表、索引还是cluster data,block的结构都是一致。
-- extent 是每次分配给一个对象的逻辑最小单位,是由一定数量连续的block组成。一个或多个extent又组成了一个segment。
-- 3、segment:它是extents的集合,它包含了在表空间中所包含的具体逻辑存储机构的所有extents。

-- 查看表空间和对应物理文件名
select b.file_id 物理文件号,
       b.file_name 物理文件名,
       b.tablespace_name 表空间,
       b.bytes / 1024 / 1024 大小M,
       (b.bytes - sum(nvl(a.bytes, 0))) / 1024 / 1024 已使用M,
       substr((b.bytes - sum(nvl(a.bytes, 0))) / (b.bytes) * 100, 1, 5) 利用率
  from dba_free_space a, dba_data_files b
 where a.file_id = b.file_id
 and 利用率 < 50%
 group by b.tablespace_name, b.file_id, b.file_name, b.bytes
 order by b.tablespace_name;
-- 152,153,154,155,156,157,158,159,160,161,162,163 物理文件名/datadb/ZHFCDB/default_tbs**,物理I文件号 152,153,154,155,156,157,158,159,160,161,162,163 几乎未达使用

-- 确认下表空间对应的数据文件是否有在
SELECT *
  FROM dba_extents
 WHERE TABLESPACE_NAME = 'DEFAULT_TBS'
   and extend_id in
       (152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163); -- 为空集,说明数据文件数据块还未写入数据,可以直接删除

-- 数据清理与清空回收站
-- 清除用户回收站
purge recyclebin;
-- 清除全库回收站
purge dba_recyclebin;

-- 整理表空间
alter tablespace tablespace_name coalesce;

-- 清空表数据
truncate table table_name;
-- 释放表空间
alter table table_name deallocate UNUSED KEEP 0; 
-- 注:(1)先清空表数据,此时表依旧存在,Truncate不支持回滚,并且不能truncate一个带有外键的表,如果要删除首先要取消外键,然后再删除;(2)注意如果不加KEEP 0的话,表空间是不会释放的。

-- 迁移表数据。在出现以下错误时,我们不仅可以通过整理表空间或者清楚回收站进行解决,还可以通过将待释放表空间的表数据全部迁移到其他表空间,将空间释放后再迁移回原表空间。(此次操作无须涉及)
-- 需移动的表数据
select DISTINCT 'alter table '|| owner||'.'||segment_name || ' move tablespace user_test;' from dba_extents where segment_type='TABLE' and file_id=4;
-- 需移动的索引数据
select DISTINCT 'alter index '|| owner||'.'|| segment_name || ' rebuild tablespace user_test;' from dba_extents where segment_type='INDEX' and file_id=4;
-- 需移动的分区表数据
select DISTINCT 'alter table '|| owner||'.'|| segment_name || ' move partition '|| partition_name || ' tablespace user_test;' from dba_extents where segment_type='TABLE PARTITION' and file_id=4;
-- 需移动的分区表索引数据
select DISTINCT 'alter index '|| owner||'.'|| segment_name || ' rebuild partition '|| partition_name || ' tablespace user_test;' from dba_extents where segment_type='INDEX PARTITION' and file_id=4;
-- 上述代码中file_id可以通过查看表空间进行比对更改,上述代码执行后可以获得对应的自动生成的SQL代码,此时运行对应的SQL代码即可迁移表数据

-- 生成RESIZE代码 (无须操作)
select a.file#,
       a.name,
       a.bytes / 1024 / 1024 CurrentMB,
       ceil(HWM * a.block_size) / 1024 / 1024 ResizeTo,
       (a.bytes - HWM * a.block_size) / 1024 / 1024 ReleaseMB,
       'alter database datafile ''' || a.name || ''' resize ' ||
       ceil(HWM * a.block_size / 1024 / 1024) || 'M;' ResizeCMD
  from v$datafile a,
       (select file_id, max(block_id + blocks - 1) HWM
          from dba_extents
         where file_id in (select b.file#
                             From v$tablespace a, v$datafile b
                            where a.ts# = b.ts#
                              and a.name = 'tablespace_name')
         group by file_id) b
 where a.file# = b.file_id(+)
   and (a.bytes - HWM * block_size) > 0
 order by 5;


-- 删除空的表空间,但是不包含物理文件
drop tablespace tablespace_name;
-- 删除非空表空间,但是不包含物理文件
drop tablespace tablespace_name including contents;
-- 删除空表空间,包含物理文件
drop tablespace tablespace_name including datafiles;
-- 删除非空表空间,包含物理文件
drop tablespace tablespace_name including contents and datafiles;
-- 如果其他表空间中的表有外键等约束关联到了本表空间中的表的字段,就要加上CASCADE CONSTRAINTS
drop tablespace tablespace_name including contents and datafiles CASCADE CONSTRAINTS;

-- 查看表空间数据表,数据块,数据段的使用信息
SELECT * FROM dba_tables a WHERE a.TABLESPACE_NAME = 'DEFAULT_TBS';
SELECT * FROM dba_extents WHERE TABLESPACE_NAME = 'DEFAULT_TBS';
SELECT * FROM dba_segments WHERE TABLESPACE_NAME = 'DEFAULT_TBS';

  

标签:name,运维,--,数据库,tablespace,file,Oracle,id,block
From: https://www.cnblogs.com/allen20201225/p/17861334.html

相关文章

  • 数据库分类分级做完了,接下来怎么用
    01/7  数据分类分级的难点回顾之前一篇文章内,我们大致讲述了近两年来在各大企业和机构内大热的数据分类分级运动的由来,以及数据分类分级的难点。简单总结起来其困境主要来源于企业内部系统构建的个性化程度高,如基于数据字段命名并无法推测出实质数据类型(见下图所示,text1并不能......
  • ABAP Software component SAP_BASIS 下的数据库表 URS02 的用途介绍
    数据库表USR02是SAP系统中的一个重要表,它用于存储用户的验证信息。在ABAP开发中,我们经常需要与此表进行交互,以管理和验证用户的凭据。这张表里一些主要的字段含义罗列如下:BNAME:登录用户名GLTGV:用户在系统生效的起始时间GLTGB:用户在系统生效的截止时间USTYP:用......
  • 达梦数据库监控部分数据库表信息
    达梦数据库监控部分数据库表信息背景开源和商业的四种数据库已经可以进行数据展示了未来主要是进行国产数据库的监控和部分数据的展示信息本次准备选用达梦数据库的非官方dmdb_exporter进行展示.下载方式为github/同事下载简单使用增加监控指标信息:在default-metr......
  • linux系列之常用运维命令整理笔录
    一、系统命令1、free命令使用free命令简介free命令能够显示系统中物理上的空闲和已用内存,还有交换内存,同时,也能显示被内核使用的缓冲和缓存free命令语法语法:free[param]param可以为:-b:以Byte为单位显示内存使用情况;-k:以KB为单位显示内存使用情况;-m:以MB为单......
  • openGauss学习笔记-133 openGauss 数据库运维-例行维护-日维护检查项
    openGauss学习笔记-133openGauss数据库运维-例行维护-日维护检查项133.1检查openGauss状态通过openGauss提供的工具查询数据库和实例状态,确认数据库和实例都处于正常的运行状态,可以对外提供数据服务。检查实例状态gs_check-Uomm-iCheckClusterState检查参数openG......
  • 【Flask使用】第6篇:Flask数据库和表单验证。0基础md文档集合(附代码,可自取)
    本文的主要内容:flask视图&路由、虚拟环境安装、路由各种定义、状态保持、cookie、session、模板基本使用、过滤器&自定义过滤器、模板代码复用:宏、继承/包含、模板中特有变量和函数、Flask-WTF表单、CSRF、数据库操作、ORM、Flask-SQLAlchemy、增删改查操作、案例、蓝图、单元测......
  • 远程连接数据库
    远程连接数据库1.电脑IPv4进入cmd查找ipv4命令​ Ipconfig2.进入数据库mysql-uroot-puse库名;然后grantselect,insert,update,deleteon*.*toroot@"别人的IP地址" Identifiedby"密码"或者grantallon*.*toroot@"别人的IP地址"Identifiedby"密码",......
  • 6、oracle授予普通用户dba权限以及回收
    oracle授予普通用户dba权限以及回收1、授予dba权限grantdbato普通用户;2、回收dba权限revokedbafrom普通用户;......
  • 12、oracle锁表查询spid进行杀掉
    oracle锁表查询spid进行杀掉1、查询SELECTA.SPID,B.SID,B.SERIAL#,B.USERNAMEFROMV$PROCESSA,V$SESSIONBWHEREA.ADDR=B.PADDRANDB.STATUS='KILLED';2、linuxOs执行杀掉进程kill-9SPID......
  • 13、oracle查看锁表
    oracle查看锁表1、查看以及执行解锁表SELECTDISTINCT'altersystemkillsession'''||s.sid||','||s.serial#||',@'||s.inst_id||'''immediate;'ASkill_session_scripts,......