Treinamentos TOTVS 2011
Treinamento Banco de dados TOTVS 2011
SUMARIO
Sumário TREINAMENTO BANCO DE DADOS.................................................................... 1 INTRODUÇÃO ....................................................................................................... 7 DESCRIÇÃO DO FUNCIONAMENTO DO BANCO DE DADOS ........................... 8 FUNÇÕES BÁSICAS DE UM SGBD: .................................................................... 8 ARQUITETURA SUPORTADAS ............................................................................ 9 INSTALAÇÃO DO SQL SERVER 2008 ............................................................... 15 PREPARANDO A INSTALAÇÃO - MS SQL SERVER 2008 .......................................... 15 INICIANDO A INSTALAÇÃO – SQL SERVER 2008 ..................................................... 16 1.2 – CENTROS DE INSTALAÇÃO DO SQL SERVER ................................................. 17 1.3 – ESPECIFICAÇÕES DA EDIÇÃO SQL SERVER 2008.......................................... 18 1.4 – LICENCIAMENTO DO PRODUTO ..................................................................... 19 1.5 INSTALAÇÃO DOS ARQUIVOS DE SUPORTE DE INSTALAÇÃO. ............................... 20 Clique no botão Install. .......................................................................... 20 1.6 – CHECANDO CONFIGURAÇÃO DO SISTEMA ...................................................... 21 1.7 – SELECIONANDO COMPONENTES PARA A INSTALAÇÃO ..................................... 22 1.8 – NOME DA INSTÂNCIA ................................................................................... 23 1.9- VERIFICAÇÃO DO ESPAÇO EM DISCO .............................................................. 24 1.10 CONFIGURAÇÃO DO SERVER ........................................................................ 25 1.11 CONFIGURAÇÃO DE COLLATION .................................................................... 27 2.1 - CONFIGURAÇÃO ACCOUNT PROVISIONIG:......................................... 28 2.2 - NA JANELA ERROR AND USAGE REPORTING.................................................... 30 2.3 - NA OPÇÃO DE INSTALLATION RULES:............................................................. 31 2.4- NA OPÇÃO READY TO INSTALL ...................................................................... 32 2.5 - NO FINAL DA INSTALAÇÃO CLIQUE EM CLOSE: ................................................ 33 VERIFICAÇÃO DO COLLATION DAS BASES SQL SERVER ............................ 34 SCRIPTS PARA CRIAÇÃO DE USUÁRIOS NAS VERSÕES 2000,2005 E 2008 DO SQL SERVER. .................................................................................................... 37 SQL SERVER 2000 ............................................................................................ 37 SQL SERVER 2005 ............................................................................................ 38 SQL SERVER 2008 ............................................................................................ 39 CONFIGURAÇÕES DO SERVIDOR ................................................................... 40 PARAMETRIZANDO O BANCO CORPORE NO SERVIDOR SQL SERVER ..... 41 LIMITES DO SQL SERVER 2005 ........................................................................ 44 CONFIGURAÇÃO DAS MÁQUINAS CLIENTES SQL SERVER: ........................ 46 DEMONSTRANDO ALGUMAS FUNÇÕES BÁSICAS DE UM SGDB (SQL SERVER): ................................................................................................................. 47 FUNÇÃO BACKUP PARA BASE DE DADOS NO SQL SERVER: .................... 48 TOTVS-2011 – Let’s Share
2
DEMONSTRANDO COMO FAZER UM BACKUP NO SQL SERVER 2005: ..... 49 FUNÇÃO RESTAURAÇÃO DE UM BACKUP DE BASE DE DADOS NO SQL SERVER: ....... 55 DEMONSTRANDO COMO RESTAURAR UM BACKUP NO SQL SERVER 2005: ...................................................................................................................... 55 FUNÇÃO DETACH DE UMA BASE DE DADOS NO SQL SERVER: ................ 61 FUNÇÃO ATTACH DE UM BASE DE DADOS NO SQL SERVER: ................... 63 PROCEDIMENTOS PARA EXECUTAR O PROFILER DO SQL SERVER 2005. 66 MANUTENÇÃO NA BASE DE DADOS DA RM: .................................................. 71 DICAS DE PERFORMANCE SQL SERVER ....................................................... 74 1)CONFIGURAR A MEMÓRIA UTILIZADA PELO SQL SERVER................................... 74 2) UTILIZAÇÃO DE PROCESSADORES .................................................................... 75 3) ALOCAÇÃO DE ESPAÇO EM DISCO .................................................................... 75 4) DISTRIBUIÇÃO DE ARQUIVOS DO BANCO DE DADOS NO DISCO ............................ 76 5) SOLUÇÕES BASEADAS EM HARDWARE .............................................................. 76 6) RODAR DIARIAMENTE ATUALIZAÇÃO DE ESTATÍSTICAS ........................................ 77 RECRIAR TODOS OS ÍNDICES DA BASE DE DADOS SEMANALMENTE. ......................... 77 RODAR SEMANALMENTE O DBCC CHECKDB ...................................................... 77 DESMARQUE AS SEGUINTES OPÇÕES NO BANCO DE DADOS:................................... 78 DICAS PARA QUALQUER BANCO DE DADOS ................................................. 78 1) TRABALHAR COM SERVIDOR DEDICADO PARA O BD ............................................ 78 2) DESABILITAR ANTI VIRUS ................................................................................. 78 3)VERIFICAR SE O DISCO ESTÁ FRAGMENTADO. ..................................................... 78 INSTALAÇÃO DO ORACLE 11G SERVER ......................................................... 79 1.1 - INICIANDO A INSTALAÇÃO ............................................................................. 79 Observações: ................................................................................................ 80 VERIFICANDO AS CONFIGURAÇÕES DO MICRO: ....................................................... 81 1.2 - W ELCOME .................................................................................................. 82 1.3 - TIPOS DE INSTALAÇÃO E LINGUAGEM............................................................. 83 1.4 - DEFININDO A LOCALIZAÇÃO DOS ARQUIVOS ................................................... 84 1.5 – VERIFICAÇÃO DE PRÉ-REQUISITOS ............................................................... 86 1.6 – OPÇÃO DE CONFIGURAÇÃO DO BANCO ........................................................ 87 1.7 – CONFIGURAÇÃO DO BANCO ......................................................................... 88 1.8 – OPÇÕES DE CONFIGURAÇÃO DO BANCO DE DADOS ...................................... 89 1.9– DETALHES DE CONFIGURAÇÃO DO BANCO DE DADOS .................................... 90 1.10 – OPÇÃO DE GERENCIAMENTO DE BANCO DE DADOS ..................................... 92 1.11 – OPÇÕES DE ARMAZENAMENTO DE ARQUIVOS DO BANCO ............................. 93 1.12– OPÇÕES DE BACKUP E RECUPERAÇÃO ....................................................... 95 1.13 – SENHAS DO BANCO DE DADOS .................................................................. 96 1.14– GERENCIAMENTO DE CONFIGURAÇÃO DE REGISTROS ................................... 97 1.15 – LISTA DE PRODUTOS A SEREM INSTALADOS ................................................ 98 1.16- AGUARDANDO A INSTALAÇÃO ...................................................................... 99 1.17 - CONFIGURANDO AS FERRAMENTAS ........................................................... 100 1.18- IDENTIFICAÇÃO DA INSTÂNCIA.................................................................... 101 1.19 – FIM DA INSTALAÇÃO ................................................................................ 102 CRIANDO UMA INSTÂNCIA NO ORACLE 11G................................................ 103 TOTVS-2011 – Let’s Share
3
0 – BEM-VINDO ................................................................................................. 103 1 – OPERAÇÕES ............................................................................................... 103 2 – MODELOS DE BANCO DE DADOS ................................................................... 103 3 – IDENTIFICAÇÃO DO BANCO DE DADOS ........................................................... 103 4 – OPÇÕES DE GERENCIAMENTO ...................................................................... 103 5 – CREDENCIAIS DO BANCO DE DADOS ............................................................. 103 6– OPÇÕES DE ARMAZENAMENTO ...................................................................... 104 7 – LOCALIZAÇÃO DOS ARQUIVOS DE BANCO DE DADOS ...................................... 104 8 – CONFIGURAÇÃO DE RECUPERAÇÃO .............................................................. 104 9 – CONTEÚDO DO BANCO DE DADOS................................................................. 104 10 – PARÂMETROS DE INICIALIZAÇÃO ................................................................. 104 11 – DEFINIÇÕES DE SEGURANÇA ...................................................................... 104 12 – TAREFAS DE MANUTENÇÃO AUTOMÁTICA .................................................... 105 13 - ARMAZENAMENTO DE BANCO DE DADOS ...................................................... 105 14 – OPÇÕES DE CRIAÇÃO ................................................................................ 105 NETCA ............................................................................................................... 106 CRIANDO ALIAS PARA A BASE....................................................................... 109 1.4 - ATIVANDO O UTILITÁRIO SQL PLUS ............................................................ 114 1.5 - EXECUTANDO O SCRIPT PARA GERAÇÃO DOS TABLESPACES ........................ 116 1.5 – EXCLUINDO O SCHEMA RM (OPCIONAL) .................................................. 117 1.6 - EXECUTANDO O SCRIPT PARA CRIAÇÃO DE USUÁRIOS ................................. 118 CRIANDO ARQUIVO DE PARÂMETROS PARA IMPORTAÇÃO DE DADOS DA BASE EXEMPLO
............................................................................................................................. 119 IMPORTAR A BASE ............................................................................................. 119 COMANDOS ÚTEIS ORACLE........................................................................... 123 SEGURANÇA NO CORPORE RM .................................................................... 126 BDE ADMINISTRATOR: .................................................................................... 127 1 - CONFIGURANDO O BDE PARA ACESSAR O SQL SERVER: ................................ 128 CONFIGURANDO O BDE PARA ACESSAR O ORACLE ............................... 130 PARAMETRIZAÇÃO DO BDE ........................................................................ 131 CONVERSÃO DA BASE DE DADOS VERSÃO 11.20 ...................................... 133 PROCEDIMENTOS DE ANÁLISE E MANUTENÇÃO DA BASE DE DADOS. .. 140 SQL SERVER .................................................................................................... 140 PROCEDIMENTOS PARA EXECUTAR O PROFILER DO SQL SERVER 2005. ............................................................................................................................. 140 DBCC – DATABASE CONSISTENCY CHEKER ............................................... 145 COMANDOS DE MANUTENÇÃO .................................................................. 146 COMANDOS DE STATUS.............................................................................. 147 COMANDOS DE VALIDAÇÃO ....................................................................... 148 SENTENÇAS SQL ............................................................................................. 149 DML - Linguagem de Manipulação de Dados ............................................. 149 SELECT .................................................................................................. 149 INSERT ................................................................................................... 150 TOTVS-2011 – Let’s Share
4
UPDATE ................................................................................................. 150 DELETE .................................................................................................. 150 DDL - Linguagem de Definição de Dados................................................... 150 CREATE ................................................................................................. 150 DROP...................................................................................................... 150 DCL - LINGUAGEM DE CONTROLE DE DADOS ............................................. 150 GRANT ................................................................................................... 150 REVOKE ................................................................................................. 150 BEGIN TRAN .......................................................................................... 150 COMMIT ................................................................................................. 150 ROLLBACK ............................................................................................. 151 CONSULTANDO DADOS ATRAVÉS DE SENTENÇAS SQL PELO SQL SERVER:................................................................................................................. 151 CONSULTANDO DADOS ATRAVÉS DE SENTENÇAS SQL PELO ORACLE: 152 PROPRIEDADES DE UMA TABELA NO SQL SERVER ................................... 153 CLÁUSULAS...................................................................................................... 154 ORDER BY - Utilizada para ordenar os registros selecionados com uma ordem especifica. ............................................................................................. 155 UNION - Utilizada para unir duas ou mais colunas. .................................... 155 Operadores Lógicos.................................................................................... 155 Operadores de Comparação ...................................................................... 155 FUNÇÕES DE AGRUPAMENTO ............................................................................. 155 As funções de agrupamento se usam dentro de uma cláusula “SELECT” em grupos de registros para devolver um único valor que se aplica a um grupo de registros. Elas ignoram valores nulos. ............................................................. 155 EXPRESSÕES ARITMÉTICAS: ............................................................................... 156 EXEMPLIFICANDO ALGUMAS SENTENÇAS SQL: ......................................... 157 SELECTS ....................................................................................................... 157 CONSULTAS COM JUNÇÃO ......................................................................... 168 OUTER JOINS ................................................................................................ 169 SUBQUERY ................................................................................................... 171 INSERT .............................................................................................................. 172 UPDATE ............................................................................................................ 172 DELETE ............................................................................................................. 173 CREATE ............................................................................................................ 174 ALTER TABLE ................................................................................................... 175 DROP................................................................................................................. 177 GRANT .............................................................................................................. 178 REVOKE ............................................................................................................ 179 BEGIN TRAN ..................................................................................................... 180 ROLLBACK ........................................................................................................ 181 TOTVS-2011 – Let’s Share
5
OTIMIZAÇÃO DE CONSULTAS SQL ................................................................ 183 HARDWARE ...................................................................................................... 184 ARQUIVOS ........................................................................................................ 185 OTIMIZANDO O DESEMPENHO DO SERVIDOR USANDO OPÇÕES DE CONFIGURAÇÃO DE MEMÓRIA ........................................................................ 188 OTIMIZANDO O DESEMPENHO DO SERVIDOR USANDO OPÇÕES DE CONFIGURAÇÃO DE E/S ................................................................................... 189 RAID ............................................................................................................... 189 UTILIZANDO GRUPOS DE ARQUIVOS COM RAID ...................................... 192 BOAS PRÁTICAS E TUNNING ......................................................................... 198 ORACLE ........................................................................................................... 198 CONFIGURAÇÃO DE BANCO DE DADOS EXTERNO - MSSQL .................... 202 INTRODUÇÃO ............................................................................................... 202 ERROS COMUNS OCORRIDOS NO BDE ADMINISTRATOR. ........................ 206
TOTVS-2011 – Let’s Share
6
INTRODUÇÃO
Aviso Em se tratando de banco de dados podemos ter uma grande variedade de utilizações e procedimentos, porém as informações abaixo são aplicáveis aos ambientes internos da TOTVS para análise e testes dos atendentes do Help Desk, em ambientes complexos e de produção algumas configurações podem ter abordagens diferentes, portanto este material é uma material de treinamento interno e que não deve ser usado para criação de ambientes complexos e de produção. TOTVS-2011 – Let’s Share
7
Para esta abordagem é necessário um contato com a equipe de Infra-Estrutura e Banco de dados.
Descrição do funcionamento do banco de dados Podemos entender por banco de dados qualquer sistema gerenciador que reúna e mantenha organizada uma série de informações relacionadas a um determinado assunto em uma determinada ordem.
Funções básicas de um SGBD: O trabalho com uma base de dados implica diversos tipos de operações sobre as tabelas e os dados que eles contêm, tais como:
•
Função Backup para uma Base de Dados.
•
Função Restauração de um backup já feito para uma base de dados.
•
Inserir novos registros;
•
Procurar e visualizar um registro;
•
Eliminar registros existentes;
•
Selecionar registros e/ou campos;
•
Ordenar os registros de uma tabela;
•
Juntar ou intercalar registros de tabelas diferentes;
TOTVS-2011 – Let’s Share
8
•
Fazer cópias ou duplicações de Tabelas;
•
Alterar a estrutura de campos de uma Tabela;
•
Eliminar Tabelas;
OBS: As Funções acima são geralmente feitas através de “Sentenças feitas na Linguagem SQL”, também chamados de “Scripts” ou “Query”.Visando melhor aproveitamento da solução de gestão empresarial que reúne todos os aplicativos, o Corpore RM é composto de uma base de dados que contém as tabelas de todos os aplicativos que a TOTVS oferece.
ARQUITETURA SUPORTADAS
•
CLIENTE/SERVIDOR
A arquitetura Cliente/Servidor é estruturada em duas camadas. A primeira camada é onde se localiza o aplicativo. Essa camada é responsável pela regra de negócio, comandos de manipulação de dados e interface com o usuário. A segunda camada é onde se encontra a base de dados, responsável pelo armazenamento de informações e execução dos comandos oriundos da camada cliente.
TOTVS-2011 – Let’s Share
9
- Multi-camadas A arquitetura Multi-Camadas é estruturada para poder dar uma maior mobilidade, desempenho e facilidade de manutenções na aplicação. Em seu conceito geral, essa arquitetura, possui no mínimo 3 camadas. A primeira camada contempla a interface com o usuário. A segunda camada é responsável pelo tratamento da regra de negocio do aplicativo. Já a terceira camada é responsável pelas transações do banco de dados.
- Web
TOTVS-2011 – Let’s Share
10
A arquitetura Web, o cliente acessa o Servidor Web, onde está instalado o TOTVS Portal, via intranet ou extranet. O Servidor Web possui uma camada de Biblioteca cliente, onde se localiza a camada de interface com o usuário, que acessa via Remoting o Servidor de Aplicações. Este por sua vez acessa ao Servidor de Banco de Dados via ADO.Net
•
TERMINAL SERVICE
A arquitetura RM via Terminal Service permite o cliente acessar o Servidor de Terminal Service na rede da empresa ou via internet e utilizar os produtos da Linha RM seguindo a mesma arquitetura de Winform e Webform.
TOTVS-2011 – Let’s Share
11
Observações Para ambiente com grande volume de processamento, a TOTVS recomenda o uso de um servidor de aplicação. O modelo de arquitetura Multi-Camadas será o padrão do software da linha RM em 2011. Processos para Geração de Cubos e Relatórios, Cálculo de Folha, devem ser agendados para períodos de menor carga de processamento dos servidores. Utilize filtros que retornem no máximo 200 registros na visão. No cadastro de Servidores de Aplicação, utilize o campo “Número máximo de Registros” para limitar os registros retornados do banco de dados. Não utilize a base de produção para Armazenamento dos Cubos
TOTVS-2011 – Let’s Share
12
Os aplicativos da linha CorporeRM são homologados para trabalhar nos servidores de BD:
A TOTVS recomenda aos usuários do banco de dados Microsoft SQL Server 2000, o upgrade para o SQL Server 2005 ou 2008 e reconfiguração do seu nível de isolamento, para obter melhorias de desempenho. Bancos de dados do MS-SQL 2005 e MS-SQL 2008 devem ter o Nível de Compatibilidade “SQL Server 2000 (8)”. É necessário instalar os servidores SQL’s com essa compatibilidade para manter a estabilidade de comunicação entre o BDE e o banco de dados. O banco de dados da RM não suporta replicação total (de todas as tabelas) da base de dados. É recomendado pela TOTVS que o software de banco de dados não seja virtualizado. Consulte previamente a TOTVS caso você queira criar triggers ou stored procedures na base de dados RM. A TOTVS recomenda que o produto RM BIS (Gestão Estratégica) seja executado em uma base de dados D-1 para não comprometer o desempenho da base de dados de produção. Atualmente, totalizamos um banco de aproximadamente 4468 tabelas onde existem mais de 13053 relacionamentos que contribuem com o bom funcionamento e desempenho do sistema.
TOTVS-2011 – Let’s Share
13
As tabelas são diferenciadas pelas letras iniciais, onde são referenciadas da seguinte forma:
A tabela GDIC (GCAMPOS) contém a descrição de todas as tabelas, colunas e o que o campo armazena. A chamamos de Dicionário de Dados. A
tabela
GLINKSREL
contém
a
descrição
de
todas
as
constraints
(relacionamento entre tabelas) que o Corpore RM possui na versão específica. A tabela GAUTOINC é utilizada para o controle de auto incremento de algumas colunas nos diversos sistemas. Ex: A consulta select * from gautoinc where codautoinc='codpessoa' irá retornar o número de pessoas que estão cadastradas no Corpore, este valor vai conferir com o da sentença SELECT MAX(CODIGO) FROM PPESSOA As tabelas GPARAMS, GUSUARIO, GPERMIS, GACESSO, GSISTEMA, GCOLIGADA, GUSRPERFIL são alimentadas ao importar o arquivo de licença e as
TOTVS-2011 – Let’s Share
14
mesmas contêm os dados da empresa e suas permissões de acesso, veja mais detalhes no item de segurança.
INSTALAÇÃO DO SQL SERVER 2008 Este guia tem como objetivo auxiliar a instalação do gerenciador de banco de dados SQL Server 2008 para a execução padrão do Corpore RM. 1. O Assistente de Instalação instalará os pré-requisitos do SQL Server se eles ainda não estiverem no computador. Os pré-requisitos incluem: •
.NET Framework 3.5 SP1
•
SQL Server Native Client
•
Arquivos de Suporte à Instalação do SQL Server
Para instalar os pré-requisitos, clique em Instalar. 2. O Verificador de Configuração do Sistema verificará o estado do sistema do computador antes da continuação da Instalação.
Preparando a instalação - MS SQL Server 2008 Para efetuar a instalação do MS SQL Server 2008, é necessário mapear um drive de rede para o CD-ROM caso o computador não possua CD-ROM.
TOTVS-2011 – Let’s Share
15
Iniciando a instalação – SQL Server 2008 No Windows Explorer 1 – Acesse o CD ou o caminho mapeado do SQL Server 2008 e dê um duplo clique no arquivo Setup.exe.
TOTVS-2011 – Let’s Share
16
1.2 – Centros de Instalação do SQL Server No diálogo apresentado, escolha a opção “New SQL Serverstand-alone installations or add features to an existing installation”:
TOTVS-2011 – Let’s Share
17
1.3 – Especificações da edição SQL Server 2008
•
Clique no botão Next
•
Clique no 1 botão OK.
TOTVS-2011 – Let’s Share
18
1.4 – Licenciamento do Produto 1 – Leia o termo de responsabilidade. 2 – Marque a opção I accept the licensing terms. 3 – Clique no botão Next.
TOTVS-2011 – Let’s Share
19
1.5 Instalação dos arquivos de suporte de instalação. •
Clique no botão Install.
TOTVS-2011 – Let’s Share
20
1.6 – Checando configuração do sistema
TOTVS-2011 – Let’s Share
21
1.7 – Selecionando componentes para a instalação
TOTVS-2011 – Let’s Share
22
No diálogo Components to Install: Os componentes listados abaixo são os essenciais para utilização do produto TOTVS, porém os demais componentes podem ser selecionados de acordo com a necessidade do cliente. 1 – Selecione a opção Database Engine Services. 2 – Selecione as opções Managment Tools- Basic , SQL Server Books Online e Managment Tools- Complete 3 – Clique no botão Next.
3
1.8 – Nome da instância TOTVS-2011 – Let’s Share
23
No diálogo Instance Configuration: 1 – Selecione a opção Default Instance. 2 – Clique no botão Next. Esta etapa define o nome pelo qual seu servidor SQL irá responder. Se escolher pela instância padrão o SQL terá o mesmo nome de seu servidor, se for uma instância nomeada o SQL irá atender por: NOME_SERVIDOR\NOME_SQL.
1.9- Verificação do espaço em disco
TOTVS-2011 – Let’s Share
24
•
Clique em Next:
1.10 Configuração do Server TOTVS-2011 – Let’s Share
25
No diálogo Service Account: 1 – Marque a opção SQL Server Agent. 2 – Selecione a opção SQL Server Database Engine. 3 – Marque a opção SQL Server Browser. 4 – Clique no botão Next.
Use the same account for all SQL Server services
TOTVS-2011 – Let’s Share
26
1.11 Configuração de Collation •
Marque a opção Customize
•
Marque a opção: SQL_Latin1_General_CP1_CI_AI
•
Clique em Ok
TOTVS-2011 – Let’s Share
27
2.1 - CONFIGURAÇÃO ACCOUNT PROVISIONIG: 1. Marque a opção Mixed Mode - Nessa opção, poderão autenticar tanto contas Windows e contas criadas posteriormente dentro do SQL. 2. Defina a senha do usuário SA - Atenção: O SA é o usuário master do seu SQL Server, por isso não atribua uma senha fraca e não ESQUEÇA a senha . 3. Adicionar uma conta Windows ao grupo de administradores do SQL. Clicando em ADD ou pode adicionar uma conta de administrador e também o usuário atual clicando no botão Add Current User
TOTVS-2011 – Let’s Share
28
TOTVS-2011 – Let’s Share
29
2.2 - Na janela error and usage reporting 1- Clique em Next
TOTVS-2011 – Let’s Share
30
2.3 - Na opção de Installation Rules: 1- Clique em Next
TOTVS-2011 – Let’s Share
31
2.4- Na opção Ready To Install 1- Clique em Install
TOTVS-2011 – Let’s Share
32
2.5 - No final da instalação clique em Close:
Instalação concluída com Sucesso.
Os produtos TOTVS utilizam o modo de autenticação pelo Windows e pelo SQL Server. Isso significa que além do usuário poder se conectar no banco através de um usuário/senha já previamente cadastrado no Windows NT/2000/XP/VISTA/..., como descrito no modo acima, ele também pode se conectar através de logins exclusivos do SQL Server. No caso das aplicações da linha rm, são utilizados dois logins específicos: Os logins RM e SYSDBA. O login rm tem permissão de dbo(database owner) ou dono da base, já o usuário sysdba possui permissão para selecionar apenas algumas tabelas de controle da aplicação. Default language: English Usuários: São utilizados por padrão os seguintes usuários/alias para acesso ao Banco de Dados. Usuário SYSDBA (cujo nome e senha não devem ser alterados). Este usuário tem acesso apenas às tabelas de LOGIN e deve ser criado/configurado através do script USUARIOS.SQL. TOTVS-2011 – Let’s Share
33
Alias RM (que é tratado como Dono do Banco de Dados). Este usuário deve ser criado/configurado através do script USUARIOS.SQL ou ACERTAUSUARIOS.SQL Deve-se atentar para a seguinte questão: Não deve existir na base um usuário rm, e sim um alias que age como dono das tabelas, portanto na pasta security>users do SQL Server Management Studio ou Enterprise Manager não deve existir o usuário rm, já em security>logins deve existir ambos os logins rm e sysdba. Veja o padrão em security>users
Propriedades do banco de dados: Ansi Null Default: ON; Auto Create Statistics: OFF; Auto Update Statistics: OFF. Autenticação: Feita pelo SQL Server e Windows.
Verificação do collation das bases SQL Server TOTVS-2011 – Let’s Share
34
Seguindo o padrão da TOTVS, na criação do banco Corpore SQL SERVER, deve-se
utilizar o
collation
CP1_Latin1_General_CP1_CI_AI,
(DICTIONARY
ORDER, CASE-INSENSITIVE, ACCENT-INSENSITIVE, FOR USE WHITH 1252 CHARACTER SET) lembramos que na instalação o default é o sort order 52; Para verificar qual o collation está alocado em um cliente, basta logar no SQL Server Enterprise Manager, clicar com o botão da direita no nome do servidor, propriedade | collation. Caso o collation esteja incorreto, para acertá-lo colocando o padrão Corpore, deve-se reinstalar o SQL Serve, selecionando a opção correta.
Para verificar o colation da database, deve clicar com o botão da direita do mouse no nome da database | propriedades. Para acertar um collation incorreto de acordo com o padrão Corpore, apenas pode ser executado via banco de dados através de customização.
TOTVS-2011 – Let’s Share
35
TOTVS-2011 – Let’s Share
36
Scripts para criação de usuários nas versões 2000,2005 e 2008 do SQL Server. Criação do SYSDBA e RM no SQL Server:
SQL Server 2000 SP_CONFIGURE 'ALLOW UPDATES', '1' go RECONFIGURE WITH OVERRIDE go DELETE SYSUSERS WHERE NAME = '\RM' DELETE SYSUSERS WHERE NAME = '\SYSDBA' DELETE SYSUSERS WHERE NAME = 'RM' DELETE SYSUSERS WHERE NAME = 'SYSDBA' /* CRIAÇÃO DOS USUÁRIOS */ IF NOT EXISTS(SELECT * FROM MASTER.DBO.SYSLOGINS WHERE NAME = 'RM') EXEC SP_ADDLOGIN RM,RM GO sp_addalias RM,dbo GO IF NOT EXISTS(SELECT * FROM MASTER.DBO.SYSLOGINS WHERE NAME = 'SYSDBA') EXEC SP_ADDLOGIN SYSDBA,masterkey GO sp_adduser SYSDBA,SYSDBA GO GRANT SELECT ON GPARAMS TO SYSDBA GO GRANT SELECT, UPDATE ON GUSUARIO TO SYSDBA GO GRANT SELECT ON GPERMIS TO SYSDBA GO GRANT SELECT ON GACESSO TO SYSDBA GO GRANT SELECT ON GSISTEMA TO SYSDBA GO GRANT SELECT ON GCOLIGADA TO SYSDBA GO GRANT SELECT ON GUSRPERFIL TO SYSDBA GO GRANT SELECT ON GSISTEMA TO SYSDBA GO SP_CONFIGURE 'ALLOW UPDATES', '0' go RECONFIGURE WITH OVERRIDE go
TOTVS-2011 – Let’s Share
37
SQL Server 2005 IF EXISTS(SELECT * FROM DBO.SYSUSERS WHERE NAME = 'SYSDBA') EXEC sp_dropuser 'SYSDBA' GO IF EXISTS(SELECT * FROM DBO.SYSUSERS WHERE NAME = '\SYSDBA') EXEC sp_dropuser 'SYSDBA' GO IF EXISTS(SELECT * FROM DBO.SYSUSERS WHERE NAME = 'sysdba') EXEC sp_dropuser 'sysdba' GO IF EXISTS(SELECT * FROM DBO.SYSUSERS WHERE NAME = '\sysdba') EXEC sp_dropuser 'sysdba' GO IF EXISTS(SELECT * FROM DBO.SYSUSERS WHERE NAME = '\rm') EXEC sp_dropalias 'rm' GO IF EXISTS(SELECT * FROM DBO.SYSUSERS WHERE NAME = '\RM') EXEC sp_dropalias 'RM' GO IF EXISTS(SELECT * FROM DBO.SYSUSERS WHERE NAME = '\RM') EXEC sp_dropalias '\RM' GO IF NOT EXISTS(SELECT * FROM MASTER.DBO.SYSLOGINS WHERE NAME = 'rm') CREATE LOGIN rm WITH PASSWORD = 'rm',CHECK_POLICY=OFF GO EXEC sp_addalias rm,dbo GO IF NOT EXISTS(SELECT * FROM MASTER.DBO.SYSLOGINS WHERE NAME = 'sysdba') CREATE LOGIN sysdba WITH PASSWORD = 'masterkey',CHECK_POLICY=OFF GO EXEC sp_adduser sysdba,sysdba GO GRANT SELECT ON GPARAMS TO sysdba GO GRANT SELECT , UPDATE ON GUSUARIO TO sysdba GO GRANT SELECT ON GPERMIS TO sysdba GO GRANT SELECT ON GACESSO TO sysdba GO GRANT SELECT ON GSISTEMA TO sysdba GO GRANT SELECT ON GCOLIGADA TO sysdba GO GRANT SELECT ON GUSRPERFIL TO sysdba GO GRANT SELECT ON GSERVICO TO sysdba GO
TOTVS-2011 – Let’s Share
38
SQL Server 2008 /* 1º Parte */ SP_DROPUSER SYSDBA GO EXEC SP_CHANGEDBOWNER sa GO /* 2º Parte */ /* Criação dos usuários RM e SYSDBA */ IF NOT EXISTS(SELECT * FROM MASTER.DBO.SYSLOGINS WHERE NAME = 'rm') CREATE LOGIN rm WITH PASSWORD = 'rm',CHECK_POLICY=OFF GO
EXEC SP_CHANGEDBOWNER rm GO IF NOT EXISTS(SELECT * FROM MASTER.DBO.SYSLOGINS WHERE NAME = 'sysdba') CREATE LOGIN sysdba WITH PASSWORD = 'masterkey',CHECK_POLICY=OFF GO sp_adduser sysdba,sysdba GO GRANT SELECT ON GPARAMS TO sysdba GO GRANT SELECT , UPDATE ON GUSUARIO TO sysdba GO GRANT SELECT ON GPERMIS TO sysdba GO GRANT SELECT ON GACESSO TO sysdba GO GRANT SELECT ON GSISTEMA TO sysdba GO GRANT SELECT ON GCOLIGADA TO sysdba GO GRANT SELECT ON GUSRPERFIL TO sysdba GO GRANT SELECT ON GSERVICO TO sysdba GO
TOTVS-2011 – Let’s Share
39
CONFIGURAÇÕES DO SERVIDOR
Versão do SQL Server
RTM
SP1
SP2
SP3
SP4
(sem SP)
SQL Server 2008
10.00.1600.22
SQL Server 2005
9.00.1399.06
9.00.2047
9.00.3042
SQL Server 2000
8.00.194
8.00.384
8.00.532
8.00.760
8.00.2039
SQL Server 7.0
7.00.623
7.00.699
7.00.842
7.00.961
7.00.1063
No servidor será necessário instalar apenas o banco de dados e o Service Pack do mesmo. SQL Server. Para verificar a versão do Service Pack no SQL Server, execute o seguinte comando no Query Analyser: select @@version Para verificar uma lista completa de builds acesse: http://sqlserverbuilds.blogspot.com/
TOTVS-2011 – Let’s Share
40
O select abaixo nos traz informações como a versão,edição e service Pack do SQL além do nome da instancia, collation se está como single user etc... select serverproperty('productversion') as versão, cast(serverproperty('machinename') as sysname) as nome_maquina, cast(serverproperty('instancename')as sysname) as instancia_nomeada, cast(serverproperty('edition') as sysname) as edição, cast(serverproperty('productlevel') as sysname) as service_pack, cast(serverproperty('isclustered') as bit) as isclustered, cast(serverproperty('issingleuser') as bit) as issingleuser, cast(serverproperty('engineedition') as int) as engineedition, cast(databasepropertyex('nomedabase','collation')as sysname) as collation_base, convert(sysname, serverproperty('collation')) as collation_servidor
PARAMETRIZANDO O BANCO CORPORE NO SERVIDOR SQL SERVER Primeiramente, verifique a autenticação que está sendo realizada para conexão do SQL. Para isso, basta clicar com o botão direito do mouse no nome do servidor (Entreprise Manager), ir em propriedades. Na guia security, marque a autenticação SQL Server and Windows, o CorporeRM utiliza o usuário do banco de dados para realizar a autenticação do sistema, por este motivo, precisamos da autenticação do SQL para acessar o sistema; verifique se o serviço vai reiniciar após confirmar esta opção. Partindo do pressuposto que a base vazia foi criada com o nome de Corpore, o script de usuários também já foi executado na mesma, vamos conferir alguns parâmetros no banco: Ao selecionar o menu propriedades, clicando com o botão direito do mouse em cima da base Corpore, estarão todas as informações sobre a base de dados nas guias que iremos descrever:
TOTVS-2011 – Let’s Share
41
1. General – esta guia contém informações gerais da base, como data de criação, nome, tamanho, último backup... 2. Data files – contém o nome do file name, a localização do arquivo mdf que contém os dados, e o tamanho do mesmo. Podemos criar arquivos secundários apontando discos diferentes, que assim que esgotar o espaço do primeiro arquivo irá dar continuidade ao próximo. Sugerimos que seja parametrizado para o crescimento automático (Automatically Grow File) e no File Growth utilizar o file percent (10); já no Maximum File Size devemos ter muito critério ao marcar a opção de Unrestrict File Growth, apesar de recomendarmos, pois enquanto tiver espaço em disco e o banco necessitar ele irá expandir sem problemas, porém se o espaço estourar poderá danificar o banco de dados. 3. Transaction Log - contém o nome do file name, a localização do arquivo ldf que contém o log, e o tamanho do mesmo. Quanto à configuração, podemos basear nos critérios do Data files.
4. Filegroupes – Os grupos de arquivos permitem que os arquivos de banco de dados e objetos sejam logicamente agupados. A configuração padrão da RM não utiliza este recuro. 5. Options – Nesta guia, fazemos a seguinte recomendação: No Recovery Model, utilize a opção Simple que é para bancos pequenos ou os dados não são alterados com alta freqüência. Este modelo usa cópias completas ou diferenciais do banco de dados e a recuperação é limitada à restauração do banco até o ponto em que foi feito o último backup, porém os logs ocupam menos espaços no servidor. Caso deseje, poderá alterar este modelo a qualquer momento, de acordo com a sua necessidade, basta realizar um backup antes de alterar. Veja mais detalhes Na guia Settings solicitamos que marque somente o parâmetro:
TOTVS-2011 – Let’s Share
42
•
Ansi Null Default – quando esta opção é setada, os tipos de dados ou colunas que não estão explicitamente definidas como NOT NULL durante a criação ou alteração da tabela irá permitir valores nulos.
Verificando os demais parâmetros: •
Auto Close – quando esta opção está marcada, o banco criará overhead adicional associado com abertura e fechamento de arquivos do banco de dados, o que não recomendamos para bancos que estão constantemente em utilização.
•
Recursive Trigger – se não for adequadamente implementada, a recursão pode levar a loop sem fim.
•
Auto Shrink – caso esta opção esteja setada o banco e os arquivos de log se encolhem automaticamente, reduzindo o espaço de disco rígido e isso pode degradar o desempenho, caso seja necessário encolher o banco, poderá utilizar o comando DBCC SHRINKDATABASE.
•
Auto Update Statistics – configurada como True, as estatísticas de índice são automaticamente atualizadas, podendo gerar queda de desempenho
•
Auto Create Statistics – configurada como True, as estatísticas de índice são automaticamente criadas, sempre que você criar um índice, o SQL Server cria um conjunto de estatísticas sobre os dados contidos dentro do índice. O otimizador de consulta utiliza essas estatísticas para determinar se ele deve ou não utilizar o índice para ajudar a processar a consulta. Esta opção deve estar desmarcada para não gerar estatísticas em todas as tabelas, nosso banco já tem os índices devidamente criados, por isso, agende
uma
rotina
para
executar
a
procedure
RMATUALIZAESTATISTICAS que só atualiza das tabelas do Corpore. Ex: Quando o sistema executa um comando e que tenha uma cláusula WHERE e o Create Statistics está habilitado, o otimizador de consultas cria estatísticas até mesmo para colunas que não têm índices, mas que aparecem na cláusula WHERE. •
Torn Page Detection – este parâmetro marcado detecta se uma página está danificada, listando no event viewer, fica a critério do cliente marcar ou não esta opção, pois não influenciará no desempenho do banco
TOTVS-2011 – Let’s Share
43
•
Use Quoted Identifiers – marcando esta opção, os nomes de objetos dentro de aspas duplas não precisam obedecer à conveção para atribuição de nomes reservados ao SQL, como “date”, “primary”, sugerimos a não marcação deste parâmetro.
•
Compatibility Level – favor deixar com compatibilidade 8.0, caso contrário o banco irá preservar as características dos bancos anteriores, podendo trazer perda de desempenho por utilizar planos de execução de versões mais antigas.
LIMITES DO SQL SERVER 2005 Limites do Sistema Endereçamento de Memória
32TB
(64-bit)
64GB (32-bit using PAE) Número
máximo
de
processadores Número máximo de nós em Cluster
64
(64-bit)
32 (32-bit) 8 – versão Enterprise no Windows Server 2003 2 – versão Standard
Instâncias por servidor
50
Locks por isntância
Limitada
pela
memória
(64-bit)
2,147,483,647 (32-bit)
Limites do Database Databases por servidor
32,767
Tamanho do Database
1,048,516TB
Arquivos por database
32,767
Filegroups por database
265
Tamanho arquivo de dados
32TB
Tamanho arquivo de log
32TB
TOTVS-2011 – Let’s Share
44
Objetos no database
2,147,483,647
Identifier length
128
Limites das Tabelas Tabelas por database
Limitado pelo número de objetos em um database
Linhas por tabela
Limitado pelo disco
PRIMARY KEY por tabela
1
FOREIGN KEY por tabela
253
References por tabela
253
Triggers por tabela
Limitado pelo número de objetos em um database
Índices Clustered por tabela
1
Índices
NonClustered
por
249
constraints
por
249 nonclustered, 1 clustered
tabela UNIQUE tabela
Limites de Colunas Colunas por índice
16
Colunas por primary key
16
Colunas por foreign key
16
Colunas por table
1024
Tamanho da chave do Índice
900 bytes
Bytes por coluna caractere ou coluna binária
8000
(binary ) Bytes por text, ntext, ou image
2GB
Bytes por row
8060
Bytes por Índice
900
Bytes por primary key
900
TOTVS-2011 – Let’s Share
45
Bytes por foreign key
900
Limites do T-SQL Batch size
65,536 multiplicados pelo tamanho do pacote de rede
Tabelas por SELECT
256
Bytes no source text de
até 250MB
uma stored procedure Parâmetros por stored
1024
procedure Nested subqueries
32
Nested trigger levels
32
Colunas por SELECT
4096
Colunas por INSERT
1024
CONFIGURAÇÃO DAS MÁQUINAS CLIENTES SQL SERVER: Nas estações devemos instalar: 1) Client do banco de dados (Para SQL 2000 e Oracle) 2) BDE (versão 5.20 – para conferência, clique com o botão direito do mouse em cima de CoporeRM e em Version Information certifique a versão da maioria das DLL´s). 3) MDAC 2.81 ou superior (para certificar que a versão está correta, vá no iniciar, executar e digite regedit, abrindo o regedit peça para localizar MDAC, aperte a tecla F3 que a próxima chave mostra a versão) 4) Framework 5) Habilitar Protocolos e Serviços. TOTVS-2011 – Let’s Share
46
6) Biblioteca e Aplicativos Corpore
No SQL Server, é necessário habilitar os protocolos de comunicação: SQL 2000 -> Ir no Iniciar/Executar, digite cliconfg, na guia Geral desmarque as opções “Forçar criptografia de protocolo” e habilite os protocolos Shared Memory e TCP/IP. SQL 2005 -> Ir no Iniciar, Microsoft SQL Server 2005, Configurations Tools, e habilite os protocolos. SQL 2008 -> Vide SQL 2005 O serviço SQL Browser deve estar iniciado nos serviços do Windows em todas as versões do SQL, para que outras pessoas em outras maquinas consigam acessar sua instância SQL Server. No Oracle é necessário estar sempre iniciado o serviço OracleService”Nome da instancia” e o serviço OracleHome Listener (ouvinte) que é responsável pela comunicação do servidor com as estações clients.
DEMONSTRANDO ALGUMAS FUNÇÕES BÁSICAS DE UM SGDB (SQL SERVER):
Acessando o SGDB SQL Server: Para executar qualquer função no seu banco de dados, é necessário acessar o seu SGDB, no nosso caso usaremos o “Microsoft SQL Server” por ser o mais utilizado por Clientes da RM Sistemas. OBS: Usaremos a versão 2005 do “Microsoft SQL Server” por ser a mais atual. Para acessá-lo, acesse primeiramente em sua área de trabalho do Windows o Menu Iniciar – Programas - Microsoft SQL Server 2005 – SQL “Server Management Studio” ou “Server Management Studio Express”. TOTVS-2011 – Let’s Share
47
Logo na tela inicial conectar ao servidor que esta contida a Base de dados como demonstra a tela abaixo:
OBS: È permitido conexão a banco de dados SQL tanto local (em sua maquina) quanto em outra maquina, para isto basta informar a maquina a se conectar no campo “Server Name”, e com qual autenticação (Usuário). Dica:
Na opção Server Authentication optando no campo “Authentication”por
“Windows Autentication”, o SQL Server irá considerar como usuário, o usuário de rede atual, caso opte por “SQL Server Autentication” onde o SQL Server irá lhe solicitar um “Login” (usuário) e “Password” (Senha) para realizar a conexão.
FUNÇÃO BACKUP PARA BASE DE DADOS NO SQL SERVER: Refere-se à cópia de uma base dados com o objetivo de posteriormente recuperálos, caso haja necessidade ou algum problema com os dados originais. O backup consistente do banco de dados é de extrema importância para que possamos manter a integridade dos dados caso haja uma falha do sistema, hardware ou até mesmo para corrigir eventuais falhas de usuários, como por exemplo, a remoção
TOTVS-2011 – Let’s Share
48
acidental de um banco de dados. Para isto, é importante a adoção de uma política consistente de backup, bem como conhecer as possíveis técnicas para fazê-lo.
DEMONSTRANDO COMO FAZER UM BACKUP NO SQL SERVER 2005: Feito o procedimento demonstrado na seção “Acessando o SGDB SQL Server” (Pagina 19), procure a base de dados a ser feito o backup, geralmente a mesma se encontra dentro da pasta “Databases” clique com o botão direito do mouse sobre a base a ser feito o backup e acesse a opção Tasks – Back up..., como demonstrado na figura a seguir:
OBS: Geralmente as opções demonstradas acima, se encontram lateral esquerda da janela do aplicativo (Microsoft SQL Server Management Studio).
TOTVS-2011 – Let’s Share
49
Após procedimento acima, abrirá automaticamente uma janela, onde se deve informar o nome para o backup no campo “Name” e informar o caminho a ser salvo este backup clicando na opção “Add” conforme demonstrado na figura abaixo:
Obs.: Sempre atentem a observar se o campo “Database” esta com a base de dados corretamente preenchida.
Após acessar a opção “ADD”, será aberta uma outra janela onde se deve informar o caminho a ser salvo o backup, para tal deve ser usado o campo “...”:
TOTVS-2011 – Let’s Share
50
Abrirá automaticamente uma nova janela onde se deve localizar a pasta ou disco e atribuir um nome ao backup:
TOTVS-2011 – Let’s Share
51
Obs.: Note que no exemplo anterior selecionei a pasta C:\Bases\Backup – Exemplo, para que o SQL Server salve na mesma meu backup criado, o caminho escolhido é demonstrado no campo “Selected path:”. Também é necessário nesta mesma janela, escolher um tipo para este backup no campo “Files of type” (o SQL Server opta por defaut as extensões *.bak; *.trn) e nomear este backup, no exemplo acima, coloquei o nome “Exemplo” para meu Backup, como pode se verificar no campo “File name”. Após feito todo o procedimento acima, clique em “OK”, o sistema apresentará na tela anterior o caminho escolhido com o respectivo nome:
Agora, para iniciar o processo de Backup, basta clicar em “OK” como demonstra a tela seguinte:
TOTVS-2011 – Let’s Share
52
OBS: Note que o caminho escolhido, se encontra demonstrado no campo “Destination”. Após clicar em “Ok” como demonstrado na janela acima, o sistema irá fazer o backup demonstrando em sua margem inferior da lateral esquerda o status do processo:
TOTVS-2011 – Let’s Share
53
Para finalizar, o SQL Server lhe apresentará a seguinte tela:
Pronto, é só clicar em “OK “, pois seu Backup já foi feito com Sucesso e gravado com o nome e no caminho escolhido no processo acima:
TOTVS-2011 – Let’s Share
54
Função Restauração de um Backup de Base de Dados no SQL Server:
Uma restauração ou “RESTORE” de um banco de dados, nada mais é do que a operação de trazer os dados de um backup criado de volta para o SGDB.
DEMONSTRANDO COMO RESTAURAR UM BACKUP NO SQL SERVER 2005: Feito o procedimento demonstrado na seção “Acessando o SGDB SQL Server” (Pagina 19), procure a pasta “Databases” clique com o botão direito do mouse sobre a mesma e acesse a opção Restore Database..., como demonstrado na figura a seguir:
TOTVS-2011 – Let’s Share
55
Após procedimento acima, abrirá automaticamente uma janela, onde se deve informar um nome para a Base de dados no campo “To database:” e informar o caminho onde se encontra o backup a ser restaurado, para tal, habilite a opção “From device” e clique na opção “...” conforme demonstrado na figura a seguir:
OBS: Para demonstrar tal operação, usaremos o backup anteriormente feito na seção “Demonstrando como se fazer um Backup no SQL Server 2005”.
TOTVS-2011 – Let’s Share
56
Note que informei o Nome Exemplo_10 para minha base de dados em “To database”, já optei pela opção “From device” e selecionei na opção “...”: Abrirá uma nova janela onde se deve informar a localização do backup a ser restaurado:
Para Localizar tal backup, clique em “Add” conforme demonstrado anteriormente, localize o mesmo e clique em “OK” conforme demonstração abaixo:
TOTVS-2011 – Let’s Share
57
OBS: Note que informei o mesmo diretório em que o salvei o backup feito na seção “Demonstrando como se fazer um Backup no SQL Server 2005” (Pagina 23). Após o procedimento acima, o SQL Server apresentará a tela “Specify Backup” com o caminho informado:
Clique na opção “OK”. Após o SQL Server voltará à tela principal já com alguns dados preenchidos, tais como o caminho escolhido no campo “From Device” e o Backup informado logo abaixo na opção para se selecionar o Backup a restaurar, deve-se marcar ao backup em questão e clicar na opção “Options”, localizada no canto superior esquerdo da tela:
TOTVS-2011 – Let’s Share
58
Na Tela “Options”, deve-se informar o caminho para que o sistema salve os arquivos da Base de Dados restaurada, cuja extensão são “.mdf” e ”.ldf “respectivamente:
TOTVS-2011 – Let’s Share
59
Para informar um caminho diferente ao sugerido pelo SQL Server, basta clicar nas opções “...”, localizadas a frente dos caminhos informados. Basta clicar em “OK” e o backup será automaticamente restaurado no caminho informado:
Após restauração, o SQLServer apresentará a mensagem de Restauração executada com Sucesso:
TOTVS-2011 – Let’s Share
60
FUNÇÃO DETACH DE UMA BASE DE DADOS NO SQL SERVER: Detach é o processo que desativa (desliga) a base de dados. Note que após efetuar o Detach, base de dados deixa de estar disponível no servidor. Demonstrando a Função Detach no SQL Server 2005: Feito o procedimento demonstrado na seção “Acessando o SGDB SQL Server” (Pagina 19), procure a pasta “Databases”, encontre a Base de Dados a ser desativada, clique com o botão direito do mouse sobre a mesma, acesse a opção “Tasks” – “Detach...”
Na Próxima janela apresentada, basta clicar em “Ok”, e a desativação desta base será feita:
TOTVS-2011 – Let’s Share
61
Após executado este processo, a base em questão será excluída da guia “Databases” de seu SQL Server:
Mas continuará existindo no diretório em que foi restaurado anteriormente, na seção “Demonstrando como restaurar um Backup no SQL” Server 2005 (Pagina 26):
TOTVS-2011 – Let’s Share
62
FUNÇÃO ATTACH DE UM BASE DE DADOS NO SQL SERVER:
Attach é o processo que a ativa (liga) ou volta a ativar uma base de dados. Demonstrando a Função Detach no SQL Server 2005: Feito o procedimento demonstrado na seção “Acessando o SGDB SQL Server” (Pagina 19), procure a pasta “Databases”, clique com o botão direito do mouse sobre a mesma, acesse a opção “Attach...”:
Na Próxima janela apresentada, clique em “ADD...” para localizar a base a ser ativada:
TOTVS-2011 – Let’s Share
63
Localize a Base de dados e clique em “OK”:
O SQL Server automaticamente levará esta base e seu respectivo caminho para tela anterior, apresentando-o em “Databases to attach” e detalhando como ficará em ““Exemplo_10” databases details”: TOTVS-2011 – Let’s Share
64
Agora basta clicar em “OK” para executar a ativação da Base de Dados em questão. Após Ativação, a mesma estará sendo apresentada novamente na guia “Databases” de seu SQL Server:
Outras funções comuns como “Deletar”, “Renomear”, “Atualizar” ou “Verificar propriedades” de uma base de dados, também podem ser feitas, bastando clicar com o botão direito do mouse sobre a mesma:
TOTVS-2011 – Let’s Share
65
PROCEDIMENTOS PARA EXECUTAR O PROFILER DO SQL SERVER 2005.
Menu Programas Microsoft SQL Server 2005 Performance Tools SQL Server Profiler conforme figura abaixo.
TOTVS-2011 – Let’s Share
66
Será aberta a janela principal do Profiler. Clicar no ícone New Trace conforme figura abaixo
Será aberta a janela para logar no servidor conforme figura abaixo:
Em SQL Server informar o nome do servidor que se encontra o banco de dados Caso seja Administrador da máquina poderá utilizar “Windows authentication” caso contrario utilizar “SQL Server authentication” e logar com o usuário SA.
TOTVS-2011 – Let’s Share
67
Será exibida a janela abaixo, solicitando o nome para o Arquivo de trace (trace name), neste dever ser colocado qualquer nome conforme tela abaixo.
Selecionar a guia “orelha” Events Selection, marque as opções “Show all events” e “Show all coluns” para que possa ter uma melhor visualização dos eventos, na coluna events marque os eventos que você deseja que sejam gravados a serem gravados no log a ser gerado conforme tela abaixo.Geralmente os eventos a serem adicionados são: Errors and Warnings,Stored Procedure,Transactions e TSQL Obs.: O eventos (Security Audit,Sessions,Stored Procedures,TSQL) por padrão vem marcados podendo manter os mesmos.
TOTVS-2011 – Let’s Share
68
Selecionar o botão Column Filters... . Nesta janela será configurado os “critérios” para realizar a monitoração do log, desta forma podemos monitorar isoladamente o que uma determinada estação esta realizando no banco de dados especificado, deverá ser configurado os critérios DataBaseName e HostName. Em DataBaseName expandir ( clicar no sinal de + “mais” ao lado deste critério) e no item like adicionar o nome do banco de dados Ex: EXEMPLO, CORPORE. Conforme janela abaixo. Obs.: Caso não saiba o nome do banco de dados, este poderá ser verificado na propriedade DATABASE NAME do alias no BDE.
Conforme citado acima o outro critério a ser configurado será o HostName, neste deverá ser adicionado o nome da máquina na rede Ex: SERVER, STENOVATO, conforme janela abaixo :
TOTVS-2011 – Let’s Share
69
Após este procedimento, clicar no botão OK e logo em seguida no botão RUN, o profiler irá começar a gravar todas as transações enviadas para o banco de dados, simular o erro no aplicativo logo após clicar no botão STOP conforme janela abaixo
Logo após clicar na opção STOP , ir ao menu File Save as Trace File e informar um nome qualquer para o arquivo e clique no botão Salvar. Conforme janela abaixo.
TOTVS-2011 – Let’s Share
70
MANUTENÇÃO NA BASE DE DADOS DA RM: Para obtermos uma rotina de prevenção na base, os analistas de banco de dados da RM disponibilizam alguns scripts, e neste contém as seguintes funções do SQL: Esta procedure atualiza as estatísticas do seu banco, melhorando a performance da seguinte maneira: Exemplo: Suponhamos que uma tabela é criada apenas com 10 registros, e ao decorrer do tempo, a mesma contém 1000 registros. Para evitar que o banco de dados não realize um plano de execução como se a tabela tivesse apenas 10 registros, é necessário atualizar as estatísticas da mesma. Além dessa Procedure, temos também os scripts de manutenção de base de dados que tem como função fazer as seguintes rotinas;
•
Reindexando os índices da Tabela
•
Verificando estrutura das tabelas e do Banco
•
Verificando espaço alocado das tabelas e do Banco
TOTVS-2011 – Let’s Share
71
•
Alocação
•
Redução do log
Os scripts possuem os nomes de Manutenção.sql e mandatabase.sql, e podem ser adquiridos com o pessoal da equipe de suporte de banco de dados. Sugerimos que estas rotinas sejam executadas diariamente, porém caso seja executado com usuários conectados, os mesmos podem questionar queda de performance no sistema. Manutenção de bases SQL Server 1-manutenção.sql 2-man_database.sql 3-RMATUALIZAESTATISTICAS (Procedure de Sistema, basta digitar o nome da procedure e executar no Query Analyzer)
A execução dos scripts visa uma melhoria considerável na base. Favor realizar as seguintes consultas na base e enviar o resultado: SELECT * FROM SYSOBJECTS WHERE XTYPE='TR' SELECT OBJECT_NAME(ID),NAME FROM SYSINDEXES WHERE NAME LIKE '_WA_SYS%' SELECT * FROM SYSOBJECTS WHERE UID<>1 É RECOMENDADO QUE A EXECUÇÃO DOS SCRIPTS DE MANUTENÇÃO SEJA REALIZADA NO MOMENTO DE MENOR UTILIZAÇÃO DA BASE CORPORE.
TOTVS-2011 – Let’s Share
72
Caracter set/ordenação/case: O padrão utlizado pelo CORPORE RM é o Caracter Set 1252, Dictionary Order, Case Insensitive, Acent insensitive. Default language: English Usuários: São utilizados por padrão dois usuários para acesso ao Banco de Dados. •
Usuário SYSDBA (cujo nome e senha não devem ser alterados). Este usuário tem acesso apenas às tabelas de LOGIN e deve ser criado/configurado através do script USUARIOS.SQL.
•
Usuário RM (que é tratado como Dono do Banco de Dados). Este usuário deve ser criado/configurado através do script USUARIOS.SQL. Este usuário pode ter seu nome e senha alterados, porém caso isto seja feito, deve ser feito de acordo com o script USUARIOS.SQL.
Deve-se atentar para a seguinte questão: Não deve existir na base um usuário rm, e sim um alias que age como dono das tabelas, portanto na pasta security>users do SQL Server Management Studio ou Enterprise Manager não deve existir o usuário rm, já em security>logins deve existir ambos os logins rm e sysdba. Veja o padrão em security>users
TOTVS-2011 – Let’s Share
73
Propriedades do banco de dados: •
Ansi Null Default: ON;
•
Auto Create Statistics: OFF;
•
Auto Update Statistics: OFF.
Autenticação: Feita pelo SQL Server e Windows.
DICAS DE PERFORMANCE SQL SERVER Seguem abaixo algumas dicas para assegurar a performance em um Banco de Dados. Vale a pena lembrar que toda a tarefa de manutenção em um banco de Dados deve ser feita em um momento em que o banco de dados não esteja sendo utilizado por outros usuários. A maior parte das alterações feitas no Banco de Dados requer que o mesmo seja reinicializado para que a alteração tenha efeito.Toda alteração na configuração de um servidor de Banco de Dados deve ser monitorada de forma a verificar se o resultado esperado foi atingido. As dicas relacionadas abaixo são genéricas e úteis para grande parte dos servidores, porém em alguns casos estas não são suficientes para garantir uma boa performance. Neste caso, deve-se procurar uma ajuda especializada e fazer um ajuste fino e personalizado na configuração do servidor.
1)Configurar a memória utilizada pelo SQL SERVER Sugere-se utilizar a alocação dinâmica de Memória para o SQL Server. Caso esteja utilizando um servidor SQL Server Dedicado, sugerimos que a metade da memória disponível no servidor seja alocada como quantidade de memória mínima para o servidor (Minimum (MB)). Assim, caso o Servidor tenha 1GB de memória, deve-se alocar como mínimo para o SQL Server 512MB. Sugere-se calcular a memória máxima para o SQL Server da seguinte forma: deve-se reservar 20% da memória do servidor para o Sistema Operacional (considerando-se múltiplos de 128 MB), subtrai-se do total da memória do Servidor, o valor reservado para o Sistema Operacional, e esta quantidade de memória deve TOTVS-2011 – Let’s Share
74
ser a quantidade máxima de memória utilizada pelo SQL Server. No caso de um servidor com 1GB de memória como o citado acima, a quantidade máxima para o SQL Server deve ser 768MB.
2) Utilização de Processadores -Quando tiver mais que um processador, sugere-se fazer com que o SQLServer os utilize. Deve-se verificar, de acordo com cada edição do SQL Server (ver Books on Line) o número máximo de Processadores que o SQL Server pode usar. Quando o número de processadores no servidor ultrapassar o limite utilizado pela edição do SQL Server, o limite da Edição deve ser utilizado. Para permitir a utilização de mais de um processador pelo SQL Server, basta marcar o Check Box relativo a cada processador em "Processor". - Desmarque a opção "Boost SQL Server priority on Windows".(Quando esta opção está marcada, a prioridade do processador é para o SQL Server. Marcar está opção pode fazer com que todo o processamento da máquina seja direcionado para o SQL Server fazendo com que o Sistema Operacional seja prejudicado.) c ) Marcar a opção "Use All avaiable Processors to use for parallel execution of Queries" (SQL Server 2005). Esta opção irá fazer com o SQL Server utilize de forma otimizada mais de um processador para a execução de Queries em paralelo quando isto acarretar em um melhor plano de execução de uma determinada query.
3) Alocação de Espaço em Disco -Deve-se alocar espaço além do suficiente no disco para os DataFiles do Banco de Dados. (Desta forma não haverá uma frequente alocação de espaço em disco.) Deve-se configurar também o crescimento automático dos DataFiles. Sugere-se que seja configurado um crescimento de 20% em 20% do Data File e que este crescimento seja ilimitado. TOTVS-2011 – Let’s Share
75
- Deve-se alocar para o Log de transações um espaço correspondente a 25% ou 30% do tamanho dos DataFiles. Sugere-se adotar o crescimento automático de 10% e limitar o crescimento do log a 50% do tamanho dos DataFiles. Obs:A configuração da alocação de espaço em disco deve ser revisada periodicamente. Sugere-se que esta revisão seja feita mensalmente ou a cada dois meses.
4) Distribuição de arquivos do Banco de Dados no Disco -Crie um novo Filegroup e o coloque como default Filegroup Em geral é uma boa decisão armazenar e gerenciar objetos do sistema (SQL Server) e objetos de usuário (base Corpore) separadamente. Desta forma, os objetos do sistema não competem por espaço no primary Filegroup com os objetos de usuário. -Caso você tenha diversos discos físicos, tente criar um filegroup com um arquivo por disco físico. -Isto irá favorecer a performance, porque quando uma tabela é acessada sequencialmente, uma thread separada é criada para cada arquivo para fazer a leitura dos dados em paralelo. - Coloque o arquivo de Log em um disco físico diferente do arquivo de Dados Isto é importante para performance pois escrever no Log é uma atividade de escrita intensiva.
5) Soluções baseadas em Hardware Em geral RAID baseado em hardware oferece vantagens de performance se comparados com o RAID implementado no Sistema Operacional. Pode-se melhorar significativamente a performance do sistema implementando um RAID 5 baseado em hardware. - Arquivo de Paginação e Sistema Operacional
TOTVS-2011 – Let’s Share
76
Sempre que possível coloque os arquivos do Banco de Dados em discos diferentes do sistema operacional e arquivo de paginação. Isto também irá favorecer a performance do sistema.
6) Rodar diariamente atualização de estatísticas A atualização de estatísticas serve para que o SQL Server conheça melhor os dados que estão armazenados no Banco e através deste conhecimento escolha sempre o melhor plano de execução para as consultas ao Banco de Dados.A atualização de estatísticas no Banco de Dados Corpore RM pode ser feita através da execução da procedure RMATUALIZAESTATISTICAS. Deve-se criar uma tarefa responsável por executar diariamente e automaticamente esta procedure na Base de Dados.
Recriar todos os índices da Base de Dados semanalmente. A recriação dos índices permite a desfragmentação dos mesmos, o que reflete diretamente na performance do Banco de Dados.A recriação de Índices no Banco de Dados Corpore RM deve ser feita semanalmente através de uma tarefa agendada. Esta tarefa deve executar um script contendo comandos para a reconstrução dos índices em todas as tabelas do Banco de Dados. O comando a ser utilizado deve seguir o seguinte padrão: DBCC DBREINDEX (‘
’)
Rodar semanalmente o DBCC CHECKDB O DBCC CHECKDB serve para verificar a integridade física do Banco de Dados.Não basta que o comando seja executado. Deve-se verificar o Log de execução do mesmo a fim de identificar algum segmento corrompido.Rode o utilitário e localize ocorrências da palavra "MSG", elas podem indicar problemas com integridade física no Banco de Dados.
TOTVS-2011 – Let’s Share
77
Desmarque as seguintes opções no Banco de Dados:
Auto update statistics Torn page detection Auto close Auto shrink Auto create statistics
DICAS PARA QUALQUER BANCO DE DADOS
1) Trabalhar com servidor dedicado para o BD Verificar se não há serviços desnecessários rodando na máquina além dos Serviços do Gerenciador de Banco de Dados.
2) Desabilitar Anti Virus Caso exista Anti-Virus habilitado no servidor de Banco de Dados, configurar o anti-virus para que o mesmo não faça verificação de arquivos do banco. Isto não é necessário, e degrada muito a performance do Banco de Dados, uma vez que a cada alteração no arquivo de Banco de Dados o Anti-virus deve fazer uma verificação do mesmo.
3)Verificar se o disco está fragmentado.
TOTVS-2011 – Let’s Share
78
Verificar mensalmente a fragmentação no disco onde está o Banco de Dados. Caso necessário, deve-se fazer a desfragmentação do mesmo. Caso seu Banco de Dados esteja rodando em um Sistema Operacional Windows, e rode o utilitário "Desfragmentador de Disco" do Windows para efetuar a desfragmentação. Antes de rodar o utilitário, tire um backup do Banco de Dados. Caso necessário, apague o banco de Dados e restaure o mesmo novamente.
INSTALAÇÃO DO ORACLE 11G SERVER Este guia tem como objetivo auxiliar a instalação do gerenciador de banco de dados Oracle 11g nos sistemas operacionais Windows NT Server, Windows NT Workstation, Windows 2000 Server, Windows 2000 Professional, Windows XP , Windows Vista, Windows Server 2003 e Windows Server 2008. Pré-requisitos para instalação: o Antes de iniciar a instalação, é recomendável serem fechadas todas as janelas de programas do Windows; o O computador servidor deve estar em rede com os computadores clientes; o A instalação deve ser executada por um usuário com atribuições de administrador local.
1.1 - Iniciando a Instalação 1- No Windows Explorer, acesse o CD de instalação do Oracle11g;
TOTVS-2011 – Let’s Share
79
Observações: Caso o servidor, onde o Oracle11g será instalado, não tenha drive de CDROM, coloque o CD em uma máquina que tenha drive de CD-ROM e compartilhe-o. Para maiores informações veja o tópico Mapeando o Drive de Rede para o CD ROM. 1- Execute o programa de instalação SETUP.EXE e aguarde até que as configurações do micro sejam verificadas.
TOTVS-2011 – Let’s Share
80
Verificando as configurações do micro:
TOTVS-2011 – Let’s Share
81
1.2 - Welcome No diálogo "Select Installation Method": 1- Selecione a opção [ADVANCED INSTALLATION]:
2- Clique em [NEXT].
TOTVS-2011 – Let’s Share
82
1.3 - Tipos de Instalação e linguagem No diálogo "Select Installation Type": 1 - Selecione a opção [Enterprise Edition (2.69GB)]; 2 - Clique no botão [PRODUCT LANGUAGES].
3 - No diálogo "Language Selection", mantenha apenas ENGLISH no quadro Select Languages (quadro à direita da janela).
TOTVS-2011 – Let’s Share
83
4 - Clique no botão [OK]. 5 - Ainda no diálogo " Select Installation Type ", pressione [NEXT].
1.4 - Definindo a Localização dos Arquivos No diálogo "Install Location": 1 - No campo [Oracle Base]: Verifique o caminho onde estão localizados os arquivos necessários para a instalação do Oracle11g. Você deve clicar no botão Browse e encontrar a pasta STAGE na instalação e selecionar o arquivo PRODUCTS.XML conforme a figura abaixo. 2 - Caso o caminho especificado no campo [Oracle Base] não esteja correto, utilize o botão [BROWSE…] para especificá-lo corretamente.
TOTVS-2011 – Let’s Share
84
3 - Como por padrão o Instalador do Oracle 11G utiliza a pasta de perfil do usuário para fazer a instalação, sugerimos que seja criada uma pasta chamada ORACLE em c:\ conforme print abaixo:
Crie uma nova pasta
Em [Software Location…] TOTVS-2011 – Let’s Share
85
4 - No campo [NAME]: Entre com o OraDb11g_home1. 5 - No campo [PATH]: Entre com o caminho onde será instalado o Oracle. Sugere-se deixar o caminho default: C:\ORACLE\PRODUCT\11.1.0\db_1. 6 - Caso queira alterar o caminho, clique no botão [BROWSE]. 7 - Clique em [NEXT].
1.5 – Verificação de pré-requisitos No diálogo "Product-Specific Prerequisite Checks": 1 – Certifique que a verificação dos pré-requisitos foi executada com sucesso. 2 - Clique em [NEXT].
TOTVS-2011 – Let’s Share
86
1.6 – Opção de Configuração do Banco No diálogo "Select Configuration Option": 1 - Escolha [CREATE A DATABASE] para criar uma instancia Oracle. 2 - Clique em [NEXT].
TOTVS-2011 – Let’s Share
87
1.7 – Configuração do Banco No diálogo "Select Database Configuration": 1 - Escolha [GENERAL PURPOSE]. 2 - Clique em [NEXT]. TOTVS-2011 – Let’s Share
88
1.8 – Opções de Configuração do Banco de Dados No diálogo "Specify Database Configuration Options":
TOTVS-2011 – Let’s Share
89
1 - No campo GLOBAL DATABASE NAME coloque o nome completo com domínio do seu banco de dados. 2 - No campo SID coloque o nome da instância que será criada. 3 - Clique em [NEXT].
1.9– Detalhes de Configuração do Banco de Dados
TOTVS-2011 – Let’s Share
90
No diálogo "Specify Database Configuration Details": 1 - No guia MEMORY, verifique a porcentagem de memória que será alocada para a instancia que esta sendo criada. 2 - Por padrão o Oracle deixa 40% da memória da maquina disponível para instancia. Sugerimos que para instancias de teste seja alocada apenas 15% da memória para a instancia por motivo de otimização de performance da maquina.
3 – Vá na guia CHARACTER SET 4 – Marque a opção [CHOOSE FROM THE LIST OF CARACTER SETS] 5 – No campo SELECT DATABASE CHARACTER SET escolha o conjunto de caracteres [West European WE8ISO8859P15]. 6 - Clique em [NEXT]. TOTVS-2011 – Let’s Share
91
1.10 – Opção de Gerenciamento de Banco de Dados
TOTVS-2011 – Let’s Share
92
No diálogo "Select Database Management Option": 1 - Escolha a opção [USE DATABASE CONTROL FOR DATABASE MANAGEMENT]. 2 - Clique em [NEXT].
1.11 – Opções de Armazenamento de Arquivos do Banco TOTVS-2011 – Let’s Share
93
No diálogo "Specify Database Storage Option": 1 - Escolha a opção [FILE SYSTEM]. 2 - Caso queira mudar a localização dos arquivos do banco de dados, clique no botão [BROWSE]. 3 - Clique em [NEXT].
TOTVS-2011 – Let’s Share
94
1.12– Opções de Backup e Recuperação No diálogo "Specify Backup and Recovery Options": 1 - Selecione a opção [DO NOT ENABLE AUTOMATED BACKUPS]. 2 - Clique em [NEXT].
TOTVS-2011 – Let’s Share
95
1.13 – Senhas do Banco de Dados No diálogo "Specify Database Schema Passwords": 1 - Marque a opção [USE THE SAME PASSWORD FOR ALL THE ACCOUNTS] 2 - Coloque uma senha no campo [ENTER PASSWORD] repetindo a mesma no campo [CONFIRM PASSWORD]. 3 - Clique em [NEXT].
TOTVS-2011 – Let’s Share
96
1.14– Gerenciamento de configuração de registros No diálogo "Oracle Configuration Manager Registration": 1 - Clique em [NEXT].
TOTVS-2011 – Let’s Share
97
1.15 – Lista de Produtos a serem Instalados No diálogo "Summary": 1 - Clique no botão [INSTALL].
TOTVS-2011 – Let’s Share
98
1.16- Aguardando a Instalação No diálogo "Install": 1 - Aguarde até que os arquivos de instalação sejam copiados ou que o botão [NEXT] seja habilitado novamente.
TOTVS-2011 – Let’s Share
99
1.17 - Configurando as Ferramentas No diálogo "Configuration Assistants": 1 - Aguarde até que o botão [NEXT] seja habilitado novamente. 2 - Clique em [NEXT].
TOTVS-2011 – Let’s Share
100
1.18- Identificação da Instância No diálogo "Database Configuration Assistant": 1 – Clique em OK.
TOTVS-2011 – Let’s Share
101
1.19 – Fim da Instalação No diálogo "End of Installation": 1 - Clique no botão [EXIT].
2 – Na caixa de diálogo, clique no botão Yes.
TOTVS-2011 – Let’s Share
102
Criando uma Instância no Oracle 11g Acesse o menu: INICIAR | Todos os Programas | Oracle - OraDb11g_home1 | Ferramentas de Configuração e Migração | Assistente de Configuração de Bancos de Dados 0 – Bem-vindo Na tela “Bem-vindo” 1 – Clique em “Próximo” 1 – Operações Na tela “Operações” 1 – Selecione a opção “Criar um Banco de Dados”; 2 – Clique em “Próximo”. 2 – Modelos de Banco de Dados Na tela “Modelos de Banco de Dados” 1 – Selecione a opção “Finalidade Geral ou Processamento de Transação”; 2 – Clique em “Próximo”. 3 – Identificação do Banco de Dados Na tela “Identificação do Banco de Dados” 1 – Digite o nome da instância que está sendo criada no campo “Nome do Banco de Dados Global”; 2 – Confirme o mesmo nome no campo “SID”; 3 – Clique em “Próximo”. 4 – Opções de Gerenciamento Na tela “Opções de Gerenciamento” 1 – Desmarque a opção “Configurar o Enterprise Manager”; 2 – Clique em “Próximo”. 5 – Credenciais do Banco de Dados Na tela “Credenciais do Banco de Dados” 1 – Marque a opção “Usar a mesma senha Administrativa para todas as contas”; 2 – Digite uma senha para as contas do Banco de Dados no campo “Senha”; 3 – Confirme a mesma senha no campo “Confirmar Senha”; TOTVS-2011 – Let’s Share
103
4 – Clique em “Próximo”. 6– Opções de Armazenamento Na tela “Opções de Armazenamento” 1 - Clique em “Próximo”. 7 – Localização dos Arquivos de Banco de Dados Na tela “Localização dos Arquivos de Banco de Dados” 1 - Clique em “Próximo”. 8 – Configuração de Recuperação Na tela “Configuração de Recuperação” 1 –Desmarque a opção Especifique a área de recuperação Flash, a mesma e utilizada para o recurso de flashback que tem utilidade em sistemas de produção além de ser o local padrão para onde o backup automático é feito. 2 - Clique em “Próximo”. 9 – Conteúdo do Banco de Dados Na tela “Conteúdo do Banco de Dados” 1 - Clique em “Próximo”. 10 – Parâmetros de Inicialização Na tela “Parâmetros de Inicialização” 1 – Defina a quantidade de memória do sistema que ficará disponível para o banco de dados Oracle, quanto maior mais performance, em contrapartida menos recursos para o sistema operacional – Recomendado o mínimo por se tratar de uma ambiente de desenvolvimento e teste. 2 – Dimensionamento set os processos para 900. 3 – Conjunto de caracteres – Deve ser usado a terceira opção Escolha na lista de conjuntos de caracteres, desmarque a opção “Mostrar apensa conjuntos de caracteres recomendados”, o padrão TOTVS é WE8ISO8859P1 4 - Clique em “Próximo”. 11 – Definições de Segurança TOTVS-2011 – Let’s Share
104
Na tela “Definições de Segurança” 1 – Marque a opção “Reverter para definições de segurança default anterior a 11g e mantenha as duas opções marcadas. 2 - Clique em “Próximo”.
12 – Tarefas de Manutenção Automática Na tela “Tarefas de Manutenção Automática” 1 – Desmarque a opção “Ativar tarefas de manutenção automática”; 2 - Clique em “Próximo”. 13 - Armazenamento de Banco de Dados Na tela “Armazenamento de Banco de Dados” 1 - Clique em “Próximo”. 14 – Opções de Criação Na tela “Opções de Criação” Dica: Em instalações no Windows 7 poderá ocorrer o erro: "ora-12638 credential retrieval failed" Para solucionar o problema deverá se
alterada a informação abaixo antes da
instalação: No arquivo sqlnet.ora \\Oracle\product\11.1.0\db_1\NETWORK\ADMIN Original - SQLNET.AUTHENTICATION_SERVICES= (NTS) Modificado - SQLNET.AUTHENTICATION_SERVICES= (NONE) Ativando um LISTENER no Oracle 11g
TOTVS-2011 – Let’s Share
105
NETCA Algumas vezes é necessário acionar manualmente o “netca” para configurar um Listener para a base de dados recém-criada. No ORACLE 11g normalmente aparece uma mensagem emitida pelo DATABASE CONTROL CONFIGURATION... Acesse pelo INICIAR – EXECUTAR digitando o comando “netca”...
Aguarde
até
abrir
o
programa
configurador
e
selecione
LISTENER
CONFIGURATION...
Selecione “Add” e avance pelo “NEXT” (ou “AVANÇAR”)...
TOTVS-2011 – Let’s Share
106
Digite no nome do seu LISTENER (Normalmente digitamos “LISTENER” mesmo)...
Selecione “TCP” como protocolo único e avance...
TOTVS-2011 – Let’s Share
107
Selecione a porta padrão 1521 (ou outra que lhe for passada pela infra-estrutura de rede) e avance...
TOTVS-2011 – Let’s Share
108
Aguarde a mensagem de sucesso do prompt...
Verifique no serviço do Windows (services.msc) se o serviço de Listener foi ativado (iniciado).
CRIANDO ALIAS PARA A BASE
1 - Através do Menu INICIAR | PROGRAMAS | ORACLE – ORAHOME | CONFIGURATION AND MIGRATION TOOLS,
acesse o utilitário "Net Manager".
TOTVS-2011 – Let’s Share
109
2 – No diálogo do "Oracle Net Manager”, vá no Explorer a esquerda nas opções: Oracle Net Configuration |
Local | Service Naming e clique no ícone “+” a esquerda
para adicionar um novo alias.
3 – Informe no campo “Net Service Name” o nome que você deseja dar para o Alias que irá criar.
TOTVS-2011 – Let’s Share
110
4 – Seleciono o tipo de Protocolo TCP/IP
5 – Informe no campo “Host Name” o nome do servidor onde se encontra a instância a ser apontada, e no campo “Port Number” o número da Porta da mesma.
6 – Informe no campo “Service Name” o nome da instancia a ser acessada.
TOTVS-2011 – Let’s Share
111
7 – Clique no botão “Testar” para verificar a consistência do login.
8 – Entre com o Usuário System, senha do mesmo e clique em OK.
TOTVS-2011 – Let’s Share
112
9 – Caso a conexão e configuração seja executada com sucesso conforme mensagem abaixo, clique em “Close” para finalizar.
10 – Salve a configuração através do menu: File | Save Network Configuration.
TOTVS-2011 – Let’s Share
113
1.4 - Ativando o Utilitário SQL Plus 1
- Através
do
Menu
INICIAR | Todos
os Programas |
Oracle
–
OraDb11g_Home1| Desenvolvimento de Aplicações, acesse o utilitário "SQL Plus".
No diálogo "Log On":
TOTVS-2011 – Let’s Share
114
1 - No campo [USER NAME:], digite SYSTEM. 2 - No Campo [PASSWORD:], digite a senha definida para o usuário system Para se conectar a uma instância especifica você deverá informar o nome da instancia.
A sintaxe do comando é rm/rm@rm3 TOTVS-2011 – Let’s Share
115
Onde considera-se usuário/senha@instancia
1.5 - Executando o Script para Geração dos TableSpaces 1 - Edite o arquivo TBSPACE.SQL (utilize para esta operação utilitários do tipo WordPad ou NotePad) que se encontra no diretório onde foram instalados os arquivos para geração da Base de Dados. Caso necessário, altere os caminhos onde serão criados os Datafiles, para caminhos válidos no Servidor.
TOTVS-2011 – Let’s Share
116
Execute
o
script
para
geração
de
TableSpaces.
Digite:
@C:\CORPORERM\DADOS\TBSPACE9i.SQL (Onde o caminho digitado deve ser o caminho onde foram instalados os arquivos para geração de Base de Dados) e tecle ENTER
1.5 – Excluindo o schema RM (OPCIONAL) ATENÇÃO: Esse passo deve ser executado apenas na ocasião de já se ter uma instancia criada com uma base de dados importada e deseja-se alterar o arquivo de backup (dmp). Drop o schema RM (dono das tabelas Corpore) da seguinte maneira conectado no SQL PLUS (ou tools) com o usuário SYSTEM: Conecte com o usuário System: Execute o comando: COMANDO: DROP USER RM CASCADE;
TOTVS-2011 – Let’s Share
117
1.6 - Executando o Script para Criação de Usuários
Após a finalização da exclusão do schema acima (opcional), ainda conectado com o usuário SYSTEM no SQL Plus (ou Tools), execute o script de criação dos usuários do Corpore RM (SYSDBA E RM) – Usuários.txt No
SQL
PLUS,
execute
o
script
para
criação
de
Usuários.
Digite:
@C:\CORPORERM\DADOS\USUARIOS.SQL (Onde o caminho digitado deve ser o caminho onde foram instalados os arquivos para geração de Base de Dados)
TOTVS-2011 – Let’s Share
118
CRIANDO ARQUIVO DE PARÂMETROS PARA IMPORTAÇÃO DE DADOS DA BASE EXEMPLO Crie um arquivo texto com o nome de IPORT.TXT (utilize para esta operação utilitários do tipo WordPad ou NotePad), com o seguinte conteúdo:
Observe que: 1- O primeiro RM é o usuário, o segundo é a senha e ORCL é o alias que aponta para a instância que se quer importar a base. 2-
O
caminho
especificado
na
linha
FILE
=
C:\CorporeRM\Dados\EXEMPLOORACLE.DMP, é o local onde se encontra o arquivo EXEMPLOORACLE.DMP que será importado. 3- O caminho especificado na linha LOG = C:\CorporeRM\Dados\IMPORT.TXT, é o local onde será criado o arquivo de log da importação.
Importar a Base Através do Menu Iniciar | Programas, Acesse o "Command Prompt".No "Command Prompt" digite o seguinte comando: IMP Parfile = C:\Temp\IMPORT.txt Onde o caminho deve corresponder ao caminho onde foi criado o arquivo IMPORT.txt Quando acabar de importar os dados rode o script acesso.sql para que seja concedida as devidas permissões dos usuários do Banco as tabelas.
TOTVS-2011 – Let’s Share
119
No SQL Plus, execute o script de Permissão de Acesso para Usuários. Digite: @C:\CORPORERM\DADOS\ACESSO.SQL (Onde o caminho digitado deve ser o caminho onde foram instalados os arquivos para geração de Base de Dados) Tecle Enter, aguarde até finalizar a execução do Script, feche o Log e digite SPOOL OFF
A base estará pronta para uso. Existe um outro processo de importação chamado de Oracle data pump que deve ser realizado da seguinte maneira. copiar o arquivo dmp para a pasta dpdump do oracle Exemplo: C:\oracle\product\10.2.0\admin\ORCL1\dpdump Acesse o prompt de comando e execute o seguinte comando. impdp dumpfile= logfile= schemas=rm DICA: para saber se o arquivo é um Dump criado pelo Expdp ou pelo Exp basta executar no DOS o comando Type no arquivo. Sintaxe: Type more TOTVS-2011 – Let’s Share
120
Exemplo: Type c:\rm.dmp | more Se for um arquivo exportado pelo Exp ele trará no cabeçalho a versão do Oracle em que foi realizado o export Se for um arquivo exportado pelo Expdp ele trará o cabeçalho código binário (ilegivel) No caso de existirem vários dumps, geralmente em casos de bases muito grandes utilize os seguintes procedimentos: No exemplo abaixo o nome da instancia era RM7 1-logar com o usuário SYSTEM no SQL Plus (Criação de diretórios) CREATE DIRECTORY datadir1 AS 'E:\oracle\product\10.2.0\oradata\RM7'; CREATE DIRECTORY datadir2 AS 'E:\oracle\product\10.2.0\oradata\RM7'; CREATE DIRECTORY datadir3 AS 'E:\oracle\product\10.2.0\oradata\RM7';
2-Permissão para o usuário GRANT READ,WRITE ON DIRECTORY datadir1 TO RM; GRANT READ,WRITE ON DIRECTORY datadir2 TO RM; GRANT READ,WRITE ON DIRECTORY datadir3 TO RM;
3-Copiar
os
arquivos
de
Dump
para
o
diretorio
E:\oracle\product\10.2.0\oradata\RM7' 4-No
DOS
digitar
:
impdp
rm/rm
SCHEMAS=RM
DUMPFILE=datadir1:dp1.dmp,datadir2:dp2.dmp,datadir3:dmp logfile=datadir1:logimpdp.log
Scripts de criação de usuários Oracle:
TOTVS-2011 – Let’s Share
121
Após criar a instância você deverá se conectar a base com o usuário SYSTEM e executar o script para criação dos usuário rm e SYSDBA.
CREATE USER RM IDENTIFIED BY RM DEFAULT TABLESPACE RM_DADOS TEMPORARY TABLESPACE RM_TMP; \\ Cria no BD um login RM de senha RM
CREATE USER SYSDBA IDENTIFIED BY masterkey DEFAULT TABLESPACE RM_DADOS TEMPORARY TABLESPACE RM_TMP; \\ Cria login SYSDBA de senha MASTERKEY
CREATE ROLE ACESSO_RM;
GRANT CONNECT,DBA,RESOURCE TO RM; \\ Dá ao RM permissão total as tabelas
GRANT CONNECT, RESOURCE TO ACESSO_RM;
GRANT CONNECT,RESOURCE,ACESSO_RM TO SYSDBA; \\ Estabelecendo permissões ao SYSDBA
ALTER
USER SYSDBA
DEFAULT ROLE ALL;
Verificar versão do Oracle Para verificar a versão do Oracle basta executar o select abaixo. SELECT VERSION FROM V$INSTANCE Verificação dos parâmetros no Oracle TOTVS-2011 – Let’s Share
122
No padrão corpore a linguagem padrão para o SGBD Oracle é o NLS_Lang WE8ISO8859P1. Certifique que a linguagem do Oracle da estação esteja igual a do servidor. Para isso, execute na estação a seguinte consulta: Select * from nls_database_parameters (irá listar a linguagem do servidor) Select * from nls_session_parameters (irá listar a linguagem da estação)
No caso de estarem diferentes do padrão, siga os passos do exemplo abaixo: Na instalação do Oracle o idioma escolhido foi brazilian e deveria ser american na estação, conforme o servidor. Os seguintes procedimentos deverão ser executados na estação: •
Ir no iniciar/executar, digitar regedit e teclar ok.
•
Apertar a tecla F3 e mandar localizar NLS_LANG
•
Todas as chaves NLS_LANG que estão como Brazilian... deverão ser alterada para AMERICAN_AMERICA.WE8ISO8859P1
•
Ir teclando F3 até terminar todas as NLS_LANG.
•
COMANDOS ÚTEIS ORACLE Abaixo alguns comandos úteis na administração de bases Oracle.
TOTVS-2011 – Let’s Share
123
-- VERIFICA INSTANCIA (IDENTIFICAR NOME DA INSTANCIA E INFORMAÇÕES DA MESMA) SELECT * FROM GLOBAL_NAME; SELECT * FROM V$INSTANCE; --VERSAO DO ORACLE (VERIFICAR QUAL É A VERSAO DO ORACLE) SELECT VERSION FROM V$INSTANCE -- VERIFICAR QUAIS SÃO OS USUÁRIOS DO SISTEMA (VERIFICAR TODOS OS USUÁRIOS EXISTENTES) SELECT * FROM DBA_USERS -- CONTA OBJETOS DO SCHEMA (CONTA E LISTA TODOS OS TIPOS DE OBJETOS COM UM OWNER ESPECÍFICO) SELECT COUNT(OBJECT_TYPE), OBJECT_TYPE FROM DBA_OBJECTS WHERE OWNER LIKE 'RM%' GROUP BY OBJECT_TYPE; SPOOL OFF -- VERIFICA ATRIBUTOS DO USUÁRIO (ATRIBUTOS GERAIS DE USUÁRIOS) SELECT * FROM DBA_USERS WHERE USERNAME LIKE 'RM%'; SELECT * FROM DBA_TAB_PRIVS WHERE GRANTOR LIKE 'RM%'; -- VERIFICA PREVILEGIOS DO USUÁRIO SELECT * FROM DBA_SYS_PRIVS WHERE GRANTEE LIKE 'RM%'; SELECT * FROM DBA_ROLE_PRIVS WHERE GRANTEE LIKE 'RM%'; -- DESATIVA USUÁRIO / ATIVA ALTER USER USER RM ACCOUNT LOCK; ALTER USER USER RM ACCOUNT UNLOCK; ALTER USER USER RM PASSWORD EXPIRE; -- VERIFICA STATUS DA CONTA SELECT USERNAME, ACCOUNT_STATUS FROM DBA_USERS -- VERIFICAR SE TEM ALGUM USUÁRIO USANDO O SISTEMA (BOM CASO DESEJE PARAR O SERVICO DO ORACLE SERVER) SELECT SADDR, SID, USERNAME, LOGON_TIME, STATUS, OSUSER, MACHINE, PROGRAM FROM V$SESSION; -- VERIFICA PREVILEGIOS DE ROLE SELECT * FROM DBA_ROLE_PRIVS; TOTVS-2011 – Let’s Share
124
-- CONTA OBJETOS DO SCHEMA SELECT COUNT(OBJECT_TYPE), OBJECT_TYPE FROM DBA_OBJECTS GROUP BY OBJECT_TYPE; -- CONTA OBJETOS DE UM SCHEMA ESPECÍFICO SELECT COUNT(OBJECT_TYPE), OBJECT_TYPE FROM DBA_OBJECTS WHERE OWNER LIKE 'RM%' GROUP BY OBJECT_TYPE; -- CONTA OBJETOS INVALIDOS SELECT COUNT (*) FROM DBA_OBJECTS WHERE STATUS='INVALID' AND OWNER LIKE 'RM%'; -- VERIFICA OBJETOS INVALIDOS SELECT OBJECT_TYPE, OBJECT_NAME, STATUS FROM DBA_OBJECTS WHERE STATUS='INVALID' AND OWNER LIKE 'RM%'; -- GERA SCRIPTS DOS OBJETOS INVALIDOS SELECT 'ALTER'||' '|| OBJECT_TYPE ||' '||OWNER ||'.'|| OBJECT_NAME || ' COMPILE;' FROM DBA_OBJECTS WHERE STATUS='INVALID' AND OWNER LIKE 'RM%'; -- VERIFICA AS ROLES RM SELECT * FROM DBA_ROLES WHERE ROLE LIKE '%RM%'; SELECT * FROM DBA_SYS_PRIVS WHERE LIKE '%RM%'; --ALTERAR SENHA DE USUARIO ALTER USER USER RM IDENTIFIED BY 'NOVA_SENHA'; --PROPRIEDADES DO SERVER (lANGUAGE, CHARACTER SET E ETC..) SELECT * FROM NLS_DATABASE_PARAMETERS --PROPRIEDADES DA SESSAO (lANGUAGE, CHARACTER SET E ETC..) SELECT * FROM NLS_SESSION_PARAMETERS --MOSTRA INFORMÇÕES GERAIS DA PARAMETRIZAÇÃO (NÃO FUNCIONA NO SQL TOOLS) SHOW PARAMETERS TOTVS-2011 – Let’s Share
125
--VERIFICAR TRIGGERS NA BASE SELECT * FROM DBA_TRIGGERS WHERE TABLE_OWNER='RM' --VARIAVEIS DE AMBIENTE CONN SYSTEM@INSTANCIA SPOOL C:\LOGS SET ECHO ON SET TIMING ON SET LINES 1000 SET SQLBL ON ALTER SESSION SET NLS_DATE_FORMAT = 'DD/MM/YYYY HH24:MI:SS'; SELECT SYSDATE FROM DUAL; SHOW USER
Segurança no Corpore RM Alterando a senha do usuário RM Para se alterar a senha do usuário RM, é necessário seguir a seguinte ordem: •
Tire um backup do banco de dados
•
Logar na aplicação como “mestre” (usuário supervisor)
•
Acessar a opção: Cadastros / Segurança / Códigos de Acesso
•
Alterar os campos Senha: e Confirmação de Senha: para a futura senha do usuário de banco RM.
•
Alterar no banco a senha do usuário RM.
Alterando a senha do usuário SYSDBA A DLL de login permite ao cliente escolher um usuário diferente do SYSDBA para realizar a conexão com o banco de dados de modo a obter os parâmetros de conexão para o usuário. Esta
escolha
se
dá
através
da
existência
do
arquivo:
\CorporeRM\CorporeRM.ini, que deve ter o seguinte formato: TOTVS-2011 – Let’s Share
126
[LOGIN] DBUSERNAME=usuario DBPASSWORD=senha Assim, a DLL procurará pela existência deste arquivo. Caso ele exista, ao invés do SYSDBA/masterkey, serão utilizados os parâmetros de conexão informados (usuário/senha). Mas essa modificação não é necessária e nem recomendada pela TOTVS, tendo em vista que este usuário só tem permissão de leitura nas tabelas globais.
BDE Administrator: O BDE Administrator é um engine ou programa que atua como uma interface entre o SGDB e o Aplicativo, ou seja é através deste programa que serão configuradas todas as propriedades para se conectar o aplicativo usado (ex: Softwares da RM Sistemas) a uma base de dados qualquer (ex:Banco de Dados contido no SQL Server). Caso você não saiba onde encontrar esta ferramenta, ela se encontra no painel de controle de seu sistema operacional. Caso não tenha o BDE instalado, será necessário sua instalação para conseguir conectar sua aplicação ao banco de dados.
Na página Database do BDE Administrator estão os aliases para os Banco de Dados disponíveis. E a página Configuration, exibe e permite que seja configurado os drivers instalados usados pelo BDE para gerenciar as tabelas. TOTVS-2011 – Let’s Share
127
1 - Configurando o BDE para acessar o SQL Server: Inicie o BDE “Administrator” - Lembre-se, ele se encontra no Painel de Controle.Utilize a opção “Object” e após em “New”. Selecione o nome do driver respectivo ao Banco que você deseja trabalhar. Neste caso, o SQL Server, seu driver é o MSSQL.
Agora informaremos um nome para nosso alias. Por Padrão, bases que serão utilizadas por sistemas do Corpore RM devem ser iniciados com o nome “CoporeRM” . Após nomeado, passaremos a configurar o alias criado: •
Altere o campo “Server Name” para o nome da maquina onde se encontra o banco de dados restaurado.
•
Altere o campo “Database Name” para o nome do banco de dados em questão criado no SGDB do SQL Server já restaurado.
•
Preencha o campo “Host Name” com o nome da sua maquina.
•
Preencha o campo “User Name” com o nome de um usuário com acesso para este banco de dados. (Por padrão usamos o nome “rm” ou “sysdba”).
Veja no exemplo abaixo como ficaria:
TOTVS-2011 – Let’s Share
128
Após estes preenchimentos, vamos testar a conexão com o banco: Primeiramente, salve estas alterações pelo ícone
, localizado na parte superior do BDE Administrator,
e após clique, 2 vezes sobre o alias criado, o BDE solicitará uma senha para executar tal conexão, por padrões, para o usuário “rm” deve-se usar a senha “rm” e para o usuário “sysdba” deve-se usar a senha “masterkey”:
Caso a conexão seja bem sucedida, após digitar a senha e clicar em “OK” o sistema apresentara os dados relativos a este alias em negrito:
TOTVS-2011 – Let’s Share
129
CONFIGURANDO O BDE PARA ACESSAR O ORACLE Inicie o BDE “Administrator” - Lembre-se, ele se encontra no Painel de Controle. Utilize a opção “Object” e após em “New”. Selecione o nome do driver respectivo ao Banco que você deseja trabalhar. Neste caso, o SQL Server, seu driver é o Oracle.
Agora informaremos um nome para nosso alias. Por Padrão, bases que serão utilizadas por sistemas do Corpore RM devem ser iniciados com o nome “CoporeRM” .Após nomeado, passaremos a configurar o alias criado: •
Altere o campo “Server Name” para o nome do alias que aponta para a instancia pré configurado no Net Manager.
•
Preencha o campo “User Name” com o nome de um usuário com acesso para este banco de dados. (Por padrão usamos o nome “rm” ou “sysdba”).Veja no exemplo abaixo como ficaria:
TOTVS-2011 – Let’s Share
130
Salve estas alterações pelo ícone
, localizado na parte superior do BDE
Administrator, e após clique, 2 vezes sobre o alias criado, o BDE solicitará uma senha para executar tal conexão, por padrões, para o usuário “rm” deve-se usar a senha “rm” e para o usuário “sysdba” deve-se usar a senha “masterkey”.Pronto, seu alias esta pronto e testado, agora basta executar a aplicação RM e selecionar este alias, conforme representado na tela a seguir:
PARAMETRIZAÇÃO DO BDE Na guia Database, ainda no alias CorporeRM: •
Type – selecionando o banco de dados (ORACLE)
•
"BLOB" (Binary Large OBject), recipiente para campos de origem diversas,
podendo ser até mesmo objetos definidos pelo próprio usuário. Num BLOB pode-se guardar imagem, som, textos longos, textos longos formatados. Este parâmetro pode comprometer a performance do sistema, por isso sugerimos que seja aumentado gradativamente. TOTVS-2011 – Let’s Share
131
O Blob Size – Limita o tamanho que a área temporária utilizada na memória (buffer) pode chegar. Setando este parâmetro para 64, significa que sua aplicação pode chegar a um blob de 64 K. >32 e <1000. Sugerido inicialmente: 64 O Blob Cache – Determina a quantidade de Blobs que poderá armazenar na estação. Setando este parâmetro para 128, significa que a aplicação poderá trabalhar com o máximo de 128 blobs armazenados, caso ultrapasse, o sistema irá emitir a seguinte mensagem: "Invalid Blob handle in record buffer", neste caso é só aumentar. >64 e < 65536. Sugerido inicialmente: 128 Iremos destacar alguns parâmetros que podem comprometer a performance do sistema e prevenir alguns erros: Na guia Configuration: Drivers/Native/oracle •
DLL32 - deverá ser parametrizada com SQLORA8.DLL (favor verificar a
versão desta DLL se é a 5.2.0.2, na guia Database , basta clicar com o botâo direito do mouse no CorporeRM, ir em Version Information e conferir a versão) •
VENDOR INIT - OCI.DLL
System/Init •
Langdriver – Driver da linguagem do sistema apropriado para a versão do
Windows do seu país: 'ascii' ANSI Local Share - False •
Memsize – Máximo de memória que o BDE poderá utilizar. Mínimo 16 MB,
máximo 205 MB. Sugerimos que coloque o valor da memória da estação, desde que seja menor que 205, se for maior, coloque 205. •
Maxfilehandles – Máximo de arquivos concorrentes que o BDE poderá
suportar, o valor alto dará impacto a uma boa performance no sistema, porém utilizará mais recurso do sistema operacional. Dever ser usado somente valor inteiro de 5 a 4096. OBS: È apresentado no final desta apostila os principais erros apresentados pelo BDE Administrator.
TOTVS-2011 – Let’s Share
132
CONVERSÃO DA BASE DE DADOS VERSÃO 11.20 Antes de iniciar o processo de conversão certifique-se dos seguintes requisitos. 1- Cópias de Segurança da base de dados. 2- Realizar o backup da base de produção e restaurar a mesma em um ambiente de teste, visando primeiramente realizar uma conversão neste ambiente de testes. 3- Caso possua customizações verificar junto ao Dep. De Customizações da TOTVS se as mesmas possuem versões compatíveis com a nova versão. 4- Criar um alias no BDE apontando para o ambiente de teste. 5- Instale o TOTVS Conversor da versão 11.20
1. Execute o TOTVS Conversor para continuar o processo selecione o botão Avançar
Fig.1-Tela inicial do processo de conversão
TOTVS-2011 – Let’s Share
133
2. É exibido o aviso abaixo.
Fig.2 - Esta tela remete a importância da análise prévia do documento de portabilidade da versão a ser utilizada. Analisando os requisitos de Hardware e software para a versão você estará garantindo maior confiabilidade ao seu ambiente de produção. 3. Ambiente 3 camadas
TOTVS-2011 – Let’s Share
134
Fig.3 - A tela acima possibilita o download do documento explicativo sobre a arquitetura 3 camadas que é uma recomendação da TOTVS desde a versão 10.70 4. Usuário e senha
Fig. 4 - A tela acima solicita o usuário e senha a serem utilizados para conversão. Por padrão orientamos que seja utilizado o usuário rm e sua respectiva senha. 5. Usuários conectados
Fig.5 - Esta tela apresenta os usuários conectados a base de dados. Caso não existam usuários conectados de fato será necessário liberar estes registros da tabela GLOGIN. TOTVS-2011 – Let’s Share
135
Para liberar os logins você deverá realizar o seguinte comando DELETE FROM GLOGIN e reiniciar o processo. 6. Aviso
Fig.6 - O aviso acima informa alguns cuidados necessários a uma boa conversão.
7.Iniciar conversão
TOTVS-2011 – Let’s Share
136
Fig. 7- Esta tela permite o inicio do processo de conversão. Através desta etapa você poderá selecionar As informações sobre local de gravação do log de conversão e se deseja ou não atualizar as estatísticas da base de dados durante a conversão. Ao selecionar a atualização de estatísticas o processo de conversão terá um acréscimo de tempo de execução, porém este procedimento é recomendado para prover melhor performance da base Conversão novo Modelo de BackOffice para clientes do Segmento de Projetos.
8. Conversão novo modelo de Backoffice clientes segmento de Projetos
TOTVS-2011 – Let’s Share
137
Fig.8 - Esta tela será apresentado aos clientes que possuírem cadastros no módulo TOTVS construção e projetos. O cliente que JÁ conhece o novo modelo de backoffice e confirma que sua empresa é do segmento de projetos deverá selecionar a opção OK, caso o cliente seja do Segmento porém não conhece sobre o novo modelo de backoffice o mesmo deverá se informar antes de continuar a conversão. Esta tela não deverá ser apresentada aos clientes que NÃO forem do segmento de projetos. Caso isso ocorra, apesar do cliente não ser do segmento ele possui cadastros de projetos em sua base (TABELA MPRJ) , neste caso o cliente deve verificar esta situação e caso não utilize o segmento realizar a eliminação destes dados de sua base. 9. Customizações
Fig.9 - Caso o cliente possua customizações deverá entrar em contato préviamente com o Dep. De customizações para avaliar se a sua customização está disponível na nova versão. Clicando em sim a conversão será interrompida e exibida a mensagem abaixo
TOTVS-2011 – Let’s Share
138
Fig.10 10. License Server
Fig.11 - Nesta versão o uso do license server se torna obrigatório. Para maiores
informações
você
deve
verificar
o
documento
existente
em
c:totvs\totvs\CorporeRM\Scripts
11. Consistência Saldus
Fig.12-Caso seja exibida esta mensagem a responsabilidade pela solução deste problema é a equipe do TOTVS Gestão Contábil(RM Saldus) devido a inconsistência da rotina de conciliação de lançamentos contábeis,. TOTVS-2011 – Let’s Share
139
A demanda será transferida a equipe até que seja disponibilizada documentação padrão aos clientes para solução do problema. Após a execução dessa rotina, o cliente tem apenas 7 dias para efetuar a conversão da base para a versão 11.20.
Informações Adicionais Caso existam dúvidas no processo o cliente deverá entrar em contato com a equipe de banco de dados do suporte TOTVS.
PROCEDIMENTOS DE ANÁLISE E MANUTENÇÃO DA BASE DE DADOS.
SQL Server PROCEDIMENTOS PARA EXECUTAR O PROFILER DO SQL SERVER 2005. Menu Programas Microsoft SQL Server 2005 Performance Tools SQL Server Profiler conforme figura abaixo.
TOTVS-2011 – Let’s Share
140
Será aberta a janela principal do Profiler. Clicar no ícone New Trace conforme figura abaixo
Será aberta a janela de conexão no servidor conforme figura abaixo:
Em SQL Server informar o nome do servidor que se encontra o banco de dados Caso seja Administrador da máquina poderá utilizar “Windows authentication” caso contrario utilizar “SQL Server authentication” e logar com o usuário SA. Será exibida a janela abaixo, solicitando o nome para o Arquivo de trace (trace name), neste dever ser colocado qualquer nome conforme tela abaixo.
TOTVS-2011 – Let’s Share
141
Selecionar a guia “orelha” Events Selection, marque as opções “Show all events” e “Show all coluns” para que possa ter uma melhor visualização dos eventos, na coluna events marque os eventos que você deseja que sejam gravados a serem gravados no log a ser gerado conforme tela abaixo.Geralmente os eventos a serem adicionados são: Errors and Warnings,Stored Procedure,Transactions e TSQL
Obs.: O eventos (Security Audit,Sessions,Stored Procedures,TSQL) por padrão vem marcados podendo manter os mesmos.
TOTVS-2011 – Let’s Share
142
Selecionar o botão Column Filters... . Nesta janela será configurado os “critérios” para realizar a monitoração do log, desta forma podemos monitorar isoladamente o que uma determinada estação esta realizando no banco de dados especificado, deverá ser configurado os critérios DataBaseName e HostName. Em DataBaseName expandir ( clicar no sinal de + “mais” ao lado deste critério) e no item like adicionar o nome do banco de dados Ex: EXEMPLO, CORPORE. Conforme janela abaixo. Obs.: Caso não saiba o nome do banco de dados, este poderá ser verificado na propriedade DATABASE NAME do alias no BDE.
Conforme citado acima o outro critério a ser configurado será o HostName, neste deverá ser adicionado o nome da máquina na rede Ex: SERVER, STENOVATO, conforme janela abaixo :
TOTVS-2011 – Let’s Share
143
Após este procedimento, clicar no botão OK e logo em seguida no botão RUN, o profiler irá começar a gravar todas as transações enviadas para o banco de dados, simular o erro no aplicativo logo após clicar no botão STOP conforme janela abaixo
Logo após clicar na opção STOP , ir ao menu File Save as Trace File e informar um nome qualquer para o arquivo e clique no botão Salvar. Conforme janela a seguir.
TOTVS-2011 – Let’s Share
144
DBCC – Database Consistency Cheker
TOTVS-2011 – Let’s Share
145
No SQL Server 2005, através da linguagem transacional, temos uma série de comando que podem ser de grande utilidade na manutenção de tabelas e índices. Entre os vários comando DBCC existentes, alguns merecem atenção maior quando falamos de otimização de consultas. Abaixo veremos quais são eles divididos por quatro categorias.
COMANDOS DE MANUTENÇÃO Comandos para manutenção preventiva ou corretiva no banco de dados: DBCC DBREINDEX Reconstrói os índices de uma tabela. Muito útil para manutenção de índices. DBCC DBREPAIR Apaga um banco corrompido. Use DROP DATABASE ao invés de DBCC DBREPAIR. DBCC INDEXDEFRAG Desfragmenta um ou mais índices de uma tabela. Melhora a performance do índice. Fonte: PICHILIANI 2.8.2 Comandos Gerais Possuem diversas funcionalidades, como alocação de tabela na memória, ajuda sobre outros comandos DBCC e ‘pinagem’ de tabela: DBCC HELP Retorna a sintaxe de algum outro comando DBCC
TOTVS-2011 – Let’s Share
146
DBCC PINTABLE ‘Pina’ a tabela , ou seja , faz o SQL Server não liberar da memória algumas informações de uma tabela. Se utilizado com cuidado , há ganho de performance. DBCC UNPINTABLE Faz o SQL Server liberar da memórias algumas informações de uma tabela que foi ‘pinada’ com o comando DBCC PINTABLE. DBCC ROWLOCK Simplesmente incluída por compatibilidade. A funcionalidade que este comando proporcionava já é embutida automaticamente no SQL Server 2000 DBCC TRACEON Habilita um flag de trace que é necessário para outros comandos DBCC. DBCC TRACEOFF Desabilita um flag de trace setado como comando DBCC TRACEON
COMANDOS DE STATUS Fazem algumas verificações de algumas configurações do banco de dados:
DBCC OPENTRAN Mostra informações sobre a transação mais velha ( mais tempo executando ) em um banco de dados.
TOTVS-2011 – Let’s Share
147
DBCC SHOWCONTIG Mostra várias informações sobre os índices de uma tabela , inclusive o nível de fragmentação do índice. DBCC SHOW_STATISTICS Mostra as informações sobre as estatísticas de uma tabela. Estatísticas são muito importantes para a melhora de performance. DBCC TRACESTATUS Mostra a situação dos flags de trace que foram setados com o comando DBCC TRACEON
COMANDOS DE VALIDAÇÃO Checagem de alguns objetos do banco de dados como tabelas, valores das colunas IDENTITY e constraints:
DBCC TRACEON. Estes traces controlam configurações internas do SQL Server DBCC CHECKALLOC Verifica o espaço para as estruturas de alocações internas do SQL Server. Permite alguns reparos em caso de erro. DBCC CHECKCATALOG Somente checa a consistência de algumas tabelas de sistema do SQL Server ( que compõem o Database Catalog ). Não faz reparos DBCC CHECKCONSTRAINTS Checa os relacionamentos de uma determinada constraint no banco de dados. Não faz reparos. TOTVS-2011 – Let’s Share
148
DBCC CHECKDB Verifica erros de alocação e de consistência em vários objetos do banco de dados. Pode efetuar reparos importantes em caso de erro. DBCC CHECKFILEGROUP Muito parecido com o DBCC CHECKDB , porém só faz a verificação no nível do filegroup de um database. Não faz reparos DBCC CHECKIDENT Chega e corrige , caso necessário , valores de colunas que possuem a propriedade IDENTITY. Pode inclusive resetar o valor inicial ( seed ) da coluna que possui a propriedade IDENTITY. DBCC CHECKTABLE Checa e corrige a integridade das páginas de dados , índices , ntext , text e image para uma tabela ou uma indexed view DBCC NEWALLOC Idêntica à DBCC CHECKALLOC. Foi mantida por compatibilidade.
SENTENÇAS SQL
DML - Linguagem de Manipulação de Dados Primeiro há os elementos da DML (Data Manipulation Language). A DML é um subconjunto da linguagem usada para selecionar, inserir, atualizar e apagar dados. •
SELECT
- é o comumente mais usado do DML, comanda e permite ao usuário
especificar uma query como uma descrição do resultado desejado. A questão não especifica como os resultados deveriam ser localizados. TOTVS-2011 – Let’s Share
149
•
INSERT - é usada para inserir dados em uma tabela existente.
•
UPDATE - para mudar os valores de dados em uma fila de tabela existente.
•
DELETE - permite remover filas existentes de uma tabela.
DDL - Linguagem de Definição de Dados O segundo grupo é a DDL (Data Definition Language). Uma DDL permite ao usuário definir tabelas novas e elementos associados. A maioria dos bancos de dados de SQL comerciais tem extensões proprietárias no DDL. Os comandos básicos de uma DDL são: •
CREATE - cria um objeto (uma Tabela, por exemplo) dentro da base de dados.
•
DROP - apaga um objeto do banco de dados.
DCL - Linguagem de Controle de Dados
O terceiro grupo é o DCL (Data Control Language). DCL controla os aspectos de autorização de dados e licenças de usuários para controlar quem tem acesso para ver ou manipular dados dentro do banco de dados.Os comandos básicos de uma DCL são: •
GRANT - autoriza ao usuário executar ou setar operações.
•
REVOKE - remove ou restringe a capacidade de um usuário de executar operações.
•
BEGIN TRAN - (ou START TRANSACTION, dependendo do dialeto SQL) pode ser usado
para marcar o começo de uma transação de banco de dados que pode ser completada ou não. •
COMMIT - envia todos os dados das mudanças permanentemente.
TOTVS-2011 – Let’s Share
150
•
ROLLBACK - faz com que as mudanças nos dados existentes desde que o último COMMIT
ou ROLLBACK sejam descartadas.
Consultando Dados através de Sentenças SQL pelo SQL Server: 1º - Na Barra superior do SQL Server clique sobre opção “New Query”:
OBS: Usando esta opção será necessário na janela aberta para execução de sentenças, informar a Base de Dados a ser consultada:
Para executar uma sentença basta após escrevê-la, clicar na opção “Execute” localizada na parte superior da janela:
TOTVS-2011 – Let’s Share
151
Consultando Dados através de Sentenças SQL pelo ORACLE: 1º - Faça login na ferramenta de edição de consulta. Neste caso, vamos utilizar a ferramenta SQL Tools, que não é a ferramenta padrão da Oracle, mas possui uma interface gráfica mais amigável. Abaixo segue a tela de login, onde o se deve informar o usuário de banco de dados a ser utilizado com sua senha e nome do TNSNAMES pré configurado no NET MANAGER.
2º - Automaticamente uma nova query já é iniciada, bastando apenas o usuário digitar a consulta que deseja executar e clicar no botão de ação “Execute”
para obter o
resultado.
TOTVS-2011 – Let’s Share
152
Propriedades de uma tabela no SQL Server Para listar todas as informações de uma tabela, afim de verificar como por exemplo os campos que aquela tabela possui, os tipos desses campos, a chave primaria, as constraints (chaves estrangeiras), indices e etc no SQL Server, deve-se digitar no query editor o seguinte comando: SP_HELP “Nome da tabela”
TOTVS-2011 – Let’s Share
153
OBS: Um atalho para esse procedimento é digitar apenas o nome da tabela, selecionála e pressionar as teclas ALT+F1.
Cláusulas As cláusulas são condições de modificação utilizadas para definir os dados que deseja selecionar ou modificar em uma consulta. SELECT - Utilizada para especificar as colunas que se vai selecionar os registros. FROM - Utilizada para especificar a tabela que se vai selecionar os registros. DISTINCT - Define a visualização somente dos campos com valores distintos, sem repetição. WHERE - Utilizada para especificar as condições que devem reunir os registros que serão selecionados. GROUP BY - Descrição – Utilizada para separar os registros selecionados em grupos específicos. HAVING - Utilizada para expressar a condição que deve satisfazer cada grupo. TOTVS-2011 – Let’s Share
154
ORDER BY - Utilizada para ordenar os registros selecionados com uma ordem especifica. UNION - Utilizada para unir duas ou mais colunas. Operadores Lógicos AND - correspondente ao “E” lógico. Avalia as condições e devolve um valor verdadeiro caso ambos seja corretos. OR - correspondente ao “OU” lógico. Avalia as condições e devolve um valor verdadeiro se algum seja correto. NOT - correspondente a Negação lógica. Devolve o valor contrário da expressão. Operadores de Comparação < - correspondente a “Menor que” > - correspondente a “Maior que” <> - correspondente a “Diferente de” <= - Correspondente a “Menor ou Igual que” >= - Correspondente a “Maior ou Igual que” = - Correspondente a “Igual que” BETWEEN - Utilizado para especificar um intervalo de valores. LIKE - Utilizado na comparação de um modelo e para especificar registros de um banco de dados. Funções de agrupamento As funções de agrupamento se usam dentro de uma cláusula “SELECT” em grupos de registros para devolver um único valor que se aplica a um grupo de registros. Elas ignoram valores nulos. TOTVS-2011 – Let’s Share
155
AVG - Utilizado para calcular a media dos valores de um campo determinado. COUNT - Utilizado para devolver o número de registros da seleção. SUM - Utilizado para devolver a soma de todos os valores de um campo determinado. MAX- Utilizado para devolver o valor mais alto de um campo especificado. MIN- Utilizado para devolver o valor mais baixo de um campo especificado. Em sua forma mais simples uma sentença SELECT precisa incluir o seguinte:
Sintaxe:
SELECT
é uma lista de uma ou mais colunas -obrigatório DISTINCT
suprime duplicações. -opcional
*
seleciona todas as colunas -opcional
column alias
seleciona o nome da coluna -opcional dá um nome diferente (apelido) à coluna selecionada -
opcional FROM table especifica a(s) tabela(s) contendo as colunas -obrigatório WHERE
restringe condições apresentadas - opcional
Expressões aritméticas: Algumas vezes pode ser necessário modificar a maneira como os dados serão apresentados, fazendo cálculos. Isto é possível usando expressões aritméticas. Uma expressão aritmética pode conter nomes de colunas, valores numéricos constantes e operadores aritméticos.
TOTVS-2011 – Let’s Share
156
A tabela acima lista os operadores aritméticos disponíveis no SQL. Eles podem ser usados em qualquer cláusula de uma sentença SQL exceto na cláusula FROM. Se uma expressão aritmética contém mais de um operador, multiplicação e divisão são avaliados primeiro. Se os operadores dentro da expressão possuem a mesma prioridade, então a avaliação é feita da esquerda para a direita. Usamos parênteses para forçar que a expressão dentro dos mesmos seja avaliada primeiro.
Exemplificando algumas Sentenças SQL: SELECTS SQL: SELECT * FROM PFUNC Na sentença SQL acima, estou pedindo para selecionar (visualizar) todos (para isto usamos ‘*’) os registros contindos na tabela “PFUNC” :
TOTVS-2011 – Let’s Share
157
Ou apenas a quantidade de registros contidos nesta Tabela: SQL: SELECT COUNT (*) FROM PFUNC
TOTVS-2011 – Let’s Share
158
Selecionar todos os códigos de situação existentes na tabela de funcionários sem repetição: SQL: SELECT DISTINCT CODSITUACAO FROM PFUNC
Selecionar todos os nomes de funcionários que tenham data de demissão diferente de nula (preenchida). SQL: SELECT NOME, DATAADMISSAO ADMISSAO FROM PFUNC TOTVS-2011 – Let’s Share
159
Selecionar todos os nomes de funcionários que tenham data de demissão diferente de nula (preenchida). SQL: SELECT NOME, DATADEMISSAO FROM PFUNC WHERE DATADEMISSAO IS NOT NULL
TOTVS-2011 – Let’s Share
160
Poderiamos tambem selecionar por exemplo, apenas o Nome e Salario de funcionarios com salario menor que
R$ 500,00:
SQL: SELECT NOME, SALARIO FROM PFUNC WHERE SALARIO < '500.00'
Ordenar todos os funcionários pelo valor de seu respectivo salário:
SQL: SELECT NOME, SALARIO, *
FROM PFUNC WHERE SALARIO < '500.00'
ORDER BY SALARIO
TOTVS-2011 – Let’s Share
161
Selecionar todos os nomes e códigos de sessão dos funcionários, exceto os da sessão 01.01:
SQL: SELECT NOME, CODSECAO FROM PFUNC WHERE CODSECAO <> '01.01'
TOTVS-2011 – Let’s Share
162
Selecionar todos os nomes e salários dos funcionários, com salários iguais a R$50,00, R$ 700,00, R$800,00, e R$900,00. SQL: SELECT NOME, SALARIO FROM PFUNC WHERE SALARIO IN (50, 700, 800, 900)
Selecionar o total (soma) de salários de todos os funcionários da tabela.
SQL: SELECT SUM (SALARIO) FROM PFUNC
TOTVS-2011 – Let’s Share
163
Selecionar a média dos salários não repetidos da tabela. SQL: SELECT AVG (DISTINCT SALARIO) FROM PFUNC
Selecionar o Funcionário com maior valor de Salário: SQL: SELECT MAX(salario) FROM PFUNC
Selecionar o nome dos funcionários adicionando 400,00 no salário de todos.
TOTVS-2011 – Let’s Share
164
SQL: SELECT NOME, SALARIO + 400 FROM PFUNC
CONCATENAÇÃO: Selecionar o nome dos funcionários, unindo as colunas Rua e número. SQL: SELECT NOME, RUA + ',' + NUMERO FROM PPESSOA
Selecionar todos os nomes de funcionários iniciados com a letra ‘M’. SQL: SELECT NOME FROM PFUNC WHERE NOME LIKE 'M%' TOTVS-2011 – Let’s Share
165
Selecionar todos os nomes de funcionários exceto ‘Marias’. SQL: SELECT NOME FROM PFUNC WHERE NOME NOT LIKE 'MARIA_%'
Selecionar a média salarial de pessoas por seção. SQL: SELECT CODSECAO, AVG(SALARIO) FROM PFUNC GROUP BY CODSECAO
TOTVS-2011 – Let’s Share
166
Selecionar todos os registros da tabela PFUNC, apresentando somente as colunas com os nomes (em ordem alfabética. SQL: SELECT NOME FROM PFUNC ORDER BY NOME ASC
Selecionar o código da seção, a soma dos salários, o maior salário e o numero de funcionários, desde que o menor salário seja superior a 1000. SQL: SELECT PSECAO.CODIGO, SUM(SALARIO), MAX(SALARIO), COUNT(CHAPA) FROM PSECAO, PFUNC WHERE PSECAO.CODIGO = PFUNC.CODSECAO GROUP BY PSECAO.CODIGO HAVING MIN (SALARIO) >100 TOTVS-2011 – Let’s Share
167
Selecionar o nome de todos os dependentes dos funcionários, que nasceram em Betim e todos os nascidos em Salvador. SQL: SELECT CHAPA, NOME, LOCALNASCIMENTO FROM PFDEPEND WHERE LOCALNASCIMENTO LOCALNASCIMENTO
= FROM
'BETIM'
UNION
PFDEPEND
SELECT
WHERE
CHAPA,
NOME,
LOCALNASCIMENTO
=
'SALVADOR'
CONSULTAS COM JUNÇÃO
TOTVS-2011 – Let’s Share
168
A sintaxe é basicamente a mesma. A diferença está na utilização da cláusula WHERE, necessaria para fazer a ligação entre tabelas. É impressindivel que as colunas de ligação sejam realmente idênticas (conteúdo). A ligação entre tabelas é necessária sempre é necessároa sempre qie for preciso selecionar um “valor” de uma coluna, de uma tabela “pai” ou de uma tabela “filha” em relação a tabela principal de sua sentença SQL. Exemplo: Neste exemplo a tabela principal é a PFUNC e não temos o nome da filial fazendo parte de sua estrutura. O nome da filial está na tabela GFILIAL. Sendo assim, ligamos as colunas em que os conteudos sejam idênticos (fazem parte das chaves primárias e estrangeiras das tabelas envolvidas). A tabela PFUNC é filha da tabela GFILIAL, pois, a coluna CODFILIAL é chave primaria em GFILIAL, e, consequentimente, é chave estrangeira em PFUNC. SELECT GFILIAL.NOME, PFUNC.CHAPA FROM GFILIAL, PFUNC WHERE GFILIAL.CODCOLIGADA = PFUNC.CODCOLIGADA AND GFILIAL.CODFILIAL = PFUNC.CODFILIAL
OUTER JOINs TOTVS-2011 – Let’s Share
169
As consultas com OUTER JOINs produzem resultados contendo as colunas selecionadas de cada linha em uma tabela, mesmo que esta não tenha relação com um subconjunto de linhas de uma outra tabela. Ou seja tras as linhas que geralmente não obedecem a condição dp join. É necessário especificar o JOIN a ser executado. Existem 3 tipos: •
Um LEFT OUTER JOIN especifica todas as linhas da tabela da esquerda que não se encaixam na condição especificada (ON).
•
Um RIGHT OUTER JOIN especifica todas as linhas da tabela da direita que não se encaixam na condição especificada (ON).
•
Um FULL OUTER JOIN especifica todas as linhas das tabelas que não se encaixam na condição especificada (ON).
• Exemplo: Selecionar todos os nomes dos funcionarios e os nomes dos bancos de deposito de pagamento, somente para aqueles que possuem contas de pagamento cadastrada. SQL: SELECT P.NOME, B.NOME FROM PFUNC P LEFT OUTER JOIN GBANCO B ON P.CODBANCOPAGTO = B.NUMBANCO
TOTVS-2011 – Let’s Share
170
SUBQUERY
Para resolver esse problema, será necessário duas consultas: uma para encontrar quanto ganha Jones e uma segunda consulta que encontrará quem ganha mais que essa quantidade. É implementada uma consulta dentro da outra. A consulta interna ou subquery retorna um valor que é usado pela consulta principal. Usar uma subquery é o equivalente a execução de duas consultas sequenciais. Selecionar os funcionários que possuem o salario maior que a média de salarios da filial 2. SQL: SELECT NOME, SALARIO, (SELECT AVG(SALARIO) FROM PFUNC WHERE CODFILIAL = 2) MEDIA FROM PFUNC WHERE SALÁRIO > (SELECT AVG (SALARIO) FROM PFUNC WHERE CODFILIAL = 2)
TOTVS-2011 – Let’s Share
171
INSERT Adiciona uma nova linha na tabela de maneira que os campos correspondentes sejam de mesmo tipo.
Inserindo um novo funcionario na tabela de cadastro de pessoas. SQL: INSERT INTO PPESSOA (CODIGO, NOME) VALUES (9998, 'FRANCISCANA IBERLINDA')
OBS: Diferentemente da clausula SELECT a execução dos comandos DML “Inserte”, “Update” e “Delete” não apresenta campo algum como resultado, somente a mensagem: (1 row(s)
affected), que quer dizer que 1 registro foi
modificado, após sua execução.
UPDATE A função UPDATE modifica linha(s) existentes numa tabela, se especificada(s) a clausula WHERE foi atribuida, será feito um filtro para mofificar apenas esse restrito grupo. TOTVS-2011 – Let’s Share
172
Alterar todos os salarios de funcionarios que atualmente possuem salario menor que R$ 300,00, para R$ 310,00 SQL: UPDATE PFUNC SET SALARIO = '310.00' WHERE SALARIO < '300.00'
DELETE É possível remover linhas existentes em uma tabela usando a sentença DLETE.
A clausula WHERE indentifica as linhas a serem deletadas e é composta de nomes das colunas, expressões, constraints, subqueries e operadores de comparação. Todas as linhas da tabela são apagadas caso omitirmos a clausula WHERE. Deletando o funcionário criado na sentença INSERT.
TOTVS-2011 – Let’s Share
173
SQL: DELETE FROM PPESSOA WHERE NOME = 'FRANCISCANA IBERLINDA'
CREATE Crie tabelas para armazenar os dados executando a declaração CREATE TABLE. Esta declaração é uma das declarações da linguagem de definição de dados (DDL). Declarações DDL são um subconjunto das declarações SQL usadas para criar, modificar ou remover estruturas do banco de dados. Estas declarações tem um efeito imediato no banco de dados, e elas também gravam informações no dicionário de dados. Para criar uma tabela, um usuário deve ter privilégio para usar o CREATE TABLE e uma área de armazenamento para criar objetos.
Adicionando uma tabela de eventos adicionais no RM Labore contendo 5 campos de diferentes tipos e passando como chave primaria dessa tabela dois campos. SQL: CREATE TABLE PADICRESC ( CODCOLIGADA DCODCOLIGADA, CODEVENTO VARCHAR(4) NOT NULL, VALOR RMDVALOR2, FORMSELECAO VARCHAR(8), TOTVS-2011 – Let’s Share
174
APLICACAO VARCHAR(1), CONSTRAINT
PKPADICRESC
PRIMARY
KEY
(CODCOLIGADA,CODEVENTO))
ALTER TABLE Use a declaração ALTER TABLE para: • Adicionar uma coluna (PK, FK, etc). • Modificar uma coluna existente (PK, FK, etc). • Definir um valor default para uma nova coluna (PK, FK, etc).
Depois que criamos as tabelas, podemos precisar alterar a estrutura da tabela porque alguma coluna foi omitida ou a definição da coluna precisa ser alterada. Fazemos isto usando a declaração ALTER TABLE. Exemplo: Alterando o tipo de dado do campo NUMEROOFICIAL da tabela GBANCO.
TOTVS-2011 – Let’s Share
175
SQL: ALTER TABLE GBANCO ALTER COLUMN NUMEROOFICIAL VARCHAR(3) NOT NULL
Podemos adicionar colunas (PK, FK, etc) em uma tabela usando a declaração ALTER TABLE com a cláusula ADD
Exemplo: Adicionando um campo MOTIVO na tabela FHISTIMPRESSO do tipo VARCHAR de 200 posições. SQL: ALTER TABLE FHISTIMPRESSO ADD MOTIVO VARCHAR(200)
TOTVS-2011 – Let’s Share
176
Podemos deletar um campo (PK, FK, etc) de uma tabela usando a declaração ALTER TABLE com a cláusula DROP. Exemplo: Deletando a constraint (FK) FKZLOG_GUSUARIO da tabela ZLOG SQL: ALTER TABLE ZLOG DROP CONSTRAINT FKZLOG_GUSUARIO
DROP A declaração DROP TABLE remove a definição de uma tabela. Quando dropamos uma tabela, o banco de dados perde todos os dados da mesma e todos os índices e etc associados a ela, não sendo possível desfazer a operação.
Dropando a tabela de eventos adicionais criada anteriormente.
TOTVS-2011 – Let’s Share
177
SQL: DROP TABLE PADICRESC
GRANT O comando GRANT pertence ao grupo de definição de linguagem DCL (Linguagem de controle de dados) e serve para dar permissão de usuários a objetos no banco. Exemplo: Dar permissão ao usuário SYSDBA de selecionar, alterar e gravar dados na tabela de usuários da aplicação:
TOTVS-2011 – Let’s Share
178
REVOKE O comando REVOKE pertence ao grupo de definição de linguagem DCL (Linguagem de controle de dados) e serve para retirar permissão de usuários a objetos no banco. Exemplo: Retirar permissão ao usuário SYSDBA de selecionar, alterar e gravar dados na tabela de usuários da aplicação:
TOTVS-2011 – Let’s Share
179
BEGIN TRAN
Comando de linguagem DCL (Controle de dados) que marca o ponto inicial de uma transação local explícita. Exemplo: Ao executar um comando DML você pode realizar alterações na base que não poderão ser desfeitas, ao atribuir um ponto de início da transação você poderá executar este comando com possibilidade de retornar ao inicio da transação após a execução. BEGIN TRAN DELETE FROM GDIC
TOTVS-2011 – Let’s Share
180
Neste caso você deverá executar o commando BEGIN TRAN para delimitar o ponto de ínicio da transação, podem ser executados uma série de comandos após o BEGIN TRAN que só serão comitados após a execução do commando COMMIT.
ROLLBACK Comando de linguagem DCL (Controle de dados) que reverte uma transação explícita ou implícita ao começo da transação ou a um ponto de salvamento dentro da transação. O ROLLBACK TRANSACTION apaga todas as modificações de dados feitas desde o começo da transação ou até um ponto de salvamento. Ela também libera recursos mantidos pela transação. Exemplo: Desfazer exclusão de todos os registros do Dicionário de Dados do Corpore (GDIC).
TOTVS-2011 – Let’s Share
181
Obs: O comando rollback reverte informações a partir de um ponto de salvamento ou inicio da transação, sendo assim o comando não irá funcionar quando executado sem um ponto delimitado de inicio da transação. Ocorre o erro: Msg 3903, Level 16, State 1, Line 1 The
ROLLBACK
TRANSACTION
request
has
no
corresponding
BEGIN
TRANSACTION. Exemplo: Ao executar um comando DML você pode realizar alterações na base que não poderão ser desfeitas, ao atribuir um ponto de início da transação você poderá executar este comando com possibilidade de retornar ao inicio da transação após a execução. BEGIN TRAN DELETE FROM GDIC ROLLBACK
Após a execução do Rollback pode se verificar que os registros não foram deletados da base.
TOTVS-2011 – Let’s Share
182
Otimização de Consultas SQL O bom desempenho em consultas de bancos de dados vai além da estratégia de índices utilizada nas tabelas pertencentes à consulta. Questões como: projeto de bancos de dados, dimensionamento do hardware e estratégias de otimização são itens que afetam diretamente o tempo de resposta das consultas em geral. Este artigo propõe-se a discutir aspectos que transcendem a otimização de consultas de bancos de dados. Outras questões como: memória, processador, disco e subsistema de comunicação também podem se tornar fatores de gargalo e afetar o desempenho no nível do sistema. Entende-se por “gargalo” qualquer componente ou atividade que limita o desempenho do sistema. Veremos alguns desses fatores abaixo. Projeto Quando se projeta um banco de dados deve-se ter a certeza de que todas as funcionalidades serão fornecidas de maneira correta e com o menor tempo de resposta possível. Algumas questões de projeto até podem, mas não devem, ser resolvidas após a colocação do banco de dados em produção. Por exemplo, é possível decidir pela criação de constraint de check em uma determinada coluna de uma tabela do banco de dados após o sistema estar no ar. Porém, há questões de desempenho que são resultantes de um projeto de banco de dados ineficaz ou uma TOTVS-2011 – Let’s Share
183
modelagem de dados equivocada que tornam sua utilização uma tarefa quase impossível pelos altos tempos de resposta envolvidos. Nesses casos, a solução mais correta é a alteração da estrutura e um novo projeto de banco de dados. Contudo, a solução de reconstrução do projeto, além de drástica, é extremamente custosa. Questões como: as maiores tabelas do banco e os processos mais complexos da aplicação devem ser identificados tão logo seja possível, bem como considerações sobre os efeitos no desempenho causados pelo aumento do número de
usuários
que
acessam
o
banco
de
dados.
Exemplos de mudanças de projeto que podem fornecer melhoria de desempenho: Imagine uma tabela que contenha milhares de registros, das vendas diárias de uma livraria. Suponha que essas vendas devam ser totalizadas para serem usadas em um relatório diário. É possível adicionar uma ou várias colunas nessa tabela que guardem dados previamente agregados para serem usados no relatório ou utilizar uma estratégia de processamento e construção prévia do conjunto de resultados desejado. A idéia aqui é diminuir a sobrecarga de realizar a soma desses valores em tempo de execução. Portanto, colunas calculadas ou consolidação de dados via trigger seriam boas saídas; Bancos
de
dados
excessivamente
normalizados
podem
ter
o
desempenho de consultas reduzido. Isso se deve, principalmente, ao fato de existirem muitas pequenas tabelas inter-relacionadas. Esse cenário prejudica o desempenho porque o banco terá de processar os dados de todas as tabelas envolvidas e combiná-los para retornar os resultados. Em certas situações um grau controlado de desnormalização é benéfico à aplicação.
Hardware Geralmente, quanto maior o banco de dados mais recursos de hardware serão necessários para suportar as operações realizadas por seus usuários. Entretanto, TOTVS-2011 – Let’s Share
184
vale ressaltar que outros fatores determinantes incluem o número de sessões concorrentes, throughput de transações (quantidade de transações que podem ser realizadas em um mesmo período de tempo) e os tipos de operações que são utilizadas
no
banco
de
dados:
select,
insert,
update
e
delete.
Por exemplo, um sistema de biblioteca que é pouco atualizado terá menos requisitos de hardware do que um data warehouse corporativo altamente acessado pelo departamento de vendas. Da mesma forma, discos maiores para o armazenamento de dados, maior quantidade de memória e processadores mais rápidos seriam fundamentais ao data warehouse, mas não teria um custo benefício interessante
para
o
sistema
de
biblioteca.
O mecanismo de armazenamento é uma questão chave para qualquer banco de dados relacional e requer bastante atenção no planejamento. Implementações de sucesso requerem um planejamento cuidadoso e rigoroso na etapa de projeto. Esse planejamento
deve
incluir
considerações
sobre
as
seguintes
questões:
Como armazenar os dados ao longo dos discos usando arquivos e grupos de arquivos; Que projeto de índice utilizar para fornecer desempenho de consulta no acesso aos dados – para mais informações sobre índices consulte o artigo Otimizando o desempenho no SQL Server 2005 – Parte I, publicado na SQL Magazine nºXX; Como configurar os parâmetros do banco de dados para obter o máximo de desempenho; E, caso necessário, qual o tipo de RAID Redundant Array of Independent Disks (Array redundante de discos independentes) de hardware será utilizado. Vejamos a seguir alguns desses itens. Arquivos
TOTVS-2011 – Let’s Share
185
Um banco de dados SQL Server é composto de, no mínimo, dois arquivos: um arquivo de dados e um arquivo de log. Esses arquivos, na verdade, só são percebidos pelo sistema operacional uma vez que o SQL Server enxerga o banco como uma unidade indivisível. As informações de dados e log nunca são misturadas no mesmo arquivo. Além disso, existirão arquivos separados para cada banco de dados. A Figura 1 ilustra um banco de dados e seus arquivos.
Figura 1. Bancos de dados e seus arquivos
Um ou mais arquivos podem ser agrupados em estruturas conhecidas como grupos de arquivos. Os grupos de arquivos facilitam tarefas administrativas como operações de backup e restore. Se por ventura a configuração de hardware possuir diversas unidades de disco, é possível alocar os grupos de arquivos em discos individuais. A Figura 2 ilustra a utilização de dois grupos de arquivos: o primary e um segundo grupo de arquivos definido pelo usuário. O grupo de arquivos primary é default (quando uma determinada tabela é criada, se nada for dito em contrário, ela será criada dentro do primary) do SQL Server e guarda as tabelas do catálogo presentes em cada banco de dados. O grupo de arquivos definido pelo usuário guarda objetos de usuário e não objetos do catálogo do sistema. Portanto, é importante que ao criar um novo banco de dados seja criado, logo em seguida, um grupo de arquivos, definido pelo usuário, para o armazenamento dos objetos. Na Figura 2, as tabelas OrdHistYear1 e OrdHistYear1 são armazenadas no grupo de
TOTVS-2011 – Let’s Share
186
arquivos definido pelo usuário “User-defined Filegroup”. Os arquivos de log de transações não pertencem a grupos de arquivos e são armazenados em estruturas à parte.
Figura
Grupos
2.
de
arquivos
A utilização de arquivos e grupos de arquivos melhora o desempenho do banco de dados porque é possível criar o banco espalhando seus arquivos ao longo de vários discos, controladoras de disco ou conjuntos RAID. Imagine por exemplo que sua máquina possui quatro discos. É possível criar um banco de dados composto de três arquivos de dados e um arquivo de log e armazenar cada arquivo em um disco diferente. Quando os dados forem acessados, os quatro cabeçotes de leitura e gravação podem ler ou gravar os dados, de forma paralela. Além disso, as tabelas mais freqüentemente acessadas podem ser separadas das demais, sendo armazenadas em grupos de arquivos distintos dos grupos de arquivos das demais tabelas. Vale ressaltar que tais grupos de arquivos devem estar em discos físicos separados para que não seja criada retenção de disco e conseqüentemente perda de desempenho. Outra dica importante é colocar tabelas diferentes, usadas em joins em várias consultas, em grupos de arquivos diferentes. Essa ação melhora o desempenho em função do I/O paralelo para pesquisa dos dados TOTVS-2011 – Let’s Share
usados
no
join. 187
PARÂMETROS
DE
CONFIGURAÇÃO
DO
SERVIDOR
O SQL Server 2005 ajusta automaticamente muitas das opções de configuração do servidor. Entretanto, há configurações que podem ser alteradas pelo administrador. A Microsoft recomenda que tais alterações sejam feitas de forma bastante cautelosa para não incorrer em efeitos contrários à melhoria de desempenho.
OTIMIZANDO O DESEMPENHO DO SERVIDOR USANDO OPÇÕES DE CONFIGURAÇÃO DE MEMÓRIA O gerenciador de memória do SQL Server 2005 elimina a necessidade de gerenciamento manual da memória disponível no SQL Server. Quando o serviço do SQL Server inicia, ele determina dinamicamente a quantidade de memória a ser alocada baseada no total de memória que estiver sendo usada pelo sistema operacional
e
por
outras
aplicações.
As opções de configuração min server memory, max server memory, max worker threads, index create memory, min memory per query podem ser usadas para configurar a utilização de memória e ajustar o desempenho do servidor. Todas essas opções de configuração são em nível de servidor e são configuradas através da stored procedure sp_configure. A seguir uma rápida descrição sobre cada uma delas.
max server memory: estabelece o limite superior de memória a ser usado por uma instalação SQL Server; min server memory: estabelece o limite inferior de memória a ser usado por uma instalação SQL Server; max worker threads: permite a configuração do número de threads de trabalho disponíveis para o SQL Server; index create memory: permite controlar o total de memória usado em TOTVS-2011 – Let’s Share
188
operações de criação de índices; min memory per query: essa opção permite especificar a quantidade mínima de memória em (em kilobytes) que será alocada para execução de uma query.
OTIMIZANDO O DESEMPENHO DO SERVIDOR USANDO OPÇÕES DE CONFIGURAÇÃO DE E/S A opção de configuração de servidor recovery interval pode ser gerenciada para configurar o uso de Entrada e Saída (E/S) e prover melhoria de desempenho do servidor. Essa opção controla quando o SQL Server 2005 realiza checkpoint (períodos de tempo em que as transações concluídas que estão no log de transações são gravadas definitivamente no disco) em cada banco de dados. Por padrão o SQL Server determina o melhor momento para fornecer operações de checkpoint. Entretanto, utilizando o Performance Monitor, é possível monitorar se essa opção está configurada a contento através da verificação de atividade de escrita nos discos do servidor no banco de dados. A configuração desta opção pode ser realizada
através
da
stored
procedure
de
sistema
sp_configure.
Picos de atividade de utilização de disco que alcançam 100% afetam o desempenho, obviamente, de forma negativa. Alterar a freqüência de ocorrência do processo de checkpoint pode melhorar o desempenho geral. Vale ressaltar que o desempenho deve ser constantemente medido para determinar se o novo valor teve um efeito positivo no desempenho. RAID Soluções de armazenamento, baseadas em hardware, que objetivem disponibilidade e tolerância a falhas são tipicamente implementadas usando RAID Redundant Array Of Independent Disks (Array redundante de discos independentes) níveis 0, 1, 0 + 1 e 5. O RAID utiliza controladoras de disco e arrays de discos para TOTVS-2011 – Let’s Share
189
minimizar a perda de dados, em caso de falha da mídia, além de fornecer melhoria de
desempenho
nas
operações
de
leitura
e
escrita.
As diferenças nos níveis de RAID basicamente estão na forma de implementação da tolerância a falhas e melhoria no desempenho do acesso aos dados.
Por
exemplo:
RAID nível 0 - Também chamado de Stripping (faixas de disco). Divide os arquivos em “fatias” e escreve cada uma delas em um disco do array. Esse nível de RAID não fornece tolerância a falhas, apenas permite um aumento de desempenho na medida em que as operações de leitura e escrita serão realizadas em paralelo. Desvantagem: se um dos discos do conjunto for danificado, as informações armazenadas em todo o conjunto são perdidas. Observe na Figura 3 que os arquivos são escritos ao longo do conjunto que, nesse exemplo, é composto por quatro discos.
Figura 3. O RAID 0 “fatia” o arquivo e armazena cada parte em um disco diferente
RAID nível 1 – Também chamado de Espelhamento. As informações escritas em um disco são ao mesmo tempo escritas em outro disco. O RAID 1 suporta tolerância a falhas, mas não possui um desempenho tão bom quanto no RAID 0 já que o arquivo é gravado como um bloco único no disco. A grande desvantagem é o custo. Para cada disco será necessário outro para que o espelhamento seja realizado. Na ocorrência de falhas, o desempenho do sistema não é afetado, mas é necessária a TOTVS-2011 – Let’s Share
190
substituição do disco defeituoso o quanto antes sob pena da perda do dado caso um evento subseqüente de falha aconteça. Após a substituição do disco defeituoso, o desempenho é degradado em função da reconstrução dos dados no novo disco. Após o término desse processo, o desempenho volta ao normal. A Figura 4 ilustra a utilização do RAID 1 ao longo dos discos 1 e 2. Observe que cada arquivo é gravado nos dois discos. Assim, o arquivo “A” existe tanto no disco 1 quanto no disco 2.
Figura 4. RAID 1, realiza um “espelhamento”, dos dados gravados no disco 1, no disco 2
RAID nível 5 - Faixas de disco com paridade. Nesse nível de RAID as informações são distribuídas em faixas e gravadas nos discos juntamente com uma informação de paridade que é usada para reconstruir os dados em caso de perda de um dos discos. A informação sobre a paridade é armazenada em cada um dos discos de forma alternada, ou seja, a cada momento é gravada em um disco diferente. O RAID nível 5 traz o melhor custo benefício, uma vez que combina tolerância a falhas com desempenho satisfatório nos acessos para operações de leitura e escrita. Entretanto, na ocorrência de falhas o desempenho ficará ligeiramente degradado uma vez que o RAID realizará o cálculo de paridade para reconstruir o dado presente no disco que foi danificado. É o nível de RAID mais utilizado no mercado. A Figura 5 mostra a estrutura do RAID nível 5 com cinco discos.
TOTVS-2011 – Let’s Share
191
Figura 5. RAID 5, armazena a informação de paridade, de forma alternada, em cada um discos do conjunto
RAID 0 + 1 - É o nível de RAID que traz o melhor desempenho e suporte tolerância a falhas. Combina o RAID 0 (Stripping) com RAID 1 (espelhamento).
Sua
desvantagem
está
no
altíssimo
custo
de
operacionalização.
UTILIZANDO
GRUPOS
DE
ARQUIVOS
COM
RAID
É possível combinar grupos de arquivos com soluções de RAID para melhorar o desempenho no acesso e a segurança dos dados. Inicialmente é necessário configurar a distribuição do RAID e, depois, usar os grupos de arquivos para distribuir
os
dados
em
vários
discos.
A Figura 6 mostra, além da controladora do sistema operacional e da controladora do log de transações, duas controladoras que apontam para dois conjuntos de RAID. Quatro arquivos estão associados a cada RAID. Um grupo de arquivos é composto de oito arquivos, nomeados de “A” a “H”, e está distribuído ao longo dos RAIDs. Essa estratégia é interessante porque distribui os dados de maneira uniforme em todos os discos e ao mesmo tempo mantém a facilidade de administração. Portanto, a união dos conceitos de RAID e grupos de arquivos trazem além de melhoria de desempenho, melhoria da administração do banco de
TOTVS-2011 – Let’s Share
192
dados em nível geral. Por exemplo, as operações de backup e restore se beneficiam dessa arquitetura e tornam-se muito mais rápidas do que em arquiteturas que não utilizam tais recursos.
Figura 6. RAID 5, armazena a informação de paridade, de forma alternada, em cada um discos do conjunto
Portanto, usar tal configuração fornece acesso paralelo aos dados, além de distribuir a carga entre vários discos para reduzir a perda de desempenho durante operações
de
leitura
e
escrita
(retenção
de
disco).
PLANOS DE EXECUÇÃO: Plano de Execução - O que analisar ? Você costuma analisar a performance de suas queries antes de colocá-la em produção? Infelizmente, em meu dia-a-dia de trabalho tenho percebido que a resposta para esta pergunta é NÃO. Muitos problemas de performance acontecem porque o desenvolvedor simplesmente não tem o hábito de analisar a performace das queries e como consequência temos queries utilizando índices de forma incorreta, queries que não utilizam os índices existentes na tabela e por incrível que pareça,
até
grandes
TOTVS-2011 – Let’s Share
tabelas
sem
índice
algum. 193
Por outro lado, muitos desenvolvedores e DBA's utilizam ferramentas do Query Analyzer como o ShowPlan gráfico, SHOWPLAN_ALL ou SHOWPLAN_TEXT, mas a próxima pergunta é : O que devemos procurar quando examinamos o resultado do plano de execução de uma query? A seguir serão descritos pontos importantes nos quais você deve estar atento na hora de analisar o plano de execução de uma query. Para isto, estarei utilizando o Showplan gráfico do Query Analyzer. Sendo assim, para aqueles que não conhecem o SHOWPLAN, recomendo a leitura dos tópicos "SET SHOWPLAN_ALL", "SET SHOWPLAN_TEXT" e "Graphically Displaying the Execution Plan Using SQL Query Analyzer" no Books Online. Em resumo, para ver o plano de execução de uma consulta no Query Analyzer, basta escrever a query e teclar Ctrl+L ou clicar no botão “Display Estimated Execution Plan” na barra de ferramentas do Query Analyzer. É importante observar que, uma vez que os problemas de performance podem ter várias razões e consequentemente várias soluções, os pontos destacados aqui são pontos básicos que você deve analisar e na medida do possível evitar que aconteçam. Primeiro Ponto: Operações com alto percentual de consumo Em uma query simples, inicie procurando por operações que geram um alto percentual de consumo. Procurar por operações de alto consumo permitirá que você priorize qual problema deverá ser atacado primeiro.
Se você esta analisando uma query com multiplos statements, será gerado um TOTVS-2011 – Let’s Share
194
plano de execução separado para cada statement. Para cada plano de execução será mostrado a ordem de execução da query, por exemplo: “Query 1”, “Query 2” e seu respectivo custo. Neste caso, procure pelas queries com maior custo.
Lembre-se : O plano de execução sempre deve ser lido da direita para a esquerda e de cima para baixo !!
Segundo ponto: Table Scan, Index Scans e Clustered Index Scans
Table Scans, Index Scans e Clustered Index Scans são operações que navegam por todas as linhas da tabela ou do índice e retornam as linhas que satisfazem a cláusula WHERE (assumindo que você use uma cláusula WHERE). Um Table Scan obtém linhas de uma tabela não indexada, conhecida também como “heap table”. Um Index Scan procura por linhas no índice não cluster, enquanto que um clustered index scan procura por linhas no índice cluster de uma tabela. É importante destacar que os Scans nem sempre são ruins, principalmente quando em tabelas com um pequeno número de registros ou consultas que devem TOTVS-2011 – Let’s Share
195
retornar todos os registros de uma tabela. Scans podem ser ruins se sua consulta roda por um período muito longo vindo a prejudicar inclusive outras conexões, causando o que chamamos de blocks. Os Scans são em sua maioria resolvidos através da criação de índices apropriados. Algumas soluções incluem alterar suas consultas de forma a ser mais seletiva, ou seja, usar a cláusula WHERE para filtrar ao máximo possível os registros retornados, adicionar/remover e modificar índices, remover hints, alterar o desing da tabela e usar a ferramenta Index Tuning Wizard para lhe auxiliar na criação de possíveis índices. Terceiro ponto: Warnings
Warings ou alertas normalmente são vistos quando não existem estatísticas para colunas de uma tabela e essas colunas são utilizadas como filtros de pesquisa nas queries. Eles podem ser solucionados através da criação de estatísticas para a coluna afetada (CREATE STATISTICS) ou ainda, criação de índices e adição de cláusulas JOIN.
Quarto ponto: Seta muito grossa
TOTVS-2011 – Let’s Share
196
As setas não são operadores, elas simplesmente são usadas para ligar um operador a outro. Através das setas podemos ter uma estimativa da quantidade de linhas afetadas por uma query, isto porque, quanto maior a espessura da seta, maior é a quantidade de linhas envolvidas na operação. Ou se preferir, a quantidade de linhas passada de um operador para outro. Para que você possa ver a estimativa de quantidade e tamanho das linhas afetadas, basta posicionar o cursor sobre a seta. Neste cenário, sempre dê uma atenção especial às setas mais grossas, pois uma linha muito grossa pode indicar uma alta operação de I/O. Para solucionar este tipo de problema você deve tentar fazer com que as setas fiquem o mais fina possível e aqui novamente entra a cláusula WHERE. Por outro lado, evite obter mais linhas que o necessário. Quinto Ponto: Bookmark Lookups
O operador Bookmark Lookup ocorre em conjunto com um nonclustered index seek quando a consulta deve obter colunas que não estão disponíveis dentro do nonclustered index. Neste cenário, procure por Bookmark Lookup que possua um alto percentual de consumo. Se o custo da operação de Bookmark Lookup for muito alto, verifique se um índice cluster ou um índice não cluster composto pelas devidas colunas (covering index) pode ser utilizado. Sexto Ponto: Sorting
Um operador SORT ordena todas as linhas de entrada em uma ordem
TOTVS-2011 – Let’s Share
197
ascendente ou descendente. Isto depende da cláusula ORDER BY de sua consulta. Operadores Sort normalmente acrescentam uma grande taxa de I/O às operações, primariamente utilizando o TEMPDB para suas operação. Se você costuma ver o operador SORT com muita frequência em suas consultas e este operador possui um alto consumo de operação, considere por remover a cláusula ORDER BY. Por outro lado, se você sabe que sempre ordenará sua consulta por uma coluna em específico, considere indexá-la. Lembre-se que no comando CREATE INDEX você pode fixar a direção de ordenação (ASC ou DESC) para um índice em particular. Nota: O Profiler é uma excelente ferramena para ajudar na identificação de queries muito pesadas ou que possuem um alto tempo de execução.
Boas Práticas e Tunning
Oracle Fatores a serem observados 1- Modelagem do Banco de Dados (Se não for muito tarde) 2- Tuning de Aplicação (códigos SQL mal elaborados) 3- Tuning de Memória (definir os parâmetros de memória corretamente) 4- Tuning de I/O Físico ( evitar que os arquivos do BD fiquem em locais com excesso de I/O físico 5- Elimine Contenção de Dados (lock,latches e wait)
6- Tuning de Sistema Operacional
TOTVS-2011 – Let’s Share
198
Um pouco mais sobre Tuning de Aplicação A otimização consiste em trazer a informação para o usuário com o menor custo e tempo possíveis. É encontrar um caminho mais eficiente de processar a mesma requisição. Quando você está escrevendo um novo comando SQL, ou otimizando um comando existente na aplicação, o tuning de aplicação pode melhorar o tempo de resposta da CPU, reduzir I/O e os recursos gastos com memória. A metodologia de tuning de SQL envolve identificar as querys que consomem mais recursos, e então otimizá-las. Em geral, um número pequeno de querys são responsáveis pela maior parte das atividades que ocorrem no Banco de Dados. Além disso, tente entender completamente a aplicação, focando sua atenção nos SQL ou tabelas onde os benefícios do tuning excederão os custos. Para isso, é importante observar alguns passos: •
Somente otimize o SQL depois que tiver certeza que o código está correto;
•
Garanta que os comandos sejam escritos absolutamente iguais para facilitar a reutilização no banco de dados. O re-parsing no banco de dados pode ser evitado para cada uso subseqüente.
Ex: SELECT * FROM EMP; É
diferente
Select
*
de: From
Emp;
SELECT * from EMP; •
Procure trazer do banco de dados somente as informações necessárias. Se você não precisa da informação contida em uma coluna específica, não é preciso trazê-la.
•
Mantenha sempre atualizado as estatísticas das tabelas;
•
Identifique problemas potenciais antes de mandá-los para produção. Isso
TOTVS-2011 – Let’s Share
199
pode ser feito utilizando o “Explain Plan”, tentando diminuir ao máximo o custo do SQL; •
Procure otimizar primeiro os SQL mais críticos; Não gaste tempo otimizando códigos que nunca ou raramente serão usados;
•
Use índices, mas não os crie em demasia. Muitos índices podem resultar em um efeito adverso na performance. Lembre-se de escolher o tipo de índice mais adequado a cada situação. O critério básico para escolha de índices é a seletividade.
Quando
o
banco
de
dados
resolve
uma
consulta,
freqüentemente, ele precisa percorrer mais registros do que aqueles realmente retomados pela consulta. Os registros percorridos que forem rejeitados representam o trabalho perdido. Quanto menor for o trabalho perdido, mais perto estaremos da performance ótima para resolver a consulta. Portanto, o melhor índice para uma consulta é aquele que apresenta a maior seletividade. •
Construa os índices a partir das restrições dos selects (cláusula WHERE); Lembre-se que as comparações usando “<>”, “NOT”, “NULL”, “LIKE” podem invalidar o índice.
•
Evite full table scans se o resultado pode ser recuperado via índice, a menos que a tabela seja pequena e o custo diminua. Quando a tabela é pequena, o trabalho envolvido em acessar o índice, pegar o endereço e acessar a tabela é maior que o esforço de ler a tabela inteira.
•
Divida as queries complexas em queries menores. Evite lógicas complexas de negócio no SQL. A lógica deve ficar no código fonte. Lembre-se que: SQL não é uma linguagem procedural.
•
Use os comandos que produzem sort (Group By, Order By, Distinct, etc.) somente quando necessário. No sort, o banco recupera todas as informações necessárias primeiro e depois as ordena.
•
Os comandos “EXIST” e “NOT EXIST” possuem menor custo do que os comandos “IN” e “NOT IN” na maior parte dos casos. Quando a maioria dos filtros estiver na sub-query o comando “IN” se torna mais eficiente.
•
Toda vez que houver função na coluna, o índice não será usado. Isto inclui as funções do Oracle.
TOTVS-2011 – Let’s Share
200
Use: WHERE cargo = rtrim(1); Ao
invés
de:
WHERE rtrim(cargo) = 1; •
Evite comparar dados incompatíveis. O Oracle converte automaticamente os campos char e number.
Ex: Levando em consideração que o campo “matricula” é numérico e “codigo” é literal, temos: WHERE
matricula
=
‘1234’
WHERE codigo = 1234 Note que o tipo de dados está incompatível, porém esse tipo de comparação não dá erro. Implicitamente o Oracle faz: WHERE
matricula
=
to_number(‘1234’)
WHERE codigo = to_char(1234) •
Procure usar “EXISTS” ao invés de “DISTINCT”.
Use: SELECT
M.CODIGO,
FROM
M.NOME
PFUNCAO
WHERE
EXISTS
FROM
M (SELECT
PFUNC
‘X’ F
WHERE F.CODPESSOA = M.CODIGO); Ao
invés SELECT
FROM
DISTINCT dept
de: dept_no,
d,
emp
dept_name e
WHERE d.dept_no = e.dept_no;
TOTVS-2011 – Let’s Share
201
CONFIGURAÇÃO DE BANCO DE DADOS EXTERNO - MSSQL
INTRODUÇÃO Objetivo: orientar o usuário a efetuar a configuração de um banco de dados externo de uma base de dados SQL através do Cadastro de Consultas SQL. Desenvolvimento/Procedimento 1. Incluir uma nova sentença SQL. Acesse: Utilitários / Consultas SQL Clique em Incluir (CTRL + INS).
TOTVS-2011 – Let’s Share
202
Clique em Banco de Dados Externo.
Ao acessar o Cadastro de Conexões a Banco de Dados Externo, clique em Incluir (CTRL + INS). Preencha os principais campos e clique em String de Conexão.
Selecionar o Data Source e Data Provider conforme seu ambiente. Neste caso estamos configurando uma conexão SQL.
TOTVS-2011 – Let’s Share
203
Clique em OK e determine o Servidor (Server Name), Usuário (User Name), Senha (Password) e a Base de Dados (Select or Enter a Database Name).
Teste a Conexão (Test Connection). Clique em OK. TOTVS-2011 – Let’s Share
204
No Cadastro de Conexões a Banco de Dados selecione a conexão que foi configurada anteriormente.
Digite a Consulta SQL utilizando recursos do banco de dados externo.
TOTVS-2011 – Let’s Share
205
ERROS COMUNS OCORRIDOS NO BDE ADMINISTRATOR.
Erro 01
Este erro significa que o BDE não conseguiu carregar o arquivo NTWDBLIB.DLL* que se encontra no diretório de sistema \Windows\System32. Normalmente ocorre, pois o cliente do Banco de Dados não esta instalado. Dica: Deverá ser instalado o Client do banco de Dados. No ajuda do Instalador item: (Instalação SGDB SQL Server Instalação do SQL Client) há todos os passos para instalação do cliente do banco de dados *NTWDBLIB.DLL: Cliente 32 bits do SQL Server (DB-Library), responsável pela comunicação entre o cliente (Estação) e o servidor de Banco de Dados. Erro 02
TOTVS-2011 – Let’s Share
206
Este erro ocorre quando a senha do Login RM foi digitada incorretamente ou o Login RM não existe no SQL Server. Obs.: Este erro pode ocorrer para os usuários RM e SYSDBA Dica: Para listar os logins existentes poderá ser executada através do Query Analizer a sentença abaixo no banco de dados MASTER: SELECT NAME FROM SYSLOGINS ORDER BY NAME Outra opção é Acessar Enterprise Manager Microsoft SQL Servers SQL Server Group < Servidor > Security Logins Para criar os Logins deverá ser executado o script abaixo: IF NOT EXISTS(SELECT * FROM MASTER.DBO.SYSLOGINS WHERE NAME = 'RM') EXEC SP_ADDLOGIN RM,RM GO sp_addalias RM,dbo GO IF NOT EXISTS(SELECT * FROM MASTER.DBO.SYSLOGINS WHERE NAME = 'SYSDBA') EXEC SP_ADDLOGIN SYSDBA,masterkey GO sp_adduser SYSDBA,SYSDBA
TOTVS-2011 – Let’s Share
207
Erro 03
Este erro significa que o usuário rm não é um usuário válido no banco de dados em questão. Obs.: Este erro pode ocorrer para os usuários RM e SYSDBA Dica: Para listar os usuários de banco existentes para a base de dados poderá ser executada através do Query Analizer a sentença abaixo no banco de dados em questão: SELECT NAME FROM SYSUSERS WHERE UPPER(NAME) IN ('\RM', 'RM', '\SYSDBA', 'SYSDBA') Para criar os usuários no banco de dados deverá ser executado o script de usuários de acordo com a versão do SQL Server: Erro 04
TOTVS-2011 – Let’s Share
208
Este erro significa que a autenticação do Servidor SQL Server esta configurada para aceitar apenas autenticação do Windows. Para alterar a autenticação do SQL Server deverá:
Acessar ( Enterprise
Manager Microsoft SQL Servers SQL Server Group < Servidor > Botão direito Propriedades Guia "orelha" Security -> item Authentication marcar a opção SQL Server and Windows. Após este procedimento parar o serviço do SQL Server e iniciar novamente. Erro 05
Este erro significa que o banco de dados foi restaurado com o nome de uma palavra reservada do SQL Server. No exemplo acima o banco de dados foi restaurado com o nome “ALTER”. Este é um comando do SQL Server, ou seja, uma palavra reservada. Dica: É possível alterar o nome do Banco de Dados através do Query Analizer utilizando o comando SP_RENAMEDB. Sintaxe: sp_renamedb 'Nome Antigo' , 'Nome Novo' Exemplo: sp_renamedb 'Corpore' , 'CorporeNovo'
TOTVS-2011 – Let’s Share
209
Erro 06
Este erro significa que não foi possível localizar uma entrada na tabela Sysdatabases* do servidor, ou seja, não foi possível encontrar no servidor o banco de dados, o nome do banco informado na propriedade DATABASE NAME do Alias CorporeRM do BDE. Dica: Deverá ser verificado a propriedade DATABASE NAME se o nome do banco de dados esta correto, esta poderá ser comparada a outra estação de trabalho em que o sistema esta funcionando normalmente. Sysdatabases: Tabela responsável por armazenar informações sobre as bases de dados (Banco de Dados) disponíveis no servidor.
Erro 07
TOTVS-2011 – Let’s Share
210
Este erro ocorre em Alias do tipo Oracle. Deverão ser alteradas as propriedades DLL32 e VENDOR INIT do BDE para SQLORA8.DLL e OCI.DLL respectivamente em (DBE “Orelha” Configurarion Configuration Drivers Native Oracle) Erro 08
Este erro ocorre em alias do tipo Oracle, quando o BDE não consegue carregar a DLL SQLORA8.DLL Dica: Deverá ser verificada a existência desta DLL na máquina. Outra causa é quando o client do Oracle não esta Instalado na estação. No ajuda do Instalador item : (Instalação SGDB Oracle Instalação do Oracle Client) há todos os passos para instalação do cliente do banco de dados Oracle. Erro 09
Este erro ocorre em alias do tipo Oracle. Este erro significa que a estação de trabalho não esta conseguindo conectar ao servidor de banco de dados. Normalmente ocorre quando a Instância Oracle esta parada ou algum outro problema que não permite a comunicação entre a estação de trabalho e o servidor de banco de dados. TOTVS-2011 – Let’s Share
211
Erro 10 Este erro significa que o BDE não conseguiu localizar ou conectar ao Servidor de banco e dados SQL Server. Normalmente ocorre quando não é informado corretamente na propriedade SERVER NAME do Alias CorporeRM do BDE o nome do servidor corretamente. Dica: A propriedade SERVER NAME poderá ser comparada a outra estação de trabalho em que o sistema esta funcionando normalmente. OUTROS ERROS COMUNS: Após instalar o BDE, ao tentar acessar ocorre o erro: Exception EBDEngine Error in modulo BDEADMIN.EXE at 00054F92 could not find objetc An error occurred while attempting to initialize the Borland Database Engine (error $2109). Deverá ser realizado o procedimento abaixo : - Remover o BDE pelo painel de controle (Adicionar e Remover Programas) - Remover a Pasta de instalação do BDE (Arquivos de Programas\common files\Borland Shared\ BDE - Renomear a pasta IDAPI para outro nome (Caso exista esta pasta) - Reiniciar a máquina - Instalar o BDE novamente - Voltar o nome da pasta para IDAPI. (Caso exista esta pasta) Obs.: Normalmente ocorrem estes dois erros citados acima quando há instalado na estação programas da Receita, Caixa Econômica etc.
TOTVS-2011 – Let’s Share
212