Thursday, 15 June 2023

Oracle Database upgrade From11.2.0.2 to 11.2.0.4 Step by Step

 Environment Summary : 

12c Database running on Unix Enviroment(HP-UX) ,PROD-Active Node-EASYDBSERVER And Passive Node-EASYDBFAILVERSERVER with Standby Database running on server Standby-EASYDBSTANDBYRSERVER 

Upgrade Oracle DB from 11.2.0.2 10 11.2.0.4    (HP-UX)  EASYDB


Complete Checklist for out-of-Place Manual Upgrade from Previous 11.2.0.N Version to the Latest 11.2.0.N Patchset (Doc ID 1276368.1)

         

Pre-Requiste  Database Upgrade on  EASYDBSERVER  (Active Node-PROD) 

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

1) Space Required Space Required  for New Oracle Binary (11.2.0.4 )- Installation on  EASYDBSERVER mount  /u01 - 100GB 

3) Space Required Space Required for Backup   3 TB (temporary)  

mount point as /backup ( EASYDBSERVER) 

4) Space Required Extend Archive file System  /EASYDBARCH=600G (in PROD and STANDBY)  

5) Download Oracle Binaries download 11.2.0.4  patchset  

6) create New Home Create new home for 11.2.0.4  

7) unzip Binaries unzip Oracle Binaries at new Home 11.2.0.4 

8) Install Binaries Install 11.2.0.4 in New Oracle Home 11.2.0.4 

9) Apply patches Apply Latest availabe patches oct-21  11.2.0.4.220118 (33477185)  

10) copy  exiting listener ,tns and sqlnet  to New Home cp tns and listner and spfile from old oracle Home to New 11.2.0.4 home 

11) Need to Validate NLS Characterset Check that National Characterset -> 

select value from NLS_DATABASE_PARAMETERS where parameter = 'NLS_NCHAR_CHARACTERSET'; 

12) Stats gather required for SYS and SYSTEM schema objects Execute Gather  

EXEC DBMS_STATS.GATHER_DICTIONARY_STATS;  


Pre-Requisite  Database Upgrade on EASYDBFAILVERSERVER  (Passive Node-PROD)

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

1) Space Required Space Required  for New Oracle Binary (11.2.0.4) - Installation on EASYDBFAILVERSERVER   mount  /u01 - 100GB) 

3) Space Required Extend Archive file System  / EASYDBARCH=600G (in PROD and STANDBY) 

4) Download Oracle Binaries download 11.2.0.4  patchset 

5) create New Home Create new home for 11.2.0.4  

6) unzip Binaries unzip Oracle Binaries at new Home 11.2.0.4     

7) Install Binaries Install 11.2.0.4 in New Oracle Home 11.2.0.4  

8) Apply patches Apply Latest availabe patches oct-21  11.2.0.4.220118 (33477185)      

9) copy  exiting listener ,tns and sqlnet  to New Home cp tns and listner and spfile from old oracle Home to New 11.2.0.4 home 

10) Need to Validate NLS Characterset Check that National Characterset 

select value from NLS_DATABASE_PARAMETERS where parameter = 'NLS_NCHAR_CHARACTERSET';  


Pre-Requisite  Database Upgrade on EASYDBSTANDBYRSERVER  (Standby Node-STANDBY)          

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

1) Space Required Space Required  for New Oracle Binary (11.2.0.4) - Installation on EASYDBSTANDBYRSERVER   mount  /u01 - 100GB) 

2) Space Required Space Required for Backup   3 TB (temporaty)  mount point as /backup ( EASYDBSERVER)       

3) Space Required Extend Archive file System  /EASYDBARCH=600G (in PROD and STANDBY) 

4) Download Oracle Binaries download 11.2.0.4  patchset 

5) create New Home Create new home for 11.2.0.4  

6) unzip Binaries unzip Oracle Binaries at new Home 11.2.0.4 

7) Install Binaries Install 11.2.0.4 in New Oracle Home 11.2.0.4  

8) Apply patches Apply Latest availabe patches oct-21  11.2.0.4.220118 (33477185)  

9) copy  exiting listener ,tns and sqlnet  to New Home cp tns and listner and spfile from old oracle Home to New 11.2.0.4 home  

10) Need to Validate NLS Characterset Check that National Characterset 

select value from NLS_DATABASE_PARAMETERS where parameter = 'NLS_NCHAR_CHARACTERSET';  N DBA    Scheduled

11) Initiate Backup at STANDBY location before upgrade activity 


Complete back at STANDBY Side Before activity started no downtime required.       


List of Activities-Before Upgrade          

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

1) Copy gathering script( utlu112i.sql and utltzuv2.sql ) 

cp $NEWORACLE_HOME/rdbms/admin/utlu112i.sql  /tmp   

cp $NEWORACLE_HOME/rdbms/admin/utltzuv2.sql  /tmp

2) login as sysdba on current home 

   sqlplus / as sysdba  

3) execute pre-script script to understand what else pending to do before upgrade 

sqlplus / as sysdba ; 

SQL> spool upgrade_info.log ; 

SQL> @utlu112i.sql  

SQL>spool off  


4) Pre-upgrade logs output 

run script which is recommended in pre-upgrade log to complete condition for pre-upgrade 

5) Validate objects Check invalid objects  login as 

   sqlplus / as sysdba ;

   SQL>@$ORACLE_HOME/rdbms/admin/utlrp.sql  

6) Check invalid objects 

  select owner,object_name,status from dba_objects where status='INVALID';  

