Migrating Oracle developer 6i applications to Windows 2008 R2

October 13, 2016

Hi guys

Even though my blog has reached 600k+ visits, I am one of those “lucky” tech bloggers who is hardly reached through emails for some specific tips and helps.

One of the recent were about migrating from Developer 6i developed web deployment to Windows 2008 R2, and the asker decided to approach me through email after reading my post about installing Developer 6i suite on Windows 7 and later OS

There were many emails until I realized they have a web deployment! Using Developer 6i & I was truly impressed. Developer 6i setup was one of the toughest, when I tried it by 2004-2005 period and I truly given up once after a number of failures to setup it properly and “googling” wasn’t as efficient as today when a single search fetches you hundreds of blog posts those explain such setups minutely so that a beginner can, without sweating much could, almost setup anything!

The hacks I posted with my blog towards installing Developer 6i on Windows 7/later and Windows Servers did have it’s own drawbacks. Many of the Oracle products like Oracle graphs doesn’t work with the .dll hacks & we experienced unexpected crashes and I have made sure that I did warn the enthusiasts about them with my blog. Did it stop people from taking risks? I don’t think so

Our legacy Oracle database server hardware was 14 years old when we decided to finally decommission it. Many places around the world businesses never listen to the Administrators complaining about the age of hardware and how difficult it is to maintain obsolete hardware and software. Oracle database(proprietary) must be one of the widely used database without proper licensing and I hardly believe many small organizations will ever pay the unbelievable prices Oracle tries to extract from customers when they want to do proper licensing. Many of those environments may have new admins and the entire development teams dispersed or the software company that has developed the software diversified and started selling fish. Anyway, my asker’s situation was not far different. His hardware was obsolete and the company has brought him a new hardware with 4GB memory and he was desperately looking for a method to migrate from his Windows 2003 server to Windows 2008 R2 server

Can you/should you take risks by trying to migrate to a newer OS because there are “few hacks” available over internet?

I work as information technology manager and I will not let it happen, knowing and after having bad experiences. Instead I will try to find better solutions, like converting your Windows 2003 physical machine into a Virtual Machine and going online from a newer hardware and OS

Mr. Asker’s scenario

Windows 2003 Server with Developer 6i Web deployment and Oracle database 10g and his hardware has just 2GB memory!

His requirement

Want to start using the new hardware and Windows 2008 R2. Can’t take risks

My suggestion to him

  1. Use VMWare’s P2V converter, Convert the legacy server into a VM
  2. From the new hardware, run the VM

While I am NOT at all happy with the 4GB physical memory, I will suggest anyone who wants to go with such an approach to upgrade their hardware to have minimum 8GB so that the Windows 2008 R2 can reserve 4GB for itself, 3GB maximum for the 32Bit Windows 2003 Server and tweaking the Oracle database SGA to 40% of from the 3GB reserved for the VM!

Let us consider the few advantages of converting legacy hardware to virtual machines quickly

  1. One can always take a full backup of the VM, based on mission criticality, in addition to the database backups. Such backups will help the administrators to restore the whole “machine”, if something goes drastically wrong
  2. No headaches to figure out how the deployment was made, especially when there are hardly any documentations available explaining the setups

My asker got so excited that he stopped answering my consequent mails checking about progresses. That’s the downside of free consultancy in most of the cases. Oh well, that was not my first experience anyway. This year itself I helped someone to setup a 12c environment and when he was online, he told me how he had tears in his eyes and later he stopped answering my calls Winking smile

I hope I made some sense with this post and if you are someone who is frantically looking for a way to “Migrate” without risking much, give it a try. Have comments or need more clarifications? Use the comments area to let me know about them.

 

regards,

rajesh

Advertisements

Oracle Applications style “set_who” for custom applications

April 16, 2013

 

Why not? From our experiences, Oracle applications has one of the best transaction auditing approach, by logging who created and updated transactions while data is processed through a form based application.

Adapting the same methodology, recently we have created almost similar functionality for our upcoming custom applications. If you intend to use this solution with your own forms applications, make sure that your tables have the following four columns as mandatory.

ALTER TABLE BAC_MENU
ADD(
CREATED_BY    NUMBER    ,
CREATION_DATE    DATE    ,
LAST_UPDATE_DATE    DATE    ,
LAST_UPDATED_BY    NUMBER    
);

set_who procedure

