What is the best practice when creating boolean columns in Oracle?
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).