其中我们有用到事务,但是如果提示已经成功了就说明事务是提交了的,虽然我们在物理数据库中无法看到数据,但是如果再去执行之前的操作,就会提示用户数据已存在,这可能是内存数据库中有数据,我们的物理数据库和内存数据库是同步的,插入到内存数据库后就会同步到我们的物理数据库,我以为是同步未成功,所以去重启了下内存数据库,但是为何物理数据库中依旧没有数据呢?
其中我们有用到事务,但是如果提示已经成功了就说明事务是提交了的,虽然我们在物理数据库中无法看到数据,但是如果再去执行之前的操作,就会提示用户数据已存在,这可能是内存数据库中有数据,我们的物理数据库和内存数据库是同步的,插入到内存数据库后就会同步到我们的物理数据库,我以为是同步未成功,所以去重启了下内存数据库,但是为何物理数据库中依旧没有数据呢?
但是如果没有commit事物应该回滚,然后我们后面的相关操作应该没有执行才对,但是后面操作的日志都成功且正确的打印出来了。这让我很疑惑。
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 created7:23:20 SQL> insert into t
2 select * from scott.emp;14 rows inserted7: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 1014 rows selected7:23:43 SQL> commit;Commit complete7: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 1014 rows selected7:23:55 SQL>
添加数据,马上就写redo和undo,
未提交之前数据在data block cache中,显示提交或者隐式提交后数据才真正写到oracle 数据块中。