Asterisk und Oracle

VOIPdani

Mitglied
Mitglied seit
8 Aug 2005
Beiträge
432
Punkte für Reaktionen
0
Punkte
0
Hi!

Ich hab es geschafft extension.conf und sip.conf in eine mysql-DB auszulagern, allerdings laufen Asterisk und MySQL am selben Rechner. Bitte korrigiert mich wenn ich falsch liege, doch wenn die MySQL-DB auf einem anderen Rechner im Netz laufen würde, bräuchte ich ODBC um mich verbinden zu können?!

Kann ich mich mit unixODBC und dem File res_config_odbc.conf auch auf eine Oracle-DB verbinden und meine extensions.conf bzw. sip.conf in einer Oracle-DB speichern?

Hat damit schon jemand Erfahrungen bzw. kann mir jemand bestätigen dass Asterisk und Oracle zusammenarbeiten?

Lg Dani
 
Hallo!

Ich muss diesen Thread wieder hochholen, da ich auf die Frage ob ich sämtliche Konfigurationsfiles (sip.conf, extensions.conf) in eine Oracle-DB auslagern kann leider noch keine Antwort gefunden habe. Wenn ich das Thema google find ich in Zusammenhang mit Oracle gar nix. Die Frage is: Hat's bis jetzt noch niemand probiert oder gehts einfach nicht?

Weiters würd mich auch noch folgendes interessieren:
VOIPdani schrieb:
Bitte korrigiert mich wenn ich falsch liege, doch wenn die MySQL-DB auf einem anderen Rechner im Netz laufen würde, bräuchte ich ODBC um mich verbinden zu können?!

Ich hoffe die IPPF-Gemeinde kann mir da weiterhelfen!

Lg Dani
 
Hallo VOIPdani,

ich habe es noch nicht probiert, aber rein theoretisch dürfe das kein Problem sein.
Du musst nur den unixODBC treiber für Oracle installieren und die resource installieren.
Ich verwende ODBC auch für die Anbindung an eine MySQL. Das hat für mich den Vorteil das es später leichter umgestellt werden kann.
 
Hi!

Danke für die prompte Antwort!

Folgendes Szenario: Auf einem Rechner läuft nur Asterisk+Addons; die Oracle-DB läuft auf einem anderen Rechner im Netz.

So wie ich das verstehe brauch ich ODBC um mich auf die entfernte DB zu connecten.

Aber angenommen die entfernte DB ist eine MySQL-DB, brauch ich da auch ODBC um mich auf die entfernte MySQL-DB zu verbinden?

lg Dani
 
nicht unbedingt, das addon für mysql reicht da schon;
in der res_mysql.conf kannst du ja die IP + Port des servers angeben.
Ich glaube der Port musste unbedingt mit angegeben werden, da sonst über die lokale socket versucht wird zu connecten.
 
OK, das werd ich dann gleich mal ausprobieren.

Jetzt hab ich aber noch eine Frage und zwar wie funktioniert das ganze dann mit Oracle? Da muss ich ja ODBC installieren, welches Paket genau? Ist da unixODBC-dev das richtige? Wie würden dann die config-Files aussehen? Wie sieht der Socket aus über den ich mich connecte? Oracle läuft ja auf einem Windows-Rechner...treten da sicher keine Probleme auf?!
 
welches system hast du?
 
Mein Asterisk läuft auf Suse 9.2 Professional
Die Oracle-DB würde dann aber auf einem Windows-Server laufen
 
Zuletzt bearbeitet:
nach dem oracle Treiber muss ich erst mal suchen;
ich hänge mal meine ODBC conf für mysql an

/etc/unixODBC/odbc.ini
Code:
[MySQL-asterisk]
Description = MySQL Asterisk database
Trace       = Off
TraceFile   = stderr
Driver      = MySQL
SERVER      = 127.0.0.1
USER        = username
PASSWORD    = passwd
PORT        = 3306
DATABASE    = asterisk

/etc/unixODBC/odbcinst.ini
Code:
[MySQL] 
Description     = ODBC for MySQL
Driver          = /usr/lib/unixODBC/libmyodbc3.so
Setup           = /usr/lib/unixODBC/libodbcmyS.so
FileUsage       = 1


