Daily Archives Tuesday, August 2008

Another Call for OpenSocial App Thoughts

Last week, I asked you what OpenSocial apps you’d like to see in the Connect (and eventually Mix) app directory.
Which seeded apps? Any apps you’d like to build or see built? And generally, are you stoked about OpenSocial apps?
Not much in the comments, but somehow, I think there’s interest out there.
OpenSocial is a big deal [...]

Amazing - Multitouch 3D Hologram

I just wanted to pop in and plug something that is absolutely incredible: a 3D holographic display with multitouch capabilities.
Don’t you love it when sci-fi comes to life? Imagine setting up your system architecture using technology like this!

State of the Database 2008: Vertica, Part 2

LewisC’s An Expert’s Guide To Oracle Technology

In the first part of this series, I talked about Vertica the company and how Vertica is licensed. This entry will discuss the architecture of the database and how it handles various issu

State of the Database 2008: Vertica, Part 2

LewisC’s An Expert’s Guide To Oracle Technology

In the first part of this series, I talked about Vertica the company and how Vertica is licensed. This entry will discuss the architecture of the database and how it handles various issu

IOUG RAC Attack!, Day 1 complete

Many of you have (hopefully) heard of the IOUG RAC Attack! event taking place yesterday and today in Chicago. We had a great first day yesterday with many great technical sessions and the first-day lab guinea pigs didn’t find many bugs or issues in completing the lab exercises and tests. Overall, the format is working [...]

Friendfeed is down…

I can’t get on to Friendfeed this morning.

I’m hoping this is going to start a rash of “Is the Friendfeed architecture flawed?” style posts like we always see about Twitter.
As everyone knows, the main reason to use social networks is to talk about how the architecture of the social networks are flawed. If all the [...]

Hanging Audit Vault Warehouse Refresh Job

