Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Как подключиться к базе oracle? / 19 сообщений из 19, страница 1 из 1
29.05.2017, 05:45
    #39461185
azsx
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как подключиться к базе oracle?
Хочу подключиться к БД oracle от php и выполнить какой нибудь select тестово. Никак не получается. У меня php 7.1 32 бита. Винда вин 7 64 бита.
Работаю уже от 2 направлений:
1. extension=php_oci8_12c.dll
2. extension=php_pdo_oci.dll
--------------------------

Код: php
1.
2.
3.
4.
5.
6.
7.
8.
if ($c=OCILogon("test", "test", "192.168.0.10(это LAN_IP):1521/sales:SERVICE_NAME")) {
  echo "Successfully connected to Oracle.\n";
  OCILogoff($c);
} else {
  $err = OCIError();
  echo "Oracle Connect Error " . $err[text];
}
var_dump($c); // Проверка



PHP Warning: ocilogon(): OCIEnvNlsCreate() failed. There is something wrong wit
h your system - please check that PATH includes the directory with Oracle Instan
t Client libraries in C:\php\1.php on line 3

Warning: ocilogon(): OCIEnvNlsCreate() failed. There is something wrong with you
r system - please check that PATH includes the directory with Oracle Instant Cli
ent libraries in C:\php\1.php on line 3
PHP Notice: Use of undefined constant text - assumed 'text' in C:\php\1.php on
line 8

Notice: Use of undefined constant text - assumed 'text' in C:\php\1.php on line
8
Oracle Connect Error bool(false)

не работает. Переменная есть. Какие параметры я напутал?

--------------------------

Код:

Код: php
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
$tns = "
(DESCRIPTION =
    (ADDRESS_LIST =
	  (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.0.10)(PORT = 1521))
    )
    (CONNECT_DATA =
	  (SERVICE_NAME = SERVICE_NAME)
    )
  )
	   ";
$db_username = "test";
$db_password = "test";
try{
    $conn = new PDO("oci:dbname=".$tns,$db_username,$db_password);
}catch(PDOException $e){
    echo ($e->getMessage());
}
var_dump($conn); // Проверка




выводит ошибку
SQLSTATE[]: pdo_oci_handle_factory: <<Unknown>> (ext\pdo_oci\oci_driver.c:640)P
P Notice: Undefined variable: conn in C:\php\1.php on line 31

Notice: Undefined variable: conn in C:\php\1.php on line 31
NULL

Переменной нет!

Выдержки из phpinfo
PDO

PDO support => enabled
PDO drivers => oci

PDO_OCI

PDO Driver for OCI 8 and later => enabled


--------------------------

У меня:

логин, пароль test test

хост 192.168.0.10 в локальной сети, порт 1521

имя BDTEST

SERVICE_NAME bdtest

Все эти настройки я взял с работающего на этом компьютере sql navigator. То есть с этого компьютера я через программу могу подключиться к БД, а из скрипта пхп не могу.

Скажите, пожалуйста, как написать правильно?
...
Рейтинг: 0 / 0
29.05.2017, 05:58
    #39461186
dmdmdm
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как подключиться к базе oracle?
Попробуйте TNS попроще задать. Так, как в sqlplus работает.

Код: powershell
1.
2.
sqlplus system/qqq@//localhost/DB
sqlplus system/qqq@localhost:1521/DB
...
Рейтинг: 0 / 0
29.05.2017, 07:24
    #39461195
Тролин
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как подключиться к базе oracle?
azsx,

он же тебе пишет, что поставь еще oracle client
...
Рейтинг: 0 / 0
29.05.2017, 07:53
    #39461204
azsx
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как подключиться к базе oracle?
Тролин я скачал и скопирорвал все файлы в php из instantclient-basic-nt-12.2.0.1.0. Работает именно с 32 битной версией, так как у меня php 32 бита. Без этой библиотеки oracle просто не подключался.
dmdmdm пока не могу сообразить как это попроще.
SERVICE_NAME == system?
Через час попробую.
...
Рейтинг: 0 / 0
29.05.2017, 08:22
    #39461215
MaximaXXL
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как подключиться к базе oracle?
azsx,

странно, у тебя SERVICE_NAME bdtest только в коментариях

