No Oracle, o tipo de dados RAW é apropriado para armazenar valores binários.
O problema de usar tipos de dados de caracteres para armazenar dados binários é que os valores estão sujeitos à tradução do conjunto de caracteres .
Se o conjunto de caracteres do cliente não corresponder ao conjunto de caracteres do banco de dados, os valores estarão sujeitos à conversão. (Ou seja, um valor binário em uma codificação representa um caractere específico, mas esse caractere pode ser representado por um valor binário diferente em outro conjunto de caracteres.
Com o tipo de dados caractere, o Oracle preserva o valor "caractere", não o valor binário codificado.
Se você deseja usar um tipo de dados de caractere (por exemplo, CHAR ou VARCHAR2) para armazenar valores binários, você realmente precisa codificar o valor binário como texto simples e armazenar e recuperar o valor codificado. Duas codificações populares de binário para texto são hexadecimal e base64 (uuencode).
A Oracle fornece funções internas RAWTOHEX e HEXTORAW para codificação e decodificação de binários (tipo de dados RAW) como strings hexadecimais (tipo de dados VARCHAR2).