Code:
;;; odbc setup file 

/etc/asterisk/res_odbc.conf
[asterisk]
dsn => MySQL-asterisk
username => username
password => passwd
pre-connect => yes

Pakete: unixODBC
 
So, jetzt bin ich ein bissal verwirrt...ich dachte bei MySQL brauch ich kein ODBC??
 
das war ein Bsp für die ODBC installation;
Oracle würde dann ähnlich aussehen, nur die Pfade Setup und Driver sind anzupassen.

für mysql geht es natürlich auch mit res_mysql.conf
 
OK, aber wenn ich die Oracle-DB nicht am selben Rechner laufen lasse, wie passe ich dann die Pfade an???
 
das odbc installierst du ja auf dem asterisk -> also lokal; somit brauchst du nur die treiber für Suse und oracleODBC
 
In meinem Fall würden die Files dann ca. so aussehen?:

chaos2000 schrieb:
/etc/unixODBC/odbc.ini
Code:
[Oracle-asterisk]
Description = Oracle Asterisk database
Trace       = Off
TraceFile   = stderr
Driver      = Oracle
SERVER      = 172.21.31.50
USER        = username
PASSWORD    = passwd
PORT        = 3306??
DATABASE    = asterisk

/etc/unixODBC/odbcinst.ini
Code:
[Oracle] 
Description     = ODBC for Oracle
Driver          = /usr/lib/unixODBC/libmyodbc3.so
Setup           = /usr/lib/unixODBC/libodbcmyS.so
FileUsage       = 1


Code:
;;; odbc setup file 

/etc/asterisk/res_odbc.conf
[asterisk]
dsn => Oracle-asterisk
username => username
password => passwd
pre-connect => yes

Pakete: unixODBC

Was geb ich als PORT an?
 
Die odbcinst.ini dürfte falsch sein. Um ODBC mit Oracle zu benutzen musst du den Oracle-ODBC-Treiber für Linux installieren. Dazu sollte auch eine Anleitung gehören, in der beschrieben ist, wie eine ODBC-Verbindung konfiguriert wird. Die Anmeldedaten kommen dann in die res_odbc.conf
 
das stimmt die Setup in diesem Fall ist die von mysql;
ich schau mal nach ob ich was zu oracle finde
 
Hallo chaos2000!

chaos2000 schrieb:
ich schau mal nach ob ich was zu oracle finde

Hast du dich in letzter Zeit mit der Anbindung von Asterisk an Oracle beschäftigt?

Hast du vielleicht sogar was zum Thema gefunden?

Ich hab mich mal auf www.unixodbc.org umgeschaut, dort gibt es zwar eine Auflistung von Treibern, aber so wie ich das verstehe ist ein Oracle-ODBC-Treiber für Linux kostenpflichtig. Außerdem haut das installieren von UnixODBC bei mir auch nicht hin.

