Minimal Oracle - 1

The Oracle Database software is large, several gigabytes in Oracle Home for the part that is deployed on the operating system, and additional megabytes in SYSTEM tablespace for the part that is deployed as stored procedures (mainly the dbms_% packages). And this is not a problem with the traditional deployment methods where you can have a .zip golden image of the Oracle Home, and a database template to start a new DB. But this monolithic approach is not adapted to the current way people want to deploy software:

  • RPM: since 18.3 Oracle provides a .rpm to install. However, it is a single big one, like the zip install. What developers want is a small core .rpm and some additional ones for advanced features and options.
  • Docker: Again, Oracle provides a way to pull an image, or build it. But what developers need is a small image with the core, and the additional features as additional layers.

This post is some research I did in order to have only the minimum required files in the Oracle Home in order to create a database and run some basic SQL.

Disclaimer: This is only for research. Nothing is supported here...

I start with an empty directory /u01/xsora/product/18c/dbhomeXS where I’ll install my extra-small Oracle Home. I have a normal 18.4 Oracle Home in /u01/app/oracle/product/18.0.0/dbhome_1_XL where I’ll take the files from.

sqlplus

I’ll need sqlplus to run my SQL commands. There’s the executable in bin/

# mkdir -p /u01/xsora/product/18c/dbhomeXS/bin
# cp /u01/app/oracle/product/18.0.0/dbhome_1_XL/bin/sqlplus /u01/xsora/product/18c/dbhomeXS/bin/sqlplus

That’s small (32k) but requires some dynamic libraries:

# LD_LIBRARY_PATH=/u01/xsora/product/18c/dbhomeXS/lib ORACLE_HOME=/u01/xsora/product/18c/dbhomeXS ORACLE_SID=XS /u01/xsora/product/18c/dbhomeXS/bin/sqlplus /nolog

/u01/xsora/product/18c/dbhomeXS/bin/sqlplus: error while loading shared libraries: libsqlplus.so: cannot open shared object file: No such file or directory

I add this one:

# mkdir -p /u01/xsora/product/18c/dbhomeXS/lib
# cp /u01/app/oracle/product/18.0.0/dbhome_1_XL/lib/libsqlplus.so /u01/xsora/product/18c/dbhomeXS/lib/libsqlplus.so

And iterate over the missing libraries, adding them one by one:

error while loading shared libraries: libclntsh.so.18.1
error while loading shared libraries: libclntshcore.so.18.1
error while loading shared libraries: libmql1.so
error while loading shared libraries: libipc1.so
error while loading shared libraries: libnnz18.so
error while loading shared libraries: libons.so

I could also have added directly all libraries required by the executable:

# ldd /u01/xsora/product/18c/dbhomeXS/bin/sqlplus | sort
        /lib64/ld-linux-x86-64.so.2 (0x000055dc644e3000)
        libaio.so.1 => /lib64/libaio.so.1 (0x00007f32548a7000)
        libclntshcore.so.18.1 => not found
        libclntsh.so.18.1 => not found
        libc.so.6 => /lib64/libc.so.6 (0x00007f32542c0000)
        libdl.so.2 => /lib64/libdl.so.2 (0x00007f32553eb000)
        libipc1.so => not found
        libmql1.so => not found
        libm.so.6 => /lib64/libm.so.6 (0x00007f32550e8000)
        libnnz18.so => not found
        libnsl.so.1 => /lib64/libnsl.so.1 (0x00007f3254cb2000)
        libpthread.so.0 => /lib64/libpthread.so.0 (0x00007f3254ecc000)
        libresolv.so.2 => /lib64/libresolv.so.2 (0x00007f325468e000)
        librt.so.1 => /lib64/librt.so.1 (0x00007f3254aa9000)
        libsqlplus.so => not found
        linux-vdso.so.1 =>  (0x00007ffc6edb5000)

but I preferred to wait for error messages, as I like troubleshooting :)

I have now 100MB in /u01/xsora/product/18c/dbhomeXS:

# du -h 
32K     /u01/xsora/product/18c/dbhomeXS/bin
95M     /u01/xsora/product/18c/dbhomeXS/lib
95M     /u01/xsora/product/18c/dbhomeXS

