Sunday, 29 June 2025

New placeholder blog: turloch.blogspot.com

New content being created.

No longer at Oracle.

Watch turloch.blogspot.com

For:

CV/portfolio/interview discussion.

Topics for 12hr investigation/blog welcome.

Available for immediate employment.

(1hr commute from Beaumont, Dublin 9, Ireland. (North Dublin, 30mins from city centre))

https://ie.linkedin.com/in/turlochotierney

Senior PLSQL/Java/Oracle Database Professional at Oracle Dublin. 30 years expertise. PLSQL | Java | Oracle Database | Linux | git | 11g DBA OCP | Gitlab | C |  macOS


Thursday, 14 March 2024

Interested in new opportunities.

Last day at Oracle March 22nd 2024 after 25 years at Oracle - moving on to different things. Contact details: +353 868256032, turloch@gmail.com. Search for Turloch O'Tierney on facebook or LinkedIn (Turloch is an unusual spelling there will not be two instances of Turloch O'Tierney).

Skills: Oracle Database, Linux, Java, git, Docker and C.  International experience: England, Netherlands, Canada. Based in Dublin Ireland.

(Oracle experience + 

coderdojo leader/champian experience 2016 to 2018 + 

1 hr a week with 17 year old son experience up to 2024).

Wednesday, 19 April 2023

 https://www.oracle.com/database/technologies/databaseappdev-vm.html Got a new Virtualbox VM out.

unset TWO_TASK to connect sqlplus / as SYSDBA.

You might want to mark the disks as SSD - so TRIM can be used/reduce ware.

SQLDeveloper desktop and SQLDeveloper Modeller were not included (But sqldevloper web/database actions via ords is included). There were no demos included. Simply database sqlcl apex and ords.

Firefox within the VM is a bit flakey/out of date - you may upgrade - or simply use your host browser.

A bit of a rush towards the end, meant to give a better starting screen - use the forum https://forums.oracle.com/ords/apexds/domain/dev-community/category/oracle-database-free - or drop a message here if you have any queries.

ORDS is started on startup kill it if you want it restarted - there is an ordsstart helper script.

There is a service enabled: oracle-free-23c which starts database listener and ords - and stops database and listener (but not ords)- if you stop and restart the service the ords fails as there is already an ords on 8080.

For me the display may need to be set to 200% - if the virtual box window is too small (font too small).

Tuesday, 18 February 2020

Cannot reproduce (sql - maybe alias related) reply

Cannot reproduce. (alias related issue)

Get back to the customer.

We should have a standard reply if we cannot reproduce the sql error I will try to give one:

1/sql command has -verbose flag which show issues (like java or sql exceptions) that have been logged.

2/"set echo on” might help (unlikely though - it will echo out what commands the alias is doing)

3/Things that might not be accounted for in customer ‘aliases.xml’ test case: 

.login.sql file or equivalent automatically read at startup
set sqlformat
The bug is logged against linux (that is what I tested on and could not reproduce)
Might need a full:
sql username/password @thetestcase.sql
Testcase (with aliases xml and .login.sql if any) in case anything before the alias in the session and or customer environment is required to reproduce.
What is the encoding/language? - ie is it UTF8 + American (English) (Some bugs are multibyte is Japanese/Chinese only)

Try with latest oracle java 8 (not openjdk) and ORACLE_HOME unset i.e. thin driver as shipped instead of thick driver from Oracle home. (What is the show JDBC and show java output?)
(What is the oracle database version being connected to and what Oracle Database does $ORACLE_HOME point too?)

4/Can the customer reproduce with new operating system user/different linux box?

5/Has the database connection timed out (Oracle ADB does that) - or other too much resource used and connection cut off by the database dba/automatically, - unlikely as the command works on repeating it (could be a reconnect)

6/The error says ctrl C - however there could be another error caught and reported wrong/differently

