diff options
Diffstat (limited to '')
-rw-r--r-- | source/configuration/modules/omoracle.rst | 200 |
1 files changed, 200 insertions, 0 deletions
diff --git a/source/configuration/modules/omoracle.rst b/source/configuration/modules/omoracle.rst new file mode 100644 index 0000000..4133eb7 --- /dev/null +++ b/source/configuration/modules/omoracle.rst @@ -0,0 +1,200 @@ +omoracle: Oracle Database Output Module +======================================= + +**Module Name: omoracle** + +**Author:**\ Luis Fernando Muñoz Mejías +<Luis.Fernando.Munoz.Mejias@cern.ch> - this module is currently +orphaned, the original author does no longer support it. + +**Available since:**: 4.3.0, **does not work with recent rsyslog +versions (v7 and up). Use** :doc:`omlibdbi <omlibdbi>` **instead.** +An upgrade to the new interfaces is needed. If you would like +to contribute, please send us a patch or open a github pull request. + +**Status:**: contributed module, not maintained by rsyslog core authors + +**Description**: + +This module provides native support for logging to Oracle databases. It +offers superior performance over the more generic +`omlibdbi <omlibdbi.html>`_ module. It also includes a number of +enhancements, most importantly prepared statements and batching, what +provides a big performance improvement. + +Note that this module is maintained by its original author. If you need +assistance with it, it is suggested to post questions to the `rsyslog +mailing list <http://lists.adiscon.net/mailman/listinfo/rsyslog>`_. + +From the header comments of this module: + +:: + + + This is an output module feeding directly to an Oracle + database. It uses Oracle Call Interface, a propietary module + provided by Oracle. + + Selector lines to be used are of this form: + + :omoracle:;TemplateName + + The module gets its configuration via rsyslog $... directives, + namely: + + $OmoracleDBUser: user name to log in on the database. + + $OmoracleDBPassword: password to log in on the database. + + $OmoracleDB: connection string (an Oracle easy connect or a db + name as specified by tnsnames.ora) + + $OmoracleBatchSize: Number of elements to send to the DB on each + transaction. + + $OmoracleStatement: Statement to be prepared and executed in + batches. Please note that Oracle's prepared statements have their + placeholders as ':identifier', and this module uses the colon to + guess how many placeholders there will be. + + All these directives are mandatory. The dbstring can be an Oracle + easystring or a DB name, as present in the tnsnames.ora file. + + The form of the template is just a list of strings you want + inserted to the DB, for instance: + + $template TestStmt,"%hostname%%msg%" + + Will provide the arguments to a statement like + + $OmoracleStatement \ + insert into foo(hostname,message)values(:host,:message) + + Also note that identifiers to placeholders are arbitrary. You + need to define the properties on the template in the correct order + you want them passed to the statement! + +Some additional documentation contributed by Ronny Egner: + +:: + + REQUIREMENTS: + -------------- + + - Oracle Instantclient 10g (NOT 11g) Base + Devel + (if you´re on 64-bit linux you should choose the 64-bit libs!) + - JDK 1.6 (not neccessary for oracle plugin but "make" didd not finsished successfully without it) + + - "oracle-instantclient-config" script + (seems to shipped with instantclient 10g Release 1 but i was unable to find it for 10g Release 2 so here it is) + + + ====================== /usr/local/bin/oracle-instantclient-config ===================== + #!/bin/sh + # + # Oracle InstantClient SDK config file + # Jean-Christophe Duberga - Bordeaux 2 University + # + + # just adapt it to your environment + incdirs="-I/usr/include/oracle/10.2.0.4/client64" + libdirs="-L/usr/lib/oracle/10.2.0.4/client64/lib" + + usage="\ + Usage: oracle-instantclient-config [--prefix[=DIR]] [--exec-prefix[=DIR]] [--version] [--cflags] [--libs] [--static-libs]" + + if test $# -eq 0; then + echo "${usage}" 1>&2 + exit 1 + fi + + while test $# -gt 0; do + case "$1" in + -*=*) optarg=`echo "$1" | sed 's/[-_a-zA-Z0-9]*=//'` ;; + *) optarg= ;; + esac + + case $1 in + --prefix=*) + prefix=$optarg + if test $exec_prefix_set = no ; then + exec_prefix=$optarg + fi + ;; + --prefix) + echo $prefix + ;; + --exec-prefix=*) + exec_prefix=$optarg + exec_prefix_set=yes + ;; + --exec-prefix) + echo ${exec_prefix} + ;; + --version) + echo ${version} + ;; + --cflags) + echo ${incdirs} + ;; + --libs) + echo $libdirs -lclntsh -lnnz10 -locci -lociei -locijdbc10 + ;; + --static-libs) + echo "No static libs" 1>&2 + exit 1 + ;; + *) + echo "${usage}" 1>&2 + exit 1 + ;; + esac + shift + done + + =============== END ============== + + + + + COMPILING RSYSLOGD + ------------------- + + + ./configure --enable-oracle + + + + + RUNNING + ------- + + - make sure rsyslogd is able to locate the oracle libs (either via LD_LIBRARY_PATH or /etc/ld.so.conf) + - set TNS_ADMIN to point to your tnsnames.ora + - create a tnsnames.ora and test you are able to connect to the database + + - create user in oracle as shown in the following example: + create user syslog identified by syslog default tablespace users quota unlimited on users; + grant create session to syslog; + create role syslog_role; + grant syslog_role to syslog; + grant create table to syslog_role; + grant create sequence to syslog_role; + + - create tables as needed + + - configure rsyslog as shown in the following example + $ModLoad omoracle + + $OmoracleDBUser syslog + $OmoracleDBPassword syslog + $OmoracleDB syslog + $OmoracleBatchSize 1 + $OmoracleBatchItemSize 4096 + + $OmoracleStatementTemplate OmoracleStatement + $template OmoracleStatement,"insert into foo(hostname,message) values (:host,:message)" + $template TestStmt,"%hostname%%msg%" + *.* :omoracle:;TestStmt + (you guess it: username = password = database = "syslog".... see $rsyslogd_source/plugins/omoracle/omoracle.c for me info) + |