Итак, приступим. Для начала скачаем последнюю версию unixODBC и oracle instant client (пакеты basic и odbc, хотя для тестирования можно скачать и sqlplus). Итак, для начала распакуем unixODBC и скомпилируем его.
Код: Выделить всё
$ cd ~/unixODBC-2.3.0
$ export CFLAGS=-m64
$ export LDOPTIONS=-64 # это необходимо для того, чтобы у нас собирались 64-битные бинарики
# pkg install pkg:/SUNWgmake@3.81-0.111 # устанавливаем gnu make - со стандартным make будут проблемы при make install
$ alias make='gmake'
$ ./configure --enable-drivers --enable-drivers-conf
$ gmake
# gmake install
Далее распаковываем архивы с oracle instant client, и копируем их содержимое куда-нибудь в /usr/local/oracle. И вот после этого шага нас подстерегает первая трабла - надо добавить в LD_LIBRARY_PATH каталог /usr/local/oracle, иначе приложения, которым нужны либы оттуда не будут работать. Так же необходимо установить переменную ORACLE_HOME в /usr/local/oracle. После этого переходим в каталог ORACLE_HOME, и запускаем скрипт odbc_update_ini.sh, который автоматически подправит файлы ~/.odbc.ini и /usr/local/etc/odbcinst.ini:
Код: Выделить всё
# cd $ORACLE_HOME
# sh ./odbc_update_ini.sh /usr/local/ # первый параметр указывает папку, в которую ставился unixODBC
После этого копируем файл ~/.odbc.ini в /usr/local/etc/odbc.ini. Далее нас опять таки поджидает трабла с либами: надо добавить в LD_LIBRARY_PATH каталог /usr/local/lib, иначе isql(точнее - либа с оракловскими дровами - libsqora.so.11.1, но ругаться по этому поводу будет isql) не найдет либу libodbcinst.so.1.
После этого настраиваем подключение к БД. Для начала создаем файл $ORACLE_HOME/network/admin/tnsnames.ora, в котором описываем подключение к БД:
Код: Выделить всё
usersdb =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = oradb.localnet.net)(PORT = 1521))
)
(CONNECT_DATA =
(SERVICE_NAME = usersdb)
)
)
Далее открываем файл /usr/local/etc/odbc.ini, который у нас создался автоматически, и меняем там заголовок секции на что-нибудь понятное, вписываем в DSN имя нашей БД, вписываем в UserID имя пользователя БД, и в поле Password - его пароль.
Код: Выделить всё
[usersdb]
Application Attributes = T
Attributes = W
BatchAutocommitMode = IfAllSuccessful
BindAsFLOAT = F
CloseCursor = F
DisableDPM = F
DisableMTS = T
Driver = Oracle 11g ODBC driver
DSN = usersdb
EXECSchemaOpt =
EXECSyntax = T
Failover = T
FailoverDelay = 10
FailoverRetryCount = 10
FetchBufferSize = 64000
ForceWCHAR = F
Lobs = T
Longs = T
MaxLargeData = 0
MetadataIdDefault = F
QueryTimeout = T
ResultSets = T
ServerName =
SQLGetData extensions = F
Translation DLL =
Translation Option = 0
DisableRULEHint = T
UserID = sampleuser
Password = samplepw
StatementCache=F
CacheBufferSize=20
UseOCIDescribeAny=F
Кроме того, надо установить переменную TWO_TASK в значение вида //serveraddr/dbname, иначе isql будет ругаться следующим образом: " TNS:net service name is incorrectly specified"
Код: Выделить всё
export TWO_TASK=//oradb.localnet.net:1521/usersdb
Ну, вот и все.