October 19, 2020

Oracle Autonomous Database Schema Advisor

 Oracle Autonomous Database Schema Advisor

The ADB Schema Advisor is a light-weight utility that analyzes your on-premise or cloud Oracle Database schemas for the suitability of migration to the Oracle Autonomous Database. The Advisor discovers the schema objects and performs deep analysis to highlight the differences when the object gets created on Oracle Autonomous Data Warehouse or Oracle Autonomous Transaction Processing database, including the reasons when the object cannot be created.

 

The Advisor will run on pre-existing Schema and generates a report that highlights:

  •  The counts of discovered objects and a summary of migration status.
  •  Objects that cannot be migrated to the Autonomous Database due to the restrictions or lockdowns imposed on certain data types, Oracle Database options and SQL.
  • The Objects that will migrate with modifications automatically done during the import or the object creation process
  • Informational section containing certain best practice recommendations and guidance

 

Installation of Advisor:-

The autonomous database schema advisor can be installed from 11.2.0.4 onwards and it doesn’t require any additional license to use.

Download:-

We can download the advisor package from following  MOS Note 2462677.1

Installation Steps:

Initiate the ADB Advisor installation by invoking the following script as sys user.

sqlplus SYS AS SYSDBA @install_adb_advisor.sql <advisor schema name> <password>

If the advisor schema is not procreated , the above script will create it.

Once above script runs successfully, run the advisor to generate report.

 

SQL> conn adbadvisor

Enter password:

Connected.

 

Generate the Advisor report by executing ADB_ADVISOR package:

SQL>EXEC ADB_ADVISOR.REPORT(schemas=<List of schemas>'', adb_type=<adb_type>'');

Now here, list of schemas denotes the name of schemas on which you would like to run the analyse.

Enter “ALL” to analyse all user schemas.

Adb_type denotes different types destination such as

  •  'ATP' for Autonomous Transaction Processing (Serverless)
  •  'ADW' for Autonomous Data Warehouse (Serverless)
  •  'ATPD' for Autonomous Transaction Processing (Dedicated)
  •  'ADWD' for Autonomous Data Warehouse (Dedicated)


The report has 4 sections (see Sample Report for ATP):

  •  Section 1: Summary Section with object counts
  •  Section 2: List of objects that will not migrate to ADB
  •  Section 3: List of objects that will migrate with changes
  •  Section 4: Informational section and migration guidelines

 

Here we would migrate into ADW

SQL>EXEC ADB_ADVISOR.REPORT(schemas => ‘ALL', adb_type => 'ADW');

==========================================================================================

== ADW SCHEMA MIGRATION REPORT FOR APEXDEMO,SCOTT

==========================================================================================

 

ADB Advisor Version   : 19.4.0.0.0

Instance Name         : ora12c

Database Name         : ORA12C

Host Name             : server3.soumya.com

Database Version      : 12.1.0.2.0

Pluggable Database    : ora12c

Schemas Analyzed      : APEXDEMO,SCOTT

Analyzing for         : Autonomous Data Warehouse (Serverless)

Report Start date/time: 16-OCT-2020 11:09

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

-- SECTION 1: SUMMARY

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

 

                                           Objects         Objects         Total

                           Object          Will Not        Will Migrate    Objects

Object Type                Count           Migrate         With Changes    Will Migrate

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

CONSTRAINT                 111             0               0               111

INDEX                      41              0               0               41

PACKAGE                    3               0               0               3

PACKAGE BODY               3               0               0               3

SEQUENCE                   8               0               0               8

TABLE                      28              0               0               28

TRIGGER                    21              0               0               21

User Objects in SYS        120             120             0               0

User Objects in SYSTEM     0               0               0               0

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

- SECTION 2: FOLLOWING OBJECTS WILL NOT MIGRATE

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

 

1) User-defined objects in SYS schema will not migrate (Count=120):

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

Note: User-defined objects were detected in SYS schema. Consider moving them out of SYS prior to migration.

 

Owner      Object Type                    Object Name

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

SYS        UNDEFINED                      CDB$ROOT

SYS        TABLE PARTITION                WRP$_REPORTS

SYS        INDEX PARTITION                WRP$_REPORTS_DETAILS_IDX02

SYS        INDEX PARTITION                WRP$_REPORTS_DETAILS_IDX01

SYS        INDEX PARTITION                SYS_IL0000006450C00009$$

SYS        TABLE PARTITION                WRP$_REPORTS_DETAILS

SYS        TABLE PARTITION                WRP$_REPORTS_TIME_BANDS

SYS        SEQUENCE                       WRM$_DEEP_PURGE_INTERVAL

SYS        TABLE PARTITION                WRH$_FILESTATXS

SYS        INDEX PARTITION                WRH$_FILESTATXS_PK

SYS        TABLE PARTITION                WRH$_SQLSTAT

SYS        INDEX PARTITION                WRH$_SQLSTAT_INDEX

SYS        INDEX PARTITION                WRH$_SQLSTAT_PK

SYS        TABLE PARTITION                WRH$_SYSTEM_EVENT

