Feed aggregator

Backup & Recovery Presentation

Radoslav Rusinov - Mon, 2006-05-01 09:11
Two weeks ago I had a presentation in front of Bulgarian Oracle User Group about Backup & Recovery Enhancements in Oracle 10g.The agenda of the presentation:Flash Recovery AreaFlashback Technology EnhancementsSpace Pressure & Database HangsPhysical Backup & Recovery EnhancementsIt includes information about enhancements in Oracle 10g (Release 1 and Release 2) related to Human Errors (Flashback Radoslav Rusinovhttp://www.blogger.com/profile/18163031714036680150noreply@blogger.com0

Back to Blogging

Radoslav Rusinov - Mon, 2006-05-01 09:04
Finally, after 6 months of silence I am writing my first post.In the past several months I didn’t have any free time to update my blog but now I am trying to change this. I hope that I will be able to write here much more frequently.I have a lot of interesting topics to write about. Some of them:- Presentation about Backup & Recovery Enhancements in Oracle 10g that I gave in front of the Radoslav Rusinovhttp://www.blogger.com/profile/18163031714036680150noreply@blogger.com0

The Oracle Certification Process

Eric S. Emrick - Sun, 2006-04-30 20:13

In late 1997, on what was a very shiny day (for all of DBA-kind I am sure), I proudly exited my local facility that proctored Oracle certification exams. On this glorious day I had passed the last of four exams required to obtain the coveted Oracle Certified Professional (OCP) title. I was certified on Oracle 7.3 and could not have been more proud. After waiting a few weeks to receive my certificate I brandished it in my home study. Make no mistake about it. I felt this had legitimized my 3 long years of Oracle work to date - I had reached an Oracle summit. At that time the OCP title was not nearly as pervasive as it is today. In hindsight, I suppose my enthusiasm was not entirely unjustified.

Let’s roll time forward nine years to 2006. I have not renewed my certification. For all practical purposes I am not an OCP. I certainly wouldn’t claim such on my resume having only achieved version 7.3 certification. Why haven’t I renewed my certification? After all, Oracle has bent over backwards to assist this erstwhile OCP by offering an upgrade exam. I can take a single exam and immediately upgrade my certification status to an Oracle 9i OCP. If I labored a bit more, I could take another upgrade exam and attain the highest OCP level available. Does this mean that I could, nearly overnight, claim expertise in all of the concepts and elegant nuances Oracle has built into its database since version 7.3? Professionally, on my resume, I suppose the answer is yes. Realistically, the answer is, no way!

I feel the only real way to stay current with our Oracle knowledge and exhibit the technical acumen associated with a proficient Oracle practitioner is to read (and reread) documentation and test features. There is absolutely no substitute for good old-fashioned studying in conjunction with trial and error exercises. I have interviewed dozens of Oracle Certified Professionals over the years, many of which struggled with the basics. I do believe that today, more than ever, the ubiquitous OCP title provides little insight into the qualifications of an Oracle DBA. However, I do believe that the certification process can lay an excellent framework for a strong understanding of the Oracle database. Just, not by necessity. It varies from person to person. One person with the same temporal experience with Oracle and an OCP title might appear lacking when compared to another with equal “qualifications” and accomplishments. Why? We all have different approaches to storing information for retrieval. I remember cramming for exams in college for the courses I loathed. I always seemed to make out okay. But, did I really learn the material or just buffer it long enough so that my mind could hurl it back out in the nick of time? I know, for those “undesirable” classes it was the latter. For me to learn I must:

1. Want to learn.
2. Be passionate about the topic.
3. and study, study, study.

Of course, there are exceptions to the rules, those supremely intelligent humans that roam the earth with a glut of gray matter that have little need for 3), leaving it for the rest of us to toil.

Am I a better DBA than I was nine years ago? I certainly hope so. Could I augment the breadth and depth of my Oracle knowledge by revisiting the certification process? Absolutely. But, couldn’t I really do the same by studying the material covered by the exams? After all, I am passionate about the topic and want to learn. I know. I know. It sounds like a really cheap excuse. Read the material, but, uh hum, skip the exams right? How convenient.

