Sunday, December 19, 2021

important considerations for EBS database upgrade to 19C

 Nowadays, there is a huge demand for EBS DB upgrade to 19c because 19C database is the latest long term release. You can refer the below diagram on the Database releases and Support Timelines.




I did back to back EBS DB upgrade to 19c which you can refer in my previous posts https://samappsdba.blogspot.com/2020/12/upgrade-EBS-12.2-database-12c12.1.0.2-to-19c19.3-Part-1.html. Now, the purpose of this post is to make everyone aware of the different sort of issues which you can encounter while doing the upgrade and also, i have tried my best to provide the solutions. Also, i have  highlighted some basic terminologies which if known, will ease up the upgrade.


1. Source DB will become the PDB.

Your source Database will be converted into PDB and which then will be attached to CDB. So if your source DB sid is PROD, then your PDB will also be PROD.

2. Running hcheck.sql

This mainly reports the data dictionary issues and thus if you see any errors, you should seek an assistance from Oracle Support. This usually takes time, thus it is required to do this step in advance.

3. CDB listener

As part of 19c upgrade and multitenant conversion, the listener should be started with the CDB name.

4. Characterset Issue

While doing the upgrade, please note down the source characterset and make sure while creating the CDB, the same characterset options are choosen. If there are character sets mismatch, then you will get an error while doing the conversion to multitenant DB.

You can use the below query:-

select * from database_properties where PROPERTY_NAME in ('NLS_CHARACTERSET', 'NLS_NCHAR_CHARACTERSET');


 In order to know more about the various issues and their solutions, you can through the  metalink note 19c Database with Oracle E-Business Suite R12 Known Issues & Solutions (Doc ID 2662860.1)
 
I hope you find this note useful. Happy upgrade to 19c.



Sunday, December 5, 2021

Oracle E-Business Suite 12.2.10 Configuration for DMZ

 This post is about on how we can configure DMZ for Oracle E-Business Suite 12.2.10. Now what is DMZ? From the first tone, it sounds to be something related to Defence where you have a line or border beyond there are restrictive access. In Oracle terminology, the DMZ, which stands for DeMilitarized Zone consists of the portions of a corporate network that are between the corporate intranet and the Internet. The DMZ can be a simple one segment LAN or it can be broken down into multiple regions . The main benefit of a properly-configured DMZ is better security. In the event of a security breach, only the area contained within the DMZ is exposed to potential damage, while the corporate intranet remains somewhat protected.




Source-Metalink


In my setup, the external DMZ node is accessible through LB and also the application file system is not shared between primary and the external node. I had to manually setup the SSH. Also, the setup was done on a cloned environment and thus update hierarchy setup was already in place. Now coming to the steps.

1. Create passwordless connection between internal and external node

ssh-keygen(in the primary node)
this will create two keys private and public keys
copy the public key content and paste it to external node application user's authorized_hosts file.

2. In the primary node:-

update hierarchy type--Already done as part of clone from PROD


3. Add the secondary node:

prerequistes:-

a. Patch admin server should be up and running
b. External node should be able to telnet external host(run & patch file system) admin port
example

telnet internal.example.com 7001--run file system
telnet internal.example.com 7002--patch file system

If the connection fails:
1. In the run file system config.xml, remove any deny and bounce the admin server. Follow the same for patch file system.
If the above doesn't work, then in the respective admin console, context filter in the run/patch file system should be set from the admin console and then stop it from console and start it from server


In the primary

a.run adpreclone in the run & patch file system and in database tier
b. copy the below directories to the external tier

Run File System (FS1)     :  /u01/install/APPS/fs1/EBSapps
Patch File System (FS2)   :  /u01/install/APPS/fs2/EBSapps
Non-Editioned File System(fs_ne)  :  /u01/install/APPS/fs_ne


In the external tier


perl adcfgclone.pl appsTier dualfs

                     Copyright (c) 2002, 2015 Oracle Corporation
                        Redwood Shores, California, USA

                        Oracle E-Business Suite Rapid Clone

                                 Version 12.2

                      adcfgclone Version 120.63.12020000.65

Enter the APPS password :

Enter the Weblogic AdminServer password :

Enter the password for DataSource ISGDatasource :

Do you want to add a node (yes/no) [no] : yes

Verifying: Run file system AdminServer is running
Verifying: Patch file system AdminServer is running
Running: Context clone...

Once the run and patch file system is configured, edit the context file to put the LB details and port etc

CONTEXT VARIABLES TO BE CHANGED FOR THE ABOVE LBR CONFIGURATION

<webentryurlprotocol oa_var="s_webentryurlprotocol">https</webentryurlprotocol>

<webentryhost oa_var="s_webentryhost">partners</webentryhost>

<webentrydomain oa_var="s_webentrydomain">example.com</webentrydomain>

<activewebport oa_var="s_active_webport">443</activewebport>

<login_page oa_var="s_login_page">https://partners.example.com:443/OA_HTML/AppsLogin</login_page>

<EndUserMonitoringURL oa_var="s_endUserMonitoringURL">https://partners.example.com:443/oracle_smp_chronos/oracle_smp_chronos_sdk.gif</EndUserMonitoringURL>

<externURL oa_var="s_external_url">https://partners.example.com:443/OA_HTML/AppsLogin</externURL>

4. run autoconfig in the external tier


run file system

$ . ./u01/install/APPS/EBSapps.env run

$ $INST_TOP/admin/scripts/adautocfg.sh


patch file system

. ./u01/install/APPS/EBSapps.env patch

$ADJVAPRG oracle.apps.ad.autoconfig.oam.CtxSynchronizer action=upload contextfile=context.xml logfile=/tmp/patchctxupload.log


5. Sync Up the Context File and Update Configuration on All Nodes

 In the primary node

$ . ./u01/install/APPS/EBSapps.env run

