Feed aggregator

Why TE.040 Test Scripts for UAT are a waste of time and money

Jo Davis - Thu, 2008-02-28 17:39
I’m all for testing… I love the stuff.. but seriously, spending weeks of effort putting together a test script in the format of:
  1. Enter "Jo's super Journal 290208" as the journal entry header
  2. Enter the journal source "Manual"
  3. Enter the journal category "Adjustment"
  4. .....
  5. ????
It seems I've spent weeks of my life over the last 11 years writing these things. Weeks I will never get back. (There are some nice ones uploaded by other nice humans over at http://www.oracleappsblog.com/index.php/weblog/comments/oracle-11i-test-scripts/ if you’re looking for a standard test script repository by the way).

Why I don’t like them, in a nutshell:
  • too easy to concentrate effort on the test script steps instead of taking a step back and looking at the types of testing you’re doing and what sort of coverage you’ve got across the applications, particularly with regard to negative testing and scenario-based integration testing.
  • users hate writing them and try to outsource it to the implementation partner, which is never going to work because seriously the only person who can effectively test whether you’ll still be able to do your job on Monday morning is you, not some hired gun.
  • they contribute to the intimidating thud factor. Let’s face it – would a user would like to see a 50 page test script he/she has to get through or a one page one? Keep in mind that he/she’s also juggling their actual job (which is piling up on their desk while they’re here testing this thing because no one actually back-fills the finance department)… talk about stress.
  • they get out of date very quickly and are never maintained, so when you go to do the next project you find the steps listed for ‘Enter an invoice’ are not the way Payables actually perform the task. It must be kept in line with the user procedure but there's no method to do so.
So - back to basics – what is the purpose of User Acceptance Testing? To ascertain whether the business can continue to function with the system as delivered. Whether it be a fresh implementation, an upgrade or a really big patch, the purpose of UAT is the same.
We need to spend time, effort and money on documenting the user procedures and the training. Put the effort in where it will really be used ongoing, not just used for 2-4 weeks of UAT every six months or so.

