Parametr NLS_LENGTH_SEMANTICS określa domyślną metodę dla liczenia rozmiaru kolumn tekstowych. Jeżeli parametr ten jest pominięty lub ustawiony na BYTE wtedy kolumna VARCHAR2(1) może zmieścić 1 znak ale nie zawsze. Wystarczy, że utworzymy taką kolumnę na bazie z kodowaniem w którym jeden znak zajmuje więcej niż 1 bajt (np. UTF-8)... i kolumna okaże się za mała nawet na pojedynczą literę.
Jeżeli więc pracujemy w "wielobajtowym" kodowaniu najlepiej ustawić ten parametr na "CHAR" i zapomnieć o problemie jakim byłoby każdorazowe deklarowanie rozmiaru kolumny jako VARCHAR2(1 CHAR), tak na środowisku deweloperskim jak i później na produkcyjnym.
Jeżeli się zagapiliśmy i utworzyliśmy obiekty bazujące na BYTE możemy łatwo wygenerować skrypty które zmodyfikują definicję kolumn.
Przykładowo:
http://sql.imaginacja.org/blog1.php/2008/09/25/masowa-zmiana-definicji-kolumn-tekstowyc