If I had a test case I would go through the code line by line.
Without the code If I could reproduce I would do some tracing (strace/wireshark) - but I cannot expect customer to do that - too much in the tracing file/output to go through - in sqldeveloper there is a log view which at least gives all the sql sent to the database (slightly more user friendly than strike/wireshark). There might be other tracing the customer is aware of/more familiar with, Unless encrypted or https - the sql to and error back from database is sent received by a write/read from file/socket (and unencrypted).

Thursday, 23 January 2020

LDAP and Kerberos



LDAP web ui (OID12 + OUD latest tested - interested in reports of anything else working not working - but we do not have it in house)
19.? - paging used for ldap ui search - broke unpatched OID11 (tested successfully with OID12) - required configuration OUD
19.4 - on specific exception on paging try non paged (tested successfully OID12 and OUD (latest - with only anonymous bind configuration))
Active directory not tested (that was actually where the paging request came in) (not tested)
(Huge performance improvement on lots of aliases on loading dbservice (alias became lazily evaluated))

(Advanced URL based thick or thin LDAP works - I think thick ldap by 'dbservice name' (forgot the name in the ui) outside LDAP web lookup might be OK - certainly full LDAP url ok - but different syntax for thick and thin).

KERBEROS (Linux/MIT Kerberos tested easy enough - Active directory Kerberos ticket tested fairly recently) - thick JDBC should work 'like sqlplus'.
18.4 Kerberos - tested with credential cache blank 'Active directory Kerberos ticket' on windows -> means try native (regedit change required). I have rough notes from testing on this configuration.

Friday, 3 January 2020

SQL Developer 19.4 Datapump wizard, now with encryption of data files.

SQL Developer 19.4 Datapump wizard, now with encryption of data files. 
(Underlying PLSQL API had encryption option since Oracle Database 11gr1)

Wednesday, 18 September 2019

LDAP SQLDeveloper new paging requirement

Currently OID is the target LDAP provider

Paging access (added 6 months ago) so that over 1000 entries will not get truncated seems to be causing problems on unpatched OID11 - though I tested it against patched OID 11 and OID 12 .

I have been asking people with issues to contact support - if the issue is prioritised I may get a broken setup to test against. If I sense a paging error for example - I could try a non paged version (getting large number of results truncated is better than no results).

Some guy managed to get OUD working by allowing paging (Third party link removed)

Note that
1/ you can supply context in ldap.ora
2/ you can give exact match in the dbservice combo box (and download the single connection details without searching for all services in a context)

I was hoping this might help for LDAPs that do not allow root searching (ODSEE?) (or do not have paged access)

These LDAP considerations apply to the SQLDeveleoper specific LDAP UI for searching for entries - you could always use the advanced URL for LDAP (thick and thin have different syntax).

Also 6 months ago we fixed:
Kerberos Active Directory default login ticket support on windows (give cache as blank i.e. "" (without the quotes)) - was tested with a configuration file with thin jdbc . (You could have, and still can, use thick kerberos and sqlnet.ora configuration)

Friday, 21 June 2019

19.3 database 19.1 dbtools software releases

VM download page: https://www.oracle.com/technetwork/community/databaseappdev-vm-161299.html

Dropped json and xml labs

Virtualbox 6.0.8

sqldeveloper fails 10% of the time workaround: turn off splash page

Sometime too small (mac retinal screen) magnify by: machine -> settings -> display -> scale factor

Performs ok with 3G RAM & 2 CPUS - 2G RAM and 1CPU - bare minimum (swaps).

Old release blog http://totierne.blogspot.com/2018/10/new-developer-day-vm-183-182-apex.html

Let me know any issues.

Friday, 17 May 2019

kerberos native non file based connection cache in windows (from 18.4)

From SQLDeveloper 18.4 kerberos works on windows with thin driver and  Active Directory Kerberos and using "native credential cache” configured by not entering a file cache name.

Wednesday, 15 May 2019

LDAP - User report no context shown

Hi user

18.2 required an ldap.ora (by mistake on my part).
(you can specify a default context in ldap.ora)

I tried the following:
Windows (2012) 19.1 against oid12  - success without ldap.ora
Mac 19.1 against oid12 - success. (with or without ldap.ora) (the ldap search screens are pure java - not affected by oracle client etc - emulation of ldap.ora support).

