This comes down what is meant by a "character". Typically (historically) a character would have been stored in a single byte. Nowadays you can have multi-byte characters (e.g. chinese characters can be stored on the database).
In order to ensure that the database can handle these and allocates sufficient space, you can insist that the field can hold 2
characters regardless of how many bytes are used to represent each character.
CHAR(2)
is the same as
CHAR(2 BYTE)
which assumes single-byte characters are used.
This article is about this topic -
"character semantics"[
^] - and explains it better than my attempt. It focusses on varchar2 but the same applies to char.