quinta-feira, 28 de agosto de 2014

Backup \ Restore - passo a passo por linha de comando no SQL SERVER


 Backup por linha de comando

BACKUP DATABASE DB_BANCO TO DISK=''Caminhoparasalvar\nomedobanco_yyyymmdd.bak '
GO
 ---------------------------------------------------------------------------------------------------------------------------

Robocopy – caso necessário copiar o database para outro servidor

D:\Robocopy\robocopy.exe \\caminhodeorigem\ \\caminhodedestino\ /TEE /LOG+:diretoriodolog\nomedolog.log /COPYALL
---------------------------------------------------------------------------------------------------------------------------

 Restore por linha do comando

RESTORE DATABASE DB_BANCO FROM DISK = 'caminhoondeestasalvo\arquivodobackup.bak'
WITH REPLACE,
MOVE 'db_banco _log' TO 'diretorioondeestasalvodoarquivodelogparasobrescrever\nomedoarquivodelog.ldf',
MOVE 'db_banco' TO 'diretorioondeestasalvodoarquivomdfparasobrescrever\nomedoarquivodemdf.mdf'
GO
---------------------------------------------------------------------------------

-- Verificando ultima data de restore

declare @database varchar(50)
set @database = 'SEU_DATABASE'
SELECT rsh.destination_database_name AS [Database]
,rsh.user_name AS [Restored By]
,rsh.restore_date AS [Restore Started]
,bmf.physical_device_name AS [Restored From]
,rf.destination_phys_name AS [Restored To]
FROM msdb.dbo.restorehistory rsh
INNER JOIN msdb.dbo.backupset bs
ON rsh.backup_set_id = bs.backup_set_id
INNER JOIN msdb.dbo.restorefile rf
ON rsh.restore_history_id = rf.restore_history_id
INNER JOIN msdb.dbo.backupmediafamily bmf
ON bmf.media_set_id = bs.media_set_id
where rsh.destination_database_name = @database
and rsh.restore_type = 'D'
ORDER BY rsh.restore_date DESC

 -----------------------------------------------------------------------------------

 Gera sincronismo usuários