For those of you with your OCP please don’t think I am minimizing your achievements. I am certainly not doing so. I believe that the Oracle certification process can yield a very productive learning experience, insofar as we really take the time to authentically learn the material we are studying. It has been my experience, that if I have ostensibly forgotten what I have learned, as long as I truly understood the material while in the learning process, re-learning can be a very quick enterprise.

By the way, I think I will take the upgrade exams this year. But, this time I refuse to cram. I will revisit the exam topics with a cheerful willingness, as the science of Oracle database administration is a very exciting and challenging branch of knowledge.

UKOUG - Northern Technology day (and the rest)

Neil Jarvis - Fri, 2006-04-28 08:18
Today, the day after the UK oracle user groups first Northern technical day. Didn’t have time to add this yesterday, as I had to catch the final light of the day playing golf, to unwind from the day.

Yesterday started, ironically on Wednesday night, arriving a little late to meet the Geordie, the Scotsman and the only Southerner (or is that East Midlander). No, this is not the start of a regional joke.

I think the idea of the pre-‘technical day’ briefing was to go through the presentations and order for the day. NOT. Actually it was to get as much booze down in as little time as possible. Unfortunately, for my lateness I was several gallons behind – and that was just consumed by the Geordie.

As for the day, Niall’s two presentations were incredibly polished and professionally presented (as always); Apples to Oranges (comparing oracle in UNIX and windows) gave some food for thought and areas to go away and test yourself; ‘Oracle SE Real Application Clusters’ provided insight into Nial’s experience with installing RAC and also provided invaluable information to try it yourself.

Pete Finnigan presented ‘Many ways to become a DBA’ – the DBA role that is. He has an excellent web site highlighting all the issues with Oracle and provides solutions to these. My advice is to visit his site and check out your corporate database security. You will be very surprise (or shocked)

Joel Goodman, an excellent speaker and instructor for Oracle Education gave a presentation on Automatic Storage Management. He is a brilliant speaker and I could listen to him all day but unfortunately we could only provide 75 minutes. If you get the opportunity go and see Joel sometime.

The final presentation of the day, I had to chair, was Paul Langan from the University of Liverpool. He talked about his experience with installing RAC on Windows. When you put together the presentation from Paul, Nail and Joel you came away from some valuable information on installing RAC

Jonathan Lewis closed the day. The other stream was chaired by Lisa and to see comments by her please visit her blog.

Over 90 delegates attended the day, which is a good start for the future. A few colleagues of mine attended and some colleagues I used to work with were also there. I’d like to mention Neil Johnston who was attending his first visit to OUG and I hope the experience was valuable and enjoyable and I hope he will attend again and possibly, sometime, present at a SIG or conference.

Solaris and High Wait I/O CPU

Eric S. Emrick - Tue, 2006-04-25 17:11
A few days back a familiar little situation surfaced. Someone monitoring the OS was making claims that a particular machine was running at 100% cpu utilization during a period when a portion of the application was running slower than normal. The assertion being made was our system had a cpu shortage.

Given the fact that the application was running on a Solaris platform I looked at the vmstat history logs kept for just such an investigation. Per vmstat, for the time in question, there was plenty of idle cpu. Immediately, I thought this person must have been looking at the sar data on the machine in question. Sure enough, the sar data indicated a very low percentage of idle cpu. As you might have guessed, the percentage of time the system was waiting for I/O was rather large according to sar and, consequently, low idle time was being reported. I explained that it was typical for this system to run a high wait I/O percentage as reported by sar; after all, it is a database server with many processors. I also explained that low idle time as reported by sar does not necessarily mean a cpu bottleneck exists.

I remembered reading in Adrian Cockroft’s book, Sun Performance Tuning, that vmstat lumps wait I/O into idle time. So, naturally I was confident in my counter-assertion that our cpu utilization was just fine. I assuredly reached for my copy of the Sun Performance Tuning book to show where I had read this information years ago. I searched the index of the book and gave the book a cursory once-over to no avail. I started doubting whether I had reached for the wrong text! A bit frustrated I decide to perform a full book scan. Low and behold, I only got past two pages before my memory was vindicated. On page 3 it reads. “Whenever there are any blocked processes, all cpu idle time is treated as wait for I/O time! The vmstat command correctly includes wait for I/O in its idle value…” Viola!

