Páginas

terça-feira, 19 de novembro de 2013

[PostgreSQL] - Criando Usuários, Tablespaces, Databases e Schemas


-- Criando Usuário no PostgreSQL --
CREATE ROLE zeus LOGIN
  ENCRYPTED PASSWORD 'Teste,.123'
  SUPERUSER INHERIT CREATEDB CREATEROLE REPLICATION;

-- Criando Tablespaces no PostgreSQL --
CREATE TABLESPACE tbs_zeustab OWNER zeus LOCATION 'C:\postgres\zeus\tablespaces\tab';
CREATE TABLESPACE tbs_zeusindx OWNER zeus LOCATION 'C:\postgres\zeus\tablespaces\indx';
CREATE TABLESPACE tbs_zeuslob OWNER zeus LOCATION 'C:\postgres\zeus\tablespaces\lob';

-- Criando Banco de dados vinculando os tablespace de armazenamento do usuário --
-- criando banco de dados com collate 'UTF8'
CREATE DATABASE zeus
       WITH OWNER = zeus
       ENCODING = 'UTF8'
       TABLESPACE = tbs_zeustab
       LC_COLLATE = 'Portuguese_Brazil.1252'
       LC_CTYPE = 'Portuguese_Brazil.1252'
       CONNECTION LIMIT = -1;

-- criando banco de dados com collate 'LATIN5'
CREATE DATABASE dbteste
 WITH OWNER = postgres
       ENCODING = 'LATIN5'
       TABLESPACE = pg_default
       LC_COLLATE = 'C'
       LC_CTYPE = 'C'
       CONNECTION LIMIT = -1;

-- criando banco de dados com collate 'LATIN1'
CREATE DATABASE dbteste1
  WITH OWNER = postgres
       ENCODING = 'LATIN1'
       TABLESPACE = pg_default
       LC_COLLATE = 'C'
       LC_CTYPE = 'C'
       CONNECTION LIMIT = -1;

-- Criando Schemas no PostgreSQL --

-- Schema: sisimobiliaria
-- DROP SCHEMA sisimobiliaria;
CREATE SCHEMA sisimobiliaria
  AUTHORIZATION zeus;
GRANT ALL ON SCHEMA sisimobiliaria TO zeus;

-- Schema: public
-- DROP SCHEMA public;
CREATE SCHEMA public
  AUTHORIZATION zeus;
GRANT ALL ON SCHEMA public TO zeus;
GRANT ALL ON SCHEMA public TO public;
COMMENT ON SCHEMA public
  IS 'standard public schema';        
    
-- Definido os tablespaces:
-- Para definir o tablespace, você deve procurar dois pontos importantes no seu dump ou criação: o ponto imediatamente anterior antes de criar as tabelas e o ponto imediatamente anterior a criação dos índices e constraints.

Antes da criação das tabelas coloque a seguinte linha:
SET default_tablespace = 'tbs_zeustab';

Antes da criação de índices e constraints, coloque a seguinte linha:
SET default_tablespace = 'tbs_zeusindx';
Banco de dados de Exemplo para PostgreSQL:
https://www.dropbox.com/s/qolrw6w0gcnwqdo/bd_exemplo_postgresql.zip
Documentação Oficial do PostgreSQL:
https://www.dropbox.com/s/1xzc3zx4dl2y98b/pgdocptbr800-1.2.pdf.zip

[Oracle] - Verificando sessões utilizadas e matando sessões

-- Verifica usuários que estão conectados no Oracle

SELECT
    S.SID,
    S.SERIAL#,
    S.USERNAME,
    S.MACHINE
  FROM  V$SESSION S


-- Mata Sessões no Oracle

select 'ALTER SYSTEM KILL SESSION '''||sid||','||serial#||''' IMMEDIATE;' as "MataUsuariosConectados"
from v$session
where username is not null
   and username not in ('SYS', 'SYSMAN', 'DBSNMP')
/

[MySQL] - Backup da estrutura e dados separados

-- Backup da estrutura do banco de dados
mysqldump -u root --password=teste -h 127.0.0.1 -n --default-character-set=utf8 --routines --triggers --events -d -v nome_banco > c:\dump\nome_banco_estrutura.sql 2> c:\dump\nome_banco_estrutura.error