I’ve been working with Audit Vault 10.2.3 on AIX recently and ran into a problem that someone else might one day. I decided to capture the output as best I can and blog about it later. (As I don’t have the same system available any more, the formatting might leave a bit to be desired and there are one or two little steps missing that I would liked to have shown but I don’t think they’re crucial.

It was just a Pre-Production system that we could play around with but I noticed that there were no recent audit trail entries when I tried some tests. On closer inspection, the most recent audit record was a couple of days old, so it looked like the job which inserts new audit records into the Audit Vault Data Warehouse wasn’t running properly. The first step was to connect to that database instance and check the status of the job.

SQL> select owner, job_name, elapsed_time from all_scheduler_running_jobs; 

OWNER                          JOB_NAME ------------------------------ ------------------------------ ELAPSED_TIME --------------------------------------------------------------------------- AVSYS                          REFRESH_WAREHOUSE_DATA +002 21:06:37.19

OK, so the Warehouse Refresh job has been running for a few days (2 days, 21 hours and 6 minutes). When I looked at the session for that job, it was waiting on "enq: PS - contention" which is (trumpet salute) a parallel execution wait event.

  1  select sid, username, last_call_et, event, wait_time, seconds_in_wait, state, blocking_session,             blocking_session_status   2  from v$session   3* where sid=201 SQL> / 

       SID USERNAME                       LAST_CALL_ET ---------- ------------------------------ ------------ EVENT                                                             WAIT_TIME ---------------------------------------------------------------- ---------- SECONDS_IN_WAIT STATE               BLOCKING_SESSION BLOCKING_SE --------------- ------------------- ---------------- -----------        201 AVSYS                                249575 enq: PS - contention                                                      0           48361 WAITING                          169 VALID

It’s a bit of a red herring because it’s really waiting on the PX slave, so the real event should be in that session 169.

SQL> c/201/169   3* where sid=169 SQL> / 

       SID USERNAME                       LAST_CALL_ET ---------- ------------------------------ ------------ EVENT                                                             WAIT_TIME ---------------------------------------------------------------- ---------- SECONDS_IN_WAIT STATE               BLOCKING_SESSION BLOCKING_SE --------------- ------------------- ---------------- -----------        169 AVSYS                                249250 cursor: pin X                                                             0               0 WAITING                              UNKNOWN

So, looking at that made me Google around and come up with this. Which implies that I should look at bug number 5908030 which is stated as a duplicate of 5476091. Both RDBMS bugs and both will be fixed in (gulp) 11.2.

The next job was to kill the currently running refresh job and restart it, particularly as this was just Pre-Prod and the lack of audit records in the Warehouse was holding up testing. I tried various approaches to stopping the job, running from the highest level more elegant approaches, down to brute force.

SQL> exec dbms_scheduler.stop_job('AVSYS.REFRESH_WAREHOUSE_DATA'); 
BEGIN dbms_scheduler.stop_job('AVSYS.REFRESH_WAREHOUSE_DATA'); END; 
* 
ERROR at line 1: 
ORA-27365: job has been notified to stop, but failed to do so immediately 
ORA-06512: at "SYS.DBMS_ISCHED", line 164 
ORA-06512: at "SYS.DBMS_SCHEDULER", line 483 
ORA-06512: at line 1 

Tried that a few times and decided it was probably well and truly stuck, particularly when the bugs were referring to systemstate dumps, so I tried killing the stuck slave, first

 1  select sid, username, last_call_et, event, wait_time, seconds_in_wait, state, blocking_session,            blocking_session_status  2  from v$session  3* where sid=201 
SQL> / 

       SID USERNAME                       LAST_CALL_ET ---------- ------------------------------ ------------ EVENT                                                             WAIT_TIME ---------------------------------------------------------------- ---------- SECONDS_IN_WAIT STATE               BLOCKING_SESSION BLOCKING_SE --------------- ------------------- ---------------- -----------        201 AVSYS                                251777 enq: PS - contention                                                      0           50563 WAITING                          169 VALID SQL> 3   3* where sid=201 SQL> c/201/169   3* where sid=169 SQL> / 

       SID USERNAME                       LAST_CALL_ET ---------- ------------------------------ ------------ EVENT                                                             WAIT_TIME ---------------------------------------------------------------- ---------- SECONDS_IN_WAIT STATE               BLOCKING_SESSION BLOCKING_SE --------------- ------------------- ---------------- -----------        169 AVSYS                                251446 cursor: pin X                                                             0               0 WAITING                              UNKNOWN 

SQL> select sid, serial# from v$session where sid=169;        SID    SERIAL# ---------- ----------        169       1585 

SQL> alter system kill session '169,1585'; alter system kill session '169,1585' * ERROR at line 1: ORA-00031: session marked for kill 

I waited and tried a few more times, but that slave really didn’t want to die …

SQL> l   1  select sid, username, last_call_et, event, wait_time, seconds_in_wait, state, blocking_session,             blocking_session_status   2  from v$session   3* where sid=169 SQL> / 

       SID USERNAME                       LAST_CALL_ET ---------- ------------------------------ ------------ EVENT                                                             WAIT_TIME ---------------------------------------------------------------- ---------- SECONDS_IN_WAIT STATE               BLOCKING_SESSION BLOCKING_SE --------------- ------------------- ---------------- -----------        169 AVSYS                                251725 cursor: pin X                                                             0               0 WAITING                              UNKNOWN 

So I tried try killing the process

SQL> select sid, serial#, paddr, osuser, process, status   2  from v$session where sid=169; 

       SID    SERIAL# PADDR            OSUSER ---------- ---------- ---------------- ------------------------------ PROCESS      STATUS ------------ --------        169       1585 070000005A383348 oracle 962750       KILLED 

SQL> !ps -ef|grep 962750   oracle  962750       1   1   Jul 13      - 11:49 ora_p006_AV01TEST   oracle 1519634 1757348   2 12:11:27  pts/1  0:00 grep 962750 SQL> !kill -9 962750 SQL> !ps -ef|grep 962750   oracle 1519638 1757348   1 12:11:38  pts/1  0:00 grep 962750 

Now it’s gone, see if parent session for refresh job is still there

  1  select sid, username, last_call_et, event, wait_time, seconds_in_wait, state, blocking_session,             blocking_session_status   2  from v$session   3* where sid=201 SQL> / 

no rows selected 

No, so the job should be gone too

SQL> select * from all_scheduler_running_jobs; 

OWNER                          JOB_NAME ------------------------------ ------------------------------ JOB_SUBNAME                    SESSION_ID SLAVE_PROCESS_ID SLAVE_OS_PRO ------------------------------ ---------- ---------------- ------------ RUNNING_INSTANCE RESOURCE_CONSUMER_GROUP ---------------- -------------------------------- ELAPSED_TIME --------------------------------------------------------------------------- CPU_USED --------------------------------------------------------------------------- AVSYS                          REFRESH_WAREHOUSE_DATA                                       122               19 692392                1 +000 00:01:25.48 +000 00:00:18.38 

Well, it had restarted and been running for a minute or so. The audit trail entries started to appear in the warehouse, anyway. As I won’t be working with this again for a while, I’m counting on colleagues to keep me posted about whether this keeps happening!


Continue reading “Hanging Audit Vault Warehouse Refresh Job”

The 1st OOW08 Unconference session! - An ADF Methodology for the masses

2008 sees Oracle continue to expand their Oracle Open World offerings, with a greater participation from delegates as well as the usual “speaker mob”. Last year Oracle and specifically OTN offered the Unconference for the first time, a great chance for anybody “off-the-streets” to sign up and present on any topic they felt interesting.

I’m excited to announce that the OOW08 Unconference is up and running and the ADF Methodology is the first cab out of the ranks.

As many of us know, a software development methodology is designed to assist experienced and uninitiated technology practicionist standardise their approach to software design & development. A methodology can help highlight common decision points, outline best practices, promote code reuse, and propose standard deliverables among many other things.

The goal of the ADF Development Methodology is to propose just such a methodology for JDeveloper Application Development Framework (ADF) based projects. With the experience of real-world experts, including Oracle ACEs and Oracle staff, we’d like you to join us to put such a methodology together.

Obviously a methodology is a huge undertaking. The intention of the OOW08 Unconference session is not to define a complete methodology at this time, but begin the process of constructing the methodology, to be filled in and expanded upon at a later date. All proceeds from the Unconference session will be placed on the Oracle Wiki allowing all to access the outcomes for their own use.

If you’re interested in attending, it would be great if you could register your interest to assist us in planning please.

And as Shay Shmeltzer recently blogged, we’ve also started a Google Group to discuss the methodology before and after the event. Feel free to check it out and join, all participants welcome.

Thanks to Justin Kestelyn and the OTN team for their assistance behind the scenes, and to Shay for his blog post.