$ perl $AD_TOP/bin/adSyncContext.pl contextfile=$CONTEXT_FILE

As part of node addition, all the nodes have the information of the managed servers of the other nodes. if these managed servers are not required, we need to delete the manage servers for the other nodes

perl <FND_TOP>/patch/115/bin/txkSetAppsConf.pl -contextfile=<CONTEXT_FILE> -configoption=removeMS -oacore=testserver1.example.com:7201 -forms=testserver2.example.com:7601

in the patch file system, repeat the above steps

In the external node

run file system

$ . ./u01/install/APPS/EBSapps.env run

$ perl $AD_TOP/bin/adSyncContext.pl contextfile=$CONTEXT_FILE

As part of node addition, all the nodes have the information of the managed servers of the other nodes. if these managed servers are not required, we need to delete the manage servers for the other nodes

perl <FND_TOP>/patch/115/bin/txkSetAppsConf.pl -contextfile=<CONTEXT_FILE> -configoption=removeMS -oacore=testserver1.example.com:7201 -forms=testserver2.example.com:7601

or 

from apps.conf and mod_ohs.conf file, the managed servers can be manually removed.

in the patch file system, repeat the above steps

6. Run autoconfig

On all the application nodes

run file system

run autoconfig

In the external nodes

In the primary node

Shut down the Admin Server and the Node Manager on the Patch Edition File System of the primary node as follows:

$ <ADMIN_SCRIPTS_HOME>/adadminsrvctl.sh stop

$ <ADMIN_SCRIPTS_HOME>/adnodemgrctl.sh stop

In the DB node

<RDBMS_OH>/appsutil/scripts/<CONTEXT_NAME>/adautocfg.sh

lsnrctl reload <ORACLE_SID>


7. Login to the internal application node


Profile option


"Node trust level" should be set to external for external server

update list of responsibilities to be visible in external node login page

"Responsibility trust level"  should be set to external for respective responsibilities


8. run autoconfig in internal and external node

    Bounce the services and check




Friday, November 5, 2021

Support implications for EBS R12.1.3|Upgrade to latest EBS 12.2

 If you are one of the customer who are still running Oracle EBS R12 and wanted to continue using Oracle E-Business Suite, now it is the time to upgrade and move on. As you might have read earlier, or even if you are not aware of,  EBS 12.1.3 premier support ending on Dec, 31st, 2021. For support policies on EBS, you can refer the below chart





What does it mean?

EBS 12.1.3 will move to  to Sustaining Support on January 1, 2022.

How does it impact me, if i still need some time to move to latest EBS 12.2.10

You have to use Market Driven Support(MDS) from Oracle by paying an extra amount. For more details, you can see the official Oracle Documentation https://www.oracle.com/a/ocom/docs/market-driven-support-for-e-business-suite.pdf


What sort of support provided by Oracle in Sustaining Support

Diagnostic assistance can be requested for EBS 12.1 issues and to download existing patches and documentation.  Sustaining Support does not include the following:

New updates, fixes, security alerts, data fixes, and critical patch updates

New tax, legal, and regulatory updates

New upgrade scripts

Certification with new third-party products/versions

Certification with new Oracle products


Thus, now it is the time if we still to leverage most favorite ERP which is being used by almost every corner of the world. If you need any assistance, you can visit my previous blog on how to upgrade EBS R12 to EBS 12.2 -https://samappsdba.blogspot.com/2017/10/oracle-e-business-suite-upgrade-from.html


References:-

https://blogs.oracle.com/ebstech/post/reminder-ebs-1213-moves-to-sustaining-support-on-jan-1-2022-updated




Monday, November 1, 2021

EBS 12.2.10: step by step multitenant cloning with 19c Database

 This post is not about how we normally do an EBS 12.2 cloning. You can search many blogs, articles over web. Well, in this post i am going to illustrate on how we can clone an EBS 12.2.10 environment where the Database is 19c multitenant with one CDB and one PDB. The main challenge comes when we want to do a restore the database and rename it based upon our target convention.


Did, any of the below questions come to your mind, when you are about to do these sort of clone

1. When we do a restore/recover the database which is multitenant in nature, then in the target, then how the database will be opened

2. Which script to use to achieve the multitenant clone for EBS

3. How to rename the PDB after clone




High level Steps:-

Run adpreclone on the source database and application nodes.

Back up the full Container Database (CDB) database with archives by using RMAN Hot backup and copy it to the target node.

Clean up the target database and application node.

Copy the source application binaries and database binaries to the target node.

Configure $Oracle_Home on the target database node.

Restore and recover the databases.

Perform post-restore steps on the Target database node.

Configure the application on the target application node.

Perform post-clone steps on the application node.

Start the target application services.


Steps:-

I am not going to explain the clone steps as there are already many blogs, articles available. I am going to jump directly on the main part on how to restore/recover the database. 


Create a pairs file:-


 cat pairsfile.txt

s_undo_tablespace=APPS_UNDOTS1

s_db_oh=/u02/oracle/ABCD/product/19c/db

s_dbhost=fjfjfjjfldw

s_dbSid=BORISPP2

s_pdb_name=PDB_name

s_cdb_name=cdb_name

s_base=/u02/oracle/ABCD/product/19c/base

s_dbuser=oracle

s_dbgroup=oinstall

s_dbhome1=/u03/oracle/ABCD/product/11.2.0.4/data

s_display=localhost:10.0

s_dbCluster=false

s_isDBCluster=n

s_dbport=1526

s_port_pool=6

This pairs file will be used to create the new context file.


Create the context file

perl adclonectx.pl \

contextfile=/u02/oracle/ABCD/product/19c/db/appsutil/PDB_0wbcvrjgtki7uqv.xml\

template=/u02/oracle/ABCD/product/19c/db/appsutil/template/adxdbctx.tmp \

pairsfile=/u02/oracle/ABCD/product/19c/db/appsutil/clone/pairsfile.txt


