Dit dockerproject creëert een 'Oracle Linux Server release 8.9' met een thick instant client en Python3, inclusief Python library oracledb. Met behulp van het execQuery.py script wordt het mogelijk om een SQL-script uit te voeren op een aantal vooraf gedefinieerde Oracle-databases.
Zie https://github.com/rgeilings/ol8-phython3-oradb voor de meer details.
Voorwaarde is dat Docker Desktop geïnstalleerd is (voor Windows zie: https://docs.docker.com/desktop/install/windows-install/).
De eerste stap is om de git repository te clonen naar je eigen machine.
git clone https://github.com/rgeilings/ol8-phython3-oradb.git


Gebruik het docker-compose up -d commando om de docker container aan te maken. Let op dat je dit in de directory uitvoert, waar de docker-compose.yml file staat. Ik gebruik hiervoor git bash.



Het python script execQuery.py moet worden aangepast. Als voorbeeld zijn credentials van user system met password verysecret2024! voor database(sid) ORCL die op host localhost en port 1521 draait in het script opgenomen. De python ‘list’ databases moet gevuld worden voor alle database, waarop het gevraagde script moet worden uitgevoerd.
# List of database credentials
# e.g. {"user": "system", "password": "verysecret2024!", "dsn": "localhost:1521/ORCL", "sid":"ORCL"}
databases = [
{"user": "system", "password": "<<password here>>", "dsn": "<<hostname here>>:<<listener port here>>/<<sid here>>", "sid":"<<sid here>>"},
{"user": "system", "password": "<<password here>>", "dsn": "<<hostname here>>:<<listener port here>>/<<sid here>>", "sid":"<<sid here>>"},
{"user": "system", "password": "<<password here>>", "dsn": "<<hostname here>>:<<listener port here>>/<<sid here>>", "sid":"<<sid here>>"}
]
De git repo bevat voorbeeldscript get_non_default_parameters.sh. In dit script wordt execQuery.py aangeroepen en een .sql statement uitgevoerd.
#!/bin/bash
pushd $(dirname $(readlink -f $0)) > /dev/null
./execQuery.py > $(basename "$0" .sh).txt <<'eof'
select name, value
from v$parameter
where isdefault = 'FALSE'
and value is not null
order by name
eof
popd > /dev/null
Ga naar de container met docker exec -it en voer het script uit. Dit voorbeeld gebruikt git bash op Windows, vandaar winpty.

De output van dit script is file get_non_default_parameters.txt met daarin alle niet standaard parameters voor de Oracle databases in de eerder genoemde python ‘list’ databases.
bash-4.4# head get_non_default_parameters.txt
ORCL|_bct_public_dba_buffer_size|33552384|
ORCL|_fix_control|5520732:off|
ORCL|_optimizer_use_stats_on_conventional_dml|FALSE|
ORCL|audit_file_dest|/u02/app/oracle/admin/ORCL/adump|
ORCL|audit_trail|DB|
ORCL|awr_pdb_autoflush_enabled|TRUE|
ORCL|awr_snapshot_time_offset|1000000|
ORCL|clonedb_dir|/u02/app/oracle/admin/ORCL/scbf|
ORCL|control_file_record_keep_time|30|
ORCL|control_files|+DATAC1(CONTROLFILE)/ORCL/CONTROLFILE/control1.ora, +DATAC1(CONTROLFILE)/ORCL/CONTROLFILE/control2.ora|
bash-4.4#