SYS        INDEX PARTITION                WRH$_SYSTEM_EVENT_PK

SYS        TABLE PARTITION                WRH$_WAITSTAT

SYS        INDEX PARTITION                WRH$_WAITSTAT_PK

SYS        TABLE PARTITION                WRH$_LATCH

SYS        INDEX PARTITION                WRH$_LATCH_PK

SYS        TABLE PARTITION                WRH$_LATCH_MISSES_SUMMARY

SYS        INDEX PARTITION                WRH$_LATCH_MISSES_SUMMARY_PK

SYS        TABLE PARTITION                WRH$_DB_CACHE_ADVICE

SYS        INDEX PARTITION                WRH$_DB_CACHE_ADVICE_PK

SYS        TABLE PARTITION                WRH$_ROWCACHE_SUMMARY

SYS        INDEX PARTITION                WRH$_ROWCACHE_SUMMARY_PK

SYS        TABLE PARTITION                WRH$_SGASTAT

SYS        INDEX PARTITION                WRH$_SGASTAT_U

SYS        TABLE PARTITION                WRH$_SYSSTAT

SYS        INDEX PARTITION                WRH$_SYSSTAT_PK

SYS        TABLE PARTITION                WRH$_PARAMETER

SYS        INDEX PARTITION                WRH$_PARAMETER_PK

SYS        TABLE PARTITION                WRH$_SEG_STAT

SYS        INDEX PARTITION                WRH$_SEG_STAT_PK

SYS        TABLE PARTITION                WRH$_SERVICE_STAT

SYS        INDEX PARTITION                WRH$_SERVICE_STAT_PK

SYS        TABLE PARTITION                WRH$_ACTIVE_SESSION_HISTORY

SYS        INDEX PARTITION                WRH$_ACTIVE_SESSION_HISTORY_PK

SYS        TABLE PARTITION                WRH$_TABLESPACE_STAT

SYS        INDEX PARTITION                WRH$_TABLESPACE_STAT_PK

SYS        TABLE PARTITION                WRH$_OSSTAT

SYS        INDEX PARTITION                WRH$_OSSTAT_PK

SYS        TABLE PARTITION                WRH$_SYS_TIME_MODEL

SYS        DIRECTORY                      XMLDIR

SYS        DIRECTORY                      ORACLE_OCM_CONFIG_DIR

SYS        DIRECTORY                      ORACLE_OCM_CONFIG_DIR2

SYS        INDEX PARTITION                WRP$_REPORTS_IDX01

SYS        INDEX PARTITION                WRP$_REPORTS_IDX02

SYS        INDEX PARTITION                WRP$_REPORTS_IDX01

SYS        INDEX PARTITION                WRP$_REPORTS_IDX02

SYS        TABLE PARTITION                WRP$_REPORTS

SYS        INDEX PARTITION                WRP$_REPORTS_DETAILS_IDX02

SYS        INDEX PARTITION                WRP$_REPORTS_DETAILS_IDX01

SYS        INDEX PARTITION                SYS_IL0000006450C00009$$

SYS        TABLE PARTITION                WRP$_REPORTS_DETAILS

SYS        TABLE PARTITION                WRP$_REPORTS_TIME_BANDS

SYS        INDEX PARTITION                WRH$_FILESTATXS_PK

SYS        INDEX PARTITION                WRH$_SQLSTAT_INDEX

SYS        INDEX PARTITION                WRH$_SQLSTAT_PK

SYS        INDEX PARTITION                WRH$_SYSTEM_EVENT_PK

SYS        INDEX PARTITION                WRH$_WAITSTAT_PK

SYS        INDEX PARTITION                WRH$_LATCH_PK

SYS        INDEX PARTITION                WRH$_LATCH_CHILDREN_PK

SYS        INDEX PARTITION                WRH$_LATCH_PARENT_PK

SYS        INDEX PARTITION                WRH$_LATCH_MISSES_SUMMARY_PK

SYS        INDEX PARTITION                WRH$_DB_CACHE_ADVICE_PK

SYS        INDEX PARTITION                WRH$_ROWCACHE_SUMMARY_PK

SYS        INDEX PARTITION                WRH$_SGASTAT_U

SYS        INDEX PARTITION                WRH$_SYSSTAT_PK

SYS        INDEX PARTITION                WRH$_PARAMETER_PK

SYS        INDEX PARTITION                WRH$_SEG_STAT_PK

SYS        INDEX PARTITION                WRH$_DLM_MISC_PK

SYS        INDEX PARTITION                WRH$_SERVICE_STAT_PK

SYS        INDEX PARTITION                WRH$_ACTIVE_SESSION_HISTORY_PK

SYS        INDEX PARTITION                WRH$_TABLESPACE_STAT_PK

SYS        INDEX PARTITION                WRH$_OSSTAT_PK

SYS        INDEX PARTITION                WRH$_SYS_TIME_MODEL_PK

SYS        INDEX PARTITION                WRH$_SERVICE_WAIT_CLASS_PK