Configure the DB technology stack

perl adcfgclone.pl dbTechStack /u02/oracle/ABCD/product/19c/db/appsutil/PDB_0wbcvrjgtki7uqv.xml


Create the listener.ora and tnsnames.ora files for the target CDB by running the following commands:

1.Set the environment.

On UNIX:
$ cd /u02/oracle/ABCD/product/19c/db/appsutil
$ source ./txkSetCfgCDB.env -dboraclehome=/u02/oracle/ABCD/product/19c/db
Generate the listener.ora and tnsnames.ora.
$ cd <ORACLE_HOME>/appsutil/bin
$ perl txkGenCDBTnsAdmin.pl -dboraclehome/u02/oracle/ABCD/product/19c/db -cdbnameCDB \
-cdbsid=CDB -dbport=1526 -outdir=$ORACLE_HOME/appsutil/log \

where:
Parameter Description
Cdbname Name of the target container database.
Cdbsid Oracle SID of the target container database instance.
For single-node database, the value is same as the cdbname.
For Oracle RAC database, it is the Instance name of the target database.
Israc Provide the value 'yes' for an Oracle RAC database.
Provide the value 'no' for a single-node database.
virtualhostname Virtual hostname for the Oracle RAC database. For a single-node database, this parameter should not be used.

Start the listener for the target container database as follows:

On UNIX:
$ cd /u02/oracle/ABCD/product/19c/db/appsutil/scripts/PDB_0wbcvrjgtki7uqv.xml

./adcdblnctl.sh start CDB


Restore the database(Delete the existing datafiles if any before starting the process)

   Start the target in nomount using temporary init/spfile

 

 




set -x export TIMESTAMP=`date +%Y%m%d` export BACKUP_BASE=/u02/oracle/ABCD/product/19c/base export LOGFILE=/u02/oracle/ABCD/product/19c/base/DB_Duplicate-${TIMESTAMP}.log touch ${LOGFILE} rman log=${LOGFILE} << EOF connect auxiliary / run { allocate auxiliary channel aux1 device type disk; allocate auxiliary channel aux2 device type disk; allocate auxiliary channel aux3 device type disk; allocate auxiliary channel aux4 device type disk; allocate auxiliary channel aux5 device type disk; allocate auxiliary channel aux6 device type disk; allocate auxiliary channel aux7 device type disk; allocate auxiliary channel aux8 device type disk; allocate auxiliary channel aux9 device type disk; allocate auxiliary channel aux10 device type disk; allocate auxiliary channel aux11 device type disk; allocate auxiliary channel aux12 device type disk; set newname for datafile '/u03/oracle/ABCD/product/11.2.0.4/data/a_txn_ind02.dbf' to '/binaries/oracle/ABCD/data/a_txn_ind02.dbf'; set newname for datafile '/u03/oracle/ABCD/product/11.2.0.4/data/a_txn_ind10.dbf' to '/binaries/oracle/ABCD/data/a_txn_ind10.dbf'; set newname for datafile '/u03/oracle/ABCD/product/11.2.0.4/data/a_txn_ind15.dbf' to '/binaries/oracle/ABCD/data/a_txn_ind15.dbf'; set newname for datafile '/u03/oracle/ABCD/product/11.2.0.4/data/a_txn_ind21.dbf' to '/binaries/oracle/ABCD/data/a_txn_ind21.dbf'; set newname for datafile '/u03/oracle/ABCD/product/11.2.0.4/data/a_txn_ind33.dbf' to '/binaries/oracle/ABCD/data/a_txn_ind33.dbf'; set newname for datafile '/u03/oracle/ABCD/product/11.2.0.4/data/a_txn_ind38.dbf' to '/binaries/oracle/ABCD/data/a_txn_ind38.dbf'; set newname for datafile '/u03/oracle/ABCD/product/11.2.0.4/data/a_txn_ind46.dbf' to '/binaries/oracle/ABCD/data/a_txn_ind46.dbf'; set newname for datafile '/u03/oracle/ABCD/product/11.2.0.4/data/a_txn_ind47.dbf' to '/binaries/oracle/ABCD/data/a_txn_ind47.dbf'; duplicate database to 'CDB' backup location '/binaries/BKP_12210_TST002' nofilenamecheck; release channel aux1; release channel aux2; release channel aux3; release channel aux4; release channel aux5; release channel aux6; release channel aux7; release channel aux8; release channel aux9; release channel aux10; release channel aux11; release channel aux12; } EOF echo >> ${LOGFILE}

The DB will be open read write mode and the PDB name will have the source PDB name. Thus we will have to rename it based upon our target value

Rename the PDB
If any service already exists with the Target PDB name, delete it as follows:

[oracle@ABCD db]$ sqlplus / as sysdba

SQL*Plus: Release 19.0.0.0.0 - Production on Wed Sep 22 11:05:42 2021
Version 19.11.0.0.0

Copyright (c) 1982, 2020, Oracle.  All rights reserved.


Connected to:
Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production
Version 19.11.0.0.0

SQL> alter session set container="ABCDT02";

Session altered.
Run the following steps to rename the PDB.

[oracle@ABCD dbs]$ !sq
sqlplus / as sysdba

SQL*Plus: Release 19.0.0.0.0 - Production on Wed Sep 22 11:18:31 2021
Version 19.11.0.0.0

Copyright (c) 1982, 2020, Oracle.  All rights reserved.


Connected to:
Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production
Version 19.11.0.0.0

SQL> alter pluggable database "ABCDT02" close;
alter pluggable database "ABCDT02" close
*
ERROR at line 1:
ORA-65020: pluggable database ABCDT02 already closed


SQL> alter pluggable database "ABCDT02" unplug into '/u02/oracle/ABCD/product/19c/db/dbs/ABCDT02_PDBDesc.xml';

Pluggable database altered.

