Kevin Kempf's Blog

September 3, 2015

More fun with 12c: Online datafile moves

Filed under: 12c — kkempf @ 1:50 pm

A long time coming

I think I’ve been wondering why I couldn’t do this since 9i

SQL> select name, enabled from v$datafile where name like '%vertex%';
NAME                                        ENABLED
--------------------------------------------------------------------------- ----------
/u05/appdev/devdata/vertex01.dbf                        READ WRITE


SQL> alter database move datafile '/u05/appdev/devdata/vertex01.dbf' to '/u06/appdev/devdata/vertex01.dbf';

Database altered.

SQL> select name, enabled from v$datafile where name like '%vertex%';
NAME                                        ENABLED
--------------------------------------------------------------------------- ----------
/u06/appdev/devdata/vertex01.dbf                        READ WRITE


SQL>

Oracle RDBMS 12c table restore

Filed under: 12c, RMAN — kkempf @ 7:37 am

Database 12.1.0.2

So I’m playing with 12c in a development environment with EBS 12.2.3, trying to understand some of the new features.  I don’t use FRA, because as an EBS DBA, there’s not much logic in restoring only one table back, or (worse) flashing the whole ERP back.  That said, this new RMAN feature is pretty cool, and best of all, it requires no effort on my part.

Custom Table

Nothing special here, just a custom schema table (yes, I removed the schema name references from this post so as to “anonymize” it a bit).  I get a row count, the current SCN, and then truncate the table

SQL*Plus: Release 12.1.0.2.0 Production on Wed Sep 2 16:35:16 2015
Copyright (c) 1982, 2014, Oracle.  All rights reserved.
Enter password:
 Last Successful login time: Wed Sep 02 2015 16:34:56 -04:00
Connected to:
 Oracle Database 12c Enterprise Edition Release 12.1.0.2.0 - 64bit Production
 With the Partitioning, OLAP, Advanced Analytics and Real Application Testing options
SQL> select count(*) from label_data;
COUNT(*)
 ----------
 232
SQL> column current_scn format 999999999999999
 SQL> select sysdate, current_scn from v$database;
SYSDATE        CURRENT_SCN
 --------- ----------------
 02-SEP-15    5982678044431
SQL> truncate table label_data;
Table truncated.

RMAN Restore/Recover of a Table

Now let's fix it with the new RMAN 12c feature, doing the work in /u05/appdev/restore and renaming the table to restored_label_data.  
The long and short of it is that RMAN does all the work for you.  It brings up a minimal instance, restores the table, then exports it 
into the restored table you specified, then wipes out the minimal instance.  It took awhile, about 30 minutes, but the main database 
was available the whole time.  I've removed some messages to save space, but you get the gist of it.  I suppose in some abstract and 
sampling manner, this also serves to test your RMAN backup to a degree.

RMAN> recover table label_data until scn 5982678044431 auxiliary destination '/u05/appdev/restore' remap table label_data:restored_label_data;
Starting recover at 02-SEP-15
 allocated channel: ORA_DISK_1
 channel ORA_DISK_1: SID=425 device type=DISK
 RMAN-05026: WARNING: presuming following set of tablespaces applies to specified Point-in-Time
List of tablespaces expected to have UNDO segments
 Tablespace SYSTEM
 Tablespace APPS_UNDOTS1
Creating automatic instance, with SID='degz'
initialization parameters used for automatic instance:
 db_name=DEV
 db_unique_name=degz_pitr_DEV
 compatible=12.1.0
 db_block_size=8192
 db_files=1000
 diagnostic_dest=/u01/appdev/oracle/devdb/12.1.0.2/log
 _system_trig_enabled=FALSE
 sga_target=2560M
 processes=200
 db_create_file_dest=/u05/appdev/restore
 p log_archive_dest_1='location=/u05/appdev/restore' #No auxiliary parameter file used
starting up automatic instance DEV
Oracle instance started
Total System Global Area    2684354560 bytes
Fixed Size                     3714440 bytes
 Variable Size                654312056 bytes
 Database Buffers            2013265920 bytes
 Redo Buffers                  13062144 bytes
 Automatic instance created
contents of Memory Script:
 {
 # set requested point in time
 set until  scn 5982678044431;
 # restore the controlfile
 restore clone controlfile;
# mount the controlfile
 sql clone 'alter database mount clone database';
# archive current online log
 sql 'alter system archive log current';
 }
 executing Memory Script
executing command: SET until clause
Starting restore at 02-SEP-15
 allocated channel: ORA_AUX_DISK_1
 channel ORA_AUX_DISK_1: SID=2 device type=DISK
channel ORA_AUX_DISK_1: starting datafile backup set restore
 channel ORA_AUX_DISK_1: restoring control file
 channel ORA_AUX_DISK_1: reading from backup piece /usr/local/oracle/backup/RMAN/DEV/c-3959101112-20150902-01
 channel ORA_AUX_DISK_1: piece handle=/usr/local/oracle/backup/RMAN/DEV/c-3959101112-20150902-01 tag=TAG20150902T012532
 channel ORA_AUX_DISK_1: restored backup piece 1
 channel ORA_AUX_DISK_1: restore complete, elapsed time: 00:00:03
 output file name=/u05/appdev/restore/DEV/controlfile/o1_mf_bygqo9w1_.ctl Finished restore at 02-SEP-15
sql statement: alter database mount clone database
sql statement: alter system archive log current
contents of Memory Script:
 {
 # set requested point in time
 set until  scn 5982678044431;
 # set destinations for recovery set and auxiliary set datafiles
 set newname for clone datafile  1 to new;
 set newname for clone datafile  2 to new;
 set newname for clone datafile  3 to new;
 set newname for clone datafile  4 to new;
 set newname for clone datafile  5 to new;
 set newname for clone datafile  295 to new;
 set newname for clone datafile  314 to new;
 set newname for clone datafile  8 to new;
 set newname for clone datafile  11 to new;
 set newname for clone datafile  288 to new;
 set newname for clone datafile  392 to new;
 set newname for clone datafile  20 to new;
 set newname for clone datafile  106 to new;
 set newname for clone tempfile  1 to new;
 set newname for clone tempfile  2 to new;
 set newname for clone tempfile  3 to new;
 set newname for clone tempfile  5 to new;
 # switch all tempfiles
 switch clone tempfile all;
 # restore the tablespaces in the recovery set and the auxiliary set
 restore clone datafile  1, 2, 3, 4, 5, 295, 314, 8, 11, 288, 392, 20, 106;
switch clone datafile all;
 }
 executing Memory Script
