Here are instruction steps to install Oracle instant Client on Ubuntu

  1. Create a folder dedicated to Oracle.
cd /opt/
sudo mkdir /opt/oracle

2. Download and unzip Oracle Instant Client at opt/oracle .

sudo wget unzip instantclient_21_4

3. Install linux asynchronous I/O library called libaio .

sudo apt update
sudo apt install libaio1

4. Add and link system configuration for instant client path.

sudo sh -c "echo /opt/oracle/instantclient_21_4 > /etc/"
sudo ldconfig


  • /opt folder is reserved for the installation of add-on application software packages.
  • Oracle Instant Client is an interface driver for Oracle Database to connect between Code and Database System.
  • libaio is used for asynchronous I/O operation without waiting for threads to be finished.
  • /etc folder is where system configuration exists.



If you are using Oracle SQL offset :number fetch next :number rows only , you must know that offset does not represent page number.

If you are trying to use it as page number, here is formula:

offset : ( rowLimitPerPage * pageNumber ) - rowLimitPerPage 

In tech term, the OFFSET clause specifies the number of rows to skip before starting to return rows from the query.

In simple term, the OFFSET clause is the starting point of row number, it is a variable to specific from which row you are going to query up to which row FETCH NEXT .

How OFFSET and FETCH NEXT works.




In your NodeJS, you declare to respond with a cookie in its header:

response.cookie("accessToken", accessToken, {
expires: new Date( + 60_000), // 60 seconds

But the client does not save cookies from its reponse header because you must specify withCredential in your axio configuration:

const instance = axios.create({
baseURL: '',
withCredential: true



Check if your rows are already commited in your database.

Use the COMMIT statement to end your current transaction and make permanent all changes performed in the transaction. A transaction is a sequence of SQL statements that Oracle Database treats as a single unit. This statement also erases all savepoints in the transaction and releases transaction locks.

Until you commit a transaction:

  • You can see any changes you have made during the transaction by querying the modified tables, but other users cannot see the changes. After you commit the transaction, the changes are visible to other users’ statements that execute after the commit.
  • You can roll back (undo) any changes made during the transaction with the ROLLBACK statement (see ROLLBACK)