Oracle Database Free Release Quick Start

Getting started with Oracle Database Free is quick and simple.

For more information and full step-by-step instructions, please review the installation guide for Linux.

Learn more about the new features available in Oracle Database 23ai Free

Installing Oracle Database 23ai Free


Docker/Podman
Download Oracle Container Registry
Notes Pull container images straight from Oracle’s Container Registry via docker pull container-registry.oracle.com/database/free:latest
Oracle VirtualBox
Filename Oracle_Database_23ai_Free_Developer.ova
SHA256 0e2144f984179e74b12578a059205aa4255314e8c21249d68ff3a23f70148615
Size (in bytes) 6,138,339,840
Notes

Import the 23ai Free .ova file into your local Oracle VirtualBox setup.

See Oracle Database 23ai Free VirtualBox Appliance for what’s in the Oracle VirtualBox image and Resource requirements.

Oracle Linux 8
Filename oracle-database-free-23ai-1.0-1.el8.x86_64.rpm
SHA256 03ae958784e9443c0380e4d387cb0522016c72d029ab85cf55ee124489833e0e
Size (in bytes) 1,379,391,728
Notes

Run dnf install -y oracle-database-free*

Run /etc/init.d/oracle-free-23ai configure

Oracle Linux 9
Filename oracle-database-free-23ai-1.0-1.el9.x86_64.rpm
SHA256 76305d7485b13725cff06f8785a1c881e0914277fa729453090fc1d71a517c3a
Size (in bytes) 1,379,391,728
Notes

Run dnf install -y oracle-database-free*

Run /etc/init.d/oracle-free-23ai configure

Enterprise Linux 8

Filename

SHA256

Size (in bytes)

oracle-database-preinstall-23ai-1.0-2.el8.x86_64.rpm

4578e6d1cf566e04541e0216b07a0372725726a7c339423ee560255cb918138b

31152

Filename

SHA256

Size (in bytes)

oracle-database-free-23ai-1.0-1.el8.x86_64.rpm

1e69529fc1eabfd7db1a8fa7a03998b103ba594544e60fe78ea2f7eb448cdccd

1,365,375,132

Notes

Run dnf install -y oracle-database-preinstall*

Run dnf install -y oracle-database-free*

Run /etc/init.d/oracle-free-23ai configure

Enterprise Linux 9

Filename

SHA256

Size (in bytes)

oracle-database-preinstall-23ai-1.0-2.el9.x86_64.rpm

aa7bc3a62f4118cc8e02ece2f67ddd276b2256833e4d66f939725b2ef22bebf9

35689

Filename

SHA256

Size (in bytes)

oracle-database-free-23ai-1.0-1.el9.x86_64.rpm

21414ebbb763a2095c138dd007caecd9db3d758ac89facc3f4f14075f71838aa

1,365,375,132

Notes

Run dnf install -y oracle-database-preinstall*

Run dnf install -y oracle-database-free*

Run /etc/init.d/oracle-free-23ai configure

Windows

Filename

SHA256

Size (in bytes)

WINDOWS.X64_236000_free.zip

a95ee875a185c2468278d281b35a8a42ae8f550837b2dc12e47aeaa2a1975930

1,348,245,903

Filename

SHA256

Size (in bytes)

e85900cae5fa6b1677f3cd404471c659862f34deeb55a8d9beb41bc02758cbc7

802,358,371

Notes Oracle Database 23ai Free for Windows Installation Guide
Oracle Linux 8 for Arm (aarch64)

Filename

SHA256

Size (in bytes)

oracle-database-preinstall-23ai-1.0-3.el8.aarch64.rpm

68936d4fc7e55ce5192f9e4819f9ab8a80b079bb9e20d39bc2a991bd3d4a6095

31,192

Filename

SHA256

Size (in bytes)

oracle-database-free-23ai-1.0-1.el8.aarch64.rpm

9f82f22217db7c760d25956ca1590be996dbbe1ea397949726c68065524f69af

1,235,427,284

Filename

SHA256

Size (in bytes)