But sqlplus requires some other files, such as the SQL*Plus message files

# LD_LIBRARY_PATH=/u01/xsora/product/18c/dbhomeXS/lib ORACLE_HOME=/u01/xsora/product/18c/dbhomeXS ORACLE_SID=XS /u01/xsora/product/18c/dbhomeXS/bin/sqlplus /nolog

Error 6 initializing SQL*Plus
SP2-0667: Message file sp1<lang>.msb not found
SP2-0750: You may need to set ORACLE_HOME to your Oracle software directory

# mkdir -p /u01/xsora/product/18c/dbhomeXS/sqlplus/mesg
# cp /u01/app/oracle/product/18.0.0/dbhome_1_XL/sqlplus/mesg/sp1us.msb /u01/xsora/product/18c/dbhomeXS/sqlplus/mesg/sp1us.msb

How do I know it was the ‘us’ ones? I can check the environment, but also simply check the failed open() system call:

# LD_LIBRARY_PATH=/u01/xsora/product/18c/dbhomeXS/lib ORACLE_HOME=/u01/xsora/product/18c/dbhomeXS ORACLE_SID=XS strace -o /tmp/tmp.trc -f -y -e trace=file -v -s 100 /u01/xsora/product/18c/dbhomeXS/bin/sqlplus /nolog

and check the last ENOENT

awk -F '"' ' /ENOENT/{ noent[$0]=NR } END{ for (i in noent){ print noent[i],i } }' /tmp/tmp.trc | sort -n | awk '{$1="";print}' | grep /u01/xsora/product/18c/dbhomeXS | tail

Which can show something like

17628 open("/u01/xsora/product/18c/dbhomeXS/sqlplus/mesg/sp2us.msb", O_RDONLY) = -1 ENOENT (No such file or directory)

I’ve added /sqlplus/mesg/sp1us.msb and /sqlplus/mesg/sp2us.msb but need also some ORA messages because now I get:

ERROR:
Error while trying to retrieve text for error ORA-01804
SP2-0152: ORACLE may not be functioning properly

strace shows:

17648 open("/u01/xsora/product/18c/dbhomeXS/rdbms/mesg/oraus.msb", O_RDONLY) = -1 ENOENT (No such file or directory)

so I add it:

# mkdir -p /u01/xsora/product/18c/dbhomeXS/rdbms/mesg
# cp /u01/app/oracle/product/18.0.0/dbhome_1_XL/rdbms/mesg/oraus.msb /u01/xsora/product/18c/dbhomeXS/rdbms/mesg/oraus.msb

And I now get the error message:

ERROR:
ORA-01804: failure to initialize timezone information
SP2-0152: ORACLE may not be functioning properly

Timezone information required and strace shows that we need the oracore/zoneinfo directory:

17687 openat(AT_FDCWD, "/u01/xsora/product/18c/dbhomeXS/oracore/zoneinfo", O_RDONLY|O_NONBLOCK|O_DIRECTORY|O_CLOEXEC) = -1 ENOENT (No such file or directory)

I’ve copied the whole /u01/xsora/product/18c/dbhomeXS/oracore/zoneinfo directory (without the big and little subdirectories) and I’m now able to run sqlplus /nolog

# LD_LIBRARY_PATH=/u01/xsora/product/18c/dbhomeXS/lib ORACLE_HOME=/u01/xsora/product/18c/dbhomeXS ORACLE_SID=XS /u01/xsora/product/18c/dbhomeXS/bin/sqlplus /nolog

SQL*Plus: Release 18.0.0.0.0 - Production on Sun Dec 9 00:36:53 2018
Version 18.4.0.0.0
Copyright (c) 1982, 2018, Oracle.  All rights reserved.
00:36:53 SQL> connect / as sysdba
ERROR:
ORA-12545: Connect failed because target host or object does not exist 

I am in the ‘object does not exist’ here are this is a beqeath connection. And for sure, the oracle executable is not there.

I add it