а в коде
(CONNECT_DATA =
(SERVICE_NAME = SERVICE_NAME)
...
Рейтинг: 0 / 0
29.05.2017, 08:59
    #39461241
azsx
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как подключиться к базе oracle?
На самом деле не верно записал. В скрипте
SERVICE_NAME = bdtest
...
Рейтинг: 0 / 0
29.05.2017, 09:30
    #39461266
MaximaXXL
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как подключиться к базе oracle?
azsx,

и тут тоже неправильно переписал?
192.168.0.10(это LAN_IP):1521/sales:SERVICE_NAME

тогда я хз как искать ошибку если все переписано не так .... хоть в ошибке не ошибся?
...
Рейтинг: 0 / 0
29.05.2017, 13:39
    #39461522
Oleg M.Ivanov
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как подключиться к базе oracle?
azsx ,

Часто помогает прямо в коде PHP прописать ENV типа такого(естественно, там свои пути надо прописать):

Код: php
1.
2.
putenv("LD_LIBRARY_PATH=/usr/lib/oracle/11.2/client64/lib");
putenv("ORACLE_HOME=/usr/lib/oracle/11.2/client64");
...
Рейтинг: 0 / 0
29.05.2017, 13:48
    #39461538
Oleg M.Ivanov
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как подключиться к базе oracle?
azsx , вот тестовый код, первым делом им проверяю коннект к базе на PHP:

Код: php
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
<?php
putenv("LD_LIBRARY_PATH=/usr/lib/oracle/11.2/client64/lib");
putenv("ORACLE_HOME=/usr/lib/oracle/11.2/client64");

$orauser="test";
$orapass="testpasswd";
$oraname="orcl";
?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>Untitled Document</title>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251">
</head>
<body>
<?
    $conn=ocilogon($orauser,$orapass,$oraname, 'CL8MSWIN1251' );
    $sql="select sysdate from dual";	
    $stmt = OCIParse($conn,"$sql");


    OCIExecute($stmt);
    while ( OCIFetch($stmt) ) {
        print "<br>";   
        $ncols = OCINumCols($stmt);
        for ( $i = 1; $i <= $ncols; $i++ ) {
            $column_name  = OCIColumnName($stmt,$i);
            $column_value = OCIResult($stmt,$i);
            print $column_name . ': ' . $column_value . "<br>";
        }
        print "<br>";
    }
    OCIFreeStatement($stmt);  
    OCILogoff($conn);   
?>
</body>
</html>
...
Рейтинг: 0 / 0
30.05.2017, 06:46
    #39461952
azsx
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как подключиться к базе oracle?
может так кто-нибудь поможет. http://www.sql.ru/forum/1261524-a/nauchit-menya-podkluchatsya-k-bd-oracle-i-vypolnyat-zaprosy
Не получается, не могу понять что не так.
Даже понять не могу, лучше мне oci добивать, который ни шатко ни валко работает, только параметры не верные или pdo, который не работает совсем.
...
Рейтинг: 0 / 0
30.05.2017, 10:48
    #39462077
mini.weblab
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как подключиться к базе oracle?
1) установите клиент
2) поставьте Oracle SQL Developer (GUI+IDE for DB)
3) пробуйте подключиться через SQL Developer (это поможет выяснить, есть ли проблема с подключением к самой базе)
...
Рейтинг: 0 / 0
30.05.2017, 14:00
    #39462306
azsx
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как подключиться к базе oracle?
mini.weblab спасибо. Я уже писал, что через sql navigator у меня доступ есть.
---
автор1) установите клиент
Я не знаю, что такое клиент. Поэтому я не могу вам ответить установлен он у меня или нет.
автор2) поставьте Oracle SQL Developer (GUI+IDE for DB)
SQL Developer у меня уже стоял, но никогда не запускался. При запуске он попросил установить j2se - я установил и указал SQL Developer'у где j2se находиться. Запустился
автор3) пробуйте подключиться через SQL Developer (это поможет выяснить, есть ли проблема с подключением к самой базе)
Я подключился к свой базе6
user name - TEST
password - TEST
role - default
connection type - basic
галочек нет
hostname - 192.168.0.10
port - 1521
Service name - testSN
...
Рейтинг: 0 / 0
30.05.2017, 14:02
    #39462310
azsx
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как подключиться к базе oracle?
Забыл дописать, при этом ip моего компьютера 192.168.0.5 -- то есть база в локальной сети!
...
Рейтинг: 0 / 0
30.05.2017, 14:03
    #39462313
-21-
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как подключиться к базе oracle?
azsx,

Скоро сутки будут, как Вы подключаетесь.
...
Рейтинг: 0 / 0
30.05.2017, 14:05
    #39462316
123йй
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как подключиться к базе oracle?
azsxService name - testSN
а что было выше ?
...
Рейтинг: 0 / 0
30.05.2017, 15:16
    #39462400
azsx
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как подключиться к базе oracle?
Выше был sid. Так как галочку я с него снял, он не активен.
...
Рейтинг: 0 / 0
30.05.2017, 17:43
    #39462585
MaximaXXL
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как подключиться к базе oracle?
azsx,

Ты бы определился с правильным SERVICE_NAME или на SID перешел, но тоже правильный.
А то я уже 4-й вариант от тебя вижу

1-й sales:SERVICE_NAME
2-й SERVICE_NAME = SERVICE_NAME
3-й SERVICE_NAME = bdtest
4-й Service name - testSN
...
Рейтинг: 0 / 0
30.05.2017, 18:22
    #39462618
azsx
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как подключиться к базе oracle?
авторТы бы определился с правильным SERVICE_NAME или на SID перешел, но тоже правильный.
MaximaXXL я не понимаю вопроса. Как я понимаю с какой то версии оракол стало возможно его подключать как службу, именно так она у меня и подключена.
То есть у меня Service name - testSN. testSN -- это не настоящее имя службы, но где то рядом, скажем так.
зы
Попробовал по инструкции https://netbeans.org/kb/docs/ide/oracle-db_ru.html подключится к БД, всё хорошо, подключился. Теперь бы ещё разобраться как select сделать из консоли. Но это уже джава, а не php.
...
Рейтинг: 0 / 0
30.05.2017, 18:48
    #39462629
MaximaXXL
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как подключиться к базе oracle?
azsx,

Я далек от PHP но если ты используешь Easy Connect то строка должна выглядеть как-то так:
Код: plsql
1.
2.
3.
$c=OCILogon('test', 'test', '192.168.0.10:1521/testSN')
или может так
$c=OCILogon('test', 'test', '//192.168.0.10:1521/testSN')



если SERVICE_NAME = testSN но ты его затер на картинке, посему перепиши с твоего удачного соединения

если через tnsnames.ora в котором прописано
YourDB=
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.0.10)(PORT = 1521))
)
(CONNECT_DATA =
(SERVICE_NAME = testSN)
)
)

то так
Код: plsql
1.
$c=OCILogon('test', 'test', 'YourDB')
...
Рейтинг: 0 / 0
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Как подключиться к базе oracle? / 19 сообщений из 19, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]