Trabalhando com data e hora no Oracle

As colunas que armazenam datas e horas no Oracle, pode default retornam apenas a DATA no formato DD/MM/YYYY, sendo que DD = Dia, MM = Mês e YYYY = Ano!

No exemplo abaixo temos um select que retorna a data do sistema:

SELECT TO_CHAR(SYSDATE) FROM DUAL;
14/10/18

Para extrair a data e hora desse campo, é preciso usar a função TO_CHAR passando o parâmetro de data e hora, conforme comando abaixo:

SELECT TO_CHAR(SYSDATE,'DD/MM/YYYY HH:MI:SS') FROM DUAL;
14/10/2018 11:19:32

E se preferir o formato de 24 horas, basta ajustar conforme abaixo:

SELECT TO_CHAR(SYSDATE,'DD/MM/YYYY HH24:MI:SS') FROM DUAL;
14/10/2018 23:19:49

Sabendo como funciona o TO_CHAR, você consegue aplicar esse comando em qualquer coluna de data nas suas tabelas, basta trocar o SYSDATE pelo nome da coluna na tabela e executar o comando.

Habilitar paralelismo em queries e acompanhar a execução

Algumas operações de tecnologias podem ser paralelizadas utilizando mais CPUs para processar determinadas tarefas, e no banco de dados não é diferente. A opção PARALLEL X, onde X é a quantidade de cores a ser utilizada permite dividir a consulta em pequenos pedaços fazendo com que cada processador execute parte da query.

No exemplo abaixo estou paralelizando a consulta entre 20 cpus com o comando PARALLEL 20 e suspendi a geração de REDO LOG com o NOLLOGGING. Essa operação é lenta, pois está comprimindo uma tabela de 500GB e movendo para outra tablespace, a TD_MOVELOB:

ALTER TABLE GALOMG.TB_LOG COMPRESS FOR OLTP;
ALTER TABLE GALOMG.TB_LOG MOVE TABLESPACE TD_MOVELOB NOLOGGING PARALLEL 20;

Para checar se a consulta está paralelizada, basta executar o select abaixo na LONGOPS que trará uma linha para cada processo dividido:

SELECT inst_id,sid, serial#, opname, username,start_time,last_update_time,
round(time_remaining/60,2) "REMAIN MINS", round(elapsed_seconds/60,2) "ELAPSED MINS", round((time_remaining+elapsed_seconds)/60,2) "TOTAL MINS", 
ROUND(SOFAR/TOTALWORK*100,2) "%_COMPLETE", message
FROM gv$session_longops 
WHERE TOTALWORK != 0 AND sofar<>totalwork AND time_remaining > 0;

Abaixo o resultado da query, onde msotra que cada pedaço da query possui um SID diferente, mesmo que a tabela seja a mesma: GALOMG.TB_LOG !

Basta executar a query várias vezes para consultar o tempo que cada pedaço da query está sendo executado.

Maneiras de desligar o Oracle RAC

Olá pessoal,
hoje vou passar algumas dicas para desligar corretamente seu ambiente do Oracle RAC. Precisei fazer uma manutenção em apenas 1 dos nós e as vezes temos dúvidas de qual procedimento usar, qual é melhor, mais rápido, etc.

Há duas maneiras legais de para uma instância que são utilizando os comando SRVCTL (servercontrol) ou o CRSCTL (clustercontrol). A diferença básica de um para o outro é que o ClusterControl vai parar a instância do ASM automaticamente e deve ser executado como ROOT.

Maos á obra !

Utilizando o SRVCTL teremos as seguintes opções:

srvctl stop instance -d database -i instancia -o abort
srvctl start instance -d database -i instance
srvctl status database -d database

srvctl stop asm -node hostname -stopoption IMMEDIATE
srvctl start asm -node hostname
srvctl status asm

Utilizando o CRSCTL teremos as seguintes opções:

crsctl stop crs
crsctl start crs
crsctl stat res -t init
crsstat

Com esses comandos acima você consegue facilmente parar e subir os serviços do Oracle

Evento – Oracle para todos em 9/9/2018

Bom dia a todos,
nosso evento do mês de Agosto/Setembro será na Escola Estadual José Ermírio de Morais e os dados estão logo abaixo:

Tema: Instalação do Oracle 18C – Passo a Passo
Local: Escola Estadual José Ermírio de Morais
Data: 10/09/2018
Horário: 16:00 – Sala: 05
Palestrante: Leonardo Pedroso Costa

Espero vocês lá!

Carregar mais

×