# cp /u01/app/oracle/product/18.0.0/dbhome_1_XL/bin/oracle /u01/xsora/product/18c/dbhomeXS/bin/oracle

and this brings my tiny 128M Oracle Home to 545M because the oracle executable is 400MB:

# size -A -t bin/oracle | awk '{printf "%8.2f MB %-50s\n",$2/1024/1024,$0}' | sort -n | tail

    2.48 MB .data.rel.ro           2597184   382703712
    3.29 MB .dynstr                3445780    10175128
    4.57 MB .dynsym                4792200     5382928
    7.04 MB text.hot               7380336   299793840
   26.53 MB .eh_frame             27820912   352785216
   41.21 MB .comment              43211331           0
   41.64 MB .rodata               43666688   307174208
   96.27 MB .text                100951060    14076928
  176.21 MB text.unlikely        184765840   115028000
  403.67 MB Total                423276007

I can remove the .comment section to bring it to 360MB

# strip --remove-section=.comment bin/oracle

From the strace I can check how the executable is run. Also the occasion to see that we don’t need a lot of environment variables. ORA_NET2_DESC was added by sqlplus, as well as the argument (DESCRIPTION=(LOCAL=YES)(ADDRESS=(PROTOCOL=beq)))

17751 execve("/u01/xsora/product/18c/dbhomeXS/bin/oracle", ["oracleXS", "(DESCRIPTION=(LOCAL=YES)(ADDRESS=(PROTOCOL=beq)))"], ["ORACLE_HOME=/u01/xsora/product/18c/dbhomeXS", "LD_LIBRARY_PATH=/u01/xsora/product/18c/dbhomeXS/lib", "ORACLE_SID=XS", "ORACLE_BASE=/u01/xsora", "_=/usr/bin/strace", "ORA_NET2_DESC=8,11"]) = 0

As I’ve seen in the trace file an attempt to read some TNS message I also add the file:

# mkdir -p /u01/xsora/product/18c/dbhomeXS/network/mesg
# cp /u01/app/oracle/product/18.0.0/dbhome_1_XL/network/mesg/tnsus.msb /u01/xsora/product/18c/dbhomeXS/network/mesg/tnsus.msb

There are then some additional libraries required:

libofs.so: cannot open shared object file
libcell18.so: cannot open shared object file
libskgxp18.so: cannot open shared object file
libskjcx18.so: cannot open shared object file
libclsra18.so: cannot open shared object file
libdbcfg18.so: cannot open shared object file
libhasgen18.so: cannot open shared object file
libskgxn2.so: cannot open shared object file
libocr18.so: cannot open shared object file
libocrb18.so: cannot open shared object file
libocrutl18.so: cannot open shared object file

Of course, this can probably been optimized further as we can see some related with Exadata cells…

With all those libraries, the next error is:

SQL*Plus: Release 18.0.0.0.0 - Production on Sun Dec 9 00:36:59 2018
Version 18.4.0.0.0
Copyright (c) 1982, 2018, Oracle.  All rights reserved.
00:36:59 SQL> connect / as sysdba
ERROR:
ORA-12547: TNS:lost contact

I follow strace ENOENT here

18006 stat("/u01/xsora/product/18c/dbhomeXS/rdbms/log", 0x7ffe1bd21e28) = -1 ENOENT (No such file or directory)

A log directory is required:

# mkdir -p /u01/xsora/product/18c/dbhomeXS/rdbms/log

and then same error

18024 chdir("/u01/xsora/product/18c/dbhomeXS/dbs") = -1 ENOENT (No such file or directory)
 18024 stat("/u01/xsora/product/18c/dbhomeXS/rdbms/log/xs_ora_18024.trc",0x7ffead6c5a40) = -1 ENOENT (No such file or directory)

for the dbs directory

# mkdir -p /u01/xsora/product/18c/dbhomeXS/rdbms/log

connect / as sysdba

SQL*Plus: Release 18.0.0.0.0 - Production on Sun Dec 9 00:37:00 2018
Version 18.4.0.0.0
Copyright (c) 1982, 2018, Oracle.  All rights reserved.
00:37:00 SQL> connect / as sysdba
ERROR:
ORA-09925: Unable to create audit trail file
Linux-x86_64 Error: 2: No such file or directory
Additional information: 9925
ORA-09925: Unable to create audit trail file
Linux-x86_64 Error: 2: No such file or directory
Additional information: 9925

