Friday, December 28, 2007

Google Gears and Oracle

Eric Farrar from Sybase iAnywhere made a good movie about how you can synchronize data from your Oracle database with google gears.

Google Gears is beta software offered by Google to enable off-line access to services that normally only work on-line. It installs a database engine, based on SQLite, on the client system to locally cache the data. Google Gears-enabled pages use data from this local cache rather than from the online service. Using Google Gears, a web application may periodically synchronize the data in the local cache with the online service. If a network connection is not available, the synchronization is deferred until a network connection is established. Thus Google Gears enables web applications to work even though access to the network service is not present.

As can be expected from Google there are already some example API's you can take a look at on the google code page.

There is also a movie about the new release here below:

Thursday, December 20, 2007

Oracle XML DB

Oracle just released a paper about “Managing Complex XML Data in Oracle XML DB 11g”. As XML is becoming more and more a standard in all kind of applications Oracle likes to stretch out more of the capabilities of XML within Oracle XML DB.

The paper will go into detail about the pros and cons of XML and using Oracle to store and maintain your XML structured data within the XML DB.

APP-PO-14376 error

When trying to receive some goods you can come across the error message as shown below in text or in the screenshot above here. There are a couple of possible reasons for this error message to appear. You have entered a date that is not in a open GL (General ledger) period, also known as a accounting period. It can be that you have made a mistake by entering the date, the second is that the date is correct however the period is not yet opened.

APP-PO-14376: Please enter a GL Date within an open purchasing period.

Cause: You provided a GL date that is not within an open purchasing period.

Action: Enter a date that is within an open period.

Or use the Control Purchasing Periods window to open the period corresponding to the date you entered. If you're using encumbrance/budgetary control, also open the GL period in the Open and Close Periods window.

If the date you entered is a valid date and the period is still closed you will have to open Purchasing GL period. You can do so via the Purchasing Super User responsibility. From here go to Setup - Financials - Accounting - Open and Close periods. You will be able to open or close a GL periode. After this is done you should be able to receive goods without any error message.

Tuesday, December 18, 2007

Oracle Jserv security.maxConnections

When tuning Oracle jServ you can encounter the security.maxConnections directive in the settings file. security.maxConnections, indeed, sets the max number of connections that jServ can concurrently handle. It can be very tempting to set this to a very high level, this is however not a good idea. First, you have to consider if your server would be able to handle the load of a high number of concurrent connections. Secondly the effect of this setting is related to the number of file descriptors your operating system can handle.

A file descriptor is a handle created by a process when a file is opened. There is a limit to the amount of file descriptors per process. On how to set / reset the max number of file handlers is something I already described in my post file-max and semmni parameters. So when trying to upgrade the max number of connections your system can handle this is something to remember and check before you tune the settings in your file.

Wednesday, December 12, 2007

Oracle: Uncosted Transactions

When trying to close a inventory period you might end up having some problems due to “Uncosted Transactions”. Uncosted Transactions are an indication you still have records pending in the mtl_material_transactions table. Normally the “Cost Manager” should clear this interface table and take action upon the records in the table. It could however that this concurrent process is somehow stopped or encountered an error during runtime.

To check this you can query the concurrent requests to see if a concurrent request named “Material cost transaction worker” is running. If this is not the case you most likely have a number of records in the mtl_material_transactions table. You can use the query below to check this:

select count(1)
from mtl_material_transactions
where costed_flag in ('N', 'E')
order by creation_date;

You will have to do some cleanup work before you can restart the process. First make sure the Cost Manager is NOT running. Now you have to check if there are error records. A error record is indicated by a “e” in costed_flag, you can use the query below to check the error records. You first have to solve the root cause of the error and than restart the Costing Manager.

select request_id, error_explanation, error_code, costed_flag
from mtl_material_transactions
where costed_flag in ('E')
order by creation_date;

After you have solved all the root causes of the error records you also have to take some action on the non processed records which are identified by the letter “N” in costed_flag. You will have to run the update statement below to set all those ready to be processed again.

set COSTED_FLAG = ‘N’,
where COSTED_FLAG = ‘E’ or COSTED_FLAG = ‘N’;