SQL> drop pluggable database "ABCDT02";

Pluggable database dropped.

SQL> create pluggable database "ABCDPP2" using '/u02/oracle/ABCD/product/19c/db/dbs/ABCDT02_PDBDesc.xml' NOCOPY SERVICE_NAME_CONVERT=('ebs_ABCDT02','ebs_ABCDPP2','ABCDT02_ebs_patch','ABCDPP2_ebs_patch');

Pluggable database created.

SQL> alter pluggable database "ABCDPP2" open read write;

Pluggable database altered.

SQL> alter pluggable database all open;

Pluggable database altered.

SQL> alter pluggable database all save state instances=all;

Pluggable database altered.

SQL>

Run the library update script against the Oracle database.

cd <ORACLE_HOME>/appsutil/install/<CONTEXT_NAME>
$ sqlplus / as sysdba @adupdlib.sql <libext>



Store the target UTL_FILE_DIR values in the target database

You can refer my earlier blog https://samappsdba.blogspot.com/2020/12/upgrade-EBS-12.2-database-12c12.1.0.2-to-19c19.3-Part-1.html on how to do this.


Configure the target database

cd /u02/oracle/ABCD/product/19c/db/appsutil/clone/bin
$ perl adcfgclone.pl dbconfig contextfile


In every cloning methodology, database cloning is the most vital part and if that is complete, half of the work is done. The application clone can be configured by using the adcfgclone.pl appsTier dualfs option, the steps for which i have not covered here and which is very straightforward.

I hope this can be helpful to someone. Till then happy learning




References:-Cloning Oracle E-Business Suite Release 12.2 with Multitenant Database using Rapid Clone (Doc ID 2552208.1)








   

Tuesday, October 5, 2021

Upgrade Oracle EBS R12 Database 12c to 19c(19.11) on AWS IaaS

 In this post, i am going to cover on how i did an upgrade of EBS R12 Database 12c to 19c(19.11) on AWS IaaS. The application EBS 12.1.3 was running on AWS EC2 and Database 12.1.0.2 was also running on AWS EC2. As per Database releases and Support timelines support for 12c database is soon going to end, whereas 19c has long term support.





For more information on the support policies, you can visit  Database support policies

Now coming to the actual work being done, the existing database size was having a size of 1.6TB. We had used DBUA to upgrade the database. As you might be aware with 19c DB comes the multitenant architecture and with EBS it comes with one container and one pluggable. In my previous posts, i have explained in step by step approach on how we can upgrade the EBS 12.1.0.2 DB to 19c running on compute in OCI. You can refer the following   https://samappsdba.blogspot.com/2020/12/upgrade-EBS-12.2-database-12c12.1.0.2-to-19c19.3-Part-1.html


In this particular post, i will only provide the details on how the upgrade can be achieved on AWS IaaS.
The most important part is doing the prerequisite checks because the Infrastructure is not Oracle and OS used was RHEL 7.



1. uname -a

cat /etc/redhat-release cat /etc/os-release

To determine if the required kernel errata is installed, enter the following command

uname -r it should be x64 /tmp----min 1 GB

swap space allocation relative to RAM (Oracle Database)

Between 1 GB and 2 GB: 1.5 times the size of the RAM Between 2 GB and 16 GB: Equal to the size of the RAM More than 16 GB: 16 GB Note: If you enable HugePages for your Linux servers, then you should deduct the memory allocated to HugePages from the available RAM before calculating swap space.

Use this procedure to gather information about your server configuration.

1. Use the following command to determine physical RAM size on the server: # grep MemTotal /proc/meminfo 2. Determine the size of the configured swap space: # grep SwapTotal /proc/meminfo free -g total used free shared buff/cache available If necessary, see your operating system documentation for information about how to configure additional swap space.

Determine the amount of space available in the /tmp directory:

# df -h /tmp If the free space available in the /tmp directory is less than what is required, then complete one of the following steps: • Delete unused files from the /tmp directory to meet the disk space requirement.

Checking Server Hardware and Memory Configuration

Determine the amount of free RAM and disk swap space on the system: # free

Determine if the system architecture can run the software:

# uname -m

Verify that the processor architecture matches the Oracle software release to install. For example, you should see the following for a x86-64 bit system:

x86_64 If you do not see the expected output, then you cannot install the software on this system.

6. Verify that shared memory (/dev/shm) is mounted properly with sufficient size:

df -h /dev/shm The df-h command displays the filesystem on which /dev/shm is mounted, and also displays in GB the total size and free size of shared memory.

start a terminal session and enter the following command as root, depending on your platform. For example:

• Oracle Linux 7 # yum install oracle-database-preinstall-19c Note: Use the -y option if you want yum to skip the package confirmation prompt.

check if all the rpms are installed or not