I create the adump directory, as well as the ADR messages as there were an attempt to open them when logging the errors

# mkdir -p /u01/xsora/product/18c/dbhomeXS/rdbms/audit
# cp /u01/app/oracle/product/18.0.0/dbhome_1_XL/rdbms/mesg/diaus.msb /u01/xsora/product/18c/dbhomeXS/rdbms/mesg/diaus.msb

I’m going further and can connect as sysdba now. Next step is to start an instance

00:37:23 SQL> connect / as sysdba
Connected to an idle instance.
00:37:24 SQL> startup nomount;
ORA-01078: failure in processing system parameters
LRM-00109: Message 109 not found; No message file for product=ORACORE, facility=LRM
Disconnected

startup nomount

I’m probably missing some parameters (as I have no init.ora) but the clear message is missing

# cp /u01/app/oracle/product/18.0.0/dbhome_1_XL/oracore/mesg/lrmus.msb /u01/xsora/product/18c/dbhomeXS/oracore/mesg/lrmus.msb

Here it is

00:37:24 SQL> connect / as sysdba
Connected to an idle instance.
00:37:25 SQL> startup nomount;
ORA-01078: failure in processing system parameters
LRM-00109: could not open parameter file '/u01/xsora/product/18c/dbhomeXS/dbs/initXS.ora'
Disconnected

Only one parameter is mandatory to open an instance: the name of the database that will be managed by this instance. I also add a SGA_TARGET

# echo -e 'db_name=XS\nsga_target=1024M' > /u01/xsora/product/18c/dbhomeXS/dbs/initXS.ora

At this point I also have to define ORACLE_BASE in the environment or I get the following error when starting the instance:

ORA-12777: A non-continuable error encountered.  Check the error stack for additional information [ksm_check_ob_paths:1], [ORACLE_BASE], [], [].
ORA-08275: Environment variable unset

Now with ORACLE_BASE set to an existing directory, some more libraries are missing:

00:37:25 SQL> connect / as sysdba
Connected to an idle instance.
00:37:27 SQL> startup nomount;
ORA-40238: invalid linear algebra shared library /u01/xsora/product/18c/dbhomeXS/lib/libmkl_rt.so
Disconnected

I add this one:

# cp /u01/app/oracle/product/18.0.0/dbhome_1_XL/lib/libmkl_rt.so /u01/xsora/product/18c/dbhomeXS/lib/libmkl_rt.so

I got the same with:

ORA-15180: could not open dynamic library asmclntsh library, error [open]

which I add as well

# cp /u01/app/oracle/product/18.0.0/dbhome_1_XL/lib/libasmclntsh18.so /u01/xsora/product/18c/dbhomeXS/lib/libasmclntsh18.so

I can now start my instance

00:37:40 SQL> connect / as sysdba
Connected to an idle instance.
00:37:41 SQL> startup nomount;
ORACLE instance started.

Total System Global Area 1073740616 bytes
Fixed Size                  8665928 bytes
Variable Size             281018368 bytes
Database Buffers          775946240 bytes
Redo Buffers                8110080 bytes

create database

The database creation fails when it tries to run the bootstraping SQL scripts:

00:37:44 SQL> create database;
create database
*
ERROR at line 1:
ORA-00603: ORACLE server session terminated by fatal error
ORA-01092: ORACLE instance terminated. Disconnection forced
ORA-01501: CREATE DATABASE failed
ORA-01526: error in opening file '?/rdbms/admin/sql.bsq'
ORA-07391: sftopn: fopen error, unable to open text file.
Process ID: 18303
Session ID: 2 Serial number: 27194

I create the directory and add sql.bsq and the other .bsq called by it:

# mkdir /u01/xsora/product/18c/dbhomeXS/rdbms/admin

and add those files:

-rw-r--r--. 1 oracle oinstall  29607  rdbms/admin/daw.bsq
-rw-r--r--. 1 oracle oinstall 170776  rdbms/admin/dcore.bsq
-rw-r--r--. 1 oracle oinstall   7745  rdbms/admin/ddm.bsq
-rw-r--r--. 1 oracle oinstall    779  rdbms/admin/ddst.bsq
-rw-r--r--. 1 oracle oinstall  21774  rdbms/admin/denv.bsq
-rw-r--r--. 1 oracle oinstall   1947  rdbms/admin/dexttab.bsq
-rw-r--r--. 1 oracle oinstall   4048  rdbms/admin/dfba.bsq
-rw-r--r--. 1 oracle oinstall   4937  rdbms/admin/dfmap.bsq
-rw-r--r--. 1 oracle oinstall  31309  rdbms/admin/dhcs.bsq
-rw-r--r--. 1 oracle oinstall    728  rdbms/admin/djava.bsq
-rw-r--r--. 1 oracle oinstall  43961  rdbms/admin/dlmnr.bsq
-rw-r--r--. 1 oracle oinstall  11063  rdbms/admin/dmanage.bsq
-rw-r--r--. 1 oracle oinstall  19724  rdbms/admin/dmisc.bsq
-rw-r--r--. 1 oracle oinstall  26581  rdbms/admin/dobj.bsq
-rw-r--r--. 1 oracle oinstall  43542  rdbms/admin/doptim.bsq
-rw-r--r--. 1 oracle oinstall  46805  rdbms/admin/dpart.bsq
-rw-r--r--. 1 oracle oinstall  20059  rdbms/admin/dplsql.bsq
-rw-r--r--. 1 oracle oinstall   6425  rdbms/admin/dpstdy.bsq
-rw-r--r--. 1 oracle oinstall  22075  rdbms/admin/drac.bsq
-rw-r--r--. 1 oracle oinstall 142437  rdbms/admin/drep.bsq
-rw-r--r--. 1 oracle oinstall  10680  rdbms/admin/drupg.bsq
-rw-r--r--. 1 oracle oinstall 107066  rdbms/admin/dsec.bsq
-rw-r--r--. 1 oracle oinstall  25728  rdbms/admin/dsqlddl.bsq
-rw-r--r--. 1 oracle oinstall  63128  rdbms/admin/dsummgt.bsq
-rw-r--r--. 1 oracle oinstall   5774  rdbms/admin/dtlog.bsq
-rw-r--r--. 1 oracle oinstall  18933  rdbms/admin/dtools.bsq
-rw-r--r--. 1 oracle oinstall   5599  rdbms/admin/dtxnspc.bsq

A few more files to add or we have some internal errors like ORA-7445 [gslumcCalloc()+128] which are a bit more complex to troubleshoot:

00:37:47 SQL> create database;
create database
*
ERROR at line 1:
ORA-01012: not logged on
Process ID: 0
Session ID: 0 Serial number: 0

I’ve added the following:

# mkdir -p /u01/xsora/product/18c/dbhomeXS/nls
# cp ... /u01/xsora/product/18c/dbhomeXS/nls/data
# mkdir -p /u01/xsora/product/18c/dbhomeXS/ldap/mesg
# cp ... /u01/xsora/product/18c/dbhomeXS/ldap/mesg/ldapus.msb
# mkdir -p /u01/xsora/product/18c/dbhomeXS/sqlplus/admin
# cp ... /u01/xsora/product/18c/dbhomeXS/sqlplus/admin/pupbld.sql
# mkdir -p /u01/xsora/product/18c/dbhomeXS/plsql/mesg
# cp ... /u01/xsora/product/18c/dbhomeXS/plsql/mesg/pcmus.msb

The database creation works now, and I can even create a table:

00:37:51 SQL> create database;
Database created.

00:38:03 SQL> create table DEMO as select * from V$VERSION;
Table created.

00:38:03 SQL> select banner from DEMO;

BANNER
--------------------------------------------------------------------
Oracle Database 18c Enterprise Edition Release 18.0.0.0.0 - Production

This looks good but is clearly insufficient. I’ll not be able to connect with another user if I don’t have the STANDARD package. 

