Oracle 12c op Windows, soms een verrassing

Oracle 12 is al een tijd beschikbaar. Nu ook release 12.2 uit is zullen we de volgende situatie steeds meer tegenkomen. 

In de ‘kleinere’ omgevingen wordt de Oracle database vaak op Microsoft Windows gedraaid. Oracle heeft in Oracle 12 een fors aantal wijzigingen op het gebied van security doorgevoerd. Deze hebben soms gevolgen voor dagelijkse activiteiten. Laten we dit aan de hand van een praktijk voorbeeld beschrijven.

De DBA ontvangt een datapump dumpfile van een andere partij en moet deze in een Oracle 12c database importeren. Door de file te plaatsten in een directory die in de database bekend is en de juiste rechten aan de database gebruiker toe te kennen kan de dumpfile ontsloten worden. Dit is de standaard datapump werkwijze.

SQL>select  directory_name, directory_path from dba_directories; 
DIRECTORY_NAME DIRECTORY_PATH
--------------------------------------------------------------------------------
INPUT C:\TEMP
……

Het commando impdp moet nu de rest doen. In dit geval:

C:\TEMP>impdp directory=INPUT  dumpfile=Data.dmp remap_tablespace=appl_dat:users 

Import: Release 12.2.0.1.0 - Production on Mon Oct 9 13:31:13 2017
Copyright (c) 1982, 2017, Oracle and/or its affiliates. All rights reserved.

Username: system@mydb
Password:

Dat levert de volgende foutmelding op

Connected to: Oracle Database 12c Enterprise Edition Release 12.2.0.1.0 - 64bit Production
ORA-39001: invalid argument value
ORA-39000: bad dump file specification
ORA-31640: unable to open dump file "C:\TEMP\Data.dmp" for read
ORA-27041: unable to open file
OSD-04002: unable to open file

De eerste 2 fouten op de errorstack doen het ergste vermoeden, en zouden kunnen aanmoedigen contact op te nemen met de leverancier van de dumpfile met het vermoeden dat deze corrupt is. Niets is echter minder waar. De onderste vier fouten beschrijven de echte fout.

Als we de dump file bekijken 

zien we dat er slechts een beperkte hoeveelheid accounts toegang hebben tot de file. Omdat we tot en met Oracle 11 de database service onder ‘Local System’ lieten draaien was dat nooit een probleem. Nu moet tijdens de installatie van Oracle expliciet een account gekozen worden waaronder de Oracle Service gaat draaien. De manier verschilt licht tussen Release 1 en 2.

Het gevolg hiervan is dat de Oracle service niet ‘zo maar’ bij files kan komen en dat bewust omgegaan moet worden met de file systeem privileges. Door nu de user oracle rechten te geven op deze file:

Gaat de import succesvol verder……:

C:\TEMP>impdp directory=INPUT  dumpfile=Data.dmp remap_tablespace=appl_dat:users 
Import: Release 12.2.0.1.0 - Production on Mon Oct 9 14:13:32 2017
Copyright (c) 1982, 2017, Oracle and/or its affiliates. All rights reserved.

Username: system@mydb
Password:

Connected to: Oracle Database 12c Enterprise Edition Release 12.2.0.1.0 - 64bit Production

Master table "SYSTEM"."SYS_IMPORT_FULL_01" successfully loaded/unloaded
Starting "SYSTEM"."SYS_IMPORT_FULL_01": system/******** directory=INPUT dumpfile=Data.dmp
remap_tablespace=fxappl_dat:users remap_tablespace=fxappl_idx:users Processing object type SCHEMA_EXPORT/USER
----

Het is dus belangrijk te beseffen dat vanaf Oracle 12 op Microsoft Windows in een Oracle omgeving de ownership en rechten op het filesysteem een issue is geworden. In de Unix/Linux omgevingen is op dit gebied niets veranderd.

Scroll to Top