The clock interrupt handler in the Solaris operating system runs every 10ms (or at least used to) to get cpu utilization information. It will search the state structure for each cpu and find that each cpu is in one of five states: user, system, idle, waiting for I/O or quiesced. Based on my understanding, the quiesced state is not really indicated by a value stored in a structure or variable associated with a cpu. It is simply the state when a cpu is not running user, system or idle threads and not waiting for I/O.

The point is, a high value for wait I/O generated from sar on a Solaris platform does not indicate a cpu bottleneck. Moreover, high wait I/O values do not necessarily indicate an I/O bottleneck. However, an I/O bottleneck could very easy manifest in high wait I/O percentages. You really need to look at your I/O service times to determine if the I/O subsystem is performing poorly.

For those wanting to know more on the algorithm used by Solaris to calculate idle and wait I/O cpu percentages read here. It is a bit dated, but describes how wait I/O is tallied in the Solaris operating system (at least in earlier versions). Interestingly enough this article cites Sun Performance Tuning, my trusty reference.

Multiple OC4J containers on one server

Wijaya Kusumo - Tue, 2006-04-25 05:56
In development, very often we want to have a controlled, dedicated environment for testing the new codes. This is why sometimes I find having multiple OC4J containers running on a single machine is very helpful. In this way, restarting one container will not affect other “projects”.One problem with this is port contention. In my Oracle Containers for J2EE 10g (, the HTTP server is

DbVisualizer for Oracle work

Scott Schwab - Thu, 2006-04-20 19:24
While I trend to stay with open source tools for Oracle work, I do have to recommend a commercial software package. DbVisualizer from Minq Software is saving me some significant time. Yes it is another tool to run queries within, yes it is another browser of your schema, but two useful features I have found areIts ability to make entity relation graphs of just part of a schema, with easy Scott Schwabhttp://www.blogger.com/profile/14014003619353346507noreply@blogger.com0

Requirement writing

Scott Schwab - Wed, 2006-04-12 21:31
"Ah, I wish I knew what I should be doing", a statement I have made too often in my career. Oh well one way to address it is to have requirements, good requirements, testable requirements. Writing good requirements is hard, and so I have taken a break from my usual reading and have gone back to reading Mastering the Requirement Process.The problem with reading this book is its competition, I Scott Schwabhttp://www.blogger.com/profile/14014003619353346507noreply@blogger.com0

Manual Depreciation Override in Assets

Jo Davis - Wed, 2006-04-12 18:34
Latest sexy thing I came across:

Oracle Assets mini-pack 11i.FA.K (2398923) contains the Manual Depreciation Override functionality.

In a nutshell:
- set the profile option FA: Enable Depreciation Override to Yes
- write pretty sql to populate fa_deprn_override with a record for each asset per period per book where the depreciation calculation should be overriden with your magically calculated number

and you're done.. no more frigging around with unplanned depreciation after the event to try and get the accumulated depreciation and depreciation expense to the desired value. How simple is that? I'll let you know if it actually works ;)

Eternal Mysteries of iProcurement

Jo Davis - Mon, 2006-04-10 00:49
Okay - I confess - I forgot to update this blog thingie ... again.... :)

My latest craze - iProcurement on 11.5.10, haven't done this one since 11.5.8 so it's a bit sexier and yet again the screens have changed - woohoo!

New things I like:
- Non-Catalog templates
- Using AME for Requisition Approval

New things I dislike:
- The new homepage isn't as easy as the 11.5.8 one
- Personalization just gets more complicated every release

Old things they still haven't fixed:
- Trying to populate the AFF is like trying to pull teeth, that saved list of top combinations is just rubbish, you still have to customise the Account Generator to get the right combination first time or the users are stuffed - it doen's remember the segments that it was able to generate so they start again from scratch. Marvellous if they happen to work for the finance department and know their full accounting flexfield, pain in the neck if they're a normal human who has no clue! (End of rant)

Google Toolbar Installed

Scott Schwab - Thu, 2006-04-06 07:26
Google Toolbar Installed, testing sending blog entries from a tool bar buttonScott Schwabhttp://www.blogger.com/profile/14014003619353346507noreply@blogger.com0