executing command: SET until clause
executing command: SET NEWNAME
executing command: SET NEWNAME
executing command: SET NEWNAME
executing command: SET NEWNAME
executing command: SET NEWNAME
executing command: SET NEWNAME
executing command: SET NEWNAME
executing command: SET NEWNAME
executing command: SET NEWNAME
executing command: SET NEWNAME
executing command: SET NEWNAME
executing command: SET NEWNAME
executing command: SET NEWNAME
executing command: SET NEWNAME
executing command: SET NEWNAME
executing command: SET NEWNAME
executing command: SET NEWNAME
renamed tempfile 1 to /u05/appdev/restore/o1_mf_temp_%u_.tmp in control file 
renamed tempfile 2 to /u05/appdev/restore/o1_mf_temp_%u_.tmp in control file 
renamed tempfile 3 to /u05/appdev/restore/o1_mf_temp_%u_.tmp in control file 
renamed tempfile 5 to /u05/appdev/restore/o1_mf_temp_%u_.tmp in control file
Starting restore at 02-SEP-15
 using channel ORA_AUX_DISK_1
channel ORA_AUX_DISK_1: starting datafile backup set restore
...
contents of Memory Script:
{
# set requested point in time
set until  scn 5982678044431;
# online the datafiles restored or switched
sql clone "alter database datafile  354 online";
# recover and open resetlogs
recover clone database tablespace  "DATA", "SYSTEM", "APPS_UNDOTS1", "SYSAUX" delete archivelog;
alter clone database open resetlogs;
}
executing Memory Script

executing command: SET until clause

sql statement: alter database datafile  354 online

Starting recover at 02-SEP-15
using channel ORA_AUX_DISK_1
channel ORA_AUX_DISK_1: starting incremental datafile backup set restore
channel ORA_AUX_DISK_1: specifying datafile(s) to restore from backup set
destination for restore of datafile 00354: /u05/appdev/restore/TQFR_PITR_DEV/datafile/o1_mf_data_bygtnmkg_.dbf
channel ORA_AUX_DISK_1: reading from backup piece /usr/local/oracle/backup/RMAN/DEV/6sqfujuo_1_1
channel ORA_AUX_DISK_1: piece handle=/usr/local/oracle/backup/RMAN/DEV/6sqfujuo_1_1 tag=BACKUP_DEV_INCR_083115010001
channel ORA_AUX_DISK_1: restored backup piece 1
channel ORA_AUX_DISK_1: restore complete, elapsed time: 00:00:01
channel ORA_AUX_DISK_1: starting incremental datafile backup set restore
channel ORA_AUX_DISK_1: specifying datafile(s) to restore from backup set
destination for restore of datafile 00354: /u05/appdev/restore/TQFR_PITR_DEV/datafile/o1_mf_data_bygtnmkg_.dbf
channel ORA_AUX_DISK_1: reading from backup piece /usr/local/oracle/backup/RMAN/DEV/93qg197k_1_1
channel ORA_AUX_DISK_1: piece handle=/usr/local/oracle/backup/RMAN/DEV/93qg197k_1_1 tag=BACKUP_DEV_INCR_090115010003
channel ORA_AUX_DISK_1: restored backup piece 1
channel ORA_AUX_DISK_1: restore complete, elapsed time: 00:00:01
channel ORA_AUX_DISK_1: starting incremental datafile backup set restore
channel ORA_AUX_DISK_1: specifying datafile(s) to restore from backup set
destination for restore of datafile 00354: /u05/appdev/restore/TQFR_PITR_DEV/datafile/o1_mf_data_bygtnmkg_.dbf
channel ORA_AUX_DISK_1: reading from backup piece /usr/local/oracle/backup/RMAN/DEV/baqg3so8_1_1
channel ORA_AUX_DISK_1: piece handle=/usr/local/oracle/backup/RMAN/DEV/baqg3so8_1_1 tag=BACKUP_DEV_INCR_090215010002
channel ORA_AUX_DISK_1: restored backup piece 1
channel ORA_AUX_DISK_1: restore complete, elapsed time: 00:00:01

starting media recovery

archived log for thread 1 with sequence 4156 is already on disk as file /usr/local/oracle/archive/DEV1880762303__4156.log
archived log for thread 1 with sequence 4157 is already on disk as file /usr/local/oracle/archive/DEV1880762303__4157.log
archived log for thread 1 with sequence 4158 is already on disk as file /usr/local/oracle/archive/DEV1880762303__4158.log
archived log for thread 1 with sequence 4159 is already on disk as file /usr/local/oracle/archive/DEV1880762303__4159.log
archived log for thread 1 with sequence 4160 is already on disk as file /usr/local/oracle/archive/DEV1880762303__4160.log
archived log for thread 1 with sequence 4161 is already on disk as file /usr/local/oracle/archive/DEV1880762303__4161.log
archived log file name=/usr/local/oracle/archive/DEV1880762303__4156.log thread=1 sequence=4156
archived log file name=/usr/local/oracle/archive/DEV1880762303__4157.log thread=1 sequence=4157
archived log file name=/usr/local/oracle/archive/DEV1880762303__4158.log thread=1 sequence=4158
archived log file name=/usr/local/oracle/archive/DEV1880762303__4159.log thread=1 sequence=4159
archived log file name=/usr/local/oracle/archive/DEV1880762303__4160.log thread=1 sequence=4160
archived log file name=/usr/local/oracle/archive/DEV1880762303__4161.log thread=1 sequence=4161
media recovery complete, elapsed time: 00:00:01
Finished recover at 02-SEP-15
...
ORA-06512: at "SYS.DBMS_METADATA", line 10261
   EXPDP> . . exported "LABEL_DATA"                    207.4 KB     232 rows
   EXPDP> Master table "SYS"."TSPITR_EXP_tqFr_jxbe" successfully loaded/unloaded
   EXPDP> ******************************************************************************
   EXPDP> Dump file set for SYS.TSPITR_EXP_tqFr_jxbe is:
   EXPDP>   /u05/appdev/restore/tspitr_tqFr_90139.dmp
   EXPDP> Job "SYS"."TSPITR_EXP_tqFr_jxbe" completed with 10 error(s) at Wed Sep 2 17:35:20 2015 elapsed 0 00:01:31
Export completed


contents of Memory Script:
{
# shutdown clone before import
shutdown clone abort
}
executing Memory Script

Oracle instance shut down