Oracle E-Business Suite Installation and Upgrade Notes Release 12 (12.2) for Linux x86-64 (Doc ID 1330701.1) rpm -qa --qf "%{n}-%{v}-%{r}.%{arch}\n" | grep libgcc curl -o oracle-database-preinstall-19c-1.0-2.el8.x86_64.rpm https://yum.oracle.com/repo/OracleLinux/OL7/latest/x86_64/getPackage/oracle-database-preinstall-19c-1.0-2.el8.x86_64.rpm curl -o compat-libstdc++-33-3.2.3-72.el7.i686.rpm https://yum.oracle.com/repo/OracleLinux/OL7/latest/x86_64/getPackage/compat-libstdc++-33-3.2.3-72.el7.i686.rpm curl -o compat-libstdc++-33-3.2.3-72.el7.x86_64.rpm https://yum.oracle.com/repo/OracleLinux/OL7/latest/x86_64/getPackage/compat-libstdc++-33-3.2.3-72.el7.x86_64.rpm rpm -ivh compat-libstdc++-33-3.2.3-72.el7.i686.rpm rpm -ivh compat-libstdc++-33-3.2.3-72.el7.x86_64.rpm yum install oracle-database-preinstall-19c-1.0-1.el7.x86_64.rpm If not using the pre-install rpm, the following packages must be installed from the Oracle Linux 7 or RHEL 7 distribution media on both the application and database tiers: • binutils-2.23.52.0.1-16.el7.x86_642 • compat-libcap1-1.10-7.el7.x86_64 • compat-libstdc++-33-3.2.3-71.el7.i686 • compat-libstdc++-33-3.2.3-71.el7.x86_64 not present • gcc-4.8.2-16.el7.x86_64 • gcc-c++-4.8.2-16.el7.x86_64 • gdbm-1.10-8.el7.i686 • gdbm-1.10-8.el7.x86_64 • glibc-2.17-55.el7.i686 • glibc-2.17-55.el7.x86_64 • glibc-common-2.17-55.el7.x86_64 • glibc-devel-2.17-55.el7.i686 • glibc-devel-2.17-55.el7.x86_64 • libaio-0.3.109-12.el7.i686 • libaio-0.3.109-12.el7.x86_64 • libaio-devel-0.3.109-12.el7.x86_64 • libgcc-4.8.2-16.el7.i686 • libgcc-4.8.2-16.el7.x86_64 • libgomp-4.8.2-16.el7.x86_64 • libstdc++-devel-4.8.2-16.el7.i686 • libstdc++-devel-4.8.2-16.el7.x86_64 • libstdc++-4.8.2-16.el7.i686 • libstdc++-4.8.2-16.el7.x86_64 • libXi-1.7.2-2.1.el7.i686 • libXp-1.0.2-2.1.el7.i686 • libXp-1.0.2-2.1.el7.x86_64 • libXtst-1.2.2-2.1.el7.i686 • make-3.82-21.el7.x86_64 • perl-File-CheckTree-4.42-3.el7.noarch • redhat-lsb-4.1-24.0.1.el7.x86_64 • sysstat-10.1.5-4.el7.x86_64 • util-linux-2.23.2-16.el7.x86_64 Additionally, the following RPMs are required for the database tier: • elfutils-libelf-devel-0.158-3.el7.x86_64 • libaio-devel-0.3.109-12.el7.i686 • xorg-x11-utils-7.5-13.1.el7.x86_64

Disabling Transparent Huge Pages

To disable Transparent HugePages: 1. For Oracle Linux 7 and Red Hat Enterprise Linux 7, add or modify the transparent_hugepage=never parameter in the /etc/default/grub transparent_hugepage=never Run the grub2–mkconfig command to regenerate the grub.cfg file. # grub2-mkconfig -o /boot/grub2/grub.cfg Restart the system to make the changes permanent. more /etc/oraInst.loc more /etc/oraInst.loc inventory_loc=/u02/oracle/oraInventory inst_group=oinstall Checking Resource Limits for Oracle Software Installation Users

Log in as an installation owner.:-

Check the soft and hard limits for the file descriptor setting. Ensure that the result is in the recommended range. For example: $ ulimit -Sn 1024 $ ulimit -Hn 65536  Check the soft and hard limits for the number of processes available to a user. Ensure that the result is in the recommended range. For example: $ ulimit -Su 2047 $ ulimit -Hu 16384  Check the soft limit for the stack setting. Ensure that the result is in the recommended range. For example: $ ulimit -Ss 10240 $ ulimit -Hs 32768 ulimit -Su 254341 ]ulimit -Hu 254341 ulimit -Ss—below the recommended value 8192 ulimit -Hs unlimited ]#  5. Repeat this procedure for each Oracle software installation owner. If necessary, update the resource limits in the /etc/security/limits.conf /database-installation-guide-linux.pdf--for 19c for all the checksCheck the NLS Settings select * from database_properties where PROPERTY_NAME in ('NLS_CHARACTERSET', 'NLS_NCHAR_CHARACTERSET'); PROPERTY_NAME -------------------------------------------------------------------------------- PROPERTY_VALUE -------------------------------------------------------------------------------- DESCRIPTION -------------------------------------------------------------------------------- NLS_CHARACTERSET WE8MSWIN1252 Character set NLS_NCHAR_CHARACTERSET AL16UTF16 NCHAR Character set PROPERTY_NAME -------------------------------------------------------------------------------- PROPERTY_VALUE -------------------------------------------------------------------------------- DESCRIPTION select * from nls_database_parameters where parameter='NLS_NCHAR_CHARACTERSET'; SQL> select * from nls_database_parameters where parameter='NLS_NCHAR_CHARACTERSET'; PARAMETER -------------------------------------------------------------------------------- VALUE ---------------------------------------------------------------- NLS_NCHAR_CHARACTERSET AL16UTF16


Download the 19C Binaries

Download the binaries for 19.3 from E-Delivery

 

 Unzip the 19c binaries under the Oracle HOME

 

 


check the target OS version

cat /etc/oracle-release

# cat /etc/redhat-release

# cat /etc/os-release

 

 

prepare the target DB server 

Oracle E-Business Suite Installation and Upgrade Notes Release 12 (12.2) for Linux x86-64 (Doc ID 1330701.1)


Before the DB installation in Source

Run hcheck.sql in source 12c database

 

 

Document 136697.1

Sqlplus / as sysdba

 

Spool hcheck.txt

@hcheck.sql

        

Verify Software version


Patches to apply, comments on them, and relevant Oracle E-Business Suite releases.

Patch 8796558

Patch 9239090 - Release 12.1.3

Check the AD/TXK version

select  ABBREVIATION, NAME, codelevel FROM AD_TRACKABLE_ENTITIES where abbreviation in ('txk','ad');

Patch 23569686 - R12.AD.B.delta.8

Patch 27135427 - R12.TXK.B.delta.4

Patch 30033914 - 19c interoperability patch for Release 12.1.3