SYS        INDEX PARTITION                WRH$_INST_CACHE_TRANSFER_PK

SYS        INDEX PARTITION                WRH$_EVENT_HISTOGRAM_PK

SYS        INDEX PARTITION                WRH$_INTERCONNECT_PINGS_PK

SYS        INDEX PARTITION                WRH$_MVPARAMETER_PK

SYS        INDEX PARTITION                WRH$_CELL_GLOB_SUMM_PK

SYS        INDEX PARTITION                WRH$_CELL_DISK_SUMM_PK

SYS        INDEX PARTITION                WRH$_CELL_GLOBAL_PK

SYS        INDEX PARTITION                WRH$_CELL_IOREASON_PK

SYS        INDEX PARTITION                WRH$_CELL_DB_PK

SYS        INDEX PARTITION                WRH$_CELL_OPEN_ALERTS_PK

SYS        INDEX PARTITION                WRH$_IM_SEG_STAT_PK

SYS        UNDEFINED                      NON$CDB

SYS        INDEX PARTITION                WRH$_SYS_TIME_MODEL_PK

SYS        TABLE PARTITION                WRH$_EVENT_HISTOGRAM

SYS        TABLE PARTITION                WRH$_LATCH_CHILDREN

SYS        INDEX PARTITION                WRH$_LATCH_CHILDREN_PK

SYS        INDEX PARTITION                WRH$_EVENT_HISTOGRAM_PK

SYS        TABLE PARTITION                WRH$_LATCH_PARENT

SYS        INDEX PARTITION                WRH$_LATCH_PARENT_PK

SYS        TABLE PARTITION                WRH$_MVPARAMETER

SYS        INDEX PARTITION                WRH$_MVPARAMETER_PK

SYS        TABLE PARTITION                WRH$_CELL_GLOBAL_SUMMARY

SYS        INDEX PARTITION                WRH$_CELL_GLOB_SUMM_PK

SYS        TABLE PARTITION                WRH$_CELL_DISK_SUMMARY

SYS        INDEX PARTITION                WRH$_CELL_DISK_SUMM_PK

SYS        TABLE PARTITION                WRH$_CELL_GLOBAL

SYS        INDEX PARTITION                WRH$_CELL_GLOBAL_PK

SYS        TABLE PARTITION                WRH$_CELL_IOREASON

SYS        INDEX PARTITION                WRH$_CELL_IOREASON_PK

SYS        TABLE PARTITION                WRH$_DLM_MISC

SYS        INDEX PARTITION                WRH$_DLM_MISC_PK

SYS        TABLE PARTITION                WRH$_CELL_DB

SYS        INDEX PARTITION                WRH$_CELL_DB_PK

SYS        TABLE PARTITION                WRH$_CELL_OPEN_ALERTS

SYS        INDEX PARTITION                WRH$_CELL_OPEN_ALERTS_PK

SYS        TABLE PARTITION                WRH$_IM_SEG_STAT

SYS        INDEX PARTITION                WRH$_IM_SEG_STAT_PK

SYS        TABLE PARTITION                WRH$_SERVICE_WAIT_CLASS

SYS        INDEX PARTITION                WRH$_SERVICE_WAIT_CLASS_PK

SYS        TABLE PARTITION                WRH$_INST_CACHE_TRANSFER

SYS        INDEX PARTITION                WRH$_INST_CACHE_TRANSFER_PK

SYS        TABLE PARTITION                WRH$_INTERCONNECT_PINGS

SYS        INDEX PARTITION                WRH$_INTERCONNECT_PINGS_PK

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

-- SECTION 3: FOLLOWING OBJECTS WILL MIGRATE WITH CHANGES

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

 

 

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

-- SECTION 4: MIGRATION ADDITIONAL INFO

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

 

1) Tables and Partitions will be Compressed to QUERY HIGH in ADW (Count=28):

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

Note: When migrating to ADW, if a table or partition DDL does not contain a COMPRESSION clause, it will

be created with a default compression of QUERY HIGH. To modify this behavior, either add a compression

clause of your choice (or even NOCOMPRESS) prior to the export or alter the compression clause after

the import.

 

 

 

 

Owner                Object Type          Object Name

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

APEXDEMO             TABLE                APEX$_ACL

APEXDEMO             TABLE                APEX$_WS_FILES

APEXDEMO             TABLE                APEX$_WS_HISTORY

APEXDEMO             TABLE                APEX$_WS_LINKS

APEXDEMO             TABLE                APEX$_WS_NOTES

APEXDEMO             TABLE                APEX$_WS_ROWS

APEXDEMO             TABLE                APEX$_WS_TAGS

APEXDEMO             TABLE                APEX$_WS_WEBPG_SECTIONS

APEXDEMO             TABLE                APEX$_WS_WEBPG_SECTION_HISTORY

APEXDEMO             TABLE                DBASOUMYA

APEXDEMO             TABLE                DBASOUMYA_ERR$

APEXDEMO             TABLE                DEMO_CONSTRAINT_LOOKUP

APEXDEMO             TABLE                DEMO_CUSTOMERS