7) Stats gather required for SYS and SYSTEM schema objects Execute Gather State

   EXEC DBMS_STATS.GATHER_DICTIONARY_STATS; 

8) Check database components (must be valid before upgrade) 

SELECT comp_id, comp_name, version, status FROM dba_registry; 

9) check PROD and STANDBY SYNC status before proceed upgrade activity, PROD and STANDBY database must be sync  

10) STOP MRP on STANDBY Server 


Downtime Start from Here onward        

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

1) After successful preupgrade scripts  

stop listener on current home and copy create pfile for new oracle home

2) instance down on current version 

sqlplus / as sysdba   ; 

SQL>shutdown immediate;  

3) Cold Backup Proceed before Upgrade 

Copy Datafile, Controlfile and pfile backup at /backup location

4) Change in pfile 

Backup of PFILE and  DIAGNOSTIC_DEST initialization parameter replaces the USER_DUMP_DEST, BACKGROUND_DUMP_DEST  

5) set new Oracle for make script 

Set Environment Variable according to New Home:-

$ export ORACLE_HOME=

$ export PATH=$ORACLE_HOME/bin:$PATH

$ export ORACLE_BASE=

Note:- If ORACLE_BASE is not known, after setting Path towards 11g Oracle Home, execute 'orabase', which will point the location of base.


$ orabase

update the oratab entry according to new Oracle Home  N     Scheduled


 Upgrade Activities    On Production     

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


1) set New Oracle Home(11.2.0.4) 

run @ora_11.2.4.env 

and defer/stop replication

alter system set log_archive_dest_state_2=defer; 

2) set script path 

cd $ORACLE_HOME/rdbms/admin

3) startup database with upgrade option on new Oracle Home(11.2.0.4) 

sqlplus / as sysdba ; 

SQL> startup upgrade;  

4) check database mode and Role before upgrade activity 

select name,open_mode,database_role from v$database;

5) start upgrade process sqlplus / as sysdba   

SQL>set echo on;     

SQL>spool upgrade.log;                 

SQL>@catupgrd.sql ; 

SQL>-spool off 

6) Validate log after upgrade (go through with log output) 

check if any error in logfile  

7) Check invalid objects status 

select count(1),owner,status from dba_objects where status='INVALID' group by owner,status;


Post Upgrade Activities         

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

1) start database after post upgrade 

sqlplus /as sysdba    

startup; 

2) set Oracle script path 

cd $ORACLE_HOME/rdbms/admin;  

SQL> @utlu112s.sql  


