Archiv der Kategorie: Mac

utplsql mit gradle

In diesem Artikel stelle ich vor, wie utplsql mit dem Build-Automatisierungstool gradle integriert wird. Dazu verwende ich das utplsql-Plugin für gradle.

Die Aufgabe ist, die Tests für die Funktion btwnstr aus der utplsql-Dokumentation im Package ut_btwnstr über das Plugin in gradle auszuführen und die Testergebnisse darzustellen.

Vorgehen wie folgt:

Neuen Ordner anlegen

mkdir utplsql01
cd utplsql01

Gradle projekt initialisieren

gradle init

Die build.gradle-Datei wie folgt anpassen

buildscript {
  repositories {
    maven {
  url 'http://dl.bintray.com/iwarapter/gradle-plugins/' 
    }
  }
  dependencies {
    classpath 'com.iadams:gradle-utplsql-plugin:0.1.3'
    }
  }

apply plugin: 'com.iadams.utplsql'

repositories {
  mavenCentral()
}
dependencies {
  junitreport 'org.apache.ant:ant-unit:1.9.4'
}

task loadDriver {
  URLClassLoader loader = GroovyObject.class.classLoader
  loader.addURL (file ('lib/ojdbc6.jar').toURL())
  java.sql.DriverManager.registerDriver(loader.loadClass ('oracle.jdbc.OracleDriver').newInstance())
}
utDeploy.dependsOn loadDriver
utRun.dependsOn loadDriver

utplsql {
  url = 'jdbc:oracle:thin:@entw01:1521/orcl'
  username = 'hr'
  password = 'oracle'
  sourceDir = 'src/tests'
  includes = '**/*.pks, **/*.pkb'
  excludes = ''
  outputDir = 'build/utplsql'
  testMethod = 'run'
  setupMethod = true
  failOnNoTests = true
}

Nun einen src/tests Ordner anlegen

mkdir -p src/tests
cd src/tests

und darin die Source des Test-Packages ut_btnwstr kopieren.

Nun muss man noch einen lib-Order anlegen, in den der jdbc-Treiber kopiert werden muss.

mkdir lib
cd lib
cp /oracle-lib-folder/ojdbc6.jar .

Nun kann man mit

gradle utDeploy utRun

die Tests einspielen und ausführen.

Im nächsten Post zeige ich, wie ich dies für Continuous Integrations optimiere und erweitere indem flywaydb integriert wird.

Oracle unter Apple OS X

Von Oracle wird eine Prebuild VM mit Oracle 12c für VirtualBox angeboten.

Will man vom Mac aus auf den Oracle 12c Server unter Oracle Enterprise Linux zugreifen, so ist es notwendig, dass

  • die Firewall in der Virtuellen Maschine  ausgeschaltet ist,
  • ein zweites Netzwerkinterface „Host-Only“ aktiviert ist,
  • die SID ist ORCL
  • sqlplus hr/oracle@entw01:1521/orcl

Gibt es hierbei Probleme, so kann das daran liegen, dass der Account hr inaktiv ist. Dann hilft ein Anmelden als sys mit

sqlplus sys/oracle@localhost:1521/orcl as sysdba

und dann (in sqlplus)

alter user hr identified by oracle account unlock;

Um von OSX auf den Oracle Server in der virtuellen Maschine zugreifen zu können, müssen mehrere Dinge konfiguriert und eingerichtet werden:

Um den Server zuverlässig über eine eigene IP-Adresse ansprechen zu können, wird in Virtualbox ein Host-Only-Netz angelegt. Um immer die gleiche IP-Adresse für diese Maschine zu erhalten, stelle ich in den Einstellungen der virtuellen Netzwerkkarte die kleinste Adresse und grösste Adresse des DHCP-Servers auf den gleichen Wert. Ich merke mir diese Wert und trage ihn in die etc/hosts meines Macs als Namen ein:

# Host Database
#
# localhost is used to configure the loopback interface
# when the system is booting. Do not change this entry.
##
127.0.0.1 localhost
255.255.255.255 broadcasthost
192.168.56.101 entw01
::1 localhost

Anschliessend boote ich die virtuelle Maschine und versuche, sie mittels PING vom Mac aus zu erreichen.

ping entw01

Instantclient und sqlplus

Nun folgt die Installation des instantclients für den Mac. Dazu die gewünschten Pakete von Oracle runterlasen und WICHTIG! die Installationsanleitung am Ende der Download-Seite beachten.

Ein Aufruf von sqlplus muss dann erfolgreich sein:

sqlplus hr/oracle@entw01/orcl

Falls nicht, dann bitte noch mal die Installationsanleitung von Oracle nachvollziehen.

sqlplus++

sqlcl ist der Nachfolger von sqlplus. Download von Oracle. Aufruf geschieht wie für sqlplus:

sql hr/oracle@entw01/orcl

 

 

Xcode 5.0.2 und svn 1.8

Will man Xcode in der Version 5.0 mit SVN 1.8 zusammen verwenden, erhält man seltsame Fehlermeldungen. Etwas Recherche im Internet liefert den sehr hilfreichen Hinweis, dass die SVN-Server-Version nicht zur Clientversion von SVN in Xcode passen könnte. Ich verwende die aktuelle Version 1.8 von svn als Server, die Client-Version erfährt man durch direkten Aufruf von svn in Xcode durch:

/Applications/Xcode.app/Contents/Developer/usr/bin/svn --version

und das liefert

svn, version 1.7.10 (r1485443)

Die Kombination Server-Version 1.8 und Client-Version 1.7 habe ich  nicht ans Laufen gebracht. In diesem Post auf stackoverflow.com wird eine Lösung erläutert, die abgewandelt auf Xcode 5 ebenfalls passt :

Vorhandenen svn-binaries verschieben in ein Sicherungsverzeichnis

cd /Applications/Xcode.app/Contents/Developer/usr/bin
sudo mkdir svn_V17
sudo mv svn* svn_V17/

und dann die Links auf die richtigen Programme in opt/local/bin anlegen

cd /Applications/Xcode.app/Contents/Developer/usr
sudo ln -s /opt/local/bin/svn* bin/

Danach funktionierte svn auch in Xcode.
Das muss man dann mit jeder Aktualisierung von Xcode wiederholen.

 

Oracle 11gR2 unter Mac OS X

Was waren das noch für Zeiten, als von Oracle ein DB-Server für OS X bereitgestellt wurde. Heute muss man sowas über eine virtuelle Maschine erledigen.

  1. Installiere zuerst Virtualbox 4.x. Gibts für lau bei Virtualbox.org.
  2. Dann eine Developer VM von Oracle mit Oracle 11 herunterladen. So spart man sich die Einrichtung und Installation des Oracle Servers. Was da alles schief gehen könnte…..
  3. Nun den Speicher der VM auf einen sinnvollen Wert hochsetzen: 900 MB ist doch ein wenig knapp:  Besser sind 2 GB.
  4. In Virtualbox wird noch ein Host-Only Netzwerk definiert. Dazu Einstellungen in VirtualBox öffnen, dann Netzwerk. Dort je ein NAT-Netzwerk und Host-Only-Netzwerk anlegen.
  5. Der Virtuellen Maschine nun diese beiden Netzwerke als Adapter 1 und Adapter 2 zuordnen.
  6.  Nun die VM booten. Das Betriebssystem-Login lautet oracle/oracle.
  7. Nun loggen wir uns als sysdba in den Oracle-Server ein:
    [oracle@entw01 ~]$ sqlplus sys as sysdba@orcl

    Passwort ist oracle.

    SQL>Alter user scott identified as tiger;
    SQL>Alter user scott account unlock;
  8. Tastatur auf deutsch umstellen.
    Es ist eine gute Idee, die Tastatur in der VM auf die gleiche Nationalität einzustellen, wie außerhalb. Dazu über das Gnome-Hauptmenü Administration/Keyboard die deutsche Tastatur aktivieren.
  9. In der Hosts-Datei der virtuellen Maschine sollte noch der Host-Name von Host und Guest eingetragen werden:
    127.0.0.1 localhost.localdomain localhost
    ::1 localhost6.localdomain6 localhost6
    192.168.56.1 host
    192.168.56.1 macbook
    127.0.0.1 entw01
  10. Der Client ist jetzt fertig. Jippie!

Nun wenden wir uns wieder dem Host zu.

  1. Der Host-Name des Guests muss noch in der Host-Datei des Hosts eingetragen werden:
    127.0.0.1       localhost
    255.255.255.255 broadcasthost
    ::1             localhost
    fe80::1%lo0     localhost
    192.168.56.101  entw01
  2. SSH-Zugang zur virtuellen Maschine:
    Wir haben als Hostname entw01 festgelegt, somit kann einfach eine Sitzung auf der virtuellen Maschine beginnen:

    >$ ssh entw01 -l oracle
  3. Nun muss noch der InstantClient für Mac 64 Bit heruntergeladen werden – wir brauchen das Basic-Package sowie die SQL-Plus-Files.
  4. Diese Dateien werden in einem Ordner ausgepackt, z.B. ~/bin/instantclient_11_2.
  5. Anschliessend in der Datei _bash_profile diesen Ordner den Systemvariablen PATH und DYLD_LIBRARY_PATH zufügen:
    export ORA_IC=/Users/xx/bin/instantclient_11_2
    export DYLD_LIBRARY_PATH=$DYLD_LIBRARY_PATH:$ORA_IC
    export PATH=$PATH:$ORA_IC
  6. Jetzt können wir mittels SQLPLUS auf den Oracle-Server zugreifen:
    sqlplus scott/tiger@entw01:1521/orcl
  7. oder für den sysdba
  8. sqlplus sys/oracle@entw01/ORCL as sysdba
  9. Fertig.

VMware Fusion und Mac-Virtualiserung

Kleine Falle beim Erstellen einer Virtuellen Mac-Umgebung mit VMWare Fusion:  Die Standardtastatureinstellung ist amerikanisch. Und da ist das @ nicht auf dem L sondern irgendwo anders. Erfreulicherweise hat Apple aber dran gedacht, die Tastatureinstellung im Setup änderbar zu machen.

Anders ausgedrückt: Obwohl ich als Installationsprache Deutsch gewählt hatte, wurde die Tastatur nicht entsprechend umgestellt.