Thursday, December 31, 2009

My EBS Install Saga

(Yes, it is sad that I am writing this on New Year's Eve...I'm on a mission at this point and nothing will stop me).

So I've been trying to follow along with John's EBS Install series...and by trying to follow along I mean I'm still on step 0 (zero).

First, it was a lack of space. 300 GB to be exact. So I went out and bought a 320 Seagate expansion drive. I can't remember that far back, but I think other things came up and I had to requisition that space for other projects.

A couple of weeks ago, I found a 1 TB external drive (USB 2.0) for $100. Couldn't pass it up. I'm all set to do this thing.

Somewhere, somehow, I removed all the carefully managed installation files. Couldn't find them. So I started over. A quick reminder, it's 46.25 GB of download, which takes a total of about 8 hours...even with 25 Mbps down. I am really thankful that Kris Rice doesn't do EBS...he'd be in for a world of hurt.

OK, I'm downloading the files and unzipping them save a little bit of time. Get everything downloaded and unzipped...this might be where the fun really begins.

If this is your first time, I'm using VirtualBox. The rest of the setup is like this:
-- Dell XPS M1530
-- Intel Duo Core T1555 1.83 Ghz
-- 3 GB RAM
-- 1 TB Seagate External Drive (USB 2.0)
-- Ubuntu Karmic Koala (9.10)

Not the most powerful machine in the world...but decent enough for 99% of everything. Of course by everything I mean everything but EBS.

The first time I created a 300 GB Dynamic HDD. That's the one I downloaded and unzipped all the files too. Upon completion, it had grown to 68.5 GB. OK, let's run it. Kick off the rapidwiz script, run through the first couple of screens and then it does a system check. Oops...there's not enough space. John did say that 350 GB would be preferable...I obviously didn't listen.

OK, so I could either expand that HD or shrink it and add another. Expansion is not possible (yet) in VirtualBox. I tried cloning (not sure why) and still ended up with a 300 GB disk of which 68.5 GB was used.

I then tried to use zerofree so that I could compact it (again, I have no idea why I was trying to do this). Those attempts were very unsuccessful because I couldn't figure out how to make the HD read-only. I did figure out a way later...just add a bad line in /etc/fstab and then you can run zerofree. What was the poing of compacting it though? No idea.

In one of the more recent versions of VirtualBox (I think 3.0), you could add a second HD. At least that's when I noticed that ability. So I created a new Dynamically-expanding 300 GB HD and attached it through the VirtualBox GUI.

Now I was stuck trying to figure out how to mount the stupid thing. Mr. Brad Tumy to the rescue.

Kick off the rapidwiz script, get through all the setup screens and it's installing...I left it over night...and one more night...78 GB had been written to disk.

I killed it.

How about just creating a 300 GB Fixed HD? Tried it...ran for 24 hours...about 60 GB had been created.

I killed it.

Maybe I could use Shared Folders. I consulting The Twitter and was reminded of my recent fun with Shared Folders.

Hmmm....How am I going to do this?

Then an IM with a colleague where he asked about The Cloud. It would be nice to have a test environment, as we are all remote, that we could share. I gave him 2 suggestions, I could buy a beefy machine and host it here at home or I (we) could try to do something in The Cloud.

That got me thinking...The Cloud? Hmmm...let's see if I can install OBIEE there.

I was immediately sold when I downloaded the OBIEE software (1.5 GB) in like 3 seconds (14 or 15 Mbps). I got OBIEE installed and running on Windows...but when I was creating the Instance, I noticed some pretty beefy boxes.

Maybe I could create the 300 GB VDI in The Cloud?

Yes, absolutely!

So I fired up a 20 ECU Windows Server Datacenter (2008?), with 8 dual core CPUs and 7.5 GB of memory. It took 2 hours to create the VDI.

Sweet! in the hell am I going to get that 300 GB down to my machine? Since my local drive was attached, perhaps I could just drag and drop it there. Nope...didn't like that.

I'll zip it up!

Using 7zip, I was able to compress it to a very modest 360.9 MB. That's got to be close to a million percent compression right?

Downloaded that via IIS (had to set that up as well) and began to unzip it. First 5 GB took about 5 minutes, so I'm thinking 5 hours. Then it started to crawl. I was at 75 GB after 10 hours which was going to put me at 40 total hours. But it looked like it was exponential...that 40 hours probably would have ended up around 1 million hours. I don't have that kind of time.