The test scripts can then just document the actual test case or scenerio and refer out to the procedures/training guide on how to actually perform the task. If you really want a detailed, step-by-step test plan for UAT use a product to document your procedures which will produce the test script steps automatically, e.g. Oracle’s User Productivity Kit (UPK) or (my favourite) RWD’s uPerform. If you get really exited go have a look at Turnkey Solutions and see how you can have software document the testing for you apparently (haven't tried it myself yet, but the demo looks promising). Then you can concentrate your effort on what you should be testing, rather than how you should be testing it.

Applying CPU Patch on RAC using EM -A White paper

Pankaj Chandiramani - Wed, 2008-02-27 23:59

I wrote this paper to describes the process & benefits of applying patches using the EM.
Case : RAC - 3 node
Patch : CPU July 2007
Method : Rolling patch , zero downtime , using Deployment procedures in EM.

You can access the paper here on OTN.
or by copying the below url :

Other interesting white papers on EM are also listed here .

Categories: DBA Blogs

Bye Baidu, Google?

Ken Pulverman - Wed, 2008-02-27 21:18
Did you really think there was going to be just one newspaper replacement for the web?

Nope, but they seemed to have a smokin' first mover advantage. They absolutely did. Viral, clean, elegant and great results. Like any great software institution, feature clutter, the continuous ebb and flow of fickle user interest, and people getting fat and happy off of their options gets the better of most of Silicon Valley's break aways over time. And Wall Street oh Wall Street, "do I no longer please you?" It happens to everyone, GOOG. What would financial markets be without new starlets all the time. Irrational exuberance and rational pragmatism - two cousins that hate each other, but absolutely can't live without one another.

Will Google be a big part of the web experience for some time? Sure they will. Will they be the gravitational center? Unlikely.

Take a look at this quick comparison of page views.

While there are hundreds of ways to poke at this, I am going to just keep it simple. Look at what has happened to Baidu and look at the other three. Clearly the concept of where and how you find content is changing. Search is adding context - friends, dating, maps, encyclopedia topics, video and a whole Yelp more. Google can certainly try to keep on top of all these trends, but it is a losing battle. No one company is going to own all or even most of the web search behavior of human beings because search as it turns out is actually just an attribute of other behaviors.

Google is a learning organization, however. They saw this coming years ago. Their strategy of offering advertisers a bundle of possible advertising methods is a winner and the next real battle front in web advertising. Microsoft clearly sees this. Anybody else? Baidu?


Jornica - Wed, 2008-02-27 15:03

When you are working with global package arrays (apex_application.g_f01 ... apex_application.g_f50) in Oracle Application Express (APEX), the following package procedure apex_global_arrays can help in reducing development time especially time spent in the bugs and features department.

PACKAGE apex_global_arrays
PROCEDURE print(maxlength NUMBER DEFAULT 20);

The procedure print prints a HTML table with the contents of the arrays only if the page is run in debug mode. The parameter maxlength truncates the value of each table cell at the given number. You can call the procedure in a separate On Submit application process. In this way the table is rendered even when succeeding On Submit processes fail. Define once, execute everywhere. And of course, you can call it in page process as well.

A picture says more than a thousand words. Below is an example of an updateable report based on the emp table.

Updateable report on EMP table

After pressing submit, the following output is shown. Compare the g_f01 array with the checkboxes above. The g_f01 array is not sparse like the g_f08 (commission) array. Also, when an array value does not exists, no table cell is printed, i.e. g_f05(9); King does not have a manager.

HMTL table generated by apex_global_arrays.print

The source can be found here.

  • Due to the name change of HTMLDB into APEX the public synonyms apex_application and htmldb_application point both to the wwv_flow package where the associative arrays are declared. The global package arrays are also known as referencing arrays in APEX documentation or associative arrays in the PL/SQL language.

  • On apex.oracle.com you have to enter the debug mode after the page is submitted in order to render the table. On Oracle XE, you have to enter debug mode before submitting the page.

  • You can install APEX_GLOBAL_ARRAYS in the parsing schema or in a separate schema. You can find the parsing schema of your application on application definition page. When you choose for a separate schema you have to grant execute right to the parsing schema and create a (public) synonym for APEX_GLOBAL_ARRAYS.

Upgrading from Oracle Database 9i to 10g: What to expect from the Optimizer

Oracle Optimizer Team - Tue, 2008-02-26 15:34
One of the most daunting activities a DBA can undertake is upgrading the database to a new version. Having to comprehend all of the new features and to deal with potential plan changes can be overwhelming. In order to help DBA's upgrade from Oracle Database 9i to 10g a new whitepaper called "Upgrading from Oracle Database 9i to 10g: What to expect from the Optimizer" has recently been posted on Oracle Technology Network (OTN). This paper aims to explain in detail what to expect from the CBO when you upgrade from Oracle database 9i to 10g and describes what steps you should take before and after the upgrade to minimize any potential SQL regressions. This is a must read for any DBA planning on upgrading from 9i to 10g in the near future!

Upgrading from Oracle Database 9i to 10g: What to expect from the Optimizer

Inside the Oracle Optimizer - Tue, 2008-02-26 15:34
One of the most daunting activities a DBA can undertake is upgrading the database to a new version. Having to comprehend all of the new features and to deal with potential plan changes can be overwhelming. In order to help DBA's upgrade from Oracle Database 9i to 10g a new whitepaper called "Upgrading from Oracle Database 9i to 10g: What to expect from the Optimizer" has recently been posted on Oracle Technology Network (OTN). This paper aims to explain in detail what to expect from the CBO when you upgrade from Oracle database 9i to 10g and describes what steps you should take before and after the upgrade to minimize any potential SQL regressions. This is a must read for any DBA planning on upgrading from 9i to 10g in the near future!
Categories: DBA Blogs, Development

How to take Build vs Buy decision in case of Software Products?

Arvind Jain - Mon, 2008-02-25 13:09
In the world of software development once in a while everyone reaches that crossroad where he needs to decide - Should we build that software or buy it? Build vs Buy !! Deal or No Deal !!

Here are suggestions that will help you. When making a Buy vs Build decision do the following:
  • Consider only the costs that are affected by your decision (example you may or may not decide to buy additionaly 24X7 support)
  • Include all Opportunity Costs (are you going to miss on some other core oppurtunity / project in your own industry)
  • Ignore Sunk Costs, these are costs that have already been incurred (example can be hardware cost as either version of bought or in house build software will require similar hardware)Calculate total costs of each option. Total cost = fixed (avoidable) costs + variable (avoidable) costs
  • Considering "Soft" or "Intangible" cost/benefits, for example future use of product or learning, team reputation or burden (in terms or learning or development), derivative products.

Other Important Hints/Viewpoints
  • A very important consideration is to look at the Marginal cost i.e. the cost for deploying an additional host (cpu) with the same software.
  • For coming up with oppurtunity cost - look at the nature of technology/product and its maturity level - analysis in the Short Run and in the Long Run
  • Look at the service/product provider and its industry - will you be price taker or price chooser? How much can you negotiate? What are hidden benefits/costs of partnership?
  • Evaluate options using the net present value (NPV) & internal rate of return (IRR) approach
  • A little known fact is about the Basic Accounting ... Is it favourable for company's accounting? - This is very important as software bought is a depreciable asset for organization while software built will be treated as an ongoing expense without any balance sheet asset created out of it.
Hope you have some food for thought and solid points to make your case in your next board/council meeting.

Desktop and Gadget Sharing

Oracle EPM Smart Space - Mon, 2008-02-25 12:41

One cool feature that is often overlooked in Smart Space is its ability to share desktops and gadgets with other users. To help understand this feature you need to understand what I am talking about when I use the term 'desktop'. I am referring to Smart Space desktops not Windows desktops. Smart Space Desktops are simply a collection of gadgets and services that a user has self-assembled. The user can have many of these 'sets' of gadgets that they can switch between throughout their working day. Back to the sharing part… Sharing these desktops with fully configured gadgets is a powerful feature. Imagine a financial analyst creating a desktop full of useful gadgets and passing it to everyone in their group, or an IT administrator creating a set to push out to the executives.

There are 2 major ways to do this. The first I call the 'thumb drive' method; the user creates a set of gadgets on a Smart Space desktop and then saves that set to a file (archives it). This file can be passed around in email, on thumb drives, or even on floppy disks (does anyone have one of these?). The second I call the 'push' method, in this scenario the user creates the set of gadgets and then tells Smart Space what user should get it (uses the collaboration engine). The users will then get a toast message (taskbar notification) that they have been passed and new desktop and then they can install it.

Either way is great for sharing content and will help customers deploy a unified application across their enterprise.

Categories: Development

Does the best technology & architecture guarantee a successful SOA or BPM?

Arvind Jain - Mon, 2008-02-25 00:50
Have you ever wondered that given best technology & architecture ...Are you guarantee a successful SOA or BPM project?

Answer is a simple and a big NO.
There is much more to a successful SOA or BPM implementation & adoption then just choosing the right tools and technology and architecting the finest blueprints. The best and brightest team of IT architects and engineers definitely help to do the toughest of design & implementation projects .... but that is just half the task.
Embracing SOA or BPM or for that matter any new initiative like WEB 2.0 and Collaboration is a major change for the organization. By nature changes are difficult as people see change with a grain of salt and skepticism.

Hence the Architecture Community has an additional and significant responsibility to be the "Change Agents" in the organization. They need to understand basic human nature & group behavior in order to be successful in their SOA or BPM initiative. They need to understand that shift in attitude seldom comes at once. The rate at which different groups, divisions or individuals will adopt these changes will vary by individual, or the type of change or the organizational context.

They need to identify these stages of change and simultaneously work on those while doing their core IT or Business job.
Understand that it is not sufficient for just you to have adopted this change. You have to guide and lead the larger community through the various stages of change, namely
1) Awareness
2) Interest (people develop curiosity)
3) Trail (skepticism is overcome)
4) Adoption
I will further share my experience about managing change during these various stages in some later blog or if there is an interest in the community.


