What is the best practice when creating boolean columns in Oracle? I faced again the serious problem, that Oracle simply doesn't have a boolean column type. I need to use char(1), or smallint, or some other.

What is the best practice, how to emulate boolean values in Oracle?

(Space consumption isn't important now - but a good cooperation with java/hibernate line were important).
I usually use a number(1) type combined with a check constraint: 

some_flag number(1) not null check (some_flag in (1,0))


To make things crystal clear I also add a comment to that table:

comment on column some_table.some_flag is '0 is false, 1 is true';


so that the explanation on what "true" means can be seen when looking at the definition of the table.

I would avoid a character representation due to localization problems. But if you do, make sure you create the approriate check constraint. Because it's not clear if a char(1) would use T, Y, y, t (or even W or J which I have seen in German).