How to Install SQL Developer on Linux Mint

In this post I am going to share the steps for installation of SQL Developer on Linux Mint OS or Ubuntu.

SQL developer will require to jdk as pre-requisites.


1. Install jdk 8 or above. 

sudo apt-get install openjdk-8-jdk

It will be installed in below folder


2. SQL Developer which we wil download from Oracle Website would in rpm format. I am going to use alien tool to covert it in debian(deb) format.

sudo apt-get install -y alien

3. Convert the SQL developer rpm to debain format.

himanshu@himanshu-ThinkPad-T430 ~/Downloads $ ls -ltr sqldeveloper-
-rw-rw-r-- 1 himanshu himanshu 420128668 Sep 18 23:46 sqldeveloper-

himanshu@himanshu-ThinkPad-T430 ~/Downloads $ sudo alien sqldeveloper-

Once done we can see below deb file.

himanshu@himanshu-ThinkPad-T430 ~/Downloads $ ls -ltr sqldeveloper_19.2.1-248.2212_all.deb

-rw-r--r-- 1 root root 416469574 Sep 19 00:02 sqldeveloper_19.2.1-248.2212_all.deb

4. Install SQL Developer package now.

You can user GUI to install the package 


Run below command on terminal

himanshu@himanshu-ThinkPad-T430 ~/Downloads $ sudo dpkg -i sqldeveloper_19.2.1-248.2212_all.deb
Selecting previously unselected package sqldeveloper.
(Reading database ... 256436 files and directories currently installed.)
Preparing to unpack sqldeveloper_19.2.1-248.2212_all.deb ...
Unpacking sqldeveloper (19.2.1-248.2212) ...
Setting up sqldeveloper (19.2.1-248.2212) ...
Processing triggers for libc-bin (2.23-0ubuntu11) ...

5. Open SQL Developer, First time it will ask for jdk path, please provide same path as done in step 1

himanshu@himanshu-ThinkPad-T430 /usr/local/bin $ ls -ltr sqldeveloper
-rwxr-xr-x 1 root root 34 Sep  5 03:58 sqldeveloper

himanshu@himanshu-ThinkPad-T430 /usr/local/bin $ ./sqldeveloper

 Oracle SQL Developer
 Copyright (c) 2005, 2018, Oracle and/or its affiliates. All rights reserved.

Default JDK not found
Type the full pathname of a JDK installation (or Ctrl-C to quit), the path will be stored in /home/himanshu/.sqldeveloper/19.2.1/product.conf

How to create free Oracle Cloud Account

Oracle provides a free oracle cloud account for 30 days or 300$ free credit usage.
Its quite easy to register for a free account and start using it.


1. Open link

2. Click on Try for free  and we will see below screen. Provide the required information as requested. I am not sharing any personal info in these screenshots.


4.  We will need to verify mobile number through OTP received.

5.  Then next steps will be to enter payment details which is mandatory.  Your card will be charged for a specific amount and it will be reversed back after verification.

6. Once payment method is successfully verified, you will be logged into portal. It take 15 minutes to activate the account. We will need to follow steps further as given in mail. It will have required access details.

7. Once you receive credentials via mail, Please login and you are all set to use your Oracle Cloud account.

How to change IP address of an Oracle EBS Environment

We can follow below steps to change IP address in Oracle Application/EBS environment


1. Change the IP Address in the Server.

2. Verify the current ip address setup in the Oracle Applications environment. Connect as apps user into SQL*Plus and run:

select NODE_NAME, STATUS, NODE_MODE, NODE_ID,SERVER_ADDRESS, HOST, DOMAIN, WEBHOST, VIRTUAL_IP from fnd_nodes where node_name = upper('&hostname');

3. Run the following command to remove the old ip address from the Oracle Applications tables:

perl $AD_TOP/bin/ appspass=apps contextfile=$APPL_TOP/admin/$CONTEXT_NAME.xml -removeserver 

replace $CONTEXT_NAME for the context file name under the $APPL_TOP/admin directory;

then connect to SQL*Plus as apps user and run:

FND_NET_SERVICES.remove_server('&SID', '&HOSTNAME');

replace by the SID of the environment and by the hostname in the environment. Both must be entered in upper case.

4. Run autoconfig to populate the values using the new IP Address.

5. Confirm the ip address has been changed to the new value changed in the step 1:

select NODE_NAME, STATUS, NODE_MODE, NODE_ID,SERVER_ADDRESS, HOST, DOMAIN, WEBHOST, VIRTUAL_IP from fnd_nodes where node_name = upper('&hostname');