How to log DB statistics at info log level in Rails 2.0

Raimonds Simanovskis - Fri, 2008-02-22 16:00

When I switched some my applications to Rails 2.0 I noticed that I do not see anymore DB execution time statistics in my production log file (which I set at info level). Now I saw zero database processing time for all my requests, e.g.:

Completed in 0.22203 (4 reqs/sec) | Rendering: 0.13277 (59%) | DB: 0.00000 (0%)

When investigating why is it so I found the following small changeset that is done in Rails 2.0 – http://dev.rubyonrails.org/changeset/8162.

In Rails 1.2 at debug level you got both SQL and database processing time in log file and at info level you got just database processing time. In Rails 2.0 at debug level you get the same in log file but at info level you do not get database processing time.

So if you are like me and want to analyze your production log file with tools like pl_analyze then you can monkey patch ActiveRecord to get back the previous behaviour as in Rails 1.2:

module ActiveRecord
  module ConnectionAdapters
    class AbstractAdapter
        def log(sql, name)
          if block_given?
            # RSI: changed to get DB statistics in log file at info level
            # if @logger and @logger.debug?
            if @logger and @logger.level <= Logger::INFO 
              result = nil
              seconds = Benchmark.realtime { result = yield }
              @runtime += seconds
              log_info(sql, name, seconds)
            log_info(sql, name, 0)
        rescue Exception => e
          # Log message and raise exception.
          # Set last_verification to 0, so that connection gets verified
          # upon reentering the request loop
          @last_verification = 0
          message = "#{e.class.name}: #{e.message}: #{sql}"
          log_info(message, name, 0)
          raise ActiveRecord::StatementInvalid, message