catalog.sql

I need to run ?/rdbms/admin/catalog.sql to build the dictionary and standard functions.

Here is what I add in rdbms/admin:

-rw-r--r--. 1 oracle oinstall  61441 Dec  9 00:37 catalog.sql
-rw-r--r--. 1 oracle oinstall   3825 Dec  9 00:37 cdstrt.sql
-rw-r--r--. 1 oracle oinstall  13607 Dec  9 00:37 dbmsstdx.sql
-rw-r--r--. 1 oracle oinstall    128 Dec  9 00:37 standard.sql
-rw-r--r--. 1 oracle oinstall 147275 Dec  9 00:37 stdspec.sql
-rw-r--r--. 1 oracle oinstall  18879 Dec  9 00:37 stdbody.sql
-rw-r--r--. 1 oracle oinstall  16441 Dec  9 00:37 catblock.sql
-rw-r--r--. 1 oracle oinstall  12841 Dec  9 00:37 catcdbviews.sql
-rw-r--r--. 1 oracle oinstall  18325 Dec  9 00:37 catcr.sql
-rw-r--r--. 1 oracle oinstall 407241 Dec  9 00:37 catexp.sql
-rw-r--r--. 1 oracle oinstall  32539 Dec  9 00:37 catldr.sql
-rw-r--r--. 1 oracle oinstall   1607 Dec  9 00:37 catpses.sql
-rw-r--r--. 1 oracle oinstall   5539 Dec  9 00:37 catptt.sql
-rw-r--r--. 1 oracle oinstall 185315 Dec  9 00:37 catsum.sql
-rw-r--r--. 1 oracle oinstall   1457 Dec  9 00:37 cdadr.sql
-rw-r--r--. 1 oracle oinstall    912 Dec  9 00:37 cdaw.sql
-rw-r--r--. 1 oracle oinstall  20109 Dec  9 00:37 cdclst.sql
-rw-r--r--. 1 oracle oinstall  29928 Dec  9 00:37 cdcore.sql
-rw-r--r--. 1 oracle oinstall  61683 Dec  9 00:37 cddm.sql
-rw-r--r--. 1 oracle oinstall  13507 Dec  9 00:37 cddst.sql
-rw-r--r--. 1 oracle oinstall   1203 Dec  9 00:37 cdend.sql
-rw-r--r--. 1 oracle oinstall  19429 Dec  9 00:37 cdenv.sql
-rw-r--r--. 1 oracle oinstall  38543 Dec  9 00:37 cdexttab.sql
-rw-r--r--. 1 oracle oinstall 329842 Dec  9 00:37 cdfixed.sql
-rw-r--r--. 1 oracle oinstall 207536 Dec  9 00:37 cdhcs.sql
-rw-r--r--. 1 oracle oinstall    926 Dec  9 00:37 cdjava.sql
-rw-r--r--. 1 oracle oinstall   4931 Dec  9 00:37 cdmanage.sql
-rw-r--r--. 1 oracle oinstall 132917 Dec  9 00:37 cdobj.sql
-rw-r--r--. 1 oracle oinstall  95543 Dec  9 00:37 cdoptim.sql
-rw-r--r--. 1 oracle oinstall 304969 Dec  9 00:37 cdpart.sql
-rw-r--r--. 1 oracle oinstall 142576 Dec  9 00:37 cdplsql.sql
-rw-r--r--. 1 oracle oinstall   6903 Dec  9 00:37 cdrac.sql
-rw-r--r--. 1 oracle oinstall   1020 Dec  9 00:37 cdrep.sql
-rw-r--r--. 1 oracle oinstall  34328 Dec  9 00:37 cdsec.sql
-rw-r--r--. 1 oracle oinstall  41058 Dec  9 00:37 cdsqlddl.sql
-rw-r--r--. 1 oracle oinstall   3964 Dec  9 00:37 cdsummgt.sql
-rw-r--r--. 1 oracle oinstall   4632 Dec  9 00:37 cdtools.sql
-rw-r--r--. 1 oracle oinstall   8165 Dec  9 00:37 cdtxnspc.sql
-rw-r--r--. 1 oracle oinstall   1567 Dec  9 00:37 dbmscrs.sql
-rw-r--r--. 1 oracle oinstall    871 Dec  9 00:37 prvtcrs.plb
-rw-r--r--. 1 oracle oinstall    914 Dec  9 00:37 sqlsessend.sql
-rw-r--r--. 1 oracle oinstall    923 Dec  9 00:37 sqlsessstart.sql
-rw-r--r--. 1 oracle oinstall  41822 Dec  9 00:37 utlraw.sql

