Jednoduché pripojenie k SQL Oracle 11g (oci driver)

Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
Danndy
Člen | 35
+
0
-

Zdravím vás,

Potreboval by som poradiť, ako sa pripojiť cez NetteDatabase/Dibi na Oracle databázu pomocou oci driver-u. Vôbec si neviem dať rady, ako má vyzerať confi-g pre takéto pripojenie.

Nenašiel by sa tu niekde presnejší návod čo napísať do config.neon? Bol by som veľmi vďačný.

(oci driver mám na localhoste rozbehaný a funkčný).

Ďakujem.

CZechBoY
Člen | 3608
+
+1
-

já používám třeba takhle

database:
	dsn: 'oracle:(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=abc.server.cz)(PORT=1521)))(CONNECT_DATA=(SID=databaze))(CHARSET=UTF8))'
	user: uzivatel
	password: heslo

viz https://docs.oracle.com/…G/naming.htm#…

Potom používám https://github.com/taq/pdooci, které použiju v Nette/Database a pak už je to vesměs stejné.
Ještě teda jsem si upravil OciDriver aby vůbec nedělal query na strukturu.

Editoval CZechBoY (2. 12. 2016 20:48)

Danndy
Člen | 35
+
0
-

Dik z odpoveď. Niečo taketo som potreboval. U mňa však ešte pýta TNS. Vedel by si mi povedať ako ho správne zakomponovať do toho connect stringu?

Danndy
Člen | 35
+
0
-

@CZechBoY

nastavil som to podla tovojho con. stringu takto:

dsn: 'oci:(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=host.sk)(PORT=1521))(CONNECT_DATA=(SID=orcl)))'

Ale vhadzuje mi chybu:

SQLSTATE[HY000]: pdo_oci_handle_factory: ORA-12560: TNS:protocol adapter error (ext\pdo_oci\oci_driver.c:635)

Nevieš náhodou kde by mohol byť problém?

CZechBoY
Člen | 3608
+
0
-

TNS? To je ten název souboru, který to potom použije?
http://cz.php.net/oci_connect#…

Danndy
Člen | 35
+
0
-

@CZechBoY

Keď to skúšam ako je to v návode čo si poslal:

$cs = "(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=host.sk)(PORT=1521))(CONNECT_DATA=(SID=orcl)))";
$conn = oci_connect('user', 'pass', $cs);

tak ma bez problémov pripojí. Ale cez nette mi hádže hentú chybu. Asi je nejaký problém v tom pdo. Ale netuším ako to poriešť :/

CZechBoY
Člen | 3608
+
0
-

Mně se právě nepodařilo přes klasický pdo připojit tak jsem musel sáhnout po emulátoru pdo.
Potom v Nette\Database\Connection::connect jsem si upravil vytváření PDO instance

if (strpos($this->params[0], 'oci:') === 0) {
	$this->pdo = new \PDOOCI\PDO($this->params[0], $this->params[1], $this->params[2], $this->options);
} else {
	$this->pdo = new \PDO($this->params[0], $this->params[1], $this->params[2], $this->options);
}
Danndy
Člen | 35
+
0
-

@CZechBoY

Môžem vedieť odkial si stiahol to pdo?

Danndy
Člen | 35
+
0
-

@CZechBoY

nakoniec som to vyriesil connect stringom:

oci:dbname=(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=host.sk)(PORT=1521))(CONNECT_DATA=(SID=orcl)))

chýbalo mu tam to „dbname“.

Dik za spoluprácu.

CZechBoY
Člen | 3608
+
0
-

Aha. A pak to jede s obyc \PDO?