Oracle ODBC dla Windows

Potrzebowałem dostępu do bazy Oracle przez ODBC. Niestety Oracle’owy driver odbc jest inny niż wszystkie :-), bo nie pozwala zdefiniować dostępu do bazy wprost, tylko należy użyć spójnego mechanizmu narzędzi Oracle’owych, definiującego połączenie. Mowa o

TNS (Transparent Network Substrate), co ja bym nazwał definicją połączenia (zamiast Przeźroczystego Substratu Sieciowego ;-)). TNS może pochodzić z kilku źródeł – lokalnego (specjalnego pliku) i globalnego – np. LDAP. Dzięki temu we wszystkich narzędziach bazodanowych Oracle, podajemy tylko nazwę połączenia zamiast każdorazowo określać wszystkie parametry połączenia. Rozwiązanie zmyślne, ale patrząc przez pryzmat problemów z konfiguracją – nieintuicyjne. 

Aby połączyć się przez Oracle ODBC, należy pobrać sterowniki. Ja znalazłem cały pakiet zwany ODAC (Oracle Data Access Component). Po zainstalowaniu należy zdefiniować TNS naszego połączenia. Do tego celu służy plik tnsnames.ora, który zawiera specjalną składnię. Poniżej podstawowa konfiguracja:

my_conn =
 (DESCRIPTION =
   (ADDRESS_LIST =
     (ADDRESS = (PROTOCOL = TCP)(HOST = moj.serwer.pl)(PORT = 1521))
   )
 (CONNECT_DATA =
   (SERVICE_NAME = sid_uslugi)
 )
)

Ponadto należy poinstruować narzędzia Oracle w jaki sposób ma wyszukiwać definicji połączeń. Mowa tu o kolejności przeszukiwania oraz z których źródeł skorzystać (ww. lokalne i/lub globalne). Ustawiamy to w pliku sqlnet.ora. Tu potrzebujemy tylko:

*NAMES.DIRECTORY_PATH= (TNSNAMES) *

Oba pliki należy umieścić w (już istniejącym) katalogu
%KATALOG_INSTALACJI_ODAC%\product\11.2.0\client_1\Network\Admin

Teraz można już korzystać z ODBC. Jeśli mieliście otwarty program korzystający z połączenia, to dla pewności należy go uruchomić ponownie.

You May Also Like

New HTTP Logger Grails plugin

I've wrote a new Grails plugin - httplogger. It logs:

  • request information (url, headers, cookies, method, body),
  • grails dispatch information (controller, action, parameters),
  • response information (elapsed time and body).

It is mostly useful for logging your REST traffic. Full HTTP web pages can be huge to log and generally waste your space. I suggest to map all of your REST controllers with the same path in UrlMappings, e.g. /rest/ and configure this plugin with this path.

Here is some simple output just to give you a taste of it.

17:16:00,331 INFO  filters.LogRawRequestInfoFilter  - 17:16:00,340 INFO  filters.LogRawRequestInfoFilter  - 17:16:00,342 INFO  filters.LogGrailsUrlsInfoFilter  - 17:16:00,731 INFO  filters.LogOutputResponseFilter  - >> #1 returned 200, took 405 ms.
17:16:00,745 INFO filters.LogOutputResponseFilter - >> #1 responded with '{count:0}'
17:18:55,799 INFO  filters.LogRawRequestInfoFilter  - 17:18:55,799 INFO  filters.LogRawRequestInfoFilter  - 17:18:55,800 INFO  filters.LogRawRequestInfoFilter  - 17:18:55,801 INFO  filters.LogOutputResponseFilter  - >> #2 returned 404, took 3 ms.
17:18:55,802 INFO filters.LogOutputResponseFilter - >> #2 responded with ''

Official plugin information can be found on Grails plugins website here: http://grails.org/plugins/httplogger or you can browse code on github: TouK/grails-httplogger.

Zabawy zespołowe: ćwiczenie głosu – RYBA!

Ćwiczenie ma za zadanie ośmielić osoby do mówienia głośno i wyraźnie. Ma też pomóc ustawić głos. Bardzo przydatne przy spotkaniach typu stand-up, gdzie "mruki" opowiadają pod nosem, co ostatnio robiły. Z mojego doświadczenia - działa!

Osoby biorące udział w ćwiczeniu stają w okręgu. Wybieramy sobie słówko do powtarzania. Proponowana jest ryba, ale może to być dowolne inne, proste w wymowie słowo.
Prowadzący ustala kierunek i jako pierwszy mówi szeptem ryba. Następnie, kolejne osoby powtarzają rybę, aż do donośnego"RYBA. Jeśli warunki pozwalają, można nawet krzyczeć, ale nie wrzeszczeć, bo wtedy wymowa jest niewyraźna. Po osiągnięciu maksymalnego (w pewnym sensie, ustalonego poziomu), zaczynamy ściszać głos, aż do szeptu. Naturalnie zabawę można powtórzyć dowolną ilość razy.

Jako szept warto przećwiczyć szept aktorski, czyli używanie szeptu, ale głośnego i wyraźnego, bez tembru głosu.

Mając jedno ustalone słowo, fajnie jest potem mobilizować kogoś kto mówi zbyt cicho wołając tylko "ryba!" i wtedy wszystko wiadomo.