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
------------------------------