Useful for the user to know.
It does not tell you anything if you got the host or port wrong (it is as you report no context shown - please check your host and port are valid - and there Is nothing in the way (firewall) - you could use a previous 'known working' SQLDeveloper version on the same windows machine/user)
Press enter after entering the ldap server to get Context populated.

Load to fill the service entries list (double click from pull down (or type in) to select a service) (What is typed in narrows selection).

Changes in this release:
Performance fix around aliases
Load in pages (i.e. can load in pages over the default 1000 entries). (Loads in pages of 499 - could conflict with old configuration)
Tries subtree, peer and exact search. (uses first one that does not error out/returns data)

Useful for the oid admin to know:
There are two very similar setting one of them is now required, here is one of them

-Turloch
SQLDeveloper team.

Friday, 3 May 2019

ldap - ldap.ora for host and context

ldap - ldap.ora for host and context

combobox - type in - no search required - i.e. no tree search required. (One customer said they could do without search if that was the issue stopping ODS from working)

Friday, 1 March 2019

SQLDeveloper 18.4 active directory 'kerberos' login using not file based ticket should work

SQLDeveloper 18.4 active directory 'kerberos' login using not file based ticket should work - i.e. ticket cache name not forced to be a string/file -> one of the defaults tried is internal cache

Tuesday, 6 November 2018

DONE: Retreived existing kerberos/Active Directory internal ticket. TODO: confirm an existing internal ticket based Kerberos/Active directory login to Database with java.

Code:
https://docs.oracle.com/en/database/oracle/oracle-database/12.2/jjdbc/client-side-security.html#GUID-991705F7-C2C5-4BA9-85D1-32749AE2FF64
Kerberos Hello World login:

For testing with Active Directory

krb5.conf or krb5.ini setting required - or copy it to java default place
Cross site registry setting may be required: https://support.microsoft.com/en-gb/help/308339/registry-key-to-allow-session-keys-to-be-sent-in-kerberos-ticket-grant

Old but seems comprehensive notes:
http://cr.openjdk.java.net/~weijun/special/krb5winguide-2/raw_files/new/kwin

Login code:
https://docs.oracle.com/en/database/oracle/oracle-database/12.2/jjdbc/client-side-security.html#GUID-991705F7-C2C5-4BA9-85D1-32749AE2FF64

Replace "jdbc:oracle:thin:@(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)"+
    "(HOST=oracleserver.mydomain.com)(PORT=5221))(CONNECT_DATA=" +
    "(SERVICE_NAME=orcl)))" with your connection details.

Replace "/home/Jdbc/Security/kerberos/krb5.conf" with your krb5.ini or krb5.conf (java also has a default place to look if this is not set). (with windows use double back slash \\)

If you want to use internal cache comment out:
    prop.setProperty(OracleConnection.CONNECTION_PROPERTY_THIN_NET_AUTHENTICATION_KRB5_CC_NAME,
                     "/tmp/krb5cc_5088");

Look at: "Attempt to connect with the default user:"
Ignore: "Attempt to connect with a specific user:"

use ojdbc8.jar (from sqldeveloper or sqlcl).

javac -cp ojdbc8.jar KerberosJdbcDemo.java
java  -Dsun.security.krb5.debug=true -Dsun.security.jgss.debug=true  -cp ojdbc8.jar;. KerberosJdbcDemo

You can use these settings in your sqldeveloper.conf (and start sqldeveloper from sqldeveloper/bin) to get this tracing/debugging in sqldeveloper.
(Currently (SQLDeveloper 18.3) internal cache does not work with sqldeveloper - you need an explicit file based cache).

