暂无图片
oracle会把未提交的数据写到数据文件中吗?
我来答
分享
暂无图片 匿名用户
oracle会把未提交的数据写到数据文件中吗?

oracle会把未提交的数据写到数据文件中吗?

我来答
添加附件
收藏
分享
问题补充
5条回答
默认
最新
你好我是李白

会写入数据文件的,做个简单测试可以说明这一点,如下:

# session 1,创建测试表,插入两条数据,并模拟一个未提交事务 create table test_mod (id number,name varchar2(20)); insert into test_mod values(1,'test'); insert into test_mod values(2,'test2'); commit; update test_mod set name='czh' where id=1; --未提交 # session 2 -- 执行完全检查点以及flush buffer cache alter system checkpoint; alter system flush buffer_cache; -- 查询上面构造测试表数据块 select dbms_rowid.rowid_object(rowid) object_id, dbms_rowid.rowid_relative_fno(rowid) r_file_id, dbms_rowid.rowid_block_number(rowid) block_id, dbms_rowid.rowid_row_number(rowid) row_number from hr.test_mod; OBJECT_ID R_FILE_ID BLOCK_ID ROW_NUMBER --------- ---------------------------------------- ---------------------------------------- ---------------------------------------- 113023 4 173227 0 113023 4 173227 1 # dump 内存以及数据文件对应块 # 由于执行了检查点以及flush buffer cache,所以下面两个dump出来trace文件内容基本相同。 SYS@honor1 > alter system dump datafile 4 block 173227; SYS@honor1 > alter system dump datafile '+DATADG/honor/datafile/users.259.984507931' block 173227; -- 下面节选部分关键内容 block_row_dump: tab 0, row 0, @0x1f77 tl: 10 fb: --H-FL-- lb: 0x2 cc: 2 col 0: [ 2] c1 02 col 1: [ 3] 63 7a 68 tab 0, row 1, @0x1f81 tl: 12 fb: --H-FL-- lb: 0x0 cc: 2 col 0: [ 2] c1 03 col 1: [ 5] 74 65 73 74 32 # 转换一下第一行的col 1,看看是数据文件中写的是多少值 SYS@honor1 > select utl_raw.cast_to_varchar2('637a68') from dual; UTL_RAW.CAST_TO_VARCHAR2('637A68') ------------------------------------- czh --可以看到,update未提交的数值被写入了数据文件,而初始值test已被覆盖。 # 接下来rollback rollback; select * from test_mod; ID NAME ---------------------------------------- ---------------------------------------- 1 test 2 test2 --可以看到表中值回到了test。
复制

通过上述测试,可以看到,未提交的值也是有可能写入数据文件。

暂无图片 评论
暂无图片 有用 0
打赏 0
暂无图片
始于脚下

不会。

暂无图片 评论
暂无图片 有用 0
打赏 0
杨凯同学
2021-10-09
真菜
seagull

未提交的数据不会写入数据文件,但有可能写入redo。

暂无图片 评论
暂无图片 有用 0
打赏 0
薛晓刚

redo和undo其实也算数据文件。tmp也是。

暂无图片 评论
暂无图片 有用 0
打赏 0
杨凯同学

假入一个表插入1个t数据没提交,数据写哪里了,一群菜货。未提交数据肯定会写数据文件的

暂无图片 评论
暂无图片 有用 0
打赏 0
回答交流
Markdown


请输入正文
提交
相关推荐
xtts 学习
回答 1
已采纳
https://www.modb.pro/doc/43436mos上或者墨天轮就有学习资料
tmp 是root用户权限,要给Oracle用户额外授权吗?
回答 1
不需要,tmp目录所有用户都有读写权限
oracle RAC , +data/orcl/fangh.12345678 请教下,增加一个数据文件,前面要求 “ +data/orcl/fangh.”,而文件名后面的一串数字可以随机。 这个咋实现的
回答 5
已采纳
这个数据文件名是自动生成的随机文件名,通过设置OMF参数:showparameterdbcreate设置该参数后,添加数据文件只需要执行:altertablespace表空间名adddatafile;
ora-00931问题怎么解决?
回答 1
DbCommandcmddb.GetSqlStringCommand(sql);
oracle读写分离中间件有哪些?
回答 3
你好:可以考虑ShardingSphere开源数据库中间件,是Apache的顶级项目。主库添加、更新以及删除数据操作所使用的数据库,目前仅支持单主库。从库查询数据操作所使用的数据库,可支持多从库。主从
哪位大哥做过这样的操作,Oracle 11g-rac两节点之间的时间是同步的,用的是CTSS时间同步,但是数据库的时间比互联网的时间慢两分钟,现在客户想要库和互联网的时间同步,谁做过,有啥经验分享一下
回答 2
已采纳
可以用ntp同步
Oracle RAC故障
回答 11
只是单纯的更换交换机了是吗?光纤卡什么的有没有替换,我们的环境以前也是异常节点重启,后来发布光纤卡的型号号2个节点用的不一样,后来替换成一样后,就再没有出现这种情况了。你这次切网后发生的问题,建你还是
oracle rman备份认为过期的逻辑
回答 3
已采纳
crosscheck和delete之前执行RMAN>reportobsolete;作用:1、对数据文件备份的处理:对于每一个已经备份的数据文件,rman会在保留策略内标识出一个最老的的全数据备份
"检查未压缩的,未分区的堆表CITIES的详细信息。 Name Null? Type
回答 1
已采纳
正确的选项是C,即在执行ALTERTABLEcitiesSHRINKSPACECOMPACT;命令之前,必须确保行移动功能被启用。其他选项要么不是必要的前提条件,要么与实际操作不符。
为啥重启数据库又变回磁盘了?
回答 1
当前是notmounted状态,数据库mount或open后再查查