在程序中执行oracle的增删改操作成功,但是为何在物理数据库中没数据

linyfei 2011-03-29 09:43:57

其中我们有用到事务,但是如果提示已经成功了就说明事务是提交了的,虽然我们在物理数据库中无法看到数据,但是如果再去执行之前的操作,就会提示用户数据已存在,这可能是内存数据库中有数据,我们的物理数据库和内存数据库是同步的,插入到内存数据库后就会同步到我们的物理数据库,我以为是同步未成功,所以去重启了下内存数据库,但是为何物理数据库中依旧没有数据呢?
...全文
195 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
304的的哥 2011-04-22
  • 打赏
  • 举报
回复
建立表,
添加数据,马上就写redo和undo,
未提交之前数据在data block cache中,显示提交或者隐式提交后数据才真正写到oracle 数据块中。
304的的哥 2011-04-22
  • 打赏
  • 举报
回复

SQL> set time on;
7:23:14 SQL>
7:23:20 SQL> create table t as
2 select * from scott.emp
3 where 1=0;

Table created

7:23:20 SQL> insert into t
2 select * from scott.emp;

14 rows inserted

7:23:39 SQL> select * from t;

EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO
----- ---------- --------- ----- ----------- --------- --------- ------
7369 SMITH CLERK 7902 1980-12-17 800.00 20
7499 ALLEN SALESMAN 7698 1981-2-20 1600.00 300.00 30
7521 WARD SALESMAN 7698 1981-2-22 1250.00 500.00 30
7566 JONES MANAGER 7839 1981-4-2 2975.00 20
7654 MARTIN SALESMAN 7698 1981-9-28 1250.00 1400.00 30
7698 BLAKE MANAGER 7839 1981-5-1 2850.00 30
7782 CLARK MANAGER 7839 1981-6-9 2450.00 10
7788 SCOTT ANALYST 7566 1987-4-19 3100.00 20
7839 KING PRESIDENT 1981-11-17 5000.00 10
7844 TURNER SALESMAN 7698 1981-9-8 1500.00 0.00 30
7876 ADAMS CLERK 7788 1987-5-23 1100.00 20
7900 JAMES CLERK 7698 1981-12-3 950.00 30
7902 FORD ANALYST 7566 1981-12-3 3000.00 20
7934 MILLER CLERK 7782 1982-1-23 1300.00 10

14 rows selected

7:23:43 SQL> commit;

Commit complete

7:23:49 SQL> select * from t;

EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO
----- ---------- --------- ----- ----------- --------- --------- ------
7369 SMITH CLERK 7902 1980-12-17 800.00 20
7499 ALLEN SALESMAN 7698 1981-2-20 1600.00 300.00 30
7521 WARD SALESMAN 7698 1981-2-22 1250.00 500.00 30
7566 JONES MANAGER 7839 1981-4-2 2975.00 20
7654 MARTIN SALESMAN 7698 1981-9-28 1250.00 1400.00 30
7698 BLAKE MANAGER 7839 1981-5-1 2850.00 30
7782 CLARK MANAGER 7839 1981-6-9 2450.00 10
7788 SCOTT ANALYST 7566 1987-4-19 3100.00 20
7839 KING PRESIDENT 1981-11-17 5000.00 10
7844 TURNER SALESMAN 7698 1981-9-8 1500.00 0.00 30
7876 ADAMS CLERK 7788 1987-5-23 1100.00 20
7900 JAMES CLERK 7698 1981-12-3 950.00 30
7902 FORD ANALYST 7566 1981-12-3 3000.00 20
7934 MILLER CLERK 7782 1982-1-23 1300.00 10

14 rows selected

7:23:55 SQL>
linyfei 2011-04-21
  • 打赏
  • 举报
回复
已经解决了,谢谢各位的关心。最近很忙都没来看这里了。是我同事把我们进入数据库的操作代码屏蔽了。
狂龙骄子 2011-04-07
  • 打赏
  • 举报
回复
提交了没Commit
vivai2010 2011-04-07
  • 打赏
  • 举报
回复
用commit提交
唐诗三百首 2011-04-07
  • 打赏
  • 举报
回复
楼主能举个简单的例子说明一下问题吗?
linyfei 2011-04-07
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 ap0405140 的回复:]
楼主程序中的事务有提交(执行commit;)吗?
[/Quote]

但是如果没有commit事物应该回滚,然后我们后面的相关操作应该没有执行才对,但是后面操作的日志都成功且正确的打印出来了。这让我很疑惑。
changhe325 2011-03-29
  • 打赏
  • 举报
回复
内存数据库和物理数据库是怎么同步的呢?
帮顶+学习~
linyfei 2011-03-29
  • 打赏
  • 举报
回复
在线等。。。
yongerman 2011-03-29
  • 打赏
  • 举报
回复
很明显楼主你没有提交事务的!!!commit提交吧
唐诗三百首 2011-03-29
  • 打赏
  • 举报
回复
楼主程序中的事务有提交(执行commit;)吗?

17,082

社区成员

发帖
与我相关
我的任务
社区描述
Oracle开发相关技术讨论
社区管理员
  • 开发
  • Lucifer三思而后行
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