fabbbf1516ec012571ca2bc6642c9df966454ae0e7287a26a75ff12a35d8d168

712,780,356

Notes

Oracle Database Free Installation Guide

Oracle Database Client Installation Guide

Connecting to Oracle Database Free

SQL

  • Connect string format: [username]@[hostname]:[port]/[DB service name] [AS SYSDBA]
  • To connect to the first Pluggable Database (PDB) use:
    
    
    
    					sqlplus sys@localhost:1521/FREEPDB1 as sysdba
    					
  • To connect to the Container Database (CDB) use:
    
    
    
    					sqlplus sys@localhost:1521/FREE as sysdba
    					

Java




OracleDataSource ods = new OracleDataSource();
ods.setURL("jdbc:oracle:thin:@localhost:1521/FREEPDB1"); // jdbc:oracle:thin@[hostname]:[port]/[DB service name]
ods.setUser("[Username]");
ods.setPassword("[Password]");
Connection conn = ods.getConnection();
 
PreparedStatement stmt = conn.prepareStatement("SELECT 'Hello World!' FROM dual");
ResultSet rslt = stmt.executeQuery();
while (rslt.next()) {
  System.out.println(rslt.getString(1));
}
	

Python




import oracledb

conn = oracledb.connect(user="[Username]", password="[Password]", dsn="localhost:1521/FREEPDB1")
with conn.cursor() as cur:
   cur.execute("SELECT 'Hello World!' FROM dual")
   res = cur.fetchall()
   print(res)
	

Node.js




const oracledb = require('oracledb');
     
async function run() {
    let connection = await oracledb.getConnection({
    user : "[Username]",
    password : "[Password]",
    connectString : "localhost:1521/FREEPDB1" // [hostname]:[port]/[DB service name]
    });
    let result = await connection.execute( "SELECT 'Hello World!' FROM dual");
    console.log(result.rows[0]);
}
     
run();
	

C#/.NET




					
	// Connection string format: User Id=[username];Password=[password];Data Source=[hostname]:[port]/[DB service name];
    OracleConnection con = new OracleConnection("User Id=[Username];Password=[Password];Data Source=localhost:1521/FREEPDB1;");
    con.Open();
    OracleCommand cmd = con.CreateCommand();
    cmd.CommandText = "SELECT \'Hello World!\' FROM dual";
     
    OracleDataReader reader = cmd.ExecuteReader();
    reader.Read();
    Console.WriteLine(reader.GetString(0));
	

PHP




// [username], [password], [hostname]:[port]/[DB service name]
$c = oci_pconnect("[Username]", "[Password]", "localhost:1521/FREEPDB1");
$s = oci_parse($c, "SELECT 'Hello World!' FROM dual");
oci_execute($s);
oci_fetch_all($s, $res);
echo "<pre>\n"
var_dump($res);
echo "</pre>\n";
	

Ruby




require 'oci8'
     
con = OCI8.new("[Username]", "[Password]", "localhost:1521/FREEPDB1")
statement = "SELECT 'Hello World!' FROM dual"
cursor = con.parse(statement)
cursor.exec
cursor.fetch do |row|
print row
end
	

Go




package main
     
import (
      "fmt"
      "log"
      "database/sql"
      _ "github.com/godror/godror"
)
     
func main() {  
     
      // connectString format: [hostname]:[port]/[DB service name]
     
      dsn := `user="[Username]"
              password="[Password]"
              connectString="localhost:1521/FREEPDB1"`  
     
      db, err := sql.Open("godror", dsn)
      if err != nil {
        panic(err)
      }
      defer db.Close()
     
      rows, err := db.Query("SELECT 'Hello World!' FROM dual")
      if err != nil {
        panic(err)
      }
      defer rows.Close()
     
      var strVal string
      for rows.Next() {
        err := rows.Scan(&strVal)
        if err != nil {
          log.Fatal(err)
        }
        fmt.Println(strVal)
      }
      err = rows.Err()
      if err != nil {
        log.Fatal(err)
      }
     
}