This note describes the process used to migrate the EBS Release 11i (11.5.10.2) 10g R2 database from a Solaris platform to a Linux 64 bit platform.
As part of the Release 12 upgrade preparation, rather than perform a Solaris/Linux platform migration and 11i to R12.1.3. upgrade at the same time, we are relocating the database to the Linux platform at an earlier stage.
The idea was to perform the following operations before the R12.1 upgrade and not as part of the upgrade project to lower the risk, complexity as well as down time. This has been advocated by Oracle as well as one of the best practices and the preferred approach.
Our current configuration was:
Two nodes (both Solaris)
Node A – database plus concurrent manager
Node B – Forms/Web
Remember, Linux 64 bit is not supported for the 11i Application Tier. It is only supported in R12.
So at this stage, we are only relocating the database to the Linux 64 bit platform.
The configuration after the database move will be:
Node A – concurrent manager (Solaris)
Node B – Forms/Web (Solaris)
Node C – Database (Linux)
This configuration will be interim until the Application Tiers are also migrated to Linux as part of the R12.1 upgrade.
Steps
On the Source (Solaris) Admin Tier:
1)
Download and apply patches 4872830 and 7225862.
2)
Connect as SYSTEM and run:
$AD_TOP/patch/115/sql/adclondb.sql 10
(This will create the scripts – adcrdb.sql and adpostcrdb.sql)
3)
Copy auque1.sql script from the $AU_TOP/patch/115/sql directory on the source administration server node to the source database server node
4)
Copy $AU_TOP/patch/115/import/auexpdp.dat from the source administration server node to the directory on the database server node where the export dump files are to be created
5)
Certain ConText and Spatial objects are not handled by the import process. The consolidated export/import utility patch 4872830 that was applied to the source administration server node earlier contains a perl script, dpost_imp.pl, that you can run to generate an AutoPatch driver file.
perl $AU_TOP/patch/115/driver/dpost_imp.pl dpostImp.drv
On the Source (Solaris) Database Tier:
As SYS as SYSDBA ….
1)
Purge the recycle bin.
SQL> purge dba_recyclebin
2)
Execute the auque1.sql script. This will generate the auque2.sql in the current directory.
SQL> @auque1.sql
3)
Create the directory for the Export Data Pump job
SQL> create directory dmpdir as ‘/u01/oracle/oraexp’;
4)
Edit the Export parameter file auexpdp.dat :
directory=dmpdir
dumpfile=aexp%U.dmp
filesize=1048576000
full=y
exclude=SCHEMA:”=’MDDATA'”
exclude=SCHEMA:”=’OLAPSYS'”
exclude=SCHEMA:”=’ORDSYS'”
exclude=SCHEMA:”=’DMSYS'”
exclude=SCHEMA:”=’OUTLN'”
exclude=SCHEMA:”=’ORDPLUGINS'”
#transform=oid:n
logfile=expdpapps.log
5)
Export the database
expdp “‘/ as sysdba'” parfile= auexpdp.dat
6)
After the export is complete, shut down the source (Solaris) database and listener.
On the Target (Linux) Database Tier:
1)
Create a working directory for all the database creation scripts
2)
Copy from the source admin tier $APPL_TOP/admin to this directory all these type of files:
*.pls
*.sql
3)
Edit the adcrdb.sql as required if the source and target servers have a different directory structure
Copy from the source database tier $ORACLE_HOME/dbs/init<SID>.ora to the target database $ORACLE_HOME/dbs
4)
Edit the init.ora as required if directory paths are different on source and target servers
For example we may need to change the parameters like Control_files, background_dump_dest, core_dump_deest, user_dump_dest, utl_file_dir
Comment out the parameters undo_tablespace and undo_management
5)
Create nls/data/9idata directory.
On the database server node, as the owner of the Oracle RDBMS file system and database instance, run the $ORACLE_HOME/nls/data/old/cr9idata.pl script to create the $ORACLE_HOME/nls/data/9idata directory.
Ensure the environment variable ORA_NLS10 points to this location.
6)
Ensure environment variables on the target database server have been properly set up – ORACLE_HOME and ORACLE_SID
7)
Create the target database instance
SQL> startup nomount pfile=’init<ORACLE_SID>.ora’;
SQL> @adcrdb.sql
8)
After target database instance created, shutdown the instance
Enable AUM in the database – remove the comments earlier made for the parameters undo_tablespace and undo_management
SQL> create spfile from pfile;
SQL> startup;
9)
Setup the SYS schema
As SYS as SYSDBA run
SQL> @addb1020.sql
10)
Setup the SYSTEM schema
Connect as SYSTEM/manager
SQL>@adsy1020.sql
SQL> @ adsysapp2.sql
11)
Install Java Virtual Machine
As SYSTEM
SQL> @adjv1020.sql
12)
Install other required components like XDB,OLAP, interMedia, ConText …
As SYSTEM
SQL> @admsc1020.sql FALSE SYSAUX TEMP
13)
Run adpostcrdb.sql script to convert tablespaces to locally managed
As SYS as SYSDBA
SQL>@adpostcrdb.sql
14)
Disable automatic gathering of statistics
SQL> shutdown immediate;
SQL> startup restrict;
SQL> @adstats.sql
Preparation for import
1)
Copy all the export dump files and the export parameter file from source database node to appropriate directory on the target database node
2)
If we have database objects which have external dependencies resolved via database links, then copy the target database tnsnames.ora file to the source database $ORACLE_HOME/network/admin. This will ensure objects based on database links will compile when the import is happening as well as when we run the utlrp.sql script after the import
3)
Shutdown and restart the database
4)
If ARCHIVELOG mode is enabled turn off archiving
5)
Create directory for Import Data Pump
6)
Set parameter resumable_timeout to 7200 (2 hours)
7)
Turn on autoextend for all the database data files as well as temporary files
8)
Edit the export parameter file – rename it to auimp.dat
directory=dmpdir
dumpfile=aexp%U.dmp
full=y
transform=oid:n
logfile=import.log
Importing the database
from a VNC session start the import
impdp “‘/ as sysdba'” parfile= auimp.dat
In our case database size was 150 GB and import took 6 hours.
Monitor the import log as well as the database alert log for any errors related to space or import data pump job hanging.
May encounter a MAXEXTENTS reached error for ‘DR$FND_LOBS_CTX$I’ and the import will hang – we will have to use the ALTER TABLE <table_name> storage (maxextents unlimited) command to resume the import data pump job in case it is hanging
After the Import
1)
Reset advanced queues
As SYS as SYSDBA run
SQL> @auque2.sql
2)
Run adgrants.sql
As SYS as SYSDBA run
SQL> @adgrants.sql <APPLSYS schema name>
3)
Grant create procedure privilege on CTXSYS
Connect as APPS user
SQL> @adctxprv.sql <SYSTEM password> CTXSYS
4)
Create OWA_MATCH package
Download patch 3835781 and unzip on the target database node
As SYS as SYSDBA
SQL> @patch.sql
5)
Gather statistics for SYS schema
shutdown normal;
startup restrict;
@adstats.sql
shutdown normal;
startup;
6)
Recompile INVALID objects
SQL> @?/rdbms/admin/utlrp.sql
7)
Compare object count in APPS and APPLSYS schemas in both source and target database – identify any missing objects
8)
Fix Korean lexers
sqlplus “/ as sysdba” @$ORACLE_HOME/ctx/sample/script/drkorean.sql
Note – the ctx/sample directory is installed when you install the Companion CD
Implement and run AutoConfig
(ensure database listener is running at this stage)
1)
connect as apps and execute the following
EXEC FND_CONC_CLONE.SETUP_CLEAN;
Commit;
2)
Create the appsutil.zip file
On the source Application Tier (as the APPLMGR user)
- Log in to the APPL_TOP environment (source the environment file)
- Create appsutil.zip file
perl <AD_TOP>/bin/admkappsutil.pl - This will create appsutil.zip in $APPL_TOP/admin/out .
On the Database Tier (as the ORACLE user):
- Copy or FTP the appsutil.zip file to the <RDBMS ORACLE_HOME>
- cd <RDBMS ORACLE_HOME>
unzip -o appsutil.zip
3)
Generate the database context file
cd <RDBMS ORACLE_HOME>
. <CONTEXT_NAME>.env
cd <RDBMS ORACLE_HOME>/appsutil/bin
perl adbldxml.pl tier=db appsuser=<APPSuser>
cd <RDBMS ORACLE_HOME>/appsutil/bin
adconfig.sh contextfile=<CONTEXT>
4)
After autoconfig has been run check if the FND_NODES table has been populated
As APPS
SQL> Select node_name,support_DB from FND_NODES;
5)
Now run autoconfig on the ADMIN and Forms/web server nodes
Change the XML files …. (in this case we have to provide details about the new Linux hostname, the listener port etc )
<jdbc_url oa_var=”s_apps_jdbc_connect_descriptor”>jdbc:oracle:thin:@(DESCRIPTION=(LOAD_BALANCE=YES)(FAILOVER=YES)(ADDRESS_LIST=(ADDRESS=(PROTOCOL=tcp)(HOST=KENS-ORASQL-001)(PORT=1521)))(CONNECT_DATA=(SID=CLMTS10G)))</jdbc_url>
<dbhost oa_var=”s_dbhost”>kens-orasql-001</dbhost>
<domain oa_var=”s_dbdomain”>corporateict.domain</domain>
<dbport oa_var=”s_dbport” oa_type=”PORT”>1521</dbport>
6)
After running autoconfig, check the FND_NODES table to ensure the right values are there for SUPPORT_CP, SUPPORT_FORMS, SUPPORT_WEB etc
7)
Ensure the environment variable APPLPTMP matches with the database UTL_FILE_DIR values
8)
From adadmin ….
select
“Recreate grants and synonyms for APPS schema” task from the Maintain Applications Database Objects menu
Compile flexfield data in AOL tables
9)
After the services have been started on the admin and web/forms tier connect to 11i Oracle Applications instance and run the concurrent request to create Create DQM indexes
Create DQM indexes by following these steps:
- Log on to Oracle Applications with the “Trading Community Manager” responsibility
- Click Control > Request > Run
- Select “Single Request” option
- Enter “DQM Staging Program” name
- Enter the following parameters:
- Number of Parallel Staging Workers: 4
- Staging Command: CREATE_INDEXES
- Continue Previous Execution: NO
- Index Creation: SERIAL
- Click “Submit”
10)
On the admin node use auto patch and run the driver file which was earlier generated
dpostImp.drv
Review MOS notes :
Interoperability Notes Oracle EBS Release 11i with Oracle Database 10.2.0.4 [ID 1135973.1]
10g Release 2 Export/Import Process for Oracle Applications Release 11i [ID 362205.1]