Duvidas frequentes, com soluções easy - ORADB

Mesmo aquele DBA - aquele mesmo que tem os dedos mais ágeis que o Thanos e sua manopla do infinito -  já teve essas dúvidas. Nada do velho, blá-blá, de JOIN vs OUTER JOIN. Se você não sabe a diferença GET-BACK-NOW ! To falando de duvidas reais de todo PL-JOBBER seja programador ou administrador, tem ou teve ou vez em quando tem de se lembrar. Não sou eu quem digo, é o velho e bom blog do ask-to-tom:

1. Como obter o número aproximado de linhas nas minhas tabelas ?

select table_name, num_rows from all_tables;

2. Quando usar IN / EXISTS (ou NOT IN / NOT EXISTS ) ?

Se você possui uma lista limitada (pequena em geral) use IN. Se a lista demandar muitos joins e/ou filtros, use EXISTS !

3. Como mostrar CLOBS no result set?

select code, data, to_char(coluna_clob) from table;

4. Como exportar um database para um arquivo de Backup ?

exp system/manager@sua_instancia FULL=Y FILE=FULL_BACKUP.DMP

5. Como importar um database  ?

imp system/manager@sua_instancia FULL=Y FILE=FULL_BACKUP.DMP

6. Formatando datas e números:

select to_char(sysdate,'dd/mm/yyyy hh24:mi:ss'), trim(to_char(1324323.45,'9999999990D99')) from dual

7. Como atualizar milhões de linhas em uma tabela com milhões de registros de alguma maniera mais rápida ?

CPU sobrando, então:

UPDATE OWNER.EMPREGADOS /*+ NOLOGGING PARALLEL(8) */
SET SALARIo = SALARIO * 10
WHERE CARGO IN ('DBA','CONSULTOR');

Mas meu AUXDB estoura ! Então divida em lotes menores !

FOR X in (CONDICAO)
LOOP
   UPDATE OWNER.EMPREGADOS /*+ NOLOGGING PARALLEL(8) */
   SET SALARIo = SALARIO * 10,
       status = 'ATUALIZADO'
   WHERE CARGO IN ('DBA','CONSULTOR')
   and rownum < 100000
   and  status = 'NAO_ATUALIZADO';
END LOOP;

8. Como inserir milhõesde linhas de maneira rápida ?

create destino 
as 
( select * from origem 
  where <condicoes>
)

alter table original rename to original_bkp;

alter table destino rename to original;

-- recriar indices ...


9. Como excluo dados de uma tabela inteira ?

Muito esquecido, mesmo pelos experientes: 

truncate table table_name;

10. Adicionar quebra de linha nos meus updates ?

update banana_logger
set    texto = texto || chr(13) || chr(10) || ' Finalizando processo de expurgo !';