Colocar aspas duplas em torno de um identificador no Oracle faz com que o Oracle trate o identificador como diferenciando maiúsculas de minúsculas em vez de usar o padrão de distinção entre maiúsculas e minúsculas. Se você criar uma tabela (ou uma coluna) com aspas duplas ao redor do nome, você deve sempre referir-se ao identificador com aspas duplas e especificando corretamente o caso (com exceção de todos os identificadores em maiúsculas, onde aspas duplas não fazem sentido ).
Nos bastidores, a Oracle está sempre fazendo correspondência de identificadores com distinção entre maiúsculas e minúsculas. Mas sempre converte identificadores que não estão entre aspas duplas para maiúsculas antes de fazer a correspondência. Se você colocar aspas duplas em torno de um identificador, o Oracle ignorará a conversão para maiúsculas.
Então, se você fizer algo como
CREATE TABLE my_table(
col1 number,
col2 number
)
você pode
SELECT * FROM my_table
SELECT * FROM MY_TABLE
SELECT * FROM My_Table
SELECT * FROM "MY_TABLE"
mas algo como
SELECT * FROM "my_table"
vai falhar.
Por outro lado, se você fizer algo como
CREATE TABLE "my_other_table"(
col1 number,
col2 number
)
Você não pode fazer
SELECT * FROM my_other_table
SELECT * FROM MY_OTHER_TABLE
SELECT * FROM My_Other_Table
SELECT * FROM "MY_OTHER_TABLE"
mas isso
SELECT * FROM "my_other_table"
vai funcionar