3)`validate Invalid Object Recompile Invalid Objects; 

SQL>@utlrp.sql 

4) start listener on new oracle home(11.2.0.4) 

Configure and Start Listener.ora  

5) check environment detail Crosscheck Environment Variables 

6) create spfile create spfile from pfile 

7) shutdown database and startup with pfile shutdown database ;

startup database using spfile

8) check database components database component status

set line 120;

column COMP_NAME format a35;

column VERSION format a10;

column status format a10;

select comp_id,comp_name,status, version, modified from dba_registry;


9) Database ready for Application testing  

10) after confirmation from App team (all running good) Start MRP at STANDBY database  


startup mount

select name,db_unique_name,database_role from v$database;

ALTER DATABASE RECOVER  managed standby database disconnect from session


11) Verify PROD STANDBY Sync status .run it on production Database  

   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#    


Rollback Plan         

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


1) Set Oracle New Home 

echo $ORALCE_HOME, 

Echo $ORALCE_SID 

2) login as sys dba 

sqlplus / as sysdba 


3) shut down database 

shut immediate  


4) Copy backup to current datafile location 

Copy Datafile, Controlfile and pfile backup from  /backup location  

5) Set Oracle OLD Home 

Oracle Home need to set as 11.2.0.2   

6) login as sys dba 

sqlplus / as sysdba   

7) startup database   

startup   

8) check database status on production 

select name,open_mode,database_role from v$database;

9) listener start Start Listener Services   

10) Handonve to Application for testing Application login testing along with menus 

11) enable log archive dest (Archive shipment start) on production database and check sync status

   alter system set log_archive_dest_state_2=enable;   

   To check Sync status


   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#    


12) Set Oracle OLD Home as Oracle Home need to set as 11.2.0.2 and Start MRP and check archive appy successfully   

startup mount

select name,db_unique_name,database_role from v$database;

ALTER DATABASE RECOVER  managed standby database disconnect from session


Oracle Client installation in Silent Mode step by step

 

Installing Oracle Database Client Using Response Files

we will do the installation of Oracle client  


1. Download Oracle client software from oracle portal.- 

2. Copy and unzip the software in the server

3. Update the response file.

4. Now do the installation silently.


./runInstaller -ignoreSysPrereqs -showProgress -silent -responseFile /easyapp/oracle_client/client32/response/client_install.rsp

 

{oracle@easyap1:/easyapp/oracle/soft/client32/response} cd ..

{oracle@easyap1:/easyapp/oracle/soft/client32} ls -ltr

total 40

-rwxrwxr-x   1 oracle     oinstall       500 Feb  7  2013 welcome.html

drwxr-xr-x   4 oracle     oinstall      1024 Mar 24  2017 install

-rwxr-xr-x   1 oracle     oinstall     17102 Mar 24  2017 runInstaller

drwxr-xr-x  14 oracle     oinstall      1024 Mar 24  2017 stage

drwxrwxr-x   2 oracle     oinstall        96 May 29 12:50 response

{oracle@easyap1:/easyapp/oracle/soft/client32} cd ..

{oracle@easyap1:/easyapp/oracle/soft/client32} cd runInstaller

{oracle@easyap1:/easyapp/oracle/soft/client32} t -responseFile /easyapp/oracle/soft/client32/response/client_install.rsp                              <

Starting Oracle Universal Installer...

 

Checking Temp space: must be greater than 727 MB.   Actual 7152 MB    Passed

Checking swap space: must be greater than 150 MB.   Actual 32766 MB    Passed

Preparing to launch Oracle Universal Installer from /tmp/OraInstall2023-05-29_01-22-30PM. Please wait ...{oracle@easyap1:/easyapp/oracle/soft/client32} [WARNING] [INS-32055] The Central Inventory is located in the Oracle base.

   ACTION: Oracle recommends placing this Central Inventory in a location outside the Oracle base directory.

You can find the log of this install session at:

 /easyapp/oracle/oraInventory/logs/installActions2023-05-29_01-22-30PM.log

 

Prepare in progress.

..................................................   6% Done.

 

Prepare successful.

 

Copy files in progress.

..................................................   13% Done.

..................................................   21% Done.

..................................................   26% Done.

..................................................   31% Done.

..................................................   38% Done.

..................................................   44% Done.

..................................................   49% Done.

..................................................   54% Done.

..................................................   59% Done.

..................................................   64% Done.

 

Copy files successful.

 

Link binaries in progress.

 

Link binaries successful.

 

Setup files in progress.

 

Setup files successful.

 

Setup Inventory in progress.

 

Setup Inventory successful.

 

Finish Setup in progress.

 

Finish Setup successful.

The installation of Oracle Client 12c was successful.

Please check '/easyapp/oracle/oraInventory/logs/silentInstall2023-05-29_01-22-30PM.log' for more details.

 

Prepare for configuration steps in progress.

 

Prepare for configuration steps successful.

..................................................   80% Done.

 

Oracle Client Configuration in progress.

 

Oracle Client Configuration successful.

..................................................   96% Done.

 

As a root user, execute the following script(s):

        1. /easyapp/oracle/oraInventory/orainstRoot.sh

 

 

 

..................................................   100% Done.

Successfully Setup Software.

 

Please take backup and change below value from client_install.rsp

vi /easyapp/oracle_client/client32/response/client_install.rsp

1) UNIX_GROUP_NAME=oinstall

2) INVENTORY_LOCATION=/easyapp/19c/oraInventory

3) ORACLE_HOME=/easyapp/19c/client

4) ORACLE_BASE=/easyapp/19c

5) oracle.install.client.installType=Administrator

 

 

 

#-------------------------------------------------------------------

# Do not change the following system generated value.

#-------------------------------------------------------------------------------

oracle.install.responseFileVersion=/oracle/install/rspfmt_clientinstall_response_schema_v19.0.0

 

#-------------------------------------------------------------------------------

# Unix group to be set for the inventory directory.

#-------------------------------------------------------------------------------

UNIX_GROUP_NAME=oinstall

#-------------------------------------------------------------------------------

# Inventory location.

#-------------------------------------------------------------------------------

INVENTORY_LOCATION=/easyapp/19c/oraInventory

#-------------------------------------------------------------------------------

# Complete path of the Oracle Home

#------------------------------------------------------------------------------- 

ORACLE_HOME=/easyapp/19c/client

#-------------------------------------------------------------------------------

# Complete path of the Oracle Base.

#-------------------------------------------------------------------------------

ORACLE_BASE=/easyapp/19c

#------------------------------------------------------------------------------

#Name       : INSTALL_TYPE

#Datatype   : String

#Description: Installation type of the component.

#

#             The following choices are available. The value should contain

#             only one of these choices.

#               - Administrator

#               - Runtime

#               - InstantClient

#               - Custom

#

#Example    : INSTALL_TYPE = Administrator

#------------------------------------------------------------------------------

oracle.install.client.installType=Administrator

 

#-------------------------------------------------------------------------------

# Name       : oracle.install.client.customComponents

# Datatype   : StringList

#

# This property is considered only if INSTALL_TYPE is set to "Custom"

#

# Description: List of Client Components you would like to install

#

#   The following choices are available. You may specify any

#   combination of these choices.  The components you choose should

#   be specified in the form "internal-component-name:version"

#   Below is a list of components you may specify to install.

#

# oracle.sqlj:19.0.0.0.0 -- "Oracle SQLJ"

# oracle.rdbms.util:19.0.0.0.0 -- "Oracle Database Utilities"

# oracle.javavm.client:19.0.0.0.0 -- "Oracle Java Client"

# oracle.sqlplus:19.0.0.0.0 -- "SQL*Plus"

# oracle.dbjava.jdbc:19.0.0.0.0 -- "Oracle JDBC/THIN Interfaces"

# oracle.ldap.client:19.0.0.0.0 -- "Oracle Internet Directory Client"

# oracle.rdbms.oci:19.0.0.0.0 -- "Oracle Call Interface (OCI)"

# oracle.precomp:19.0.0.0.0 -- "Oracle Programmer"

# oracle.xdk:19.0.0.0.0 -- "Oracle XML Development Kit"

# oracle.network.aso:19.0.0.0.0 -- "Oracle Advanced Security"

# oracle.oraolap.mgmt:19.0.0.0.0 -- "OLAP Analytic Workspace Manager and Worksheet"

# oracle.network.client:19.0.0.0.0 -- "Oracle Net"

# oracle.network.cman:19.0.0.0.0 -- "Oracle Connection Manager"

# oracle.network.listener:19.0.0.0.0 -- "Oracle Net Listener"

# oracle.ordim.client:19.0.0.0.0 -- "Oracle Multimedia Client Option"

# oracle.odbc:19.0.0.0.0 -- "Oracle ODBC Driver"

# oracle.has.client:19.0.0.0.0 -- "Oracle Clusterware High Availability API"

# oracle.dbdev:19.0.0.0.0 -- "Oracle SQL Developer"

# oracle.rdbms.scheduler:19.0.0.0.0 -- "Oracle Scheduler Agent"

#

# Example    : oracle.install.client.customComponents="oracle.precomp:19.0.0.0.0","oracle.oraolap.mgmt:19.0.0.0.0","oracle.rdbms.scheduler:19.0.0.0.0"

#-------------------------------------------------------------------------------

oracle.install.client.customComponents=

 

#-------------------------------------------------------------------------------

# Host name to be used for by the Oracle Scheduler Agent.

# This needs to be entered in case oracle.rdbms.scheduler is selected in the

# list of custom components during custom install

#

# Example    : oracle.install.client.schedulerAgentHostName = acme.domain.com

#------------------------------------------------------------------------------

oracle.install.client.schedulerAgentHostName=

 

#------------------------------------------------------------------------------

# Port number to be used for by the Oracle Scheduler Agent.

# This needs to be entered in case oracle.rdbms.scheduler is selected in the

# list of custom components during custom install

#

# Example: oracle.install.client.schedulerAgentPortNumber = 1500

#------------------------------------------------------------------------------

oracle.install.client.schedulerAgentPortNumber=

 

 

Manual Database Upgrade from 11.2.0.4 to 19c(19.16.0.0.0) step by step-Real Time


Manual Database Upgrade from 11.2.0.4 to 19c(19.16.0.0.0) step by step- Real Time


Summary 

We will demonstrate an overview on manually upgrading Oracle database from 11.2.0.4 to 19.16.0.0.0 on Oracle Linux 8 64bit platform.

In this example, the source database version is 11.2.0.4. So we can go for a direct upgrade to

1) Installing Oracle 19.3.0.0 binaries

2) Executing the preupgrade jar tool

3) Performing the preupgrade actions

4) Upgrade the database

5) Perform the postupgrade actions


 Note : There are lot of changes in 19c like – utl_file_dir, streams, oracle multimedia are de-supported,Please do check with your application team before going ahead with your upgrade plan.


Pre-Requisite   for DB Upgrade 19c

1) download Oracle Binaries for 19c  (Linux 64 bit) from edelivery.oracle.com

2) Create new home for 19c

3) Oracle 19c Binary copy at New Oracle Home 

4) cp tns and listner and spfile from old oracle Home to New 19c home

5) Install 19c Binaries

6) Apply Latest patch on 19c (19.16.0.0.0)  N-1


List Of Activity Before Upgrade


Select name,open_mode from v$database

Select banner from v$version;

col comp_name for a45

select comp_id,comp_name,status, version, modified from dba_registry;

Show parameter recovery

Show parameter target

Set Recovery file Destination 

alter system set db_recovery_file_dest='/backup/arch/fra' scope=both;

Set Recovery file Size

alter system set db_recovery_file_dest_size=25G scope=both;

set Retention period

alter system set db_flashback_retention_target=1440;

show parameter java_pool_size

alter system set java_pool_size = 150m scope=spfile;

show parameter processes

alter system set processes=350 scope=spfile;

archive log list

 $ORACLE_HOME/rdbms/admin/emremove.sql script from the target from 19c home

@/oracle/app/19c/dbhome/rdbms/admin/emremove.sql

flashback on 

select flashback_on from v$database;

alter database flashback on;

 create restore point before_upgrade_19c guarantee flashback database;

Check restore point Status

select scn, storage_size, time, name from v$restore_point;

 

Object Status

select count(*),status,owner from dba_objects where status='INVALID' group by status,owner;

select owner,object_name,object_type,status from dba_objects where  status ='INVALID' and owner='SYS';


Materilized  if any must be refreshed completed

SELECT o.name FROM sys.obj$ o, sys.user$ u, sys.sum$ s WHERE o.type# = 42 AND bitand(s.mflags, 8) =8;

check Java component is valid or not

if not Please follow below steps

select dbms_java.longname('TEST') from dual;    

 ORA-29516: Aurora assertion failure: Assertion failure at eox.c:35  ;

 execute sys.dbms_registry.loaded('JAVAVM');

execute sys.dbms_registry.valid('JAVAVM');

alter system set "_system_trig_enabled" = false scope=memory;

alter system set java_jit_enabled=false;

create or replace java system    /

Run the pre-jar file which will generate preupgrade_fixup,postupgrade_fixups and preupgrade logfile. 

Command syntax goes as follows –

[oracle@easydbserver]$ $CURRENT_VERSION_HOME/jdk/bin/java -jar $NEW_VERSION_HOME/rdbms/admin/preupgrade.jar DIR location

eg

/oracle/app/oracle/product/11.2/dbhome_1/jdk/bin/ java -jar /oracle/app/19c/dbhome/rdbms/admin/preupgrade.jar -DIR /FRA

 or

 /oracle/app/product/11.2.0/dbhome/jdk/bin/ java -jar /oracle/app/19c/dbhome/rdbms/admin/preupgrade.jar -DIR /finarch_inst1/FRA




Steps to be follow as per Outcome from pre-upgrade log                                                                                                  

1)      purge recycle bin "purge recyclebin;

2)      purge dba_recylebin;"

3)      Move system.aud$ table to other tablespace or truncate sys.aud$

4)      SELECT count(*) FROM sys.aud$;  

5)      truncate table sys.aud$;


Select owner,object_name ,object_type from dba_objects where object_name like ‘AUD$%’;

JOB Queue Cleanup

alter system set JOB_QUEUE_PROCESSES=0 scope=both;

need to upgrade appex

select count(*) from APEX_030200.WWV_FLOWS where id = 4000; 

Select owner,object_name,object_type,status from dba_objects where owner like ‘APEX’;

Select count(1) from apex_0302200.WWV_FLOWS WHERE ID =4000;


Unzip download apex and run below command


1. Download Oracle APEX

2. Unzip

3. Go into the directory 

4. Connect to the Oracle Database with SQLcl or SQLPlus 

5. Run 1 command:

6. CREATE TABLESPACE apex DATAFILE '/path/to/datafiles/apex01.dbf' SIZE 100M AUTOEXTEND ON NEXT 1M;

8. @apexins.sql APEX APEX TEMP /i/


select comp_name,version,status from dba_registry

SELECT * FROM sys.dba_2pc_pending; "delete from sys.pending_trans$ where local_tran_id ='';

delete from sys.pending_sessions$ where local_tran_id ='';

delete from sys.pending_sub_sessions$ where local_tran_id ='';

commit;"

Remove OLAP Catalog

sqlplus / as sysdba @$ORACLE_HOME/olap/admin/catnoamd.sql

 

uninstall Label Security

 sqlplus / as sysdba @$ORACLE_HOME/rdbms/admin/catnools.sql

Recompile Invalid Objects

?/rdbms/admin/utlrp.sql

Execute Gather State

EXECUTE DBMS_STATS.GATHER_DICTIONARY_STATS;

Run Preupgrade fixup sql

/oracle/preupgrade/preupgrade_fixups.sql

Check Object Status

select count(*),status from dba_objects group by status;

shutdown 11.2 database 

shut immediate


Upgrade Activities- Implementation


set Oracle NEW HOME

export ORACLE_HOME=/oracle/app/oracle/product/19.0.0/dbhome_1

set PATH export PATH=$ORACLE_HOME/bin:$PATH

Create Directory for upgrade

mkdir -p /oracle19c/WHILEUPGRADE1/


Database startup upgrade from 19c Binary 

SQL>startup upgrade

select instance_name,status from v$instance;

Check status of database

select instance_name,status from v$instance; 

Start upgrade using catupgrd  and tail logfile to monitor upgrade

nohup $NEW_ORACLE_HOME/perl/bin/perl $NEW_ORACLE_HOME/rdbms/admin/catctl.pl -l /oracle/WHILEUPGRADE1/ -n 8 $NEW_ORACLE_HOME/rdbms/admin/catupgrd.sql &

or

Nohup /oracle/app/19c/dbhome/perl/bin /oracle/app/19c/dbhome/rdbms/admin/catctl.pl -l /oracle/app/19c/whileupd  -n 8  /oracle/app/19c/dbhome/rdbms/admin/catupgrd.sql &


Post Upgrade Activities                                                                                                    

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

startup database  

sqlplus / as sysdba

startup 

1)      check invalid objects 

select count(*),status from dba_objects where status='INVALID' group by status;

@?/rdbms/admin/utlrp.sql

select count(*),status from dba_objects group by status;

2)      Create post upgrade restore point ;

select flashback_on from v$database;

create restore point after_upgrade_pre_postfixup guarantee flashback database;

select scn, storage_size, time, name from v$restore_point;

3)      Run Postupgrade fixups sql ;

  /FRA/preupgrade/postupgrade_fixups.sql

1)      TIMEZONE Upgrade

SELECT version FROM v$timezone_file;

SELECT PROPERTY_NAME, SUBSTR(property_value, 1, 30) value FROM DATABASE_PROPERTIES WHERE PROPERTY_NAME LIKE 'DST_%' ORDER BY PROPERTY_NAME;

exit

cd !

@utltz_countstats.sql

cd $ORACLE_HOME/rdbms/admin/

@utltz_countstar.sql

cd $ORACLE_HOME/rdbms/admin/

@utltz_upg_check.sql

cd $ORACLE_HOME/rdbms/admin/

@utltz_upg_apply.sql


Post upgrade scripts

 ?/rdbms/admin/utlusts.sql TEXT

 ?/rdbms/admin/catuppst.sql

Recompile Invalid Objects

 ?/rdbms/admin/utlrp.sql 


Post Upgrade Checks                                                                                                        

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

"check Invalid Objects; ""col object_name for a40

set lines 999

set pages 999

col object_name for a40

col owner for a30

select object_name,object_type,status,owner from dba_objects where status='INVALID';

 

col object_name for a40

set lines 999

set pages 999

col object_name for a40

col owner for a30

select object_name,object_type,status,owner from dba_objects where status='INVALID' and owner in('SYS','SYSTEM');""

Check Database Components;

col comp_name for a45

select comp_id,comp_name,status, version, modified from dba_registry;

SET LINESIZE 500

SET PAGESIZE 1000

SET SERVEROUT ON

SET LONG 2000000

COLUMN action_time FORMAT A12

COLUMN action FORMAT A10

COLUMN comments FORMAT A30

COLUMN description FORMAT A60

COLUMN namespace FORMAT A20

COLUMN status FORMAT A10 

SELECT TO_CHAR(action_time, 'YYYY-MM-DD') AS action_time,action,status,description,patch_id FROM   sys.dba_registry_sqlpatch ORDER by action_time;


Oracle Database Manual Upgrade from 11.2.0.2 to 11.2.0.4 step by step

Manual Database upgrade from 11.2.0.2 to 11.2.0.4

Basic Information Collection

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

show parameter spfile

show parameter control file

column name format a50;

select name from v$datafile;

check listener.ora and tnsnames.ora file

1. Install the 11.2.0.4 in a new Home Location using runInstaller

Ex:

Unzip the patch 13***

$/u01/app/oracle/11.2.0.4

1)Login on Database from old home and copy prerequisite script in /tmp from 11.2.0.4 (New Home) and check pre-requisite by running utlu112i.sql

Note – Review log carefully and complete all recommendation like system and sysaux tablespace , stale stats etc

 

sqlplus / as sysdba

spool upgrade_info19april.log

@utlu112i.sql


Run pre-requisite as per recommendation.

?/rdbms/admin/sqltrpt.sql

Check that National Characterset

select value from nls_database_parameters where parameter ='NLS_NCHAR_CHARACTERSET';

If this is UTF8 or AL16UTF16 then no action is needed.

If is not UTF8 or AL16UTF16 then refer the following article

Note 276914.1 The National Character Set in Oracle 9i and 10g.

Optimizer Statistics:

When upgrading to Oracle Database 11g Release 2 (11.2), optimizer statistics are collected for dictionary tables that lack statistics. 

This statistics collection can be time consuming for databases with a large number of dictionary tables, 

but statistics gathering only occurs for those tables that lack statistics or are significantly changed during the upgrade


execute dbms_stats.gather_dictionary_stats


Check Database Component

select comp_id,comp_name,version,status from dba_registry;


Ensure that no files need media recovery:

Sql> SELECT * FROM v$recover_file;


Check free tablespace for system and sysaux

 

COL TABLESPACE_NAME FORMAT A40

col    "Tablespace"  for a50

col    "USED_IN_MB"     for 9999999

col    "FREE_IN_MB"       for 99999

 

  select

   a.TABLESPACE_NAME,

   a.TOTAL_IN_MB,

   to_char(nvl((b.used),0.00),'999990.99') USED_IN_MB,

    to_char(nvl((c.free),0.00),'999990.99') FREE_IN_MB,

    to_char(nvl(((b.used/a.TOTAL_IN_MB)*100),0.00),'99990.99') PCT_USED

    from

    (select TABLESPACE_NAME,

   to_char(sum(bytes)/(1024*1024),'9999990.99') TOTAL_IN_MB

   from sys.dba_data_files

    group by TABLESPACE_NAME) a,

   (select TABLESPACE_NAME,bytes/(1024*1024) used

   from sys.SM$TS_USED) b,

    (select TABLESPACE_NAME,bytes/(1024*1024) free

    from sys.SM$TS_free) c

   where a.TABLESPACE_NAME=b.TABLESPACE_NAME(+) and

   a.TABLESPACE_NAME=c.tablespace_name(+)

 

Drop all invalid object which belong to sys and system

 

select owner,object_name,object_type from dba_objects where status='INVALID' and owner in ('SYS','SYSTEM');

 

Upgrade Activities- Implementation

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

Note :Start database in upgrade mode and Run upgrade and run catupgrd.sql . it will take approx. 40 to 60 min

 

set Oracle NEW HOME

Go to NEW ORACEL_HOME/rdbms/admin

sqlplus / as sysdba ; 

SQL> startup upgrade; 

Set the system to spool results to a log file for later verification after the upgrade is completed and start the upgrade script.


SQL> set echo on;

SQL>  spool upgrade.log;

SQL>  @catupgrd.sql ; 

spool off


These measures are an important final step to ensure the integrity and consistency of the newly upgraded Oracle Database software. 

Also, if you encountered a message listing obsolete initialization parameters when you started the database for upgrade,

then remove the obsolete initialization parameters from the parameter file before restarting.

If necessary, convert the SPFILE to a PFILE so you can edit the file to delete parameters.

check status of database 

select name,open_mode,db_role from v$database;

check the invalid object_status

 select count(object_name),status from dba_objects group by status

 

Post upgrade

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

startup database and execute Post-Upgrade Status Tool

go to $ORACLE_HOME/rdbms/admin; 

sqlplus / as sysdba; 

SQL>startup; 

SQL> @utlu112s.sql

Recompile Invalid Objects; 

SQL>@utlrp.sql

Configure and Start Listener.ora 

Crosscheck Environment Variables

create spfile from pfile

shutdown database ;

startup database using spfile

Validate the database components as below.

SQL> select name, open_mode from v$database;

SELECT comp_name, version, status FROM dba_registry;

Upgrade Database from 12c to 19 c with standby database step by step


19C_Upgrade_from_ 12c_TESTDB

Environment Summary : 12c Database running on Unix Enviroment(HP-UX) ,PROD-Active Node-EASYDB01 And Passive Node-EASYDB02 with Standby Database running on server Standby-EASYDB01 .Database is configured with wallet .So Database need to start with wallet key only


19c Database Binaries & Patches(PROD-Active Node-EASYDB01) -Pre requisite

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

Download Oracle Binaries for 19c  (HP-UX 64 bit) from edelivery.oracle.com


1 Required New mount for for oracle 19c binaries (150G) /U01

3 Create new home for 19c

mkdir -p /U01/app/product/19c/dbhome

4 Oracle 19c Binary copy at New Oracle Home 

5 Extract 19c Binary at Oracle Home location

6       copy listener.ora,sqlnet.ora and tnsnames.ora from existing Home to new Oracle 19c Home

7 Compatable Version(Dont change compatibility parameter to higher version while upgrade)

8 install 19c with new binary with (19.17) patchset

cd /U01/app/product/19c/dbhome

./runInstaller" Online

9 Stats gather of Dictionary (SYS,SYSTEM)   

        to Minimize downtime during upgrade (it's take long time) it's online activity

        EXECUTE DBMS_STATS.GATHER_DICTIONARY_STATS;

19c Database Binaries & Patches(PROD-Passive Node-EASYDB02) -Pre requisite

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

1 Required mount for for oracle 19c binaries (150G) /U01

2 Create new home for 19c

mkdir -p /U01/app/product/19c/dbhome

3 Oracle 19c Binary copy at New Oracle Home 

4 Extract 19c Binary at Oracle Home location

5 copy listener.ora,sqlnet.ora and tnsnames.ora from existing Home to new Oracle 19c Home

6 Compatable Version(Dont change compatibility parameter to higher version while upgrade)

7 Install 19c with new binary

"cd /U01_bc/app2/product/19c/dbhome_1

./runInstaller"

19c Database Binaries  & Patches(Standby-EASYDB01)  -Pre requisite

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


1 Required mount for for oracle 19c binaries 150G) /U01

2 Create new home for 19c

mkdir -p /U01/app/product/19c/dbhome

3 Oracle 19c Binary copy at New Oracle Home 

Extract 19c Binary at Oracle Home location


4 "cp /oracle/app/product/12.2.0.1/dbhome_2`/network/admin tnsnames.ora listener.ora