Performing import of tables...
   IMPDP> Master table "SYS"."TSPITR_IMP_tqFr_Bipd" successfully loaded/unloaded
   IMPDP> Starting "SYS"."TSPITR_IMP_tqFr_Bipd":  
   IMPDP> Processing object type TABLE_EXPORT/TABLE/TABLE
   IMPDP> Processing object type TABLE_EXPORT/TABLE/TABLE_DATA
   IMPDP> . . imported "RESTORED_LABEL_DATA"           207.4 KB     232 rows
   IMPDP> Processing object type TABLE_EXPORT/TABLE/GRANT/OWNER_GRANT/OBJECT_GRANT
   IMPDP> Processing object type TABLE_EXPORT/TABLE/STATISTICS/TABLE_STATISTICS
   IMPDP> Processing object type TABLE_EXPORT/TABLE/STATISTICS/MARKER
   IMPDP> Job "SYS"."TSPITR_IMP_tqFr_Bipd" successfully completed at Wed Sep 2 17:36:40 2015 elapsed 0 00:00:48
Import completed

sqlplus apps@dev Enter password: 
Last Successful login time: Thu Sep 03 2015 08:15:09 -04:00

Connected to:
Oracle Database 12c Enterprise Edition Release 12.1.0.2.0 - 64bit Production
With the Partitioning, OLAP, Advanced Analytics and Real Application Testing options

SQL> select count(*) from RESTORED_LABEL_DATA;

  COUNT(*)
----------
       232

SQL>



August 26, 2015

Fixing Enterprise Manager 12c Timeouts

Filed under: Enterprise Manager — kkempf @ 11:08 am

EM Timeout

Old Habits Die Hard

I have a monitor devoted almost exclusively to the performance page on my old EM 11g, still monitoring my main E-Business Suite production instance.  I can see at a glance if the system is busy, has blocking locks, massive I/O, etc.  It just feels comfortable and gives me a quick status at a glance.

Enter Enterprise Manager 12c.  I installed 12.1.0.5 and have it monitoring everything but my most important environments at this point.  It took a bit of getting used to, but eventually I got the hang of it and worked out the handful of issues I had with it.  The biggest problem I had from a usability standpoint was that it keeps timing out on the performance home page I’m trying to keep running on my 3rd monitor.  There’s even a checkbox which says “Disable Timeout on Performance Home Page”, but apparently it doesn’t do anything.  And yes, I’m aware of the security issues and why it’s in place; in my case this is not a concern (physical security > application security).

If you scour My Oracle Support, you may come across Doc ID 1644004.1, which tells you how to increase the timeout.  What it doesn’t tell you is that if you set the value of oracle.adf.view.rich.poll.TIMEOUT to -1, you disable the timeout altogether.

Not Quite Done

Nothing is ever simple.  Apparently after making this change, EM defaults to a 45 minute value for oracle.sysman.eml.maxInactiveTime which results in this screen

EMTimeout2

So you need to do this also:

emctl set property -name oracle.sysman.eml.maxInactiveTime -value -1 -sysman_pwd [your sysman password]

emctl stop oms

emctl start oms

June 24, 2015

Database 12c: Support, Installation Types, Costs and Clarifications

Filed under: 12c, Licensing — kkempf @ 10:45 am

Oracle-Database-12c

What the heck is this all about?

This is a bit off my usual rambling path, but because I think it’s important to understand I thought it a useful diversion.  Database 12c is out there, and hopefully you’re moving towards it.  That 11.2 database that you love because it works reliably?  It’s got one foot in the support grave.  So I started to research all of the implications and thought I might save you some time by summarizing what I found here.

Support Expiry

What’s the difference between premier, extended and sustaining?  You can find the official information here.

Premier

In short, I interpret premier as the “normal” state, where you can get support at your expected cost, security updates come out regularly, you can log bugs and support will create fixes as required.

Extended

When you wait too long to upgrade, you fall into the extended support bucket.  You lose some things.  For example, Oracle stops certifying products against this older release.

Sustaining

You’re way behind the curve.  Critical patches, and other rather critical updates stop rolling out unless they existed before sustaining support began.  Not where you want to be in production unless you have no other choice.

How much time do I have to migrate to 12c database?

Not much, unless Oracle throws out another premier support extension.  You can see the official GA information here(see page 4 for database); Oracle bases the support windows on what the General Availability (GA) date was for the release.  The bottom line is that as it stands right now, 11.2 is already out of premier support as of January, 2015.  Good news: they waived that for 1 year.  “NOTE: The fee for the first year of Extended Support for 11.2 has been waived for all customers. The Premier Support timeline has been extended one year to show that customers do not need to pay the Extended Support fee to receive Error Correction Support for that first year.

Now you have until January, 2016 to get to 12c, or you fall on extended support.  Who cares?  What’s the difference?  You better contact your sales rep, but I know in the past I’ve paid a support surcharge to stay on an older release (I didn’t have a choice, my 3rd party application wasn’t certified on the latest release yet) during extended support.  Here’s the official dates from Oracle:

RDBMS 11gR2 RDBMS 12c
GA Date September 2009 June 2013
Premier Support Ends January 2015 July 2018
Extended Support Ends January 2018 July 2021
Sustaining Support Indefinite Indefinite

Database 12c: Standard Edition One Versus Enterprise Edition, Container vs. Single Instance

This caused me a lot of confusion so I thought I’d clarify some things.  For anyone with their head in the sand, database 12c introduces multi-tenant.  In a nutshell, this means you can run multiple databases in one instance, and share the data dictionary overhead in the container (system, sysaux, and more) while the data lives in the pluggable.  It’s way more complicated than that, I know, but that’s the gist of it.

Standard Edition One Standard Edition Enterprise Edition Container Install In-Memory Feature
12.1.0.1 Yes Yes Yes Optional No
12.1.0.2 No No Yes Optional Yes

So what does this mean?  As of right now, if you’re running Standard Edition One 11g and trying to get to 12c, you cannot install 12.1.0.2, you must use 12.1.0.1.  It doesn’t ask you what version you want to put down, it only does Enterprise Edition!  During the process, the GUI asks you if you want to create the database as a container database.  If you’re uninterested in multi-tenant (or can’t afford it.. more on that in a moment) you can simply not check that box and you get what Oracle now refers to as a “Single Instance” database.

It gets more interesting with Standard Edition One.  I have a handful of production databases running on SE1, because I want them isolated from my big production instance, they don’t do much, etc.  Well why not consolidate these under one multi-tenant SE1 environment and make my life easier?  Because you’re not allowed to.  SE1 allows 1 container and 1 pluggable per license.  Why anyone would do that is a mystery to me, but that was the answer I received from Oracle sales.  I don’t know for certain if that also applies to Standard Edition but for Standard Edition One, you can’t run multiple pluggables.  Did I mention SE1 was designed to compete with M$ SQL Server and they’ve been doing their version of multi-tenant for years?

