{"id":982,"date":"2024-12-28T18:29:22","date_gmt":"2024-12-28T18:29:22","guid":{"rendered":"https:\/\/w3buddy.com\/?p=982"},"modified":"2026-01-15T13:17:30","modified_gmt":"2026-01-15T07:47:30","slug":"oracle-database-patching-common-steps","status":"publish","type":"post","link":"https:\/\/w3buddy.com\/blog\/oracle-database-patching-common-steps\/","title":{"rendered":"Oracle Database Patching: Common Steps"},"content":{"rendered":"\n<h2 class=\"wp-block-heading\">Introduction<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">This document outlines the essential steps for Oracle Database patching. It includes pre-checks, patch installation instructions, and post-patching validation steps. Always refer to the README file included with the patch for specific details<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">1. OS Check with Bit Information &#8211; OS Level<\/h2>\n\n\n\n<pre class=\"wp-block-prismatic-blocks\"><code class=\"language-bash\">uname -a; \nisainfo -kv<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">2. OS Release Check &#8211; OS Level<\/h2>\n\n\n\n<pre class=\"wp-block-prismatic-blocks\"><code class=\"language-bash\">cat \/etc\/release<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">3. Database Status<\/h2>\n\n\n\n<pre class=\"wp-block-prismatic-blocks\"><code class=\"language-sql\">SET pages 9999 lines 300;\nCOL DB_NAME FOR a10;\nCOL HOST_NAME FOR a15;\nCOL DATABASE_ROLE FOR a15;\nCOL DB_VERSION FOR a15;\nCOL LOGINS FOR a15;\nCOL DB_UP_TIME FOR a22;\nCOL OPEN_MODE FOR a15;\nCOL log_mode FOR a15;\nSELECT name DB_NAME, HOST_NAME, DATABASE_ROLE, OPEN_MODE, version DB_VERSION, LOGINS, \n  TO_CHAR(STARTUP_TIME,'DD-MON-YYYY HH24:MI:SS') \"DB_UP_TIME\", log_mode \nFROM v$database, gv$instance;\n\n!date<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">4. Database Registry Status Check<\/h2>\n\n\n\n<pre class=\"wp-block-prismatic-blocks\"><code class=\"language-sql\">COL COMP_NAME FOR a40;\nCOL VERSION FOR a15;\nCOL STATUS FOR a12;\nSELECT COMP_NAME, VERSION, STATUS FROM dba_registry;<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">5. Invalid Object Check<\/h2>\n\n\n\n<pre class=\"wp-block-prismatic-blocks\"><code class=\"language-sql\">COL owner FOR a15;\nCOL object_type FOR a20;\nCOL object_name FOR a20;\nSELECT owner, object_type, object_name, status \nFROM dba_objects WHERE status != 'VALID' ORDER BY owner, object_type;<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">6. Already Applied PSU and Patch Details<\/h2>\n\n\n\n<pre class=\"wp-block-prismatic-blocks\"><code class=\"language-sql\">COL ACTION FOR a20;\nCOL VERSION FOR a25;\nCOL BUNDLE_SERIES FOR a15;\nCOL COMMENTS FOR a60;\nCOL ACTION_TIME FOR a30;\nSELECT ACTION_TIME, ACTION, VERSION, BUNDLE_SERIES, COMMENTS FROM registry$history;<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">7. Checking Opatch Version<\/h2>\n\n\n\n<pre class=\"wp-block-prismatic-blocks\"><code class=\"language-bash\">opatch version\n\n# If the above command does not work, set the following path\nexport PATH=$ORACLE_HOME\/OPatch:$PATH\nopatch version\n\n# Alternative way\ncd $ORACLE_HOME\/OPatch\n.\/opatch version<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">8. Opatch Inventory Check<\/h2>\n\n\n\n<pre class=\"wp-block-prismatic-blocks\"><code class=\"language-bash\">opatch lsinventory\n\n# If the above command does not work, set the following path\nexport PATH=$ORACLE_HOME\/OPatch:$PATH\nopatch lsinventory\n\n# Alternative way\ncd $ORACLE_HOME\/OPatch\n.\/opatch lsinventory<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">9. Copy Patch to a Directory<\/h2>\n\n\n\n<pre class=\"wp-block-prismatic-blocks\"><code class=\"language-sql\">unzip -d &lt;PATCH_TOP_DIR> &lt;downloaded zip>.zip<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">10. Check for Patch Conflicts<\/h2>\n\n\n\n<pre class=\"wp-block-prismatic-blocks\"><code class=\"language-bash\">cd &lt;PATCH_TOP_DIR>\/&lt;new patch number>\nopatch prereq CheckConflictAgainstOHWithDetail -ph .\/\n\n# Expected output:\n# Prereq \"checkConflictAgainstOHWithDetail\" passed.\n\n# Refer if failed:\n# \"Failed to apply PSU due to CheckActiveFilesAndExecutables check failure (Doc ID 2506432.1)\"\n\n# Notes:\n# OPatch categorizes conflicts into two types:\n# 1. Subset patch conflicts: Continue with the patch installation. The subset patch will automatically be rolled back.\n# 2. Conflicts with an already applied patch: Stop installation and contact Oracle Support Services.<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">11. Pre-Patch Service Checks<\/h2>\n\n\n\n<pre class=\"wp-block-prismatic-blocks\"><code class=\"language-bash\">ps -ef | grep pmon\nps -ef | grep tns\nlsnrctl status &lt;listener name><\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\"><mark style=\"background-color:#fffc00\" class=\"has-inline-color\">12. Patch Installation Steps<\/mark><\/h2>\n\n\n\n<h3 class=\"wp-block-heading\">Pre-Installation<\/h3>\n\n\n\n<ol class=\"wp-block-list\">\n<li>Check Active Sessions<\/li>\n<\/ol>\n\n\n\n<pre class=\"wp-block-prismatic-blocks\"><code class=\"language-sql\">COL LOGON FOR a22;\nCOL USERNAME FOR a13;\nCOL STATUS FOR a10;\nCOL OSUSER FOR a12;\nCOL PROCESS FOR a10;\nCOL MACHINE FOR a25;\nCOL SPID FOR a10;\nCOL PROGRAM FOR a35;\nSELECT TO_CHAR(a.logon_time,'DD-MON-YYYY HH24:MI:SS') logon, a.USERNAME, a.SID, a.SERIAL#, a.status,\n  a.OSUSER, b.spid, a.PROCESS, a.MACHINE, a.PROGRAM, a.SQL_HASH_VALUE, a.sql_id, a.SQL_CHILD_NUMBER sql_child\nFROM v$session a, v$process b\nWHERE a.paddr = b.addr AND a.status = 'ACTIVE';<\/code><\/pre>\n\n\n\n<ol start=\"2\" class=\"wp-block-list\">\n<li>Switch Logfile<\/li>\n<\/ol>\n\n\n\n<pre class=\"wp-block-prismatic-blocks\"><code class=\"language-sql\">ALTER SYSTEM SWITCH LOGFILE;<\/code><\/pre>\n\n\n\n<ol start=\"3\" class=\"wp-block-list\">\n<li>Shutdown Database and Listener<\/li>\n<\/ol>\n\n\n\n<pre class=\"wp-block-prismatic-blocks\"><code class=\"language-sql\">shutdown immediate\nlsnrctl stop &lt;listener name><\/code><\/pre>\n\n\n\n<ol start=\"4\" class=\"wp-block-list\">\n<li>Verify No Background Oracle Services Are Running<\/li>\n<\/ol>\n\n\n\n<pre class=\"wp-block-prismatic-blocks\"><code class=\"language-bash\">which fuser\n&lt;path to fuser> \/$ORACLE_HOME\/bin\/oracle<\/code><\/pre>\n\n\n\n<ol start=\"5\" class=\"wp-block-list\">\n<li>Backup Oracle Home<\/li>\n<\/ol>\n\n\n\n<pre class=\"wp-block-prismatic-blocks\"><code class=\"language-bash\">cd \/path\/to\/oracle_home\ntar -cvf \/path\/to\/backup\/backup.tar .<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">Installation<\/h3>\n\n\n\n<ol class=\"wp-block-list\">\n<li>Apply Patch<\/li>\n<\/ol>\n\n\n\n<pre class=\"wp-block-prismatic-blocks\"><code class=\"language-bash\">cd &lt;PATCH_TOP_DIR>\/&lt;patch number>\nopatch apply<\/code><\/pre>\n\n\n\n<ol start=\"2\" class=\"wp-block-list\">\n<li>Verify Patch Installation<\/li>\n<\/ol>\n\n\n\n<pre class=\"wp-block-prismatic-blocks\"><code class=\"language-bash\">opatch lsinventory<\/code><\/pre>\n\n\n\n<ol start=\"3\" class=\"wp-block-list\">\n<li>Restart Oracle Services<\/li>\n<\/ol>\n\n\n\n<h3 class=\"wp-block-heading\">Deinstallation<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">In case any issue after patching you can rollback the patch.<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li>Rollback Patch<\/li>\n<\/ol>\n\n\n\n<pre class=\"wp-block-prismatic-blocks\"><code class=\"language-bash\">opatch rollback -id &lt;patch number><\/code><\/pre>\n\n\n\n<ol start=\"2\" class=\"wp-block-list\">\n<li>Verify Oracle Inventory<\/li>\n<\/ol>\n\n\n\n<pre class=\"wp-block-prismatic-blocks\"><code class=\"language-bash\">opatch lsinventory<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">13. Post-Patch Checks<\/h2>\n\n\n\n<ol class=\"wp-block-list\">\n<li>Restart Database and Run Datapatch<\/li>\n<\/ol>\n\n\n\n<pre class=\"wp-block-prismatic-blocks\"><code class=\"language-sql\">sqlplus \/nolog\nCONNECT \/ as sysdba\nstartup\ncd $ORACLE_HOME\/OPatch\n.\/datapatch -verbose<\/code><\/pre>\n\n\n\n<ol start=\"2\" class=\"wp-block-list\">\n<li>Revalidate Invalid Objects<\/li>\n<\/ol>\n\n\n\n<pre class=\"wp-block-prismatic-blocks\"><code class=\"language-sql\">SQL> @?\/rdbms\/admin\/utlprp.sql 0<\/code><\/pre>\n","protected":false},"excerpt":{"rendered":"<p>Introduction This document outlines the essential steps for Oracle Database patching. It includes pre-checks, patch installation instructions, and post-patching validation steps. Always refer to the README file included with the patch for specific details 1. OS Check with Bit Information &#8211; OS Level 2. OS Release Check &#8211; OS Level 3. Database Status 4. Database [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"googlesitekit_rrm_CAowu461DA:productID":"","footnotes":""},"categories":[1225],"tags":[],"class_list":["post-982","post","type-post","status-publish","format-standard","hentry","category-database"],"_links":{"self":[{"href":"https:\/\/w3buddy.com\/blog\/wp-json\/wp\/v2\/posts\/982","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/w3buddy.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/w3buddy.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/w3buddy.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/w3buddy.com\/blog\/wp-json\/wp\/v2\/comments?post=982"}],"version-history":[{"count":2,"href":"https:\/\/w3buddy.com\/blog\/wp-json\/wp\/v2\/posts\/982\/revisions"}],"predecessor-version":[{"id":986,"href":"https:\/\/w3buddy.com\/blog\/wp-json\/wp\/v2\/posts\/982\/revisions\/986"}],"wp:attachment":[{"href":"https:\/\/w3buddy.com\/blog\/wp-json\/wp\/v2\/media?parent=982"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/w3buddy.com\/blog\/wp-json\/wp\/v2\/categories?post=982"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/w3buddy.com\/blog\/wp-json\/wp\/v2\/tags?post=982"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}