/U01/app/product/19c/dbhome/network/admin"

5 install 19c with new binary with (19.17) patchset

"cd /U01/app/product/19c/dbhome

./runInstaller"


Pre-Requisite  D-Day   (Downtime Start Now)  Total downtime 3:30 Hours

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

1 Daily Routine activity must be completed before upgrade start

2 Full Database backup on tape/file system

        (Before start Upgradaton activity full backup must be taken)

3 Production Database and Standby must be sync before start Activity

4 MRP must be stop before start upgradation activity (Standby database Intact)

5 Listerner stop at Old 12c home before startting upgrade activity


List of Activities-Before Upgrade                                           

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

1 Set Recovery file Destination

(alter system set db_recovery_file_dest=' ' scope=both;)

2 Set Recovery file Size

(alter system set db_recovery_file_dest_size=100g scope=both;)

3 set Retantion period

(alter system set db_flashback_retention_target=1440;)

4 Set Recovery file Destination (Standby)

(alter system set db_recovery_file_dest=' ' scope=both;)

5 Set Recovery file Size (Standby)

(alter system set db_recovery_file_dest_size=100g scope=both;)

6 set Retantion period (Standby)

(alter system set db_flashback_retention_target=1440;)

7 Flashback must be on  (Standby Database)

(alter database flashback on;)

