首页 > 数据库 >【Oracle】Resize your Oracle datafiles down to the minimum without ORA-03297

【Oracle】Resize your Oracle datafiles down to the minimum without ORA-03297

时间:2023-05-30 09:22:52浏览次数:55  
标签:1024 hwm datafiles name -- 03297 bytes char Oracle

 

 

--In non-multitenant DB

set linesize 1000 pagesize 0 feedback off trimspool on
with
 hwm as (
  -- get highest block id from each datafiles ( from x$ktfbue as we don't need all joins from dba_extents )
  select /*+ materialize */ ktfbuesegtsn ts#,ktfbuefno relative_fno,max(ktfbuebno+ktfbueblks-1) hwm_blocks
  from sys.x$ktfbue group by ktfbuefno,ktfbuesegtsn
 ),
 hwmts as (
  -- join ts# with tablespace_name
  select name tablespace_name,relative_fno,hwm_blocks
  from hwm join v$tablespace using(ts#)
 ),
 hwmdf as (
  -- join with datafiles, put 5M minimum for datafiles with no extents
  select file_name,nvl(hwm_blocks*(bytes/blocks),5*1024*1024) hwm_bytes,bytes,autoextensible,maxbytes
  from hwmts right join dba_data_files using(tablespace_name,relative_fno)
 )
select
 case when autoextensible='YES' and maxbytes>=bytes
 then -- we generate resize statements only if autoextensible can grow back to current size
  '/* reclaim '||to_char(ceil((bytes-hwm_bytes)/1024/1024),999999)
   ||'M from '||to_char(ceil(bytes/1024/1024),999999)||'M */ '
   ||'alter database datafile '''||file_name||''' resize '||ceil(hwm_bytes/1024/1024)||'M;'
 else -- generate only a comment when autoextensible is off
  '/* reclaim '||to_char(ceil((bytes-hwm_bytes)/1024/1024),999999)
   ||'M from '||to_char(ceil(bytes/1024/1024),999999)
   ||'M after setting autoextensible maxsize higher than current size for file '
   || file_name||' */'
 end SQL
from hwmdf
where
 bytes-hwm_bytes>1024*1024 -- resize only if at least 1MB can be reclaimed
order by bytes-hwm_bytes desc
/

  

-- In multitenant DB

with
 hwm as (
  -- get highest block id from each datafiles ( from x$ktfbue as we don't need all joins from dba_extents )
  select /*+ materialize */ ktfbuesegtsn ts#,ktfbuefno relative_fno,max(ktfbuebno+ktfbueblks-1) hwm_blocks
  from sys.x$ktfbue group by ktfbuefno,ktfbuesegtsn
 ),
 hwmts as (
  -- join ts# with tablespace_name
  select name tablespace_name,relative_fno,hwm_blocks,con_id
  from hwm join v$tablespace using(ts#)
  --where con_id=sys_context('userenv','con_id')
 ),
 hwmdf as (
  -- join with datafiles, put 5M minimum for datafiles with no extents
  select file_name,nvl(hwm_blocks*(bytes/blocks),5*1024*1024) hwm_bytes,bytes,autoextensible,maxbytes,con_id
  from hwmts right join cdb_data_files using(tablespace_name,relative_fno,con_id)
 )
select
 case when autoextensible='YES' and maxbytes>=bytes
 then -- we generate resize statements only if autoextensible can grow back to current size
  '/* CON_ID='||to_char(con_id,'9999')||' reclaim '||to_char(ceil((bytes-hwm_bytes)/1024/1024),999999)
   ||'M from '||to_char(ceil(bytes/1024/1024),999999)||'M */ '
   ||'alter database datafile '''||file_name||''' resize '||ceil(hwm_bytes/1024/1024)||'M;'
 else -- generate only a comment when autoextensible is off
  '/* CON_ID='||to_char(con_id,'9999')||' reclaim '||to_char(ceil((bytes-hwm_bytes)/1024/1024),999999)
   ||'M from '||to_char(ceil(bytes/1024/1024),999999)
   ||'M after setting autoextensible maxsize higher than current size for file '
   || file_name||' */'
 end SQL
from hwmdf
where
 bytes-hwm_bytes>1024*1024 -- resize only if at least 1MB can be reclaimed
union all
 select '/* CON_ID='||to_char(con_id,'9999')||'}                               */ alter session set container='||name||';' from v$containers
order by 1 desc
--con_id,bytes-hwm_bytes desc
/

  

 

标签:1024,hwm,datafiles,name,--,03297,bytes,char,Oracle
From: https://www.cnblogs.com/Jeona/p/17442269.html

相关文章

  • 【Oracle】Check the tbs' usage
    setfeedbackoffsetpagesize70;setlinesize2000setheadonCOLUMNTablespaceformata25heading'TablespaceName'COLUMNautoextensibleformata11heading'AutoExtend'COLUMNfiles_in_tablespaceformat999heading'Files'......
  • 【Oracle】Oracle Database Administration 2019 Certified Professional Certificati
     说明:1.目前题库100%覆盖考题,准确率84%。2.若需要优质烤券,请私信,留下你的WX。(官方250刀,本店只需要1500RMB包含100%完整题库以及考试经验分享)3.本条信息长期有效。考试题量:85通过分数:84%1、WhichtwoaretrueaboutreclaimingspaceusedbyFlashbacklogsinOracle......
  • 【Oracle impdp/expdp】Big lesson from failure with impdp/expdp in 12c
     最近忙于做数据库12c-19c迁移,基于公司的情况,选用了最拿手的expdp/impdporacle自带的王者级别工具进行迁移。按照常规思路,一顿操作猛如虎,expdp直接选用full=y将数据全库导出,然后在19c中导入,无论是12c中的导出还是19c中的导入数据,没有任何的错误,然而在无意间,反过来去检查下两......
  • oracle 新建表后使用select查询具体字段提示标识符无效
    场景:使用powerdesigner生成oracle数据库表建表语句,执行建表语句后,使用select查询具体字段提示标识符无效。解决方法:使用select*验证一下是不是还报错,不报错就看一下建表语句是不是用""将小写字段包了起来,如果用了"",要么将字段改为大写(可以将建表语句中的""去掉,字段大小写不用调......
  • docker-oracle;配置oracle
    地址:172.18.0.170root/cssjkyhs/yhs0527le一、安装检查uname-r:查看centos版本,root登录,如果不是root,需要前面加sudo如果之前有安装,卸载:yumremovedockerdocker-commondocker-selinuxdocker-engine二、安装docker安装需要的软件包,yum-util提供......
  • mysql、sqlserver、oracle分页,java分页统一接口实现
    定义:pageStart起始页,pageEnd终止页,pageSize页面容量oracle分页:rownum numfrom(实际传的SQL)where rownum<=pageEnd)wherenum>=pageStartsqlServer分页:           select*from(select top 页面容量from(select top字段Adesc)astemptable2orderb......
  • Oracle 死锁与慢查询总结
    查看死锁SELECTs.sid"会话ID",s.lockwait"等待锁",s.event"等待的资源/事件",--最近等待或正在等待的资源/事件DECODE(lo.locked_mode,0,'尚未获得锁',1,NULL,2,'行共享锁',3,'行排它锁',4,'共享表锁',5,'共享行排它锁',6,......
  • Oracle 11G的审计功能开启与关闭
    Oracle11G的审计功能开启与关闭Oracle11g安装后会默认开启数据库审计功能,并且日志保存在SYSTEM表空间中。导致SYSTEM空间越来越大。当表空间已满时,会导致无法连接数据库。建议数据库安装完成之后将此功能关闭,当需要时候再进行开启。参数说明:审计功能由参数audit_trail......
  • 6.6.4 PCS创建Oracle 资源及资源组
    在RHCS体系中,Oracle的启动是按以下顺序进行的:VIP。监听器。逻辑卷(ISCSI共享出来的)。文件系统(在逻辑卷上创建)。数据库实例。上边这些资源,在PCS里创建好以后,将其组合成一个单独的资源组,形成一个不可分割的整体。1)PCS添加Oracle监听器资源Oracle的VIP资源在前边已经添加,那么接下来就......
  • WEB漏洞—SQL注入之Oracle,MongoDB等注入
     1.明确注入数据库类型、权限2.明确提交方法、参数类型等高权限可以执行文件读取,低权限就老老实实获取数据,最终目的都是获取网站权限 常见数据库类型mysql,access,mssql,mongoDB,postgresql,sqlite,oracle,sybase等1、Access注入Access与mysql结构,除access之外,其他数据库结......