Break out your wallet

If you want to use any of the cool new features of 12c, including multi-tenant, bring your wallet to the negotiating table.  You can find list pricing here.  If you click on US Technology Commercial Price List, you will see that two of the most core, critical features of 12c come with an added cost:

Add On Cost Items

Multitenant In Memory
Named User Plus $350 $460
Software Update License & Support $77 $101.20
Processor License $17,500 $23,000
Software Update License & Support $3850 $5060

These two aren’t cheap.  Multitenant costs about an extra 33% of the base database price, and In-Memory almost 50%.  If you don’t know what In-Memory is, I’m not talking about the buffer cache.  You need to check it out, it’s amazing.

How does this pertain to EBS?

It’s complicated.  If you look at the good work being done by Steven Chan, you can see 12.1.0.2 was officially certified with EBS 12.1 last fall, and if you look at certify at support you can see for EBS 12.2 there are some “lagging” certifications (most notably dataguard, active dataguard, transportable tablespaces).

certs

Bottom line: do your homework, your mileage may vary.  I’d like to think that because these certifications came well after the RDBMS 12.1.0.2 GA date, Oracle might be generous and buy us EBS customers an exception with more time on 11gR2 or 12c, but you’d be foolish to count on it.

Parting Shot

This page includes tabs to downloadable .pdf’s of the 12c database architecture diagrams, performance/data dictionary view, background process descriptions, multitenant architecture, etc.

April 28, 2015

Security Patch Releases with EBS: Mission Impossible

Filed under: R12.2, Security — kkempf @ 12:33 pm

Regression Test Time

We’re about to enter our first R12.2 regression test.  High on my list is to get to Delta 6 on the AD/TXK side, and since the security patches just came out I figured I’d get up to date there.  For pretty good reason, we’re still running 11.2.0.4 base, and it took me some time to get the ETCC (patch 17537119) happy that I’ve got all the required patches.

Per 1967243.1 I figured I’d start with the core database.  Now we have combo PSU’s for database, OJVM, and GI, in addition to SPU’s and stand-alone PSU’s for each component.  It’s gotten complicated since I looked last!  The patches are all opatch installed; ideally I’d get the OJVM, SPU and PSU applied to the database home.

OJVM (20406239)

This is a documented problem on MOS.  Apparently, it’s not really cumulative, because I have to be on Oct 2014 or better security set to apply this.  Next.

The following make actions have failed :

Re-link fails on target “jox_refresh_knlopt ioracle”.

Do you want to proceed? [y|n]
n
User Responded with: N

 

PSU (20299013)

This one was even worse!

There are no patches that can be applied now.

Following patches have conflicts. Please contact Oracle Support and get the merged patch of the patches :
20488666, 20299013, 19791273, 19730032, 18260550, 17420796

Following patches are not required, as they are subset of the patches in Oracle Home or subset of the patches in the given list :
17811789, 19393542, 18828868, 18614015, 17892268, 17600719, 17468141, 16992075, 16929165

Following patches will be rolled back from Oracle Home on application of the patches in the given list :
20488666, 17811789, 19791273, 19730032, 19393542, 18260550, 18828868, 17420796, 18614015, 17892268, 17600719, 17468141, 16992075, 16929165

Conflicts/Supersets for each patch are:

Patch : 20299013

Bug Conflict with 20488666
Conflicting bugs are:
17912217 ETCC R12.2 requirement per 1594274.1

Bug Superset of 17811789
Super set bugs are:
17811789

Conflict with 19791273 ETCC R12.2 requirement per 1594274.1
Conflict details:
/u01/apptest/oracle/testdb/11.2.0.4/lib/libserver11.a:/ktsp.o
/u01/apptest/oracle/testdb/11.2.0.4/lib/libserver11.a:/kdc.o
/u01/apptest/oracle/testdb/11.2.0.4/lib/libserver11.a:/kdt.o
/u01/apptest/oracle/testdb/11.2.0.4/lib/libserver11.a:/ktsk.o
/u01/apptest/oracle/testdb/11.2.0.4/lib/libserver11.a:/ktsp.o
/u01/apptest/oracle/testdb/11.2.0.4/lib/libserver11.a:/ktsplb.o
/u01/apptest/oracle/testdb/11.2.0.4/lib/libserver11.a:/ktspsrch.o
/u01/apptest/oracle/testdb/11.2.0.4/lib/libserver11.a:/ktsp.o
/u01/apptest/oracle/testdb/11.2.0.4/lib/libserver11.a:/kdt.o
/u01/apptest/oracle/testdb/11.2.0.4/lib/libserver11.a:/ktsp.o

Bug Conflict with 19730032 ETCC R12.2 requirement per 1594274.1
Conflicting bugs are:
17174582,  18282562,  18244962,  17614134,  18674024,  17050888,  17478145,  18331850,  18964939,  17883081,  18436307

Bug Superset of 19393542
Super set bugs are:
19393542

Conflict with 18260550 ETCC R12.2 requirement per 1594274.1
Conflict details:
/u01/apptest/oracle/testdb/11.2.0.4/lib/libserver11.a:/kzd.o
/u01/apptest/oracle/testdb/11.2.0.4/lib/libserver11.a:/kzd.o

Bug Superset of 18828868
Super set bugs are:
18828868

Conflict with 17420796 ETCC R12.2 requirement per 1594274.1
Conflict details:
/u01/apptest/oracle/testdb/11.2.0.4/bin/lxinst

Bug Superset of 18614015
Super set bugs are:
18614015

Bug Superset of 17892268
Super set bugs are:
17892268

Bug Superset of 17600719
Super set bugs are:
17600719

Bug Superset of 17468141
Super set bugs are:
17468141

Bug Superset of 16992075
Super set bugs are:
16992075

Bug Superset of 16929165
Super set bugs are:
16929165

Security Patch Update 11.2.0.4.0 (20299015)

Surprise!

Conflicts/Supersets for each patch are:

Patch : 18203837

Conflict with 18260550 ETCC R12.2 requirement per 1594274.1
Conflict details:
/u01/apptest/oracle/testdb/11.2.0.4/lib/libserver11.a:/kzd.o

Patch : 19972566

Conflict with 18614015 ETCC R12.2 requirement per 1594274.1
Conflict details:
/u01/apptest/oracle/testdb/11.2.0.4/rdbms/admin/prvtutil.plb

Patch : 20506715

Conflict with 19730032 ETCC R12.2 requirement per 1594274.1
Conflict details:
/u01/apptest/oracle/testdb/11.2.0.4/lib/libgeneric11.a:/qcs.o

Patch : 20631274

