Por que o Oracle adiciona uma coluna oculta aqui?

Recentemente, migramos um sistema do cliente para o Oracle 12c e para a versão mais recente do nosso produto. Esse processo inclui a execução de vários scripts de migração que geralmente incluem ou alteram tabelas. Percebemos que adicionar uma coluna a uma tabela e também fornecer um valor padrão cria uma coluna oculta adicionalSYS_NC00002$.

Você deve conseguir reproduzir isso com o seguinte código

create table xxx (a integer);
alter table xxx add (b integer default 1);

select table_name, column_name, data_type, data_length, column_id, default_length, data_default from user_tab_cols where table_name='XXX';

Table_Name|column_Name |data_Type|data_Length|column_Id|default_Length|data_Default|
------------------------------------------------------------------------------------
XXX       |A           |NUMBER   |         22|        1|              |            |
XXX       |SYS_NC00002$|RAW      |        126|         |              |            |
XXX       |B           |NUMBER   |         22|        2|             1|1           |

Quando eu preencho a tabela e observo os valores nessa coluna oculta, eles são todos iguais:

select distinct SYS_NC00002$ from xxx;

Sys_Nc00002$|
-------------
01          |

Surpreendentemente, quando eu não defino o valor padrão imediatamente, mas em uma declaração extra, nenhuma coluna oculta adicional é criada.

create table xxy (a integer);
alter table xxy add (b integer);
alter table xxy modify b default 1;

select table_name, column_name, data_type, data_length, column_id, default_length, data_default from user_tab_cols where table_name='XXY';

Table_Name|column_Name|data_Type|data_Length|column_Id|default_Length|data_Default|
-----------------------------------------------------------------------------------
XXY       |A          |NUMBER   |         22|        1|              |            |
XXY       |B          |NUMBER   |         22|        2|             1|1           |

Alguém pode explicar para que serve esta coluna oculta e por que ela é criada apenas no primeiro exemplo, mas não no segundo?

questionAnswers(1)

yourAnswerToTheQuestion