Those are all files run

SQL> ?/rdbms/admin/catalog.sql

Once run, I still have some errors when sqlplus tries to call some DBMS_% packages, as I’ve not run catproc.sql, but I’m able to connect as another user and run some SQL:

00:38:55 SQL> grant connect,resource to demo identified by demo;
Grant succeeded.

00:38:55 SQL> alter user demo quota unlimited on SYSTEM;
User altered.

00:38:55 SQL> connect demo/demo
ERROR:
ORA-06550: line 1, column 7:
PLS-00201: identifier 'DBMS_APPLICATION_INFO.SET_MODULE' must be declared
ORA-06550: line 1, column 7:
PL/SQL: Statement ignored

Error accessing package DBMS_APPLICATION_INFO
Connected.
00:38:55 SQL> create table DEMO as select banner text from V$VERSION;
Table created.

00:38:55 SQL> insert into DEMO values(to_char(current_timestamp));
1 row created.

00:38:55 SQL> select * from DEMO;

TEXT
--------------------------------------------------------------------------------
Oracle Database 18c Enterprise Edition Release 18.0.0.0.0 - Production
09-DEC-18 12.38.55.426872 AM +01:00

Total: 800 MB

In summary, the size of this is 850MB

du -h /u01/xsora/product/18c/dbhomeXS/ | sort -h

8.0K    /u01/xsora/product/18c/dbhomeXS/sqlplus/admin
12K     /u01/xsora/product/18c/dbhomeXS/oracore/mesg
12K     /u01/xsora/product/18c/dbhomeXS/srvm/mesg
16K     /u01/xsora/product/18c/dbhomeXS/srvm
48K     /u01/xsora/product/18c/dbhomeXS/plsql/mesg
52K     /u01/xsora/product/18c/dbhomeXS/plsql
56K     /u01/xsora/product/18c/dbhomeXS/network/mesg
60K     /u01/xsora/product/18c/dbhomeXS/network
60K     /u01/xsora/product/18c/dbhomeXS/sqlplus/mesg
64K     /u01/xsora/product/18c/dbhomeXS/rdbms/log
72K     /u01/xsora/product/18c/dbhomeXS/sqlplus
140K    /u01/xsora/product/18c/dbhomeXS/ldap/mesg
144K    /u01/xsora/product/18c/dbhomeXS/ldap
1.6M    /u01/xsora/product/18c/dbhomeXS/rdbms/mesg
3.5M    /u01/xsora/product/18c/dbhomeXS/rdbms/admin
5.6M    /u01/xsora/product/18c/dbhomeXS/rdbms/audit
11M     /u01/xsora/product/18c/dbhomeXS/rdbms
32M     /u01/xsora/product/18c/dbhomeXS/oracore
32M     /u01/xsora/product/18c/dbhomeXS/oracore/zoneinfo
47M     /u01/xsora/product/18c/dbhomeXS/nls
47M     /u01/xsora/product/18c/dbhomeXS/nls/data
130M    /u01/xsora/product/18c/dbhomeXS/lib
265M    /u01/xsora/product/18c/dbhomeXS/dbs
362M    /u01/xsora/product/18c/dbhomeXS/bin
846M    /u01/xsora/product/18c/dbhomeXS/

This includes the database (in dbs), the binary software (mainly oracle binary and libs) and some static data stored in files mainly related to Globalization (NLS information, Timezone).

I've posted an attempt to build this in docker in: https://medium.com/@FranckPachot/minimal-oracle-installation-and-docker-image-ed47447e62a0

 

Add new comment