8 create restore point First at (Standby) will help any rollback

        create restore point before_upgrade_19c  guarantee flashback database;

9 Database Components (all component must be valid) (select comp_name, version, status from dba_registry;)

10 Check materized View (need to copy script and drop)

"select distinct o.name  FROM sys.obj$ o, sys.user$ u, sys.sum$ s WHERE o.type# = 42 AND bitand(s.mflags, 8) =8; 

DROP MATERIALIZED VIEW EASYUSER.AC_VIEW;

DROP MATERIALIZED VIEW EASYUSER.EASY_SILL"


11 Clear Audit Logs

Move system.aud$ table to other tablespace or truncate sys.aud$ SELECT count(*) FROM sys.aud$;    

truncate table sys.aud$;

12 purge recycle bin 

purge recyclebin;purge dba_recylebin;

13 Flashback must be on

alter database flashback on;

14 create restore point

create restore point before_upgrade_19c  guarantee flashback database;

15 Check restore point Status

select scn, storage_size, time, name from v$restore_point;

16 Recompile Invalid Object ($ORACLE_HOME/rdbms/admin/utlrp.sql)

17 Object Status(select count(*),status,owner from dba_objects where status='INVALID'  group by status,owner;)

18 generate preupgrade log

/U01/app/oraeasy/product/12.2.0.1/easyDB_home/jdk/bin/java -jar /U01_bc/app2/product/19c/dbhome_1/rdbms/admin/preupgrade.jar -DIR /backup/FRA