Bug Superset of 17600719 ETCC R12.2 requirement per 1594274.1
Super set bugs are:
17600719

Following patches have conflicts: [   18260550   18203837   18614015   19972566   19730032   20506715 ]
Refer to My Oracle Support Note 1299688.1 for instructions on resolving patch conflicts.

Security or Compatibility: Why are these two at odds?

I’m trying to do the right thing, but Oracle is making it so hard to do that I’ve lost interest.  I don’t have a month to figure out what merged patches I need, what patch can go and what can stay. Why can’t there be a single note for EBS by version, with all patches for all components?  A database patch set which already deconflicted all the oddball ETCC requirements and delivered something which you could actually install out of the gate would make life much easier.

 

April 7, 2015

ADOP intelligent warnings, the ever-fluid recommended tech patches, and multiple versions of the truth

Filed under: R12.2 — kkempf @ 1:34 pm

So there I was..

Running adop phase=prepare in my production R12.2 environment, and I notice a warning on the screen and in the logs:

[WARNING]   The following required database bug fixes <19393542> are missing from this node, <database hostname>. Refer to My Oracle Support Knowledge Document 1594274.1 to identify the patch that delivers this bug fix.

This raises some questions:  How did adop know I needed a patch?  How serious is this?

Consolidated ≠ Updated

I went and pulled Consolidated List of Patches and Technology Bug Fixes (aka Doc ID 1594274.1) and it’s changed a bit since we went live.  Mind you, I expected to find patches in there we hadn’t applied as part of our go live; we locked our code last October before the upgrade.  What I didn’t expect was to find 14 patches on the database alone.  After some tedious cross checking of my inventory versus the document, I remembered checkDBpatch.sh (patch 17537119).

checkDBpatch.sh

Patch 17537119 is really cool. This little gem compares an .xml file in the patch with your inventory, and tells you what you’re missing.  Sweet!

$ unzip p17537119_R12_GENERIC.zip
Archive:  p17537119_R12_GENERIC.zip
inflating: README.txt
inflating: checkDBpatch.cmd
inflating: txk_R1220_DB_base_bugs.xml
inflating: checkDBpatch.sh
$ ./checkDBpatch.sh
+===============================================================+
|    Copyright (c) 2005, 2014 Oracle and/or its affiliates.     |
|                     All rights reserved.                      |
|               EBS Technology Codelevel Checker                |
+===============================================================+
Executing Technology Codelevel Checker version: 120.23
Enter ORACLE_HOME value : /u01/appprod/oracle/proddb/11.2.0.4
Is this a RAC environment [y/n] : n
Enter ORACLE_SID value : PROD
Bugfix XML file version: 120.0.12020000.20
Proceeding with the checks…
Getting the database release …
Setting database release to 11.2.0.4
DB connectivity successful.
Table to store Technology Codelevel Checker results exists in the database.
STARTED Pre-req Patch Testing : Tue Apr  7 14:29:20 EDT 2015
Log file for this session : ./checkDBpatch_6400.log
Got the list of bug fixes to be applied and the ones to be rolled back.
Checking against the given ORACLE_HOME
Opatch is at the required version.
Found patch records in the inventory.
All the required one-offs are not present in the given ORACLE_HOME
List of missing bug fixes:
14046443
14255128
16299727
16359751
17250794
17401353
18260550
18282562
18331812
18331850
18440047
18485835
18604144
18689530
18730542
18828868
19291380
19393542
19472320
19487147
19791273
19896336
19949371
** Please refer to MOS Doc ID “1594274.1:Oracle E-Business Suite Release 12.2: Consolidated List of Patches and Technology Bug Fixes” to find the corresponding patch that delivers the bug fix. If an overlay patch is needed for any particular patch listed, the footnote for that patch also applies to the overlay patch.**
Stored Technology Codelevel Checker results in the database successfully.
Apply the missing bug fixes and run the script again to confirm.
FINISHED Pre-req Patch Testing : Tue Apr  7 14:29:24 EDT 2015
=========================================================

One lies, one tells the truth

I realized that the output of checkDBpatch.sh did not agree with 1594274.1.  In fact, it contained more patches than 1594274.1.  I would have assumed they were aligned, and this is really confusing as a customer: Which one is the definitive source?

In the end, I went with the checkDBpatch.sh, since it was a superset of the information contained in the Consolidated List of Patches and Technology Bug Fixes.  Perhaps a name change is in order?

March 20, 2015

Installing Oracle Linux on your PC

Filed under: Oracle Linux — kkempf @ 9:16 am

robopenguin

A break from the usual

I’m not a big fan of Windows as a PC operating system in the workplace, at least for what I do every day.  For the past 4-5 years I’ve been running Ubuntu and I recently upgraded to their version 14.  It was fine, but being a Debian release it was still clumsy and some things were very awkward/required hacks to make work (for example, the Oracle client).  So I decided to try something new.  The only requirement was it had to pass some arbitrary usability threshold in my head, and be installable from a USB key because I don’t have a DVD drive.

Fedora 21

The screenshots looked promising, but in the end this was a debacle.  I followed the instructions on their website, which included how to create a bootable USB drive.  The download took forever for the smallish install, though when complete I had a bootable USB drive (after using the creation utility they recommended).  I booted to it, but once in the GUI it was really acting up.  I have two monitors, and the GUI kept going on and off between the two.  It made installing it really hard, and by the time I got to the disk partitioning part and it said I didn’t have enough room, I was done with this release.  To be fair, the PC had existing partitions on it, and they were encrypted, this may have been the issue.  I can’t believe this is a show stopper for an installer, but something wasn’t right.

Oracle Linux 6.6

