A customer is running ZFS version15 on Solaris SPARC 10/08 supporting
Oracle 10.2.0.3 databases in a dev and production test environment. We
have come across some cache inconsistencies with one of the Oracle
databases where fetching a record displays a 'historical value' (that
has been changed and committed many times). This is an isolated
occurance and is not always consistent. I can't replicate it to other
tables. I'll also be posting a note to the ZFS discussion list.
Is it possible for a read to bybpass the write cache and fetch from disk
before the flush of the cache to disk occurs? This is a large system
that is infrequently busy. The Oracle SGA size is minimized to 1GB per
instance and we rely more on the ZFS cache, allowing us to fit ‘more
instances’ (many of which are cloned snapshots). We’ve been running this
setup for 2 years. The filesystems are set with compression on,
blocksize 8k for oracle datafiles, 128k for redologs.
Here are the details of the scenerio:
1. Update statement re-setting existing value. At this point the
previous value was actually set to -643 prior to the update. It was
originally set to 3 before today’s session:
SQL> update [name deleted] set status_cd = 1 where id = 65;
1 row updated.
SQL> commit;
Commit complete.
SQL> select rowid, id, status_cd from [table name deleted]
SQL> where id = 65;
ROWID ID STATUS_CD
------------------ ------------------ ----------
AAAq/DAAAAAAERlAAM 65 3
Note that when retrieved the status_cd reverts to the old original value
of 3, not the previous value of -643.
2. Oracle trace file proves that the update was issued and committed:
=====================
PARSING IN CURSOR #1 len=70 dep=0 uid=110 oct=6 lid=110
tim=17554807027344 hv=3512595279 ad='fd211878'
update [table deleted] set status_cd = 1 where id = 65 END OF STMT PARSE
#1:c=0,e=54,p=0,cr=0,cu=0,mis=0,r=0,dep=0,og=2,tim=17554807027340
BINDS #1:
EXEC #1:c=0,e=257,p=0,cr=3,cu=3,mis=0,r=1,dep=0,og=2,tim=17554807027737
WAIT #1: nam='SQL*Net message to client' ela= 2 driver id=1413697536
#bytes=1 p3=0 obj#=-1 tim=17554807027803 WAIT #1: nam='SQL*Net message
from client' ela= 2999139 driver id=1413697536 #bytes=1 p3=0 obj#=-1
tim=17554810026992 STAT #1 id=1 cnt=1 pid=0 pos=1 obj=0 op='UPDATE
[TABLE DELETED] (cr=3 pr=0 pw=0 time=144 us)'
STAT #1 id=2 cnt=1 pid=1 pos=1 obj=177738 op='INDEX UNIQUE SCAN
[TABLE_DELETED]_XPK (cr=3 pr=0 pw=0 time=19 us)'
PARSE #2:c=0,e=9,p=0,cr=0,cu=0,mis=0,r=0,dep=0,og=0,tim=17554810027367
XCTEND rlbk=0, rd_only=0
EXEC #2:c=0,e=226,p=0,cr=0,cu=1,mis=0,r=0,dep=0,og=0,tim=17554810027630
WAIT #2: nam='log file sync' ela= 833 buffer#=9408 p2=0 p3=0 obj#=-1
tim=17554810028507 WAIT #2: nam='SQL*Net message to client' ela= 2
driver id=1413697536 #bytes=1 p3=0 obj#=-1 tim=17554810028578 WAIT #2:
nam='SQL*Net message from client' ela= 1825185 driver id=1413697536
#bytes=1 p3=0 obj#=-1 tim=17554811853812 ===================== PARSING
IN CURSOR #1 len=67 dep=0 uid=110 oct=3 lid=110 tim=17554811854015
hv=1593702413 ad='fd713640'
select status_cd from [table_deleted] where id = 65 END OF STMT PARSE
#1:c=0,e=41,p=0,cr=0,cu=0,mis=0,r=0,dep=0,og=2,tim=17554811854010
BINDS #1:
EXEC #1:c=0,e=91,p=0,cr=0,cu=0,mis=0,r=0,dep=0,og=2,tim=17554811854273
WAIT #1: nam='SQL*Net message to client' ela= 1 driver id=1413697536
#bytes=1 p3=0 obj#=-1 tim=17554811854327 FETCH
#1:c=0,e=64,p=0,cr=4,cu=0,mis=0,r=1,dep=0,og=2,tim=17554811854436
WAIT #1: nam='SQL*Net message from client' ela= 780 driver id=1413697536
#bytes=1 p3=0 obj#=-1 tim=17554811855291 FETCH
#1:c=0,e=0,p=0,cr=0,cu=0,mis=0,r=0,dep=0,og=0,tim=17554811855331
WAIT #1: nam='SQL*Net message to client' ela= 0 driver id=1413697536
#bytes=1 p3=0 obj#=-1 tim=17554811855366
There are no Oracle or Solaris error messages indicating any issue with
this update. Haas anyone seen this behavoir?
The features of ZFS (snapshots/clones/compression) save us a ton of time
on this platform and we have certainly benefited from it. Just want to
understand how something like this could occur and determine how we can
prevent it in the future.
==========
Gerry Bragg
Sr. Developer
Altarum Institute
(734) 516-0825
gerry.br...@altarum.org <mailto:gerry.br...@altarum.org>
www.altarum.org <http://www.altarum.org/>
"Systems Research For Better Health"
_______________________________________________
zfs-discuss mailing list
zfs-discuss@opensolaris.org
http://mail.opensolaris.org/mailman/listinfo/zfs-discuss