--查看unco tablespace使用情况的语句 SELECT B.TABLESPACE_NAME, B.TOTAL_MB - NVL(A.FREE_MB, 0) USED_MB, B.TOTAL_MB TOTAL_MB, ROUND((B.TOTAL_MB - NVL(A.FREE_MB, 0)) / B.TOTAL_MB * 100, 2) USED_PERCENT, B.TOTAL_ALLOCATE_MB + NVL(C.NONAUTO, 0) MAX_ALLOCATE_MB, NVL(B.TOTAL_ALLOCATE_MB, 0) AUTO_MB, NVL(C.NONAUTO, 0) NONAUTO_MB FROM (SELECT TABLESPACE_NAME, ROUND(SUM(BYTES) / 1048576) FREE_MB FROM DBA_FREE_SPACE GROUP BY TABLESPACE_NAME) A, (SELECT TABLESPACE_NAME, ROUND(SUM(BYTES) / 1048576) TOTAL_MB, ROUND(SUM(MAXBYTES) / 1048576) TOTAL_ALLOCATE_MB FROM DBA_DATA_FILES GROUP BY TABLESPACE_NAME) B, (SELECT SUM(BYTES) / 1048576 NONAUTO, TABLESPACE_NAME FROM DBA_DATA_FILES WHERE MAXBYTES = '0' GROUP BY TABLESPACE_NAME) C WHERE A.TABLESPACE_NAME(+) = B.TABLESPACE_NAME AND C.TABLESPACE_NAME(+) = B.TABLESPACE_NAME AND B.TABLESPACE_NAME LIKE 'UNDO%' ORDER BY USED_PERCENT DESC;
--看undo真实使用情况 select ((select (nvl(sum(bytes), 0)) from dba_undo_extents where tablespace_name like 'UNDO%' and status in ('ACTIVE', 'UNEXPIRED')) * 100) / (select sum(bytes) from dba_data_files where tablespace_name like 'UNDO%') "PCT_INUSE" from dual;
--查看是否过期的部分 SELECT DISTINCT STATUS, SUM(BYTES) / 1024 / 1024, COUNT(*) FROM DBA_UNDO_EXTENTS GROUP BY STATUS;
--看自动调整成多少 SELECT TO_CHAR(BEGIN_TIME, 'MM/DD/YYYY HH24:MI:SS') BEGIN_TIME, TUNED_UNDORETENTION FROM V$UNDOSTAT;
每个undo extent可以有三种状态: active:有活动事务在此extent上 expired:已结束的事务,undo 信息超过undo_retention时间限制 unexpired:已经结束的事务,undo 信息未达到undo_retention时间限制
过程
1.先去搜索拥有非active extent的undo segment,如果没有发现,那么会去创建新的undo segment,如果空间不够不能创建,将返回错误。 2.如果有一个undo segment被选中,但是其中free的undo block并不足以存储该事务的undo 信息,那么它将尝试创建extent,如果没有空间,那么将会进入下一步。 3.如果创建新extent失败,它将会搜索其他undo segment中expired extent并重用。 4.如果其他undo segment中没有expired extent可使用,那么它会继续搜索其他undo segment中unexpired extent并重用。 5.如果经过以上尝试还没有可用空间,将会返回错误。
--查看回滚段的使用情况,哪个用户正在使用回滚段的资源,如果有用户最好更换时间(特别是生产环境) select s.username, u.name from v$transaction t, v$rollstat r, v$rollname u, v$session s where s.taddr = t.addr and t.xidusn = r.usn and r.usn = u.usn order by s.username;
--检查UNDO Segment状态 select usn, xacts,status, rssize / 1024 / 1024 / 1024, hwmsize / 1024 / 1024 / 1024, shrinks from v$rollstat order by rssize;
-- 删除原有的UNDO表空间; drop tablespace undotbs1 including contents;
--查看undo数据文件是否自动扩展,undo表空间是否处于gurantee状态。 select AUTOEXTENSIBLE, RETENTION from dba_tablespaces, dba_data_files where dba_data_files.TABLESPACE_NAME = dba_tablespaces.TABLESPACE_NAME and dba_data_files.TABLESPACE_NAME like 'UNDOTB%'
SQL> Alter tablespace undotbs1 retention guarantee; --如果想禁止undo 表空间retention guarantee SQL> Alter tablespace undotbs1 retention noguarantee;
1. 增加数据文件 ALTER TABLESPACE undotbs_01 ADD DATAFILE '/u01/oracle/rbdb1/undo0102.dbf' AUTOEXTEND ON NEXT 1M MAXSIZE UNLIMITED; 2. 重命名数据文件 ALTER TABLESPACE undotbs_01 RENAME DATAFILE '/u01/oracle/rbdb1/undo0102.dbf' TO '/u01/oracle/rbdb1/undo0101.dbf'; 3. 使数据文件online或者offline ALTER TABLESPACE undotbs_01 online|offline; 4. 开始或者结束一个联机备份 ALTER TABLESPACE undotbs_01 BEGIN|END BACKUP; 5. 删除undo tablespace Drop tablespace undotbs_01; Drop undo表空间的时候必须是在未使用的情况下才能进行。如果undo表空间正在使用(例如事务失败,但是还没有恢复成功),那么drop表空间命令将失败。在drop表空间的时候可以使用including contents。 6. 切换undo tablespace 切换undo表空间有两种方式: 1. 使用命令动态修改; 2. 修改初始化参数后重新启动数据库。 Alter system set undo_tablespace=undotbs1; 当切换命令完成后,所有的事务就会在新的回滚表空间内进行。 以下几种情况会导致切换命令失败: 1. 表空间不存在; 2.. 表空间不是一个回滚段表空间; 3. 表空间已经被另一个实例使用。 注意:切换的操作不等待旧undo表空间的事务提交。如果旧undo表空间有事务未提交,那么旧的undo表空间进入pending offline状态,在这种模式下所有的事务能够继续进行,但是undo表空间不能被其他实例使用,也不能被删除,直到所有的事务提交后, undo表空间才进入offline模式。 7. 设置undo_retention dba可以设置undo_retention初始化参数指定undo回滚表空间保留undo信息的时间。在设置好这个参数时,系统会保留undo信息在指定的时间断后才收回这个空间。 一般情况下,系统会保留undo信息到指定的时间后才回收空间,但是,如果系统 存在大量的事务,也会将未到期的undo空间回收,以供使用。 8. Undo 表空间大小的设计规范的计算公式 Undospace = UR * UPS *db_block_size+ 冗余量 UR: 表示在undo中保持的最长时间数(秒),由数据库参数UNDO_RETENTION值决定。 UPS:表示在undo中,每秒产生的数据库块数量。 和undo有关的动态性能视图v$undostat 包含undo的统计信息。使用这张视图可以估计系统当前所需的undo大小。 v$rollstat 是undo模式的视图。是undo表空间的undo segments的统计信息 v$transaction 包含undo segments的信息。 dba_undo_extents 包含undo表空间中每一个范围的提交时间。
和回滚段相关的性能视图 DBA_ROLLBACK_GEGS 描述回滚段的信息,包含回滚段的名字和表空间; DBA_SEGMENTS 描述回滚段的附加信息; V$ROLLNAME 列出在线回滚段的名称 V$ROLLSTAT 包含回滚段的统计信息 V$TRANSACTION 包含撤销的统计信息
select * from v$rollstat; select * from dba_rollback_segs; alter rollbck segment xxx shrink to xxM;
在undo tablespace中不能创建数据库对象,这是因为这个表空间是为数据库recover而准备的。
发表评论
文章已被作者锁定,不允许评论。
-
DB2 学习笔记
2012-03-19 12:28 0ORACLE CREATE TABLE COLUMN DEFA ... -
Oracle Session
2010-12-14 15:50 760select sid,user,status,machine, ... -
9i新特性之Flashback Query的应用-------------针对DML误操作的恢复【转】
2010-12-09 10:07 594用dbms_flashback包 dbms_flashb ... -
oracle asm学习
2010-12-08 11:11 8981.什么是ASM ASM全称 ... -
Oracle学习之路【六】确定当前ORACLE的性能瓶颈
2010-12-03 13:57 801确定当前ORACLE的性能瓶颈 首先,利用V$SYSTEM_ ... -
Java排序【转】
2010-12-03 13:46 764=============================== ... -
Oracle学习之路【二】
2010-12-03 13:43 773=============================== ... -
Oracle学习之路【一】
2010-12-03 13:32 729============================= ... -
染指内存数据库【一】
2010-10-25 13:35 923IBM solidDB 可以部署为一个独立的内存数据库 ... -
ORACLE索引表学习
2010-08-18 16:45 1297索引表与标准表的差异 一、索引表中的ROW ... -
ORACLE零散乱记
2010-06-15 15:15 964PGA_AGGREGATE_TARGET = (物理内存大小 ... -
ORACLE10g 自动SGA管理(一)
2010-01-23 19:33 920SGA -- 数据库块缓冲高速缓存 (db_cache_ ... -
ORACLE10g 闪回表学习
2010-01-23 19:20 636当表被Drop掉后,表及其相关对象被放在一个称 ... -
ORACLE10g ASSM 学习(二)
2010-01-20 21:14 726创建存储过程show_space create or ... -
ORACLE10g ASSM 学习(一)
2010-01-20 20:51 767创建存储过程show_space_assm CREAT ... -
ORACLE10g学习笔记(六)
2010-01-17 23:06 7651. 自动碎片整理 Coalesce ... -
ORACLE10g学习笔记(五)
2010-01-17 19:48 5761. 检查Oracle的进程 $ ... -
ORACLE10g学习笔记(四)
2010-01-17 19:41 7281. 实时查询最耗CPU资源的SQL语句 1. 先通过top ... -
ORACLE10g学习笔记(三)
2010-01-17 17:40 7461. 数据库字符集 通过AL ... -
ORACLE10g学习笔记(二)
2010-01-17 16:29 7321. 表内操作 表内操作 -- 1 -- 删除原主键 ...
相关推荐
### 关于Oracle释放过度使用的Undo表空间的知识点 在Oracle数据库管理中,Undo表空间扮演着极其重要的角色。它主要用于存储事务处理过程中产生的Undo记录,这些记录对于事务回滚、一致性读取以及恢复操作至关重要。...
Oracle提供自动Undo管理,通过设置UNDO_MANAGEMENT=AUTO和UNDO_TABLESPACE=UNDOTBS1,数据库将自动处理Undo空间的管理。这样可以减少DBA的维护工作,但仍然需要根据系统负载和事务特性来合理调整Undo表空间的大小,...
AUM(自动 undo 管理,Automatic Undo Management)几乎不需要... 从 Oracle 10g 开始,您可以选择使用 GUARANTEE 选项,以确保在定义的 undo_retention 时间之前,undo 信息不会被覆盖。 UNDO表空间大小由三部
CREATE UNDO TABLESPACE undotbs DATAFILE '/oracle/app/oracle/oradata/ora10g/undo01.dbf' SIZE 100M; ``` ##### 步骤二:切换到新的UNDO表空间 可以通过以下方式将数据库的UNDO表空间切换到新创建的表空间: -...
CREATE UNDO TABLESPACE UNDOTBS2 DATAFILE 'D:\ORACLE\PRODUCT\10.2.0\ORADATA\SIXF\UNDOTBS02.DBF' SIZE 200M AUTOEXTEND OFF ONLINE RETENTION NOGUARANTEE BLOCKSIZE 8K FLASHBACK ON; ``` 这段SQL语句的含义是...
- 可以通过`ALTER SYSTEM SET UNDO_TABLESPACE = undotbs02;`命令切换到新的Undo表空间。 - 切换后,原有的Undo表空间中的事务完成后可进行删除。 #### 六、常见问题与解决方法 **ORA-01555 错误**: - 表示在查询...
Oracle 表空间(tablespace)的创建、删除、修改、扩展及检查等 Oracle 表空间是 Oracle 数据库中的一种逻辑存储结构,它决定数据库实体的空间分配、设置数据库用户的空间份额、控制数据库部分数据的可用性、分布...
在Oracle数据库系统中,"重做undo表空间"是一个至关重要的概念,它是数据库事务处理的基础。Undo表空间是用来存储事务撤销操作时所需信息的地方,这些信息被称为重做日志(Redo Log)。当一个事务对数据进行修改时,...
- `CREATE UNDO TABLESPACE UNDOTBS2 DATAFILE '/opt/oracle/oradata/undotbs02.dbf' SIZE 100M;`。这里需确保指定的路径可用,并且有足够的磁盘空间。 #### 八、设置UNDO管理模式为自动 - 将UNDO管理模式重新...
在Oracle数据库环境中,Undo Management参数是用来管理事务回滚(undo)数据的机制,它确保了数据库的一致性和可恢复性。当在一个RAC(Real Application Clusters)集群中,如果不同节点上的Undo Management参数设置...
为了防止数据在undo_retention期间被覆盖,可以通过设置undo_tablespace的undo_retention参数来确保所需的Undo保留时间。 ORA-01555错误通常是因为Undo信息在需要时已被重用或删除,解决方法包括增加Undo表空间大小...
在Oracle数据库管理中,"DBA数据库PPT_1"主要涵盖了自动还原管理和创建数据库时的UNDO TABLESPACE配置。自动还原管理是Oracle数据库提供的一种关键功能,它确保了数据库的事务一致性和数据的可恢复性。 首先,我们...
本文将对 Oracle Create Tablespace 语法进行详细的解释和分析,从 undo 表空间到表空间的创建,DATAFILE 的设置,MININUM EXTENT,BLOCKSIZE,logging clause,FORCE LOGGING,DEFAULT storage_clause 等方面。...
### Oracle 12C R2 本地UNDO模式详解 #### 一、概述 Oracle 12C R2 引入了一种新的UNDO管理模式——本地UNDO模式(LOCAL_UNDO_ENABLED),它允许每个可插拔数据库(PDB)拥有独立的UNDO表空间。这一特性显著提升了...
ALTER DATABASE SET UNDO_TABLESPACE=undotbs1; ``` 在实际操作中,如 SYS@pdb1 示例所示,更新表 test1 后,通过查询可以看到数据已被更新为 'OCM'。这展示了在启用 AUM 时,Undo 如何记录并支持对数据的修改。 ...
Oracle数据库的UNDOTBS表空间,全称是Undo Tablespace,是Oracle数据库系统用来存储撤销(Undo)信息的重要部分。当数据库中的事务进行修改操作,如UPDATE或DELETE,Oracle会将这些修改前的状态记录到UNDOTBS表空间...
Oracle数据库中的UNDO段是其事务处理机制的关键组成部分,它主要负责存储事务对数据所做的更改的旧值,以便于回滚操作和维护读的一致性。在深入理解UNDO段之前,我们需要先了解一些基本概念。 1. **Undo表空间**:...
在Oracle数据库管理中,Undo表空间是至关重要的组成部分,它用于存储事务的回滚信息,以便在发生错误或需要撤销操作时恢复数据。当遇到如ORA-600 [4194]这样的内部错误时,可能是因为Redo记录与Undo记录之间的不匹配...