Feed aggregator

APEX OOW 2013 Schedule and Developer Challenge

David Peake - Tue, 2013-09-17 15:52
For all of you attending Oracle OpenWorld 2013 then you should check out http://apex.oracle.com/oow.
This application will run on both desktop and mobile*
{* The mobile application requires you to sign with your OTN credentials. The desktop application only requires logging in when you enter the challenge}

OTN APEX Developer Challenge

This year, in conjunction with OTN, we are proud to be running a developer challenge.
Entrants will be required to build a mobile application using Application Express.

The challenge starts at 3:00 pm PDT on Monday of OOW in the OTN Lounge (Moscone South). Official Rules and specifics of the challenge will be released at that time and entrants will be allowed to sign-up for the challenge. Entrants have until Tuesday 7:00 pm PDT to complete their submission. Then at 3:00 pm on Wednesday the winners will be announced in the OTN Lounge.

You could win one of three Amazon gift cards!
Simply go to http://apex.oracle.com/oow to learn more (and to enter once the challenge begins).

Last year OTN and Oracle Social Network ran a similar type challenge. Top honors went to two people well known in the APEX community, Martin Giffy D'Souza and Dimitri Gielis.

OOW Calendar and Schedule

This same site also lists all of the Application Express sessions, and related sessions, you may have overlooked in the official OOW Content Catalog. As with the last several years there will also be an APEX Meetup which of course is listed in the schedule complete with the address.

Oracle Open World

Bex Huff - Tue, 2013-09-17 12:09

UPDATE: Oracle Open World is almost upon us! I will be giving 3 talks this year... there was some confusion about Sunday, but this schedule is now final:

UGF9799 Displaying Enterprise Content in Oracle WebCenter Sites
Sunday, 9/22, 8:00 - 9:00 @ Moscone West - 3018

With the latest version of Oracle WebCenter, you can easily surface documents and Web content stored in Oracle WebCenter Content in Oracle WebCenter Sites. There are many integration options, from single images and rendered HTML to an entire Website. Attend this session to learn how to use them and which option is right for you.

UGF9900 - The Top 10 Web App Vulnerabilities and Securing Them with Oracle ADF
Sunday 9/22, 11:45 - 12:45 @ Moscone West room 2003

Cross-site scripting, SQL injection, and request forgery are just some of the major vulnerabilities every Web application developer needs to know about. Attend this session to learn about the Open Web Application Security Project (OWASP) Top 10 security vulnerabilities and how to avoid them by using Oracle Application Development Framework (Oracle ADF) and other Oracle technologies.

CON6876 - Displaying Enterprise Content in Oracle WebCenter Sites
Tuesday 9/24, 15:45 - 16:45 @ Moscone West room 2012

An encore performance of my Sunday talk of the same name...

The first and third ones I will be presenting with Tony Field from Function1, and giving a demo of the new WebCenter Sites/Content integration that was recently released with WebCenter I'm very excited about the release, and will be blogging my overview of it after Open World... when all the dust settles!

read more

Categories: Fusion Middleware


Chet Justice - Mon, 2013-09-16 21:41
I'm going to be busy.

Here's my list of events:

  • Saturday
    • I arrive in San Francisco on Saturday around 1 PM. If you're arriving at around the same time, let me know, we can share a cab into the city.
    • Beer. After arriving I plan on finding a very cold Pliny the Elder. Or three.
    • ODTUG Dinner. I'm crashing this one. It's Board members only to my knowledge and until someone says I cannot go (especially if fueled by more than one Pliny the Elder), I'm going.
  • Sunday
    • Open World Bridge Run. Not sure if I can make it, but I'm going to try. I'm presenting at 10:15 so it will be a tough decision.
    • 10:30 to 11:30. Thinking Clearly About Performance. Somehow I managed to con Cary Millsap into a duet of sorts. I have him convinced it is the other way around. Either way, it should be fun (I am not nervous!).
    • 2:15 to 4:30, Software Development in the Oracle Ecosystem, Part I and Part II. I'm moderating the aforementioned Mr. Millsap, Sten Vesterli, Markus Eisele and Jerry Brenner (My first boss was scheduled to speak as well, but he had a last minute change of plans, jerk).
    • Oracle ACE Dinner. Evening.
    • Post Oracle ACE Dinner drinks...wherever the night takes me.
  • Monday
    • Oracle OpenWorld - San Francisco Bay Swim - Part II, 7:30 AM. We had almost 20 last year, 33 have signed up (on the page anyway) this year. Come along. Cool t-shirts too, sponsored by Oracle Technology Network and designed by Lauren Prezby.

      Let's not forget the swim caps! Sponsored by the encouragable Bjoern Rost of The portrix group (he's like me, afraid of capital letters) (designed by Lauren Prezby).

    • Oaktable World. You'll most likely catch me here after the swim and before the...
    • Wear Your ORACLENERD Gear Day, 3 PM to 4:30 PM. We'll be taking a group photo around 4:30 PM. If you can't make it for that, come by when you can and get a picture with me. You know I like that sh...stuff. You don't have a shirt/hat/sticker/random-item? OTN Lounge is giving away one hundred cool red t-shirts (Lauren Prezby, again).

      This picture is coinciding with the APEX Developer Challenge which goes from 3 - 7:30 that afternoon/evening. I might even give it a go (fueled, hopefully, by Pliny the Elder).
  • Tuesday