How to enable USB in VirtualBox

In this post we would be discussing how to enable inside a machine built on VirtualBox. By default the USB functionality will not work.

Steps to enable USB

1)Download the Extension Pack from virtualbox link given below.  

2) Install VirtualBox Extension
    a) Open Virtual Box
    b) Go to File>Preferences

   c) A new window will open and we need to select extension from left tab.

  d) Click on "+" sign and browse/select the extension pack which was downloaded.

   e) Click on install and accept license agreement. It will prompt for sudo password. Once done          
       installation would be  done.

  f) User running VirtualBox must belong to the vboxuser group.


  g) Now Restart you system and start virtual machine and mount USB device from the list.

      We can now easily use the USB device as per need.

How to check Clock synchronization between cluster nodes in RAC

We can use below to check the clock/time synchronization between nodes in RAC cluster. The crs alert log will also point out thee synchronization issue between the nodes.


cd $GRID_HOME/bin 
./cluvfy comp clocksync -n all


Verifying Clock Synchronization across the cluster nodes
Oracle Clusterware is installed on all nodes.
CTSS resource check passed
Query of CTSS for time offset passed

CTSS is in Observer state. Switching over to clock synchronization checks using NTP

Starting Clock synchronization checks using Network Time Protocol(NTP)...
NTP configuration file "/etc/ntp.conf" existence check passed
Liveness check passed for "ntpd"
Check for NTP daemon or service alive passed on all nodes
Check of common NTP Time Server passed
Clock time offset check passed

Clock synchronization check using Network Time Protocol(NTP) passed

Oracle Cluster Time Synchronization Services check passed

Verification of Clock Synchronization across the cluster nodes was successful.

Check whether ctss or ntp is running

crsctl check ctss 

CRS-4700: The Cluster Time Synchronization Service is in Observer mode.
Observer means – Time sync between nodes are taken care by NTP

Active means – Time sync between nodes are taken care by CTSS

Query to find out the status of Interface Managers

We can use below query to check the status for interface managers.

SELECT x.process_type "Name",
  (SELECT '1' FROM fnd_concurrent_requests cr,
    fnd_concurrent_programs_vl cp,
    fnd_application a WHERE cp.concurrent_program_id = cr.concurrent_program_id
  AND cp.concurrent_program_name                     = x.process_name
  AND cp.application_id                              = a.application_id
  AND a.application_short_name                       = x.process_app_short_name
  AND phase_code                                    != 'C'
  ),'1','Active','Inactive') "Status",
  x.worker_rows "Worker Rows",
  x.timeout_hours "Timeout Hours",
  x.timeout_minutes "Timeout Minutes",
  x.process_hours "Process Interval Hours",
  x.process_minutes "Process Interval Minutes",
  x.process_seconds "Process Interval Seconds"
  (SELECT mipc.process_code ,
    mipc.process_status ,
    mipc.process_interval ,
    mipc.manager_priority ,
    mipc.worker_priority ,
    mipc.worker_rows ,
    mipc.processing_timeout ,
    mipc.process_name ,
    mipc.process_app_short_name ,
    a.meaning process_type ,
    FLOOR(mipc.process_interval    /3600) process_hours ,
    FLOOR((mipc.process_interval   - (FLOOR(mipc.process_interval/3600) * 3600))/60) process_minutes ,
    (mipc.process_interval         - (FLOOR(mipc.process_interval/3600) * 3600) - (FLOOR((mipc.process_interval - (FLOOR(mipc.process_interval/3600) * 3600))/60) * 60)) process_seconds ,
    FLOOR(mipc.processing_timeout  /3600) timeout_hours ,
    FLOOR((mipc.processing_timeout - FLOOR(mipc.processing_timeout/3600) * 3600)/60) timeout_minutes
  FROM mtl_interface_proc_controls mipc,
    mfg_lookups a
  WHERE a.lookup_type = 'PROCESS_TYPE'
  AND a.lookup_code   = mipc.process_code
  ) x
  -- WHERE x.PROCESS_TYPE = 'Cost Manager' -- uncomment this to display only the cost manager

ORA-04023: Object could not be validated or authorized

While running any queries, or after creating any view,procedures we may start getting ORA-04023 errors.

ORA-04023: Object could not be validated or authorized

We may also see ORA-00001 errors in  alert log file parallely.

If we have RAC database and then we may see ORA-04023 error only on one of the nodes which would be specific to instance or node

This would be due to shared pool corruption.


SQL> alter system flush shared_pool;

or bounce the database or specific instance.

If this does not solve the issue, we need to contact Oracle Support for further details.