powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Как подключиться к базе oracle?
19 сообщений из 19, страница 1 из 1
Как подключиться к базе oracle?
    #39461185
azsx
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Хочу подключиться к БД 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
Как подключиться к базе oracle?
    #39461186
dmdmdm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Попробуйте TNS попроще задать. Так, как в sqlplus работает.

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

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

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

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

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

тогда я хз как искать ошибку если все переписано не так .... хоть в ошибке не ошибся?
...
Рейтинг: 0 / 0
Как подключиться к базе oracle?
    #39461522
Oleg M.Ivanov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
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
Как подключиться к базе oracle?
    #39461538
Oleg M.Ivanov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
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
Как подключиться к базе oracle?
    #39461952
azsx
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
может так кто-нибудь поможет. http://www.sql.ru/forum/1261524-a/nauchit-menya-podkluchatsya-k-bd-oracle-i-vypolnyat-zaprosy
Не получается, не могу понять что не так.
Даже понять не могу, лучше мне oci добивать, который ни шатко ни валко работает, только параметры не верные или pdo, который не работает совсем.
...
Рейтинг: 0 / 0
Как подключиться к базе oracle?
    #39462077
mini.weblab
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
1) установите клиент
2) поставьте Oracle SQL Developer (GUI+IDE for DB)
3) пробуйте подключиться через SQL Developer (это поможет выяснить, есть ли проблема с подключением к самой базе)
...
Рейтинг: 0 / 0
Как подключиться к базе oracle?
    #39462306
azsx
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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
Как подключиться к базе oracle?
    #39462310
azsx
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Забыл дописать, при этом ip моего компьютера 192.168.0.5 -- то есть база в локальной сети!
...
Рейтинг: 0 / 0
Как подключиться к базе oracle?
    #39462313
-21-
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
azsx,

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

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

1-й sales:SERVICE_NAME
2-й SERVICE_NAME = SERVICE_NAME
3-й SERVICE_NAME = bdtest
4-й Service name - testSN
...
Рейтинг: 0 / 0
Как подключиться к базе oracle?
    #39462618
azsx
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторТы бы определился с правильным SERVICE_NAME или на SID перешел, но тоже правильный.
MaximaXXL я не понимаю вопроса. Как я понимаю с какой то версии оракол стало возможно его подключать как службу, именно так она у меня и подключена.
То есть у меня Service name - testSN. testSN -- это не настоящее имя службы, но где то рядом, скажем так.
зы
Попробовал по инструкции https://netbeans.org/kb/docs/ide/oracle-db_ru.html подключится к БД, всё хорошо, подключился. Теперь бы ещё разобраться как select сделать из консоли. Но это уже джава, а не php.
...
Рейтинг: 0 / 0
Как подключиться к базе oracle?
    #39462629
MaximaXXL
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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
19 сообщений из 19, страница 1 из 1
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Как подключиться к базе oracle?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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