APEXDEMO             TABLE                DEMO_ORDERS

APEXDEMO             TABLE                DEMO_ORDER_ITEMS

APEXDEMO             TABLE                DEMO_PRODUCT_INFO

APEXDEMO             TABLE                DEMO_STATES

APEXDEMO             TABLE                DEMO_TAGS

APEXDEMO             TABLE                DEMO_TAGS_SUM

APEXDEMO             TABLE                DEMO_TAGS_TYPE_SUM

APEXDEMO             TABLE                DEPT

APEXDEMO             TABLE                EBA_DEMO_FILES

APEXDEMO             TABLE                EBA_DEMO_FILE_PROJECTS

APEXDEMO             TABLE                EMP

SCOTT                TABLE                BONUS

SCOTT                TABLE                DEPT

SCOTT                TABLE                EMP

SCOTT                TABLE                SALGRADE

 

2) User defined tablespaces are not allowed in ATP-S and ADW-S (Serverless) (Count=2):

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

Note: Creation of tablespaces is disallowed in ATP and ADW (Serverless). The tablespace clause gets ignored

and all objects get created in 'DATA' tablespace. The following is the list of schemas and the tablespaces

currently in use.

 

APEXDEMO             APEX_2300472439289881

SCOTT                USERS

 

3) Table columns are defined using BYTE length semantics in a single-byte (8-bit) Character Set (Count=176):

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

Note: If you have columns defined using BYTE length semantics, data truncation may occur when migrating

a single byte Character Set to a multi byte Character Set, as in the Autonomous Database. Refer to "Character

Set Migration" section of Database Globalization Support Guide for more

 

details, and run the below SQL

to get the list of columns defined using BYTE length semantics.

 

[Use the following SQL to get the full list of columns ...]

[SELECT a.owner, a.object_type, a.object_name table_name, a.subobject_name column_name, b.short_desc, b.long_desc FROM adb_advisor_info_tmp a, db_advisor_codes_tmp b WHERE a.cd = b.cd AND a.cd = 304]

 

4) Schema Owner's user attributes will be modified in ADB (Count=2):

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

Note: The following schema owner's DEFAULT TABLESPACE and/or DEFAULT PROFILE will be modified in ADB.

 

DEFAULT TABLESPACE for APEXDEMO will be modified from 'APEX_2300472439289881' to

DEFAULT TABLESPACE for SCOTT will be modified from 'USERS' to 'DATA'

5) Database Options currently in use but will not be available in the ADB (Count=1):

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

Note: The following Database Options are detected as being used. ADB does not have these Options installed.

Please verify if the application/schema to be migrated depends on these options.

 

Tuning Pack

 

6) Database Parameters are detected as modified in the current database but can't be modified in the ADB (Count=4):

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

Note: The following init parameters are modified in your database that you would not be able to modify

in ADB. Please refer to the Oracle Autonomous Database documentation on the parameters that you are

allowed to modify.

 

control_management_pack_access

log_archive_dest_3

log_archive_dest_state_3

memory_target

 

 

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

-- END OF REPORT

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

Report End Datetime   : 16-OCT-2020 11:09

Report Runtime        : +000000000 00:00:35.679623000

 

 

 

PL/SQL procedure successfully completed.

 

 

Review the above report and take necessary action against it if required.


Deinstallation of ADB advisor:-

SQL> DROP USER ADBADVISOR CASCADE;


October 16, 2020

ORA-38781: cannot disable media recovery - have guaranteed restore points

 Scenario:- While trying to disable archivelog, following error is reported.

ORA-38781: cannot disable media recovery - have guaranteed restore points

Solution:-

Current environment details :-


OS

OEL 6.9

DB SID

Ora12c

DB Version

12.1.0.2 EE



SQL> alter database noarchivelog;
alter database noarchivelog
*
ERROR at line 1:
ORA-38781: cannot disable media recovery - have guaranteed restore points

Lets see what oerr utility says about this ora error.

[oracle@server3 u01]$ oerr ora 38781
38781, 00000, "cannot disable media recovery - have guaranteed restore points"
// *Cause: An attempt was made to disable media recovery while there is at
//         least one guaranteed restore point.
// *Action: Drop all guaranteed restore points and then disable media recovery.


SQL> select open_mode from v$database;

OPEN_MODE
--------------------
MOUNTED

SQL> alter database open;

Database altered.

Check the restore points in database.

SQL> select GUARANTEE_FLASHBACK_DATABASE,NAME ,TIME from v$restore_point;

GUARANTEE_FLASHBACK_DATABASE   NAME                           TIME
------------------------------ ------------------------------ ---------------------------------------------
YES                            TESTING                        14-SEP-20 08.56.24.000000000 AM

Check the status of flashback.

SQL> select name,flashback_on from v$database;

NAME                           FLASHBACK_ON
------------------------------ ------------------
ORA12C                         RESTORE POINT ONLY

Now drop the restore point and try disabling the archivelog.

SQL> drop restore point TESTING;

Restore point dropped.

SQL> select name,flashback_on from v$database;

