PowerShell ORA-12514: TNS: прослушиватель в настоящее время не знает о службе, запрошенной в дескрипторе подключения.

У меня проблема со скриптом PowerShell, который я запускаю. Этот сценарий использует ODAC (компоненты доступа к данным оракула) для подключения к базе данных оракула и получения некоторых значений.

Недавно мне пришлось изменить номер порта, который я использую в sql-разработчике для подключения к базе данных.

Однако, когда я пытался изменить этот номер порта в своем сценарии powershell, я получаю сообщение об ошибке

ORA-12514: TNS:прослушиватель в настоящее время не знает об услуге, запрошенной в дескрипторе соединения

Любые идеи относительно того, почему это происходит?


person btecndcomp    schedule 11.02.2016    source источник
comment
Каким провайдером из ODAC вы пользовались? (доставляет несколько)   -  person Wernfried Domscheit    schedule 11.02.2016
comment
привет Венфрид. Это ODAC 11.2 64 бит.   -  person btecndcomp    schedule 11.02.2016
comment
Какой провайдер/драйвер? ODBC, OLE DB, ODP.NET или управляемый драйвер ODP.NET?   -  person Wernfried Domscheit    schedule 11.02.2016
comment
привет Венфрид. Это ODP.Net. Я создаю объект .net в powershell   -  person btecndcomp    schedule 11.02.2016


Ответы (1)


Я использую следующее:

Я устанавливаю ODAC1120320Xcopy_x64.zip в C:\oracle (см. новые версии здесь)

Вот фрагмент ExecuteReader(), который вы также можете использовать ExecuteNonQuery()

# Load Oracle assembly
Add-Type -Path "C:\oracle\odp.net\bin\4\Oracle.DataAccess.dll"

$compConStr = "Data Source=(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=10.213.6.15)(PORT=1521)))(CONNECT_DATA=(SERVER=DEDICATED)(SERVICE_NAME=OURSERVICENAME)));User Id=User;Password=Pass;Pooling=False"
# Establish the connexion
$oraConn= New-Object Oracle.DataAccess.Client.OracleConnection($compConStr)
$oraConn.Open()

$sql1Tpl = @"
  SELECT masi.yyyy as TYPE_ID FROM xxxx masi
  WHERE masi.serno = '{0}'
"@

$sql1 = $sql1Tpl -replace "blabla"

# Exécution
$command1 = New-Object Oracle.DataAccess.Client.OracleCommand($sql1,$oraConn)
$command1.CommandTimeout = 1500
$reader1 =$command1.ExecuteReader()

$clocationID = $null
if ($reader1.HasRows -eq $true)
{
  $read =$reader1.read()
  if ($read -eq $true)
  {
    $clocationID = $reader1["C_LOCATION_ID"]
  }
}
# Close the reader
$reader1.close()

# Disconect
$oraConn.Close()
person JPBlanc    schedule 11.02.2016