Baixe o app para aproveitar ainda mais
Prévia do material em texto
Faculdade de Ciências e Tecnologia de Birigui ADMINISTRAÇÃO DE BANCO DE DADOS ORACLE Autor: Emerson Nascimento Colchesqui 1.) Introdução Objetivo do Curso Conceito de Banco de Dados Banco de Dados Oracle Tarefas Comuns de Administração de Banco de dados Ferramentas de Administração do Banco de Dados 2.) Instalação do Banco de Dados Oracle Overview da Instalação Instalando o Software de Banco de Dados Oracle Usando o DBCA para Criar e Configurar o Banco de Dados 3.) Gerenciando a Instância Oracle Overview da Instância Oracle Shutting Down and Startup da Instância Oracle Shutdown / Startup manual ou em ambiente UNIX 4.) Configurando a Camada de Rede Entendendo a Configuração de Rede Ferramentas para a Configuração de Rede Visualizando e alterando a Configuração do LISTENER Starting and Shutting Down do LISTENER Configurando Estações Clientes 5.) Overview do Oracle Enterprise Manager Introdução do Oracle Enterprise Manager Acessando o Oracle Enterprise Manager 6.) Gerenciando as Estruturas de Armazenamento Estruturas de Armazenamento do Banco de Dados Executando Tarefas Comuns de Armazenamento do Banco de Dados Gerenciando as Estruturas de Undo do Banco de Dados Efetuando Mudanças nas Estruturas de Armazenamento do Banco de Dados 7.) Administrando Usuários e Privilégios Overview de Usuários e Privilégios Administrando Roles Administrando Profiles Administrando Usuários 8.) Gerenciando Objetos Overview dos Objetos de Banco de Dados Gerenciando Tabelas Gerenciando Índices Gerenciando Views Gerenciando Programas 9.) Backup e Restore do Banco de Dados Overview do Backup e Restore do Banco de Dados Configurando o Banco de Dados para Backup e Restore Backup do Banco de Dados Restore e Recover do Banco de Dados 10.) Monitorando e Ajustando o Banco de Dados Monitoração Pró-Ativa do Banco de Dados Diagnosticando Problemas de Performance 11.) Gerenciando o Software Oracle Gerenciando Arquivos e Logs Aplicação de Patches 1.) Introdução Objetivo do Curso Este curso visa oferecer um conceito básico sobre banco de dados e mais focado especificamente na solução Oracle para Banco de Dados. O curso dará ao aluno uma visão básica sobre as disciplinas existentes na administração de banco de dados Oracle, fornecendo conhecimentos sobre o funcionamento do software e sua principal ferramenta de administração – Oracle Enterprise Manager. Com o curso o aluno terá um alicerce formado para ir mais longe, buscando uma especialização, certificação ou aptidão para trabalhar como DBA Jr. em plataforma Oracle. Conceito de Banco de Dados Antes de iniciarmos o conceito de Banco de Dados é importante saber o conceito do “dado”, dado neste contexto é um sinônimo de informação, seja esta relevante ou não. Bancos de dados (ou bases de dados), são conjuntos de registros dispostos em estrutura regular que possibilita a reorganização dos mesmos e produção de informação. Um banco de dados normalmente agrupa registros utilizáveis para um mesmo fim. Vamos exemplificar o conceito de banco de dados: - Lembremos do nosso velho arquivo fichario: - O mesmo é um banco de dados manual. - Pois é um local que guardamos nossas informações/dados - Onde as informações (dados) são guardadas em fichas e/ou documentos - e organizadas de alguma forma para pesquisa - e armazenadas para algum objetivo. Este tipo de banco de dados além de ocupar um grande espaço fisico em nossas salas para armazenar poucas informações, sua pesquisa era extremamente lenta se compararmos aos padrões de hoje. Um banco de dados informatizado é usualmente mantido e acessado por meio de um software conhecido como Sistema Gerenciador de Banco de Dados (SGBD). Normalmente um SGBD adota um modelo de dados, de forma pura, reduzida ou estendida. Muitas vezes o termo banco de dados é usado como sinônimo de SGDB Vantagens que ganhmos com a informatização dos bancos de dados - Maior capacidade de armazenamento de informações - Menor espaço fisico ocupado para armazenar as informações - Maior velocidade no acesso a dados - Controle da Redundância de informações - Compartilhamento de informações - Independência dos dados Esquema básico de funcionamento de um SGBD Banco de Dados Oracle História O Oracle é um SGBD (sistema gerenciador de banco de dados) que surgiu no fim dos anos 70, quando Larry Ellison vislumbrou uma oportunidade que outras companhias não haviam percebido, quando encontrou uma descrição de um protótipo funcional de um banco de dados relacional e descobriu que nenhuma empresa tinha se empenhado em comercializar essa tecnologia. O SGBD da Oracle é líder de mercado. O Oracle 9i foi pioneiro no suporte ao modelo web. O Oracle 10g, mais recente, se baseia na tecnologia de grid. Recentemente fora lançado o Oracle 11g que veio com melhorias em relação ao Oracle 10g. Edições Além das diferentes versões do software de gerenciamento de banco de dados Oracle, a Oracle Corporation subdivide seu produto em "edições" variáveis - aparentemente por razões de marketing e controle de licenças. Enterprise Edition (EE) inclue mais funcionalidades que a 'Standard Edition', especialmente nas áreas de performance e segurança. A Oracle Corporation licencia este produto na base de usuários ou de núcleos de processamento, normalmente para servidores com 4 ou mais UCPs. EE não tem limite de memória e pode utilizar clusterização usando o software Oracle RAC. Standard Edition (SE) contem a a funcionalidade básica de banco de dados. A Oracle Corporation licensia este produto na base de usuários ou de sockets, normalmente para servidores com um à quatro UCPs. Se o número de UCPs exceder 4, o usuário deve migrar para a licensa Enterprise. SE não possui limite de memória e pode utilizar clusterização com o Oracle RAC sem custo adicional. Standard Edition One, introduziado com o Oracle 10g, possui algumas restrições de funcionalidades adicionais. A Oracle Corporation comercializa-o para uso em sistemas com uma ou duas UCPs. Ela não possui limitações de memória. Express Edition ('Oracle Database XE'), introduziada em 2005, oferece o Oracle 10g livre para distribuição nas plataformas Windows e Linux (com uma limitação de apenas 150 MB e restrita ao uso de apenas uma UCP, um máximo de 4 GB de dados de usuário e 1 GB de memória). O suporte para esta versão é feito exclusivamente através de fóruns on-line, sem o suporte da Oracle. Oracle Personal Edition fornece a funcionalidade de "alto fim" da Enterprise Edition mas é comercializada (e licenciada) para desenvolvedores específicos que trabalham em estações de trabalho pessoais. Oracle Database Lite, destinada para rodar em dispositivos móveis. O banco de dados, localizado parcialmente no dispositivo móvel, pode sincronizar com uma instalação baseada em servidor Tarefas Comuns de Administração de Banco de Dados O Administrador de banco de dados, conhecido pela abreviação em inglês DBA (Database Administrator), tem a principal responsabilidade manter o ambiente de dados administrado por ele ativo, seguro e acessível aos usuários. Fazem parte das atividades e responsabilidades do DBA: - Manter os bancos de dados ativos e disponíveis - Garantir a segurança e confidencialidade dos dados - Administrar o espaço ocupado pelo banco de dados - Administrar e manter os acessos de pessoas/sistemas ao banco de dados - Monitorar e manter a boa performance do SGBD - Garantir e monitorar as políticas de backup aplicadas - Efetuar restauração de dados de backups quando necessário - Configurar, instalar e administrar SGBD Também existe a figura do Administrador de Dados (AD), cuja responsabilidade difere do DBA, pois este se preocupa mais com o dado (informação) e sua integridade, do que com aspectos técnicos. Fazem parte das atividades e responsabilidades do AD: - Padronizar nomenclatura de objetos e atributos - Verificar se os objetos seguem a modelagem de dados adotada (FN) - Garantir a integridade das informações e evitar redundâncias - Manter a documentação dos metadados - Manter documentado a modelagem dos dados/sistemas “O Foco do nosso treinamento será voltado à formação de profissionais DBA Oracle” Ferramentas de Administração do Banco de Dados Podemos administrar o banco de dados Oracle de várias maneiras, utilizando scripts, ferramentas da Oracle, ferramentas de terceiros e hoje também ferramentas Open-Source. Podemos citar como as principais ferramentas de trabalho Oracle: SQL-PLUS Esta ferramenta é utilizada para passarmos comandos manualmente ao banco de dados, ou executarmos scripts com diversos comandos de uma única vez. Por ser uma ferramenta extremamente leve e versátil (e a mais antiga) esta é muito utilizada por DBAs experientes até hoje. Existe a versão web da ferramenta, que evita a instalação de softwares clientes nas máquinas de usuários. Porém não existe nesta ferramenta a possibilidade de execução de scripts. SQL-Worksheet Esta ferramenta é uma versão um pouco melhorada da SQL-PLUS, porém seu formato de utilização é um pouco diferenciado. O interessante desta ferramenta é que os resultados são exibidos em formato planilhado. PL-SQL Developer Esta ferramenta era de terceiros e foi adquirida pela Oracle e colocada como versão oficial a partir da versão 11g. Esta é uma ferramenta voltada principalmente à programação PL/SQL dentro de bases de dados Oracle. Oracle Enterprise Manager - OEM Esta é a principal ferramenta de administração de banco de dados fornecida pela Oracle. É uma ferramenta completa que abrange diversas disciplinas da administração de banco de dados. A versão WEB da ferramenta que estaremos estudando, traz além da parte administrativa, também a monitoração de ambiente, controle de auditoria e gerenciamento de backups. Oracle Enterprise Manager Grid Control Esta ferramenta de monitoração da Oracle que abrange o OEM, porém com recursos adicionais: - Monitoração de diversas instâncias simultaneamente - Monitoração de outros tipos de bancos de dados - Monitoração de Sistemas Operacionais - Monitoração de Applications Servers - Monitoração de Web Servers - Monitoração de Queue Managers 2.) Instalação de um Banco de Dados Oracle Overview da Instalação O Banco de Dados Oracle é um SGBD que é executado em múltiplas plataformas distintas, indo desde mainframes até sistemas embarcados. A maior quantidade de softwares Oracle instaladas encontram-se em servidores Windows e Unix/Linux. A instalação do software Oracle é baseada em Java, portanto há uma padronização na instalação em diferentes sistemas operacionais. Exemplo a forma de instalar Oracle para Windows é a mesma de se instalar em um servidor Unix O importante numa instalação Oracle é que os pré-requisitos apresentados pelo software sejam cumpridos, assim evitam-se problemas futuros de eventuais bugs ou falta de suporte técnico pela Oracle. Os pré-requisitos para instalação de um banco de dados Oracle não exigem uma máquina poderosa, com uma máquina simples conseguimos ter uma instalação razoável. “É fato que quanto mais poder de processamento, velocidade de I/O e memória existir no servidor mais rápido será o acesso as informações armazenadas.” Para o nosso treinamento utilizaremos a seguinte configuração: Sistema Operacional: Windows Server 2008 Memória Física: 4 Gb Espaço de HD: 14 Gb disponíveis Versão Oracle: Oracle 11g – Enterprise Edition Instalando o Software de Banco de Dados Oracle Nos próximos passos você aprenderá como fazer a instalação do software de banco de dados Oracle. Acompanhe atentamente o passo a passo. Instalando o Servidor de Banco de Dados 1. Passo: Acionar o Programa Instalador Podemos ter o software de instalação em DVDs ou diretamente gravado em pastas dentro do servidor ou na rede. Encontrando o diretório de instalação execute o programa chamado setup.exe 2. Passo: Selecionando o Produto a instalar Na primeira tela do Instalador encontramos três opções possíveis: Oracle Database 11g Ao selecionarmos esta opção indicamos que estamos querendo instalar o banco de dados ou o SGBD da Oracle, para a versão Oracle 11g. Oracle Client Selecionamos esta opção quando queremos instalar ferramentas e drivers para um cliente e/ou servidor de aplicação que necessite acessar os dados contidos em um servidor de banco de dados Oracle. Oracle Clusterware Selecionamos esta instalação quando formos efetuar instalações com clusters Oracle, chamados de Oracle RAC (Real Application Cluster) 3. Passo: Método de Instalação Neste passo podemos optar pela instalação básica, que simplifica os passos da configuração, ou podemos partir para a instalação avançada para conhecermos as opções do banco de dados detalhadamente. ORACLE_BASE = Contém a árvore de diretórios para o software Oracle e também para arquivos de dados do banco de dados. ORACLE_HOME = Contém a localização do software Oracle e os arquivos de configuração. Instalação Simplificada: Neste tipo de instalação só é necessário: - passar onde ficará instalado o software Oracle (ORACLE_BASE) e também a localização dos arquivos de software do Oracle (ORACLE_HOME). - Indicar o tipo de Instalação (Enterprise, Standard ou Personal) - Nome da Instância Oracle - E a senha do usuário administrador. Após passadas estas informações as demais o Oracle irá assumir de forma padrão as outras opções e iniciar a criação da nova instância. Instalação Avançada: Como o nome diz, trata-se de uma instalação onde todas as configurações iniciais podem ser escolhidas de acordo com a necessidade do administrador, não necessariamente ficando as opções padrões. Permite neste caso ao administrador ter mais controle e flexibilidade sobre o tipo de instalação. Vamos seguir o curso optando pela instalação avançada para vermos todas as opções possíveis: 4. Passo Tipo de Instalação Escolhemos neste passo agora o tipo de instalação de Oracle que queremos. Os tipos possíveis foram vistos no capítulo 1 no tópico Banco de Dados Oracle Selecionaremos para o nosso curso a opção Enterprise Edition, que nos permitira termos o máximo de recursos existentes na ferramenta 5. Passo: Local de Instalação Definirmosonde será instalado o software Oracle (ORACLE_BASE). Neste item fica configurado onde serão efetuadas quaisquer instalações de softwares Oracle. Definirmos qual será o nome de nossa instalação O Nome padrão adotado OraDb11g_home1, indica que esta é uma instalação de banco de dados (DB) da versão 11g e este é seu primeiro diretório. Definirmos o caminho de onde ficará o software (ORACLE_HOME) Aqui indicamos onde ficará o software do SGBD e suas configurações. 6. Passo: Pré-requisitos do software Nesta fase estamos checando se os pré-requisitos de hardware e softwares necessários para a instalação do software Oracle são atendidos. Enquanto os pré-requisitos não forem atendidos ou conscientemente forçarmos para que ele ignore algum pré-requisito não atendido a instalação não continuará. No nosso caso de instalação não atendemos um requisito e sofremos uma advertência. A advertência citada neste momento é que nós estamos efetuando uma instalação em um servidor que não possui IP Fixo, e isto faria com que os clientes pudessem perder o acesso ao banco de dados caso o DHCP renova-se o IP. Vamos ignorar esta advertência e dar prosseguimento a instalação. 7. Passo: Opção de Configuração Neste passo iremos informar a opção de configuração que queremos adotar para a nossa instalação. As opções são: a.) Criar um Banco de Dados Selecionaremos esta opção. Pois nossa intenção é instalarmos e criamos uma instância de banco de dados Oracle. b.) Configurar gerenciamento automático (ASM) Esta opção permite configurar o gerenciamento automático de arquivos do Oracle. Este gerenciamento controla todos os tipos de arquivos do banco de dados, criando um disco (raw) para o controle. Este tipo de gerenciamento é normalmente selecionado quando estamos efetuando uma instalação do tipo RAC. c.) Instalar Software Somente Neste tipo de instalação nenhum banco de dados será criado, apenas os softwares da Oracle serão instalados. 8. Passo: Finalidade do Banco de Dados Neste ponto selecionamos qual será a configuração inicial do banco de dados, ou seja, para que fim se destinará este banco de dados. A opção selecionada definirá os parâmetros de configuração de memória, controle de locks, acesso via rede entre outros. Estes parâmetros pré-definidos poderão ser alterados no futuro pelo DBA para fazer o que chamamos de Tunning ou afinamento do banco de dados, visando melhoria de performance. As finalidades pré-selecionadas pela Oracle são: Fins Gerais ou Sistema de Processamento de Transações Refere-se normalmente a sistemas de transações online Data Warehouse Refere-se a sistemas de busca massiva de dados e consolidação de grande massa de dados, com visão gerencial, estatística, comercial e outras. Avançado Neste item você define as configurações de tipo de banco, como fator de blocagem, memória, entre outros. Vamos escolher o padrão de Fins Gerais. 9. Passo: Nome da Instância Toda instância de banco de dados Oracle, recebe um nome que chamamos de nome de instância ou SID. Nesta configuração existem dois parâmetros: Nome do Banco de dados: Que armazenará o nome interno do banco de dados. SID: Que armazenará o nome de comunicação via rede Normalmente colocamos os dois nomes iguais, mantendo um padrão de no máximo oito caracteres. Para nosso estudos selecionaremos como nome de instância FATEB 10. Passo: Definindo detalhes técnicos A próxima tela de configuração possui quatro abas, referentes a configurações da instância: Memória Conjunto de caracteres Segurança Exemplos de esquemas Vamos conhecer cada uma delas: Memória Nesta aba iremos configurar quanto nossa instância irá utilizar de memória do servidor. Quanto mais memória tiver mais rápido será o acesso aos dados. O Oracle possui a partir da versão 10g o gerenciamento automático de Memória para os seus tipos de cachês existentes, ele gerencia quanto vai de memória para dados, para programas, para metadados, de forma automática. Nota: Como a versão que estamos instalando é de 32 bits, o Oracle só poderá alcançar no máximo por instância o tamanho de 2Gb de memória. Os parâmetros de configuração de memória podem ser alterados no futuro, via processo de tunning do banco de dados. Porém estes parâmetros não são dinâmicos e exigem parada da instância. 10.2 Conjunto de caracteres Nesta aba definimos o conjunto de caracteres que o banco irá utilizar, ou seja, definimos as letras e língua que iremos armazenar. O padrão WE8MSWIN1252 e o WE8ISO8859 consomem 1 byte por caracter armazenado e conseguem gravar os caracteres da língua portuguesa. O Unicode permite gravar qualquer tipo de caracter de qualquer língua, porém para conseguir isto ele consome 2 bytes para cada caracter armazenado. Importante: Uma vez definido o conjunto de caracteres o mesmo não poderá mais ser alterado, caso haja esta necessidade o banco terá de ser recriado e seus dados recuperados de um backup export. Vamos manter o padrão WE8MSIN1252. 10.3 Segurança Nesta tela definimos se queremos utilizar as melhorias de segurança que foram implementadas na versão 11g, ou desativá-las e manter padrão com a versão 10g e anteriores. As mudanças envolvem melhoria nas senhas básicas, implementação automática de auditoria, entre outros. Vamos optar por ativar as melhorias. 10.4 Exemplos de esquemas Permite criar esquemas de bancos de dados de exemplo da Oracle. Serão criados OWNERs e objetos, para mostrar funcionalidades do SGBD da Oracle, para quem conhece é a velha conta SCOTT senha TIGER, com melhorias. Como estamos em treinamento é interessante selecionarmos esta opção para que o nosso banco possa ter algumas tabelas e objetos já pré-criados para nossos estudos. 11. Passo: Gerenciamento do banco de dados Nesta tela definimos como nosso banco de dados será gerenciado e monitorado. Se tivéssemos instalado o ORACLE ENTERPRISE MANAGER GRID CONTROL, a opção para seleção do mesmo estaria habilitada. Nossa opção já é pré-escolhida o gerenciamento por OEM, temos a opção de ativarmos o servidor de mensagens SMTP, para envio de mensagens e alertas emitidos pela monitoração da instância. 12. Passo: Onde Armazenar os datafiles básicos Nesta tela iremos informar ao software onde queremos que fiquem armazenados os arquivos principais do banco de dados. A escolha que fizermos irá servir como base para a escolha dos diretórios para as tablespaces: SYSTEM, TEMP, USERS e UNDO. Com exceção da tablespace SYSTEM todas as demais tablespaces poderão ter seus arquivos de dados, alterados de localidade ou até renomeados de forma online. Porém para a tablespace SYSTEM ser renomeada ou mudada sua localização o arquivo de controle e backup do banco de dados terá de ser recriado do zero. Importante: Defina com atenção o local onde ficarão estes arquivos para evitar problemas de recriação de instância no futuro. Tablespaces São espaços alocados dentro do banco de dados para armazenamento de objetos, sendo estes índices ou tabelas. Uma tablespace pode ser composta de 1 ou mais arquivos de dados físicos gravados no disco. Principais Tablespaces: SYSTEM - Contém os objetos de gerenciamento interno do SGBD TEMP - Utilizado em queries que fazer uso de ordenação e joins UNDO - Dados alterados antes do commit USERS - Tablespace inicial para usuários Recomendação: Por questões de monitoração e performance os arquivos de dados de conteúdos distintos devem estar separados em discos/partições/file-systems distintos. Nota: A estrutura de diretórios já deve estar pré-criada dentro do sistema de discos. Layout de discos: Definiremos a seguinte estrutura para o nossos arquivos de banco de dados: C:\ORACLE\FATEB - raiz principal da instância FATEB C:\ORACLE\FATEB\BANCO - Arquivos tablespaces Oracle C:\ORACLE\FATEB\DADOS - Arquivos de dados da FATEB C:\ORACLE\FATEB\INDICES - Arquivos de índices da FATEB 13. Passo: Opções de Backup e Recuperação Esta próxima tela é muito importante pois definimos questões de backup e recuperação de dados, podendo esta até ter restauração de dados online. Veremos agora as opções existentes. Não ativar backups automatizados Esta opção define que você neste momento não deseja ativar nenhum tipo de backup e nem a opção de flash recovery existente no Oracle. Se você selecionar esta opção e mais tarde desejar fazer uso das funcionalidades citadas, a configuração será manual. Ativar Backups Automatizados Com isto ativamos o recurso de Flash_recovery e backups programados via job, o principal desta opção é a ativação do recurso flash_recovery que permite recuperar dados apagados recentemente, de forma rápida. Para o recurso de backup automático é necessário fornecermos credenciais de um usuário do sistema operacional que deverá ter direito de gravação na pasta que selecionamos para armazenar os backups. 14. Passo: Especificação da senha das contas do SGBD Nesta tela definimos a senha de cada uma das contas criadas pelo banco Oracle. Estas contas são internas e cada uma possui uma finalidade especifica. Conheça as contas criadas: SYS - Contém os objetos internos do SGBD Oracle (Dicionário de dados) SYSTEM - Conta Master de administração do banco de dados SYSMAN - Conta utilizada pelo OEM para monitorar o banco de dados DBSNMP - Conta utilizada pelo agente para obter métricas de monitoração No nosso treinamento colocaremos a senha como fateb para todas as contas 15. Passo: Registro do Oracle no site de suporte Nesta tela indicamos se queremos associar e registrar nossa instância no site de suporte da Oracle (metalink.oracle.com) . Se fizermos esta associação o sistema irá verificar automaticamente patches e baixá-los quando necessários. No nosso treinamento não iremos ativar esta opção. 16. Passo: Resumo e Instalação Neste passo terminamos de efetuar todas as configurações iniciais e iniciaremos o processo de instalação da nossa instância de dados. Inicio do Processo de Instalação: 15:54 Término do processo de instalação: 16:12 (tempo total 20 minutos aprox.) Nesta ultima tela notamos que o Oracle indica que concluímos a instalação com sucesso e nos fornece informações importantes: - Nome da Instância criada fateb - Caminho do arquivo de configuração - endereço do OEM: https://NColchesqui:1158/em Usando o DBCA para Criar e Configurar o Banco de Dados No capitulo anterior instalamos nosso software Oracle no servidor e também criamos o que chamamos de instância de banco de dados. Caso necessitamos criar uma nova instância no servidor, não necessitaríamos mais ter de reinstalar o software, bastaria chamarmos o utilitário DBCA (Database Configuration Assistant) e seguirmos os mesmos passos que utilizamos na criação de nossa primeira instância. Para executarmos o programa DBCA devemos ir ao menu Iniciar Todos os Programas -> Oracle – OraDb11g_home1 -> -> Ferramentas de Configuração e Migração -> -> -> Assistente de Configuração de Banco de dados Com a Ferramenta DBCA temos a possibilidade de efetuar as seguintes operações: Criar um banco de dados Esta opção permite que criemos novas instancias de banco de dados. Os passos apresentados nesta opção são exatamente os mesmos que selecionamos, quando efetuamos a instalação do servidor. Configurar opções de um banco de dados Aqui configuramos opções extras existentes na instância de banco de dados. Configuramos também a forma de comunicação do listener para o sistema de rede. Deletar um banco de dados Apaga uma instância de banco de dados criada, removendo todos os processos e seus datafiles. Gerenciar modelos Permite a criação de modelos (templates) de criação e configuração de instâncias. Configurar o gerenciamento de armazenamento automático Gerencia as configurações de controle do armazenamento automático de datafiles. Utilizado em sistemas RAC. 3.) Gerenciando a Instância Oracle Overview da Instância Oracle Até o momento instalamos o software Oracle, criamos uma instância de banco de dados ao qual demos o nome de FATEB, mas afinal o que é uma instância ? “Um instância em Oracle é o conjunto de programas/processos residentes em memória que são utilizados para gerenciar um banco de dados Oracle.” Quando criamos a instância FATEB na verdade criamos a estrutura de programas e processos em Oracle para acessarmos um banco de dados chamado FATEB. Arquitetura Oracle e seus componentes *O servidor Oracle consiste de: - Instância Oracle (Oracle Instance) - Arquivos do Banco de Dados (Database Files) *Arquivos do Banco de Dados Oracle - Um banco de dados possui uma estrutura lógica e física. - A estrutura física do banco de dados é um conjunto de arquivos do sistema operacional. Em um banco de dados Oracle eles são compostos de três tipos de arquivos: + Arquivos de Dados (Data Files) + Arquivos de Logs (Redo Logs) + Arquivos de Controle (Control Files) *Arquivos de Dados (Data Files) - Os arquivos de dados contém os dados do banco, e eles são armazenados em tabelas definidas pelo usuário. Além disto, nos arquivos de dados também são armazenados o dicionário de dados, as imagens anteriores de dados alterados, índices e outros tipos de estruturas. Um banco de dados Oracle deve conter no mínimo um arquivo de dados. *Características dos Arquivos de Dados - Os arquivos de dados podem estar associados a apenas um banco de dados Oracle. - Um ou mais arquivos de dados formam uma unidade lógica chamada tablespace. *Redo Logs - Os redo logs armazenam as mudanças efetuadas no banco de dados para possibilitar a recuperação dos dados em caso de falhas. Um banco de dados Oracle deve possuir no mínimo dois arquivos de redo log. *Arquivos de Controle (Control Files) - Os arquivos de controle contém as informações necessárias para manter e verificar a integridade do banco de dados. Por exemplo, o arquivo de controle é utilizado para identificar os arquivos de dados e os arquivos de redo log. Um banco de dados Oracle deve possuir no mínimo um arquivo de controle. *Outros Arquivos Importantes - O servidor Oracle também faz uso de outros arquivos que não fazem parte do banco de dados: + Arquivo de Parâmetros (Parameter File) -define as características da instância Oracle. Por exemplo, ele contém parâmetros que definem o tamanho das estruturas de memória da SGA + Arquivo de Senhas (Password File) -faz a validação de quais usuários tem permissão de fazer start up e shutdown na instância Oracle + Arquivos de Redo Log Arquivados (Archived Redo Log Files) -são cópias off-line dos arquivos de redo log, que podem ser necessários em um processo de recuperação de falhas de mídia Instância Oracle (Oracle Instance)- Uma Instância Oracle consiste na estrutura de memória chamada de SGA (System Global Area) e nos processos em segundo plano (background processes) utilizados para gerenciar o banco de dados Uma Instância Oracle somente pode abrir e utilizar um banco de dados de cada vez * Área Global do Sistema (System Global Area) - Área de memória utilizada para armazenar as informações do banco de dados que são compartilhadas pelos processos - Contém dados e informações de controle e é alocada na memória do computador onde o servidor Oracle esta operando - Dinâmica e definida pelo parâmetro SGA_MAX_SIZE - Definida em porções (granule) - Consiste de diversas estruturas de memória + Shared Pool -utilizada para armazenar os comandos SQL executados recentemente, e as informações do dicionário de dados. Estes comandos SQL podem ser solicitados por processos do usuário ou no caso de stored procedures, lidos do dicionário de dados. + Database Buffer Cache -utilizada para armazenar os dados recentemente utilizados. Os dados são lidos e gravados nos arquivos de dados + Redo Log Buffer -utilizado para armazenar as alterações feitas no banco de dados pelos processos e servidores pelos processos em segundo plano + Java Pool -utilizado para armazenar código Java + Large Pool -utilizado para armazenar grandes estruturas de memória que não estão relacionadas diretamente ao processamento de instruções SQL, como por exemplo blocos de dados copiados durante operações de backup e recovery + Streams Pool -utilizado para manter estruturas de dados e controle do recurso Oracle Streams * Processos em Segundo Plano - Os processos em segundo plano (background processes) de uma instância executam funções comuns que são necessárias para atender as solicitações de serviço de usuários simultâneos, sem comprometer a integridade e o desempenho do sistema. - Eles consolidam funções que, de outra forma, seriam tratadas por diversos programas Oracle executados para cada usuário. - Ele executam tarefas de I/O e monitoram outros processos Oracle para oferecer maior paralelismo, o que aumenta o desempenho e a confiabilidade. - Dependendo da configuração, uma instância Oracle pode incluir vários processos de segundo plano, no entanto cada instância inclui cinco processos de segundo plano fundamentais. São Eles: + O Database Writer (DBW0) é responsável por gravar dados alterados do buffer cache do banco de dados nos arquivos de dados. + O Log Writer (LGWR) grava as alterações registradas no buffer de redo log nos arquivos de redo log. + O Monitor de Sistema (SMON, System Monitor) verifica a consistência no banco de dados e, se necessário, inicia a recuperação do banco de dados quando ele é aberto. + O Monitor de Processo (PMON, Process Monitor) disponibiliza recursos se um dos processos Oracle falhar. + O Checkpoint Process (CKPT) é responsável pela atualização das informações de status do banco de dados nos arquivos de controle e nos arquivos de dados, sempre que as alterações efetuadas no cache de buffer ficam registradas no banco de dados de forma permanente. * Processos de segundo plano opcionais: ARCn - Gerencia a gravação dos Archive-logs CJQ0 - Gerencia e executa a fila de Jobs do scheduler RECO - Iniciado quando a instância entra em processo de recover Dnnn - Processos auxiliares de gravação paralela com DBWR LCKn - Gerenciamento de locks para instâncias em RAC Pnnn - Execução de queries em paralelo QMNn - Gerenciador do sistema de mensageria do Oracle Shutting Down and Startup da Instância Oracle Agora que já instamos o software e conhecemos como é seu funcionamento necessitamos aprender como iniciar e desligar a instância. No ambiente Windows Para desativarmos a instância basta pararmos os serviços Oracle criados no ambiente. Cada serviço do Oracle tem uma funcionalidade especifica: Descrição dos serviços instalados: Oracle FATEB VSS Writer Service - Criar um cache de gravação virtual de dados OracleDBConsoleFATEB - Console do OEM para a instância FATEB OracleJobSchedulerFATEB - Execução de Jobs schedulados na instância FATEB OracleMTSRecoveryService - Controle de conexão e recuperação do MTS MS OracleOraDb11g_home1ClrAgent - Agente de limpeza de arquivos de log OracleOraDb11g_home1CMAdmin - Administrador do sistema de Concentração de conexões OracleOraDb11g-_home1CMan - Concentrador e multiplexer de conexões OracleOraDb11g _home1TNSListener - Listener para acesso de clientes de rede OracleServiceFATEB - Instância Oracle para o banco FATEB ** Para funcionamento da instância basta apenas os 2 últimos serviços estarem ativos ** Shutdown/startup manual ou ambiente Unix Aprendemos no item anterior como fazer um start/stop da instância Oracle no ambiente Windows utilizando o gerenciamento de serviços do próprio Windows. Existem situações onde devemos efetuar o startup/stop do banco de forma manual, ou seja fazê-lo passo a passo. Tanto no ambiente Unix como no Windows utilizamos a seqüência abaixo: 1.) Abrimos uma tela de terminal / console 2.) Indicamos ao Oracle qual a instancia que desejamos trabalhar configurando a variável de ambiente ORACLE_SID C:\> SET ORACLE_SID=fateb Ou $ export ORACLE_SID=fateb 3.) Chamamos a ferramenta SQL-PLUS sem efetuarmos logon Sqlplus /nolog 4.) Agora conectamos no banco de dados utilizando uma conta com poder administrativo de SYSDBA. SQL> connect system/fateb as sysdba 5.) Uma vez conectados efetuamos o comando para tirarmos efetivamente a base de dados SQL> shutdown immediate SQL> exit 6.) No passo 5 tiramos a instância do ar mas não o listener. Para tirarmos o listener do ar efetuamos o comando abaixo: C:\> lsnrctl stop Para efetuarmos o processo inverso, ou seja, colocarmos instância no ar: a.) Colocando o listener no ar C:\> lsnrctl start Ou $ lsnrctl start b.) Colocar a instância no ar C:\> set ORACLE_SID=fateb Ou export ORACLE_SID=fateb sqlplus /nolog SQL> connect system/fateb as sysdba SQL> startup SQL> exit Parando e reiniciando o listener Subindo novamente a Instância 4.) Configurando a Camada de Rede Entendendo a Configuração de Rede O conceito para rede no banco de dados Oracle é bem simples, ele trabalha sempre no modelo 2-Tier, ou seja client-server. Mesmo que tenhamos sistemas desenvolvidos em n-tiers, para o banco o acesso sempre será considerado como vindo de um cliente, sendo que este cliente pode ser uma pessoa, um sistema, um servidor de aplicações, etc. Basicamente temos a seguinte configuração: No servidor: Como o nome diz, ele tem a função de servir os clientes com informações. Para isto o mesmo utiliza um processo chamado listener (escutador), o mesmo fica escutando as solicitações na rede para estabelecer conexões entre o servidor e o cliente que esta solicitando informações. No cliente: O cliente esta buscando o acesso as informações disponíveis no servidor. Para isto ele utiliza o protocolo de comunicação da Oracle chamado de TNS (Transparent Network Service), através deste protocolo ele conversa com o listener do Oracle buscando acesso para estabelecer uma comunicação com o servidor. Quando a comunicação é estabelecida: O Servidor Oracle dependendo da configuração de comunicação com o cliente (shared/dedicated) cria uma área de memória exclusiva e um processo para gerenciar a conexão estabelecida entre o servidor e o cliente,liberando o listener para escutar novas solicitações. Quando a comunicação é estabelecida o cliente pode gerar e obter informações do servidor. Modos de criação de Processos cliente/Servidor Como citamos o servidor Oracle cria processos exclusivos para cada conexão efetuada ao servidor. Para isto ele trabalha com dois tipos de processos: DEDICATED Cada conexão ao servidor recebe um processo dedicado, ou seja, ele terá um programa próprio de comunicação, uma porta única TCP, uma região de memória exclusiva. Utilizamos este tipo de processo quando temos poucas conexões simultâneas ao banco de dados, ou conexões gerenciadas por um pool de algum application Server. Este tipo de processo utiliza uma memória que chamamos PGA (Process Global Area) SHARED Para evitar problemas com consumo excessivo de memória, e poder aumentar significativamente o número de usuários simultâneos que acessam uma base Oracle, a Oracle criou o conceito de conexões shared. As conexões shared, possuem processos próprios, portas de comunicação TCP, próprias, porém a área de memória utilizada é compartilhada e faz parte da região de memória da SGA (System Global Area). Tipos de clientes e programas de acesso: Como citamos a comunicação entre o cliente e o servidor Oracle é feita através de um protocolo chamado TNS. Este protocolo pode ser encontrado em: Software e programas clientes da Oracle Acesso Nativo da Oracle para compilação com sistemas C, C++, VB, Delphi, etc. Camada de comunicação de banco de dados do Java / .Net Tipos de protocolos de rede aceitados O servidor Oracle além de trabalhar com a camada básica de comunicação através do protocolo TCP, também pode aceitar os protocolos abaixo: TCP - Protocolo padrão de comunicação TCPS - TCP com dados encriptados NMP - Named Pipes Ferramentas para a Configuração de Rede Para efetuarmos as configurações de rede, temos de efetuar configurações tanto em nível de servidor como nos clientes que irão acessar nosso servidor. Para configurarmos tanto o servidor como o cliente a Oracle utiliza a ferramenta chamada NETCA (Assistente de Configuração de Rede). A ferramenta NETCA nos permite efetuar 4 tipos de configurações: Configuração de Listener Configuração de Métodos de Nomeação Configuração do Nome de Serviço de Rede Local Configuração do Uso de Diretórios - Configuração de Listener (servidor) A configuração do listener é responsável por configurar o sistema de comunicação de rede do servidor, para que o mesmo possa ser acessado por clientes. - Configuração dos métodos de Nomeação (cliente) Os métodos de nomeação informam como será a forma de identificar o servidor pela rede. Ou seja, informa como os clientes convertem um nome para o ip do servidor. - Configuração do Nome de Serviço de Rede Local (cliente) Este item configura as informações das instâncias Oracle criadas em servidores, para que os processos clientes possam ter acesso. Também chamamos a configuração deste item de configuração do TNS ou do DSN de acesso. - Configuração do uso de diretórios Utilizado quando a infra-estrutura de servidores utiliza servidores de diretório LDAP para gerenciar as configurações de servidor de banco de dados. Visualizando e alterando a Configuração do LISTENER 1.) Iniciamos no servidor a aplicação NETCA, via menu do Oracle chamando o atalho 2.) Escolhemos a opção de configuração do Listener 3.) Nesta próxima tela temos a opção adicionar, reconfigurar, deletar e até renomear um listener 4.) Quando fizemos a instalação da instância pela instalação do software automaticamente foi criado o listener padrão chamado LISTENER. 5.) Então podemos visualizá-lo, alterá-lo ou até excluí-lo. Vamos optar por saber como ele esta configurado 6.) Apesar de escolhermos a opção de reconfigurar, vamos apenas ver as configurações. 7.) Como só temos um listener ativado. Só aparecerá 1 na lista. NOTA: Em que situações criaríamos mais de um listener ? Como citamos o listener é o responsável na rede por estabelecer as comunicações entre clientes e servidores Oracle. Em algumas situações podemos ter servidores com diversas placas de rede, uma para saída web e outra para rede interna. Neste caso necessitaríamos de 2 listeners. Outra situação quando necessitamos ter acesso ao Oracle por portas diferentes da padrão. 8.) Quando escolhemos a opção de reconfigurar o Oracle entende que você quer fazer alguma alteração e para isto alerta que o Listener esta ativo e o mesmo a partir deste ponto será desativado, para ser reconfigurado. NOTA: Quando você desativa o listener, nenhuma nova conexão de rede poderá ser efetuada, porém as conexões já estabelecidas são mantidas. 9.) Vamos escolher sim 10.) Vemos que o nosso listener de nome LISTENER, recebe solicitações apenas pela porta TCP. 11.) Outra informação importante é que o mesmo só recebe solicitações pela porta default a 1521 12.) Pronto terminamos de configurá-lo e vamos informar que não queremos efetuar nenhuma nova alteração Bom fizemos a configuração mais simples e trivial utilizando a ferramenta de configuração de redes da Oracle. Porém se quisermos visualizar a configuração e termos poder para configurar o listener de formas mais complexas e personalizadas, teremos de editar o arquivo de configuração manualmente. a.) O arquivo de configuração esta localizado no diretório $ORACLE_HOME/network/admin e chama-se listener.ora Veja o conteúdo abaixo do listener.ora # tnsnames.ora Network Configuration File: c:\oracle\product\11.1.0\db_1\network\admin\tnsnames.ora # Generated by Oracle configuration tools. ORACLR_CONNECTION_DATA = (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521)) ) (CONNECT_DATA = (SID = CLRExtProc) (PRESENTATION = RO) ) ) Nota esta configuração acima do LISTENER é dinâmica, ou seja automaticamente sempre que subirmos a instância, ou criarmos uma nova a mesma automaticamente será publicada no LISTENER. Starting and Shutting Down do LISTENER Já comentamos sobre este assunto no capítulo 3, no tópico SHUTDOWN/STARTUP DE INSTÂNCIAS ORACLE. Para recordarmos podemos parar e reiniciar o serviço, via gerenciador de serviços do Windows, ou via o comando lsnrctl. Por que motivo temos de parar o listener ? - Para manutenções na configuração - Quando queremos bloquear novas conexões via rede Configurando Estações Clientes Este processo é muito parecido com a instalação do servidor. Quando você necessita ter o client do Oracle Instalado ? Quando você necessita que seu usuário acesse diretamente as informações contidas nos bancos de dados, efetuando o que chamamos de querys SQL. Quando você tem programas que não possuem acesso nativo ao Oracle e dependem de drivers de conexão como ODBC, OLE, PRO-C, PRO-COBOL e PRO- Fortran Quando você quer ter ferramentas de pesquisa e administração do servidor instaladas em sua estação cliente. Quando queremos extrair ou incluir e mesclar informações com outros bancos de dados como SQL-Server, Access e até Excel. Em caso de servidores de Aplicação / COM e DCOM Quando você não necessita ter o client do Oracle Instalado ? Quando seu programa de acesso for a Java / .Net e tiver utilizando a API interna da linguagem para acessar o servidor Quando seu acesso ao dadoseja através de um serviço WEB PROCESSO DE INSTALAÇÃO NOS COMPUTADORES CLIENTES No nosso caso hoje os computadores clientes são os computadores dos alunos. Vamos fazer um passo a passo juntos para instalarmos o cliente e acessarmos os dados do nosso servidor. Segue informações de conexão do servidor: Hostname: NCOLCHESQUI Sid: FATEB Port: 1521 Veja o passo a passo abaixo: 1.) Vamos acionar o programa de instalação de clientes que esta na pasta c:\soft\oracle_cliente no seu computador 2.) Esta é a tela inicial do instalador 3.) Clique em próximo e escolha o tipo de instalação que deseja. 4.) Selecionei como minha instalação a console do Administrador 5.) Selecione o local onde será instalado o cliente Tela de pré-requisitos Clique em instalar e aguarde o término da instalação Após o termino da instalação o Oracle automaticamente irá solicitar as informações de servidor, IP, Porta e instância para criar a comunicação entre o cliente e o servidor. (acionamento do NETCA – opcional) 5.) Overview do Oracle Enterprise Manager Introdução do Oracle Enterprise Manager O Oracle Enterprise Manager ou OEM como iremos apresentá-lo daqui para frente em nossos textos desta apostila. O OEM é a principal ferramenta de administração e monitoração feita pela Oracle para gerenciamento dos seus bancos de dados. Até a versão Oracle 10g, existe uma versão em Java standalone, mas esta versão só trata de itens de administração. Os itens de monitoração eram separados em ferramentas distintas. A partir da versão 10g surgiu também uma versão em formato WEB, que contemplava itens como monitoração de ambiente, thresoulds, alarmes e incluía ferramentas de gerenciamento de backup e auditoria. Também na versão 10g surgiu o monitorador centralizado de ambientes chamado Oracle Grid Control, que além de banco de dados monitorava itens como: - Sistema Operacional - Servidores de Aplicação - Servidores de Web - Oracle Applications Services e outros Com a versão 11g novas funcionalidades vem sendo adicionadas, como melhorias no esquema de controle de backups e Jobs. Iremos neste treinamento nos basear na versão 11g da OEM. Acessando o Oracle Enterprise Manager Para acessar o OEM acesse o link https://ncolchesqui:1158/em ou o item DATABASE CONTROL – FATEB pelo servidor. Clique em Continuar no site se você estiver utilizando o IE8. Deverá aparecer a tela abaixo No campo usuário SYSTEM senha FATEB, conectar como normal. IMPORTANTE: Lembro a todos que estamos em um ambiente compartilhado e a conta SYSTEM é a conta máster do ORACLE, portanto máximo de cuidado para não causar “desastres” e prejudicar seu colega. Contamos com sua colaboração. Veja a tela após a conexão: VAMOS NAVEGAR UM POUCO NA FERRAMENTA E CONHECERMOS MELHOR Nos primeiros links no canto superior direito, temos: - Configurar - Efetuar configurações do OEM - Preferências - Configurar preferências de notificação de alertas - Ajuda - Help da ferramenta - Logoff - Sair e encerrar a conexão do OEM No link abaixo chamado Banco de Dados, sempre nos retornará a tela inicial a HOME Nos links de grupo temos os seguintes assuntos: Home - Pagina inicial de abertura com resumo do ambiente Desempenho - Gráficos que mostram como esta a performance Disponibilidade - Configuração de backup e recover Servidor - Administração do banco de dados Oracle Esquema - Administração dos objetos do Banco Oracle Mov. De dados - Processo de transferência de dados entre ambientes Software e suporte - Configuração e Ger. do software OEM e Oracle No decorrer do treinamento iremos conhecer cada uma destas abas e estudar as principais para administração do ambiente. Devido ao nosso tempo escasso, nos iremos ater a temas principais, deixando certas opções e/ou configurações não cobertas neste treinamento. 6.) Gerenciando as Estruturas de Armazenamento Estruturas de Armazenamento do Banco de Dados Revisão: No capítulo 2 no passo 12 do processo de instalação do Oracle conhecemos e falamos brevemente do que era uma tablespace e quais as principais utilizadas pelo Oracle. No capítulo 3 – Overview de uma instância Oracle nos aprofundamos de como fisicamente o Oracle trabalha e utiliza seus arquivos. Neste capitulo revisaremos estes itens verificando como visualizá-los e administrá-los pela ferramenta Oracle Enterprise Manager. Podemos separar a estrutura de armazenamento do Oracle de duas formas: - Armazenamento Físico - Armazenamento lógico Armazenamento Físico São todos os arquivos utilizados pela instância Oracle e que ficam fisicamente armazenados em disco. Em algumas instalações de ambiente Oracle como a RAC (Real Application Cluster) poderemos visualizar não mais arquivos mais sim disco físicos destinados diretamente a instância de dados, neste caso não há formatação de SO no disco, pois o mesmo será o que chamamos de raw-device (disco cru). Vamos revisar o capitulo 3 e verificar se ficou alguma dúvida. Armazenamento Lógico - Tablespaces Quando falamos em armazenamento lógico em Oracle estamos nos referindo a TABLESPACES, ou seja tudo que utilizamos, tabelas que criamos, dados que armazenamos ficarão contidos em alguma tablespace. No capitulo 2 falamos sobre as principais tablespaces do Oracle, vamos revisar agora. Acesso o menu servidor Acesse o link tablespaces e veja como estão as tablespaces padrão Como pudemos observar nossas tablespaces básicas foram criadas no momento da instalação da instância FATEB. As instâncias básicas tem cada uma sua funcionalidade: SYSAUX - contém objetos do Oracle para opcionais que decidimos instalar SYSTEM - Contém os objetos básicos da instância Oracle (catalogo) TEMP - Objetos temporários (joins, sorts, rebuilds, etc.) UNDOTBS1 - Tablespace do “desfazer erros” – rollback USERS - Tablespace de armazenamento padrão para usuários Executando Tarefas Comuns de Armazenamento do Banco de Dados Uma das funções do DBA é gerenciar da melhor forma possível a administração do espaço existente para o armazenamento das informações que ficarão residentes no banco de dados. Não existe uma regra especifica de como o DBA deve administrar o banco de dados, o que existe são boas práticas e sugestões fornecidas pela Oracle para facilitar esta atividade. Para que o DBA possa definir qual será a estrutura física/lógica de um banco de dados é necessário estar em um projeto em que foi citado ou mencionado qual seria a utilidade do banco de dados. (ou pelo menos ter idéia de um) Dentro desta regra podemos citar as seguintes atuações: a.) Definir a estrutura física do banco de dados A definição física basicamente serve para definir onde estarão localizados fisicamente os arquivos do banco de dados. As boas praticas dizem por questões de performance dizem: 1ª.) Regra - Separe em discos/controladoras diferentes os seguintes tipos: Dados, Índices, Temporários, Undo, Redo, Software Ou seja teremos agora 6 separações 2ª.) Regra - Separe em discos/controladoras diferentes - Separe suas tablespaces de dados e índices por sistemas / necessidades de negócio e coloque-as em discos diferentes. 3.) Regra - Separe em discos/controladoras diferentes - Objetos dentro do sistema com alta utilização e que sejam concorrentes entre si. Como disse antes as regras de boa pratica não são obrigatórias, são dicas de comopodemos otimizar a performance de nosso ambiente. O fato é que se pegássemos as 3 regras juntos com um banco que contenha 3 sistemas de negócio administrado poderíamos ter no mínimo 12 discos/controladoras disponíveis. Normalmente isto nunca existe. Mesmo em um ambiente de uma grande empresa. Cabe então ao DBA na fase inicial do projeto utilizar o bom senso, tentando ao máximo balancear as cargas de I/O entre os discos/controladoras disponíveis. A atividade do DBA é monitorar a utilização de espaço e concorrência de I/O, mudando parâmetros e localização de arquivos para que o banco administrado sempre tenha a melhor performance e a melhor utilização do espaço em disco. b.) Definir a estrutura lógica do banco de dados Definir a estrutura lógica nada mais é do que definirmos quais serão as tablespaces que utilizaremos em nosso banco de dados. Toda tablespace terá sempre um datafile ou mais a ela atrelado e este é exclusivo desta mesma tablespace. Para definirmos a tablespace utilizaremos as seguintes informações: - Nome da Tablespace Tamanho da tablespace Blocagem – tamanho do bloco de dados Localização dos datafiles. Para fixar nosso exemplo criaremos as seguintes tablespaces - TS_FATEB_ADMIN_TB - Contém tabelas da administração da faculdade Tam. 50Mb - TS_FATEB_ADMIN_IX - Índice das tabelas de administração Tam 5 Mb - TS_FATEB_DOCENCIA_TB - Tabelas referentes aos cursos, notas, alunos, profes. Tam.: 100 Mb - TS_FATEB_DOCENCIA_IX - Índices Tam. 5 Mb. - TS_TREINA_01 - Tablespace para o aluno 01 do treinamento Clique no botão criar para criar novas tablespaces Nesta tela é perguntado informações sobre o tipo de tablespace que se esta desejando criar. No nosso caso explicaremos cada item mas manteremos o que esta definido por padrão. Comando gerado quando efetuamos a criação de uma tablespace. - Gerenciar e acompanhar o crescimento dos dados Uma das principais atividades do DBA é manter o ambiente ativo e seguro. Para tanto é importante que haja uma monitoração sobre o ambiente e nosso caso o banco de dados. Um dos fatores que costumam a ter problemas e o gerenciamento do espaço utilizado. O DBA pode com acompanhamento e informações recebidas planejar como será o crescimento de sua base de dados administrada, planejando com antecedência como resolverá os problemas de espaço em disco. - Ajustando a base de dados - Solicitando aquisição de mais discos Com a ferramenta Enterprise Manager podemos monitorar o crescimento de nossas tablespaces e também gerar alertas e ações para níveis que entendamos como critico. Poderíamos configurar no Enterprise Manager para que nos envie email quando um determinado threshould fosse atingido. Veja abaixo as telas de monitoração de tablespace e de configuração de alertas. Gerenciando as Estruturas de Undo do Banco de Dados Efetuando Mudanças nas Estruturas de Armazenamento do Banco de Dados 7.) Administrando Usuários e Privilégios Overview de Usuários e Privilégios USUARIOS Como o acesso a dados criados no banco de dados Oracle é controlado e tem de ser seguro para garantir integridade da informação, faz necessário que o SGBD garanta que só os usuários autorizados tenham o acesso necessário para utilizar a informação. Para conseguir isto o banco faz o uso do recurso de controle de usuários e seus privilégios. Tendo diversas formas de manter os usuários, a forma de autenticação dos usuários e a restrição e/ou liberação do acesso. Um usuário no Oracle pode ser um usuário comum ou o que chamamos de Owner, o owner é proprietário de objetos dentro do banco de dados e pode compartilhar seus objetos com outros usuários. O usuário do banco de dados pode ser ou não um usuário existente no sistema operacional /domínio, para isto chamamos este usuário de usuário local ou usuário de rede. PRIVILÉGIOS Os privilégios são os tipos de acessos que concedemos aos usuários para acessarem determinado objeto dentro do banco de dados. Com os privilégios podemos garantir que o usuário só tenha o acesso necessário para que exerça suas atividades. Administrando Roles 1º. Entendendo o conceito de roles Roles (tradução papeis ou atribuições), é um recurso do banco de dados Oracle que permite agrupar diversos privilégios em um único grupo. Este agrupamento facilita em muito a administração de segurança de banco de dados pois permite ao DBA ou gestor de segurança criar perfis de acesso de acordo com regras e necessidades do negócio ou empresa. Se não tivéssemos as roles teríamos que conceder os privilégios 1 a 1 para cada usuário que criássemos no banco de dados. Veja o problema abaixo que seria executado sem a role: Seu banco possui 100 usuários e cada um possui cerca de 100 privilégios, ou seja foi feito então 10000 grants. Se utilizarmos o conceito de roles os 100 privilégios podem virar 1, e cada usuário então terá acesso a apenas uma role. Com isto reduzimos para 100 grants de usuário. Uma das grandes vantagens da role é que qualquer alteração nos direitos e privilégios concedidos ao papel, automaticamente afetará todos os usuários a este associado. 2º. Criando e administrando roles Para acessar a tela acima de criação de roles, abrimos o Oracle Enterprise Manager, nos conectamos, selecionamos a opção servidor e depois a opção Atribuições. Esta tela permite gerenciar as roles que possuímos e criar novas. A administração permitira a você adicionar ou retirar privilégios de uma role. As telas de edição e criação de objetos no Oracle Enterprise Manager seguem um formato padrão, portanto entendendo o funcionamento de uma todas as outras serão parecidas. Segue abaixo a tela para a criação de uma role Para criarmos uma role necessitamos basicamente informar o nome da nova role, neste caso estamos criando uma role chamada RL_FATEB. As outras opções permitem neste momento já adicionarmos os privilégios que nossa role terá. Como exemplo iremos criar a role RL_FATEB com direito de conexão e apenas de leitura em todos os objetos do banco de dados. Para isto concedermos : A role CONNECT e SELECT_CATALOG_ROLE O privilegio de sistema SELECTY ANY TABLE Com os passos acima criamos uma role que permite quem a possuí-la ter acesso ao banco de dados, com acesso total de leitura e inclusive no catalogo do banco de dados. 3º. Associar a role criada ao usuário Uma role criada que não esta associada a ninguém ou a nenhuma outra role, não tem função nenhuma. Precisamos associá-la neste exemplo ao nosso usuário. Para isto iremos entrar na tela de administração de usuários, escolher um usuário e conceder a atribuição da role. Veja os passos abaixo: Escolhemos a opção Servidor e dentro de servidor a opção de usuário. Escolhi o usuário EMERSON_COLCHESQUI e vou conceder o direito a role que criamos. Escolha a opção Editar para editar o usuário e alterar suas informações Administrando Profiles Os profiles nos permite criar regras de segurança e utilização para os usuário, as regras que podemos trabalhar com profiles é: - Restrições de controle de senha (expiração, bloqueios) - Limitação de recursos (CPU, Mem e I/O) - Limitação de sessões concorrentes - Tempo de conexão/ Inatividade As restrições de recursos que criamos em perfis, para funcionarem é necessário que o parâmetro resource_limit esteja setado como true para o banco de dados. Caso contrario o banco não controlará as restrições. Vamos criar um perfil chamado P_FATEB, que restringira o número de conexões simultâneas em 2 e demais itens ficarão como default (unlimited)l. Agora assim como fizemos com a role, devemos escolher os usuários que farão parte deste perfil de usuário. Vamos deixar isto para falarmos no próximo item. Administrando Usuários A administração dos usuários constitui nas atividades de: - Criação de novos usuários - Administração de acessos de usuários existentes - Bloqueio/desbloqueio de contas - Reset de senhas Entre outras atividades na administração de usuários. No item de Administração de roles adiantamos um pouco o item de alteração e administração de usuários. Vamos criar dois usuários para cada aluno neste treinamento: - ALUNO_XXX - Usuário com papel de consulta e perfil restrito - ADM_ALUNO_XXX - Usuário DBA de banco de dados. Senha será FATEB. Veja o exemplo abaixo e tente fazer você mesmo: Deixe apenas a role RL_FATEB Pronto criamos o usuários. Como pode ver não demos o acesso diretamente ao usuário e sim através da role RL_FATEB e restringimos o nosso novo usuário através do perfil P_FATEB. As outras opções existentes na administração de usuários são: - GERAL - Defini os dados básicos de um usuário - Altera senha de usuário (reset) - Altera e gerencia as tablespaces default do usuário - ATRIBUIÇÕES - Define as roles que o usuário tem acesso - Privilégios do Sistema - Assim como o nome diz você concede direitos específicos do Oracle diretamente ao usuário. - Privilégios de Objetos - Nesta aba podemos conceder diretamente ao usuário acessos a objetos (tabelas, views, programas, etc.) diretamente ao usuário. - COTAS As tablespaces que definimos na criação de usuário como default tablespace, gera apenas um apontamento de onde serão criados os objetos do usuário caso o mesmo não passe o nome da tablespace. Isto não quer dizer que o usuário tem acesso de gravação na tablespace default. Para que isto seja feito é necessário que o mesmo tenha cotas de espaço definidas. Podemos dar cotas ao usuário também em outras tablespaces além da tablespace default. Um usuário não poderá gravar mais do que sua cota de espaço permite. (limitado ao tamanho da tablespace) - Grupo de consumidores Se for configurado o grupo de consumidores no banco de dados, restrições permitem que a utilização de CPU sejam restritas. A configuração de grupo de consumidores permite definir priorização de utilização do uso da CPU. - Usuários de Proxy Mascaramento de usuários e utilização de usuários como se fosse outro. Veja agora criamos os nossos usuários. 8.) Gerenciando Objetos Overview dos Objetos de Banco de Dados Aprendemos até o momento muito sobre a estrutura física do banco de dados Oracle, agora chegou a hora de explorarmos o funcionamento do gerenciamento lógico do banco de dados Oracle. Aprendemos que fisicamente o Oracle aparece para o sistema operacional como um conjunto de arquivos e processos que ficam executando em memória. Quando entramos no conceito lógico falamos sobre as tablespaces e que elas seriam utilizadas para armazenar todos os objetos que criássemos dentro do nosso banco de dados. O Banco de Dados Oracle possui diversos tipos de objetos vamos conhecer os principais agora: TABELAS Objeto dentro do banco de dados que é utilizado para armazenar as informações (dados). Este objeto estará sempre localizado em uma tablespace. INDICES São objetos que servem para agilizar e facilitar a pesquisa de um dado em uma determinada tabela. VIEWS Como o nome cita são visões, que servem para mascarar, esconder, juntar, etc., informações contidas dentro das tabelas. PROCEDURES São blocos de comandos/programa desenvolvidos na linguagem PL/SQL. FUNCIONS Também são blocos de comandos, porém permitem retornar um valor como resultado de sua execução. E podem ser utilizadas em querys. PACKAGES Pacotes, são bibliotecas de procedures e functions agrupadas em um único modulo chamado package. A vantagem da package é a possibilidade de ocultação de programas com utilização de public/private. TRIGGERS Também são blocos de comandos, porém os mesmos não podem ser disparados pelo usuário. O mesmo só pode ser disparado num evento programado. SEQUENCES Funciona basicamente como um seqüenciador, ou seja seria como uma tabela de uma única linha e coluna, que contém apenas um valor, uma seqüência numérica, que cada vez acessada retorna um novo valor. Em sistemas que utilizem o conceito de id único gerado automaticamente é extremamente recomendado a utilização de sequences, para evitar problemas como Dead Locks. Conceito de OWNERS Antes de iniciarmos a explicação de cada um dos itens acima é importante sabermos que todos os objetos criados em um banco de dados sempre pertencerão a um dono (que chamamos de OWNER). Tendo em mãos a informação acima devemos decidir como o nosso banco de dados ira armazenar as informações. Um exemplo para entendermos melhor: Vamos supor que estamos desenvolvendo um sistema para a faculdade e por isto criamos o nosso banco com o nome de FATEB. O banco FATEB conterá 3 sistemas: - ADMINISTRATIVO Responsável pela área de administração da faculdade - EDUCACIONAL Responsável pelo controle dos itens relacionados a atividades educacionais da faculdade. (Provas, Alunos, Notas, Matérias,etc.) - FINANCEIRO Responsável pelas atividades do departamento financeiro Como faremos então para preparamos o nosso ambiente: 1.) Criar as tablespaces que armazenarão as informações dos sistemas TBSP_ADMIN_TB - 30 Mb TBSP_ADMIN_IX - 2 Mb TBSP_EDUCA_TB - 50 Mb TBSP_EDUCA_IX - 5 Mb TBSP_FINANC_TB - 30 MB TBSP_FINANC_IX - 3 MB Para criarmos as tablespaces vamos revisar as aulas anteriores. 2.) Criar os OWNERS para cada sistema OWN_ADMIN OWN_EDUCA OWN_FINANC As contas OWN serão associadas as tablespaces que criamos tendo como talbespace default as tablespaces com final TB. As constas OWN são responsáveis por conter os objetos necessários para o funcionamento do sistema especifico. Esta conta em ambiente de produção deve ser de responsabilidade do DBA. (Sugestão de segurança). Os sistemas específicos deverão utilizar o usuário e senha cadastrados no banco de dados para acesso aos respectivos sistemas. Ou trabalhar com sistema de conta única. (Isto dependerá de como o sistema é criado). Gerenciando Tabelas Como citamos anteriormente tabelas são objetos utilizados pelo banco de dados para armazenar informações. Toda tabela sempre pertencerá a um único owner e estará contida dentro de uma única tablespace. Somente o Owner ou o DBA do banco de dados poderá conceder direitos sobre uma determinada tabela a um usuário ou role. Os dados armazenados em uma tabela utilizam o formato bidimensional, ou seja, são armazenados em linhas X colunas. As colunas contém os campos e tipos de informações armazenadas. As linhas conterão os registros. Exemplo: Tabela OW_EDUCA.ALUNO ID NOME CURSO 1 João Sistemas de Informação2 Maria Sistemas da Informação Como citamos as tabelas são armazenadas em uma tablespace no banco de dados Oracle e portanto consomem espaço em disco. O espaço mínimo ocupado por uma tabela é 1 bloco de dados da tablespace O espaço máximo é o disponível livre na tablespace. Quando criamos uma tabela definimos sua volumetria, ou seja seu tamanho inicial, e metas de crescimento a cada novo extent (extensão). Uma quantidade grande de extents, geram o problema que chamamos de fragmentação de dados e para corrigir o problema é necessário um processo que chamamos de reorg. O processo de reorg irá criar a nova tabela com uma fragmentação menor acertando para isto seu tamanho de volumetria e blocagem. Em Oracle podemos ter tabelas dos seguintes tipos: - Tabelas normais - Tabelas particionadas - Tabelas subparticionadas. - Tabelas com organização por índice - Tabelas externas. Vamos conhecer a tela de gerenciamento de tabelas do Oracle Enterprise Manager. 1.) Acessamos o link Banco de Dados ou Instância Fateb, para retornarmos a tela principal 2.) Clicamos no link Esquema para termos acesso aos gerenciadores de objetos 3.) Agora clicamos no link tabelas 4.) Por padrão ele traz a tela com o usuário que fizemos login. Como ainda não criamos nenhuma tabela para os nossos novos owners, vamos Vamos criar uma tabela em nossa conta de conexão e depois criaremos nos owners específicos. Clique no botão criar Definiremos que será uma tabela padrão Criaremos uma tabela com um nome de teste e o owner será o nosso usuário de login Na tela de criação de tabelas temos as seguintes opções: Geral - Tela de Definição básica da Tabela Restrições - Tela de cadastramento de restrições/regras Armazenamento - Tela onde definimos a volumetria da tabela Opções - Opcionais de Tabelas Partições - Define formas de particionamento de tabelas No nosso exemplo criamos apenas uma tabela simples para vê-la na listagem de tabelas. Com a tabela criada podemos testar editar a tabela, criando novos campos, restrições, adicionando partições, Etc. Vamos ver como seria a tela de exclusão de tabelas Primeiro selecione qual a tabela deseja excluir e clique no botão deletar com opções Esta tela permite que você escolha se quer: - deletar o conteúdo da tabela (delete) - Excluir a tabela (drop) - zerar o conteúdo da tabela (truncate) Vamos escolher o drop excluindo definitivamente a tabela. Se observarmos agora não temos mais nenhuma tabela novamente em nossa lista. Recuperando objetos Apagados A Oracle a partir da versão 10g criou o conceito de lixeira que permite recuperar rapidamente objetos apagados. OBS: Este recurso limita os objetos no tempo e tamanho pela área que definimos como flash_back_area. Digamos que em nosso caso excluímos erroneamente a tabela e desejamos recuperá- la. Na tela de listagem de tabelas clique no botão lixeira. Nesta tela visualizamos os objetos que apagamos e podemos recuperá-los. Selecione as tabelas que deseja e clique no botão Eliminação de Flashback Será questionado se você deseja alterar o nome da tabela, clique agora em próximo e depois em submeter e depois ok. Veja a tela com as tabelas recuperada Vamos Criar agora uma nova tabela e explanar um pouco mais as opções existentes: Criaremos a tabela aluno em no owner OWN_EDUCA Descrição da tabela: Owner: OWN_EDUCA Tabela: ALUNO Tablespace: TBSP_EDUCA_TB Comment: Tabela que contém o cadastro dos alunos Descrição das colunas: ID_ALUNO Number(3) PK - Identificador do aluno NM_ALUNO varchar2(30) not null - Nome do Aluno NR_Telefone char(8) not null - Número do Telefone EMAIL varchar2(50) not null - Descrição do email DT_Matricula DATE not null - Data de inicio na faculdate Observação varchar2(100) - Observação sobre o aluno Agora crie tabelas que deverão se amarrar em nossa tabela de aluno Ex: Notas_Faltas - Tabela que conterá o controle de notas e faltas Ano_Materias - Ano Letivo e Materias lecionadas Cursos - Cadastro dos cursos Professores - Cadastro dos Professores Materias - Materias Lecionadas Professor_Materia - Professor X Materia Lecionada. ETC Gerenciando Índices Como citamos anteriormente a função do índice é melhorar e agilizar a pesquisa ao dado em uma determinada tabela. Não existe acesso de usuário a índice diretamente, quem faz a utilização do mesmo é o otimizador de acessos do Oracle. Ou seja não são possíveis consultas/queries em índices. No exemplo anterior criamos uma tabela que possuía um campo definido como chave primária (PK), quando o banco efetua esta restrição ele automaticamente gera um índice nas colunas da chave primária. Existem dois tipos de índices em Oracle: - Índices Normais - conhecidos com b-tree índex - Índices bitmaps - utilizados em pesquisas de baixa granularidade Para ambos os índices acima podemos ter: - Índices Únicos - Não permitem repetição do dado - Índices não únicos - Permitem repetição do dado Os índices ainda podem ser: - Índices Simples - Índice referenciando apenas uma coluna - Índices compostos - Índices contendo mais de uma coluna Assim como em um livro ou documento o índice nos auxilia a encontrar o capítulo ou a informação que desejamos de forma rápida. Esta é sua funcionalidade na tabela. Exemplo de conceito: Imagine a seguinte situação você possui uma tabela de clientes com 1 milhão de clientes. Nesta tabelas temos as colunas: ID_CLIENTE - PK NM_CLIENTE CPF Como você pode observar apenas a coluna ID_CLIENTE possui um índice criado, pois a mesma foi definida como chave primária. ** Chave primaria: serve para identificar um registro de forma única em um tabela. 1º Caso: Consulta por ID Se o usuário efetuar uma consulta nesta tabela por ID do cliente, a consultar retornará o dado praticamente instantaneamente. Isto ocorre porque o otimizador de consultas do Oracle verifica antes de efetuar a consulta se existem índices que possam atender a esta consulta. Como neste caso temos um índice pela coluna ID o Oracle busca no índice a informação deseja e localiza diretamente o bloco e a linha dentro do bloco que contém a informação solicitada. 2º Caso: Consulta por CPF Agora digamos que o nosso usuário passe por necessidade a efetuar em seu banco de dados pesquisa na tabela de clientes por CPF. Seu retorno de dados demorará uma eternidade perto do que existia antes fazendo a consulta pelo ID. Ai o nosso querido usuário nos questiona o porque o banco esta lento. Ao capturarmos a consulta que o usuário esta efetuando e fizermos uma analise (explain) sobre a mesma. Será identificado que o problema esta em que cada linha que o usuário esta consultando o banco esta efetuando uma varredura completa na tabela para encontrar o dado do usuário. Isto é o que chamamos de full-scan ou full table scan. Como o Oracle não tem um índice por CPF ele não tem as informações ordenadas, ele não sabe a granularidade da informação solicitada então ele toma a decisão de efetuar a consulta completa na tabela. Para resolvermos o problema do nosso querido usuário/desenvolvedor que mudou sua query sem avisar a equipe de DBAs. Vamos ver como funciona a criação de novos índices: Vamos UM INDICE NÃO É A CHAVE MÁGICA PARA RESOLVER TODOS OS PROBLEMAS DO MUNDO. Como citamos anteriormente o índice resolve problemas de pesquisa de dados em tabelas, porém para tudo
Compartilhar