Somewhere in there I'll get a chance to breathe. I'll also attend some sessions, hopefully.
Categories: BI & Warehousing

RAC Attack at Oracle Open World

Hans Forbrich - Sun, 2013-09-15 20:53
This year, one of my main Open World activities will be to participate as a RAC Attack Ninja.

RAC Attack is a program initiated by Jeremy Schneider, Dan Norris and Parto Jalili at the IOUG Collaborate 2008 conference as a result of a classroom full of unattended PCs (long story, great ending)

Quoting from the RAC Attack web site at http://racattack.org :

"RAC Attack is a free curriculum and platform for hands-on learning labs related to Oracle RAC (cluster database). We believe that the best way to learn about RAC is with a lot of hands-on experience."

This year the RAC Attack team - we call ourselves RAC Attack Ninjas - will be hosting a campground in the OTN Lounge on Tuesday and Wednesday from 10-2.

People who have their own laptop can download the Oracle VirtualBox (http://virtualbox.org), Oracle Linux (https://edelivery.oracle.com/linux) and Oracle Database 12c for Linux (http://download.oracle.com) and we will help them install Oracle Database 12c and a 2-node RAC cluster.

This year, Exit Certified (Oracle University partner who provides a lot of RAC training) and DELL (Oracle partner who sells a lot of hardware used with RAC) have sponsored some equipment for people who want to attend, but don't want to use their own laptops.

If you are interested in learning more about RAC, maybe installing it on your laptop, then come along to the RAC Attack sessions during OOW. Get more details from the Facebook page for each of the two days.
There is also a Google+ page.

If you are coming to install RAC, you might want to read through this.

Categories: DBA Blogs

Countdown to Oracle Open World

Hans Forbrich - Sun, 2013-09-15 20:38
Oracle Open World - the annual festival during which Oracle employees, pundits, reporters, supporters, and customers try to overwhelm San Francisco with bodies, information, and just general fun - is about to begin. 

My itinerary, generally speaking (as I usually allow a lot of flexibility):

1) I'm already in San Francisco - teaching the Oracle University course on OracleVM until Wednesday. 

On Wednesday evening, I'll be heading to the Sofitel where many of the ACE Directors meet up before the ACED Briefing.

That's when we get to see Vikki and Lillian, the wonderful ladies who herd the cats known as Oracle ACEs. 

2) ACE Director Briefing, Thursday and Friday

In the years since I was fortunate enough to be selected a ACE Director, I have tried to attend all the ACE Director Briefings - presentations by Oracle management and product management to let us know (under NDA) what is coming up.  Of course, with the NDA, we are not allowed to talk about anything until Larry spills the beans, but at least we will have had a chance to mull things over before the beans do get spilled. 

Since Tim Hall can not be at the briefing this year, a number of us ACEDs will be blogging extra, trying to keep him up to date without violating the NDA. 

3) RAC Attack pre-meeting on Sunday, and possibly another on Saturday.

4) Kickoff on Sunday

Things officially start on Sunday with the various user group and specialty sessions, which inevitablyt have a great amount of info, followed by The Kickoff.  If things hold true to previous years, Larry will throw the gauntlet and give us a glimpse of what new announcements will be made and why we should listen.

5) ACE Dinner on Sunday

One of the ACE highlights at OOW it the ACE Dinner on Sunday evening.  I enjoy catching up with my fellow ACEs from around the world, and meeting the new faces who joined the ranks.

6) Monday-Thursday is going to be filled to the brim with all sorts of activities, traveling to and fro, and blogging about it.

7) RAC Attack

I'll be at RAC Attack both Tuesday and Wednesday.  Facebook pages at

8) Enterprise Manager CAB on Friday

