Donnerstag, 7. Mai 2015

Oracle External Tables / SQL Loader - Probleme mit Symlinks - KUP-04027

Oracle verbietet per Default die Nutzung von Smbolic Links (Symlinks) für den Zugriff über den ORACLE_LOADER Access Driver.

Man erhält dann eine Meldung: KUP-04027

Ist man sich des Risikos bewusst, der bei der Verwendung von Symlinks besteht, so kann man in der Definition der externen Tabelle die Direktive
DISABLE_DIRECTORY_LINK_CHECK
einsetzen.

Dann funktionieren auch Zugriffe auf verlinkte Verzeichnisse und Dateien.

Man beachte (oder neuere Version):
http://docs.oracle.com/cd/B28359_01/server.111/b28319/et_params.htm#g1031955


Beispiel

-- df Systemkommando als Preprocessor benutzen um Filesystemgröße in der DB direkt abzufragen

CREATE OR REPLACE directory os_tools AS '/oracle/scripts';

-- df -lk
CREATE TABLE system.oscmd_df
(
df_device VARCHAR2(30),
df_size NUMBER,
df_used NUMBER,
df_available NUMBER,
df_pct VARCHAR(3),
df_mount VARCHAR(128)
)
ORGANIZATION EXTERNAL
(
TYPE ORACLE_LOADER
DEFAULT DIRECTORY os_tools
ACCESS PARAMETERS (
records delimited BY newline
preprocessor os_tools:'ex_df.sh'
DISABLE_DIRECTORY_LINK_CHECK
NOLOGFILE
NOBADFILE
skip 1 fields terminated BY whitespace ldrtrim )
LOCATION(os_tools:'ex_df.sh')
)
/

/oracle/scripts% cat ex_df.sh
#!/bin/bash
/bin/df -lk
exit

/oracle/scripts% ls -la ex_df.sh
-rwxr-xr-- 1 oracle dba 30 May 7 10:50 ex_df.sh


> SELECT
RPAD(DF_MOUNT,32) "Mountpoint",
ROUND(DF_SIZE /1024/1024,1) "Size (GB)",
ROUND(DF_AVAILABLE/1024/1024,1) "Available (GB)",
DF_PCT "Used%"
FROM
system.oscmd_df

Mountpoint                        Size (GB) Available (GB) Used%
-------------------------------- ---------- -------------- -----
/                                      19,7            9,9 48%   
/dev                                    3,8            3,8 1%    
/dev/shm                                 21             21 1%    
/schlumpf                              59,1           47,2 20%   
/schnubbeldidup/sapdata               108,3            8,7 92%   

Montag, 22. September 2014

Oracle 12c Installation bringt INS-30131

Eine Oracle 12c Installation auf SUSE SLES 11 brachte am Anfang der Softwareinistallation die Fehlermeldung

[INS-30131] Initial setup required for the execution of installer validations failed.

Der erste Hinweis under "Details" wies auf fehlende Zugrissfrechte auf das TEMP-Verzeichnis oder zu wenig Speicherplatz in diesem hin.

Cause
Failed to access the temporary location.  Action - Ensure that the current user has required permissions to access the temporary location. 

In die gleich Kerbe hieben auch support.oracle.com und Google mit Verweis auf einige Foren.

Allerdings war /tmp zugreifbar und mehr als genug Platz vorhanden.
Auch das manuelle Setzen von $TMP auf ein anderes Verzeichnis brachte nichts.

Somit war es mal wieder an der Zeit um ganz schweres Geschütz aufzufahren:
GENAUES lesen der VOLLSTÄNDIGEN Meldung!
:-)

Und da stand es dann auch ganz unten im Bereich "Additional Information"

Exception details
PRVG-1561 : Setting ORA_CRS_HOME variable is not supported

Also ein kurzes
unset  ORA_CRS_HOME
in der Shell vor dem nächsten Versuch eingegeben und schon lief der Installer weiter.

Und die Moral von der Geschicht:
Lesen bildet!






Donnerstag, 7. August 2014

JEdit: keine Keyboard Eingabe möglich bei Nutzung von Xming

Ich hatte das Problem, dass JEdit im Zusammenhang mit Xming unter Windows 7 (64 Bit) und Java 7  (64 Bit) keine Texteingabe in JEdit erlaubte.

Aufgerufen wurde Xming wie folgt:

Xming.exe :0 -clipboard -multiwindow

Nach einigem Herumexperimentieren stellte sich heraus, dass die Eingabe im Fullscreen Modus (-fullscreen) gut funktioniert.
Es fehlen allerdings alle Fensterlemente, zum Beispiel auch die Möglichkeit zur Größenänderung des Fensters.
Scheinbar liegt es am als Window Manger genutzten Windows - bzw. an der Kombination.

Ruft man Xming mit dem (experimentellen) internen Window Manager auf, dann funktioniert die Texteingabe.

Xming.exe -internalwm

Allerdings ohne Clipboad-Sharing mit Windows.

Clipoard funktiniert erst mit:

Xming.exe :0 -internalwm -clipboard