Actually figuring out how to get the installer going is a bit tricky, and the essence of this post, but once installed I’m feeling like it’s where I’ll be for awhile.  I’m assuming you’re doing this from Windows; if that’s not the case, you will have to read up on how to create the USB drive from your operating system.  Here’s the path to happiness:

  • Get an 8GB or larger USB drive
  • Download the install
    • Go to Oracle E-Delivery
    • Sign away your life, and select Oracle Linux 6 Update 6 Media Pack for x86_64 (64 bit) or 32-bit I suppose if you’re into that
    • Here you’ll see 5 downloads, but we’re only concerned with 2
      • Oracle Linux Release 6 Update 6 for x86_64 (64 Bit)
      • Oracle Linux Release 6 Update 6 Boot iso image for x86_64 (64 bit)
    • OLdownloads
    • Now head over to Linux Live USB creator, and install it as a Windows application
      • Point this application at the smaller Boot ISO image (226MB one), select your USB drive as the target, hit go, and now your USB key is bootable
    • This is the part which tripped me up and caused some grief: after creating your boot key, copy the big raw ISO file (3.7GB) to the USB key also
      • After you configure the basics in the installer GUI, it needs this ISO to actually do the install
      • If you don’t do this, you get an error like: Missing ISO image The installer has tried to mount image #1, but cannot find it on the hard drive.
        • It seems possible that you could have this ISO on another USB drive and point it to it, but I had no success with it
        • It appears that the installer will not recognize a dynamic mount of a USB key in the middle of the process, so you can’t switch out keys or add a 2nd one
          • I even tried to put two USB keys in, booting from the small image and then pointing to the big ISO (on /dev/sdc) when the installer got confused but it didn’t work either
    • At this point, you just put the USB key into your PC, ensure USB is in the boot sequence at the bios level, and start the PC
    • Early in the installer, the TUI (text user interface: a big red box) asks where something is located.  I’m sorry I can’t be more specific, nor do I remember what it was looking for.  But I have the answer in general:
      • My PC is simple: one hard drive, and the USB drive
        • Linux sees these as sda1, sda2, sda3 (my hard drive, with 3 partitions) and sdb1 (my usb drive)
      • What it needs to be told is sdb1 (your USB drive) and then it chugs along happily

Warnings

I feel obligated to say that you have a strong chance of wiping out whatever is on your PC if you don’t know what you’re doing.  In my case, that was the whole idea, so the risk was low.  If your goal is to create a live USB operating system, or dual boot OS, that’s beyond the scope of what I’m talking about, and requires more/different steps.

Repos

Let’s assume you’ve installed the OS, and you’re booted to the GUI now.  You need to add the public yum repos to get updates

  • $ su –
  • # export http_proxy=http://username:password@yourproxy.company.com:port/  (skip if you don’t have a proxy, obviously requires some tweaking)
  • # wget http://public-yum.oracle.com/public-yum-ol6.repo -P /etc/yum.repos.d/
  • # yum update

Customizing Your Environment

It takes time to get all the pieces working; your requirements will be different from mine.  I’ll give you a few obvious ones

  • Java (JDK)
    • yum remove java-1.6.0-openjdk
    • yum remove java-1.7.0-openjdk
    • go download Oracle java
    • rpm -ivh *.rpm (it puts it in /usr/java/jdk…)
  • Java plugin for Firefox so you can run Forms in the Ebusiness Suite
    • $ cd ~/.mozilla/plugins
    • $ ln -s /usr/java/jdk1.7.0_67/jre/lib/amd64/libnpjp2.so   (substitute your version of java where I’ve listed jdk1.7.0_67)
  • SQL Developer
    • Go download the most recent version
    • rpm -Uvh sqldeveloper*rpm (it installs in /usr/local/bin)
    • $ cd /usr/local/bin/
    • ./sqldeveloper
    • when prompted, point it to your JDK installation
      • Type the full pathname of a JDK installation (or Ctrl-C to quit), the path will be stored in /home/kkempf/.sqldeveloper/4.0.0/product.conf
      • enter: /usr/java/jdk1.7.0_67 (obviously change your version to match)

You’re on your feet

The rest is up to you

 

March 9, 2015

R12.2 Apache won’t start up

Filed under: Linux, Oracle Linux, R12.2, Weblogic — kkempf @ 9:45 am

magnifying-glass-clipart-biy5E46iL

Mondays

I had to bounce my R12.2 non-production front end this weekend to switch kernels around.  I restarted services, but admit I didn’t pay much attention to them as it wasn’t PROD.  We run multiple instances of R12.2 on different port pools but on one host (well 2, one for the databases, one for the application servers). We do this not because I like it, but because we don’t have infinite budgets.  Regardless, I get a complaint that our audit environment isn’t working.  Sure enough, the login is unavailable, and Weblogic says the web tier process EBS_web_AUDIT is down.

Identify the problem: To the command line!

I try to simply start it in Weblogic but it errors out, and there’s far too many log links to click for this admin to stay in a GUI.   I run adapcctl.sh start and get:

You are running adapcctl.sh version 120.0.12020000.6

Starting OPMN managed Oracle HTTP Server (OHS) instance …

adapcctl.sh: exiting with status 204

Follow the bouncing ball

adapcctl.sh tells me to check my log file: $INST_TOP/logs/appl/admin/log/adapcctl.txt, and here’s what it tells me:

ias-instance id=EBS_web_AUDIT_OHS1
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
--------------------------------------------------------------------------------
ias-component/process-type/process-set:
  EBS_web_AUDIT/OHS/OHS/

Error
--> Process (index=1,uid=1810789619,pid=11169)
  failed to start a managed process after the maximum retry limit
  Log:
  /u02/appaudit/fs1/FMW_Home/webtier/instances/EBS_web_AUDIT_OHS1/diagnostics/logs/OHS/EBS_web_AUDIT/console~OHS~1.log


03/09/15-09:52:40 :: adapcctl.sh: exiting with status 204
[2015-03-09T09:38:34.0590-04:00] [OHS] [INCIDENT_ERROR:32] [OHS-9999] [worker.c] [host_id: (myhostname).com] [host_addr: (myipaddr)] [pid: 10527] 
[tid: 140534409107264] [user: oraaudit] [VirtualHost: main] (98)Address already in use: make_sock: could not bind to address [::]:10059
[2015-03-09T09:38:34.0590-04:00] [OHS] [INCIDENT_ERROR:32] [OHS-9999] [worker.c] [host_id: (myhostname).com] [host_addr: (myipaddr)] [pid: 10527] 
[tid: 140534409107264] [user: oraaudit] [VirtualHost: main] (98)Address already in use: make_sock: could not bind to address 0.0.0.0:10059
[2015-03-09T09:38:34.0590-04:00] [OHS] [INCIDENT_ERROR:20] [OHS-9999] [worker.c] [host_id: (myhostname).com] [host_addr: (myipaddr)] [pid: 10527] 
[tid: 140534409107264] [user: oraaudit] [VirtualHost: main] no listening sockets available, shutting down
[2015-03-09T09:38:34.0591-04:00] [OHS] [ERROR:32] [OHS-9999] [core.c] [host_id: (myhostname).com] [host_addr: (myipaddr)] [pid: 10527] 
[tid: 140534409107264] [user: oraaudit] [VirtualHost: main] Unable to open logs

Closing in

So it appears that my user (oraaudit) can’t get a port it wants (10059), and after a little hunting on Google I find the right syntax. I wanted to use netstat, but I couldn’t figure out the PID and lsof made it really easy:

# lsof -i:10059
COMMAND   PID     USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
java    13815 oratrain  305u  IPv6  82113      0t0  TCP (myhostname).com:10059->(myhostname).com:rds2 (ESTABLISHED)

Take down the suspect

It’s some random java process from another instance (Train). See ya.

# kill -9 13815
# lsof -i:10059

Restart Apache

adapcctl.sh start

You are running adapcctl.sh version 120.0.12020000.6

Starting OPMN managed Oracle HTTP Server (OHS) instance ...

adapcctl.sh: exiting with status 0

Nothing to see here

This is something most apps DBAs have seen at some time or in some form. The path to follow changes, but in the end the fix is usually similar to this. Knowing with certainty that it’s OK to kill the blocking PID is always a delicate task. There’s absolutely no way you could have fixed this from within the Weblogic admin console that I can think of, short of going into the other environment and shutting it down completely.

February 25, 2015

R12 Take Aways and Warnings, Part 3 (Java Clients, Dataguard with editioning, logs, crons and the Workflow Notification Mailer)

Filed under: 11g, Dataguard, R12.2 — kkempf @ 1:58 pm

warning

More R12.2 War Stories

I thought I’d go back to my R12.2 war stories today.  To be honest, I still have plenty to talk about even after this post, but a journey of a thousand miles begins with one step, right?

Java Clients

What a pain in the 4th point of contact.  We went into this upgrade knowing we wanted to deploy the most advanced Java client to the desktop (for forms) we could, so we didn’t have to deal with it.  Wow it’s a terrible hot mess.  We settled on 1.7.67.  Oracle, could we just call it 7.67?  Why do we need a 1 in front?  Sorry back to the topic at hand.  Java 7 is smart, and won’t run unsigned Jar files without much ado and many, many user clicks.  This is all good in the name of security, I suppose, but it sucks to administer.  At one point here I talked about the problems that arise.  Oracle tries to help mitigate this with a new product called Java Advanced Managment Console but it’s really new and really doesn’t seem to fully meet our needs.  So bottom line here: figure out how to get a java code signing certificate from your favorite CA (Thawte worked great for us) and what the new rules are for signing jar files.  You can search Enhanced Jar Signing on MOS, really you just need to understand adjkey to build the key, pick your CA, and use adjkey again to import the certificate.  Then you run adadmin (1,4) to regenerate jar files.

Dataguard

We utilize active dataguard with a physical standby against our 11.2.0.4 Linux x86_64 database.  You may think Dataguard is a curious topic for an R12 upgrade.  The truth is that the upgrade itself has little to do with dataguard; in fact I disabled it before starting the upgrade because a) I didn’t want to ship hundreds of gigabytes of data down the pipe and b) I had no faith it would actually work.  After I was done with the upgrade I rebuilt the dataguard environment using RMAN, and it crashed every week for 6 weeks.  There’s a few known issues out there, but the error manifested itself like this:

Sat Dec 13 14:17:30 2014
Errors in file /u01/appprod/oracle/proddb/diag/rdbms/proddg/PROD/trace/PROD_lgwr_24265.trc:
ORA-04021: timeout occurred while waiting to lock object
LGWR (ospid: 24265): terminating the instance due to error 4021
Sat Dec 13 14:17:30 2014
System state dump requested by (instance=1, osid=24265 (LGWR)), summary=[abnormal instance termination].
System State dumped to trace file /u01/appprod/oracle/proddb/diag/rdbms/proddg/PROD/trace/PROD_diag_24236_20141213141730.trc
Dumping diagnostic data in directory=[cdmp_20141213141730], requested by (instance=1, osid=24265 (LGWR)), summary=[abnormal instance termination].
Instance terminated by LGWR, pid = 24265

And now you have no dataguard!  After trying various patches (17588480, 19631234, and 16299727), it appears that the real problem was that dataguard didn’t handle editioning well and the answer was patch 16299727 and adding

_adg_parselock_timeout=500  # dataguard editioning fix
event=”16717701 trace name context forever, level 104887600″ # dataguard fix

to my pfile/spfile fixed the issue.

Logs

There’s lots of logs in R12.2.  Pretty safe, obvious statement, right?  Well you need to go figure out where they are, because they all moved in 12.2.  If you don’t, well you’re gonna have a mess or possibly run out of disk.  I cron’d up a bunch of find commands to get rid of them; obviously don’t paste blindly, you need to tweak the retentions to your needs.  Some of these are supposed to be covered by cleanup jobs, but I find this is a nice insurance policy:

# Remove old outputs $APPLCSF/out or /u02/appprod/fs_ne/inst/PROD_hostname/logs/appl/conc/out
0 8 * * 1 /usr/bin/find /u02/appprod/fs_ne/inst/PROD_hostname/logs/appl/conc/out -mtime +30 -type f -exec rm -rf {} \;
# Remove old reqs $APPLCSF/log or /u02/appprod/fs_ne/inst/PROD_hostname1/logs/appl/conc/log
0 8 * * 1 /usr/bin/find /u02/appprod/fs_ne/inst/PROD_hostname/logs/appl/conc/log -mtime +30 -type f -exec rm -rf {} \;
# Remove Weblogic oacore Server Logs
0 8 * * 1 /usr/bin/find /u02/appprod/fs1/FMW_Home/user_projects/domains/EBS_domain_PROD/servers/oacore_server1/logs -mtime +7 -type f -exec rm -rf {} \;
0 8 * * 1 /usr/bin/find /u02/appprod/fs2/FMW_Home/user_projects/domains/EBS_domain_PROD/servers/oacore_server1/logs -mtime +7 -type f -exec rm -rf {} \;
0 8 * * 1 /usr/bin/find /u02/appprod/fs1/FMW_Home/user_projects/domains/EBS_domain_PROD/servers/oacore_server2/logs -mtime +7 -type f -exec rm -rf {} \;
0 8 * * 1 /usr/bin/find /u02/appprod/fs2/FMW_Home/user_projects/domains/EBS_domain_PROD/servers/oacore_server2/logs -mtime +7 -type f -exec rm -rf {} \;
0 8 * * 1 /usr/bin/find /u02/appprod/fs1/FMW_Home/user_projects/domains/EBS_domain_PROD/servers/oacore_server3/logs -mtime +7 -type f -exec rm -rf {} \;
0 8 * * 1 /usr/bin/find /u02/appprod/fs2/FMW_Home/user_projects/domains/EBS_domain_PROD/servers/oacore_server3/logs -mtime +7 -type f -exec rm -rf {} \;
0 8 * * 1 /usr/bin/find /u02/appprod/fs1/FMW_Home/user_projects/domains/EBS_domain_PROD/servers/oacore_server4/logs -mtime +7 -type f -exec rm -rf {} \;
0 8 * * 1 /usr/bin/find /u02/appprod/fs2/FMW_Home/user_projects/domains/EBS_domain_PROD/servers/oacore_server4/logs -mtime +7 -type f -exec rm -rf {} \;
# Remove Weblogic Admin Server Logs
0 8 * * 1 /usr/bin/find /u02/appprod/fs1/FMW_Home/user_projects/domains/EBS_domain_PROD/servers/AdminServer/logs -mtime +7 -type f -exec rm -rf {} \;
0 8 * * 1 /usr/bin/find /u02/appprod/fs2/FMW_Home/user_projects/domains/EBS_domain_PROD/servers/AdminServer/logs -mtime +7 -type f -exec rm -rf {} \;
# Remove Weblogic Forms-c4ws Server Logs
0 8 * * 1 /usr/bin/find /u02/appprod/fs1/FMW_Home/user_projects/domains/EBS_domain_PROD/servers/forms-c4ws_server1/logs -mtime +7 -type f -exec rm -rf {} \;
0 8 * * 1 /usr/bin/find /u02/appprod/fs2/FMW_Home/user_projects/domains/EBS_domain_PROD/servers/forms-c4ws_server1/logs -mtime +7 -type f -exec rm -rf {} \;
# Remove Weblogic oafm Server Logs
0 8 * * 1 /usr/bin/find /u02/appprod/fs1/FMW_Home/user_projects/domains/EBS_domain_PROD/servers/oafm_server1/logs -mtime +7 -type f -exec rm -rf {} \;
0 8 * * 1 /usr/bin/find /u02/appprod/fs2/FMW_Home/user_projects/domains/EBS_domain_PROD/servers/oafm_server1/logs -mtime +7 -type f -exec rm -rf {} \;
# Remove Weblogic forms Server Logs
0 8 * * 1 /usr/bin/find /u02/appprod/fs1/FMW_Home/user_projects/domains/EBS_domain_PROD/servers/forms_server1/logs -mtime +7 -type f -exec rm -rf {} \;
0 8 * * 1 /usr/bin/find /u02/appprod/fs2/FMW_Home/user_projects/domains/EBS_domain_PROD/servers/forms_server1/logs -mtime +7 -type f -exec rm -rf {} \;
0 8 * * 1 /usr/bin/find /u02/appprod/fs1/FMW_Home/user_projects/domains/EBS_domain_PROD/servers/forms_server2/logs -mtime +7 -type f -exec rm -rf {} \;
0 8 * * 1 /usr/bin/find /u02/appprod/fs2/FMW_Home/user_projects/domains/EBS_domain_PROD/servers/forms_server2/logs -mtime +7 -type f -exec rm -rf {} \;
0 8 * * 1 /usr/bin/find /u02/appprod/fs1/FMW_Home/user_projects/domains/EBS_domain_PROD/servers/forms_server3/logs -mtime +7 -type f -exec rm -rf {} \;
0 8 * * 1 /usr/bin/find /u02/appprod/fs2/FMW_Home/user_projects/domains/EBS_domain_PROD/servers/forms_server3/logs -mtime +7 -type f -exec rm -rf {} \;
0 8 * * 1 /usr/bin/find /u02/appprod/fs1/FMW_Home/user_projects/domains/EBS_domain_PROD/servers/forms_server4/logs -mtime +7 -type f -exec rm -rf {} \;
0 8 * * 1 /usr/bin/find /u02/appprod/fs2/FMW_Home/user_projects/domains/EBS_domain_PROD/servers/forms_server4/logs -mtime +7 -type f -exec rm -rf {} \;
# Remove Weblogic wlst Server Logs
0 8 * * 1 /usr/bin/find /u02/appprod/fs1/FMW_Home/logs -mtime +7 -type f -exec rm -rf {} \;
0 8 * * 1 /usr/bin/find /u02/appprod/fs2/FMW_Home/logs -mtime +7 -type f -exec rm -rf {} \;
# Remove Weblogic OHS Logs
0 8 * * 1 /usr/bin/find /u02/appprod/fs1/FMW_Home/webtier/instances/EBS_web_PROD_OHS1/diagnostics/logs/OHS/EBS_web_PROD -mtime +7 -type f -exec rm -rf {} \;
0 8 * * 1 /usr/bin/find /u02/appprod/fs2/FMW_Home/webtier/instances/EBS_web_PROD_OHS1/diagnostics/logs/OHS/EBS_web_PROD -mtime +7 -type f -exec rm -rf {} \;

Crons

While we’re on the subject of cleaning up logs, let’s talk about crons.  If it weren’t for cron, my R12.2 environment would not run.  Period.  Besides cleaning up logs, I have crons to do things like

  • rotate MSCA ports (telnet server)
  • bounce MSCA (daily!  it’s horribly unstable)
  • monitor various R12 related things from the OS (for example, use curl in a shell script to ensure the front end login page is up)
  • bounce JVMs every week (really, you need to do this)
  • cleanup apps sessions which otherwise won’t timeout or die (more on this later, worst surprise of the upgrade)
  • preclone the apps tier

Workflow Notification Mailer

If you’re using this, especially if your mailer accepts IMAP/inbound email responses as a part of the workflow, make sure you understand how it looks in 12.2.  It does not survive the upgrade from 11i, and the screens are totally different.  As far as I can tell, they don’t require any new or additional information to work, they just changed around the configuration screens so as to confuse you.  Bottom line is this: it mostly works once you get it configured right, but you should be aware that there’s a patch 18842914 for the mailer which greatly improved its reliability.  I put that in because it kept crashing when some 3rd party server was spamming it with email bounces (yeah, I’m not going into that any further).

Coming Soon

I still haven’t covered the most annoying things… like adop, the techstack, custom tops, MSCA in general, report manger replacing the ADI desktop client, and having to manually kill sessions to keep the database from dying…

January 30, 2015

Determine Weblogic Server Version in EBS R12.2

Filed under: R12.2, Weblogic — kkempf @ 10:08 am

A diversion from my topic in progress

Stumbled across this via an analyst on an SR I was working, thought it might be useful for others.

$ cd $FMW_HOME/wlserver_10.3/server/lib

$ java -cp weblogic.jar weblogic.version

WebLogic Server 10.3.6.0 Tue Nov 15 08:52:36 PST 2011 1441050

Use ‘weblogic.version -verbose’ to get subsystem information

Use ‘weblogic.utils.Versions’ to get version information for all modules

« Newer PostsOlder Posts »

Create a free website or blog at WordPress.com.