Páginas

sexta-feira, 18 de outubro de 2013

[ORACLE] - Backup do Rman para Linux

Script para efetuar backup do Rman no Linux:

#!/bin/bash

export ORACLE_SID=orateste
export ORACLE_HOME=/u01/app/oracle/product/11.2.0/db_1
export DTHMS=$(date +"%Y%m%d%H%M%S")
export ORACLE_BACKUP=/backup/bkp_rman

#
# Dir backup
destino=$ORACLE_BACKUP

# Variavel para contar o numero de backups
contador=`cat $destino/contador`

#Quantidade de dias para manter
qtde=3
incluir=$(($contador+1))
excluir=$(($contador-$qtde))

# Incrementa Variavel do Contador
/bin/echo $incluir > $destino/contador

# Cria o novo diretorio
arquivoincluir=$DTHMS"_"$incluir
/bin/mkdir -p $destino/$arquivoincluir

#
# Script RMAN
#
echo run { > $destino/backup_RMAN.rman
echo CONFIGURE RETENTION POLICY TO REDUNDANCY 1';' >> $destino/backup_RMAN.rman
echo CONFIGURE CONTROLFILE AUTOBACKUP ON';' >> $destino/backup_RMAN.rman
echo CONFIGURE BACKUP OPTIMIZATION ON';' >> $destino/backup_RMAN.rman
echo CONFIGURE ARCHIVELOG DELETION POLICY TO BACKED UP 1 TIMES TO DISK';' >> $destino/backup_RMAN.rman
echo CONFIGURE DEVICE TYPE DISK BACKUP TYPE TO COMPRESSED BACKUPSET PARALLELISM 1';' >> $destino/backup_RMAN.rman
echo CONFIGURE CHANNEL DEVICE TYPE DISK MAXPIECESIZE 4400M';'  >> $destino/backup_RMAN.rman
echo SET CONTROLFILE AUTOBACKUP FORMAT FOR DEVICE TYPE DISK TO "'""$ORACLE_BACKUP/$arquivoincluir/AUTO_%F.cf_spf""'"';' >> $destino/backup_RMAN.rman
echo backup format "'""$ORACLE_BACKUP/$arquivoincluir/db_%d_%s_%p.bus""'" database';'  >> $destino/backup_RMAN.rman
echo backup format "'""$ORACLE_BACKUP/$arquivoincluir/al_%d_%s_%p.bus""'" archivelog all delete all input';' >> $destino/backup_RMAN.rman
echo sql '"'"alter database backup controlfile to trace as ''$ORACLE_BACKUP/$arquivoincluir/TXT_"$ORACLE_SID"_CF.ctl''"'"'';'  >> $destino/backup_RMAN.rman
echo sql '"'"create pfile=''$ORACLE_BACKUP/$arquivoincluir/TXT_"$ORACLE_SID"_PF.ora'' from spfile"'"'';'  >> $destino/backup_RMAN.rman
echo }  >> $destino/backup_RMAN.rman
echo run {  >> $destino/backup_RMAN.rman
echo crosscheck archivelog all';' >> $destino/backup_RMAN.rman
echo crosscheck backup';' >> $destino/backup_RMAN.rman
echo delete noprompt expired backup';' >> $destino/backup_RMAN.rman
echo delete noprompt obsolete';'  >> $destino/backup_RMAN.rman
echo } >> $destino/backup_RMAN.rman
#
$ORACLE_HOME/bin/rman target / nocatalog @$destino/backup_RMAN.rman > $ORACLE_BACKUP/$arquivoincluir/BACKUP_LOG_"$ORACLE_SID"_$arquivoincluir.log

# Exclui o diretorio de backup antigo
cd $destino
arquivoexcluir=*_$excluir
rm -rf $arquivoexcluir

[ORACLE] - Script de Export Full do Oracle para Linux

Script de Export Full do Oracle para Linux:

#!/bin/bash

# Carrega variaveis do oracle
export ORACLE_SID=orateste
export ORACLE_HOME=/u01/app/oracle/product/11.2.0/db_1

# Variavel para formatar data
data=`date "+%d-%m-%Y"`

# Configuracao de Usuario
sqluser="system"
sqlpass="teste"

expdp $sqluser/$sqlpass full=Y directory=exp_dir dumpfile=expdb_ora11g-$data.dmp logfile=expdb_ora11g-$data.log


Bom pessoal, espero ajudar com o script acima auxiliando a automatização do processo de Export Full.

[ORACLE] - Scripts de Export do Oracle para Linux para schema específico


Scripts de Export do Oracle para Linux:

#!/bin/bash

# Carrega variaveis do oracle
export ORACLE_SID=orateste
export ORACLE_HOME=/u01/app/oracle/product/11.2.0/db_1

# Variavel para formatar data
data=`date "+%d-%m-%Y"`

# Configuracao de Usuario
sqluser="rm"
sqlpass="rm"

expdp $sqluser/$sqlpass directory=exp_dir dumpfile=exp_$sqluser-$data.dmp logfile=exp_$sqluser-$data.log schemas=$sqluser


Esse script é para fazer o DUMP de somente um usuário específico.
Espero ter ajudado!

quinta-feira, 17 de outubro de 2013

[MS SQL SERVER] - Verificar Arquivo do Banco de dados mais utilizado


Frequentemente precisamos monitorar a utilização de I/O e saber qual arquivo é o mais utilizado em uma base que possui vários arquivos é muito importante. Suponhamos que você isolou a tabela mais utilizada
em 3 arquivos diferentes. Agora para saber qual destes arquivos é o mais utilizado ficou um pouco mais difícil. Para facilitar, podemos utilizar o script abaixo:

SELECT DB_NAME(DB_ID()) AS [Database Name],[file_id], num_of_reads,
num_of_writes,
io_stall_read_ms, io_stall_write_ms,
CAST(100. * io_stall_read_ms/(io_stall_
read_ms + io_stall_write_ms) AS
DECIMAL(10,1)) AS [IO Stall Reads Pct],
CAST(100. * io_stall_write_ms/(io_stall_write_ms + io_stall_read_ms)
AS DECIMAL(10,1)) AS [IO Stall Writes Pct],
(num_of_reads + num_of_writes) AS [Writes + Reads], num_of_bytes_read,
num_of_bytes_written,
CAST(100. * num_of_reads/(num_of_reads + num_of_writes) AS
DECIMAL(10,1)) AS [# Reads Pct],
CAST(100. * num_of_writes/(num_of_reads + num_of_writes) AS
DECIMAL(10,1)) AS [# Write Pct],
CAST(100. * num_of_bytes_read/(num_of_bytes_read +
num_of_bytes_written) AS DECIMAL(10,1)) AS [Read Bytes Pct],
CAST(100. * num_of_bytes_written/(num_of_bytes_read +
num_of_bytes_written) AS DECIMAL(10,1)) AS [Written Bytes Pct]
FROM sys.dm_io_virtual_file_stats(DB_ID(), NULL) OPTION (RECOMPILE);

[ORACLE] - Verificando a quantidade de I/O por Sessão

 
SELECT sess.SID, sess.username, sess.osuser, sess.program,
sess.machine, s.statistic#, NAME, VALUE
FROM v$sesstat s, v$statname n, v$session sess
WHERE 
n.statistic# = s.statistic#

AND 
sess.SID = s.SID

AND 
n.statistic# IN (9, 42)