I killed it.

Consulted The Twitter again.

@TedC and @jtdavies offered up some suggestions. @TedC told me to use Amazon S3. @jtdavies told me to split it up and use rsync.

Being incredibly impatient and quite possibly very stupid, I "split" the difference. Using my 400 GB attached Volume, I decided to use The File Splitter to split the files. 10 MB chunks. 3000 some odd files. No worries, I'll just zip up every 100 or so, download and unzip.

Until I ran out of room.



I created a second (well, third) volume, 315 GB, which would be the target for the split files. Attached it and began the split...again. This time, 10 GB chunks. I wasn't worried about the size as they compress very nicely. Two of those equals about 24 MB of download.

So I'm almost done with that...about 95% complete. I just have to download 2 more zipped files.

The funner part will be getting those put back together...if it's even possible. I've read up on cat, I just hope it comes through.

If you have any suggestions...or you want to come over to my house or remote into my computer and help me...that would be awesome! :)

The EBS Challenge

I'm going to go ahead and say it, I believe John Piwowar's EBS series has been a success. I'm not talking in hits or those types of metrics because I haven't really analyzed the impact his articles have had. I'm talking about inspiring others to do the same. I believe that's where the real value has come from.

So far John has written 6 articles, 3 here and 3 companion pieces on his sites. He sent me the 4th last weekend (about an hour after the 3rd) which I will post next week (holiday lull here). He claims that's a record for him, 8 articles in a single month.

Anyway, here's the list of people who have decided to take the EBS Challenge:Jake Kuramoto added to the fray by posting an article on John's series, Install the E-Business Suite with Your Pals. Jake worked with EBS back in the 80's I think. :)

I'm pretty sure I left people off this list. So if you know of anyone or are someone using John's install guides, let me know through the various methods of communication (twitter, comments, email, IM, etc). I'll add your name to the list with links and all...would be fun to see how many names we can get on here. If you did use the guide and would like to write up your experiences (I will be writing one myself) and post them here as a guest author, or you want to write it on your own blog, let me know. I'll add links next to your name pointing to your article. Also, there is no time limit either. If you follow the guide next December and would like to be added, I can do that too.

Tuesday, December 29, 2009

Windows in the Cloud

Last January I read a post by Mr. Dan Norris (not the UK guy), I bought my own server for $1.02 (USD!). The title is fairly self-explanatory, he fired up an instance at (in?) Amazon's EC2, did what he needed to do then shut down (terminated) the instance. Cost? $1.02. It was the first real world application I had seen of the cloud.

