1. Start
  2. Unternehmen
  3. Blog
  4. Always-On für die Always-Free Database

Always-On für die Always-Free Database

In einem vorangegangenen Blog-Eintrag haben wir erklärt, wie man eine kostenlose Oracle Datenbank in der Cloud erstellt. Nur leider wird diese Datenbank nach 7 Tagen Inaktivität automatisch gestoppt. Um das zu verhindern, muss die Datenbank regelmäßig verwendet werden. Zu diesem Zweck kann man sich einfach einer ebenfalls immer kostenfreien Compute Instance in der Oracle Cloud bedienen. Diese hat zwar nur 1 OCPU, 1GB RAM und 50GB Storage, das ist für diese Zwecke aber mehr als ausreichend.

Die Idee ist, in regelmäßigen Abständen eine Verbindung zum Autonomous Database Service aufzubauen und eine Abfrage gegen die Datenbank zu starten. Mehr bedarf es nicht, um den Service am Laufen zu halten. Man benötigt also einen Oracle Client auf der Compute Instance. Oracle stellt dafür auf yum.oracle.com verschiedene Packages für die unterschiedlichen Oracle Linux Versionen bereit. Die Compute Instances laufen mit Oracle Linux 7, dementsprechend muss das passende YUM Repository verwendet werden. Dieses Repository wird als neue Datei in /etc/yum.repos.d/ bereitgestellt:

 

[opc@dbamarco-02 ~]$ sudo su -
[root@dbamarco-02 ~]# cat /etc/yum.repos.d/oracle-linux-ol7.repo
[ol7_instant_client]
name=Oracle Instant Client ($basearch)
baseurl=http://yum.oracle.com/repo/OracleLinux/OL7/oracle/instantclient/x86_64
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-oracle
gpgcheck=1
enabled=1

 

Damit ist das Repository verwendbar und der Instant Client kann installiert werden. Für das Keep-Alive wird ledglich das SQL*Plus benötigt. Weitere Tools wie "tnsping" usw. können ebenfalls mit dieser Methode installiert werden.

 

[root@dbamarco-02 yum.repos.d]# yum install oracle-instantclient19.6-sqlplus
Loaded plugins: langpacks, ulninfo
Resolving Dependencies
--> Running transaction check
---> Package oracle-instantclient19.6-sqlplus.x86_64 0:19.6.0.0.0-1 will be installed
--> Processing Dependency: oracle-instantclient19.6-basic >= 19.6.0.0.0 for package: oracle-instantclient19.6-sqlplus-19.6.0.0.0-1.x86_64
--> Running transaction check
---> Package oracle-instantclient19.6-basic.x86_64 0:19.6.0.0.0-1 will be installed
--> Finished Dependency Resolution

Dependencies Resolved

==========================================================================================
 Package                           Arch      Version        Repository               Size
==========================================================================================
Installing:
 oracle-instantclient19.6-sqlplus  x86_64    19.6.0.0.0-1   ol7_instant_client      687 k
Installing for dependencies:
 oracle-instantclient19.6-basic    x86_64    19.6.0.0.0-1   ol7_instant_client       52 M

Transaction Summary
==========================================================================================
Install  1 Package (+1 Dependent package)

Total download size: 52 M
Installed size: 229 M
Is this ok [y/d/N]: y
Downloading packages:
(1/2): oracle-instantclient19.6-sqlplus-19.6.0.0.0-1.x86_64.rpm               | 687 kB  00:00:01
(2/2): oracle-instantclient19.6-basic-19.6.0.0.0-1.x86_64.rpm                 |  52 MB  00:02:19
-----------------------------------------------------------------------------------------------------
Total                                                                385 kB/s |  52 MB  00:02:19
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
  Installing : oracle-instantclient19.6-basic-19.6.0.0.0-1.x86_64                                1/2
  Installing : oracle-instantclient19.6-sqlplus-19.6.0.0.0-1.x86_64                              2/2
  Verifying  : oracle-instantclient19.6-sqlplus-19.6.0.0.0-1.x86_64                              1/2
  Verifying  : oracle-instantclient19.6-basic-19.6.0.0.0-1.x86_64                                2/2

Installed:
  oracle-instantclient19.6-sqlplus.x86_64 0:19.6.0.0.0-1

Dependency Installed:
  oracle-instantclient19.6-basic.x86_64 0:19.6.0.0.0-1

Complete!

 

Nachdem der Oracle Client nun installiert ist, kann er auch von anderen Benutzern verwendet werden. Für die Verbindung zur Autonomous Database wird die ZIP-Datei auf die Compute Instance kopiert. Dort entpackt man die Datei am besten in separates Verzeichnis.

 

[opc@dbamarco-02 ~]$ mkdir ADB
[opc@dbamarco-02 ~]$ unzip -d ADB Wallet_MMIATP.zip
Archive:  Wallet_MMIATP.zip
  inflating: ADB/cwallet.sso
  inflating: ADB/tnsnames.ora
  inflating: ADB/truststore.jks
  inflating: ADB/ojdbc.properties
  inflating: ADB/sqlnet.ora
  inflating: ADB/ewallet.p12
  inflating: ADB/keystore.jks

 

Zum Schluß muss nur der Pfad zum Wallet in der sqlnet.ora angepasst werden. Der Pfad muss auf das Verzeichnis verweisen, in das die Dateien entpackt wurden.

Die Zeile

 

WALLET_LOCATION = (SOURCE = (METHOD = file) (METHOD_DATA = (DIRECTORY="?/network/admin")))

 

wird zu

 

WALLET_LOCATION = (SOURCE = (METHOD = file) (METHOD_DATA = (DIRECTORY="/home/oracle/ATP")))

 

Damit der Oracle Client nun auch die gewünschten Informationen findet, wird die Umgebungsvariable TNS_ADMIN entsprechend gesetzt. Danach kann eine Verbindung mit SQL*Plus zur Autonomous Database hergestellt werden.

 

[opc@dbamarco-02 ADB]$ export TNS_ADMIN=/home/opc/ADB
[opc@dbamarco-02 ADB]$ sqlplus admin/**********@mmiatp_high

SQL*Plus: Release 19.0.0.0.0 - Production on Wed Jun 3 11:02:57 2020
Version 19.6.0.0.0

Copyright (c) 1982, 2019, Oracle.  All rights reserved.

Last Successful login time: Tue May 05 2020 13:47:50 +00:00

Connected to:
Oracle Database 18c Enterprise Edition Release 18.0.0.0.0 - Production
Version 18.4.0.0.0

SQL> select name from v$database;

NAME
---------
FEDB1POD

SQL> exit

 

Mit diesen Voraussetzungen kann nun ein Script erstellt werden, dass sich zur Datenbank verbindet und eine Abfrage ausführt. Wird dieses Script dann per cron Job regelmäßig ausgeführt, so wird die Datenbank auch nicht mehr von Oracle angehalten.

Kommentare

Keine Kommentare

Kommentar schreiben

* Diese Felder sind erforderlich