Patch 27102203 

Patch 28613638

Patch 28685719

Patch 29178111

Patch 29583055

Patch 29905536

Patch 30370150

Patch 30601878

Patch 31209544

Patch 31406810

Patch 30824278 - Apply only for Windows.


Check SEC_CASE_SENSITIVE_LOGON

Create the initialization parameter setup files on Source DB

Run the following commands to create the $ORACLE_HOME/dbs/<ORACLE_SID>_initparam.sql and $ORACLE_HOME/dbs/<ORACLE_SID>_datatop.txt files.


19c Binary installation and the rest of the activities can be followed in my earlier posts where i have covered the step by step approach



Few important points while doing the upgrade on AWS

1. While using the logical host name, creation of PDB and CDB creation scripts accepts logical hostname as an input

2. We cannot create a restore point and enable flashback before converting the DB to multitenant. This is not supported. The only approach would be to take the rman full backup.

3. Context variable s_appltmp in the application context file should have only one physical path

4. Post patches example OJVM and DB patchset patches have to be applied to PDB also.



FAQ

1. is Oracle EBS certified to be run on AWS

Oracle has not certified it. However, for EBS, you just need the IaaS which is EC2 for application and database. Amazon will be only responsible for infrastructure and based upon Oracle EBS certification matrix, you can install any OS and run EBS on top of it


2. Can i use Amazon RDS for my EBS database needs?

No.

3. For EBS, shared Appl_Top what can i use in AWS

EFS



References:

1. Overview of Running Oracle E-Business Suite on AWS whitepaper-https://d1.awsstatic.com/whitepapers/migrate-oracle-e-business-suite.pdf?did=wp_card&trk=wp_card

2. https://blogs.oracle.com/ebsandoraclecloud/post/is-oracle-e-business-suite-certified-on-amazon-aws-ec2






Monday, August 30, 2021

troubleshooting database backups from OCI Console

 In this blog, we are going to check how we can troubleshoot OCI VM DB system Database console backups. OCI VM DB system is a PaaS product offering from Oracle and thus if we encounter any errors we will have to raise SR with Oracle and provide them the logs. But before going to Oracle support for OCI VM DB System backup issues, there are some checks which we can also do it from our side and can also resolve the issue in a much faster time frame. 

Well in cloud, everything is assumed to be done on click click and click. Things aren't so easy as it appears in the console. Underlying the console, there are various locations which we should be aware of for troubleshooting any stuff in OCI. I will go the console and show you first on how we can take the manual backup for OCI VM DB System.









Now, depending upon your DB Size, the backup will take time. Ultimately, once the backup process ends, you will see the below screen which will tell you whether the backup is completed or failed.



This is place where the actually help is required and troubleshooting will begin.



We will login to the DB server using the root user.



[root@reportingdb opc]# /opt/oracle/dcs/bin/dbcli list-databases ID DB Name DB Type DB Version CDB Class Shape Storage Status DbHomeID ---------------------------------------- ---------- -------- -------------------- ---------- -------- -------- ---------- ------------ ---------------------------------------- c2ea8791-d9c5-4ef5-abfe-a2bbf2b5cc6d TEST Si 19.6.0.0.0 true Oltp ASM Configured 6a48bd01-cb34-4734-b070-939db31b49df [root@reportingdb opc]#


Now we, will list down the jobs which had run against the database

[root@TEST opc]# /opt/oracle/dcs/bin/dbcli list-jobs|grep TEST|tail -10 9f50994c-1c6e-4aa6-9c47-25fa991a8b23 Remove Audit files for DB: TEST August 22, 2021 12:00:00 AM UTC Success f4930fbd-93a3-45bd-89b9-48428385f94c Remove Audit files for DB: TEST August 23, 2021 12:00:00 AM UTC Success 2fa4c328-4246-4a2d-b407-0fdc2a353668 Remove Audit files for DB: TEST August 24, 2021 12:00:00 AM UTC Success 628c9970-dcc3-40e6-b355-cb903715611b Remove Audit files for DB: TEST August 25, 2021 12:00:00 AM UTC Success 3a082250-47e7-4bb0-ae58-8ed34c44c55f Remove Audit files for DB: TEST August 26, 2021 12:00:00 AM UTC Success 565bea8e-ca5f-48de-9110-d4c99ca98e02 Remove Audit files for DB: TEST August 27, 2021 12:00:00 AM UTC Success 0ff5a34c-36ce-4b10-9632-48843b21fd53 Remove Audit files for DB: TEST August 28, 2021 12:00:00 AM UTC Success dbb49b4e-0035-46a7-9a74-dd493de8c264 Remove Audit files for DB: TEST August 29, 2021 12:00:00 AM UTC Success 2f77b738-be5f-4986-b264-34a619f42159 Remove Audit files for DB: TEST August 30, 2021 12:00:00 AM UTC Success 01edcd9a-553d-4117-9e98-e92b8c2aa23e update database : TEST August 30, 2021 8:57:04 AM UTC Failure [root@reportingdb opc]#


Let us check the failed one

[root@TEST opc]# /opt/oracle/dcs/bin/dbcli describe-job -i 01edcd9a-553d-4117-9e98-e92b8c2aa23e -j Error reading entity from input stream. [root@reportingdb opc]#


Now we don't get much information from here, so it is worth checking the dcs agent log


location:-/opt/oracle/dcs/log