I've been very fortunate to be selected as a Customer Advisory Board attendee for the Oracle Enterprise Manager Cloud Control.  This is an opportunity to provide feedback to the inner circle of the product team, as well as to learn about future directions of products.

Most products, and even major features, have CABs.  I encourage all customers to consider getting involved.

Categories: DBA Blogs

Call for papers – Turkish Hadoop Users Meeting

H.Tonguç Yılmaz - Sun, 2013-09-15 07:08
This December we will be meeting, the call for papers period will be finishing at the end of this month, you can follow the meeting details from the LinkedIn group.  

Tightening Security with SELECT ANY DICTIONARY in Oracle 12c

alt.oracle - Thu, 2013-09-12 08:37
Developers and users sometimes request the SELECT ANY DICTIONARY system privilege to enable them to view various data dictionary tables.  This may be fine for querying DBA_TABLES, etc, but the Oracle data dictionary contains a LOT of information.  Some of the views/tables are compromising from a security standpoint.  One of Oracle’s legendary gaffs in version 9i displayed cleartext passwords for database links in SYS.LINK$.  Yikes.  In version 12c, Oracle has locked down this type of access even further.  Here’s an example from version 11g.

SQL> create user altdotoracle identified by altdotoracle;

User created.

SQL> grant create session, select any dictionary to altdotoracle;

Grant succeeded.

SQL> conn altdotoracle/altdotoracle

SQL> select name, password from sys.user$ where password is not null;

NAME                           PASSWORD
------------------------------ ------------------------------
SYS                            AAJ125C9483Q017
SYSTEM                         W45825DFFFD37SE
OUTLN                          WW24Z1N6A8ED2E1
ALTDOTORACLE                   73NH15SG3Q2364W

Armed with these password hashes, password cracking tools can be used to compare these values to common dictionary passwords.  When a match is found on a non-complex password, your password is cracked.  (Don’t wear yourself out trying to crack the hashes above, I obfuscated them)  SELECT ANY DICTIONARY no longer allows access to dictionary objects like USER$, ENC$ and DEFAULT_PWD$. Let’s try it.

Connected to:
Oracle Database 12c Enterprise Edition Release - 64bit Production
With the Partitioning, OLAP, Advanced Analytics and Real Application Testing options

SQL> create user altdotoracle identified by altdotoracle;

User created.

SQL> grant create session, select any dictionary to altdotoracle;

Grant succeeded.

SQL> conn altdotoracle/altdotoracle

SQL> select name, password from sys.user$ where password is not null;
select name, password from sys.user$ where password is not null
ERROR at line 1:
ORA-01031: insufficient privileges

SQL> select * from sys.enc$;
select * from sys.enc$
ERROR at line 1:
ORA-01031: insufficient privileges

SQL> select * from sys.default_pwd$;
select * from sys.default_pwd$
ERROR at line 1:
ORA-01031: insufficient privileges
Categories: DBA Blogs

Kscope13 Top Speaker Award

Tim Tow - Thu, 2013-09-12 07:36
I thought I would post a quick picture of the award I earned at Kscope13 as one of the Top 5 Speakers at Kscope13 for my presentation entitled "Introducing the Outline Extractor NG (Next Generation)".   The Next Generation Outline Extractor is a complete rewrite of the popular Outline Extractor.  The original extractor was written in VB which hasn't been supported by Microsoft for many years; the new extractor is written in Java.  You can download my slides, and the next generation outline extractor, from our website at http://www.appliedolap.com/downloads.

I was honored to earn the award which is based on some secret formula combining feedback scores from attendees and number of attendees.  I did have a couple of hundred or so attendees at my presentation which, in my opinion, speaks to the popularity of the outline extractor and not to the popularity of me having anything to say... <BigGrin>

Here is a picture of the nice award sent by ODTUG.

Categories: BI & Warehousing

ORA-02248 - brilliant

Frank van Bortel - Thu, 2013-09-12 06:09
Brilliant explanation, RTFM made polite. [oracle@local ~]$ oerr ora 2248 02248, 00000, "invalid option for ALTER SESSION" // *Cause: Obvious. // *Action: see SQL Language Manual for legal options. Frankhttp://www.blogger.com/profile/07830428804236732019noreply@blogger.com0

Oracle Open World 2013 - attending & presenting

Syed Jaffar - Thu, 2013-09-12 02:36
Most of us knew Oracle Open World 2013 event is fast approaching and the event will kick start in a few days time. I haven't talked much about the OOW13 event of late, therefore, I am sharing my plans over here.

  • attending Oracle ACE Directors briefing scheduled on 19-20 Sept 2013 at Oracle HQ
  • participating and speaking in the following two Expert panel sessions 
      • Session ID: UGF9774
        Session Title: Oracle RAC SIG Meeting: Expert Panel
        Venue / Room: Moscone West - 3004
        Date and Time: 9/22/13, 15:30 - 16:30
