dbox3
Goto Top

Oracle DUMP auf NAS

Hallo,
ich versuche gerade die Sicherung meiner Oracle-DB (Version 11.2g) unter Windows Server 2019 über ein Script auf einem NAS einzurichten. Bisher lief das Ganze auf dem Umweg über lokale Festplatte und danach xcopy auf den NAS-Share. Offenbar fehlt es dem expdp-Prozess an Zugriffsrechten auf den NAS. Das Script läuft unter dem Administrator Account. Entsprechende Rechte auf den Backup-Ordner sind gesetzt und bis auf den expdp laufen alle Befehle fehlerfrei einschl. Erstellung und Ausführung einzelner SQLPLUS-Scripte.
Hier das Script:


set logdatei=\\nas\backup\MD_DMP_Sicherungslog.txt

REM Wochentag ermitteln. Geht nicht mit CMD-Befehlen, daher VBS.
echo Wscript.Echo WeekdayName(Weekday(now,0),false,0) > %~n0.vbs
FOR /F "usebackq" %%a IN (`cscript.exe %~n0.vbs //nologo`) DO set weekday=%%a
del %~n0.vbs

set BackupFolder=\\nas
echo dummy > dummy.txt
xcopy dummy.txt %Backupfolder% /Y

ping -n 5 localhost
echo %date% %time% MD Sicherung > %logdatei%
echo %date% %time% Beginn der Sicherung >> %logdatei%

rem -- bilde restrict.sql
echo shutdown immediate > %BackupFolder%\Backup\restrict.sql
echo STARTUP RESTRICT >> %BackupFolder%\Backup\restrict.sql
echo exit >> %BackupFolder%\Backup\restrict.sql
echo %date% %time% restrict.sql gebildet >> %logdatei%

rem -- bilde restart.sql
Echo shutdown immediate > %BackupFolder%\Backup\restart.sql
Echo startup >> %BackupFolder%\Backup\restart.sql
Echo alter system disable restricted session; >> %BackupFolder%\Backup\restart.sql
echo exit >> %BackupFolder%\Backup\restart.sql
echo %date% %time% restart.sql gebildet >> %logdatei%

rem -- bilde unrestrict.sql
Echo alter system disable restricted session; > %BackupFolder%\Backup\unrestrict.sql
echo exit >> %BackupFolder%\Backup\unrestrict.sql
echo %date% %time% unrestrict.sql gebildet >> %logdatei%

rem -- bilde down.sql
Echo alter system disable restricted session; > %BackupFolder%\Backup\down.sql
Echo shutdown immediate >> %BackupFolder%\Backup\down.sql
echo exit >> %BackupFolder%\Backup\down.sql
echo %date% %time% down.sql gebildet >> %logdatei%

rem -- END SQL-Scripts


REM * Anlegen des Verzeichnis Sicherung falls nicht vorhanden *
echo %date% %time% bereite Sicherungsverzeichnis vor >> %logdatei%
echo dummy > dummy.txt
xcopy dummy.txt %BackupFolder% /Y
echo %date% %time% dummy.txt nach %BackupFolder% kopiert >> %logdatei%

REM *setzen des Exportverzeichnisses für DUMP *
echo CREATE or REPLACE DIRECTORY exp_dir AS '%BackupFolder%\Sicherung\%weekday%'; > %BackupFolder%\Backup\sic.sql
echo CREATE or REPLACE DIRECTORY expdp_dir AS '%BackupFolder%\Sicherung\%weekday%'; >> %BackupFolder%\Backup\sic.sql
echo GRANT READ, WRITE ON DIRECTORY exp_dir TO mduser; >> %BackupFolder%\Backup\sic.sql
echo GRANT READ, WRITE ON DIRECTORY expdp_dir TO mduser; >> %BackupFolder%\Backup\sic.sql
echo exit >> %BackupFolder%\Backup\sic.sql
echo %date% %time% Scripte gebildet >> %logdatei%

REM Ausführung der sic.sql
sqlplus sys/ as sysdba @%BackupFolder%\Backup\sic.sql
echo %date% %time% sic.sql ausgeführt (Export-Verzeichnisse gebildet) >> %logdatei%

REM
*Datenexport (DUMP) *
echo %date% %time% schalte DB in restrict mode >> %logdatei%

REM Ausführung restrict.sql
sqlplus sys/
as sysdba @%BackupFolder%\backup\restrict.sql
echo %date% %time% DB in restrict mode geschaltet >> %logdatei%
echo %date% %time% initialisiere Datenoutput aus ORACLEBASIS (EXPORT) >> %logdatei%