{ "updatedTime" : "Mon Aug 30, 2021 08:57:23.072 (UTC) [1630313843072]", "startTime" : "Mon Aug 30, 2021 08:57:20.269 (UTC) [1630313840269]", "endTime" : "Mon Aug 30, 2021 08:57:23.069 (UTC) [1630313843069]", "taskId" : "TaskZJsonRpcExt_1860", "status" : "Failure", "taskResult" : "DCS-10045:Validation error encountered: OMF parameters.OMF parameter settings are not as per DbStorage Location ", "taskName" : "Validate OMF parameter values", "taskDescription" : null, "parentTaskId" : "TaskSequential_1843", "jobId" : "01edcd9a-553d-4117-9e98-e92b8c2aa23e", "message" : null, "tags" : [ ], "reportLevel" : "Error" } ], "createTimestamp" : "Mon Aug 30, 2021 08:57:04.662 (UTC) [1630313824662]", "percentageProgress" : "4%", "resourceList" : [ { "updatedTime" : "Mon Aug 30, 2021 08:57:04.679 (UTC) [1630313824679]", "resourceId" : "c2ea8791-d9c5-4ef5-abfe-a2bbf2b5cc6d", "jobId" : "01edcd9a-553d-4117-9e98-e92b8c2aa23e", "resourceType" : "DB" } ], "description" : "update database : TEST", "cause" : "*Cause: Parameter value validation failed.", "action" : "*Action: Provide correct parameter values for the operation."


Well, now we have some idea on where the DB backup might have failed. Looking into the Oracle support, we have hit the note id OCI Managed Backup Failing with: DCS-10045:Validation error encountered: OMF parameters.OMF parameter settings are not as per DbStorage Location (Doc ID 2771233.1). Well, few days back, we changed the DB recovery DEST location from +RECO to +DATA because of space issues and that is the reason, the backups are failing. Well, that's it. I tried to give an overview on how we can troubleshoot and collect the details when the Database backups are failed. Till then, happy learning Cloud.

Sunday, June 20, 2021

local users and IDCS users in simplified way in OCI

 Before jumping into the topic, let me take you to three questions which generally comes into my mind.

1. Is IDCS user and local users are same

2. Is OCI and IDCS same

3. What exactly is IDCS

OCI is Oracle Cloud infrastructure and it's cloud computing solutions same as MS azure or amazon AWS, but offered by Oracle and it's providing various services such as servers, storage, network, applications and services through a global network of Oracle Corporation managed by different data center around the world.

IAM refer to Identity and Access Management this is services allow you to control who can access to cloud resource and even control what type of access they have, and to which specific resource, there is different Components of IAM such as resource, user, group and more you can check Oracle documentation that provide also examples here

IDCS refer to Oracle Identity Cloud Service and it's consider as Identity-as-a-Service (IDaaS) solution, Oracle Identity Cloud Service provides identity management, single-sign-on (SSO) and identity governance for applications on-premise, in the cloud and mobile applications . Oracle IDCS integrates directly with existing directories and identity management system, making it easier for users to access applications. Providing a platform that is robust and secure, allows users to access, develop and deploy their applications.

For details, you can refer the Oracle docs:-https://docs.oracle.com/en-us/iaas/Content/Identity/Concepts/overview.htm


Now coming back to the actual demonstration, on how we can create local users and IDCS users and then how we can restrict users to particular resources. I have created the following resources

Compartment TEST

Group TEST_GROUP

A policy TEST_POLICY



Now in the identity federation menu option, create a local user and assign it to the group created above.



Once the user is created, an auto generated mail will be sent and user will be able to reset the password. As there is a policy assigned to this group, user will only be able to create the resources under compartment TEST.

Now coming to IDCS users.


Click on federation>and then click on the identity provider

Create IDCS group

 


Created the TEST group. Now i will create the IDCS users using the option



once the users are created, assign it to the newly created group TEST.

Now we will make the mapping of OCI group and IDCS user group and thus policy attached to the OCI group will also be applicable to IDCS group


Click on group mapping



Note: When we create an IDCS user, it is always advisable to have the local IAM user created also. In cases where if IDCS doesn't work, then atleast users will be able to login via local IAM credentials.





Monday, May 31, 2021

lift and shift of EBS 12.1 to OCI using Hybrid DR methodology

This post covers the high level steps on how we can Lift and Shift on prem EBS 12.1.3 with Database 11.2.0.4 to Oracle Cloud Infrastructure using Hybrid DR methodology. This Hybrid DR methodology is used when we want to Lift and Shift EBS to OCI using minimal downtime approach. The database in Oracle Cloud Infrastructure is running on VM DB system which is Oracle Cloud Infrastructure PaaS and application server in Compute which is Oracle Cloud Infrastructure IaaS. For more information on approach you can go through the Oracle Doc Hybrid DR . 

Before starting on the steps, there are some important notes which i want to highlight

1. This method is not certified by EBS ATG team. This was done as part of my POC and hence if you are doing it, you are at risk of not getting  support from EBS team. Few days back, Oracle had released the manual migration approach which you can also follow https://blogs.oracle.com/ebsandoraclecloud/ebs-to-oci-manual-migration-documents-available. I will be doing a POC on the manual approach now.

2. Please be aware of the support policies for EBS 12.1.3 and Db 11.2.0.4 for VM Db system. 

3. Once the migration is completed, the tablespaces should be encrypted in order of cloud tooling to work from VM DB system and activities such as taking backups from console etc

4. There should be a network setup between on prem and OCI either using Fast Connect, IPSec VPN or through public internet.

 

Sample Architecture


Coming to the steps, as part of DBCS provisioning in VM DB system , we need to delete the files  which were created as part of provisioning. Before deleting, i took one full backup of the database from the console

 







 Next, we will prepare the on prem Database for DR readiness and also take the backup of application

1. Enable Force logging in on prem db. 

 2. Add the standby logs in the on prem db. 

 3. Create the password file and transfer it to OCI DB home(Single node).

 

 

Delete the starter Database in OCI

 

[oracle@hybriddr on_prem_backup]$  srvctl config database PROD_iad3sv

[oracle@hybriddr on_prem_backup]$

 

SQL> set heading off linesize 999 pagesize 0 feedback off trimspool on

SQL> spool /tmp/files.lst