PROCEDURE set_who IS
blk_name VARCHAR2(40);
curr_item VARCHAR2(40);
curr_mode VARCHAR2(40);
trx_date date := sysdate;
curr_user NUMBER;
BEGIN
	--Get the current block name
	blk_name := name_in(':SYSTEM.CURRENT_BLOCK');
	--Judge the current transaction mode
 	curr_mode := name_in(':SYSTEM.RECORD_STATUS');
 	--if you are passing login details 
 	--using global variables, adjust the following
 	--lines accordingly
 	curr_user := name_in(':PARAMETER.P_USER_ID');
 	
 	if curr_mode='CHANGED' then
 		COPY(curr_user,blk_name||'.LAST_UPDATED_BY');
 		COPY(to_char(trx_date,'dd/mm/yyyy HH24:MI:SS'),blk_name||'.LAST_UPDATE_DATE');
 	elsif curr_mode = 'INSERT' then
 		COPY(curr_user,blk_name||'.CREATED_BY');
 		COPY(to_char(trx_date,'dd/mm/yyyy HH24:MI:SS'),blk_name||'.CREATION_DATE');
 	end if;
 	
 	
--Mandatory columns with tables
--against which you will log
--the insert, update user details & time
/*
CREATED_BY
CREATION_DATE
LAST_UPDATE_DATE
LAST_UPDATED_BY
*/ 	
 	
  
END;
 
Now attach this procedure with individual forms or make it a part of a custom PL/SQL library for global calls
 
You can call the procedure from PRE-INSERT and PRE-UPDATE triggers at block level to achieve the scope.
 
Enjoy!
 
Regards,
 
Admin

Oracle E-Business Suite R12 Rapid forms development using Developer 6i forms

December 18, 2012

 

Moving from client server architecture to R12 based domains could be quite challenging for Oracle developers, especially those who have spent years, enjoying the flexibility of testing forms modules from the local development machines prior moving the “working” modules to the production instances.

Let us see the general development scenario for R12 instances.

  1. From 10g forms, connect to database
  2. open TEMPLATE.fmb and save as “XXMYFORM” etc
  3. Then keep on adding the elements

Now, move the form module to $AU_TOP/forms/US and compile it to respective application repositories

Create form, menu items…

A long list and the most frustrating is keeping on FTP the slightly modified forms module to the R12 instance to compile and testing.

We have came across a quick resolution for this PIA(Pain in the ASS) approach (for forms modules which do not use folder views) by using developer 6i (Uhu, beware Oracle fan boys would tell you, Oracle does not support developer 6i any further)

Create a template.fmb using Developer 6i forms

Change the system coordinates to use inches in the place of points

image

  1. Save the template.fmb
  2. Using save as, save your template.fmb as a new fmb file (eg: aa.fmb)
  3. Connect to apps database instance and start adding windows, canvases, blocks etc to the form and TEST IT locally!!!
  4. TEST it until the results are as expected.
  5. Make a backup for your working module (copy aa.fmb to bb.fmb for example)

 

Open your aa.fmb file, developed using forms 6i with Developer suite 10g forms designer (You will get prompts stating the possible conversions for triggers, coding etc)

Open TEMPLATE.fmb and save it as “MYAPPSFORM.fmb”

Now, please give maximum attention towards copying the objects from your 6i module which is opened with Developer 10g forms, TO your form module which will go to apps instance

  1. Copy all the windows you have created with 6i module to 10g forms
  2. Copy all the canvases you have created with 6i module to 10g forms
  3. Copy all the blocks you have created with 6i module to 10g forms
  4. Copy record groups, lovs, form level triggers if any

Now, try to compile the 10g form. If you have copied everything from 6i, this new form shouldn’t give you any compilation errors.

Move the form to apps instance, compile, create forms, menus and do final testing, confirming everything is working fine.

regards,

admin


Oracle Developer 6i & Oracle database 11g R2 (11.2.0.1.0)

December 16, 2012

 

A default installation of 11g R2 11.2.0.1.0 may not be very pleasant for Oracle developers who are still working with Developer 6i suite!

Our test lab installation has by default taken “NLS_CHARACTERSET AL32UTF8” as default database character set and we were unable to connect to the database from Developer 6i components like forms and reports.

As a workaround, we dropped the database and re-created it using database character set “WE8MSWIN1252” and later with “AR8MSWIN1256” as we needed Arabic support

An interesting discussion could be found here about the character set

Now, we are able to connect to the database, continue our development using developer 6i

Note: Please consult Oracle prior applying such workaround solutions to production environments. Our main intention was to find out a method to connect to 11g R2 database from Developer 6i products.

 

 

Regards,

admin