Shortly after that, Mr. Lewis Cunningham [ blog | twitter ] went looking for volunteers to provide feedback on a cloud book he was writing. He wanted those with experience and those without (me). I jumped on the opportunity and Mr. Cunningham accepted. Thankfully, the book went by the wayside, instead becoming a series of articles (which I can't seem to find) on his blog, because I had fallen behind...way behind.

Since then I haven't done a thing in the cloud (should I capitalize that?). Until today when a colleague asked about creating a test bed for OBIEE, Essbase and other software. I prefer having a big beefy machine at home that I can muck around with, but seeing as how I haven't had a job in a while and money is tight, I thought the cloud would be the best bet.

So I began to tinker.

To back up a little, one thing I always had problems with was connecting to the instance via Ubuntu (not sure if this was a me/Ubuntu issue or a cloud/Linux issue) problems I mean I was never able to connect.

Since we are talking about OBIEE and it can be a Windows only install (both server and client tools), I tried to see what I could do. First I looked to see if there were any OBIEE images (AMIs) out there. There was, but I needed some sort of subscription to that. So I fired up my own Windows Server 2003 (64bit) instance, downloaded java (JDK) and the OBIEE software.

Small side note, download speeds from there are AWESOME!

download speeds

I have 25 down and 15 up and home and I thought that was fast...we should really feel sorry for Kris.

How to Create an Instance using Amazon's EC2
First you'll need to create an account if you don't already have one. Then go to Find the AWS Management Console and click on that. Should look something like this:

On the lefthand side, you'll see a menu of actions.

AWS Console Menu

On the right side is your dashboard

AWS Dashboard

Back to the left side, choose AMIs

Select AMIs

That should take you to this page

AMI Home

Let's find some images.

First, pull down this drop down and select Amazon Images

Amazon Images

Then select your platform, Windows


Select the amazon/Windows-Server2003R2-i386-Base-v108

Select Windows Server

Launch it

Launch it!

This will bring up the Request Instances Wizard, just go ahead and select the default and click on Continue


Instance Details, I don't really know yet what this page is about, perhaps someone out there can enlighten me, but just go ahead and accept the defaults

Instance Details

Now we're on the Create Key Pair page. I have a couple of keys created but I'll walk you through creating a new one as well.

Create Key Pair

Select Create a new Key Pair

Create a New Key Pair

Name your new key "test_key" then select "Create & Download your Key Pair." Download the key to your Desktop.

Create and Download Key Pair

Next up, Security Group. This is probably what screwed me up previously, trying to connect to Linux instance. I was never sure where the key should reside. I followed all the instructions...I just couldn't get it to work.

With Windows, you need to add a Security Group so that you can RDP into the machine. The port is 3389, but the wizard will take care of that.

Windows Security Group

Name it whatever you want and down at the bottom, select RDP as the rule you want to add.

Add Rule

When you are done it should look something like this

Rule Added

Select continue and you get this nice little summary page

Summary Page

Click Launch.

Connecting to your Instance
It takes a few minutes for your server to start up. You may have to hit refresh in your management console to see it.

Once the instance has started up, you need to get the password. If you haven't waited long enough, you'll see this:

Password Not Available Yet

Be patient.

To retrieve your password go to Instance Actions

Get Windows Administrator Password

You'll be greeted with this

Decrypt Password

Enter the text from the key you downloaded to your desktop (note the screenshot says obiee_key, that's because I took this screenshot earlier today).

Enter Key and Decrypt

And here's your password


Now open up Remote Desktop Connection (Windows) or your Terminal Server Client (Ubuntu), enter in the address, Administrator for the username and password you just generated.

Hit connect and you should be done!

Saturday, December 26, 2009

VirtualBox: Add Second HDD

Two weeks ago I found a 1 TB external drive for $100, couldn't pass it up. Space was the biggest obstacle in following along in John's EBS series (part IV coming soon).

I had purchased a "small" 320 GB HDD about a month ago, but that effort proved futile because I started to save everything off to that after I upgraded to Karmic Koala and received this lovely message:

Finally, I could install EBS without worrying about space...I created a Dynamically Expanding HDD of 300 GB. I then installed Oracle Enterprise Linux (OEL) 5, Update 4 and loaded as many of the known libraries that I could. Then I began downloaded and unzipping all of the required files. I was doing this in parallel, download the file, unzip, remove the zip file. After about 8 total hours, it was done. The VDI had grown to 68.5 GB.

I then ran the script, navigated through the screens until I got through to the system check. It complained I didn't have enough disk space to install. Of course not...there was only 231.5 GB of space left.

Stupidity followed.

What were my options?

OK, I could extend that VDI to 350 GB...VirtualBox doesn't allow that yet.

But for some reason I couldn't just keep that dynamically expanding VDI, I had to shrink it. How?


That would allow me to first zero out the unused space and then use VBoxManage compacthd to shrink it.

That required greater skills than I had though. First of all, you had to mount the root file system in read-only mode. I tried a bunch of different ways and could never get it to work. Looking back, it might be easy(er)...

I then decided to clone the VDI with VBoxManage clonehd thinking (and therein lies the problem) that would do the trick. 12 hours later, I had the cloned VDI. Added it to the Virtual Media Manager but it is just an exact copy of the other one (68.5 used, 300 GB total). Doh.

Enough of this. I'll just add a 350 HD as a Dynamically Expanding primary slave. So I did, booted up OEL and...where is it? Why can't I find it? I guess I have to mount it right?

Instead of researching first, I just start to muck around with the system. Really long story short, I thought it wise to edit /etc/fstab. Upon reboot, it broke. (Shocker)

Amusingly, the root file system was mounted as read-only so I could finally run zerofree.

OK, so I mucked up /etc/fstab, I can fix that right? Just replace my edits with the original...wait, it's a read-only file system.

Twitter to the rescue for the umpteenth time.

Twitter Question from ORACLENERD

Some back and forth with @brad_tumy before finally going to IM.

He pointed me to this link and this command
mount -w -o remount /
Worked! I could now edit the file and get my system back up and running.

"Um, Brad, while I have you..."
Do you know how to add a second HDD using VirtualBox? (Yes, I'm really sneaky).

He then pointed me to this link written by the esteemed Mr. Topper. It was kind of hard for me to believe at first, I am not sure I have read a "live" post by Mr. Topper in quite some time. Ah yes, the last post was June 5, 2008.

Brad: "Check out step 12, that's where you should start."

OK, step 12, Create the Partition. This is a VMWare guide, but the concepts are the same. I'm really not sure, but I opened up the Logical Volume Manager (LVM)

Opening the Logical Volume Manager

Which opened up this. What's this "Uninitialized Entities" section? I haven't seen that before.

I think I'll click on it.

That looks like my second HDD. Initialize Entity? Sure, why not?

LVM - Initialize Entity

Are you sure you want to initialize this entity? Everything on there will be lost!

LVM - Are you sure?

Do you want to create a single partition? Are you sure about that?

LVM - Single partition?  Positive?

OK, that's done. Now it appears iin the Unallocated Volumes section. Let's create a new Volume Group.

LVM - Create new Volume Group

I named it VolumeEBS, I suppose you can name it whatever you want.

LVM - Volume Group - VolumeEBS



How in the hell do I mount this thing?

(Brad is long gone now...we chatted for over an hour into the wee hours of the morning...I can't blame him. He was probably trying to escape after that second question).

Back to Matt's post. Honestly, I have no idea (yet) if this is the same command I performed via the GUI, but I did it anyway after a couple of unsuccessful attempts at mounting the drive.
[root@ebs chet]# /sbin/mkfs -t ext3 /dev/hdb1
mke2fs 1.39 (29-May-2006)
Filesystem label=
OS type: Linux
Block size=4096 (log=2)
Fragment size=4096 (log=2)
39321600 inodes, 78643199 blocks
3932159 blocks (5.00%) reserved for the super user
First data block=0
Maximum filesystem blocks=0
2400 block groups
32768 blocks per group, 32768 fragments per group
16384 inodes per group
Superblock backups stored on blocks:
32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208,
4096000, 7962624, 11239424, 20480000, 23887872, 71663616

Writing inode tables: done
Creating journal (32768 blocks): done
Writing superblocks and filesystem accounting information: done

This filesystem will be automatically checked every 39 mounts or
180 days, whichever comes first. Use tune2fs -c or -i to override.
Something good happened...I think.
[root@ebs chet]# mount -t ext3 /dev/hdb1 /install
[root@ebs chet]# ls /install
Win! Or is that FAIL!? I don't care. It's done.

I added the line (correctly this time) to /etc/fstab, rebooted and it's there.

Now, finally (finally), I can begin my install of EBS. The latest version has probably been released and the instructions are probably moot, but I managed something.

Monday, December 21, 2009

How Do You Normalize a Tweet?

Second post by Mr. Myers, you can read his first one, How To Kill a Code Review here. I have always liked design topics, I don't think they are covered enough on the web, which is why I liked this one. I have often wondered what trade-offs designers make for these types of applications (Twitter, Facebook, etc). Are they even "designed" by a data modeler? Or are they created by application developers? Not really sure it matters to those companies as they are successful (in a strange, no business model kind of way) and, I don't believe, represent many of the realities that we as Oracle professionals are likely to deal with.

Firstly, I don't tweet. Alex (Gorbachev) mentioned it at a Sydney meetup. I had a look, but didn't get entrenched and I assume there will be others out there who aren't tweeters. Suffice to say a 'tweet' is a message broadcast by a twitter user to the twitter consumers. They are up to 140 characters long.

So what's to normalise ? Isn't it just a value ? Even Oracle 6 could cope with VARCHAR2(140).

But actually, a tweet isn't just a simple value.
A search for "beer" would turn up all messages that included #beer.
Similarly, the @ sign followed by a username allows users to send messages directly to each other. A message with @example would be directed at the user [example] although it can still be read by anyone.
Source: Wikipedia

First normal form states
There's no left-to-right ordering to the columns.

Every row-and-column intersection contains exactly one value from the applicable domain (and nothing else).

All columns are regular [i.e. rows have no hidden components such as row IDs, object IDs, or hidden timestamps].
Source: Wikipedia

The problem is that the tweet "@tom Come for a #beer or #burger. Don't let @harry come" definitely has hidden components, but there is a sequencing in the message that is just as important.

In a practical implementation, we would probably have the following tables:
TWITTER_USERS        : username (eg @tom), date_joined, email....
TAGS : tag (eg #beer)
TWEETS : tweet_id (surrogate key), created_by (referencing twitter_user), created_timestamp, tweet_text...
TWEET_TAGS : tweet_id, tag (eg #beer)
TWEET_DESTINATIONS : tweet_id, username (eg @tom)
Our message would have the two child tag records (#beer and #burger) and two child destination records (@tom and @fred).

At the logical level, we are not properly normalized because we have the tweet_text duplicating information from the child entities and the potential for inconsistencies between them. We can say that the tweet just seems to contain duplicate information but it is really different. Is that just being picky ?

I am not suggesting the relational model is wrong, broken, incomplete or inadequate. Quite the reverse, in fact. In this case the value of the model is that it tells us the problems that will arise when we denormalise data.

For example, if @harry deletes his twitter account (because he was never invited for beers), do we delete the tweet_dest that referred to him or do we keep it and not enforce that referential integrity constraint ? If we delete the tweet_dest, we have an inconsistency between the tweet_text attribute and the tweet_dest child entities. Or maybe we delete the tweet entity itself and all its children. Those are really choices for the business (possibly with some legal implications though).

I don't have a solution to the logical model representation, and would be interested in feedback. But not by twitter please :)

Sunday, December 20, 2009

EBS Install Guide - Part 3

By John Piwowar [ blog | twitter ]
This is the third post in my "Installing E-Business Suite" series. Now that your Vision installation is (hopefully) complete, it's time to start exploring the system a bit. Thanks again to Chet for the opportunity to share here, and for his patience as I took longer than was strictly necessary to finish this installment.

Part 1 --> Part 2 --> Part 3 --> Part 4

It's impossible to provide a comprehensive overview of the various command-line utilities used to manage the E-Business Suite in the space of one (or even a few blog posts, but in this post I'll show you how to start and stop the services, and point you to a few references where you can learn more, if you're into that sort of thing. I don't ever claim perfect memory, but you can probably assume that anything you later discover to be missing was omitted to save space, not because I forgot about it.

Stopping EBS services
It's a good idea to shut down the EBS database ASAP after installation to take a full backup. Before you can shut down the database, you need to shut down the applications tier, or your system will probably become cranky. The "shut down everything" script for the apps tier is called, and it calls scripts to stop individual components and bring down the system in a (usually) graceful manner. Run as the applvis user:

[applvis@londo ~]$ $ADMIN_SCRIPTS_HOME/

You are running version 120.10

Enter the APPS username: apps
Enter the APPS password:
The logfile for this session is located at
Executing service control script:
/u01/ebs/R12VIS/inst/apps/R12VIS_londo/admin/scripts/ stop
script returned:
You are running version 120.3
Shutting down Fulfillment Server for R12VIS on port 9355 ... exiting with status 0

.end std out.
.end err out.

Executing service control script:
/u01/ebs/R12VIS/inst/apps/R12VIS_londo/admin/scripts/ stop
script returned:
You are running version 120.17.12010000.3
Shutting down concurrent managers for R12VIS ...
ORACLE Password:
Submitted request 5798328 for CONCURRENT FND SHUTDOWN exiting with status 0 check the logfile
for more information ...

.end std out.
.end err out.

Executing service control script:
/u01/ebs/R12VIS/inst/apps/R12VIS_londo/admin/scripts/ stop
script returned:
ERROR : Timed out( 100000 ): Interrupted Exception
You are running version 120.8
Stopping OPMN managed OAFM OC4J instance ...

Executing service control script:
/u01/ebs/R12VIS/inst/apps/R12VIS_londo/admin/scripts/ stop
script returned:
ERROR : Timed out( 100000 ): Interrupted Exception
You are running version 120.16
Stopping OPMN managed FORMS OC4J instance ...

Executing service control script:
/u01/ebs/R12VIS/inst/apps/R12VIS_londo/admin/scripts/ stop
script returned:
ERROR : Timed out( 100000 ): Interrupted Exception
You are running version 120.13
Stopping OPMN managed OACORE OC4J instance ...

Executing service control script:
/u01/ebs/R12VIS/inst/apps/R12VIS_londo/admin/scripts/ stop
script returned:
You are running version 120.7.12010000.2
Stopping OPMN managed Oracle HTTP Server (OHS) instance ...
opmnctl: stopping opmn managed processes... exiting with status 0 check the logfile
for more information ...

.end std out.
.end err out.

Executing service control script:
/u01/ebs/R12VIS/inst/apps/R12VIS_londo/admin/scripts/ stop
script returned:
**************************************************** version 120.3
Shutting down listener process APPS_R12VIS. exiting with status 0 check the logfile
for more information ...

.end std out.
.end err out.

Executing service control script:
/u01/ebs/R12VIS/inst/apps/R12VIS_londo/admin/scripts/ stop
script returned:
You are running version 120.6
Stopping Oracle Process Manager (OPMN) and the managed processes ...
opmnctl: stopping opmn and all managed processes... exiting with status 0 check the logfile
for more information ...

.end std out.
.end err out.**************************************************** with status 3 check the logfile
for more information ...
You may not see the timeout errors listed above for the 10gAS components, but you might, if your server is slow or particularly busy when you're trying to shut down services. Shutting down the apps tier can take a while, particularly while waiting for the concurrent managers to exit. Eventually, though, there shouldn't be any apps-related processes left running:
[applvis@londo ~]$ ps -ef  | grep applvis
applvis 16667 16665 0 19:55 pts/2 00:00:00 -bash
applvis 18927 16667 0 20:34 pts/2 00:00:00 ps -ef
applvis 18928 16667 0 20:34 pts/2 00:00:00 grep applvis
Once the apps are down, switch over to the database software owner (oravis) and shut down the database services. It's possible to do this using the normal lsnrctl and sqlplus commands you already know, but for purposes of completeness (i.e. egregious pedantry), we'll use the EBS-supplied wrapper scripts. First, use to stop the listener:
[oravis@londo ~]$ $ORACLE_HOME/appsutil/scripts/$CONTEXT_NAME/ stop R12VIS
You are running version 120.1.12010000.2
Logfile: /u01/ebs/R12VIS/db/tech_st/11.1.0/appsutil/log/R12VIS_londo/addlnctl.txt
Shutting down listener process R12VIS ... exiting with status 0
Finally, use to shutdown the database:
[oravis@londo ~]$ $ORACLE_HOME/appsutil/scripts/$CONTEXT_NAME/ stop immediate
You are running version 120.1

Shutting down database R12VIS ...

SQL*Plus: Release - Production on Sat Dec 12 20:44:35 2009
Copyright (c) 1982, 2008, Oracle. All rights reserved.
Database closed.
Database dismounted.
ORACLE instance shut down.
Disconnected from Oracle Database 11g Enterprise Edition Release - 64bit Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options exiting with status 0
Backing up the database is left as exercise for the reader, but I suggest using RMAN.

Starting EBS components
Okay, time to start everything back up, in reverse order of shutdown. First, the database listener:
[oravis@londo ~]$ export PATH=$PATH:$ORACLE_HOME/appsutil/scripts/$CONTEXT_NAME
[oravis@londo ~]$ start R12VIS
You are running version 120.1.12010000.2
Logfile: /u01/ebs/R12VIS/db/tech_st/11.1.0/appsutil/log/R12VIS_londo/addlnctl.txt
Starting listener process R12VIS ... exiting with status 0
Then, the database...
[oravis@londo ~]$ start
You are running version 120.1

Starting the database R12VIS ...

SQL*Plus: Release - Production on Sat Dec 12 22:29:22 2009
Copyright (c) 1982, 2008, Oracle. All rights reserved.
Connected to an idle instance.
ORACLE instance started.
Total System Global Area 521936896 bytes
Fixed Size 2161272 bytes
Variable Size 218105224 bytes
Database Buffers 289406976 bytes
Redo Buffers 12263424 bytes
Database mounted.
Database opened.
Disconnected from Oracle Database 11g Enterprise Edition Release - 64bit Production
With the Partitioning, OLAP, Data Mining and Real Application Testing exiting with status 0
You'll note that I also used the database downtime to downsize the memory footprint of the database a bit. I'll confess that I didn't do any careful testig to arrive at these values; I just whacked a bunch of parameters by 50%. Your mileage may vary. :-)

Finally, back to the applvis user to start up the apps. I'll demonstrate an alternate means of running that doesn't involve prompting for a password. This is also a legitimate way to call, but in both cases, be mindful that the password for the all-powerful APPS database user will be in your command history. Seems convenient on the surface, until you consider the security implications. Yes, it's just a test server, but safety begins in the sandbox. ;-)
[applvis@londo ~]$ apps/apps
You are running version 120.15
The logfile for this session is located at
Executing service control script:
/u01/ebs/R12VIS/inst/apps/R12VIS_londo/admin/scripts/ start
[[I'll spare your eyeballs the full, verbose startup of all the components. It's unsurprisingly similar to the output from running, and admit it, you didn't really read through that output in great detail either, did you? ]] check the logfile 
/u01/ebs/R12VIS/inst/apps/R12VIS_londo/logs/appl/admin/log/adstrtal.log for more information ...
Again, on a slower system you may get some timeout errors from the 10gAS components. For your peace of mind, you can check the status of those components with until the status of all the components reads, "Alive."

[applvis@londo ~]$ status
You are running version 120.6
Checking status of OPMN managed processes...
Processes in Instance: R12VIS_londo.londo.local
ias-component | process-type | pid | status
OC4JGroup:default_group | OC4J:oafm | 22974 | Alive
OC4JGroup:default_group | OC4J:forms | 22836 | Alive
OC4JGroup:default_group | OC4J:oacore | 22678 | Alive
HTTP_Server | HTTP_Server | 22619 | Alive exiting with status 0
Yay. Carry on, then.

Other important stuff
Now you know how to stop and start Oracle Applications. If you're just going to be exploring the apps as a hobbyist, that should be enough to get you going. There's a lot more to learn, however, if you're interested in understanding common EBS maintenance tasks, including:
  • adadmin: This utility is used to maintain objects in the Apps database and applications tier filesystem. Common tasks include recompiling invalid database objects, regenerating forms and reports files, and enabling and disabling maintenance mode (a required task during patching). adadmin is invoked by the applications owner (applvis in our case). To get an better idea of what adadmin does, type adadmin help=y from the command line, or just type adadmin to invoke its text-based menu system and explore from there.
  • Autoconfig: In the Dark Ages of Oracle Applications, making configuration changes in EBS was fraught with peril. Changing the value of a directory or port for an application server component could involve touching multiple config files, and missing one file could lead to confusing (at best) or disastrous (what's worse than disastrous?) results. Nowadays, Autoconfig takes care of configuration file management for you. The trade-off is that any manual changes made to Autoconfig-managed configuration files will be overwritten when Autoconfig is run. There are two versions of Autoconfig: one for the applications tier ($ADMIN_SCRIPTS_HOME/, and one for the database tier ($ORACLE_HOME/appsutil/scripts/$CONTEXT_NAME/ In general, you'll be using the apps tier version of Autoconfig much more frequently. It's worth noting that Autoconfig does not manage the database pfile or spfile; changes to database initialization parameters can be made without concerns about Autoconfig clobbering them.
  • adpatch: This may not be relevant to your current sandbox, but in the real world you are unlikely to run an unpatched EBS system. adpatch is the utility that drives the patching process for the applications tier file system and Apps database objects. It does not handle patching the database and application server ORACLE_HOMEs, however, you still get to use the trusty Opatch utility for that.
Almost done!
The 4th and final part of this little "scratching the surface of E-Business Suite" adventure will take a look at a few parts of the UI. You know what that means, right? Yup, more screenshots! I bet you can't wait!

  • Michael Taylor (mdtaylor), Oracle Ace and "installing EBS on unsupported versions of SUSE" guru (among other things), posted some recommendations on OTN for extreme downsizing of the memory consumed by the EBS database and concurrent managers.
  • My Oracle Support Doc 396009.1 breaks down the database initialization parameters for R12. Configure for the low end, unless you're really building out a Vision instance for use by lots of people, in which case you need to stop reading this guide before you get yourself into trouble. ;-)
  • If you're interested in setting up your applvis OS user's environment so that the Apps environment is sourced automatically and the various Apps administration utilities are added to your path at login, I know a guy who wrote not one, but two blog posts about that.
  • Chapter 4 of the Oracle Applications Maintenance Utilities guide covers the adadmin utility
  • The Oracle Applications Patching Procedures guide covers the use of adpatch, and the patching process in general
  • And, finally, Chapter 5 of the Oracle Applications Concepts guide discusses Autoconfig, and provides a context for use of the tool (that's a pretty bad pun, but only if you've read the guide).

Friday, December 18, 2009

Random Things: Volume #11

Work: Consulting
I just returned home from my first week consulting. I went to the northern part of Alabama and didn't have much of a connection (phone or data) most of the time.

From my perspective it was a rousing success. Now I just need to wait and see if the client approved of my work.

I chose to drive as it was semi-last minute (last Thursday I found out) and I haven't had a good road trip in years. I promise it wasn't a fear of flying.

On the way I picked up the guy I would be working with at the Atlanta airport. We had only (briefly) communicated through email and one "get up to speed" phone call. I think it's safe to say that we got along pretty well. After a couple of hours with the client the following day, they asked how long we had been working together and were absolutely shocked to learn that we had just met.

As to the work, I got to rekindle some of my OBIEE administration skills, specifically the rpd (or metadata). It was fun to get back into it as I had been prepping for this the past couple of weeks. By day 2 I was in a zone (adding physical tables, replacing logical table data sources, etc).

My colleague's expertise was in Answers, so I got to see some pretty cool stuff. I'm trying to talk him into blogging and offered him a guest slot to see if he likes it.

The clients were great and easy to work with...overall an A+.

Google Latitude
As I have a new blackberry (couldn't afford the droid yet), I managed to download my Google Contacts, GMail and most importantly, Google Maps...which ties in with Google Latitude.

I could see myself driving up I-75 and even better, I could expose my location to my wife and parents (I am an only child...the center of their universe :). I even tried to use it to find my phone which I had misplaced this afternoon (it had fallen under my seat) to no avail. Basically, I believe it uses the cell towers to approximate your location, the closest I saw it was within 800 meters.

Amusingly, as we're driving to Atlanta this afternoon and my father calls...WTF? he says. "I'm taking my colleague to the airport"

"Are you going back?"

"No, I'm headed home"

I had neglected to tell him that I would be there through Thursday...he of course thought the worse.

I have 2 pretty cool guest posts on the way. Mr. Meyers has one and Mr. Piwowar finally got to Part 3 of his EBS install guide. :) I'll post those next week so they don't get lost in the weekend down time.

Tuesday, December 15, 2009

Free Shipping for ORACLENERD T-Shirts!

For one day only, December 16th, tomorrow, free shipping on any orders from SpreadShirt.

Sadly, there is still no option to ship to India or Europe. I have been looking for shops in those locales that use the SpreadShirt API, but I have yet to find anything worthwhile.

Coupon Codes are:



Once you get one, you can send me a picture and I'll include it in the "In The Wild" gallery.

Saturday, December 12, 2009

OBIEE: Install on Windows

This install on Windows is not significantly different than it is on Oracle Enterprise Linux, in an effort to maintain my Learning OBIEE page, I felt it necessary.

I know there are differences between the different flavors of Windows, but it certainly doesn't feel like it. I remember installing a 9i EE Database on XP Home 6 or 7 years ago, that was kind of fun.

I'll stop blathering on.
Host: Ubuntu 9.04
Virtual stuff: VirtualBox
Guest OS: Windows Vista Ultimate

From what I understand, OBIEE was originally intended for Windows (Server) environments. All of the client software runs on Windows only. The Server software runs on both *nix and Windows.

So no matter what, I could not avoid a Windows installation. Part II of Installing on OEL would be "Installing the OBIEE Client Software", which is this post. I will not only be installing the Server components, I will be installing the Clients Applications too.

I'll stop blathering on...part II
I've already installed Java 6.

I've located my setup.exe file and start the installation


Specifying the directories, I accept the defaults. I'm also using OC4J. Next.

Complete. Next.

Point to the SDK, enter in my oc4jadmin password...hopefully I'll remember it this time.

Accepting the default, you don't need to enter anything here.

I am setting all the services to start manually. This is a virtual machine and do use it for other things. Next.

English. Next.

Summary. Next.

It's now running.

Small side note, OBIEE installer reported 100% within minutes of starting. It reported 100% completion for about 30 minutes.

Yeah, done. Some notes on OC4J. Next.

Restart your computer. Finish.

Almost 32 minutes to complete.

I've restarted the machine. 0C4J is started automatically (you can turn this off, and I will...eventually)

Now, go into your Services applet. To get there, go to Control Panel --> Administrative Tasks. There you should see an icon that says Services. Scroll down until you see the services that begin with Oracle.

All of these are stopped (trust me).

First up, start the Oracle BI Java Host Service

Next is the Oracle BI Presentation Server

Now let's test them out. Go to http://localhost:9704/


Now let's login. On the right side of that page, click on Launch. Enter the oc4jadmin password you submitted during installation.

That should take you here

Now for BI Publisher


And Analytics?


Now I just want to make sure I have all the applications.

Administration Tool


Catalog Manager


I'll save all the connecting of all the parts for a different post.