SQL> select 'asmcmd rm '||name from v$datafile

union all

select 'asmcmd rm '||name from v$tempfile

union all

select 'asmcmd rm '||member from v$logfile;  2    3    4    5

SQL> spool off

SQL> create pfile='/tmp/PROD_iad3sv.pfile ' from spfile;

SQL> exit

Disconnected from Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - 64bit Production

With the Automatic Storage Management and Real Application Testing options

 

 

[oracle@hybriddr on_prem_backup]$

 

Shutdown the database

First collect the configuration of the database for future reference:

 

[oracle@hybriddr on_prem_backup]$ srvctl config database -d PROD_iad3sv >/tmp/PROD_iad3sv.config

 

Now stop the database

[oracle@hybriddr on_prem_backup]$ srvctl stop database -d PROD_iad3sv -o immediate

 

[oracle@hybriddr on_prem_backup]$ chmod 777 /tmp/files.lst

 

Using grid user remove the unwanted lines and run the script

 

[grid@hybriddr ~]$ . /tmp/files.lst

 

 

Configure static listener

 

Add the following content to the listener of dbaas host

 

SID_LIST_LISTENER =

 (SID_LIST = (SID_DESC =

 (GLOBAL_DBNAME = PROD_iad3sv) (ORACLE_HOME =/u01/app/oracle/product/11.2.0.4/dbhome_1)

 (SID_NAME = PROD)

 ))

 

And reload the listener

[grid@hybriddr admin]$ lsnrctl reload

 

LSNRCTL for Linux: Version 19.0.0.0.0 - Production on 27-MAY-2021 08:55:35

 

Copyright (c) 1991, 2020, Oracle.  All rights reserved.

 

Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=IPC)(KEY=LISTENER)))

The command completed successfully

 

 

 

Configure the TNSnames.ora, sqlnet.ora files in both on prem and OCI database

 

Check the connection from on prem

 

[oracle@onprem-ebs admin]$ sqlplus sys/*****@PROD_IAD3SV as sysdba

 

SQL*Plus: Release 11.2.0.4.0 Production on Thu May 27 12:07:15 2021

 

Copyright (c) 1982, 2013, Oracle.  All rights reserved.

 

 

Connected to:

Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - 64bit Production

With the Automatic Storage Management and Real Application Testing options

 

SQL>

 

 

 

From OCI VM DB

 

[oracle@hybriddr admin]$ sqlplus system/*****@PROD

 

SQL*Plus: Release 11.2.0.4.0 Production on Thu May 27 12:07:38 2021

 

Copyright (c) 1982, 2013, Oracle.  All rights reserved.

 

 

Connected to:

Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - 64bit Production

With the Partitioning, OLAP, Data Mining and Real Application Testing options

 

SQL>

 

 

 

Modify the init parameters for redo shipping:-

 

In the source on prem add the below parameetrs

SQL> ALTER SYSTEM SET log_archive_config='dg_config=(PROD,PROD_iad3sv)' SCOPE=both;

 SQL> ALTER SYSTEM SET log_archive_dest_1='location=use_db_recovery_file_dest valid_for=(all_logfiles,all_roles) db_unique_name=PROD' SCOPE=both;

 

System altered.

 SQL> ALTER SYSTEM SET log_archive_dest_2='service=PROD_iad3sv async valid_for=(online_logfiles,primary_role) db_unique_name=PROD_iad3sv' SCOPE=both;

 

System altered.

 

SQL> ALTER SYSTEM SET fal_server='PROD_iad3sv' SCOPE=both;

 

System altered.

 

SQL> ALTER SYSTEM SET fal_client='PROD' SCOPE=both;

 

System altered.

 

SQL> ALTER SYSTEM SET standby_file_management='AUTO' SCOPE=both;

 

System altered.

 

SQL> alter system set log_archive_dest_state_2=defer;

 

System altered.

 

SQL>

 

 

 In dr

SQL> ALTER SYSTEM SET standby_file_management='AUTO' SCOPE=both;

 

System altered.

 

SQL> ALTER SYSTEM SET log_archive_config='dg_config=(PROD,PROD_iad3sv)' SCOPE=both;

 

 

take the backup of on prem database and transfer it to OCI

 Restore the Database




SQL> select open_mode,database_role from v$database;

 

OPEN_MODE            DATABASE_ROLE

-------------------- ----------------

MOUNTED              PHYSICAL STANDBY

 

 

In the primary

SQL> Alter system set log_archive_dest_state_2=enable scope=both sid='*';

 

System altered.

 

 

In the standby

Start the mrp

alter database recover managed standby database disconnect from session;

 

Database altered.

 

SQL> SELECT ARCH.THREAD# "Thread", ARCH.SEQUENCE# "Last Sequence Received", APPL.SEQUENCE# "Last Sequence Applied", (ARCH.SEQUENCE# - APPL.SEQUENCE#) "Difference" FROM (SELECT THREAD# ,SEQUENCE# FROM V$ARCHIVED_LOG WHERE (THREAD#,FIRST_TIME ) IN (SELECT THREAD#,MAX(FIRST_TIME) FROM V$ARCHIVED_LOG GROUP BY THREAD#)) ARCH, (SELECT THREAD# ,SEQUENCE# FROM V$LOG_HISTORY WHERE (THREAD#,FIRST_TIME ) IN (SELECT THREAD#,MAX(FIRST_TIME) FROM V$LOG_HISTORY GROUP BY THREAD#)) APPL WHERE ARCH.THREAD# = APPL.THREAD# ORDER BY 1;

 

    Thread Last Sequence Received Last Sequence Applied Difference

---------- ---------------------- --------------------- ----------

         1                     46                    46          0

 

 

 

 

 

Enable Autoconfig in the database


The complete step by step document is available at a price of $49. If you want the document, please contact me over samratsinha05@gmail.com/ Whatsapp-+91-8709658491