(If you get >>> Found no TGT's in LSA you could need registry setting)
should see: >>> Obtained TGT from LSA: Credentials:

My Active Directory is not linked to my Oracle Database at the moment - so I could not check if this ticket worked for database login.

Monday, 22 October 2018

New Developer Day VM 18.3 (18.2 APEX)

https://www.oracle.com/technetwork/database/enterprise-edition/databaseappdev-vm-161299.html

  • Oracle Linux 7
  • Oracle Database 18.3 Linux x86-64
  • Oracle SQL Developer 18.3
  • Oracle Application Express 18.2
  • Hands-On-Labs (accessed via the Toolbar Menu in Firefox)
    • Oracle REST Data Services 18.3
    • Oracle SQL Developer Data Modeler 18.3
    • Oracle XML DB
For performance up  resources to 2CPU 3GB RAM - default 1CPU 2G ram.

Errata:
1/ Occasional SQLDeveloper startup issue:
2/ DBCA trick
3/ JET lab
4/ reset scripts

1/Occasional SQLDeveloper startup issue:

(java:23682): Gdk-ERROR **: The program 'java' received an X Window System error.
This probably reflects a bug in the program.
The error was 'RenderBadPicture (invalid Picture parameter)'.
  (Details: serial 17547 error_code 143 request_code 139 minor_code 7)
  (Note to programmers: normally, X errors are reported asynchronously;
   that is, you will receive the error a while after causing it.
   To debug your program, run it with the --sync command line
   option to change this behavior. You can then get a meaningful
   backtrace from your debugger if you break on the gdk_x_error() function.)
/u01/userhome/oracle/sqldeveloper/sqldeveloper/bin/../../ide/bin/launcher.sh: line 1606: 23682 Trace/breakpoint trap   (core dumped) ${JAVA} "${APP_VM_OPTS[@]}" ${APP_ENV_VARS} -classpath ${APP_CLASSPATH} ${APP_MAIN_CLASS} "${APP_APP_OPTS[@]}"
[oracle@localhost ~]$ which java
~/java/jdk1.8.0_152/bin/java

2/ DBCA Trick:
For dbca copy in assistance directory to $ORACLE_HOME from unzip of 18.3 Oracle Database download
https://www.oracle.com/technetwork/database/enterprise-edition/downloads/index.html

3/JET lab
Automated set up of seconds ords for use in JET lab (2nd ords also be done through sqldeveloper as described in labs)
2nd pdb 2nd ords
newpdbords        -Sets up 2nd pdb called 'ORDS'
9090init              -Starts up ords on new pdb port 9090
(can start stop with 9090start 9090stop)

 #!/bin/bash
. /home/oracle/.bashrc
newpdbords
9090init
sleep 180
cd /home/oracle/sqldeveloper/ords
echo '#!/usr/bin/expect
exp_internal 1
set timeout 1200
spawn $JAVA_HOME/bin/java -jar ords.war user ords_dev "SQL Developer"
expect -regexp "Enter a password for user ords_dev." { send "oracle\r" }
expect -regexp "Confirm password for user ords_dev." {send "oracle\r"}
expect -regexp "Something that will never happen to force keep searching until process end" {send "neverhappen\r"}
interact'| sed 'sZ$JAVA_HOMEZ'"$JAVA_HOME"'Zg' > ~/bin/xp.sh
chmod 755 ~/bin/xp.sh
~/bin/xp.sh
echo '#!/usr/bin/expect
exp_internal 1
set timeout 1200
spawn $JAVA_HOME/bin/java -jar ords.war user ords_admin "Listener Administrator"
expect -regexp "Enter a password for user ords_admin." { send "oracle\r" }
expect -regexp "Confirm password for user ords_admin." {send "oracle\r"}
expect -regexp "Something that will never happen to force keep searching until process end" {send "neverhappen\r"}
interact'| sed 'sZ$JAVA_HOMEZ'"$JAVA_HOME"'Zg' > ~/bin/xp.sh
chmod 755 ~/bin/xp.sh
~/bin/xp.sh
cd -
9090stop
#on ords 9090 reset we want reinstall not uninstall
touch ~/.ordsreinstall
#note 9090init has a 3 minute wait to ensure ords has started


4/reset scripts
Report any issues - if reset fails reimport VM

Wednesday, 6 June 2018

New Developer day VM

http://www.oracle.com/technetwork/database/enterprise-edition/databaseappdev-vm-161299.html

Virtualbox 5.2.8 or above
for performance use 3GB RAM 2 CPU

New ish:

rest enabled sql
rest enabled jdbc sql username/password@http://...(to ORDS)

+18.1 ORDS SQLDeveloper SQLCL modeller APEX
Oracle Linux 7 update5 (yum updated from 7u3 iso)

executables now under applications->other
(only .txt and .html can be easily clicked on desktop with no popups)

readme.txt and readmeCopy.txt - the same - one sometimes gets half hidden in icon layout.

errata
Same as last release + more recent software
any requests/what does not work let me know in the comments.

Friday, 4 May 2018

Things I worked around when setting up MIT kerberos and sqldeveloper over thin jdbc against 12.2.0.1 Oracle Database:

Server used Oracle Linux 7 for Kerberos (yum -y install krb5-server krb5-libs)
and Oracle Database 12.2.0.1
Clients used Oracle Linux 7 and Windows both SQLDeveloper 18.1

MIT Kerberos / oracle thick driver went OK once I used global c## user.

use c## user:
SQL>  create user c##user1 identified externally as 'user1@...'

(non c## user did not work for me.).

Used sqldeveloper with jre included (on windows).

SQLdeveloper jdbc thick:
'just like sqlplus' requires Oracle Client or Instant Client (not sure (which/if both) has Kerberos).

Sqldeveloper thin kerberos configuration:

tools->preferences->database->advanced:  config file (krb5.conf) - eg (on my
linux client) /etc/krb5.conf   Credential cache file (on my linux client) eg
/home/oracle/mycache (not (Microft Windows) MSLSA or OSMFT)
- sqldeveloper thin driver does not read sqlnet.ora
- or currently recognize non file based cache.

On connection either:
1/Give principal (no ticket/cache required) give / get prompted for password - went OK.
2/Leave principal blank (and get it from cache):
Use kinit (from sqldeveloper on windows - from yum -y install krb5-workstation on Oracle Linux) to set up existing ticket:
 needed "kinit -A" (for addressless ticket on windows) (used kinit default cache location and pointed to default from sqldev) (i.e. -A to get around: incorrect net address)

(Also tried at the same time kinit -p -f (proxiable and forwardable, and setting non proxy java -D setting) after -A it worked.)

klist -f
showed:
Flags: FORWARDABLE;PROXIABLE;PRE-AUTHENT

Issues  - customers might not be using MIT Kerberos.
Workarounds: Often thick jdbc works 'just like sqlplus' to workaround thin jdbc issues. 

Wednesday, 24 January 2018

1/Cool stuff from Oracle (Developer Day VM related)

2/Showing off your Developer Day VM to remote users (one method only requiring ssh).

3/Do not 'yum update' 2017 Developer Day VM

1/Cool stuff from Oracle (Developer Day VM related)

Any trouble getting these working on your VM let me know.

datamodeler-17.4.0.355.2121-no-jre.zip (unzip and go)
jdk-8u152-linux-x64.tar.gz (or later) (unzip in ~/java [might need to remove existing java in that directory] and go, check ~/.bashrc)
sqlcl-17.4.0.354.2224-no-jre.zip - include REST JDBC http://www.oracle.com/technetwork/developertools/rest-data-services/downloads/index.html - unzip and go
sqldeveloper-17.4.0.355.2349-no-jre.zip - unzip and go

apex_5.1.4.zip (lower version already installed)
ords.17.4.1.353.06.48.zip (lower version already installed - but both can run on different ports/pdbs) 
- one line admin change to be  REST SQL (and REST JDBC server) note no longer prompts for sys user. (Would only have trouble running old and new if existing ORDS is installed on the CDB rather than pdb, which is not the case) existing ords.sh should work (for start stop) (put in full path to new war) - initial configure/install  will change.


2/Showing off your Developer Day VM to remote users (one method only requiring ssh).

If your networking firewall etc are out of your control port 22 (ssh) probably still works.

For other people to access your VM for test / development purposes you can (obviously but I had forgotten) ssh port forwarding (for 9090 8080 8081 or 1521) - requires ssh login to host machine, for example for 1521:

Note the default is to keep the ssh login open (might have to if all else fails kill it to stop it).

1 ssh required (no sqlplus required) (login and password on host required)
// log in to host (desktop hosts IP my change)
bash-4.2$ ssh -p 22 user@___the_ip_address__
[need password for user]
>ssh -p 2222 oracle@localhost
[password oracle]
. oraenv -- ie setup oracle environment
orcl12c -- the default environment may have several
>sql system/oracle

Or
2: ssh required (sqlcl required) (login and password on host required)
[IN ADVANCE] ssh -L 1521:localhost:1521 user@__the_ip_address__
[need password for user]
On your own machine using sqlcl sqlplus sqldeveloper etc locally and your local 1521 port: (port forward from a different port if that is in use)

sql system/oracle@localhost:1521/orcl

3/Do not 'yum update' 2017 Developer Day VM

Warning do not 'yum update' a 2017 developer day VM (if you do you will upgrade to Oracle Linux 7.4 and you guest desktop will not resize by mouse action (you can still resize by command line))







Tuesday, 4 April 2017

SQLDeveloper/SQLcl LDAP + url + 3rd party connection tricks

SQLDeveloper/SQLcl LDAP + url + 3rd party connection tricks:

SQLDeveloper LDAP look up only tested with (i.e. only works with) OID LDAP Very little code - issue is setup for testing non default setup (with different OID setups) before release.
Note look up is at configuration save time not at live connection create time.

Can be avoided:

Note you can use url based LDAP calls (connection type -> advanced) - awkward - the ldap server is queried at connect time (for host port etc).
Note there is a different syntax depending on whether you are using thick(oci/C) or thin(pure java) driver.
These 'refer to ldap by url' connections can be exported imported etc as normal.

Old semi related LDAP blog:
http://totierne.blogspot.co.uk/2009/03/sqldeveloper-ldap-success-and-failure.html


SQLCL(+connect command) LDAP;
 http://barrymcgillin.blogspot.co.uk/2015/01/sqlcl-ldap-anyone.html
ie set LDAPCON jdbc:oracle:thin:@ldap:__WHATEVER_YOU_WANT__  use #ENTRY# for whatever you want your lookup is called eg ORCL in connect system/manager@ORCL
LDAPCON can be shell/dos environmental variable. 
This is a very thin helper search and replace for the raw 'explicit ldap url' method.

Actually you can put in connect system/manager@[1]

[1]_whatever_url_you_want_only_likely_to_work_for_jdbc:oracle:thin:_jdbc:oracle:oci__

Some 3rd party url used to work if classpath OK
That has been deemphasised not tested
I do not think we went out of our way to break it but not tested usually eventually means does not work:
http://dermotoneill.blogspot.co.uk/2010/11/workheet-hints.html
http://dermotoneill.blogspot.co.uk/2010/11/cross-database-bridge-statement.html is a special case for getting 3rd party information into Oracle database (select on 3rd party side (limited to select i.e. more likely to work), insert on Oracle side).

Thank you for your time,
Turloch
-SQLDeveloper Team

Monday, 3 April 2017

Kerberos and SQLDeveloper (without Oracle Client)

Hi Kerberos users,

#1/Confirm your configuration with sqlplus.
If sqlplus works -> with Oracle Client should work.

If you do not want to use Oracle Client:
The non Oracle Client route is a different 'pure java' code path - no sqlnet.ora configuration.

#2/Cache - needs to be blank or point to a file ie not OSMFT If blank password is prompted for (nearly) each time.
#3/http://www.oracle.com/technetwork/java/javase/downloads/jce8-download-2133166.html jce may be required for some common authentication/encryption algorithms.

#4/Oracle Kerberos connection code is available at:
https://docs.oracle.com/database/121/JJDBC/clntsec.htm#JJDBC28344

#5/There is a way of tracing thin - it is documented somewhere - never used it myself (as I have access to debugging into the code) - could not find it with a few searches - from memory it involves a Man[person/process]In The Middle technique.
Old style 'C' tracing (set on the server/listener side) may be of some use.

#6/I wrote up this:
http://totierne.blogspot.co.uk/2013/02/introduction-to-tracing.html
However it was more for the text of what sql command failed rather than for connection issues.

Thank you for your time,
Turloch O'Tierney

-SQLDeveloper Team

Thursday, 5 May 2016

Developer day VM Updated: 4/25/2016 Errata

Download 'Developer Days VM' : including patched 12.1.0.2.13:
http://www.oracle.com/technetwork/database/enterprise-edition/databaseappdev-vm-161299.html

Use case:
Developer - VM on their machine with recent Oracle software, with no non VM install deinstall setup issues..
Testing (i.e. non production) use, no non VM install deinstall setup issues...

Update 25 August: enabled ORDS/Rest enabled table (hrrest.employees) :
    (Thought this was in the readme)
    http://localhost:8080/ords/hrrest/employees/

Major:
Shipped with second pdb[1] for from scratch ORDS setup if you want.
Bump up cpus/Ram
- absolute minimum/default (but slow)1 cpu 2Gig RAM,
-(fast enough but impacts basic host machine (i5/8Gb))2cpu 3Gig RAM

Minor:
New in this release small bump in versions of (especially) ORDS and sqlcl.[4]
Better setup of ORDS by default (url for select from an example table enabled)
Reset does not cover initial ORDS.
Drop pdb[2]/create pdb[3] and reset up ORDS from the labs if you want to rebuild ORDS configuration.

Absolutely tiny:
No fancy virtualbox options documented especially for this VM - out of the box: port forward from host to guest.
Built with virtualbox 5.0.0 (and extras 5.0.0)
Last Linux 'yum update' about 1 March (might need proxy in yum.conf) - if you update the kernel you will need to reinstall virtualbox  extras to get a better UI integration guest to host.
~/setsize.sh called on gnome login to set screen size and pop up terminal.
APEX is too slow the first time - after that it succeeds OK.
To reset firefox (eg to clear history) try:
     __log out/exit from firefox__ then cd ~; rm -rf ~/.mozilla ; unzip mozillablob.zip
ords.sh takes an argument path/to/the/war - so it knows which one to start/stop/ ps -ef| grep for

[1]pdb -> Oracle Multitenant - big new feature in 12 - few extra resources (besides 1.5Gig disk disk) for pdb which appears to the user (with a few restrictions to DBA operations) a new database. I was thinking the VM might host many PDBs
- pdb per developer in the group?
- pdb per software version/product?
- create pdb automatically on demand?(2 minutes)
- Have one spare PDB available so requester does not have to wait 2 mins? (Have a function that returns service name of pdb to use so prebuilt pdb does not need to be renamed (rather than demanding new pdb by name))
Bump up the [Core database RAM - currently 800meg]i.e. SGA/Add Extra Virtual Disk if you are going over 6 VMs...

[2] To drop PDB named SCRATCHT (initially pdb named ORDS is pretty blank - just 'hr' schema)
BEGIN
    EXECUTE IMMEDIATE 'ALTER PLUGGABLE DATABASE "SCRATCHT" CLOSE IMMEDIATE';
    EXECUTE IMMEDIATE 'DROP PLUGGABLE DATABASE "SCRATCHT"
      INCLUDING DATAFILES';
END;

[3] To create PDB (THE_NAME if not entered defaults to pdb name "ORDS" - if there is an "ORDS" pdb already it errors out).

createnewpdb THE_NAME
[type y enter to confirm details]
creates pdb (including users tablespace)
creates HR schema, create tnsnames.ora entry,
Ensures pdb is open by default
Ensures passwords do not expire (change this to suit your security requirements)
tests 32k varchar is on (set in seed).

[4]sqlcl is undergoing continuous development/updates - any problems confirm first on latest download from:
http://www.oracle.com/technetwork/developer-tools/sql-developer/downloads/index.html
(it is less than 20 meg download).