undo表空间
undo表空间:不能保存对象
为事务提供回退;
为事务提供恢复;
提供读一致性;
闪回查询;
查看undo表空间名称:select tablespace_name from dba_tablespaces where contents='UNDO';
查看rollback段:select segment_name,tablespace_name,status from dba_roallback_segs;
segment_name为SYSTEM的是为系统自带的表空间提供回退的,其他是为用户自己创建的表空间提供回退的。
查看用户使用的回滚段及使用块大小:select s.username,t.XIDUSN,t.USED_UBLK from v$session s, v$transaction t where s.saddr=t.SES_ADDR;
查看回滚段对应的回滚段名称:select name from v$rollname where USN=3;
begin
for i in 1...500000 loop
update t_user set apple=apple+i where user_id=3;
end loop;
end;
/
select s.username,t.XIDUSN,t.USED_UBLK from v$session s, v$transaction t where s.saddr=t.SES_ADDR;--查看使用的块大小
查看undo表空间管理方式:show parameter undo_management
查看undo表空间名称:show parameter undo_tablespace
查看数据文件:select name from v$datafile;
创建undo表空间:create undo tablespace undotbs2 datafile '/u01/app/oracle/oradata/myorcl/undotbs02.dbf' size 10m;
切换undo表空间:alter system set undo_tablespace=undotbs2 scope=both;
切换undo表空间管理方式:alter system set umdo_management=manual scope=spfile;--切换到手动模式
修改表所属的表空间:alter table t_user move tablespace system;
用户没有可用的segment时,无法创建表,oracle11g及其之后的版本新加了参数deferred_segment_creation,为true时可以创建不带数据的表
创建rollback的segment:create rollback segment rbs1 tablespace undotbs1;
修改状态:alter rollbask segment rbs1 online;
查看参数rollback:show parameter rollback
oracle推荐一个segment中存放5个事务,segment数量足够使用时,oracle会自动分配
默认数据库重启后手动创建的segment状态会是offline,需要修改参数:alter system set rollback_segments='RBS1' scope=spfile;--多个参数以逗号间隔,rollback_segments=‘’,'',...
重启后查看segment状态:select segment_name,tablespace_name,status from dba_rollback_segs;
切换undo表空间管理方式:alter system set umdo_management=auto scope=spfile;--切换到自动模式,重启后生效
闪回查询(查询commit之前的数据):
select * from t_user as of timestamp(sysdate-5/1440);
select * from t_user as of scn 1704047;
启动行移动:alter table t_user enable row movement;
将表中数据回退到5分钟之前:
flashback table t_user to timestamp(sysdate-5/1440);--最大支持900秒
flashback table t_user to scn 1704047;
查看参数undo:show parameter undo
闪回版本查询:
select versions_startscn,versions_endscn,versions_operation,versions_xid,apple from t_user versions between scn minvalue and maxvalue where user_id=3;
select versions_starttime,versions_endtime,versions_operation,versions_xid,apple from t_user versions between scn minvalue and maxvalue where user_id=3;
追加日志数据模式:alter database add supplemental log data;
闪回事务查询(sys用户):select undo_sql from flashback_transaction_query where xid='0F00170006000000';--xid通过闪回版本查询获取
设置事务隔离:set transaction isolation level SERIALIZABLE;--查询undo表空间
设置强制回退保实例:alter tablespace UNDOTBS2 RETENTION GUARANTEE;--开启后保证查询一致,但是可能事务会失败
select tablespace_name,retention from dba_tablespace where contents='UNDO';
删除表空间:drop tablespace TEMP02 including contents and datafiles;
查看块大小:show parameter db_block_size
表空间的空间管理:
DMT(dictionary management tablespace):版本8之前,使用字典记录表空间的分配和回收
LMT(local management tablespace):版本8及8之后,临时表空间使用tempfile
查看表空间:select tablespace_name,extent_management from dba_tablespaces;
查看数据文件:select name from v$datafile;
创建表空间:create tablespace data01 datafile '/u01/app/oracle/oradata/myorcl/data01.dbf' size 88k;--数据文件最小88k,80k以下无法创建,81-88会自动扩展至88k,有8k的文件头信息,有8k的未读块标记信息
查看文件ID:select file_id,file_name from dba_data_files;
转储到用户进程的跟踪文件:alter system dump datafile 6 block min 1 block max 11;--文件保存在诊断目录
查看目录:show parameter background
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?
· 如何调用 DeepSeek 的自然语言处理 API 接口并集成到在线客服系统