Ich habe Probleme beim Verbinden mit einer Oracle-Datenbank von Powershell mit der Oracle.ManagedDataAccess.dll
.Powershell-Verbindung zur Oracle-Datenbank
Ich folgte this Tutorial auf Technet und endete mit diesem Code auf:
add-type -path "C:\oracle\product\12.1.0\client_1\ODP.NET\managed\common\Oracle.ManagedDataAccess.dll"
$username = "XXXX"
$password = "XXXX"
$data_source = "(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=XXXX)(PORT=XXXX))(CONNECT_DATA = (SERVER=dedicated)(SERVICE_NAME=XXXX)))"
$connection_string = "User Id=$username;Password=$password;Data Source=$data_source"
try{
$con = New-Object Oracle.ManagedDataAccess.Client.OracleConnection($connection_string)
$con.Open()
} catch {
Write-Error (“Can’t open connection: {0}`n{1}” -f `
$con.ConnectionString, $_.Exception.ToString())
} finally{
if ($con.State -eq ‘Open’) { $con.close() }
}
Leider diesen Fehler Ich erhalte:
C:\Users\XXXX\Desktop\oracle_test.ps1 : Can’t open connection: User Id=XXXX;Password=XXXX;Data Source=(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=XXXX)(PORT=XXXX))(CONNECT_DATA =
(SERVER=dedicated)(SERVICE_NAME=XXXX)))
System.Management.Automation.MethodInvocationException: Exception calling "Open" with "0" argument(s): "The type initializer for 'Oracle.ManagedDataAccess.Types.TimeStamp' threw an exception." --->
System.TypeInitializationException: The type initializer for 'Oracle.ManagedDataAccess.Types.TimeStamp' threw an exception. ---> System.Runtime.Serialization.SerializationException: Unable to find assembly
'Oracle.ManagedDataAccess, Version=4.121.2.0, Culture=neutral, PublicKeyToken=XXXX'.
at OracleInternal.Common.OracleTimeZone.GetInstance()
at Oracle.ManagedDataAccess.Types.TimeStamp..cctor()
--- End of inner exception stack trace ---
at OracleInternal.ConnectionPool.PoolManager`3.CreateNewPR(Int32 reqCount, Boolean bForPoolPopulation, ConnectionString csWithDiffOrNewPwd, String instanceName)
at OracleInternal.ConnectionPool.PoolManager`3.Get(ConnectionString csWithDiffOrNewPwd, Boolean bGetForApp, String affinityInstanceName, Boolean bForceMatch)
at OracleInternal.ConnectionPool.OraclePoolManager.Get(ConnectionString csWithNewPassword, Boolean bGetForApp, String affinityInstanceName, Boolean bForceMatch)
at OracleInternal.ConnectionPool.OracleConnectionDispenser`3.Get(ConnectionString cs, PM conPM, ConnectionString pmCS, SecureString securedPassword, SecureString securedProxyPassword)
at Oracle.ManagedDataAccess.Client.OracleConnection.Open()
at CallSite.Target(Closure , CallSite , Object)
--- End of inner exception stack trace ---
at System.Management.Automation.ExceptionHandlingOps.CheckActionPreference(FunctionContext funcContext, Exception exception)
at System.Management.Automation.Interpreter.ActionCallInstruction`2.Run(InterpretedFrame frame)
at System.Management.Automation.Interpreter.EnterTryCatchFinallyInstruction.Run(InterpretedFrame frame)
at System.Management.Automation.Interpreter.EnterTryCatchFinallyInstruction.Run(InterpretedFrame frame)
+ CategoryInfo : NotSpecified: (:) [Write-Error], WriteErrorException
+ FullyQualifiedErrorId : Microsoft.PowerShell.Commands.WriteErrorException,oracle_test.ps1
- ich überprüft haben, dass die Verbindungszeichenfolge ist Korrekt (funktioniert für
tnsping
) - Der Benutzername und das Passwort sind ebenfalls korrekt
- I ersetzt alles, was mit XXXX
- der Datenbankversion ist nicht bekannt gegeben werden soll: Oracle Datenbank 12c Veröffentlichung 12.1.0.1.0
- Der Fehler ist das gleiche für den 32-Bit und 64- Bit Powershell Fällen
- Vor dem ersten Lauf der
Oracle.ManagedDataAccess.dll
nicht geladen wird, nach dem Lauf es bleibt geladen, bis ich, dass Shell schließen
Leider bin ich weder ein Oracle noch ein Powershell-Experte (ich ziehe MySQL und Python), ther Bevor ich irgendwelche Ideen und/oder Einblicke schätze, die Sie haben könnten.
Wenn Sie weitere Informationen benötigen, zögern Sie bitte nicht zu fragen.
Vielen Dank im Voraus!
[Gibt dieser stackoverflow Hilfe?] (Https://Stackoverflow.com/a/32924359/5039142) Ich glaube nicht, dass es ein Fehler mit Ihrem Code ist; wahrscheinlich die Umwelt oder eine Voraussetzung. – gms0ulman
Was ist die Version Ihrer Oracle-Datenbank? –
@WernfriedDomscheit Ich habe es zur Liste hinzugefügt - 12c Release 12.1.0.1.0 @ gms0ulman Das erwähnte 'gacutil' scheint nicht auf meinem System installiert zu sein - ich werde es untersuchen. – Maurice