NAME                           FLASHBACK_ON
------------------------------ ------------------
ORA12C                         NO


SQL> shut immediate
Database closed.
Database dismounted.
ORACLE instance shut down.
SQL> startup mount
ORACLE instance started.

SQL> startup mount
ORACLE instance started.

Total System Global Area  629145600 bytes
Fixed Size                  2927528 bytes
Variable Size             482346072 bytes
Database Buffers          138412032 bytes
Redo Buffers                5459968 bytes
Database mounted.



SQL> alter database noarchivelog;

Database altered.

SQL> select log_mode from v$database;

LOG_MODE
------------
NOARCHIVELOG


October 14, 2020

How to install Oracle Application Express(APEX) 20.1 in Linux

 

Oracle Application Express 20.1 Installation Steps 


Before installing Oracle Application Express, you must verify your configuration meets the minimum installation requirements.

• Oracle Database Requirements

Oracle Application Express release 20.1 requires an Oracle Database release 11.2.0.4 or later, including Enterprise Edition and Express Edition (Oracle Database XE). Oracle Application Express can be installed in single-instance database and in Oracle Real Application Clusters (Oracle RAC) database.

• MEMORY_TARGET of the Target Database

Oracle Application Express requires the system global area (SGA) and program global area (PGA) to be at least 300 MB.

• Oracle XML DB Requirement

Oracle XML DB must be installed in the Oracle database that you want to use if you are installing a full development environment. Oracle XML DB is not required for runtime only installations. If you are using a preconfigured database created either during an installation or by Database Configuration Assistant (DBCA), Oracle XML DB is already installed and configured.


Download Link: -

Oracle Application Express can be downloaded from HERE


Environment details:-

OS

RHEL 6.4

IP

192.168.0.106

Hostname

server3.soumya.com

Apex Version

20.1

DB Version

12.1.0.2


October 12, 2020

How to find out which Enterprise Edition features are being used in your oracle database ?

 How to find out which Enterprise Edition features are being used in your oracle database ?


I have seen many customer uses Enterprise Edition features unknowingly. They fall into trouble when Oracle performs an audit into their database and find out what are features they have using without their knowledge. As many of those features require extra cost.


A few of EE features that require extra licensing such as 


  • Oracle Partitioning
  • Oracle Label Security
  • Oracle On-Line Analytical Processing (OLAP)
  • Oracle Advanced Security
  • Oracle Advanced Compression
  • Oracle Database Vault
  • Oracle Database In-Memory
  • Oracle Active Data Guard
  • Oracle Multitenant 
  • Oracle Spatial and Graph


We can use following query to find out if any features that are being used cost extra.


 

spool DB_features_usage.lst

Set feedback off

Set lines 222

Col name  format a50 heading "Feature"

Col version  format a10 heading "Version"

Col detected_usages  format 999,990 heading "Detected|usages"

Col currently_used    format a06     heading "Curr.|used?"

Col first_usage_date  format a10     heading "First use"

Col last_usage_date   format a10     heading "Last use"

Col nop noprint

Break on nop skip 1 on name

SQL> Select decode(detected_usages,0,2,1) nop,

 name, version, detected_usages, currently_used,

  to_char(first_usage_date,'DD/MM/YYYY') first_usage_date, 

   to_char(last_usage_date,'DD/MM/YYYY') last_usage_date

   from dba_feature_usage_statistics

    order by nop, 1, 2;

 

 



This would save the output in a file by name DB_features_usage.lst.

Reference: https://docs.oracle.com/en/database/oracle/oracle-database/12.2/dblic/Licensing-Information.html#GUID-AB354617-6614-487E-A022-7FC9A5A08472   

   

October 5, 2020

Oracle WebLogic Server 12cR2 (12.2.1.4) Installation on Oracle Linux 6

 

Assumptions

It is assumed that you have an existing server with either Oracle Linux 6.x or 7.x installed on it. 

 Software

Download the Weblogic Server 12c software from Oracle Technology Network.

Oracle Fusion Middleware 12c Infrastructure 12.2.1.4.0

We would use the fustion middleware infrastructure pack as we would be installing forms and reports 12c services later.

Make sure Java is installed properly .Check exact java version using

$ alternatives --config java

Selection Command

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

1 /usr/lib/jvm/jre-1.7.0-openjdk.x86_64/bin/java

2 /usr/lib/jvm/jre-1.6.0-openjdk.x86_64/bin/java

+ 3 /usr/java/jdk1.8.0_05/bin/java


Setup

The following actions should be performed by the "root" user.

Make sure the "/etc/hosts" file contains correct entries for both the "localhost" and real host names.

127.0.0.1      localhost localhost.localdomain localhost4 localhost4.localdomain4
10.0.95.10 test.soumya.com test

 

Create a new group and user.

groupadd -g 54321 oinstall
useradd -u 54321 -g oinstall oracle
passwd oracle

 

Create the directories in which the Oracle software will be installed.

mkdir -p /d01/app/oracle/product/12.2.1.4
chown -R oracle:oinstall /d01
chmod -R 775 /d01/