Code:
testasterisk:/usr/src/packages/SOURCES/unixODBC-2.2.11 # ./configure
checking for a BSD-compatible install... /usr/bin/install -c
checking whether build environment is sane... yes
checking for gawk... gawk
checking whether make sets $(MAKE)... yes
checking for gawk... (cached) gawk
checking for bison... bison -y
checking for gcc... gcc
checking for C compiler default output file name... a.out
checking whether the C compiler works... yes
checking whether we are cross compiling... no
checking for suffix of executables...
checking for suffix of object files... o
checking whether we are using the GNU C compiler... yes
checking whether gcc accepts -g... yes
checking for gcc option to accept ANSI C... none needed
checking for style of include used by make... GNU
checking dependency style of gcc... gcc3
checking how to run the C preprocessor... gcc -E
checking for flex... flex
checking for yywrap in -lfl... yes
checking lex output file root... lex.yy
checking whether yytext is a pointer... yes
checking for a BSD-compatible install... /usr/bin/install -c
checking whether ln -s works... yes
checking whether make sets $(MAKE)... (cached) yes
checking for g++... no
checking for c++... no
checking for gpp... no
checking for aCC... no
checking for CC... no
checking for cxx... no
checking for cc++... no
checking for cl... no
checking for FCC... no
checking for KCC... no
checking for RCC... no
checking for xlC_r... no
checking for xlC... no
checking whether we are using the GNU C++ compiler... no
checking whether g++ accepts -g... no
checking dependency style of g++... none
checking for egrep... grep -E
checking for ANSI C header files... yes
checking for sys/types.h... yes
checking for sys/stat.h... yes
checking for stdlib.h... yes
checking for string.h... yes
checking for memory.h... yes
checking for strings.h... yes
checking for inttypes.h... yes
checking for stdint.h... yes
checking for unistd.h... yes
checking sys/sem.h usability... yes
checking sys/sem.h presence... yes
checking for sys/sem.h... yes
checking Have we enabled using RTLD_GROUP ... yes
checking build system type... i686-pc-linux-gnu
checking host system type... i686-pc-linux-gnu
checking for ld used by GCC... /usr/i586-suse-linux/bin/ld
checking if the linker (/usr/i586-suse-linux/bin/ld) is GNU ld... yes
checking for /usr/i586-suse-linux/bin/ld option to reload object files... -r
checking for BSD-compatible nm... /usr/bin/nm -B
checking how to recognise dependant libraries... pass_all
checking command to parse /usr/bin/nm -B output... ok
checking dlfcn.h usability... yes
checking dlfcn.h presence... yes
checking for dlfcn.h... yes
checking for ranlib... ranlib
checking for strip... strip
checking for objdir... .libs
checking for gcc option to produce PIC... -fPIC
checking if gcc PIC flag -fPIC works... yes
checking if gcc static flag -static works... yes
checking if gcc supports -c -o file.o... yes
checking if gcc supports -c -o file.lo... yes
checking if gcc supports -fno-rtti -fno-exceptions... no
checking whether the linker (/usr/i586-suse-linux/bin/ld) supports shared libraries... yes
checking how to hardcode library paths into programs... immediate
checking whether stripping libraries is possible... yes
checking dynamic linker characteristics... GNU/Linux ld.so
checking if libtool supports shared libraries... yes
checking whether to build shared libraries... yes
checking whether to build static libraries... no
checking whether -lc should be explicitly linked in... no
creating libtool
checking if we are using the included libltdl ... yes
checking which extension is used for shared libraries... .so
checking for iconv... yes
checking for iconv declaration...
         extern size_t iconv (iconv_t cd, char * *inbuf, size_t *inbytesleft, char * *outbuf, size_t *outbytesleft);
