今天看到在网上看到一篇笔记 Oracle 12cR1, Shutdown abort of a PDB seems to perform commit 提到在12r1 存在一个奇怪的现象,shutdown abort 在当前会话会执行隐式提交, 这有点颠覆我们之前版本中的理论, 我们都知道shutdown abort 应该是rollback 当前未提交的事务。下面是作者当时的测试 环境 12c Enterprise Edition Release 12.1.0.1.0
可以看到在abort 后再打开,未提交的事务是隐式提交了,当时作者未在MOS中找到日志说明这种现象是BUG, 现在我在12C R2 看看该问题是否已修正?
Note:
未提示的事务在abort后是做了rollback操作,和之前的版本预期的一样,不存在作者测试时的现象,朋友同样在12.1.0.2.0 做了测试也已修复。看来是12.1.0.1存在的一个小bug.
SQL> alter session set container=ORCL_PDB;
SQL> alter session set current_schema=HR;
Session altered.
SQL> select * from regions;
REGION_ID REGION_NAME
---------- -------------------------
Europe
Americas
Asia
Middle East and Africa
SQL>update regions set region_name=region_name||'*';
1 rows updated.
SQL> shutdown abort;
Pluggable Database closed.
SQL> alter session set container=ORCL_PDB;
Session altered.
SQL> startup
Pluggable Database opened.
SQL> show con_name
CON_NAME
------------------------------
ORCL_PDB
SQL> alter session set current_schema=HR;
Session altered.
SQL> select * from regions;
REGION_ID REGION_NAME
---------- -------------------------
Europe*
Americas*
Asia*
Middle East and Africa*
可以看到在abort 后再打开,未提交的事务是隐式提交了,当时作者未在MOS中找到日志说明这种现象是BUG, 现在我在12C R2 看看该问题是否已修正?
SQL> startup mount
ORACLE instance started.
Total systemGlobal Area 1610612736 bytes
Fixed Size 4583312 bytes
Variable Size 520093808 bytes
Database Buffers 1073741824 bytes
Redo Buffers 12193792 bytes
Database mounted.
SQL> alter database archivelog;
Database altered.
SQL> alter database open;
Database altered.
SQL> select con_id,dbid,con_uid,name,open_mode from v$pdbs;
CON_ID DBID CON_UID NAME OPEN_MODE
---------- ---------- ---------- ----------------------------- ----------
1594295274 1594295274 PDB$SEED READ ONLY
4271435144 4271435144 PDBORCL MOUNTED
SQL> alter pluggable database pdborcl open;
Pluggable database altered.
SQL> alter session set container=pdborcl;
Session altered.
SQL> select * from t1;
OBJECT_ID OBJECT_NAME
---------- ------------------------------
I_FILE#_BLOCK#
I_OBJ3
I_TS1
I_CON1
IND$
CDEF$
C_TS#
I_CCOL2
I_PROXY_DATA$
I_CDEF4
rows selected.
SQL> alter session set container=cdb$root;
Session altered.
SQL> alter pluggable database pdborcl open;
alter pluggable database pdborcl open
*
ERROR at line 1:
ORA-01113: file 10 needs media recovery
ORA-01110: data file 10: '/u01/app/oracle/oradata/orcl/pdborcl/users01.dbf'
SQL> alter session set container=pdborcl;
Session altered.
SQL> alter database recover;
Database altered.
SQL> alter pluggable database pdborcl open;
Pluggable database altered.
SQL> select * from t1;
OBJECT_ID OBJECT_NAME
---------- ------------------------------------------------------
I_FILE#_BLOCK#
I_OBJ3
I_TS1
I_CON1
IND$
CDEF$
C_TS#
I_CCOL2
I_PROXY_DATA$
I_CDEF4
rows selected.
SQL> select * from v$version;
BANNER CON_ID
-------------------------------------------------------------------------------- ----------
Oracle Database 12c Enterprise Edition Release 12.2.0.0.1 - 64bit Beta 0
PL/SQL Release 12.2.0.0.1 - Beta 0
CORE 12.2.0.0.0 Beta 0
TNS for linux: Version 12.2.0.0.0 - Beta 0
NLSRTL Version 12.2.0.0.0 - Beta 0
Note:
未提示的事务在abort后是做了rollback操作,和之前的版本预期的一样,不存在作者测试时的现象,朋友同样在12.1.0.2.0 做了测试也已修复。看来是12.1.0.1存在的一个小bug.
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。