If you are coming to OOW13, you are most welcome and I will be glad to see you in my sessions.

I can't guarantee though I will try to bring all authors of 'Expert Oracle RAC 12c'  book together for an unofficial book singing event at the book shop.

Stay tuned for more updates!!

Good luck and look forward seeing you at OOW13.


Smart City

Anshu Sharma - Wed, 2013-09-11 19:42

Oracle has been one of the leading providers of framework and technology to make our cities smarter. This picture shows some of the thinking around this. It is interesting to note that Internet of Things has the potential to make our cities "smarter" as is evident from projects our partners are engaged in. If I look at major constituents described in this picture and pick where "connected devices" or "embedded sensors" are creating most value, I will pick Healthcare, Public Safety, Transportation, and Utilities. The value add is both in modernizing the city infrastructure and streamlining city operations. Let us look at the possibilities based on some successful implementations.

1) Healthcare - Many patients who require constant health monitoring prefer the comfort of at-home health care monitoring to costly and inconvenient hospital care. This has huge potential to take out cost from our healthcare systems. The main difficulty with home health care is enabling patients to provide accurate and timely data to health care professionals. This is being changed through Java based Gateways like Digi/Freescale Home Health Hub (HHH) platform. The value Java Embedded adds here is to provide a platform to seamlessly connect with ever increasing healthcare devices like blood pressure devices, pulse oximeters etc. and APIs to create a display interface to monitor connected devices and see results from the gateway itself.

2) Public Safety - The successful use of surveillance cameras in the recent past to identify suspects after an incident bolsters the case of using these at many locations. Low priced sensors can be put at more locations. However the challenge remains to sift through overwhelming amount of data and identify “events” of interest. This becomes more difficult if this has to happen real time to prevent incidents rather than analyze afterwards. One successful use of Real Time Event processing which has been implemented is in Emergency Response systems. During national disasters or emergencies, EADS products play key roles from the opening moments through every stage of the response. EADS used Oracle Event Processing along with other technologies in their Emergency Response System to prevent resources from entering an exclusion zone to limit damage.

3) Transportation – Logistics companies like UPS have long realized the benefits of Telematics to optimally plan the route of their vehicles. They are now also using sensor data from vehicles to perform maintenance on each vehicle only when required, as opposed to on a set schedule. It is about time that our cash strapped Public Transportations departments start realizing some of the same benefits to make real time changes to schedules based on actual demand. This has started happening in many counties. Italian Public Transportation company COTRAL implemented a monitoring system to plan and make changes to routes of their buses based on real time information being gathered using a Telematic control Unit on the Buses. Oracle products were used to do spatial analysis and visualization of data coming in from the buses in context with other route planning data.

Another area where Transportation is impacted is Traffic Management. San Francisco Municipal Transportation Agency has an ambitious project to manage demand and supply of parking spots in city of San Francisco towards the goal of reducing unnecessary traffic to find parking spots. One important way to achieve this was to use parking sensor data to provide availability information to drivers on mobile application. The sensor data is also used for determining pricing based on real time demand.

4) Utilities – IoT can impact Utilities (Electricity, Gas, Water, Waste management) in two main areas - (i) Smart Metering that enables utilities to remotely collect customers meter data at frequent intervals (~15 mins) has the potential to become smarter. (ii) SCADA (Supervisory Control & Data Acquisition) Systems can increasingly automate regular use and repair of utilities operations network. Let’s examine this in more detail in a future post.

The Network becomes the Computer...

Andries Hanekom - Tue, 2013-09-10 05:21
The Network becomes the Computer...It's an idea that I have never really been able to express in such a simplistic and elegant way as what was achieved by the technical writer(s) of the Glassfish Open Message Queue Release 5.0 Technical Overview guide:

The easiest way to integrate heterogeneous components is not to recreate them as homogeneous elements but to provide a layer that allows them to communicate despite their differences. This layer, called middleware, allows software components (applications, enterprise java beans, servlets, and other components) that have been developed independently and that run on different networked platforms to interact with one another. It is when this interaction is possible that the network can become the computer.

The idea that the network and application services becomes the equivalent of the processors integrated circuit and processing units. Continuing this abstraction to it's epoch, the internet, the power of Service Orientated Design becomes self evident.

Reference: Message Queue Technical Overview

Inverted tables: an alternative to relational structures

OraFAQ Articles - Sun, 2013-09-08 03:52