After you have taken those steps you can restart the Cost Manager again. Under the Inventory responsibility navigate to Setup – Transactions – Interface Managers. You have to set the frequency of the cost manager and start the cost manager from the Tools menu with the Launch Manager option. This should solve your problems. For more information you can check on Metalink note304313.1 and 105647.1 for more information and background details.

Monday, December 10, 2007

UKOUG presentations

Pete Finnigan posted the presentation papers of the presentations he gave at the UKOUG UK Oracle User Group conference .

He gave 3 presentations.

- Oracle Security Tools.
- Oracle Forensics.
- Oracle Security Masterclass.

All of them are a good read and it is a shame if you have not been there to view it in real life. However the download can give you a good impression of what you have missed and can bring you up to speed anyway.

Update Google maps mobile

In my previous post I reported on my first steps with Google Maps Mobile on my Nokia E61i. I reported that I had to turn of my 3G network. I think this is for a part true, however this morning my train was re-routed on a different track due to some problems and I was looking into the route I was traveling without having 3G turned off. It looks like that if your travel along a GPS tower it will take this as a location point and it will skip all those UMTS towers. UMTS has precedence above GPS on the cell network. So it will depend on your location and the towers surrounding you if you will get a location or not. I still do not know if google simply did not index UMTS towers or that the 3G signal is not working with the application. However, I will be able to get my approximate position anyway I only have to turn of 3G from time to time.

Friday, December 07, 2007

Google maps mobile with GSM

A new version of google maps mobile is released and has a new option. To locate you on the map. This could already be done by GPS but now google released a version which will use the GSM cell tower you are connected to to place you on the map.

I have installed it on my Nokia E61i and in the beginning this option was not working. However it turned out that if you are using a 3G network instead of a plain old GSM network. After setting it to GSM it worked like a charm.

Tuesday, December 04, 2007

rm: Argument list too long

I found out that I made a stupid mistake in a script I am running on a Linux box, the result of this was that there was send a e-mail to my mailbox every 5 minutes so after correcting the mistake I wanted to clean the junk in my Mailbox dir by simply deleting all the messages that where out there. However when issuing the rm command the system presented my with the following error message:

-bash: /bin/rm: Argument list too long

I found a great article on ( The solution to the problem was simply do a find and pipe it to xargs rm

find . -name '*'| xargs rm

This solved my problem of having 30270 files in a single location and the need of removing them without to much hassle.

Oracle RAC Cluster on Linux

Oracle released a paper on how to build your own Oracle RAC Cluster on Oracle Enterprise Linux and ISCSI. The guide will help you to build your own RAC cluster for under US$2600. I however states that this is only for a testing environment and not for a production environment. The paper will go over most basic points of your hardware environment and storage solutions.

On the storage part there are some notes that go “against” the use of a standard NAS/NFS and tend to go more for a Direct NFS Client approach, Direct NFS Clients will integrate NFS directly to Oracle and by doing this Oracle will be able to control and fine-tune the I/O path between the Oracle software and the NFS server resulting in significant performance gains. In the example however will be worked with a ISCSI solution.

For the rest it will guide you step by step installing all the nodes and setting up networking and other environment parts. A great guide when you like to start with RAC in a test environment.

Monday, December 03, 2007

Receiving transaction status Pending

When receiving goods in Oracle Inventory INV the lines will be stored in the RCV_TRANSACTIONS_INTERFACE table so a concurrent process can act upon the data in the table and make the needed changes to for example the current availability. In some cases it might happen that the transaction status stays on “Pending” when the Processing Mode is “Immediate”.

In those cases you can “forward” those records by doing the following steps:

Update rcv_transactions_interface rti
set processing_mode_code ='BATCH' ,
processing_status_code = 'PENDING' ,
transaction_status_code = 'PENDING',
processing_request_id = NULL,
validation_flag = NULL
where rti.interface_transaction_id in (17583, 17584);

After you committed this update statement you have to run the “Receiving Transaction Processor” concurrent request. The reason for the lines to be stuck can be for example that rvctp was not invoked because the concurrent manager was down.