And now you will get database processing statistics back in log file at info level:

Completed in 0.21853 (4 reqs/sec) | Rendering: 0.10835 (49%) | DB: 0.09657 (44%)
Categories: Development

Oracle Mix - bringing Web 2.0 to the Enterprise

Richard Byrom - Fri, 2008-02-22 11:42

Last year I attended the UKOUG 2007 which was a good opportunity to catch up on what’s happening in the Oracle World. At the Applications Keynote presentation given by Jesper Andersen I first heard about Oracle Mix, one of the initiatives Oracle has undertaken to bring Enterprises into the Web 2.0 space, a concept now dubbed Enterprise 2.0

Oracle Mix was built by Oracle AppsLab in collaboration with ThoughtWorks. I see it as one of Oracle’s first attempts at a FaceBook or MySpace equivalent for its customers, partners, developers and employees. The Oracle Mix strapline is Our Business is all about you, our Customers. Its purpose is stated as giving everyone a voice to help shape the future of Oracle together. Here’s what Oracle says you can do with Mix: -

Share Ideas.
Let us know how we can improve our products or how we do business. See an idea you like, vote on it or add your comments.
Join Groups.
Get together with others around products, industries, or more. Can’t find a group you like? Start one!
Connect with other customers and get to know Oracle experts in your product area or industry.
Get Answers.
Got a tough question, ask it. Feeling bright? Help someone and answer a question.
Share and Learn.
Learn about best practices for your product and check out new ideas being discussed by the community. Share your experiences with others through posting ideas or answering questions.

I have to say I like the way Oracle is starting to embrace Web 2.0. When I first started blogging several years ago, there were very few Oracle Bloggers around and the community was fairly fragmented and disorganised. Now it seems that with all of the collaboration and social networking tools around I’m able to interact more effectively with my Oracle peers. Apart from Oracle building effective web applications for the Oracle Community they’re also demonstrating Enterprise 2.0 leadership by building services into their applications that have Web 2.0 features and characteristics. I look forward to seeing how the community and applications grow and metamorphasise in the future.

Is 10.7 Character extinct? Hardly...

Jo Davis - Thu, 2008-02-21 22:41
With all the talk about R12 and Lifetime support, consultants can be forgiven for thinking that the old character interface is actually extinct... the truth is (for those of you out there still on it) that no, it isn't. There are actually Oracle E-Business Suite sites still on the 10.7 Character release (despite the fact that it's desupported) and wondering to themselves where they go from here? Have they totally missed the ship? So for anyone in this position, here's my two cents worth....

Upgrading to Release 11.5.10 is not impossible.... it's actually quite straightforward.... the secret (and it's not much of a secret) is to use a DBA team who've done it before... and seriously it's now 2008, we've been upgrading from 10.7 Character to 11i for eight years now, the DBAs are getting pretty good at it :) I've always said that an actual upgrade (not a point release, which is a really BIG patch, an actual upgrade which involves laying down a new $APPL_TOP and running AutoUpgrade) is not the time to break in your baby DBA. Trial by Fire may have it's uses as a training technique (although I'm not a huge fan of that either), but a massive upgrade is not a candidate.

The only thing which can bite you in the backside is going to be those customisations, so it's time to gather every single piece of documentation you can find with the word 'Oracle' in it then see what you've got. If we're lucky we can kill 90% of them while we're at it (don't get me wrong - I like developers, I just don't like massive customisations which bugger up the standard stuff).