man beachte, dass das :0 wichtig ist - sonst geht auch das Clipboard Sharing nicht.


Unschön ist, dass manche Fenster, wie zum Beispiel die Tips sich nicht mehr einfach schliessen lassen.
Wenn man das unwillige Fenster über das Hauptfenster hinaus schiebt, dann funktioniert es aber ...




Mittwoch, 8. Januar 2014

Vollständige Commandline mit PS ausgeben unter Solaris

Der Unix Standard Befehl
ps -ef
hilft nicht unbedingt weiter, wenn man sehr lange Kommandozeilenaufrufe verarbeiten will, da dieser überlange Zeilen abschneidet.

Unter Solaris (Linux prüfe ich noch) hilft dann
/usr/ucb/ps -auxww





Dienstag, 12. November 2013

Oracle 12c - XML DB ist nun immer dabei

Wer sich die Datenbankanlage bei Oracle 12c genau ansieht erkennt, dass Skripte und Prozeduren ausgeführt werden, die zur Anlage der XML DB gehören.

Liest man im MOS nach, so findet man heraus, dass ab Version 12c die XML DB als integraler Bestandteil der Datenbank gesehen wird und immer angelegt wird.
Auch bei einer Migration wird sie hinzugefügt, wenn sie nicht schon vorher Bestandteil der DB war.

Oracle 12c - manuelle CDB-Anlage

Will man in Oracle eine CDB von Hand anlegen ohne den DBCA, so funktioniert das fast genau so wie eine "normale" DB.
Wichtig ist dabei beim Create Database die Erweiterung
ENABLE PLUGGABLE DATABASE
zu verwenden.

Danach als SYSDBA das Skript
@?/rdbms/admin/catcdb.sql
ausführen.

Hier werden so bekannte Skripte wie
@?/rdbms/admin/catalog.sql
@?/rdbms/admin/catproc.sql

@?/sqlplus/admin/pupbld.sql
usw. 
intern ausgeführt und die CDB-Fähigkeit eingerichtet.

Leider hat Oracle vergessen im ersten 12er Release dieses Skript mit auszuliefern.
In der MOS Note "MISSING FILE CATCDB.SQL IN $ORACLE_HOME/RDBMS/ADMIN in 12C RDBMS software (Doc ID 1575778.1)" wird das bestätigt und auf einen Patch 17316776 verwiesen der diese Dateien nachliefert.

Das macht der Patch auch ganz brav.

Den Patch installiert man wie immer mittels "opatch apply" im Verzeichnis des ausgepackten Patches.

Leider bekam ich beim Aufruf von catcdb.sql permantent Fehler in der Art:

 Can't open perl script "{/opt/oracle/db/12.1/rdbms/admin/}catcon.pl": Datei oder Verzeichnis nicht gefunden

Da stimmt wohl irgendwas mit dem Syntax nicht - die geschweiften Klammern bleiben erhalten.

Wenn man die geschweiften Klammern entfernt und die schließende Klammer durch einen Punkt ersetzt funktioniert das Skript einwandfrei.
Aufpassen: es gibt einige Stellen im hinteren Bereich von Zeilen an denen der gleiche nicht funtkionierende Syntax genutzt wird.
z.B. bei hlpbld.sql



Donnerstag, 5. September 2013

Fehleranalyse für ANS0220E (RC400) bei Tivoli Data Protection for Oracle

TDPO hat die unangenehme Eigenschaft bei Fehlern in der Konfiguration nur eine einzige Meldung zu kennen:
"ANS0220E (RC400)  An invalid option was found during option parsing."
Aus dieser Meldung ist weder zu entnehmen was, noch wo der Fehler liegt.

Üblicherweise hat sich ein Tipfehler in einem der Pfade in der TDPO.OPT Datei bzw. DSM.SYS eingeschlichen oder die Berechtigungen auf die Verzeichnisse sind falsch.

$> ./tdpoconf password -tdpo_optfile=<tdpo.opt>
ANS0220E (RC400)  An invalid option was found during option parsing.


IBM gibt in einer Support-Note jedoch den Tip, man möge das DSMC-Programm aufrufen, dieses würde anständige Fehlermeldungen bringen.
Zuvor muss man noch die DSMC-Konfigdataei in der Umgebungsvariable DSM_CONFIG hinterlgen.
Diese Konfigdatei ist die TDPO.OPT-Datei die man bie TDPOCONFIG mit -tdpo_optfile angibt.

http://www-01.ibm.com/support/docview.wss?uid=swg21504500

$> export DSM_CONFIG=<tdpo.opt>
$> dsmc
ANS1036S The option 'ERRORLOGRED' or the value supplied for it is not valid. It was found in options file '/opt/tivoli/tsm/client/ba/bin/dsm.sys'
         at line number: 251
         The complete entry: '   ERRORLOGRED          30 D'

ANS1038S Invalid option specified


FUNKTIONIERT!

Der mit dem normalen Auge praktisch nicht zu findende Schreibfehler (aus ERRORLOGRET mach ERRORLOGRED) wird im Klartext angezeigt.