LAB – Hints and Tricks 2

01 nov

LAB – Hints and Tricks 2

Design sem nome (2)

SQLPLUS Hash

Podemos utilizar o SQL PREFIX para executar o comando do sqlplus no meio de um statement ou bloco de código SQL.

Neste exemplo estamos realizando uma query na tabela Jobs e precisamos identificar o nome da coluna.

SQL> select job_id, job_title, min_salary,
#desc jobs
Nome Nulo? Tipo
--------------- -------- -----------------
JOB_ID NOT NULL VARCHAR2(10)
JOB_TITLE NOT NULL VARCHAR2(35)
MIN_SALARY NUMBER(6)
MAX_SALARY NUMBER(6)
max_salary from jobs where
min_salary > 2000;

JOB_ID JOB_TITLE MIN_SALARY MAX_SALARY
---------- ----------------------------------- ---------- ----------
AD_PRES President 20080 40000
AD_VP Administration Vice President 15000 30000
AD_ASST Administration Assistant 3000 6000

Neste exemplo habilitamos o output antes de executar o código.


SQL> BEGIN
DBMS_OUTPUT.PUT_LINE('Hello World');
# set serveroutput on
END;
/

Podemos executar vários comandos utilizando # (Pound ou Hash)


SQL> select *
#set lines 210 pages 1000
#col job_title format a40
from jobs;

Snapshot Standby (Dataguard)

Introduzido no Oracle 11g, o snapshot standby permite abrir o banco standby em modo leitura/escrita. Quando configurado para modo standby novamente, todas as alterações realizadas em modo leitura/escrita são perdidas.

Requisitos: Flashback Habilitado

SQL> ALTER DATABASE FLASHBACK ON;

Utilizando Dataguard Broker


$ dgmgrl sys/Password1@wint

DGMGRL> CONVERT DATABASE wint_stby TO SNAPSHOT STANDBY;

O Banco está em modo “SNAPSHOT STANBDY”


DGMGRL> show configuration

Configuracao - my_dg_config

Modo de Protecao: MaxPerformance
Membros:
wint - Banco de dados principal
wint_stby - Banco de dados stand-by de snapshots

Quando concluir, converta-o de volta para Standby.

DGMGRL> CONVERT DATABASE wint_stby TO PHYSICAL STANDBY;

Podemos ver que o banco volta para Physical Standby e a aplicação de archives é resumida.


DGMGRL> show configuration

Configuracao - my_dg_config

Modo de Protecao: MaxPerformance
Membros:
wint - Banco de dados principal
wint_stby - Banco de dados stand-by fisico

Utilizando SQLPLUS:


$ sqlplus sys/password@wint_stby as sysdba

SQL> alter database convert to snapshot standby;
SQL> alter database convert to physical standby;
SQL> alter database recover managed standby database disconnect;
SQL> FLASHBACK DATABASE TO BEFORE RESETLOGS;
SQL> ALTER DATABASE RECOVER MANAGED STANDBY DATABASE DISCONNECT FROM SESSION;
SQL> ALTER DATABASE RECOVER MANAGED STANDBY DATABASE USING CURRENT LOGFILE;

SQLPlus Error Logging

O comando SET ERRORLOGGING permite capturar os erros gerados pelas instruções SQL.


SQL> set errorlogging on;
SQL> desc SPERRORLOG

Nome Nulo? Tipo
------------ -------- ---------------
USERNAME VARCHAR2(256)
TIMESTAMP TIMESTAMP(6)
SCRIPT CLOB
IDENTIFIER VARCHAR2(256)
MESSAGE CLOB
STATEMENT CLOB

SQL> select * from tabela_inexistente;

*
ERRO na linha 1:
ORA-00942: a tabela ou view nao existe

Por padrão, os erros serão inseridos na tabela SPERRORLOG, mas pode ser definido manualmente.


SQL> select timestamp, message, statement from sperrorlog;

TIMESTAMP
------------------------------