unit testing tools and maps

Scott Schwab - Wed, 2006-04-05 20:14
I have been quoted. On unit-test.com, my early evaluation of Qute unit testing software has been posted. I have found the software very useful in the last few days, as I have been grinding through a variety of xml fragments in my testing.I am building a PL/SQL package that takes XML fragment, say apple and builds a dynamic query, such asSELECT Scott Schwabhttp://www.blogger.com/profile/14014003619353346507noreply@blogger.com0

Facelets 1.1.2 is out!

Adam Winer - Thu, 2006-03-30 11:31
As Jacob Hookom just announced, Facelets 1.1.2 is now available. This is a major milestone for Facelets: the big issues have been nailed, templating's solidified, and excellent features like <ui:repeat> are in there too. Give it a whirl!

(And, for this blog, that "build before restore" feature that's part of saving JSF state saving has its first public appearance here too.)

Some notes for project management

Scott Schwab - Thu, 2006-03-30 09:05
Over the last few days of project schedule reviewing, I have learned some lessons in project management.If you have a person you will need on a project,1) Find something for them to do the on project, early on, to get them involved, busy, and off of the bench of people available for assignment to other projects.2) Tie their work to a deliverable, and if possible, the deliverable directly to a Scott Schwabhttp://www.blogger.com/profile/14014003619353346507noreply@blogger.com0

Oracle Riddles: Now that is interesting.

Eric S. Emrick - Wed, 2006-03-29 21:11
A process can prevent me from staking the claim for another. Users sometimes need me to know if they can secure a spot where another process may have been before. Needless to say, I am a pretty big deal, and users are very interested in me. However, when some stop by for a visit they often feel I haven't cleaned up very well. Do you know what I am?

ADF Faces – First Impressions

Brenden Anstey - Fri, 2006-03-24 23:12
The much anticipated JDeveloper 10.1.3 was released at the end of January 2006 and definitely lived up to expectations among the JDeveloper community. The slick new interface boasts some really great features including significant enhancements in the code editor and overall feel of the IDE.

So what about Faces? ADF Faces is based on the JavaServer Faces industry standard framework. An open source implementation of JavaServer Faces called MyFaces has been [donated] to the Apache Foundation by Oracle.

The persistence layers offered by JDeveloper are ADF Business Components and Toplink. Oracle has released fully working example application called the SRDemo which is a simple service request system. The aim of the SRDemo is to solve most of the design woes faced by any developer starting out on green fields J2EE web application. SRDemo is written in ADF Faces (JSP) using TopLink and use J2EE container security for authentication and authorisation.

Why TopLink? TopLink is a POJO (plain old java object) based approach to creating an object-to-relational persistence layer. TopLink uses and EJB (Enterprise Java Bean) session façade and provides a full declarative (XML) persistence layer defined in what’s called a TopLink map. One really nice feature of TopLink is named queries; Named queries encourage the reuse of TopLink entities by exposing different operations on the entity (such as setting or changing conditions) by exposing methods through the Session Façade bean. I was impressed with TopLink, because it has some original and well implemented ideas. The POJO approach unpacks all the complexity which is hidden in ADF BC, which can be a bit daunting when starting out with the TopLink framework.

There are some significant improvements with ADF BC including some out-of-the-box goodies which either didn’t work or were a headache to implement in 10.1.2. Read-only view objects are great as well as dynamic view criteria. For those coming from an Oracle Forms or non-OO background, ADF BC is an easier transition than TopLink and is a mature and robust framework to go with.

The actual ADF Faces user interface can be implemented in two ways, a JSP (Java Server Pages) or a JSPX (XML Document). The faces lifecycle and faces-config.xml implements the controller layer providing the interaction between the model and view layers. ADF Faces provides an abundant set of UI components which give a consistent looking and rich user interface. Strong support for expression language makes binding components to the model a breeze. The backing bean and managed bean concept has also greatly simplified managing events.

The Tao of Oracle

Mihajlo Tekic - Fri, 2006-03-24 11:11

