Além dos tipos de dados que já vimos, onde podemos manipular e armazenar, caracteres, dígitos e datas, temos outros tipos de dados que veremos abaixo.
LONG
Atualmente não é mais recomendável utilizar colunas do tipo LONG, pois estão defasadas, devendo ser utilizadas BLOB, CLOB ou NCLOB, sendo recomendando também a conversão de colunas LONG para LOB. Contudo, o banco de dados ainda suporta esse tipo de dados por questões de retro compatibilidade.
O tipo de dados LONG é um tipo que permite armazenar sequências de caracteres de até 2Gb. Esse tipo de dados possui várias peculiaridades entre elas:
- Somente uma coluna long por tabela;
- Colunas long não podem ser utilizadas em índices;
- Não podem ser utilizadas em expressões regulares;
- Não podem ser utilizadas na cláusula WHERE ou em constraints de integridade.
- Não podem ser utilizadas em GROUP BY, ORDER BY, CONNECT BY ou no select com função DISTINCT.
RAW e LONG RAW
Os tipos RAW e LONG RAW são utilizados para armazenar dados que não são convertidos explicitamente pelo banco de dados Oracle quando move os dados entre diferentes sistemas. Podem ser utilizados para armazenamento de áudios, gráficos, imagens ou documentos. Assim como ocorre com o tipo LONG, é recomendável utilizar os tipos de dados LOB ao invés do LONG RAW. Tipos RAW funcionam como VARCHAR2, pois tem tamanho variável. Os tipos RAW podem ser implicitamente convertidos em CHAR, VARCHAR2 ou LONG e também podem ser explicitamente convertidos em hexadecimal utilizando a função RAWTOHEX e HEXTORAW.
ROWID
Todas as linhas no armazenadas no banco de dados Oracle tem um endereço específico que é utilizada para a organização dos dados dentro do banco, esses endereços de cada linha são chamados de rowids. Para saber qual o endereço de um linha basta incluir a pseudocoluna ROWID na área de select da consulta. A pseudocoluna ROWID também pode ser utilizada no campo WHERE.
Os valores de rowid são formados na base de 64, podem conter caracteres de a-z ou A-Z, dígitos de 0-9 e os sinais + (mais) e / (barra). O tamanho do conteúdo de rowid vai depender também do sistema operacional utilizado no banco de dados.
UROWID
Urowid significa universal rowid e são utilizados quando os rowids não estão armazenados dentro do banco de dados Oracle, podendo ser tabelas externas do banco ou mesmo de outros bancos de dados acessados pelo Oracle por meio de Gateways.
Tipos LOB
O tipo de dados LOB significa Large Objects, ou seja objetos grandes. Podemos classificar o dados LOB em internos e externos de acordo com a maneira que é armazenado no banco de dados, os LOBs internos são armazenados dentro do banco de dados e podem ser do tipo CLOB, NCLOB ou BLOB, enquanto o LOB externo é armazenado fora do banco de dados e é chamado de BFILE. Esses tipos de dados servem para armazenar informações grandes ou fora de padrões, como áudios e imagens. Os tipos LOB podem armazenar até 4000 bytes na forma de coluna, no caso de ter mais de 4000bytes serão sempre armazenados externamente. Colunas LOBs possuem localizadores que referenciam se os valores estão armazenados internamente ou externamente, quando fazendo um select em uma coluna LOB, o banco de dados retorna os localizadores dos registros dessa coluna.
CLOB
O tipo de dados CLOB armazena dados em formato caractere tanto de byte único como multibyte, são suportados caracteres de tamanho fixo ou variável. Objetos CLOB tem suporte completo para transações, podendo ter commits ou rollbacks em seus dados. As colunas do tipo CLOB podem armazenar até (4Gb-1) * (valor do parâmetro CHUNK), caso o valor para o parâmetro CHUNK padrão tenha sido utilizado na definição da coluna nesse caso o valor que poderá ser armazenado será definido por (4Gb -1) * (tamanho do bloco do banco de dados).
NCLOB
O tipo de dados NCLOB armazena dados em formato Unicode, são suportados caracteres de tamanho fixo ou variável com ambos utilizando o conjunto de caracters nacional. Objetos NCLOB tem suporte completo para transações, podendo ter commits ou rollbacks em seus dados. As colunas do tipo NCLOB podem armazenar até (4Gb-1) * (valor do parâmetro CHUNK), caso o valor para o parâmetro CHUNK padrão tenha sido utilizado na definição da coluna nesse caso o valor que poderá ser armazenado será definido por (4Gb -1) * (tamanho do bloco do banco de dados).
BLOB
BLOB significa Binary Large OBjects e armazena dados binários grandes e não estruturados, objetos BLOB tem suporte completo para transações, podendo ter commits ou rollbacks em seus dados. As colunas do tipo BLOB podem armazenar até (4Gb-1) * (valor do parâmetro CHUNK), caso o valor para o parâmetro CHUNK padrão tenha sido utilizado na definição da coluna nesse caso o valor que poderá ser armazenado será definido por (4Gb -1) * (tamanho do bloco do banco de dados).
BFILE
O tipo BFILE serve para acessar arquivos binários que estão armazenados fora do banco de dados. É possível realizar a troca do caminho onde o arquivo está armazenado ou mesmo o nome do arquivo sem afetar os dados do mesmo utilizando a função BFILENAME. Os dados dentro de um BFILE são apenas para leitura, não sendo possível realizar alterações e é tarefa do DBA garantir que os processos do banco de dados Oracle possuam permissão de leitura nos arquivos BFILE. Um arquivo BFILE poderá ter no máximo 264-1 bytes, contudo esse valor poderá ser menor de acordo com o sistema operacional.
JSON
Introduzido a partir da versão 21c serve para armazenar arquivos JSON de maneira nativa em formato binário, isso melhora o desempenho, pois não há mais necessidade de conversão. Além do tipo de dados JSON, os arquivos JSON são suportados pelos tipos VARCHAR2, BLOB e CLOB.
Fonte:
https://docs.oracle.com/en/database/oracle/oracle-database/21/sqlrf/Data-Types.html#GUID-A3C0D836-BADB-44E5-A5D4-265BA5968483