checking for encoding to use for CHAR representations ... auto-search
checking for encoding to use for UNICODE representations ... auto-search
checking for crypt in -lcrypt... yes
checking for pow in -lm... yes
checking for readline in -lreadline ... no
checking for readline in -lreadline -lcurses ... no
checking Are we using flex ... yes
checking whether time.h and sys/time.h may both be included... yes
checking sys/time.h usability... yes
checking sys/time.h presence... yes
checking for sys/time.h... yes
checking for long... yes
checking size of long... 4
checking if platform is 64 bit... No
checking for long long... yes
checking for strcasecmp... yes
checking for strncasecmp... yes
checking for vsnprintf... yes
checking for strtol... yes
checking for atoll... yes
checking for strtoll... yes
checking for endpwent... yes
checking for mutex_lock in -lthread ... no
checking for pthread_mutex_lock in -lpthread... yes
checking if compiler accepts -pthread... yes
checking for localtime_r in -lc... yes
checking for ftok... yes
checking for semget... yes
checking for shmget... yes
checking for semop... yes
checking for snprintf... yes
checking for semundo union... yes
checking for socket in -lsocket... no
checking for gethostbyname in -lnsl... yes
checking for X... configure: error: Can't find X includes. Please check your installation and add the correct paths or run configure with --enable-gui=no!
testasterisk:/usr/src/packages/SOURCES/unixODBC-2.2.11 # make
make: *** No targets specified and no makefile found.  Stop.
testasterisk:/usr/src/packages/SOURCES/unixODBC-2.2.11 # make install
make: *** No rule to make target `install'.  Stop.
testasterisk:/usr/src/packages/SOURCES/unixODBC-2.2.11 #

lg Dani
 
Zuletzt bearbeitet:
@VOIPdani

error: Can't find X includes. Please check your installation and add the correct paths or run configure with --enable-gui=no!

Was Du machen sollst, steht doch explizit da:
enweder die X-Header installieren, doer enable-gui=no angeben.

aber so wie ich das verstehe ist ein Oracle-ODBC-Treiber für Linux kostenpflichtig.

Was macht das schon. Oracle ist doch 'eh kostenpflichtig. :)

Übrigens ist bei Debian unixodbc als Paket schon dabei. Ich vermute aber,
daß Du explizit ein odbc-oracle Paket brauchst.


Gruß
britzelfix
 
Oracle mit Asterisk 1.4

Hallo voip freunde!

Ich bin derzeit dabei, einen Asterisk 1.4 Server aufzusetzen. Desweiteren möchte ich eine Datenbankanbindung mittels Oracle schaffen. Hat jemand in diesem Thema erfahrung. Ist es überhaupst möglich?

Mein aktueller Stand sieht so aus: Asterisk läuft einwandfrei auf einem Fedora Core 6. Um eine Verbindung zur DB zu schaffen, habe ich unixODBC installiert und entsprechend konfiguriert (Oracle Database 10g Express Edition).

Mein erstes Ziel ist es nun, die CDR's (cdr_odbc.conf) in die Datenbank zu schreiben.

Wenn ich meinen log file betrachte scheint alles zu funktionieren:

Code:
[May  8 09:31:40] VERBOSE[5215] logger.c:   == Parsing '/etc/asterisk/cdr_odbc.conf': [May  8 09:31:40] VERBOSE[5215] logger.c: Found
[May  8 09:31:40] VERBOSE[5215] logger.c:     -- cdr_odbc: dsn is asterisk
[May  8 09:31:40] VERBOSE[5215] logger.c:     -- cdr_odbc: username is asterisk
[May  8 09:31:40] VERBOSE[5215] logger.c:     -- cdr_odbc: password is [secret]
[May  8 09:31:40] VERBOSE[5215] logger.c:     -- cdr_odbc: table is CDR
[May  8 09:31:41] VERBOSE[5215] logger.c:        > cdr_odbc: Connected to asterisk

Nur wenn jetzt ein Telefonat zwischen 2 SIP useren erfolgt, erscheint beim Beenden des Gesprächs folgender Text in der CLI:
Code:
[May  8 10:53:00] VERBOSE[5655] logger.c:        > cdr_odbc: Error in Query -1
[May  8 10:53:00] VERBOSE[5655] logger.c:        > cdr_odbc: Query FAILED Call not logged!
[May  8 10:53:00] VERBOSE[5655] logger.c:        > cdr_odbc: Reconnecting to dsn asterisk
[May  8 10:53:00] ERROR[5605] chan_sip.c: We could NOT get the channel lock for SIP/2000-097532f8! 
[May  8 10:53:00] ERROR[5605] chan_sip.c: SIP transaction failed: [email protected] 
[May  8 10:53:00] VERBOSE[5655] logger.c:        > cdr_odbc: Connected to asterisk
[May  8 10:53:00] VERBOSE[5655] logger.c:        > cdr_odbc: Trying Query again!
[May  8 10:53:00] VERBOSE[5655] logger.c:        > cdr_odbc: Error in Query -2
[May  8 10:53:01] VERBOSE[5655] logger.c:        > cdr_odbc: Query FAILED Call not logged!

Ich denke, dass die Verbindung zwischen der Datenbank und des Asterisk Servers funktioniert, Probleme hingegen gibt es beim Ausführen der query's!
Vielleicht ist die Syntax für die Oracle DB nicht versändlich?! Gibt es eventuell irgendwelche "addons" für Oracle + Asterisk

Falls jemand es geschafft hat oder jemanden das Problem bekannt ist, wäre ich sehr dankbar wenn mir jemand weiterhelfen könnte! :(
 
Kostenlos!

Zurzeit aktive Besucher

Statistik des Forums

Themen
248,541
Beiträge
2,293,859
Mitglieder
378,048
Neuestes Mitglied
Manfred Grill