Follow-up step as suggested by preupgrade log

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


13 Recompile Invalid Object $ORACLE_HOME/rdbms/admin/utlrp.sql

17 Execute Gather State

EXECUTE DBMS_STATS.GATHER_DICTIONARY_STATS;

18 Run Preupgrade fixup 

sql @/FRA/preupgrade/preupgrade_fixups.sql

18 Check Object Status

select count(*),status from dba_objects group by status;

19 shutdown database at old Oracle Home

sqlplus / as sysdba  shutdown immediate


19C Upgrade Activity                                                                       

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


1 set Oracle NEW HOME

export ORACLE_HOME=/U01/app/product/19c/dbhome

2 set PATH

export PATH=$ORACLE_HOME/bin:$PATH

3 Create Directory for upgrade

mkdir -p /U01/upgrade_status/

5 database starup upgrade from 19c Binary

startup upgrade

          or

         startup mount

         alter system set encryption wallet open identified by 'easydb4443343'

         alter database open upgrade

 

6 check status of database select instance_name,status from v$instance;

7 wallet status (Wallet must be open during upgrade)

      select * from v$encryption_wallet;

8 exit from sqlprompt sql>exit

8 start upgrade using catupgrd  and tail logfile to monitor upgrade


nohup /U01/app/oraeasy/19c/dbhome/perl/bin/perl /U01/app/oraeasy/19c/dbhome/rdbms/admin/catctl.pl -l /U01/upgrade_status/ -n 8 /U01/app/oraeasy/19c/dbhome/rdbms/admin/catupgrd.sql &