REM DMP-File erzeugen
expdp system/ directory=expdp_dir dumpfile=MD.dmp logfile=MD.log FULL=YES reuse_dumpfiles=y

REM
*Ausgabe des DUMPLogs nach MSSicherungslog.txt *
echo %date% %time% Datenoutput aus ORACLEBASIS (EXPORT) - Beendet >> %logdatei%

REM Ausführung unrestricted.sql
sqlplus sys/
as sysdba @%BackupFolder%\Backup\unrestrict.sql
echo %date% %time% DB restrict mode OFF >> %logdatei%
echo %date% %time% beende Datenbank und Stoppe Dienste >> %logdatei%

REM Oracle beenden
sqlplus sys/ as sysdba @%BackupFolder%\Backup\down.sql
net stop OracleServiceMD
echo %date% %time% Oracle-Dienste beendet.(down.sql) >> %logdatei%

REM Restart Oracle
sqlplus sys/
as sysdba @%BackupFolder%\Backup\restart.sql
echo %date% %time% Restart der Datenbank nach Dienststart ausgeführt >> %logdatei%
echo %date% %time% Dienste gestartet. >> %logdatei%

exit

Und hier der Fehler:

Angemeldet bei: Oracle Database 11g Release 11.2.0.1.0 - 64bit Production
ORA-39002: Ung³ltiger Vorgang
ORA-39070: Log-Datei kann nicht ge÷ffnet werden.
ORA-29283: Ung³ltiger Dateivorgang
ORA-06512: in "SYS.UTL_FILE", Zeile 536
ORA-29283: Ung³ltiger Dateivorgang

Kennt jemand eine Lösung?
Danke

Content-ID: 1213267851

Url: https://administrator.de/contentid/1213267851

Ausgedruckt am: 05.11.2024 um 02:11 Uhr

Inf1d3l
Lösung Inf1d3l 31.08.2021 um 11:03:00 Uhr
Goto Top
Soweit ich weiß, geht das nicht mit expdp. Du müsstest das NAS als iSCSI-Laufwerk mounten, dann geht das.
dbox3
dbox3 31.08.2021 um 11:12:56 Uhr
Goto Top
Das ist zwar nicht der optimalste Weg, geht aber auch. Danke!
emeriks
emeriks 31.08.2021 um 11:25:05 Uhr
Goto Top
bzw. Du könntest versuchen, das über eine Symbolik Link umzuleiten.
Inf1d3l
Inf1d3l 31.08.2021 um 11:59:29 Uhr
Goto Top
Würde mich auch interessieren, ob es mit symlink funktioniert. expdp läuft ja als lokaler Dienst, das Ziel muss ein Laufwerk sein, das systemweit verfügbar ist.
emeriks
emeriks 31.08.2021 um 13:07:24 Uhr
Goto Top
Was meinst Du mit "systemweit"? Läuft der Export nun unter dem o.g. Konto oder wird er mit diesem Konto nur ausgelöst und läuft dann unter dem (einem) System-Konto? Falls letzteres, dann könnte auch einfach das die Ursache sein. Dann müsste nicht nur der auslösende Administrator Schreibrechte auf dem NAS-Pfad haben sondern auch das betreffende System-Konto.
Inf1d3l
Inf1d3l 31.08.2021 aktualisiert um 14:43:40 Uhr
Goto Top
Der User stößt es an, der Export selber läuft aber als lokaler Dienst. Bei iSCSI kein Problem, da ein Systemlaufwerk. Hängt anscheinend aber auch von der Installation ab: https://docs.oracle.com/en/database/oracle/oracle-database/18/ntqrf/abou ...

Unter Linux hätte man das Problem nicht face-smile

Wie fügt man Local System auf einem NAS hinzu?
emeriks
emeriks 31.08.2021 um 15:16:22 Uhr
Goto Top
Zitat von @Inf1d3l:
Wie fügt man Local System auf einem NAS hinzu?
Wenn NAS und Windows Computer in einer AD-Domäne sind, dann muss man nur dem Computerkonto des Windows Computers die entsprechenden Rechte erteilen.
dbox3
dbox3 02.09.2021 um 14:40:38 Uhr
Goto Top
dann muss man nur dem Computerkonto des Windows Computers die entsprechenden Rechte erteilen.

Das habe ich auch ausprobiert, funktioniert leider auch nicht. Dafür mit dem als iSCSI eingebundenen Laufwerk alles i.O.
Danke für die Anregungen face-smile