The inverted table format can deliver fast and flexible query capabilities, but is not widely used. ADABAS is probably the most successful implementation, but how often do you see that nowadays? Following is a description of how to implement inverted structures within a relational database. All code run on Oracle Database 12c, release

Consider this table and a few rows, that describe the contents of my larder:

create table food(id number,capacity varchar2(10),container varchar2(10),item varchar2(10));
insert into food values(1,'large','bag','potatoes');
insert into food values(2,'small','box','carrots');
insert into food values(3,'medium','tin','peas');
insert into food values(4,'large','box','potatoes');
insert into food values(5,'small','tin','carrots');
insert into food values(6,'medium','bag','peas');
insert into food values(7,'large','tin','potatoes');
insert into food values(8,'small','bag','carrots');
insert into food values(9,'medium','box','peas');

The queries I run against the table might be "how many large boxes have I?" or "give me all the potatoes, I don't care about how they are packed". The idea is that I do not know in advance what columns I will be using in my predicate: it could be any combination. This is a common issue in a data warehouse.
So how do I index the table to satisfy any possible query? Two obvious possibilities:
First, build an index on each column, and the optimizer can perform an index_combine operation on whatever columns happen to be listed in the predicate. But that means indexing every column - and the table might have hundreds of columns. No way can I do that.
Second, build a concatenated index across all the columns: in effect, use an IOT. That will give me range scan access if any of the predicated columns are in the leading edge of the index key followed by filtering on the rest of the predicate. Or if the predicate does not include the leading column(s), I can get skip scan access and filter. But this is pretty useless, too: there will be wildly divergent performance depending on the predicate.
The answer is to invert the table:
create table inverted(colname varchar2(10),colvalue varchar2(10),id number);
insert into inverted select 'capacity',capacity,id from food;
insert into inverted select 'container',container,id from food;
insert into inverted select 'item',item,id from food;

Now just one index on each table can satisfy all queries:
create index food_i on food(id);
create index inverted_i on inverted(colname,colvalue);

To retrieve all the large boxes:
orclz> set autotrace on explain
orclz> select * from food where id in
  2  (select id from inverted where colname='capacity' and colvalue='large'
  3  intersect
  4  select id from inverted where colname='container' and colvalue='box');

---------- ---------- ---------- ----------
         4 large      box        potatoes

Execution Plan
Plan hash value: 1945359172

| Id  | Operation                                | Name       | Rows  | Bytes | C
|   0 | SELECT STATEMENT                         |            |     3 |   141 |
|   1 |  MERGE JOIN                              |            |     3 |   141 |
|   2 |   TABLE ACCESS BY INDEX ROWID            | FOOD       |     9 |   306 |
|   3 |    INDEX FULL SCAN                       | FOOD_I     |     9 |       |
|*  4 |   SORT JOIN                              |            |     3 |    39 |
|   5 |    VIEW                                  | VW_NSO_1   |     3 |    39 |
|   6 |     INTERSECTION                         |            |       |       |
|   7 |      SORT UNIQUE                         |            |     3 |    81 |
|   8 |       TABLE ACCESS BY INDEX ROWID BATCHED| INVERTED   |     3 |    81 |
|*  9 |        INDEX RANGE SCAN                  | INVERTED_I |     3 |       |
|  10 |      SORT UNIQUE                         |            |     3 |    81 |
|  11 |       TABLE ACCESS BY INDEX ROWID BATCHED| INVERTED   |     3 |    81 |
|* 12 |        INDEX RANGE SCAN                  | INVERTED_I |     3 |       |

Predicate Information (identified by operation id):

   4 - access("ID"="ID")
   9 - access("COLNAME"='capacity' AND "COLVALUE"='large')
  12 - access("COLNAME"='container' AND "COLVALUE"='box')

   - dynamic statistics used: dynamic sampling (level=2)


Or all the potatoes:
orclz> select * from food where id in
  2  (select id from inverted where colname='item' and colvalue='potatoes');

---------- ---------- ---------- ----------
         1 large      bag        potatoes
         4 large      box        potatoes
         7 large      tin        potatoes

Execution Plan
Plan hash value: 762525239

| Id  | Operation                              | Name       | Rows  | Bytes | Cos
|   0 | SELECT STATEMENT                       |            |     3 |   183 |
|   1 |  NESTED LOOPS                          |            |       |       |
|   2 |   NESTED LOOPS                         |            |     3 |   183 |
|   3 |    SORT UNIQUE                         |            |     3 |    81 |
|   4 |     TABLE ACCESS BY INDEX ROWID BATCHED| INVERTED   |     3 |    81 |
|*  5 |      INDEX RANGE SCAN                  | INVERTED_I |     3 |       |
|*  6 |    INDEX RANGE SCAN                    | FOOD_I     |     1 |       |
|   7 |   TABLE ACCESS BY INDEX ROWID          | FOOD       |     1 |    34 |