Post Upgrade Activity

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

1 startup database

"sqlplus ""/ as sysdba""

STARTUP MOUNT;

ALTER SYSTEM SET ENCRYPTION WALLET OPEN IDENTIFIED BY "easydb1d5678";

ALTER DATABASE OPEN;


set pagesize 24 linesize 87

col name format a12

col STATUS format a12

col WRL_PARAMETER format a40

select name, STATUS, WRL_PARAMETER from v$database,v$encryption_wallet;


2 Check invalid object

select count(*),status from dba_objects group by status;

@?/rdbms/admin/utlrp

select count(*),status from dba_objects group by status;"

3 Create post upgrade restorepoint

        select flashback_on from v$database;

create restore point after_upgrade_pre_postfixup guarantee flashback database;

select scn, storage_size, time, name from v$restore_point;"

4 Run Postupgrade fixups sql

    /FRA/preupgrade/postupgrade_fixups.sql

6 TIMEZONE Upgrade

SELECT version FROM v$timezone_file;

SELECT PROPERTY_NAME, SUBSTR(property_value, 1, 30) value FROM DATABASE_PROPERTIES WHERE PROPERTY_NAME LIKE 'DST_%' ORDER BY PROPERTY_NAME;

exit

cd $ORACLE_HOME/rdbms/admin/

