- 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:
- 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.
- Řada instancí Oracle v českých zemích nemá tyto parametry.
- Změnit parametry nls_* na databázi (alter system) není obvykle dost dobře možné.
- 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í.
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:
Okomentovat