Predicate Information (identified by operation id):

   5 - access("COLNAME"='item' AND "COLVALUE"='potatoes')
   6 - access("ID"="ID")

   - dynamic statistics used: dynamic sampling (level=2)
   - this is an adaptive plan


Of course, consideration needs to be given to handling more complex boolean expressions; maintaining the inversion is going to take resources; and a query generator has to construct the inversion code and re-write the queries. But In principle, this structure can deliver indexed access for unpredictable predicates of any number of any columns, with no separate filtering operation. Can you do that with a normalized star schema? I don't think so.
I hope this little thought experiment has stimulated the little grey cells, and made the point that relational structures are not always optimal for all problems.
John Watson
Oracle Certified Master DBA


Oracle Open World - coming up

Hans Forbrich - Wed, 2013-09-04 14:39
Just in case you didn't know ;-)

Oracle Open World, and Oracle Java One are just around the corner.  For more information, look at http://www.oracle.com/index.html

I'll be available at the RAC Attack on both Tuesday and Wednesday.  Come on over, with your own laptop (or use one of ours) and install a complete, operational, RAC sandbox.  http://en.wikibooks.org/wiki/RAC_Attack_-_Oracle_Cluster_Database_at_Home
Categories: DBA Blogs

OWB - Documentation Updates for 12c database

Antonio Romero - Wed, 2013-09-04 11:01
The OWB documentation is updated on OTN with information on operating with 12c databases including install/upgrade and pluggable databases. It's worth starting with the release notes for further information. You will need either plus CP2 (CP3 advised) or of OWB to operate with 12c database.

OWB - Documentation Updates for 12c database

Antonio Romero - Wed, 2013-09-04 11:01
The OWB documentation is updated on OTN with information on operating with 12c databases including install/upgrade and pluggable databases. It's worth starting with the release notes for further information. You will need either plus CP2 (CP3 advised) or of OWB to operate with 12c database.

How to disable Firefox mixed content blocking (in one simple graphic)

Mike Moore - Tue, 2013-09-03 14:57
Pertains to Firefox 23.0.1 and maybe later.
I was surprised this information was so hard to find, so hopefully this will make it easier for you.

At the company I work for we have an HTTP iframe inside an HTTPS web page. The new version of Firefox objects to this mixed content and forces the user to respond by clicking on a little shield icon in order to allow the mixed content. However Firefox does not "remember" this override, nor does it allow a "white list" of domains where you don't care about mixed content. You can however disable the checking entirely by changing these options shown in the graphic above. PLEASE do not do this unless you completely understand the security implications.

If this is what you were looking for, please leave a comment, just say Hi or something.

Exceptions, Business as Usual?

Jan Kettenis - Mon, 2013-09-02 14:47
In this article I describe some aspects considering using BPMN exceptions to handle business exceptions. The conclusion is that you should carefully consider if doing so is appropriate, or that using a combination of a gateway and End event would be a better option.

Bruce Silver writes in his book BPM Method & Style that he used to use BPMN Exception end events only for technical exceptions. For business exceptions he used to use a combination of a gateway and an end state test.

When I first read that I found that to be a peculiar remark, as - coming from a Oracle BPM 10g direction - I used them for business exceptions all the time! Moreover, as most technical exceptions could be caught and managed in BPL (the 10g, Java-like scripting language) I even adviced people to to use Exceptions for technical exceptions only if unavoidable with the argument that the business audience is not interested in technical exceptions, and that therefore they should be left out of the model if possible. After all, wouldn't you agree that the first model (in which exceptions are used for business exceptions) looks simpler that the second one (which is more the gateway/end-state type of solution)?

Using BPMN Error end event
Using gateways
The model presented is inspired by a business process model with a similar complexity, but then bigger. From a functional point of view both models do the same. Examples like this may explain why later on Bruce Silver changed his mind based on feedback from his students.

With Oracle BPM 10g it was easy to write some generic (technical) business exception handling process with a retry option (using the BACK action). With this retry you could simply return to the happy path even when an Exception end event had occurred.

The first time I started to have second thoughts about using Exceptions for business exceptions was when I found that with 11g this back functionality is no longer possible (although it is supposed to come back in 12c in some way or another).

The second second thoughts came when I realized that throwing an Exception and catch that in an Event Sub-process, also has some other peculiarities, as I will explain using the model below:

In this sample model there is an Event Sub-process with a non-interrupting Get Status Message start event, and a Return Status Message end event. This exposes a getStatus services operation that can be called by some 3rd party to find out where the process is, and for that returns a status that is set by the Set Rejected Status and Set Reconsidering Status Script activities. When the Rejected Error event is thrown this is caught by the Event Sub-process with the Rejection Error start event. An Event Sub-process that starts with an Error start event, is interrupting by definition.

Patterns like this (where some operation or service is exposed to interact with a running instance) are very common in my practice. As a matter of fact, as far as I recall more than half of the models I created have a similar Event Sub-process, either to get or to set some process data on the run.

The issue that I found is that when the order is rejected without the option to reconsider - meaning that the Rejected Error event is thrown, the normal flow of the process is aborted (because of the interrupting nature of Error events). As a result, when the process is in the Confirm activity, and the getStatus operation is called, it won't react because that operation it is tied to the normal flow, which is no longer active. In contrast, when the process is in the Reconsider this is not a problem.

It is unclear to me what the BPMN specifications say about this. I can imagine that this behavior is in line with the specifications, or that the specifications are not explicit about what that behavior should be. In any case, this is how it works with 11g, which made me realize that throwing Error end events in case of business exceptions has some drawbacks that might make that modeling by using a gateway plus end state is not so peculiar after all.

Oracle Linux 6 UEK3 beta

Wim Coekaerts - Mon, 2013-09-02 13:14
Last week we published UEK3 beta on http://public-yum.oracle.com.

It is very easy to get started with this and play around with the new features. Just takes a few steps :

  • Install Oracle Linux 6 (preferrably the latest update) on a system or in a VM
  • Add the beta repository file in /etc/yum.repos.d
  • Enable the beta channel
  • Reboot into the new kernel
  • Add updated packages like lxc tools and dtrace
  • Oracle Linux is freely downloadable from http://edelivery.oracle.com/linux. Oracle Linux is free to use on as many systems as you want, is freely re-distributable without changing the CD/ISO content (so including our cute penguin), provides free security errata and bugfix errata updates. You only need to pay for a support subscription for those systems that you want/need support for, not for other systems. This allows our customers/users to run the exact same software on test and dev systems as well as production systems without having to maintain potentially two kinds of repositories. All systems can run the exact same software all the time.

    The free yum repository for security and bugfix errata is at http://public-yum.oracle.com. This site also contains a few other repositories :

  • Playground channel (a yum repository where we publish the latest kernels as released on kernel.org. We take the mainline tree and build it into RPMs that can easily be installed on Oracle Linux (Oracle Linux 6 and x86_64 specifically).
  • Beta channel (a yum repository where we publish new early versions of UEK along with corresponding packages that need to be updated along with it.
  • Now, back to UEK3 beta. Just a few steps are needed to get started.

    I will assume you have already installed Oracle Linux 6 (update 4) on a system and it is configured to use public-yum as the repository.

    First download and enable the beta repository.

    # cd /etc/yum.repos.d/
    # wget http://public-yum.oracle.com/beta/public-yum-ol6-beta.repo
    # sed -i s/enabled=0/enabled=1/g public-yum-ol6-beta.repo 

    You don't have to do sed you can just edit (vi/emacs) the repo file and manually set it to 1 (enable). Now you can just run yum update

    # yum update

    This will install UEK3 (3.8.13-13) and it will update any relevant packages that are required to be on a later version as well. At this point you should reboot into UEK3.

    New features introduced in UEK3 are listed in our release notes. There are tons of detailed improvements in the kernel since UEK2 (3.0 based). Kernelnewbies is an awesome site that keeps a nice list of changes for each version. We will add more detail to our release notes over time but for those that want to browse through all the changes, check it out.

  • http://kernelnewbies.org/Linux_3.1
  • http://kernelnewbies.org/Linux_3.2
  • http://kernelnewbies.org/Linux_3.3
  • http://kernelnewbies.org/Linux_3.4
  • http://kernelnewbies.org/Linux_3.5
  • http://kernelnewbies.org/Linux_3.6
  • http://kernelnewbies.org/Linux_3.7
  • http://kernelnewbies.org/Linux_3.8
  • To try out dtrace, you need to install the dtrace packages. We introduced USDT in UEK3's version of dtrace, there is some information in the release notes about the changes.

    # yum install dtrace-utils

    To try out lxc, you need to install the lxc packages. lxc is capable of using Oracle VM Oracle Linux templates as a base image to create a container.

    # yum install lxc


    Three impossibilities with partitioned indexes

    OraFAQ Articles - Sun, 2013-09-01 11:22

    There are three restrictions on indexing and partitioning: a unique index cannot be local non-prefixed; a global non-prefixed index is not possible; a bitmap index cannot be global. Why these limitations? I suspect that they are there to prevent us from doing something idiotic.

    This is the table used for all examples that follow:

           ENAME VARCHAR2(10),
           JOB VARCHAR2(9),
           MGR NUMBER(4),
           HIREDATE DATE,
           SAL NUMBER(7,2),
           COMM NUMBER(7,2),
           DEPTNO NUMBER(2) )

    the usual EMP table, with a partitioning clause appended. It is of course a contrived example. Perhaps I am recruiting so many employees concurrently that a non-partitioned table has problems with buffer contention that can be solved only with hash partitioning.

    Why can't I have a local non-prefixed unique index?
    A local non-unique index is no problem, but unique is not possible:

    orclz> create index enamei on emp(ename) local;
    Index created.
    orclz> drop index enamei;
    Index dropped.
    orclz> create unique index enamei on emp(ename) local;
    create unique index enamei on emp(ename) local
    ERROR at line 1:
    ORA-14039: partitioning columns must form a subset of key columns of a UNIQUE index

    You cannot get a around the problem by separating the index from the constraint (which is always good practice):

    orclz> create index enamei on emp(ename) local;
    Index created.
    orclz> alter table emp add constraint euk unique (ename);
    alter table emp add constraint euk unique (ename)
    ERROR at line 1:
    ORA-01408: such column list already indexed

    So what is the issue? Clearly it is not a technical limitation. But if it were possible, consder the implications for performance. When inserting a row, a unique index (or a non-unique index enforcing a unique constraint) must be searched to see if the key value already exists. For my little four partition table, that would mean four index searches: one of each local index partition. Well, OK. But what if the table were range partitioned into a thousand partitions? Then every insert would have to make a thousand index lookups. This would be unbelievably slow. By restricting unique indexes to global or local prefixed, Uncle Oracle is ensuring that we cannot create such an awful situation.

    Why can't I have a global non-prefixed index?
    Well, why would you want one? In my example, perhaps you want a global index on deptno, partitioned by mgr. But you can't do it:

    orclz> create index deptnoi on emp(deptno) global partition by hash(mgr) partitions 4;
    create index deptnoi on emp(deptno) global partition by hash(mgr) partitions 4
    ERROR at line 1:
    ORA-14038: GLOBAL partitioned index must be prefixed
    This index, if it were possible, might assist a query with an equality predicate on mgr and a range predicate on deptno: prune off all the non-relevant mgr partitions, then a range scan. But exactly the same effect would be achieved by using global nonpartitioned concatenated index on mgr and deptno. If the query had only deptno in the predicate, it woud have to search each partition of the putative global partitioned index, a process which would be just about identical to a skip scan of the nonpartitioned index. And of course the concatenated index could be globally partitioned - on mgr. So there you have it: a global non-prefixed index would give you nothing that is not available in other ways.

    Why can't I have a global partitioned bitmap index?
    This came up on the Oracle forums recently, https://forums.oracle.com/thread/2575623
    Global indexes must be prefixed. Bearing that in mind, the question needs to be re-phrased: why would anyone ever want a prefixed partitioned bitmap index? Something like this:

    orclz> create bitmap index bmi on emp(deptno) global partition by hash(deptno) partitions 4;
    create bitmap index bmi on emp(deptno) global partition by hash(deptno) partitions 4
    ERROR at line 1:
    ORA-25113: GLOBAL may not be used with a bitmap index

    If this were possible, what would it give you? Nothing. You would not get the usual benefit of reducing contention for concurrent inserts, because of the need to lock entire blocks of a bitmap index (and therefore ranges of rows) when doing DML. Range partitioning a bitmap index would be ludicrous, because of the need to use equality predicates to get real value from bitmaps. Even with hash partitions, you would not get any benefit from partition pruning, because using equality predicates on a bitmap index in effect prunes the index already: that is what a bitmap index is for. So it seems to me that a globally partitioned bitmap index would deliver no benefit, while adding complexity and problems of index maintenance. So I suspect that, once again, Uncle Oracle is protecting us from ourselves.

    Is there a technology limitation?
    I am of course open to correction, but I cannot see a technology limitation that enforces any of these three impossibilities. I'm sure they are all technically possible. But Oracle has decided that, for our own good, they will never be implemented.
    John Watson
    Oracle Certified Master DBA



    Subscribe to Oracle FAQ aggregator