Upgrade your JDBC and JDK before Upgrade your Database to 12c Version!

Ok, now it’s everyone upgrading to 12c, right? Thanks God, this version was released in 2013!

But there is some things to be aware when planning an upgrade, specially regarding old applications and legacy. But pay attention! Not all of the requirements are necessary inside database. It’s the case os JDBC version requirement.

The database 12c documentation explicit mentions that JDBC versions 11.1.x and below are not supported anymore. It doesn’t mean that they don’t work, it’s only unsupported and you’ll have no assistance from MOS if you need. It’s better to avoid, right?

Anyway, if you check the JDBC support matrix, if you are in version 11.2 or below you are not supported since August/2015. So the Database 12c is helping you, that don’t have patching policy, to keep on right way. Thanks to Database 12c!

If this is your situation, I highly recommend you to upgrade the directly to JDBC version 7, the last available by now. See JDBC matrix version as:


But test! Test in you dev/test/QA environments before upgrading in Production environment!

Why? Because JDBC also have his compatibility matrix. JDBC 7, for example, demands your JDK to be at least in version 7 (released in 2011!). So, it’s needed to be at least in JDK version 6, as you can see below.

captura-de-tela-2016-10-22-as-16-37-18(Click in the image to access the link)

OK doke?

Some interesting links for you:
Verifying a JDBC Client Installation
What are the various supported Oracle database version vs JDBC compliant versions vs JDK version supported?
Checking the Oracle JDBC Driver Version on a Weblogic Server (by Cristóbal Soto)


Skipping database transaction on Oracle GoldenGate

Sometimes GoldenGate EXTRACT capture long transactions from database and could be some B.O.F.H making DUMMY, if it’s the case, it’s a ‘UNWANTED’ transaction, and can skip it on ggsci:

(GUARANTEED DATA LOSS – db transaction skipped)

GGSCI (cloud-db) 60> send ext2 showtrans

Sending SHOWTRANS request to EXTRACT EXT2 ...

Oldest redo log files necessary to restart Extract are:

Redo Thread 1, Redo Log Sequence Number 20322, SCN 1661.3085726936 (7137026405592), RBA 597023248
XID:                  2049.13.3951869
Items:                1
Extract:              EXT2
Redo Thread:          1
Start Time:           2016-11-07:15:22:07
SCN:                  1661.3085726936 (7137026405592)
Redo Seq:             20322
Redo RBA:             597023248
Status:               Running
GGSCI (cloud-db) 62> send ext2 SKIPTRANS 2049.13.3951869  THREAD 1

Sending SKIPTRANS request to EXTRACT EXT2 ...

Are you sure you sure you want to skip transaction [XID 2049.13.3951869, Redo Thread 1, Start Time 2016-11-07:15:22:07, SCN 1661.3085726936 (7137026405592)]? (y/n)y

Sending SKIPTRANS request to EXTRACT EXT2 ...

Transaction [XID 2049.13.3951869, Redo Thread 1, Start Time 2016-11-07:15:22:07, SCN 1661.3085726936 (7137026405592)] skipped.

Check your applications and kill it in the database 🙂


Whats is the main characteristics/skills of a DBA? [part Osborne]

Another video post!
Almost 2 years ago I spent some time thinking about “Whats is the main characteristics/skills to be a DBA?”..
I wrote 2 posts about:
Whats is the main characteristics/skills of a DBA? [part 1]
Whats is the main characteristics/skills of a DBA? [part 2]

I found a great video with Kerry Osborne talking about what he searches in a guy (or girl) to be a great professional with Oracle… Very interesting:

I’d like to paraphrase Kerry to make my own ‘best moments summary’:
“A little bit of lazyness, a good cue and a lot of calm underpresure and keeping optmimistic.”

Have a nice week!

|grepora around the world!

This first #GrepOra year had 96 different nationalities access our blog website. It make me very proud to see too many flags in our logs (I’d like this in my passport log history).

I would like wish cheers grepora readers.

Parabéns! Feliz cumpleaños, Happy birthday, Alles gute zum Geburstag!! 🙂around-the-world-2015

IN 2015/2016 we accomplished spectacular goals.


If you are interested in our topics, please subscribe us.

We are planning interested things in 2017 .


Solving Simple Locks Through @lock2s and @killlocker

Hi guys!
This post is to show the most simple and most common kind of locks for objects and the simpliest way to solve it (killing the locker). 🙂
It’s so common that I scripted it. Take a look:

greporadb> @lock2s
 Inst        SID SERIAL# UserName  STATUS   LOGON_TIME          LMODE  REQUEST LC_ET TY       ID1        ID2       CTIME LOCKWAIT         EVENT                                                                                           
----- ---------- ------- --------- -------- ------------------- ------ ------- ----- -- ---------- ---------- ---------- ---------------- -----------------------------------                                                             
    1        354   18145 MATHEUS   ACTIVE   17/06/2016 14:25:19 X      NONE    4032  TX     393238     424490        715 00000000DB0DF900 enq: TX - row lock contention                                                                   
    1        169   25571 GREPORA   ACTIVE   17/06/2016 14:22:48 NONE   X        714  TX     393238     424490        714 00000000DB0D5ED8 enq: TX - row lock contention                                                                   
    1        252   63517 MATHEUS   INACTIVE 17/06/2016 14:17:49 X      NONE     714  TX     655363    1550347       4195                  SQL*Net message from client                                                                     
    1        846   65011 GREPORA   ACTIVE   17/06/2016 14:20:18 NONE   X       4075  TX     655363    1550347        715 00000000DB0ECB88 enq: TX - row lock contention                                                                   
    1        354   18145 GREPORA   ACTIVE   17/06/2016 14:25:19 NONE   S       4032  TX     655363    1550347        715 00000000DB0DF900 enq: TX - row lock contention                                                                   
5 rows selected.

You can identify the Locker by LMODE column. And all his Waiters by REQUEST column marked by not ‘NONE’, below each Locker…

So, let’s kill the lockers:

greporadb> @killlocker
alter system kill session '252,63517' immediate;                                                                                                                                                                                                                                                                                                                                                       
alter system kill session '354,18145' immediate;                                                                                                                                                                                                                                                                                                                                                       
2 rows selected.
greporadb> alter system kill session '252,63517' immediate;      
System altered.
greporadb> alter system kill session '354,18145' immediate;      
System altered.
greporadb> @lock2s
no rows selected

My magic scripts? Here it goes:

get lock2s.sql:

set lines 10000
set trimspool on
col serial# for 999999
col lc_et for 999999
col l1name for a50
col lmode for a6
col username for a25
select /*+ rule */
distinct b.inst_id,a.sid,b.serial#,b.username,b.status,
decode(lmode,1,'null',2,'RS',3,'RX',4,'S',5,'SRX',6,'X',0,'NONE',lmode) lmode,
decode(request,1,'null',2,'RS',3,'RX',4,'S',5,'SRX',6,'X',0,'NONE',request) request,
b.last_call_et LC_ET,a.type TY,a.id1,a.id2,
d.name||'.'||c.name l1name,a.ctime,b.lockwait,b.event
--distinct b.inst_id,a.sid,b.username,a.type,d.name||'.'||c.name l1name,a.id1,a.id2,
--decode(lmode,1,'null',2,'RS',3,'RX',4,'S',5,'SRX',6,'X',0,'NONE',lmode) lmode,
--decode(request,1,'null',2,'RS',3,'RX',4,'S',5,'SRX',6,'X',0,'NONE',request) request,a.ctime,b.lockwait,b.last_call_et
from gv$lock a, gv$session b,sys.obj$ c,sys.user$ d,(select a.id1 from gv$lock a where a.request  0) lock1
where a.id1    = c.OBJ# (+)
and a.sid      = b.sid
and c.owner#   = d.user# (+)
and a.inst_id=b.inst_id
and b.username is not null
and a.id1 = lock1.id1
order by id1,id2, lmode desc

get killlocker.sql:

select 'alter system kill session '''||sid||','||serial#||''' immediate;' 
from v$session where sid in (select BLOCKING_SESSION from v$session where BLOCKING_SESSION is not null);

Now you can put in your Linkedin you are a JR DBA… 😛


GrepOra Anniversary!

Hello guys,
This November GrepOra is completing 1 year!

It’s being a great adventure for all of us. In this first year we already shared 150 posts and had over 18k accesses!

Every month we keep having more access then the month before, and this is because of you. So thank you for reading, accessing and keeping us on track and motivated. 🙂

In October we had more than 3.500 accesses. We expect to keep sharing interesting subjects and grow even more for the next month and next year.


As way to celebrate that first year, we decided that, for the next Saturday on, I and all authors will make a post telling what GrepOra means to ourselves and what we learned in this past year.

And for you, thanks for your partnership and have a nice week! 😀