Create an environment file named app_env

Add the following line in .bash_profile

alias app_env='. /home/oracle/app_env'


vi /home/oracle/app_env

ORACLE_BASE=/d01/app/oracle; export ORACLE_BASE
ORACLE_HOME=$ORACLE_BASE/product/12.2.1.4; export ORACLE_HOME
MW_HOME=$ORACLE_HOME ; export MW_HOME
WLS_HOME=$MW_HOME/wlserver; export WLS_HOME
WL_HOME=$WLS_HOME  ;export WLS_HOME
DOMAIN_HOME=/d01/app/oracle/product/12.2.1.4/user_projects/domains/prod_domain; export DOMAIN_HOME
JAVA_HOME=/usr/java/jdk1.8.0_231-amd64; export JAVA_HOME
export OHS_INST=/d01/app/oracle/product/12.2.1.4/user_projects/domains/prod_domain/config/fmwconfig/components/OHS/instances/ohs1 ;export OHS_INST
PATH=$JAVA_HOME/bin:$PATH ; export PATH
export LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/lib
export CLASSPATH=$ORACLE_HOME/jlib:$ORACLE_HOME/rdbms/jlib
export FORMS_PATH=/d01/app/oracle/product/12.2.1.4/forms; export FORMS_PATH

[root@mesappprod u01]# rpm -Uvh jdk-8u241-linux-x64.rpm

Preparing...                          ################################# [100%]

Updating / installing...

   1:jdk1.8-2000:1.8.0_241-fcs        ################################# [100%]

Unpacking JAR files...

        tools.jar...

        plugin.jar...

        javaws.jar...

        deploy.jar...

        rt.jar...

        jsse.jar...

        charsets.jar...

        localedata.jar...

[root@mesappprod u01]# java -version

openjdk version "1.8.0_242"

OpenJDK Runtime Environment (build 1.8.0_242-b08)

OpenJDK 64-Bit Server VM (build 25.242-b08, mixed mode)

[root@mesappprod u01]# alternatives --config java


 There are 2 programs which provide 'java'.

   Selection    Command

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

*+ 1           java-1.8.0-openjdk.x86_64 (/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.242.b08-0.el7_7.x86_64/jre/bin/java)

   2           /usr/java/jdk1.8.0_241-amd64/jre/bin/java

 

Enter to keep the current selection[+], or type selection number: 2

 

For Oracle Linux 6, as specified in MOS Note [ID 1487773.1], amend the "/etc/security/limits.d/90-nproc.conf" file, making the following change.


# From
*          soft    nproc     1024
 #To
* - nproc 16384


Run the installer as the "oracle" user.

[oracle@weblogic_sw]$ unzip fmw_12.2.1.4.0_infrastructure_Disk1_1of1.zip

$ $JAVA_HOME/bin/java -jar fmw_12.2.1.4.0_infrastructure.jar

 

If this is is the first installation on the machine you will need to specify an inventory location. Enter the inventory location, like "/u01/app/oraInventory" and click the "OK" button. In our case we had database installed previously on the same machine hence it didn’t ask for inventory location.

 



Select the "Skip Auto Updates" options, then click the "next" button.


Enter the middleware home ("/u01/app/oracle/product/12.2.1") and click the "Next" button.



Accept the "Fusion Middleware Infrastructure" option by clicking the "Next" button.





Wait for the prerequisite checks to complete. If there are failures, correct them and rerun the checks. If there are no failures, click the "Next" button.


Enter your support details, or leave it unchecked the security updates checkbox. Click the "Next" button. If you chose not to receive security updates, click the "Yes" button on the warning dialog.


If you are ok with the summary information, click the "Install" button.



Wait for the installation to complete, then click the "Next" button.



On the installation complete screen, click the "Finish" button to launch the Configuration Wizard.




So this concludes the Weblogic Server installation process in OEL 6.





September 26, 2020

Extract Oracle DB information in one go


A single script to gather various information's of your database. Save the following code as .sql file and run it from sql prompt. This will generate a .lst file with the datetime.

This script has been tested on 11gR2, 12cR1, 12cR2, 19c 


column tm new_value file_time noprint

select to_char(sysdate,'DDMMYYYY')tm from dual;

spool &file_time.lst

set lines 152

set pages 1000

alter session set "_hash_join_enabled"=true

/

---------DATABASE NAME------

PROMPT Database Name and Status 

select name,open_mode,log_mode,database_role from v$database;




PROMPT TABLESPACE COUNT

SELECT COUNT(NAME) FROM V$TABLESPACE; 




PROMPT DATAFILES HEADER COUNT

SELECT COUNT(NAME) FROM V$DATAFILE_HEADER;




-----INSTANCE------

PROMPT INSTANCE STATUS

select status from v$instance;




----------------db size--------------

PROMPT DB SIZE(DATAFILE + REDOLOG+CONTROLFILE)

select a.data_size+b.temp_size+c.redo_size+d.controlfile_size "total_size in GB"

from ( select sum(bytes)/1024/1024/1024 data_size

from dba_data_files) a,