@utltz_countstats.sql

cd $ORACLE_HOME/rdbms/admin/

@utltz_countstar.sql

cd $ORACLE_HOME/rdbms/admin/

@utltz_upg_check.sql

cd $ORACLE_HOME/rdbms/admin/

@utltz_upg_apply.sql"

7 Post upgrade scripts " sta ?/rdbms/admin/utlusts.sql TEXT

sta ?/rdbms/admin/catuppst.sql"

8 Recompile Invali Object sta ?/rdbms/admin/utlrp.sql


Post upgrade checks

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

1 Invalid Object Check

col object_name for a40

set lines 999

set pages 999

col object_name for a40

col owner for a30

select object_name,object_type,status,owner from dba_objects where status='INVALID';


col object_name for a40

set lines 999

set pages 999

col object_name for a40

col owner for a30

select object_name,object_type,status,owner from dba_objects where status='INVALID' and owner in('SYS','SYSTEM');"


2 Check Database Component

col comp_name for a45

select comp_id,comp_name,status from dba_registry;


select * from dba_registry_sqlpatch;

set serverout on

exec dbms_qopatch.get_sqlpatch_status;"


3 Patch registry $ORACLE_HOME/OPatch/datapatch -verbose

4 Backup after Complete Activity -Full backup snap before handover to application

5 Database handover to Application team

6 check point call with customer


7 drop Restore Point

drop restore point before_upgrade_19c


8 CIS Hardening will do CIS Hardening as tested in NONPROD environment

Standby Database Startup (NEW ORACLE HOME)

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

1 set new Oracle Home Environment

export ORACLE_HOME=/U01/app/product/19c/dbhome

2 set PATH export 

PATH=$ORACLE_HOME/bin:$PATH

3 set ORACLE SID

export ORACLE_SID=TESTDB

4 mount Standby database

startup mount

ALTER SYSTEM SET ENCRYPTION WALLET OPEN IDENTIFIED BY "easydb1938678";

set pagesize 24 linesize 87

col name format a12

col STATUS format a12

col WRL_PARAMETER format a40

select name, STATUS, WRL_PARAMETER from v$database,v$encryption_wallet;


6 after confirmation from Customer team (Operation Started on production successfully)

Listener & MRP start on Standby  to SYNC database


ALTER DATABASE RECOVER MANAGED STANDBY DATABASE DISCONNECT FROM SESSION;


Node Failover Testing

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

2 su - oracle -c "/home/easyDB/pkgscript/stop_easyDB.sh" Stop database on Active Node

2 su - oracle -c "/home/easyDB/pkgscript/start_easyDB.sh" Start Database on Passive Node


Rollback Plan

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

1 Downgrading database to previous version using Flashback database (FALLBACK PLAN)

        Note that data from any transactions that occur after the point in time to which the database is recovered are lost. 

2 This is only practical when only the database upgrade has been done and no application data changes have occurred

3 Set New Home environment

" /U01/app/product/19c/dbhome

Shutdown immediate

startup mount


4 restore guaranteed point

flashback database to restore point before_upgrd19c;

Shutdown immediate


5 Set OLD home environment


/oracle/app/product/12.2.0.1/dbhome_2

startup mount

6 Open database using reset log

alter database open resetlogs;


7 Validate   Registry View

select comp_name, version, status from dba_registry;

Oracle Database Catalog Views    12.2.0.0.1   Valid

Oracle Database Packages and Type  12.2.0.0.1 valid

8 Start Listener Services Listerner start for Application servers

9 Database Handover Application Team