So, as usual, I'm still recommending Upgrade over ReImplementation provided you're basically happy with the Accounting Flexfield structure and calendar. (And seriously - if you want to change your AFF, don't re-implement, just use Flexfield Express - it's cheaper and you get to keep your history).

Okay, end of babbling for today... catch you next time..


How to delete an object with a special character in Oracle

Hampus Linden - Wed, 2008-02-20 11:52
There are some things in Oracle that are possible but shouldn't be possible.
One thing I love to hate is the fact that you can create tables with almost any name, just as long as you double quote it.
SQL> create table "My Fruit Table" (id number);

Table created.

SQL> select * from tab;

------------------------------ ------- ----------
My Fruit Table TABLE
Horrible! And what's even more horrible is that people actually do this.

Now to the problem, a user created a table with a special character in the name. Not even sure what character but I need a way to drop it. PL/SQL to the rescue.
SQL> set serveroutput on
-- Lets create a dummy table with a bogus character in the name
SQL> declare
a varchar2(500);
a:='create table "abctest'||chr(150)||'" (id number)';
execute immediate a;

PL/SQL procedure successfully completed.

SQL> select * from tab;

------------------------------ ------- ----------
abctest? TABLE

SQL> desc "abctest?";
ORA-04043: object "abctest?" does not exist

-- And a bit of PL/SQL to drop it
-- change the abctest% string to something matching your single table.
SQL> declare
a varchar2(500);
tname varchar2(50);
a:='select table_name from user_tables where table_name like ''abctest%''';
execute immediate a into tname;
dbms_output.put_line('Table name is: '||tname);
execute immediate 'drop table "'||tname||'"';

Table name is: abctest?

PL/SQL procedure successfully completed.

SQL> select * from tab;

no rows selected

IOUG Collaborate 2008

Edward Whalen - Tue, 2008-02-19 07:52
It's been a while since I've added anything to this block. I guess I just got busy with other things. Well, I'm going to try to change that. First, I'm going to be at IOUG Collaborate 2008 and I am giving a session on "Advantages of Running Oracle 11g on Microsoft Windows". I hope to see you there. Second, I'm soliciting topics for future blogs. Please reply to this post with ideas and I will take them under considerations. Questions are also fine, I'll answer them if I can.

Useful links on Oracle XML DB

Pawel Barut - Mon, 2008-02-18 16:17
Written by Paweł Barut
Here is bunch of useful links related to Oracle XML DB and handling XML data in Oracle PL/SQL. It's mostly for my own reference, but I hope it will be useful for others too.

Cheers Paweł

Related Articles on Paweł Barut blog:
Categories: Development

Tuning pl/sql file i/o

Adrian Billington - Mon, 2008-02-18 13:12
Various techniques for unloading data to flat-file faster. February 2008

Reactive performance management By Craig Shallahamer

Virag Sharma - Sun, 2008-02-17 00:00

Last week Oracle University arrange Seminar by Performance Management guru Craig Shallahamer in India. Craig brings his unique experiences to many as a keynote speaker, a sought after teacher, a researcher and publisher for improving Oracle performance management, and also the architect of Horizone, OraPub's service level management solution.<?xml:namespace prefix = o />

His way of teaching is very very good , also contents of seminar is different and very effective. He focused on accurate performance diagnosis of even the most complex Oracle systems and how oracle interact with OS and application’s. I have been reading Craig’s papers/articles for long time , but never got full/big picture. After attending seminar his papers/articles look easy to understand.

Focus point of seminar was how to pin point issue area and different method to resolve it. He also cover some area of Mutex, IMU ( In memory Undo ) and performance forecasting etc. The way he teach latch Internals, anybody can understand it, even small kids J, he Create an honest and understandable story explaining the problem, the solutions, and how to best implement your solutions in a complex and highly available Oracle environment.

Second day of training , we had little tough time , as next to our conference hall in Oberoi Hotel, New Delhi , Shahrukh Khan( One of India Famous actor) was coming to inugrate/launch "Kya Aap Paanchvi Paas Se Tez Hain" new serial on Star Plus channel. But Craig enjoy music and continue with training

Categories: DBA Blogs


Subscribe to Oracle FAQ aggregator