( select nvl(sum(bytes),0)/1024/1024/1024 temp_size

from dba_temp_files ) b,

( select sum(bytes)/1024/1024/1024 redo_size

from sys.v_$log ) c,

( select sum(BLOCK_SIZE*FILE_SIZE_BLKS)/1024/1024/1024 controlfile_size

from v$controlfile) d;







PROMPT TOTAL DATABASE USAGE




select (select sum(bytes/1048576) from dba_data_files) "Data Mb",

(select NVL(sum(bytes/1048576),0) from dba_temp_files) "Temp Mb",

(select sum(bytes/1048576)*max(members) from v$log) "Redo Mb",

(select sum(bytes/1048576) from dba_data_files) +

(select NVL(sum(bytes/1048576),0) from dba_temp_files) +

(select sum(bytes/1048576)*max(members) from v$log) "Total Mb"

from dual;







PROMPT

PROMPT

PROMPT DB PHYSICAL SIZE

PROMPT ==================

select sum(bytes/1024/1024/1024) "DB Physical Size(GB)" from dba_data_files;







PROMPT

PROMPT

PROMPT DB ACUTAL SIZE

PROMPT ================

select sum(bytes/1024/1024/1024) "DB Actual Size(GB)" from dba_segments;







----------TAblespace---------

PROMPT TABLESPACE INFORMATION

select TABLESPACE_NAME,STATUS,AUTOEXTENSIBLE, ONLINE_STATUS from dba_data_files;




PROMPT TABLESPACE SIZE AND FREE SPACE

set pagesize 100 

set lines 130

COLUMN free_space_mb format 99999990.00

COLUMN allocated_mb format 99999990.00

COLUMN used_mb format 99999990.00

COLUMN percent_used format 00.00

col tablespace_name format a25




SELECT SUBSTR(df.tablespace_name,1,30) tablespace_name,

(df.bytes) / 1024 / 1024 allocated_mb,

((df.bytes)-nvl(dfs.bytes,0))/1024/1024 used_mb,

NVL ((dfs.bytes) / 1024 / 1024, 0) free_space_mb,

round( ((df.bytes-nvl(dfs.bytes,0))/df.bytes * 100),2) percent_used

FROM ( select sum(bytes) bytes,tablespace_name from dba_data_files group by tablespace_name) df,

( select sum(bytes) bytes , tablespace_name from dba_free_space group by tablespace_name) dfs

WHERE df.tablespace_name = dfs.tablespace_name

ORDER BY percent_used ;




-------------tablespace>75----------------------------------------

PROMPT TABLESPACE USED MORE THAN 75% 

#alter session set "_hash_join_enabled"=true;

set pagesize 100

set lines 130

COLUMN free_space_mb format 99999990.00

COLUMN allocated_mb format 99999990.00

COLUMN used_mb format 99999990.00

COLUMN percent_used format 00.00

col tablespace_name format a25




SELECT SUBSTR(df.tablespace_name,1,30) tablespace_name,

(df.bytes) / 1024 / 1024 allocated_mb,

((df.bytes)-nvl(dfs.bytes,0))/1024/1024 used_mb,

NVL ((dfs.bytes) / 1024 / 1024, 0) free_space_mb,

round( ((df.bytes-nvl(dfs.bytes,0))/df.bytes * 100),2) percent_used

FROM ( select sum(bytes) bytes,tablespace_name from dba_data_files group by tablespace_name) df,

( select sum(bytes) bytes , tablespace_name from dba_free_space group by tablespace_name) dfs

WHERE df.tablespace_name = dfs.tablespace_name

and round( ((df.bytes-nvl(dfs.bytes,0))/df.bytes * 100),2) > 75

ORDER BY percent_used ;

------------Archivegap-------------------




#alter session set "_hash_join_enabled"=true;

PROMPT ARCIVELOG LAST SEQUENCE

