čtvrtek 5. listopadu 2009

Instalace Hyperion Shared Services (HSS) na Oracle databázi s českou lokalizací

V dokumentaci Oracle Hyperion Enterprise Performance Management System Installation Start Here Release 11.1.1 jsou uvedeny následující požadavky na konfiguraci Oracle databáze pro instalaci HSS:
  • Database character set = AL32UTF8 nebo UTF8 nebo UTFE
  • grant CREATE SESSION, CREATE VIEW, RESOURCE
  • nls_length_semantics = ’CHAR’
  • nls_language = ‘AMERICAN‘
  • nls_territory = ‘AMERICA‘

Potíže s tím spojené jsou tyto:
  1. Bez těchto parametrů (s výjimkou prvního) nelze HSS rozběhnout. Typický příznak: během instalace a zejména při spuštění HSS služby se opakovaně (na konzoli, v logu) objevuje chyba ORA-01722: invalid number.
  2. Řada instancí Oracle v českých zemích nemá tyto parametry.
  3. Změnit parametry nls_* na databázi (alter system) není obvykle dost dobře možné.
  4. Změnit parametry nls_* na klientovi (tj. stroj, kde běží HSS), podle mých dosavadních pokusů nestačí. HSS se totiž připojují přes driver JDBC Merant 5.2, který je vůči nastavení environmentu i javovským locale typu -Duser.language=en -Duser.region=US zcela imunní.
Workaround:

create or replace trigger hyperion.nls_bugfix_trigger
after logon on database
declare u VARCHAR2(30);
begin
select user into u from dual;
if u = 'HYPERION' then
execute immediate 'alter session set nls_territory = ''AMERICA'' ' ;
execute immediate 'alter session set nls_language = ''AMERICAN'' ' ;
execute immediate 'alter session set nls_length_semantics = ''CHAR'' ' ;
end if;
end;
/

Testováno na verzi 11.1.1.2. Netestováno, zda problém přetrvává i na 11.1.1.3 (původní myšlenka viz. zde).



Michal Tomek (konzultant společnosti Neit Consulting)


Žádné komentáře: