Recuperando as queries com mais processamento das últimas 12 horas

Com o select abaixo será retornado as queries com maior processamento nas últimas 12 horas.

SELECT TOP 10 qs.execution_count,
qs.total_worker_time total_worker_time ,
qs.min_worker_time/1000/60 min_worker_time,
qs.max_worker_time/1000/60 max_worker_time,
qs.last_worker_time/1000/60 last_worker_time,
TEXT,
SUBSTRING(qt.TEXT, (qs.statement_start_offset/2)+1,
((CASE qs.statement_end_offset
WHEN -1 THEN DATALENGTH(qt.TEXT)
ELSE qs.statement_end_offset
END - qs.statement_start_offset)/2)+1),
last_execution_time

FROM sys.dm_exec_query_stats qs
CROSS APPLY sys.dm_exec_sql_text(qs.sql_handle) qt
CROSS APPLY sys.dm_exec_query_plan(qs.plan_handle) qp
WHERE qs.last_execution_time >= DATEADD(hour, -12, getdate())
–ORDER BY qs.total_logical_reads DESC — logical reads
— ORDER BY qs.total_logical_writes DESC — logical writes
ORDER BY qs.total_worker_time DESC — CPU time

Recuperando as queries que estão sendo executadas no SQL Server

O select abaixo vai recuperar as queries que estão sendo executadas no momento.

SELECT text,r.start_time [Start Time],session_ID [SPID],
DB_NAME(database_id) [Database],
SUBSTRING(t.text,(r.statement_start_offset/2)+1,
CASE WHEN statement_end_offset=-1 OR statement_end_offset=0
THEN (DATALENGTH(t.Text)-r.statement_start_offset/2)+1
ELSE (r.statement_end_offset-r.statement_start_offset)/2+1
END) [Executing SQL],
Status,command,wait_type,wait_time,wait_resource,
last_wait_type
FROM sys.dm_exec_requests r
OUTER APPLY sys.dm_exec_sql_text(sql_handle) t
WHERE session_id != @@SPID -- don't show this query
AND session_id > 50 -- don't show system queries
ORDER BY r.start_time

Migrando schema Oracle RDS para um outro Oracle RDS

Este post tem como objetivo auxiliar vocês na migração de um schema oracle de um rds de origem para um outro de destino.

Você recebe a seguinte demanda do seu  gerente fofo  “Preciso atualizar ambiente de homologação com os dados de desenvolvimento.” Fácil né? Fácil, porcaria nenhuma!! Ele só não falou que o banco de dados é o RDS ORACLE, ai ferou né? E ai caboclo sabe fazer?

O titio aqui vai te ajudar!!!!

Passos que devem ser seguidos:

  • Criar uma instância ec2
  • Instalar o Oracle Xe
  • Configurar Swap
  • Gerar o dump no RDS de Origem
  • Criar o Link do servidor local com o RDS Oracle de origem
  • Fazer Download do Dump para o EC2
  • Criar o Link do servidor local com o RDS Oracle de destino
  • Fazer o upload do Dump para o servidor de destino
  • Realizar a importação dos dados no RDS Oracle de destino;

1 – Criar uma instância EC2 AWS

Vou levar em consideração que você já sabe criar uma instância no AWS EC2

2 – Instalar o ORACLE XE

yum install libaio bc flex
Baixar o rpm do oracle-xe-11.x.rpm.zip link aqui
unzip -q oracle-xe-11.2.0-1.0.x86_64.rpm.zip
 cd Disk1
rpm -ivh oracle-xe-11.2.0-1.0.x86_64.rpm
Ao finalizar a instalação execute o comando abaixo
 /etc/init.d/oracle-xe configure
Vai ocorrer um erro solicitando a criação de uma partição swap

3 – Configurar Swap

Para criação de uma partição swap é só seguir os passos abaixo
sudo dd if=/dev/zero of=/swapfile bs=1024 count=2048k
sudo mkswap /swapfile
sudo swapon /swapfile
chown root:root /swapfile
chmod 0600 /swapfile

Executar novamente  para configurar o oracle
/etc/init.d/oracle-xe configure
4 – Gerar o dump no RDS de Origem

Configurar o tnsnames.ora e adicionar
ORIGEM=
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = rds-oracle-origem)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = ORCL)
)
)

O comando abaixo você irá criar o dump no RDS ORACLE de origem

./expdp USER_DB_ORIGEM/123456@ORIGEM directory=data_pump_dir schemas=USER_DB_ORIGEMdumpfile=user_db_origem1.dmp

5 – Criar o Link do servidor local com o RDS Oracle de origem

Você deve se conectar no oracle local do ec2 e vamos criar um database link com o RDS Oracle origem e realizar o download do dump para o oracle local

Configurar a variavel ORACLE_HOME

