Для начала рассмотрим используемый в UniDAC режим подключения по умолчанию - "client mode". В этом режиме для подключения к серверу базы данных Oracle используется библиотека Oracle Call Interface (OCI). Для работы через OCI необходимо, чтобы на компьютере было установлено клиентское программное обеспечение Oracle. Для наглядности, создадим тестовую базу данных у которой SID и Service Name не совпадают.
Вариант 1. На компьютере установлен клиент Oracle и настроен TNSNAMES.ORA:uses Uni, OracleUniProvider; procedure CreateOra; var db: TUniConnection; begin db := TUniConnection.Create(nil); db.ProviderName := 'Oracle'; db.LoginPrompt := False; db.Username := 'scott'; db.Password := 'tiger'; db.Server := 'TestTNSname'; // наименование записи в TNSNAMES.ORA db.Connect; end;Вариант 2. На компьютере установлен клиент Oracle без настроеного TNSNAMES.ORA. Используем Oracle Service Name (SN):
uses Uni, OracleUniProvider; procedure CreateOra; var db: TUniConnection; begin db := TUniConnection.Create(nil); db.ProviderName := 'Oracle'; db.LoginPrompt := False; db.Username := 'scott'; db.Password := 'tiger'; db.Server := '192.168.1.5:1521/testSN'; db.Connect; end;При этом порт можно не указывать:
db.Server := '192.168.1.5/testSN';Вариант 3. На компьютере установлен клиент Oracle без настроеного TNSNAMES.ORA. Используем Oracle System Identifier (SID):
uses Uni, OracleUniProvider; procedure CreateOra; var db: TUniConnection; begin db := TUniConnection.Create(nil); db.ProviderName := 'Oracle'; db.LoginPrompt := False; db.Username := 'scott'; db.Password := 'tiger'; db.Server := '192.168.1.5:1521/testSID'; db.Connect; end;Как и во 2-м варианте порт можно не указывать:
db.Server := '192.168.1.5/testSID';Работа с базой данных в "client mode" требует дополнительных затрат на установку и настройку клиентского программного обеспечения Oracle. Поэтому разработчики предоставили возможность подключения к БД Oracle в "direct mode". При его использовании программа подключается к БД по протоколу TCP/IP напрямую, без установки клиентского программного обеспечения. С точки зрения безопасности использование "direct mode" аналогичен использованию клиента Oracle без Oracle Advanced Security. Чтобы подключиться из UniDAC к БД Oracle в "direct mode" необходимо в SpecificOptions экземпляра объекта TUniConnection установить значение свойства "Direct" в "True":
db.SpecificOptions.Values['Direct'] := 'True';Вариант 4. На компьютере не установлен клиент Oracle. Используем Oracle Service Name (SN):
uses Uni, OracleUniProvider; procedure CreateOra; var db: TUniConnection; begin db := TUniConnection.Create(nil); db.ProviderName := 'Oracle'; db.LoginPrompt := False; db.Username := 'scott'; db.Password := 'tiger'; db.SpecificOptions.Values['Direct'] := 'True'; db.Server := '192.168.1.5:1521:sn=testSN'; db.Connect; end;Строку параметров сервера можно указать как во втором варианте, без "sn=":
db.Server := '192.168.1.5:1521/testSN'и даже без порта:
db.Server := '192.168.1.5/testSN';Вариант 5. На компьютере не установлен клиент Oracle. Используем Oracle System Identifier (SID):
uses Uni, OracleUniProvider; procedure CreateOra; var db: TUniConnection; begin db := TUniConnection.Create(nil); db.ProviderName := 'Oracle'; db.LoginPrompt := False; db.Username := 'scott'; db.Password := 'tiger'; db.SpecificOptions.Values['Direct'] := 'True'; db.Server := '192.168.1.5:1521:sid=testSID'; db.Connect; end;Как и в 4-м варианте "sid=" и порт можно не указывать:
db.Server := '192.168.1.5/testSID'
Следует отметить, что производительность программы и размер ее файла не зависит от выбранного режима подключения. Но "direct mode" накладывает некоторые несущественные ограничения. Например, могут возникнуть некоторые проблемы при использовании межсетевых экранов. Подробнее о подключении к серверу базы данных Oracle вы можете почитать в документации библиотеки в разделе "Using Oracle data access provider with UniDAC in Delphi".
Комментариев нет:
Отправить комментарий