The Oracle Masters have no mind of their own.
They are aware of the needs of others.
They are good to users who are good.
They are also good to users who are not good.
Because Virtue is goodness.
They have faith in servers that are faithful.
They also have faith in servers that are not faithful.
Because Virtue is faithfulness.
The Master is shy and humble - to the world he seems confusing.
Others look to him and listen.
He behaves like a little child.

more about The Tao of Oracle by Roby Sherman

Usings Sets with UIData

Adam Winer - Wed, 2006-03-22 18:24
One of the more personally surprising usability complaints I've heard was that the JSF UIData component does not support Sets. I hadn't anticipated that one. The underlying reason is that UIData is built around indexed data. For example, you can ask it to show rows 10,000 through 10,099. Such an operation would be nightmarishly expensive in a Set:

Iterator iter = collection.iterator();
for (int i = 0; i < 10000; i++) { iter.next(); }
// Hey, now we can start reading our data!

But, hey, we still got it wrong: we should have supported it. Yeah, it'd be slow - O(N) where N is the size of the set, not the amount of data actually displayed at one time - but the ease of use argument is compelling.

That said, there's nothing stopping you from using Sets with UIData right now... if you use the following class:

import java.util.AbstractMap;
import java.util.AbstractList;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Collections;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.RandomAccess;
import java.util.Set;

public class ListFromCollection
public ListFromCollection()
_map = new MakeList();
_size = _DEFAULT_SIZE;

public Map<Collection, List> getList()
return _map;

public int getSize()
return _size;

public void setSize(int size)
_size = size;

private class MakeList extends AbstractMap<Collection, List>
public List get(Object o)
if (!(o instanceof Collection))
return null;

// Just send RandomAccess lists out; wrap any other Collection
// into a List
if ((o instanceof List) &&
(o instanceof RandomAccess))
return (List) o;

Collection c = (Collection) o;
if (c.isEmpty())
return Collections.EMPTY_LIST;

return new ListImpl(c, getSize());

public Set<Map.Entry<Collection, List>> entrySet()
// Not worth implementing at the moment; this Map is only
// accessed from
return Collections.emptySet();

static private class ListImpl extends AbstractList
public ListImpl(Collection c, int size)
_c = c;
_cSize = c.size();
if (size == 0)
_bufferSize = _cSize;
_bufferSize = Math.min(size, _cSize);

_buffer = new ArrayList(_bufferSize);
_offset = -1;

public int size()
return _cSize;

public Object get(int index)
if ((index < 0) || (index >= _cSize))
throw new IndexOutOfBoundsException();

int offset = (index / _bufferSize) * _bufferSize;
if (offset != _offset)
_offset = offset;

return _buffer.get(index - _offset);

private void _loadBuffer(int offset)
Iterator iter = _c.iterator();
int i = 0;

while (i < offset)
assert iter.hasNext();


int count = 0;
while ((count < _bufferSize) && (i < _cSize))
assert iter.hasNext();

private final Collection _c;
private final int _bufferSize;
private final int _cSize;
private int _offset;
private ArrayList _buffer;

private Map<Collection, List> _map;
private int _size;

static private int _DEFAULT_SIZE = 50;

So, what's this all mean? Well, say you want to write:

<h:dataTable value="#{mySet}">

... but that doesn't work. Just add one managed-bean entry to your faces-config.xml:


... and now, you can use sets on dataTable via:

<h:dataTable value="#{makeList.list[mySet]}">


Scott Schwab - Tue, 2006-03-21 10:10
I have some task to add to ant, to run my PL/SQL test, luckily I found this link about it.Scott Schwabhttp://www.blogger.com/profile/14014003619353346507noreply@blogger.com0

Google Home Page for Me

Scott Schwab - Tue, 2006-03-21 09:38
Last night, I received my invite to build a Google Home Page. It was perfect timing as I am writing a presentation on Qute and the need for unit testing, and wanted to post it some place. A warning about power point + visio, if you are using photo clip art, watch the sizes. My initial version of the presentation was 50+ meg, fixing the photos size and resolution its is down 8 meg. Still large, Scott Schwabhttp://www.blogger.com/profile/14014003619353346507noreply@blogger.com0


Subscribe to Oracle FAQ aggregator