A minap felmerült a kér(d)és, hogy jó lenne Oracle adatbázisból "belátni" egy MS-SQL-be közvetlenül, nem pedig scriptekkel, ODBC-n pakolgatni fájlokon keresztül az adatokat.
Scenario egyszerűnek tűnt: Linux-ről odbc működik, adott user belát az MSSQL-be, megy a lekérdezés, scriptelve szépen be lehet tölteni adatokat.
Linux még CentOS7, rajta friss unixODBC-2.3.11-1.rh.x86_64 illetve msodbcsql17-17.10.5.1-1.x86_64 is helyet foglal, ODBC-n mindenből szépen elérhető a DSN=SQLSRV1 kiszolgáló, de a DB-link nem akarja az igazságot: tcpdumppal látszik, hogy még oda sem fordul az SQL-serverhez.
Itt tartok:
#hs/admin/initDEMMO.ora
HS_FDS_CONNECT_INFO = SQLSRV1
HS_FDS_TRACE_LEVEL = Debug
HS_FDS_SHAREABLE_NAME = /usr/lib64/libodbc.so
#network/admin/tnsnames.ora - részlet
DEMMO =
( DESCRIPTION =
( ADDRESS = ( PROTOCOL = TCP )
( HOST = orcl.local)
( PORT = 1545 )
)
( CONNECT_DATA =
( SID = DEMMO )
)
( HS = OK )
)
#network/admin/listener.ora - részlet
DEMMO =
(ADDRESS = (PROTOCOL = TCP)(HOST = orcl.local)(PORT = 1545))
SID_LIST_DEMMO =
(SID_LIST =
(SID_DESC=
(SID_NAME=DEMMO)
(ORACLE_HOME=/opt/oracle/product/19.3.0/)
(PROGRAM=dg4odbc)
(ENVS=LD_LIBRARY_PATH="/usr/lib64:/opt/oracle/product/19.3.0/lib/")
)
)
A DBlink a create database link SQLSRV1 connect to "mssqluser" identified by "mssqluserpass" using 'DEMMO'; készült.
Kérdés,hogy mit rontottam el/mit néztem be?
Tűzfal kifelé nincs, selinux permissive módban, a 1545-ös port szabad.
- 1019 megtekintés
Hozzászólások
HS_FDS_CONNECT_INFO=DEMMO-val sem megy?
neked aztan fura humorod van...
- A hozzászóláshoz be kell jelentkezni
Az ODBC-s DSN az SQLSRV1, az én értelmezésem szerint azt kell itt megadni, de majd megnézem.
Megnéztem, oda egy valid DSN kell. Játszadoztam a driver-rel (fretds, Microsoft-os), de mindegy volt, ugyanúgy nem kezdenek tcp-n beszélgetni...
- A hozzászóláshoz be kell jelentkezni
Update: működik, csak a select ... from tabla@DBLINK -ben nem kell semmilyen idézőjelet használni... Viszont evés közben étvágy - mindezt jó lenne AD-s userrel összehozni...
- A hozzászóláshoz be kell jelentkezni
AD-s user elvetve, most már "csak" az ő meg az ű szépségéért, meg a háromból egyszer invalid cursor state, egyszer lost rpc connection jön, és egyszer értelmes válasz... (nagyjából...)
- A hozzászóláshoz be kell jelentkezni
Update: valami mókolás volt az mssql oldalon, mert most nem döglik a select - ellenben n darab sorhoz hozzárak n darab csupa null elemből álló sort - és a kapott adatok is elég csúnyán néznek ki... :-/ Ugyanaz a select isql-ből teljesen jól/helyesen működik...
- A hozzászóláshoz be kell jelentkezni
sub
- A hozzászóláshoz be kell jelentkezni
Ha ezt beállítod a #hs/admin/initDEMMO.ora -ban akkor változik az eredmény ?
HS_NLS_NCHAR = UCS2
- A hozzászóláshoz be kell jelentkezni
A 18-as orákulumról meg a régi centos-ról letettem, mert úgyis sokszorosan EOL rajta minden is - OEL 9.4-en Oracle 19.24.0.0 az új tesztkörnyezet, msodbcsql18-18.4.1.1-1.x86_64 és hozzá mssql-tools18-18.4.1.1-1.x86_64 van felrakva.
Most az isql-ben beküldött query korrekten hozza az ékezetes betűket is (ez megvolt korábban is), ellenben az Oracle DB-link nem akarja így sem (mivel nincs encryption/valid cert a túloldalon, ezért az odbc.ini -be kellett egy Encrypt=optional paraméter is) - ezekkel a beállításokkal továbbra sincs ugyan ékezetes karakter az Oracle-oldalon futó query-k eredményében - de legalább nem "szemetes" az eredmény...
HS_FDS_CONNECT_INFO = ODBCCONN
HS_FDS_TRACE_LEVEL = Debug
HS_FDS_TRACE_FILE_NAME = /tmp/hstrace.log
HS_FDS_SHAREABLE_NAME = /opt/microsoft/msodbcsql18/lib64/libmsodbcsql-18.4.so.1.1
HS_FDS_QUOTE_IDENTIFIER=TRUE
LD_LIBRARY_PATH=/u01/app/oracle/product/19.0.0/dbhome_1/lib:/lib:/usr/lib
set ODBCINI=/etc/odbc.ini
HS_NLS_NCHAR=UCS2
HS_LANGUAGE=AL32UTF8
- A hozzászóláshoz be kell jelentkezni