use DB_BANCO
go
set nocount on
select 'use '+db_name()+char(10)+'go'
select 'set nocount on'
select 'select '''+name+''''+char(10)+
       'exec sp_change_users_login @Action = ''Auto_Fix'',@UserNamePattern = '''+name+''''+char(10)+'go'
from sys.sysusers where uid > 4
and issqluser = 1
and sid not in (select sid from master..syslogins)
go
------------------------------------------------------------------------------ 

Dicas para quem trabalha com index no SQL Server


Tabelas que não contêm índices clusteriazados.

 select distinct(tb.name) as Table_name, p.rows from sys.objects tb join sys.partitions p on p.object_id = tb.object_id Where type = ‘U’ and tb.object_id not in ( select ix.object_id from sys.indexes ix where type = 1 ) order by p.rows desc

------------------------------------------------------------------------------ 
  

Tabelas que não possuem chave primária.
 select distinct(tb.name) as Table_name, p.rows from sys.objects tb join sys.partitions p on p.object_id = tb.object_id Where type = ‘U’ and tb.object_id not in ( select ix.parent_object_id from sys.key_constraints ix where type = ‘PK’ ) order by p.rows desc

------------------------------------------------------------------------------ 
 

Tabelas que mais seriam beneficiadas com novos índices.
SELECT TOP 15 AVG((avg_total_user_cost * avg_user_impact * (user_seeks + user_scans))) as Impacto,mid.object_id, mid.statement as Tabela FROM sys.dm_db_missing_index_group_stats AS migs JOIN sys.dm_db_missing_index_groups AS mig ON migs.group_handle = mig.index_group_handle JOIN sys.dm_db_missing_index_details AS mid ON mig.index_handle = mid.index_handle and database_id = db_id(‘SEU Banco de Dados AQUI ‘) GROUP BY mid.object_id, mid.statement ORDER BY Impacto DESC;

 ------------------------------------------------------------------------------ 
 

Top 15 índices, sugeridos pelo SGBD.
SELECT TOP 15 (avg_total_user_cost * avg_user_impact * (user_seeks + user_scans)) as Impacto, migs.group_handle, mid.index_handle, migs.user_seeks,migs.user_scans, mid.object_id, mid.statement, mid.equality_columns, mid.inequality_columns, mid.included_columns FROM sys.dm_db_missing_index_group_stats AS migs JOIN sys.dm_db_missing_index_groups AS mig ON migs.group_handle = mig.index_group_handle JOIN sys.dm_db_missing_index_details AS mid ON mig.index_handle = mid.index_handle and database_id = db_id(‘SEU Banco de Dados AQUI’) –and mid.object_id = object_id(‘tabela’) — se desejar ver apenas para uma tabela específica order by Impacto DESC;

 ------------------------------------------------------------------------------ 

 

Índices nunca utilizados pelo SGBD.
select tb.name as Table_Name, ix.name as Index_Name, ix.type_desc, leaf_insert_count,leaf_delete_count, leaf_update_count, nonleaf_insert_count ,nonleaf_delete_count, nonleaf_update_count from sys.dm_db_index_usage_stats vw join sys.objects tb on tb.object_id = vw.object_id join sys.indexes ix on ix.index_id = vw.index_id and ix.object_id = tb.object_id join sys.dm_db_index_operational_stats(db_id(‘AdventureWorks’), Null, NULL, NULL) vwx on vwx.object_id = tb.object_id and vwx.index_id = ix.index_id where vw.database_id = db_id(‘AdventureWorks’)and vw.user_seeks = 0 and vw.user_scans = 0 and vw.user_lookups = 0 and vw.system_seeks = 0 and vw.system_scans = 0 and vw.system_lookups = 0 Order By leaf_insert_count desc, tb.name asc, ix.name asc

 ------------------------------------------------------------------------------ 

 

2 - indices de sistemas nunca utilizados
select
tb.name as Table_Name,
ix.name as Index_Name,
ix.type_desc,
leaf_insert_count,
leaf_delete_count,
leaf_update_count,
nonleaf_insert_count,
nonleaf_delete_count,
nonleaf_update_count
from sys.dm_db_index_usage_stats vw
join sys.objects tb on tb.object_id = vw.object_id
join sys.indexes ix on ix.index_id = vw.index_id and
 ix.object_id = tb.object_id
join sys.dm_db_index_operational_stats(db_id('msdb_org'), Null, NULL, NULL)
vwx on vwx.object_id = tb.object_id and vwx.index_id = ix.index_id
where ix.name <> 'clust' and ix.name <> 'nc' and ix.name <> 'nc1' and ix.name <> 'nc2' and ix.name <> 'nc3'  and ix.name <> 'clst'
And vw.user_seeks = 0 and vw.user_scans = 0 and vw.user_lookups = 0 
Order By leaf_insert_count desc, tb.name asc, ix.name asc
------------------------------------------------------------------------------



Avaliando índices.
select ix.name, ix.type_desc, vwy.partition_number, vw.user_seeks, vw.last_user_seek, vw.user_scans, vw.last_user_scan, vw.user_lookups, vw.user_updates as ‘Total_User_Escrita’,(vw.user_scans + vw.user_seeks + vw.user_lookups) as ‘Total_User_Leitura’,vw.user_updates – (vw.user_scans + vw.user_seeks + vw.user_lookups) as ‘Dif_Read_Write’,ix.allow_row_locks, vwx.row_lock_count, row_lock_wait_count, row_lock_wait_in_ms,ix.allow_page_locks, vwx.page_lock_count, page_lock_wait_count, page_lock_wait_in_ms,ix.fill_factor, ix.is_padded, vwy.avg_fragmentation_in_percent, vwy.avg_page_space_used_in_percent, ps.in_row_used_page_count as Total_Pagina_Usada,ps.in_row_reserved_page_count as Total_Pagina_Reservada,convert(real,ps.in_row_used_page_count) * 8192 / 1024 / 1024 as Total_Indice_Usado_MB, convert(real,ps.in_row_reserved_page_count) * 8192 / 1024 / 1024 as Total_Indice_Reservado_MB,page_io_latch_wait_count, page_io_latch_wait_in_ms from sys.dm_db_index_usage_stats vw join sys.indexes ix on ix.index_id = vw.index_id and ix.object_id = vw.object_id join sys.dm_db_index_operational_stats(db_id(‘ArtigosMS’), OBJECT_ID(N’Log’), NULL, NULL) vwx on vwx.index_id = ix.index_id and ix.object_id = vwx.object_id join sys.dm_db_index_physical_stats(db_id(‘ArtigosMS’), OBJECT_ID(N’Log’), NULL, NULL , ‘SAMPLED’) vwy on vwy.index_id = ix.index_id and ix.object_id = vwy.object_id and vwy.partition_number = vwx.partition_number join sys.dm_db_partition_stats PS on ps.index_id = vw.index_id and ps.object_id = vw.object_id where vw.database_id = db_id(‘ArtigosMS’) AND object_name(vw.object_id) = ‘Log’ order by user_seeks desc, user_scans desc

 ------------------------------------------------------------------------------ 


Tabelas com maior quantidade de índices.
 select x.id, x.table_name, x.Total_index, count(*) as Total_column from sys.columns cl join (select ix.object_id as id, tb.name as table_name, count(ix.object_id) as Total_index from sys.indexes ix join sys.objects tb on tb.object_id = ix.object_id and tb.type = ‘u’group by ix.object_id, tb.name) x on x.id = cl.object_id group by id, table_name, Total_index order by 3 desc

Comando para gerar novo evento de log - no sql server

Segue o comando para gerar um novo log de eventos no sql server

Use master
GO
SP_cycle_errorlog
Go

 

Verificando ultima data de restore

Segue o comando para averiguar data do ultimo restore do banco

declare @database varchar(50)
set @database = 'SEU_DATABASE'
SELECT rsh.destination_database_name AS [Database]
,rsh.user_name AS [Restored By]
,rsh.restore_date AS [Restore Started]
,bmf.physical_device_name AS [Restored From]
,rf.destination_phys_name AS [Restored To]
FROM msdb.dbo.restorehistory rsh
INNER JOIN msdb.dbo.backupset bs
ON rsh.backup_set_id = bs.backup_set_id
INNER JOIN msdb.dbo.restorefile rf
ON rsh.restore_history_id = rf.restore_history_id
INNER JOIN msdb.dbo.backupmediafamily bmf
ON bmf.media_set_id = bs.media_set_id
where rsh.destination_database_name = @database
and rsh.restore_type = 'D'
ORDER BY rsh.restore_date DESC

sexta-feira, 15 de agosto de 2014

BCP - SQLSERVER

Primeiramente e importante lembrar que para o bcp do sql server é necessario verificar a versão eo caminho instalado do mesmo na sua maquina, no caso este executada é instalação 2005 é no caminho

"D:\Program Files\Microsoft SQL Server\90\Tools\Binn\bcp"

-------------------------------------------------------------------------------
OUT

Bcp Database..tabela OUT arquivo.txt -c -t#@# -r#+# -Uusuario -Salias,porta –olog.log

Onde:

BCP: é o parâmetro de entrada e no caso do SQL pode ser colocado o caminho completo para execução do mesmo ;

Database: Nome do database;

Tabela: Neste caso pode ser tabela ou viewer , no caso de viewer a mesma pode ser criada afim de melhorar a performance de extração dos dados ;

Arquivo: Um nome para o arquivo a ser extraído;

-c -t#@# -r#+#: estes são extensões padrões;

-Uusuario: este usuário e informado pelo dba no momento da extração;

-Salias : Alias do servidor do banco de dados;

Porta: porta do servidor da importação;

- olog.log: este parâmetro e para gerar o arquivo de log da extração o mesmo deve ser nomeado de acordo com a necessidade;

Exemplo:

"D:\Program Files\Microsoft SQL Server\90\Tools\Binn\bcp" DB_Teste..Teste out teste.dmp -c -t#@# -r#+# -Ugalileu -Ssqlserver,1433  -o Teste.log

 

IN

Bcp Database..tabela OUT arquivo.txt -c -t#@# -r#+# -Uusuario -Salias,porta -b2000 –olog.log

Onde:

BCP: é o parâmetro de entrada e no caso do SQL pode ser colocado o caminho completo para execução do mesmo ;

Database: Nome do database ;

Tabela: Neste caso deve ser o nome da tabela para importação;

Arquivo: Este parâmetro deve ser o mesmo do out pois e o nome do arquivo extraído para importação

-c -t#@# -r#+#: o mesmo obrigatoriamente deve ser o mesmo do out.

-Uusuario: este usuário e informado pelo dba no momento da extração;

-Salias : apontamento do servidor de acordo com o dsedit da maquina;

Porta: porta do servidor da extração, no caso do sybase dependera da configuração do dsedit;

-b2000: este parâmetro e para efetuar o comitê de 2000 em 2000 linhas o mesmo deve existir mas pode ser alterado conforme a necessidade do analista

- olog.log: este parâmetro e para gerar o arquivo de log da extração o mesmo deve ser nomeado de acordo com a necessidade;

 

"D:\Program Files\Microsoft SQL Server\90\Tools\Binn\bcp" DB_Teste..Teste IN Teste.dmp  -c -t#@# -r#+# -Ugalileu –Ssqlserver2,3570  –b10000 -o Teste _in.log

quinta-feira, 14 de agosto de 2014

Comandos basicos oracle

OBS.: Vale lembrar que são somente comandos basicos, podendo variar de ambiente para ambiente.
 

Listagem 1: VARIÁVEIS DE AMBIENTE

CONN SYSTEM @INSTANCIAS POOL

mailto:SYSTEM@INSTANCIAS POOL "> SYSTEM@INSTANCIAS POOL>

C:\LOGSSET ECHO ONSET TIMING ONSET LINES 1000SET SQLBL ON

ALTER SESSION SET NLS_DATE_FORMAT = ‘DD/MM/YYYY HH24:MI:SS’;

SELECT SYSDATE FROM DUAL;

SHOW USER

 

Listagem 2: VERIFICA INSTANCIA

SELECT * FROM GLOBAL_NAME;

DUMP

 

Listagem 3: VERIFICAR QUAIS SÃO OS USUÁRIOS DO SISTEMA

SELECT USERNAME FROM DBA_USERS WHERE USERNAME LIKE ‘USER%‘;

 

Listagem 4: CONTA OBJETOS DO SCHEMA

SELECT COUNT(OBJECT_TYPE), OBJECT_TYPEFROM DBA_OBJECTS

WHERE OWNER LIKE ‘USER%‘

GROUP BY OBJECT_TYPE;

SPOOL OFF

 

Listagem 5: NO TERMINAL LINUX

$export ORACLE_SID=INSTANCE

$exp system@INSTANCE BUFFER=1000000 FILE=EXP_INSTANCE_USER_DATA.DMP LOG=EXP_INSTANCE_USER_DATA.LOG OWNER=USUÁRIOS LISTADOS CONSISTENT=Y

gzip EXP_INSTANCE_USER_DATA*

 

Listagem 6: VERIFICAR SE TEM ALGUM USUÁRIO USANDO O SISTEMA

SELECT SADDR, SID, USERNAME, LOGON_TIME, STATUS, OSUSER, MACHINE, PROGRAM

FROM V$SESSION WHERE USERNAME LIKE ‘USER%‘;

 

Listagem 7: VERIFICAR QUAIS SÃO OS USUÁRIOS DO SISTEMA

SELECT USERNAME FROM DBA_USERS WHERE USERNAME LIKE ‘USER%‘;

 

Listagem 8: VERIFICA ATRIBUTOS DO USUÁRIO

SELECT * FROM DBA_USERS WHERE USERNAME LIKE ‘USER%‘;

SELECT * FROM DBA_TAB_PRIVS WHERE GRANTOR LIKE ‘USER%‘;

 

Listagem 9: VERIFICA PREVILEGIOS DO USUÁRIO

SELECT * FROM DBA_SYS_PRIVS WHERE GRANTEE LIKE ‘USER%‘;

SELECT * FROM DBA_ROLE_PRIVS WHERE GRANTEE LIKE ‘USER%‘;[/

 

Listagem 10: CONTA OBJETOS DO SCHEMA

SELECT COUNT(OBJECT_TYPE), OBJECT_TYPEFROM DBA_OBJECTSWHERE OWNER LIKE LIKE ‘USER%‘GROUP BY OBJECT_TYPE;

 

Listagem 11: DESATIVA USUÁRIO

ALTER USER USER ACCOUNT LOCK;

ALTER USER USER PASSWORD EXPIRE;

 

Listagem 12: VERIFICA STATUS DA CONTA

SELECT USERNAME, ACCOUNT_STATUS FROM DBA_USERS WHERE USERNAME LIKE ‘USER%’;

 

Listagem 13: VERIFICAR SE TEM ALGUM USUÁRIO USANDO O SISTEMA

SELECT SADDR, SID, USERNAME, LOGON_TIME, STATUS,OSUSER, MACHINE, PROGRAM FROM V$SESSION;

 

Listagem 14: VERIFICAR QUAIS SÃO OS USUÁRIOS DO SISTEMA

SELECT USERNAME FROM DBA_USERS ;

 

Listagem 15: VERIFICA ATRIBUTOS DO USUÁRIO

SELECT * FROM DBA_USERS;

SELECT * FROM DBA_TAB_PRIVS;

 

Listagem 16: VERIFICA PREVILEGIOS DO USUÁRIO

SELECT * FROM DBA_SYS_PRIVS;

 

Listagem 17: VERIFICA PREVILEGIOS DE ROLE

SELECT * FROM DBA_ROLE_PRIVS;

 

Listagem 18: CONTA OBJETOS DO SCHEMA

SELECT COUNT(OBJECT_TYPE), OBJECT_TYPE FROM DBA_OBJECTSGROUP BY OBJECT_TYPE;

 

Listagem 19: NO TERMINAL

EXPORT ORACLE_SID=INSTANCE

SQLPLUS / AS SYSDBA

SQL> SHUTDOWN IMMEDIATE;

 

Listagem 20: VERIFICAR QUAIS SÃO OS USUÁRIOS DO SISTEMA

SELECT USERNAME FROM DBA_USERS WHERE USERNAME LIKE ‘USER%‘;

 

Listagem 21: VERIFICA SE O OBJETOS JÁ EXISTE

SELECT OWNER, OBJECT_NAME, OBJECT_TYPE,CREATED, LAST_DDL_TIME, STATUS FROM ALL_OBJECTS

WHERE OWNER LIKE ‘USER%‘ AND OBJECT_NAME = ‘OBJECT_NAME’;

 

Listagem 22: CONTA OBJETOS DO SCHEMA

SELECT COUNT(OBJECT_TYPE), OBJECT_TYPE FROM DBA_OBJECTS

WHERE OWNER LIKE ‘USER%‘

GROUP BY OBJECT_TYPE;

 

Listagem 23: CONTA OBJETOS INVALIDOS

SELECT COUNT (*) FROM DBA_OBJECTS WHERE STATUS=’INVALID’AND OWNER LIKE ‘USER%‘;

 

Listagem 24: VERIFICA OBJETOS INVALIDOS

SELECT OBJECT_TYPE, OBJECT_NAME, STATUS FROM DBA_OBJECTS

WHERE STATUS=’INVALID’ AND OWNER LIKE ‘USER%‘;

 

Listagem 25: EXECUTA O SCRIPT

CONN USER@INSTANCE

@C:\CAMINHO\SCRIPT.SQL

CONN SYSTEM@INSTANCE


 

Listagem26: VERIFICA SE O OBJETOS JÁ EXISTE

SELECT OWNER, OBJECT_NAME, OBJECT_TYPE,CREATED, LAST_DDL_TIME, STATUS

FROM ALL_OBJECTS

WHERE OWNER LIKE ‘USER%‘ AND OBJECT_NAME = ‘OBJECT_NAME’;

 

Listagem 27: CONTA OBJETOS DO SCHEMA

SELECT COUNT(OBJECT_TYPE), OBJECT_TYPE FROM DBA_OBJECTS

WHERE OWNER LIKE ‘USER%‘ GROUP BY OBJECT_TYPE;

 

Listagem 28: CONTA OBJETOS INVALIDOS

SELECT COUNT (*)FROM DBA_OBJECTS WHERE STATUS=’INVALID’ AND OWNER LIKE ‘USER%‘;

 

Listagem 29: VERIFICA OBJETOS INVALIDOS

SELECT OBJECT_TYPE, OBJECT_NAME, STATUS FROM DBA_OBJECTS WHERE STATUS=’INVALID’AND OWNER LIKE ‘USER%‘;

 

Listagem 30: GERA SCRIPTS DOS OBJETOS INVALIDOS

SELECT ‘ALTER’’ ‘ OBJECT_TYPE ’ ‘OWNER ’.' OBJECT_NAME ‘ COMPILE;’ FROM DBA_OBJECTS

WHERE STATUS=’INVALID’ AND OWNER LIKE ‘USER%‘;

 

Listagem 31: VERIFICA OBJETOS INVALIDOS

SELECT OBJECT_NAME, OBJECT_TYPE, STATUSFROM DBA_OBJECTS

WHERE STATUS=’INVALID’ AND OWNER LIKE ‘USER%‘;

 

Listagem 32: - VERIFICAR SE EXISTE ESSE USUÁRIO NO SISTEMA

SELECT USERNAME FROM DBA_USERSWHERE USERNAME LIKE ‘USER%‘;

 

Listagem 33: CRIAR A TABLESPACE PARA O USUÁRIO

CREATE TABLESPACE INSTANCE_SCHEMA_01

DATAFILE ‘CAMINHO/INSTANCE_SCHEMA.DBF’

SIZE 64M AUTOEXTEND ON NEXT

1M SEGMENT SPACE MANAGEMENT AUTO;

 

Listagem 33: VERIFICA SE TEM ALGUMA ROLE PARA ESSE USUÁRIO

SELECT * FROM DBA_ROLES WHERE ROLE LIKE ‘%USER%‘;

SELECT * FROM DBA_SYS_PRIVS WHERE LIKE ‘%USER%‘;

SELECT * FROM DBA_TAB_PRIVS WHERE LIKE ‘%USER%‘;

 

Listagem 34: CRIAR O USUÁRIO

CREATE USER USERIDENTIFIED BY ‘SENHA‘DEFAULT TABLESPACE INSTANCE_SCHEMA_01TEMPORARY TABLESPACE TEMP;

 

Listagem 34: APLICA GRANT

GRANT RESOURCE, CONNECT TO USER;

 

Listagem 35: VERIFICAR SE O USUÁRIO FOI CRIADO

SELECT * FROM DBA_USERSWHERE USERNAME LIKE ‘USER%‘;

 

Listagem 36: VERIFICA ROLES DO USUARIO CRIADO

SELECT * FROM DBA_SYS_PRIVS WHERE GRANTEE LIKE ‘USER%‘;

SELECT * FROM DBA_ROLE_PRIVS WHERE GRANTEE LIKE ‘USER%‘

 

Listagem 37: VERIFICAR OS USUÁRIOS DO SISTEMA

SELECT * FROM DBA_USERS WHERE USERNAME LIKE ‘USER%‘;Listagem 38: ALTERA A SENHA

 

Listagem 38: ALTERA A SENHA

ALTER USER USER IDENTIFIED BY ‘SENHA‘;Listagem 39: VERIFICAR OS USUÁRIOS DO SISTEMA

 

Listagem 39: VERIFICAR OS USUÁRIOS DO SISTEMA

SELECT * FROM DBA_USERS WHERE USERNAME LIKE ‘USER%‘;