ORACLE_HOME=/u01/app/oracle/product/11.2.0/xe
export ORACLE_SID=xe
export PATH=$ORACLE_HOME/bin:$PATH
export ORACLE_HOME

Conectar no banco local utilizando a linha abaixo
sqlplus system/STR_SENHA@XE

ao conectar execute o seguinte  comando
create database link to_origem connect to user_db_origem identified by 123456 using '(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=rds-oracle-origem)(PORT=1521))(CONNECT_DATA=(SID=ORCL)))';

6 – Fazer Download do Dump para o EC2

Agora vamos realizar o download do dump para o oracle local, se conecte no banco oracle local e execute o comando abaixo

BEGIN
DBMS_FILE_TRANSFER.GET_FILE(
source_directory_object => 'DATA_PUMP_DIR',
source_database => 'to_origem ',
source_file_name => 'user_db_origem.dmp',
destination_directory_object => 'DATA_PUMP_DIR',
destination_file_name => 'user_db_origem.dmp'
);
END;
/

7 – Criar o Link do servidor local com o RDS Oracle de destino

ainda conectado no oracle local do ec2 , vamos criar o link com o RDS Oracle destino para realizar o upload do dump para o RDS Oracle de destino
create database link to_destino connect to user_db_destino identified by 123456 using '(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=rds-oracle-destino)(PORT=1521))(CONNECT_DATA=(SID=ORCL)))';

8 – Fazer o upload do Dump para o servidor de destino

BEGIN
DBMS_FILE_TRANSFER.PUT_FILE(
source_directory_object => 'DATA_PUMP_DIR',
source_file_name => 'user_db_origem.dmp',
destination_directory_object => 'DATA_PUMP_DIR',
destination_file_name => 'user_db_origem.dmp',
destination_database => 'to_destino'
);
END;
/

9 – Realizar a importação dos dados no RDS Oracle de destino;

Adicionar o tns do RDS Oracle de origem no tnsnames.ora

DESTINO=
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = rds-oracle-destino)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = ORCL)
)
)

Ultimo passo realizar a importação do schema

./impdp USER_DB_DESTINO/123456@DESTINO DUMPFILE=user_db_origem.dmp DIRECTORY=DATA_PUMP_DIR  schemas=USER_DB_ORIGEM remap_schema=USER_DB_ORIGEM:USER_DB_DESTINO remap_tablespace=USER_DB_ORIGEM:USER_DB_DESTINO table_exists_action=replace

Redirect images error 404 Apache

Com o script abaixo eu redireciono todas as requisições que contenham .jpg, jpeg, gif, png e ico para uma imagem de 1 pixel, assim as requisições não serão passada para o server web (Tomcat/Jboss).

Caso a requisição http://localhost/img/photo.png de erro 404, o apache irá retorna a imagem pixel.png.

Lembrando que está imagem pixel deve ficar dentro do diretório configurado no DocumentRoot do virtualhost no Apache.
RewriteEngine On

RewriteCond %{REQUEST_URI} \.(jpg|jpeg|gif|png|ico)$ [NC]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule .*$ /pixel.png [L]

Dica do papai!!!

Evite sempre acessos desnecessários nos seus servidores web Java

como adicionar um volume novo no EC2 AWS linux

Adicionando um volume em uma instancia Linux na Amazon:

1 – Acessar o console amazon no item volume e crie um volume (observe qual a zona da maquina de destino, pois o volume deve está na mesma zona da respectiva maquina).

 

2 – crie uma pasta na instancia destino onde será o ponto de montagem do respectivo volume

mkdir /volume1

3 – lista os volumes que existe na respectiva maquina ;

cat /proc/partitions

mostrará algo como

202 1 20971520 xvda1
202 16 52428800 xvdb
202 80 209715200 xvdf

4 – formate o seu volume para um tipo especifico que no meu caso é ext4

mkfs -t ext4 /dev/xvdf

5 – edite o arquivo  vim /etc/fstab adicionando o conteúdo abaixo

/dev/xvdf          /volume1     ext4    defaults        0   0

6- monte o respectivo volume

mount /dev/xvdf         /volume1

 

 

 

 

 

Utilizando scp com ec2 aws amazon

Segue uma dica de como realizar scp no ec2-user

preciso copia  um arquivo da maquina A para maquina B

 

utilize o comando:

scp -i xxxxxx.pem /tmp/arquivo.txt  ec2-user@ec2-xx-xxx-xx-xxx.compute-1.amazonaws.com:/home/ec2-user/

xxxxxx.pem–> sua chave

/tmp/arquivo.txt –> arquivo que encontra-se na maquina A

ec2-user@ec2-xx-xxx-xx-xxx.compute-1.amazonaws.com–> usuario e host da maquina B

/home/ec2-user/ –> diretório onde será salvo o arquivo

 

antes de tudo dar a seguinte permissão no arquivo .pem

 

chmod 600 xxxx.pem