Olá, neste post vou mostrar como utilizar o NVL em campos do tipo DATE.

Oracle (ORA-00932) inconsistent datatypes: expected %s got %s”

Para resolver é necessário utilizar o comando TO_CHAR para a conversão antes de usar o NVL.

Veja o exemplo:

SELECT

nvl(to_char(dt_nascimento), 0)

FROM TABELA;

Resultado: Data ou 0.

Exemplo 2: Com DECODE

select

decode(nvl(to_char(dt_nascimento), 0), to_char(dt_nascimento), ‘COM DATA’, ‘SEM DATA’) DATA

FROM tabela;

Resultado: COM DATA / SEM DATA

Oracle – ALTER SESSION SET CURRENT_SCHEMA

Podemos utilizar o comando ALTER SESSION SET CURRENT_SCHEMA para identificarmos a sessão, com o usuário em si.

Quando conectamos no banco de dados Oracle com outro usuário, é necessário adicionar o usuário antes dos objetos para execução, busca ou identificação no SQL.

select * from user.table_user;

Para solucionarmos este problema, podemos alterar a sessão com o comando;

alter session set current_schema = USER;

Após executar o comando, você poderá executar os comandos no banco de dados Oracle, sem precisar informar o nome de usuário antes dos objetos.

Exemplo:

select * from table_user;

Com a view DBA_SEGMENTS do usuário DBA, é possível consultar os maiores objetos e tabelas no banco.

Comando SQL para consultar todos objetos;

select
SEGMENT_NAME,
SEGMENT_TYPE,
BYTES/1024/1024 mb,
BYTES/1024/1024/1024 GB,
tablespace_name
from
dba_segments
order by mb desc

Comando SQL para consultar as 5 maiores tabelas;

Você pode alterar a busca conforme necessitar, a partir da columa segment_type, poderá consultar apenas as tabelas.

select * from (
select
owner,
SEGMENT_NAME,
SEGMENT_TYPE,
bytes/1024/1024 mb,
bytes/1024/1024/1024 GB,
tablespace_name
from
dba_segments
where segment_type = 'TABLE'
order by mb desc
)
where rownum <= 5;

Exemplo de consulta buscando os objetos de um tablespace (tablespace_name).

select * from (
select
owner,
SEGMENT_NAME,
SEGMENT_TYPE,
sum(bytes/1024/1024) mb,
sum(bytes/1024/1024/1024) GB,
tablespace_name
from
dba_segments
where segment_type = 'TABLE'
and tablespace_name = 'TEMP'
group by segment_type, owner, SEGMENT_NAME, tablespace_name
order by mb desc
)
where rownum <= 5;

ORA-00997: illegal use of LONG datatype

Ao tentar criar uma tabela a partir de um select em tabela com o campo do tipo long, é mostrado o erro ORA-00997.

Para resolver utilize o comando TO_LOB, veja a continuação do exemplo;

create table teste_long2 AS select campo_long campo_long from teste_long

create table teste_long2 AS select TO_LOB(campo_long) campo_long from teste_long

Para consultar os parâmetros da instalação do banco de dados, utilize o comando abaixo para consultar.

SELECT * FROM V$NLS_PARAMETERS;

Para alterar o idioma (da sessão) conectada ao banco de dados, utilize o comando abaixo;

ALTER SESSION SET NLS_LANGUAGE= ‘Spanish’

Formato em Português

select
TO_CHAR(sysdate, ‘DD “de” fmMonth “de” YYYY’,’NLS_DATE_LANGUAGE=Portuguese’)
from
dual

Formato em Espanhol

select
TO_CHAR(sysdate, ‘DD “de” fmMonth “de” YYYY’,’NLS_DATE_LANGUAGE=Spanish’)
from
dual

Formato em Inglês

select
TO_CHAR(sysdate, ‘DD “de” fmMonth “de” YYYY’,’NLS_DATE_LANGUAGE=AMERICAN’)
from
dual

ALTER SESSION SET NLS_LANGUAGE = ‘AMERICAN’;

SELECT * FROM V$NLS_VALID_VALUES
FETCH FIRST 20 ROWS ONLY;

SELECT * FROM NLS_SESSION_PARAMETERS;

SELECT * FROM NLS_INSTANCE_PARAMETERS;

SELECT * FROM NLS_DATABASE_PARAMETERS;

Como consultar o tamanho do tablespace do Oracle?

A partir de uma consulta SQL, é possível obter o tamanho de um tablespace, veja a seguir o comando.

Comando SQL:

select
tablespace_name, used_space, tablespace_size, trunc(tablespace_size / 1024/124,02) size_mb , used_percent
from dba_tablespace_usage_metrics
where tablespace_name in (‘FABIANO_DATA’, ‘USERS’ )
order by tablespace_size desc;

A coluna TABLESPACE_NAME exibe o nome da tablespace.
A coluna USED_SPACE exibe o ​espaço físico que a tablespace aloca na expansão;
A coluna TABLESPACE_SIZE exibe qual é o tamanho limite que a tablespace pode atingir;
A coluna USED_PERCENT exibe qual é o percentual de utilização de espaço.

O SQL Developer por padrão mostra apenas a informação da data nas consultas SQL.

A continuação vou mostrar como formatar e ajustar essa informação, para mostrar a data e hora nas consultas SQL.

Caso queira alterar para a sessão conectada ao banco, utilizando o comando;

ALTER SESSION SET NLS_DATE_FORMAT = ‘DD/MM/YYYY HH24:MI:SS’;

Para consultar o formato atual, utilize o comando abaixo para consultar o forma atual.

SELECT value FROM v$nls_parameters WHERE parameter =’NLS_DATE_FORMAT’;

Caso deseje configurar como padrão as consultas com data e hora, acesse o menu de configurações do SQL Developer, vá em Banco de Dados e NLS, no campo de formato de data insira o formato DD/MM/YYYY HH24:MI:SS.

Após a configuração, todas as consultas passarão a mostrar a consulta com data e hora de forma completa.