select max(sequence#)"Last Sequence" from v$loghist;







PROMPT LAST APPLIED ARCHIVELOG SEQUENCE ON STANDBY DATABASE

select max(SEQUENCE#)"Applied Sequence" from v$archived_log where APPLIED='YES' and dest_id=2;







----------temp-----------------

PROMPT TEMP TABLESPACE INFO

SET LINESIZE 200

COL TABLESPACE_NAME FORMAT A20




SELECT TABLESPACE_NAME,SUM(BYTES_USED/1024/1024) "USED_MB",SUM(BYTES_FREE/1024/1024) "FREE_MB",

SUM(BLOCKS_FREE) "FREE_BLOCKS"

FROM V$TEMP_SPACE_HEADER

GROUP BY TABLESPACE_NAME;

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

PROMPT NUMBER OF ACTIVE SESSION

select count(*)"Active sessions" from v$session;




------------------Log sequence-----------------

PROMPT show parameter log_archive_dest_state_2

show parameter log_archive_dest_state_2




------------------Resource_Limit-----------------

PROMPT RESOURCE_LIMIT

SET LINES 200

SET PAGESIZE 200

COL RESOURCE_NAME FOR A30

COL INITIAL_ALLOCATION FOR A20

COL LIMIT_VALUE FOR A20

select * from v$resource_limit;










PROMPT COUNT OF INVALID OBJECTS

PROMPT ==========================

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




PROMPT DB HIT Ratio

PROMPT ==========================

select (1-(pr.value/

(dbg.value+cg.value)))*100

FROM v$sysstat pr,v$sysstat dbg,v$sysstat cg

WHERE Pr.name='physical reads'

AND dbg.name='db block gets'

AND cg.name='consistent gets';

PROMPT =============================LOAD========================================

select stat_name,value from v$OSSTAT where STAT_NAME='LOAD';




PROMPT =================================EVENT===================================

select event,count(event) from v$session group by event;




PROMPT =================================Session========================================

select username,status,count(*) from v$session group by username,status order by 1,3;




PROMPT =================================Number of Session========================================

SET LINESIZE 145

SET PAGESIZE 9999




COLUMN max_sess_allowed FORMAT 999,999 JUSTIFY r HEADING 'Max sessions allowed'

COLUMN num_sessions FORMAT 999,999,999 JUSTIFY r HEADING 'Number of sessions'

COLUMN pct_utl FORMAT a19 JUSTIFY r HEADING 'Percent Utilization'

COLUMN username FORMAT a15 JUSTIFY r HEADING 'Oracle User'

COLUMN num_user_sess FORMAT 999,999 JUSTIFY r HEADING 'Number of Logins'

COLUMN count_a FORMAT 999,999 JUSTIFY r HEADING 'Active Logins'

COLUMN count_i FORMAT 999,999 JUSTIFY r HEADING 'Inactive Logins'




PROMPT =================================Oracle Users Session========================================

SET verify off




SELECT

TO_NUMBER(a.value) max_sess_allowed

, TO_NUMBER(count(*)) num_sessions

, LPAD(ROUND((count(*)/a.value)*100,0) || '%', 19) pct_utl

FROM v$session b, v$parameter a

WHERE a.name = 'sessions'

GROUP BY a.value;




break on report

compute sum of num_user_sess count_a count_i on report




SELECT

lpad(nvl(sess.username, '[B.G. Process]'), 15) username

, count(*) num_user_sess

, nvl(act.count, 0) count_a

, nvl(inact.count, 0) count_i

FROM

v$session sess

, (SELECT count(*) count, nvl(username, '[B.G. Process]') username

FROM v$session

WHERE status = 'ACTIVE'

GROUP BY username) act

, (SELECT count(*) count, nvl(username, '[B.G. Process]') username

FROM v$session

WHERE status = 'INACTIVE'

GROUP BY username) inact

WHERE

nvl(sess.username, '[B.G. Process]') = act.username (+)

and nvl(sess.username, '[B.G. Process]') = inact.username (+)

GROUP BY

sess.username

, act.count

, inact.count;

=============================================== SQL row lock contention==========================================================




set linesize 1000

set pagesize 1000

col USERNAME format a10




select c.USERNAME, 

a.SID, 

c.SQL_ID, 

a.EVENT, 

a.STATE, 

c.STATUS, 

b.TIME_WAITED

from v$session_wait a,

v$session_wait_class b, 

v$session c

where a.SID=b.SID

and b.SID=c.SID

and c.SQL_ID is not null

and b.TIME_WAITED<>0 

and a.EVENT like '%row lock contention%'

order by 7;

=============================================== Table lock ==================================================================================================================

select s1.username || '@' || s1.machine|| ' ( SID=' || s1.sid || ' ) is blocking by '|| s2.username || '@' || s2.machine || ' ( SID=' || s2.sid || ' ) ' AS blocking_status

from v$lock l1, v$session s1, v$lock l2, v$session s2

where s1.sid=l1.sid and s2.sid=l2.sid

and l1.BLOCK=1 and l2.request > 0

and l1.id1 = l2.id1

and l2.id2 = l2.id2

and l1.type=l2.type;

Prompt==================================User Expiry Details===========================

select USERNAME,EXPIRY_DATE,PROFILE from dba_users where account_status='OPEN';







Prompt==================================TABLE MAX SIZE IN MB=================================

set linesize 1000

set pagesize 750

col Table_Name for a20

col owner for a15

col size for a10

select segment_name as "Table_Name",owner, round(bytes/1024/1024) || 'MB' as "Size"

from dba_segments where bytes>2073741824 and owner Not IN ('SYS','SYSTEM') 

order by bytes desc;




Prompt==================================TABLE MAX SIZE IN GB=================================

select segment_name as "Table_Name",owner, round(bytes/1024/1024/1024) || 'GB' as "Size"

from dba_segments where bytes>2073741824 and owner Not IN ('SYS','SYSTEM') 

order by bytes desc;




spool off

 

Oracle Database 26ai Installation Using RPM on Oracle Linux 9 (OEL 9) – Step-by-Step Guide

  In this post I will describe the installation of Oracle Database 26ai 64-bit on Oracle Linux 9 (OL8) 64-bit. The installation requires a m...