-- Backup dos dados do banco de dados
mysqldump -u root --password=teste -h 127.0.0.1 -n -R -c -t -e -v -K nome_banco > c:\dump\nome_banco_dados.sql 2> c:\dump\nome_banco_dados.error

-- Select para validar objetos importados --

SET @nome_do_schema = 'nome_banco';
Select
(select schema_name from information_schema.schemata where schema_name=@nome_do_schema) as "Nome do Banco de dados",
(SELECT Round( Sum( data_length + index_length ) / 1024 / 1024, 3 )
FROM information_schema.tables
WHERE table_schema=@nome_do_schema
GROUP BY table_schema) as "Tamanho do Banco de dados em Mega Bytes",
(select count(*) from information_schema.tables where table_schema=@nome_do_schema and table_type='base table') as "Quant. Tabelas",
(select count(*) from information_schema.statistics where table_schema=@nome_do_schema) as "Quant. Índices",
(select count(*) from information_schema.views where table_schema=@nome_do_schema) as "Quant. Views",
(select count(*) from information_schema.routines where routine_type ='FUNCTION' and routine_schema=@nome_do_schema) as "Quant. Funções",
(select COUNT(*) from information_schema.routines where routine_type ='PROCEDURE' and routine_schema=@nome_do_schema) as "Quant. Procedimentos",
(select count(*) from information_schema.triggers where trigger_schema=@nome_do_schema) as "Quant. Triggers",
(select default_collation_name from information_schema.schemata where schema_name=@nome_do_schema)"Default collation do Banco de dados",
(select default_character_set_name from information_schema.schemata where schema_name=@nome_do_schema)"Default charset do Banco de dados",
(select sum((select count(*) from information_schema.tables where table_schema=@nome_do_schema and table_type='base table')+(select count(*) from information_schema.statistics where table_schema=@nome_do_schema)+(select count(*) from information_schema.views where table_schema=@nome_do_schema)+(select count(*) from information_schema.routines where routine_type ='FUNCTION' and routine_schema=@nome_do_schema)+(select COUNT(*) from information_schema.routines where routine_type ='PROCEDURE' and routine_schema=@nome_do_schema)+(select count(*) from information_schema.triggers where trigger_schema=@nome_do_schema))) as "Total de Objetos do Banco de dados"
LIMIT 0, 1000\G

-- Validando os dados importados --
select a.TABLE_SCHEMA, a.TABLE_TYPE , a.TABLE_NAME, a.TABLE_ROWS from information_schema.tables a where a.table_schema='nome_banco';

Procedure para envio de e-mails no Oracle

Pré-requisitos:

- Serviço de enfileiramento de mensagens SMTP instalado no Windows.
- Caso possua algum firewall ou anti-vírus, verifique se o mesmo não impede envios pela porta 25 (SMTP)

Procedure:

create or replace
procedure email_html (from_name varchar2, to_name varchar2,  subject varchar2, message varchar2) is
/***********************************************************************
Criacao     : Anderson Ayres
Objetivo    : Envia um email em formato HTML
Observacoes :
———————————————————————-
Historico das alteracoes:
———————————————————————-
Alteracao   : 10/03/2010 por Anderson Ayres Bittencourt
Objetivo    : Alteração de método de autenticação no servidor de email.
Observacoes : Os métodos possíveis de autenticação são: (validar qual o cliente utiliza)
UTL_SMTP.COMMAND(conn, ‘STARTTLS’); — comum em Exchange 2010.
UTL_SMTP.COMMAND(conn, ‘AUTH LOGIN’); — comum em Exchange 2007 e o mais utilizado por outros servidores de e-mail.
UTL_SMTP.COMMAND(conn, ‘AUTH NTLM’); — método para autenticação NTLM
UTL_SMTP.COMMAND(conn, ‘AUTH PLAIN’); — pouco utilizado… inseguro.
************************************************************************/v_smtp_server      varchar2(20) := ‘mail.superti.org‘;
v_smtp_server_port number  := 25;
v_directory_name   varchar2(100);
v_file_name        varchar2(100);
v_line             varchar2(1000);
crlf               varchar2(2):= chr(13) || chr(10);
mesg               varchar2(32767);
conn               UTL_SMTP.CONNECTION;
type varchar2_table is table of varchar2(200) index by binary_integer;begin
– Open the SMTP connection …
– ————————
conn:= utl_smtp.open_connection( v_smtp_server, v_smtp_server_port );– Initial handshaking …
– ——————-
utl_smtp.helo( conn, v_smtp_server );UTL_SMTP.COMMAND(conn, ‘AUTH LOGIN’);
UTL_SMTP.COMMAND(conn, UTL_RAW.CAST_TO_VARCHAR2(UTL_ENCODE.BASE64_ENCODE(UTL_RAW.CAST_TO_RAW(‘usuário_smtp‘))));
UTL_SMTP.COMMAND(conn, UTL_RAW.CAST_TO_VARCHAR2(UTL_ENCODE.BASE64_ENCODE(UTL_RAW.CAST_TO_RAW(‘senha‘))));
utl_smtp.mail( conn, ‘remetente‘ );
utl_smtp.rcpt( conn, to_name );
utl_smtp.open_data (conn);
– build the start of the mail message …
– ———————————–
UTL_SMTP.WRITE_RAW_DATA( conn,UTL_RAW.CAST_TO_RAW(‘Mime-Version: 1.0′ || utl_tcp.CRLF));
UTL_SMTP.WRITE_RAW_DATA( conn,UTL_RAW.CAST_TO_RAW(‘Content-Type: Text/html; charset=ISO-8859-1′ || utl_tcp.CRLF));
UTL_SMTP.WRITE_RAW_DATA( conn,UTL_RAW.CAST_TO_RAW(‘From:remetente@superti.org‘ ||utl_tcp.CRLF));
UTL_SMTP.WRITE_RAW_DATA( conn,UTL_RAW.CAST_TO_RAW(‘Date:’         ||  TO_CHAR( SYSDATE, ‘dd Mon yy hh24:mi:ss’ ) || utl_tcp.CRLF));
UTL_SMTP.WRITE_RAW_DATA( conn,UTL_RAW.CAST_TO_RAW(‘To:’         ||  to_name || utl_tcp.CRLF));
UTL_SMTP.WRITE_RAW_DATA( conn,UTL_RAW.CAST_TO_RAW(‘Subject:’     ||  subject || utl_tcp.CRLF));
utl_smtp.write_data(conn,’ ‘ || utl_tcp.CRLF);
utl_smtp.write_raw_data(conn,utl_raw.cast_to_raw(utl_tcp.CRLF||message));
utl_smtp.close_data( conn );
utl_smtp.quit( conn );
end;

Oracle – RMAN Configuração e comandos básicos para realizar backups

Partindo do princípio que sua base está ok e com o archivelog corretamente ligado e configurado, segue abaixo algumas sugestões de configuração e alguns comandos básicos para ter seu backup rodando, fazer consultas e limpezas:
A configuração abaixo mantem uma janela de recovery de 2 dias e configura o backup para executar na pasta E:\rman\. (Você pode e deve alterar para o seu local de backup)
#### CONFIGURANDO O RMAN ####
rman target /
CONFIGURE RETENTION POLICY TO RECOVERY WINDOW OF 2 DAYS;
CONFIGURE DEFAULT DEVICE TYPE TO DISK;
CONFIGURE CONTROLFILE AUTOBACKUP ON;
CONFIGURE CHANNEL DEVICE TYPE DISK FORMAT ‘E:\rman\BANCO.SERVER_RMAN_FULL_%s%t.bak’;
* As demais opções vamos deixar default *
#### LISTAR OS BACKUPS FEITOS ####
conectar… rman target….
# list backupset;
#### LISTAR TODAS AS CONFIGURAÇÕES DO RMAN ###
# show all;
#### CUIDADO!! LISTAR OS BACKUPS FEITOS ####
# list backup of database;
#### DELETAR OS BACKUPS ####
# delete backup;
#### LISTAR TODOS OS ARCHIVELOGS ####
# list archivelog all;
#### DELETAR TODOS OS ARCHIVELOGS ####
# delete force noprompt archivelog all;
#### DELETAR TODOS OS ARCHIVELOGS EXPIRADOS ####
# delete force noprompt expired archivelog all;