Applications R11.5.6 and below requires to first upgrade to R11.5.10.2/10gR2
Applications R11.5.7 and up can be directly upgraded to R12
Database in all releases must have been upgraded to 10gR2
Install R12.1.1 Upgrade file system
In this step we will Install the Upgrade File System for R12.This would be the R12 Filesystem and it won’t be having any database associated with it for now, so it can be installed and kept ready prior to final cutover
Login to the Application Tier as Application owner using a VNC viewer.
Run RapidWiz.
Follow the screen shots as shown below :
This is the Welcome Screen ,click on Next
Click on Upgrade to Oracle Application Release 12.1.1 and click Next
you can skip this screen
Click on Create Upgrade File System and click Next
Click a port pool that is not used
Enter DB Node information
Note that it won’t connect to the database during installation.
This information is required to create configuration files in the system. The same information is used to create the database on the Linux DB node.
Enter the required apps user info.
Select Languages as required
Reveiew The Node Information and Click Next
Following Screen will appear once R12(12.1.1) File system is installed
Drop custom Triggers/Constraints/Indexes
Take backup of all custom Triggers, Constraints & Indexes and drop them.
Below scripts can be used :
ddl_<CUSTOM_STRING>_trig.sql ===>This will preserve defination of trigger name starting with <CUSTOM_STRING>
spool <CUSTOM_STRING>_trig_ddl.sql
select 'select dbms_metadata.get_ddl(''TRIGGER'','''||TRIGGER_NAME||''' ) from dual ;'from dba_triggers where TRIGGER_NAME like '% <CUSTOM_STRING> %' and table_name not like '%XX%';
ddl_xx_trig.sql===> This will preserve defination of trigger name starting with XX
spool xx_trig.sql
select 'select dbms_metadata.get_ddl(''TRIGGER'','''||TRIGGER_NAME||''' ) from dual ;'from dba_triggers where TRIGGER_NAME like '%XX%' and table_name not like '%XX%';
cust_xx_idx.sql===>This will Preserve defination for all XX indices
spool cust_xx_ddl_idx.sql
select 'select dbms_metadata.get_ddl(''INDEX'','''||INDEX_NAME||''','''||OWNER||''' ) from dual ;' from dba_indexes where index_name like 'XX%' and table_name not like '%XX%';
cust_ <CUSTOM_STRING>_idx.sql ===>Will preserve DDL for all <CUSTOM_STRING> indices
spool <CUSTOM_STRING>_idx_ddl.sql
select 'select dbms_metadata.get_ddl(''INDEX'','''||INDEX_NAME||''','''||OWNER||''' ) from dual ;' from dba_indexes where index_name like ' <CUSTOM_STRING>%' and table_name not like '%XX%';
cust_cons.sql ====>Will preserve all Constraints DDLs
spool cust_cons_ddl.sql
select 'select dbms_metadata.get_ddl(''CONSTRAINT'','''||CONSTRAINT_NAME||''','''||OWNER||''' ) from dual ;' from dba_constraints where CONSTRAINT_NAME like ' <CUSTOM_STRING>%' and table_name not like 'XX%';
b) After the DDLs are preserver run the driver sqls to generate the drop scripts(Can be done Prior to Cutover)
drop_xx_trig_drv.sql ====>Will generate drop_xx_trigg.sql
spool drop_xx_trigg.sql
select 'drop trigger ' ||owner||'.'||TRIGGER_NAME||';' from dba_triggers where TRIGGER_NAME like '%XX%' and table_name not like '%XX%';
drop_ <CUSTOM_STRING>_trig_drv.sql===>Will generate drop_ <CUSTOM_STRING>_trig.sql
spool drop_<CUSTOM_STRING>_trig.sql
select 'drop trigger ' ||owner||'.'||TRIGGER_NAME||';' from dba_triggers where TRIGGER_NAME like 'MDS%' and table_name not like '%XX%';
drop_idx_xx_drv.sql====>Will generate drop_idx_xx.sql
spool drop_idx_xx.sql
select 'drop index '||owner||'.'||INDEX_NAME||';' from dba_indexes where index_name like 'XX%' and table_name not like '%XX%';
drop_idx_ <CUSTOM_STRING>_drv.sql===>Will generate drop_idx_ <CUSTOM_STRING>.sql
spool drop_idx_ <CUSTOM_STRING>.sql
select 'drop index '||owner||'.'||INDEX_NAME||';' from dba_indexes where index_name like ' <CUSTOM_STRING>%' and table_name not like '%XX%';
drop_cust_cons_drv.sql===>Will generate drop_cust_cons.sql
spool drop_cust_cons.sql
select 'alter table '||owner||'.'||table_name|| ' DISABLE constraint '||CONSTRAINT_NAME||';' from dba_constraints where CONSTRAINT_NAME like 'MDS%' and table_name not like 'XX%';
Link R12 Apps to 10g DB
Login to the APPS tier and execute the environment Execute tnsping and try to conncect to the database
Fix APPL_TOP name
update FND_PRODUCT_GROUPS
set APPLICATIONS_SYSTEM_NAME ='<>' ;
commit;
Apply Maintenance mode
Execute adadmin to recreate grant and synonyms
Execute adadmin to enable mainteinance mode
Apply R12.1 Pre-patches
As per Note 798258.1
A) Patch 7461070 (Pre 12.1.1 ) patch should be merged with 9179588 and 9477107 ( APPROX 30 MINS TO APPLY)
B) Patch 7303029 along with Finance pre upgrade patch documented in 1127593.1
Download Patches mentioned in Fin_Pre_Upgrade_Patches doc , Patch#7303029 and merge them
Merge the pre upgrade patches and apply using
adpatch preinstall=y
SQL> alter package AD_FILE_UTIL compile;
Package altered.
SQL> begin AD_FILE_UTIL.Lock_Infrastructure; end;
2 /
PL/SQL procedure successfully completed.
SQL> alter package AD_FILE_UTIL compile body;
Package body altered.
Run adgrants.sql
Create a directory called
$ORACLE_HOME/appsutil/admin and copy $APPL_TOP/admin/adgrants.sql to that directory.
Connect to the database as the SYS user and run adgrants.sql passing the name of the schema containing FND tables.
For example, if the schema that contains FND tables in your database is called APPLSYS, you would run adgrants.sql as follows:
$ cd $ORACLE_HOME/appsutil/admin
$ sqlplus /nolog
SQL> connect / as sysdba
SQL> @adgrants.sql APPLSYS
Change sqlnet.ora
Pre 12.1.1 Work
Fix individual Drivers to prevent worker issues
A) Rename PO_SESSION_GT under APPS schema
SQL> select owner,object_name,object_type,CREATED from dba_objects where object_name='PO_SESSION_GT';
OWNER OBJECT_NAME OBJECT_TYPE CREATED
------------------------------ -----------------------------------------------------------------------------------------------------------------
PO PO_SESSION_GT TABLE 23-OCT-11
APPS PO_SESSION_GT TABLE 19-OCT-11
SQL> rename PO_SESSION_GT to PO_SESSION_GT_junk;
Table renamed.
B) Modify artax.odf
Modify artax.odf to make index AR_LOCATION_RATES_U2 non-unique
C) Modify $CSD_TOP/patch/115/odf/csdcsd1.odf
Modify $CSD_TOP/patch/115/odf/csdcsd1.odf to comment out following (Note #372945.1)
#2%START_OF_TABLE
# Table Name
#CSD_TEMP_ERRORS
# Application Id, Table Id
#512 115074
# Table Sequence
#540
# Initial Extent, Next Extent, Auto Size
#4K 100K autosize
# Minimum Extents, Maximum Extents, Pct Increase
#1 50 0
# Initial Transactions, Maximum Transactions, Pct Free, Pct Used
#1 255 10 70
#
# Column Name, Column Sequence, Null?, Column Type, Length, Precision, Scale,
# Column_id, Translate?, FKColumn?
# Default Value
#3%START_OF_COLUMNS
#RCV_TRANSACTION_ID 1 N N 22 NULL NULL 1261717 N N
#END_OF_STRING
#REPAIR_LINE_ID
2 N N 22 NULL NULL 1261718 N N
#END_OF_STRING
#ERROR_MESSAGE 3 Y V 2000 NULL NULL 1261719 N N
#END_OF_STRING
#3%END_OF_COLUMNS
# Primary Keys
#3%START_OF_PKS
#3%END_OF_PKS
#3%START_OF_FKS
#3%END_OF_FKS
#3%START_OF_INDEXES
#3%END_OF_INDEXES
#2%END_OF_TABLE
AND
# Object Name
#CSD_TEMP_ERRORS
# select, insert, delete, update; reference, alter, index; grant option
#Y Y Y Y N N N N
D) Modify invirev.odf
Modify invirev.odf to make Index MTL_ITEM_REVISIONS_B_U2 non-unique
E) Modify hxttab.odf
Modify hxttab.odf to make HXT_EARN_GROUP_TYPES_UK index non-unique
F) Modify asrmorgdef.sql
Modify asrmorgdef.sql to comment tables AS_INTERACTIONS_ALL and AS_NOTES_ALL per note#1263744.1
G) Disable Site level init.sql profile
SQL> select PROFILE_OPTION_VALUE,level_id from fnd_profile_option_values where PROFILE_OPTION_ID=3157 and level_id=10001;
PROFILE_OPTION_VALUE LEVEL_ID
-----------------------------------------------------------------------------------------------------------------------------
begin mo_global.init; xx_custom_tec.set_read_only; end; 10001
SQL> update fnd_profile_option_values set PROFILE_OPTION_VALUE=NULL where PROFILE_OPTION_ID=3157 and level_id=10001;
1 row updated.
SQL> commit;
H) Add extra datafile to XDOD TS for LOB extensions
alter tablespace xdod add datafile '<oradata>/xdod2.dbf' size 2G;
I) Fix for icxr12mi.sql
SQL> create table mtl_system_items_tl_desc_2000
as select * from mtl_system_items_tl where lengthb(long_description) >2000;
Table created.
SQL> update mtl_system_items_tl
set long_description=substr(long_description,1,1000)
where lengthb(long_description) >2000 ;
18 rows updated.
SQL> commit;
J) Run the following explicit grants
SQL> GRANT SELECT ON DBA_USERS TO APPS WITH GRANT OPTION;
Grant succeeded.
SQL> grant select on SYS.GV_$SESSION TO APPS WITH GRANT OPTION;
Grant succeeded.
10.Drop following Custom Policies
begin
dbms_rls.drop_policy (
object_schema => 'PA',
object_name => 'PA_AGREEMENTS_ALL',
policy_name => 'LBAC_RLSRCLC');
end;
begin
dbms_rls.drop_policy (
object_schema => 'PA',
object_name => 'PA_AGREEMENTS_ALL',
policy_name => 'LBAC_RLSRCLC2');
end;
begin
dbms_rls.drop_policy (
object_schema => 'PA',
object_name => 'PA_PROJECTS_ALL',
policy_name => 'LBAC_RLSRCLC');
end;
begin
dbms_rls.drop_policy (
object_schema => 'PA',
object_name => 'PA_PROJECTS_ALL',
policy_name => 'LBAC_RLSRCLC2');
end;
begin
dbms_rls.drop_policy (
object_schema => 'PA',
object_name => 'PA_AGREEMENT_TYPES',
policy_name => 'LBAC_RLSRCLC');
end;
begin
dbms_rls.drop_policy (
object_schema => 'PA',
object_name => 'PA_AGREEMENT_TYPES',
policy_name => 'LBAC_RLSRCLC2');
end;
---Verified by Functional
Apply the R12 upgrade patch
Merge the upgrade driver with preinstall
1.cd to $AU_TOP/patch/115/driver
2. Run the following
admrgpch -d . -preinstall -master u6678700.drv -merge_name 6678700
This will create a merge driver
Use adpatch "options=nocopyportion,nogenerateportion " to apply the Upgrade driver
Use 10 workers
Monitor the log and database fro any stuck driver
1.Change node_name in FND_CONCURRENT_QUEUES to new APP server
Configure R12.1.1
1.Generate appsutil and send it to DB Tier
2. Clean FND_NODES table
3 Create appsutil for DB node
4.Run autoconfig in DB tier
5. Run rapidinstall and configurethe Upgraded instance
Check Application
1. Check Web Tier
2. Check CM