Você está na página 1de 294

Sistemas Gerenciadores de Banco de Dados

Introduo
Prof. Marcos Alexandruk

EMENTA

Sistemas gerenciadores de banco de dados;

Configuraes do ambiente de trabalho;


Diferenas entre as diversas plataformas;
Criao de tabelas e consultas;
Mecanismos de back-up;
Importao e exportao.

2014 - Prof. Marcos Alexandruk

OBJETIVO

Conhecer os requisitos de instalao e recursos

dos principais SGBDs (Sistemas Gerenciadores de


Banco de Dados).

2014 - Prof. Marcos Alexandruk

BIBLIOGRAFIA BSICA

COSTA, Rogrio Lus de Carvalho. SQL: guia


prtico. 2. ed. Rio de Janeiro: Brasport, 2007.
SILBERSCHATZ, A.; KORTH, H.; SUBARSHAN, S.
Sistema de banco de dados. 3. ed. Rio de Janeiro:
Campus, 2004.
SOARES, Walace. MySQL conceitos e aplicaes.
So Paulo: rica, 2004.

2014 - Prof. Marcos Alexandruk

BIBLIOGRAFIA COMPLEMENTAR
BRYLA, Bob; LONEY, Kevin. Oracle Database 11g
manual do DBA. Porto Alegre: Bookman, 2009.

DATE, C. J. Introduo a sistemas de bancos de


dados. Rio de Janeiro: Elsevier, 2004.
ELMASRI, Ramez; NAVATHE, Shamkant B.
Sistemas de banco de dados. 4th ed. So Paulo:
Pearson Addison Wesley, 2010
PEREIRA Neto, lvaro. PostgreSQL: tcnicas
avanadas: verses Open Source 7.x e 8.x:
solues para desenvolvedores e administradores
de banco de dados. 4. ed. So Paulo: rica, 2007.
RAMALHO, Jos Antonio Alves. Oracle 10g: ideal
para quem deseja o aprendizado do Oracle. So
Paulo: Pioneira Thomson Learning, 2005.
2014 - Prof. Marcos Alexandruk

Sistemas Gerenciadores de Banco de Dados


Aula 1
Prof. Marcos Alexandruk

Caractersticas dos SBGDs

Conceitos gerais

As doze regras de Codd para SGBDRs

2014 - Prof. Marcos Alexandruk

Conceitos gerais

SGBD (Sistema de Gerenciamento de Banco de Dados):


coleo de dados inter-relacionados

+
conjunto de programas para acessar e manipular esses dados

Silberschatz p. 4

2014 - Prof. Marcos Alexandruk

Conceitos gerais

O gerenciamento de dados envolve:


Definir estruturas de armazenamento
Fornecer mecanismos para a manipulao de informaes

2014 - Prof. Marcos Alexandruk

Conceitos gerais

O principal objetivo de um SGBD fornecer um


ambiente que seja tanto conveniente como eficiente
para armazenamento e recuperao de informaes.

2014 - Prof. Marcos Alexandruk

Conceitos gerais

O SGBD precisa garantir a segurana apesar de falhas


de sistema ou tentativas de acesso no autorizado.

2014 - Prof. Marcos Alexandruk

Conceitos gerais

Embora as interfaces de usurio ocultem os detalhes de acesso a


um banco de dados, e a maioria das pessoas nem mesmo tenha
conscincia de estar lidando com um banco de dados, acessar

banco de dados uma parte essencial da vida de quase todo


mundo hoje.

Silberschatz p. 2
2014 - Prof. Marcos Alexandruk

As doze regras de Codd

Doze regras estabelecidas por


Edgard F. Codd, em 1985, por meio
das quais podemos determinar o
quanto um banco de dados
relacional ou no.

2014 - Prof. Marcos Alexandruk

As doze regras de Codd

1. Regra das informaes em tabelas:


As informaes a serem apresentadas no banco de dados devem
ser apresentadas como relaes (tabelas formadas por linhas e
colunas) e o vnculo de dados entre as tabelas deve ser
estabelecido por meio de valores de campos comuns.
Aplica-se tanto aos dados quanto aos metadados (descries dos
objetos do banco de dados).

2014 - Prof. Marcos Alexandruk

As doze regras de Codd

2. Regra de acesso garantido:


Para que o usurio possa acessar as informaes contidas no
banco de dados, o mtodo de referncia deve ser o nome da tabela,
o valor da chave primria e o nome do campo.
A ordem de apresentao dos dados no tem importncia no
contexto.

2014 - Prof. Marcos Alexandruk

As doze regras de Codd

3. Regra de tratamento sistemtico de valores nulos:


O SGBD deve ter capacidade de tratar valores que no so
fornecidos pelos usurios de maneira que permita a distino dos
valores reais.
Exemplo: um campo de armazenamento de dados numricos, pode
conter valores vlidos, o valor zero e valores nulos.

2014 - Prof. Marcos Alexandruk

As doze regras de Codd

4. Regra do catlogo relacional ativo:


Toda a estrutura do banco de dados (tabelas, campos, ndices, etc.)
deve estar disponvel em tabelas (catlogo).

Essas tabelas so manipuladas pelo prprio sistema, quando o


usurio efetua alteraes na estrutura do banco de dados.

2014 - Prof. Marcos Alexandruk

As doze regras de Codd

5. Regra da atualizao de alto nvel:


O usurio deve ter capacidade de manipular as informaes do
banco de dados em grupos de registros, ou seja, ser capaz de
inserir, alterar e excluir vrios registros ao mesmo tempo.

2014 - Prof. Marcos Alexandruk

As doze regras de Codd

6. Regra da sublinguagem de dados abrangente:


Pelo menos uma linguagem deve ser suportada para que o usurio
possa manipular a estrutura do banco de dados (exemplo: criao
e alterao de tabelas), assim como extrair, inserir, atualizar ou
excluir dados, definir restries de acesso e controle de
transaes (COMMIT/ROLLBACK).
Deve ser possvel tambm a manipulao de dados por meio de
programas aplicativos.

2014 - Prof. Marcos Alexandruk

As doze regras de Codd

7. Regra da independncia fsica:


Quando for necessria alguma modificao na forma como os
dados so armazenados fisicamente, nenhuma alterao deve ser
necessria nas aplicaes que fazem uso do banco de dados.
Devem tambm permanecer inalterados os mecanismos de
consulta e manipulao de dados utilizados pelos usurios finais.

2014 - Prof. Marcos Alexandruk

As doze regras de Codd

8. Regra da independncia lgica:


Qualquer alterao efetuada na estrutura do banco de dados, como
incluso e excluso de campos de uma tabela ou alterao no
relacionamento entre tabelas no deve afetar o aplicativo que o usa.
O aplicativo deve manipular vises das tabelas.
Vises so uma espcie de tabela virtual, que agrupam dados de
uma ou mais tabelas fsicas e apresentam ao usurio os dados.

2014 - Prof. Marcos Alexandruk

As doze regras de Codd

9. Regra da atualizao de vises:


Visto que as vises dos dados so teoricamente suscetveis a
atualizaes, ento um aplicativo que faz uso desses dados deve
ser capaz de efetuar alteraes, excluses e incluses neles
As atualizaes devem ser repassadas automaticamente s tabelas
originais.

2014 - Prof. Marcos Alexandruk

As doze regras de Codd

10. Regra da independncia de integridade:


As vrias formas de integridade do banco de dados (integridade de
entidade, referencial, restrio e obrigatoriedade de valores, etc.)
precisam ser estabelecidas dentro do catlogo do sistema ou
dicionrio de dados, e ser totalmente independente da lgica dos
aplicativos.

2014 - Prof. Marcos Alexandruk

As doze regras de Codd

11. Regra da independncia de distribuio:


Sistemas de banco de dados podem estar distribudos em diversas
plataformas, interligados em rede e podem inclusive estar
fisicamente distantes entre si. Essa capacidade de distribuio no
pode afetar a funcionalidade do sistema e dos aplicativos que
fazem uso do banco de dados.

2014 - Prof. Marcos Alexandruk

As doze regras de Codd

12. Regra no subversiva:


O sistema deve ser capaz de impedir que qualquer usurio ou
programador de passar por cima de todos os mecanismos de
segurana, regras de integridade do banco de dados e restries,
utilizando algum recurso ou linguagem de baixo nvel que
eventualmente possam ser oferecidas pelo prprio sistema.

2014 - Prof. Marcos Alexandruk

As doze regras de Codd


1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.

Regra das informaes em tabelas


Regra de acesso garantido
Regra de tratamento sistemtico de valores nulos
Regra do catlogo relacional ativo
Regra da atualizao de alto nvel
Regra da sub linguagem de dados abrangente
Regra da independncia fsica
Regra da independncia lgica
Regra da atualizao de vises
Regra da independncia de integridade
Regra da independncia de distribuio
Regra no subversiva
2014 - Prof. Marcos Alexandruk

Aula 1: Exerccios

1. Defina em suas palavras o que um SGBD.


2. Qual o principal objetivo de um SGBD (Sistema de
Gerenciamento de Banco de Dados)?
3. Quais recursos do SGBD podem ser utilizados para garantir a
segurana dos dados?

4. Liste algumas ocasies em que voc direta ou indiretamente


interagiu com bancos de dados.
5. Escolha trs regras elaboradas por Edgard F. Codd e comente
sobre a sua importncia para os bancos de dados relacionais.

2014 - Prof. Marcos Alexandruk

Aula 1: Use AVA

Comente as ltimas ameaas divulgadas pela imprensa que


envolvam a segurana dos dados de pessoas e empresas. Que
solues ou medidas voc prope para evitar o roubo de
informaes?

2014 - Prof. Marcos Alexandruk

Sistemas Gerenciadores de Banco de Dados


Aula 2
Prof. Marcos Alexandruk

Diferenas entre os principais SBGDs

Classificaes dos SGBDs:

MODELO DE DADOS
NMERO DE USURIOS
LOCALIZAO

2014 - Prof. Marcos Alexandruk

MODELO DE DADOS

BANCOS DE DADOS HIERRQUICOS

Um dos primeiros sistemas de controle de


base de dados;

IMS (Information Management System):


desenvolvido pela IBM e pela Rockwell no
fim da dcada de 1960;

Ambientes de alta plataforma (mainframes):


o IMS era instalado em sistemas do tipo:
OS/V1, OS/V2, MVS, MVS/XA e ESA;

Exemplo: projeto Apolo da NASA.


2014 - Prof. Marcos Alexandruk

MODELO DE DADOS

BANCOS DE DADOS HIERRQUICOS


Utiliza a organizao de endereos fsicos do disco em sua estrutura.
Baseado em dois conceitos fundamentais:

segmentos (equivalentes a registros);

relacionamentos (ligaes) pai-filho.

Um segmento pai pode ter nenhum ou vrios segmentos filhos, um segmento filho
pode ter apenas um segmento pai.
Estrutura em rvore com dados em nveis hierrquicos.

2014 - Prof. Marcos Alexandruk

MODELO DE DADOS

2014 - Prof. Marcos Alexandruk

MODELO DE DADOS

BANCOS DE DADOS HIERRQUICOS


DESVANTAGENS
Em relacionamentos N:N (muitos-para-muitos) a duplicao de registros
necessria para preservar a estrutura de rvore do banco de dados. A duplicao
de registros tem dois inconvenientes principais:

atualizaes podem levar a inconsistncia de dados;

desperdcio de espao.

2014 - Prof. Marcos Alexandruk

MODELO DE DADOS

BANCOS DE DADOS EM REDE


Definidos pelo DBTG (Data Base Task Group) do comit CODASYL (Conference on
Data Systems Language) a partir de 1971.
Permitem que um mesmo registro participe de vrios relacionamentos devido

eliminao da hierarquia.
Os comandos de manipulao de registros devem ser incorporados a uma
linguagem hospedeira (COBOL, a mais comum, Pascal e FORTRAN).
Estruturas fundamentais: registros (records) e conjuntos (sets).
Registros contm dados relacionados e so agrupados em tipos de registros que

armazenam os mesmos tipos de informaes.


2014 - Prof. Marcos Alexandruk

MODELO DE DADOS

2014 - Prof. Marcos Alexandruk

MODELO DE DADOS

BANCOS DE DADOS RELACIONAIS


A maioria dos SGBDs atualmente em uso se enquadra no modelo relacional.
Baseia-se nos princpios matemticos utilizados por Edgard F. Codd em 1968:
teoria dos conjuntos e da lgebra relacional.

Em 1985, Codd props um conjunto de doze regras para que um banco de dados
fosse considerado como relacional.
Organiza os dados em tabelas (relaes) formadas por linhas e colunas.

Tabelas so similares a conjuntos de elementos: relacionam as informaes de um


mesmo assunto de um modo organizado.
Facilita a navegao em grandes quantidades de dados, otimizando o uso do
hardware.

2014 - Prof. Marcos Alexandruk

MODELO DE DADOS

2014 - Prof. Marcos Alexandruk

MODELO DE DADOS

BANCOS DE DADOS ORIENTADOS A OBJETOS


Surgiram em meados de 1980 para armazenamento de dados complexos, no
adequados aos sistemas relacionais: GIS (Geographical Information System) e
CAD/CAM/CAE.
O modelo caracterizado pela definio de objetos com suas propriedades e
operaes (mtodos).
O OMDG (Object Database Management Group) definiu um padro de estrutura para
bancos de dados orientados a objetos.
O grupo props um padro conhecido como ODMG-93, atualmente revisado e
denomidado ODMG 2.0.
Linguagens: ODL (Object Definition Language) e OQL (Object Query Language).

2014 - Prof. Marcos Alexandruk

MODELO DE DADOS

BANCOS DE DADOS ORIENTADOS A OBJETOS


O modelo de dados orientado a objetos baseia-se nos seguintes componentes:
OBJETO: uma abstrao de uma entidade real. Cada objeto representa uma nica
ocorrncia de uma entidade.

ATRIBUTOS: Descrevem as propriedades de um objeto.


MTODOS: Definem o comportamento de um objeto. Equivalem aos procedimentos
da linguagem de programao tradicional.

CLASSE: Conjunto de objetos que compartilham a mesma estrutura (atributos) e


comportamento (mtodos).
HERANA: Capacidade de herdar atributos e mtodos de classes superiores
(dentro de uma hierarquia).

2014 - Prof. Marcos Alexandruk

MODELO DE DADOS

2014 - Prof. Marcos Alexandruk

NMERO DE USURIOS

BANCOS DE DADOS MONOUSURIOS


Permitem que apenas um usurio por vez acesse o banco de dados.
Antigos (1980-1990) e direcionados a uso pessoal: dBASE III, dBASE IV, FoxBase,
FoxPro.

BANCOS DE DADOS MULTIUSURIOS


Suporta o acesso de vrios usurios ao mesmo tempo.
A maioria dos bancos de dados atuais oferece suporte a multiusurios.

2014 - Prof. Marcos Alexandruk

LOCALIZAO

BANCOS DE DADOS CENTRALIZADOS


Localizados em uma nica mquina denominada Servidor de Banco de Dados.
Embora centralizados, podem oferecer suporte a acesso concorrente de vrios
usurios.

BANCOS DE DADOS DISTRIBUDOS


O sistema gerenciador e o banco de dados esto localizados em diferentes
mquinas interligadas em redes (LANS ou WANS).
Independentemente de serem centralizados ou distribudos os SGBDs atualmente
trabalham dentro da arquitetura cliente-servidor.

2014 - Prof. Marcos Alexandruk

HETEROGNEOS

BANCOS DE DADOS HETEROGNEOS


Tendncia que vem crescendo muito atualmente.
Envolve basicamente distribuir na arquitetura de SGBDs vrios

bancos de dados de fornecedores diferentes.

2014 - Prof. Marcos Alexandruk

HETEROGNEOS

RESUMO

2014 - Prof. Marcos Alexandruk

HETEROGNEOS

Quais os tipos de classificaes dos bancos de dados?


Podem ser classificados quanto a(o):
MODELO DE DADOS
NMERO DE USURIOS

LOCALIZAO

2014 - Prof. Marcos Alexandruk

HETEROGNEOS

Como so classificados os bancos de dados quanto aos

MODELOS DE DADOS?
HIERRQUICOS
EM REDE
RELACIONAIS
ORIENTADOS A OBJETOS

2014 - Prof. Marcos Alexandruk

HETEROGNEOS

Como so classificados os bancos de dados quanto ao NMERO

DE USURIOS?
MONOUSURIOS
MULTIUSURIOS

2014 - Prof. Marcos Alexandruk

HETEROGNEOS

Como so classificados os bancos de dados quanto a sua

LOCALIZAO?
CENTRALIZADOS
DISTRIBUDOS

2014 - Prof. Marcos Alexandruk

Aula 2: Use AVA

Atualmente ocorre uma necessidade crescente de gerenciamento


de dados no estruturados, como os encontrados na maioria dos
documentos e pginas da web.
Quais solues so utilizadas para o gerenciamento de dados no
estruturados?

2014 - Prof. Marcos Alexandruk

Sistemas Gerenciadores de Banco de Dados


Aula 3
Prof. Marcos Alexandruk

Especificaes dos principais SGBDs


Principais SGBDs:
dBase
Paradox
DataFlex
FoxBase / FoxPro
Access
InterBase
FireBird
Informix
Sybase
Oracle Database
SQL Server
DB2
MySQL
PostgreSQL
2014 - Prof. Marcos Alexandruk

PRINCIPAIS SGBDs

dBase
Lanado em 1984 pela Ashton-Tate (adquirido, em 1991, pela
Borland)

Apresentava linguagem de programao fcil de aprender, tornava


possvel criar aplicaes inteiras
Exemplo: para listar dados de um banco, o comando era: LIST ALL

campo1, campo2, campoN TO PRINT


Preparado para arquitetura de hardware em baixa plataforma
(Apple II, Apple Macintosh, IBM-PC)

2014 - Prof. Marcos Alexandruk

PRINCIPAIS SGBDs

dBase

2014 - Prof. Marcos Alexandruk

PRINCIPAIS SGBDs

Paradox
Lanado em 1985 pela Ansa Software (adquirida em 1987 pela
Borland)

Apresenta um ambiente integrado de desenvolvimento para


criao de aplicativos
Utiliza o QBE (Query by Example) para consultas
Primeira verso para DOS (at a verso DOS 4.5, quando foi
lanada uma verso para o Windows)

2014 - Prof. Marcos Alexandruk

PRINCIPAIS SGBDs

Paradox

2014 - Prof. Marcos Alexandruk

PRINCIPAIS SGBDs

Dataflex
Produzido pela empresa Data Access Corporation, fundada em 1976
Apresentava verses para mainframes e microcomputadores (com
verses para UNIX, VAX/VMS, Novell Netware, CP/M, DOS, OS/2 e Linux)
Possui um ambiente de desenvolvimento VDF (Visual DataFlex) disponvel
para Windows
Acessa bases SQL Server, Oracle, DB2, etc.
(Visual DataFlex: ambiente grfico de desenvolvimento semelhante ao Visual Basic)

2014 - Prof. Marcos Alexandruk

PRINCIPAIS SGBDs

FoxBase / FoxPro
Lanado em dezembro de 1984 pela Fox Software (mais tarde
adquirida pela Microsoft)

Concorria diretamente com o dBase (inclusive com arquivos-fontes


compatveis)
Escrito para microcomputadores com plataforma DOS e mais tarde

adaptado para Windows


A verso 9 do FoxPro foi a ltima a ser lanada

2014 - Prof. Marcos Alexandruk

PRINCIPAIS SGBDs

Access
Lanado em 1992 pela Microsoft
Um dos primeiros SGBDs a ser lanado para uma plataforma grfica
(Windows)
Ambiente integrado com interface intuitiva para criao e gerenciamento
do banco de dados e o desenvolvimento de aplicaes e relatrios
Includo em algumas verses do pacote MS Office
Grande integrao com a linguagem de programao Visual Basic
Utilizado como banco de dados por pequenas empresas

2014 - Prof. Marcos Alexandruk

PRINCIPAIS SGBDs

InterBase
Lanado em 1984 pela Groton Database Systems (Interbase, a
partir de 1986, a empresa passou a ser controlada, em 1991, pela
Borland)
Comercializado atualmente atravs da Embarcadero Technologies
A verso 6.0 deu origem ao FireBird (open source)

2014 - Prof. Marcos Alexandruk

PRINCIPAIS SGBDs

FireBird
A verso 6.0 do InterBase deu origem ao FireBird (open source)
Verso atual: FireBird 2.5.3, lanada em julho de 2014

2014 - Prof. Marcos Alexandruk

PRINCIPAIS SGBDs

Informix
Projetado por Roger Sippl no final dos anos 1970
A Informix foi fundada em 1980 e tornou-se pblica em 1986

Na dcada de 1990 era o segundo banco mais popular (depois do


Oracle)
Em 2001 a IBM, por sugesto do Wal-Mart (o maior usurio do
Informix), adquiriu a Informix
Em meados de 2005, a IBM lanou a verso 10 do Informix IDS

2014 - Prof. Marcos Alexandruk

PRINCIPAIS SGBDs

Sybase
Fundada por Mark Hoffman e Bob Epstein em 1984, em Berkeley,
na Califrnia

A empresa atua em 120 pases e tem mais de 82.000 clientes.


2010: A SAP adquire a Sybase por US$ 5,8 bilhes

2014 - Prof. Marcos Alexandruk

PRINCIPAIS SGBDs

Oracle Database
1977: Larry Ellison, Bob Miner e Ed Oates fundam a SDL (Software Level
Laboratories)
1978: O nome da empresa mudado para RSI (Rational Software Inc.)
1979: A RSI lana o primeiro produto comercial de banco de dados
relacional utilizando a linguagem SQL
1983: Lanado o Oracle 3, o primeiro SGBD a rodar em mainframes e em
minicomputadores
2013: ltima verso: Oracle 12c (c: cloud)

2014 - Prof. Marcos Alexandruk

PRINCIPAIS SGBDs

SQL Server
Lanado pela Microsoft em 1988
Inicialmente era uma verso especial do Sybase (parceria com a

Microsoft, encerrada em 1994)


SQL Server 2005: grande integrao com a plataforma .NET
Verso atual: SQL Server 2014 (oferece novos recursos em nuvem)

2014 - Prof. Marcos Alexandruk

PRINCIPAIS SGBDs

IBM DB2
Projeto comeou no incio dos anos 70 (Edgard Frank Codd IBM)
A princpio o produto foi chamado System R
Lanado em 1983 com base no SQL/DS (para mainframe)
A partir da dcada de 1990 inclui verses para Windows, Linux e PDAs
2006: Lanamento do DB2 9 Express
DB2 9 foi o primeiro SGBD segundo a IBM a armazenar XML nativo
ltima verso: DB2 10.5 (Linux, Windows, etc.) / DB2 11 (z/OS)
(z/OS um sistema operacional de 64 bits para mainframes, sucessor do OS/390)
2014 - Prof. Marcos Alexandruk

PRINCIPAIS SGBDs

MySQL
Desenvolvido a partir de 1995 por David Axmark, Allan Larsson e
Michael Widenius

2008: Sun adquire a MySQL (US$ 1 bilho)


2009: Oracle compra a Sun (US$ 7,8 bilhes)
Licena: GNU-GPL (General Public License)
Verses para Windows, LINUX, UNIX, FreeBSD e Mac OS X
Muito utilizado em solues para Web

2014 - Prof. Marcos Alexandruk

PRINCIPAIS SGBDs

PostgreSQL
Origem: Projeto Postgre, Universidade Berkeley, Califrnia. Equipe
orientada pelo Prof. Michael Stonebraker

1988: primeira verso estvel


1991: Cdigo adquirido pela Illustra, a qual se fundiu com a
Informix (de Stonebraker), hoje pertencente IBM
Licena: BSD (Berkeley Software Distribution)
Verses para LINUX, UNIX, Mac OS X e Windows

2014 - Prof. Marcos Alexandruk

Aula 3: Use AVA

Analise o seguinte cenrio: Voc foi contratado para cuidar do


banco de dados de uma empresa de mdio porte que est
iniciando as suas atividades. A empresa optou por trabalhar com
software livre, adotando o sistema operacional Linux.
Voc chamado a opinar sobre que sistema de gerenciamento de
banco de dados deve ser adotado. Qual seria a sua opinio e como
voc a justificaria?
2014 - Prof. Marcos Alexandruk

Sistemas Gerenciadores de Banco de Dados


Aula 4
Prof. Marcos Alexandruk

Arquitetura dos principais SGBDs

Oracle Database

Microsoft SQL Server


IBM DB2
MySQL
PostgreSQL

2014 - Prof. Marcos Alexandruk

Oracle Database

2014 - Prof. Marcos Alexandruk

Oracle Database

A arquitetura do Oracle composta de duas partes bsicas:

Instncia (Instance)
Banco de Dados (Database)

2014 - Prof. Marcos Alexandruk

Oracle Database

INSTNCIA
A Instncia composta por:
SGA (System Global Area) - rea Global do Sistema

Background Processes - Processos de Segundo Plano

2014 - Prof. Marcos Alexandruk

Oracle Database

SGA (System Global Area)


rea de memria usada para armazenar informaes
compartilhadas pelos processos do banco de dados
Est alocada na memria virtual do computador.

2014 - Prof. Marcos Alexandruk

Oracle Database

Background Processes
Executam

tarefas

de

E/S

monitoram

outros

processos do servidor
Ajudam a garantir maior paralelismo e integridade dos

dados, aumentando o desempenho e a confiabilidade


do sistema

2014 - Prof. Marcos Alexandruk

Oracle Database

Estruturas fsicas e lgicas


O banco de dados Oracle possui uma estrutura fsica e
uma estrutura lgica.

2014 - Prof. Marcos Alexandruk

Oracle Database

Estrutura fsica
A estrutura fsica consiste em trs tipos de arquivos:
Data files

Control Files
Redo Log Files

2014 - Prof. Marcos Alexandruk

Oracle Database

Estrutura lgica
A estrutura lgica do Oracle inclui:
Tablespaces

Segmentos
Extenses

Blocos de dados

2014 - Prof. Marcos Alexandruk

Oracle Database

Hierarquia de armazenamento lgico e fsico

2014 - Prof. Marcos Alexandruk

Microsoft SQL Server

2014 - Prof. Marcos Alexandruk

Microsoft SQL Server

Os componentes principais do Microsoft SQL Server so:

Database Engine
SSRS (SQL Server Reporting Services)

SSAS (SQL Server Analysis Services)


SSIS (SQL Server Integration Services)

2014 - Prof. Marcos Alexandruk

Microsoft SQL Server

Database Engine
Principal servio do SQL Server
Permite armazenar, recuperar, processar e proteger os
dados
Fornece acesso controlado

processamento

de

transaes para atender aos requisitos dos aplicativos

2014 - Prof. Marcos Alexandruk

Microsoft SQL Server

SSRS (SQL Server Reporting Services)


Fornece ferramentas e servios prontos para criar,
implantar e gerenciar relatrios
Inclui recursos de programao para estender as
funcionalidades e personalizar relatrios

2014 - Prof. Marcos Alexandruk

Microsoft SQL Server

SSAS (SQL Server Analysis Services)


Fornece a soluo de BI (Business Intelligence)
Responsvel por transformar uma quantidade grande
de dados em conjuntos essenciais de informao
Inclui dois componentes:
OLAP (On-Line Analytical Processing)
Data Mining
2014 - Prof. Marcos Alexandruk

Microsoft SQL Server

SSIS (SQL Server Integration Services)


Plataforma

para

integrao

de

dados

em

nvel

corporativo e solues de transformaes de dados


Extrai e transforma dados de diversas fontes, como
arquivos de dados XML, arquivos simples e bases de

dados relacionais e transfere para um ou mais destinos

2014 - Prof. Marcos Alexandruk

Microsoft SQL Server


Defaults Databases
master: armazena toda a configurao do servidor e

informaes das instncias


resource: armazena os objetos do sistema

model: fornece o modelo para todos os bancos de dados que


sero criados
tempdb: armazena dados temporrios
msdb: responsvel pela automao de servios

2014 - Prof. Marcos Alexandruk

http://technet.microsoft.com/en-us/library/bb497064.aspx
2014 - Prof. Marcos Alexandruk

2014 - Prof. Marcos Alexandruk

IBM DB2

2014 - Prof. Marcos Alexandruk

IBM DB2

A arquitetura do sistema da IBM possui componentes que


efetuam os controles de:

Processos
Memria
Armazenamento

2014 - Prof. Marcos Alexandruk

IBM DB2

Componente de Processo
Vrios processos so controlados neste componente,
o principal processo o db2sysc, que abre outros

processos a partir de uma aplicao remota que se


conecta ao servidor pela instruo SQL CONNECT.

2014 - Prof. Marcos Alexandruk

IBM DB2

Componente de Memria
Possui reas de memria em nvel de:
instncia
base de dados

aplicao

2014 - Prof. Marcos Alexandruk

IBM DB2

Armazenamento
Constitudo de trs componentes:
Pginas e Extents: Pgina a unidade mnima de
armazenamento. Extent composto por um conjunto de
pginas.
Buffer Pool: Espao de memria que mantm um cache
de dados e ndices evitando perda de tempo de acesso
em operaes de entrada e sada de dados em disco,
mantendo-os na memria principal.
Tablespace: Mantm a estrutura lgica dos dados que
sero armazenados fisicamente.

2014 - Prof. Marcos Alexandruk

IBM DB2

Defaults Tablespaces
SYSCATSPACE: Contm as tabelas de catlogo. O catlogo
tambm conhecido como dicionrio de dados em outros
SGBDs.
TEMPSPACE1: Usada quando necessrio espao adicional
para a realizao de algumas operaes, como ordenaes
(sorts).
USERSPACE1: Usada para armazenar tabelas de usurios se
no houver a especificao de outra tablespace.

2014 - Prof. Marcos Alexandruk

MySQL

2014 - Prof. Marcos Alexandruk

MySQL

2014 - Prof. Marcos Alexandruk

MySQL

Compatibilidade
O MySQL apresenta verses para os seguinte SOs:
Microsoft Windows

Linux (Fedora, Debian, SuSE, RedHat)


Unix (Solaris, HP-UX, AIX, SCO)

FreeBSD
Mac OS

2014 - Prof. Marcos Alexandruk

MySQL

Padro SQL
SQL-92
SQL-99
SQL 2003 (parcialmente)

2014 - Prof. Marcos Alexandruk

MySQL

ltima verso
MySQL Community Server 5.6.20
A MySQL disponibiliza tambm a seguinte "ferramenta grfica"
(GUI Tool) para administrao do banco de dados:

MySQL Workbench 6.1.7


Dados atualizados em setembro/2014

2014 - Prof. Marcos Alexandruk

MySQL
Caractersticas
PORTABILIDADE: Desenvolvido em C/C++ torna-se portvel entre
diferentes plataformas e compiladores.
MULTITHREADS:

Aumenta

significativamente

velocidade

de

processamento e facilita a integrao com hardware com mais de uma


CPU.
ARMAZENAMENTO: Disponibiliza vrios tipos de tabelas para priorizar

a velocidade ou o volume de dados, entre outras caractersticas.


VELOCIDADE: As tabelas tipo MyISAM utilizam cachs em consultas e
indexao BTREE para tabelas tipo HEAP proporcionando maior
velocidade de acesso.
2014 - Prof. Marcos Alexandruk

MySQL
Multithreads
Thread a forma de um processo dividir a si mesmo em duas ou mais
tarefas que podem ser executadas simultaneamente. O suporte
thread fornecido pelo prprio sistema operacional (SO), no caso da

Kernel-Level Thread (KLT), ou implementada atravs de uma biblioteca


de uma determinada linguagem, no caso de uma User-Level Thread
(ULT).

Sistemas que suportam apenas uma nica tarefa so chamados de


monothread e os que suportam mltiplas tarefas simultneas so
chamados de multithread.

2014 - Prof. Marcos Alexandruk

MySQL
Caractersticas
FULL TEXT SEARCH: Melhora o desempenho em consultas de grandes
quantidades de texto.
STORED PROCEDURES: Blocos de cdigo armazenados no servidor e que
podem ser invocados a partir de outras aplicaes.

TRIGGERS: Blocos de cdigo armazenados no servidor so invocados


automaticamente a partir de certos eventos.
CURSORES: Permitem a navegao em conjuntos de resultados atravs de
laos de repetio possibilitando realizar operaes e transaes parte para
cada linha de uma tabela.
VISES: Consultas pr-programadas partir de determinadas colunas de uma
um mais tabelas.

TRANSAES DISTRIBUDAS: Fornece a possibilidade de gerenciamento de


transaes realizadas com a unio de vrios bancos de dados.
2014 - Prof. Marcos Alexandruk

MySQL
Caractersticas
INTEGRIDADE REFERENCIAL: Relacionamentos entre diferentes tabelas so
gerenciados pelo banco de dados na incluso, alterao ou excluso de dados.
REPLICAO: Torna possvel configurar clones ou rplicas de servidores que
mantm as informaes sincronizadas com um servidor principal aumentando a
disponibilidade.
CLUSTERIZAO: Baseada na integrao e sincronismo de dois ou mais
servidores para dividir a demanda e aumentar a disponibilidade. Este recurso

permite que caso o servidor primrio fique indisponvel, a carga gerada pelas
consultas seja balanceada entre os outros servidores restantes.

2014 - Prof. Marcos Alexandruk

MySQL
Mtodos de armazenamento
MyISAM
Muito rpido

No apresenta restries de tipos de dados


Permite o uso de todos os recursos do MySQL, exceto suporte a transaes
nico mecanismo do MySQL que suporta buscas do tipo FullText Searches
Nvel de bloqueio: tabelas

2014 - Prof. Marcos Alexandruk

MySQL
Mtodos de armazenamento
InnoDB
Recomendado para bancos de dados grandes e complexos

Oferece suporte a transaes ACID (Atomicidade, Consistncia, Isolamento


e Durabilidade)
Armazenamento em disco e memria dos dados e ndices: processamento
mais veloz
Nvel de bloqueio: linhas. Portanto, aumenta a disponibilidade: apenas os
registros envolvidos em uma transao so bloqueados (no a tabela toda
como no MyISAM)

2014 - Prof. Marcos Alexandruk

MySQL
Mtodos de armazenamento
Memory (HEAP)
O armazenamento dos dados realizado na memria RAM
Velocidade de processamento muito rpida: no h busca em disco
Dados so perdidos quando o servidor deslidado ou reinicializado
Indicado em aplicaes cujos dados devem ser armazemados apenas
temporariamente (ex: sesses)
Nvel de bloqueio: tabelas
No suporta dados do tipo BLOB e TEXT
No oferece suporte a transaes e ndices

2014 - Prof. Marcos Alexandruk

MySQL
Mtodos de armazenamento
ARCHIVE
Dados so gravados em arquivos-texto no formato de tabelas sequenciais
(ordem de gravao)

Utilizado em aplicaes de log e outras que podem gerar grande volume de


dados (podendo ser armazenadas posteriormente em unidades de backup
mensalmente ou em outros perodos)
Mecanismo de funcionamento limitado: suporta apenas INSERT e SELECT
No d suporte a ndices: cada SELECT percorre a tabela inteira para
garantir que todos os resultados foram obtidos
No oferece suporte a transaes e ndices

2014 - Prof. Marcos Alexandruk

MySQL
Mtodos de armazenamento
CSV (Comma Separated Values)
Similar ao mtodo ARCHIVE, armazena os dados em arquivos texto. Os
valores so separados por vrgula ou outro caractere definido previamente.
O padro CSV permite que os dados tornem-se portveis para outras
aplicaes (ex: planilhas) de forma simples e rpida
No oferece suporte a transaes e ndices
No recomendado o uso de tipos BLOB e TEXT, pois podem comprometer a
portabilidade

2014 - Prof. Marcos Alexandruk

PostgreSQL

2014 - Prof. Marcos Alexandruk

PostgreSQL

2014 - Prof. Marcos Alexandruk

PostgreSQL
Desenvolvimento
O POSTGRES foi originalmente patrocinado pelo DARPA (Defense
Advanced Research Projects Agency), ARO (Army Research Ofce),
NSF (National Science Foundation) e ESL Inc.
O projeto POSTGRES iniciou em 1986, j em 1987 tornou-se
operacional.
Em 1989 foi lanada a primeira verso para o pblico externo.

Em 1991 foi lanada a verso 3, com melhorias no executor de


consultas e algumas partes do cdigo foram reescritas.
As verses subsequentes, at o Postgres95, foram focadas em
confiabilidade e portabilidade.
2014 - Prof. Marcos Alexandruk

PostgreSQL
Desenvolvimento
O Postgres95 teve mudanas radicais em relao ao projeto original. O seu
cdigo foi totalmente revisado, o tamanho dos fontes foi reduzido em 25%. A
performance foi consideravelmente melhorada e vrios recursos foram
adicionados.
Em 1996 o projeto foi rebatizado como PostgreSQL, para enfatizar a relao do
POSTGRES original com a linguagem SQL.
A numerao da verso voltou a seguir o padro anterior ao Postgres95
(considerada a 5.0), e a primeira verso do PostgreSQL foi a 6.0.
Enquanto a nfase do Postgres95 tinha sido a correo de falhas e otimizao
do cdigo, o desenvolvimento das primeiras verses do PostgreSQL foi
orientada melhoria de recursos e implementao de novos recursos, sempre
seguindo os padres SQL.

2014 - Prof. Marcos Alexandruk

PostgreSQL
Desenvolvimento
As verses 7.x lanadas a partir de maio de 2000 trouxeram as seguintes
novidades:
WAL - Write Ahead Log (as modificaes so gravadas em um log antes
de serem aplicadas)
Schemas SQL
Outer joins
Suporte a IPv6

2014 - Prof. Marcos Alexandruk

PostgreSQL
Desenvolvimento
A verso 8.0 foi lanada em janeiro de 2005 e entre outras novidades, foi
a primeira a ter suporte nativo para Microsoft Windows (anteriormente o
PostgreSQL s rodava de forma nativa em sistemas Unix e, em sistemas
Windows - atravs da biblioteca Cygwin).
Dentre as muitas novidades da verso 8.x, pode-se destacar o suporte a
tablespaces, savepoints, roles e commit em duas fases.
Em 24 de julho de 2014 foi lanada a verso (estvel) mais recente: 9.2.9.

2014 - Prof. Marcos Alexandruk

PostgreSQL
Desenvolvimento
O Grupo Global de Desenvolvimento do PostgreSQL tem membros nos
Estados Unidos, Canad, Japo, Rssia e vrios outros pases.
Esse grupo formado essencialmente por empresas especializadas em
PostgreSQL, empresas usurias do sistema, alm dos pesquisadores
acadmicos e programadores independentes.
Alm da programao, essa comunidade responsvel pela
documentao, traduo, criao de ferramentas de modelagem e
gerenciamento, e elaborao de extenses e acessrios.

2014 - Prof. Marcos Alexandruk

PostgreSQL
Plataformas suportadas pelo PostgreSQL:
Unix
Linux

FreeBSD
Microsoft Windows

MacOS

2014 - Prof. Marcos Alexandruk

PostgreSQL
Recursos "recentes":
Sub-consultas
Subconsulta uma instruo SELECT aninhada dentro de uma
instruo SELECT, INSERT, DELETE ou UPDATE ou dentro de uma
outra subconsulta.

EXEMPLO:
SELECT NRPEDIDO FROM PEDIDO WHERE CODCLIENTE =
(SELECT CODCLIENTE FROM CLIENTE WHERE NOMECLIENTE = 'ALFA');

2014 - Prof. Marcos Alexandruk

PostgreSQL
Recursos "recentes":
Controle de concorrncia multi-verso (MVCC)
Ao contrrio de outros SGBDs que utilizam que utilizam LOCKs
para

controle

de

concorrncia,

PostgreSQL

mantm

consistncia dos dados usando um modelo multiverso. Neste


modelo, cada transao ter sua verso do banco de dados,
estando protegidas de acessar dados inconsistentes que poderiam

ser gerados por outras transaes. Portanto, o MVCC oferece o


isolamento de transaes, alm de garantir que leituras nunca
aguardaro escritas e vice-versa.)

2014 - Prof. Marcos Alexandruk

PostgreSQL
Recursos "recentes":
Integridade Referencial
A integridade referencial garante a no corrupo dos dados, de
modo a no existir um registro "filho" sem um registro "pai".

2014 - Prof. Marcos Alexandruk

PostgreSQL
Recursos "recentes":
Stored Procedures
As procedures do PostgreSQL podem ser escritas em vrias
linguagens (PL/PgSQL, Perl, Python, Ruby, e outras)

2014 - Prof. Marcos Alexandruk

PostgreSQL
Recursos "recentes":
Triggers
Recurso de programao executado sempre que o evento
associado ocorrer.
Utilizados para ajudar a manter a consistncia dos dados ou
para propagar alteraes em um determinado dado de uma
tabela para outras.
2014 - Prof. Marcos Alexandruk

PostgreSQL
Recursos "recentes":
Schemas
Schema um espao lgico (namespace) dentro do banco
de dados para armazenar objetos: tabelas, funes, etc.
Este conceito semelhante ao cross-database, a diferena
que o cross-database relaciona objetos de banco de dados
distintos, j o Schema relaciona objetos que esto no
mesmo banco de dados, mas em estruturas lgicas distintas.

2014 - Prof. Marcos Alexandruk

PostgreSQL
Recursos "recentes":
Tablespaces
Tablespace designa uma subdiviso lgica de um banco de
dados utilizada para agrupar estruturas lgicas relacionadas.

As tablespaces apenas especificam a localizao de


armazenamento

do

banco

de

dados.

armazenadas fisicamente em datafiles.

2014 - Prof. Marcos Alexandruk

Os

dados

so

PostgreSQL
Recursos "recentes":
Savepoints
Estabelece um novo ponto de salvamento na transao

corrente.
O ponto de salvamento uma marca especial dentro da

transao

que

permite

desfazer

todos

os

comandos

executados aps o seu estabelecimento, restaurando o


estado da transao ao que era quando o ponto de
salvamento foi estabelecido.
2014 - Prof. Marcos Alexandruk

PostgreSQL
Recursos "recentes":
Commit em duas fases
Commit em duas fases refere-se a uma transao que pode utilizar
dois ou mais bancos de dados (multi-database), que podem estar
localizados em servidores diferentes.
Durante uma transao em bancos com essa caracterstica garantese que o commit seja realizado em todos os bancos participantes
ou em nenhum, ou seja, ou grava tudo ou no grava nada.
Por exemplo, se sua aplicao atualiza dados em dois bancos de
dados e voc faz um commit, o recurso de commit em duas fases
previne situaes como a de um dos bancos ficar indisponvel e
suas mudanas serem atualizadas somente em um dos bancos
envolvidos.
2014 - Prof. Marcos Alexandruk

PostgreSQL
Capacidade:
Tamanho mximo do banco de dados: ilimitado
Tamanho mximo de uma tabela: 32 TB
Tamanho mximo de uma linha: 1,6 TB
Tamanho mximo de um campo: 1 GB
Nmero mximo de linhas por tabela: ilimitado
Nmero mximo de colunas por tabela: 250 a 1600 (dependendo dos tipos)
Nmero mximo de ndices por tabela: ilimitado

2014 - Prof. Marcos Alexandruk

Aula 4: Use AVA

Oracle, Microsoft e IBM lanaram verses gratuitas de seus SGBDs.


Faa uma pesquisa sobre estas verses e comente com seus
colegas sobre as principais diferenas entre elas.

Qual delas voc recomendaria para uma empresa de pequeno


porte? Por que?

2014 - Prof. Marcos Alexandruk

Sistemas Gerenciadores de Banco de Dados


Aula 5
Prof. Marcos Alexandruk

Permisses nos principais SGBDs

Oracle Database

Microsoft SQL Server


IBM DB2
MySQL
PostgreSQL

2014 - Prof. Marcos Alexandruk

Segurana e autenticao

O controle aos dados em um SGBD deve ser realizado em trs reas:

1. QUEM pode acessar os dados


2. O QUE vai ser acessado

3. QUAL o TIPO de acesso que ser permitido


leitura
insero
alterao
excluso
2014 - Prof. Marcos Alexandruk

DCL - Data Control Language

A DCL (Data Control Language) uma "sublinguagem" da SQL


(Structured Query Language).
Por meio dela so controlados os acessos de usurios ou de grupos de
usurios.
Principais comandos:
GRANT: Concede privilgios
REVOKE: Revoga privilgios

2014 - Prof. Marcos Alexandruk

Oracle Database

2014 - Prof. Marcos Alexandruk

Oracle

Criao de usurios
Um usurio de banco de dados somente poder ser criado pelo DBA ou

por outro usurio com o privilgio de sistema CREATE USER. Alm de


informar o nome e a senha (provisria), possvel determinar tambm
quais tablespaces estaro disponveis e at mesmo quanto espao de

armazenamento o novo usurio poder utilizar em cada tablespace.


Quando um usurio cria um novo objeto no banco de dados (uma
tabela, por exemplo) este objeto far parte de um schema (esquema)
que tem o mesmo nome do usurio.

2014 - Prof. Marcos Alexandruk

Oracle
Criando um usurio
Para criar um novo usurio deve-se utilizar o comando CREATE USER, conforme
o exemplo a seguir:
CREATE USER FULANO IDENTIFIED BY ABC123
ACCOUNT UNLOCK
PASSWORD EXPIRE
DEFAULT TABLESPACE USERS
TEMPORARY TABLESPACE TEMP;
ACCOUNT UNLOCK: A conta estar desbloqueada (default).

PASSWORD EXPIRE: Usurio dever alterar a senha no primeiro login.


DEFAULT TABLESPACE: Tablespace padro do usurio.
TEMPORARY TABLESPACE: Tablespace temporria para este usurio.

2014 - Prof. Marcos Alexandruk

Oracle
Alterando um usurio
Pode-se alterar os privilgios e outros atributos dos usurios do banco de dados
com o comando ALTER USER.
O exemplo a seguir estabelece uma cota de 100 MB no tablespace USERS para o
usurio anteriormente criado:
ALTER USER FULANO
QUOTA 100M ON USERS;

2014 - Prof. Marcos Alexandruk

Oracle
Concedendo privilgios a um usurio
Para conceder privilgios a um usurio deve-se utilizar a instruo GRANT.
O exemplo a seguir apresenta a concesso do privilgio CONNECT ao novo
usurio que permitir a ele conectar-se ao banco de dados:
GRANT CONNECT TO FULANO;

2014 - Prof. Marcos Alexandruk

Oracle
Apresentando os usurios
Os nomes dos usurios do banco de dados podem ser obtidos atravs da viso
DBA_USERS. O comando a seguir apresenta os nomes dos usurios:
SELECT USERNAME FROM DBA_USERS;

Para consultar o status de cada usurio (conta), isto , para verificar se a conta
est ou no bloqueada, utiliza-se:
SELECT USERNAME, ACCOUNT_STATUS FROM DBA_USERS;
OPEN: A conta est disponvel para uso;
LOCKED: A conta foi bloqueada pelo DBA;
EXPIRED: A senha expirou. O usurio dever redefini-la;

EXPIRED & LOCKED: A conta foi bloqueada e a senha expirou.


2014 - Prof. Marcos Alexandruk

Oracle
Eliminando um usurio
Para eliminar usurios do banco de dados utiliza-se o comando DROP USER.
O exemplo a seguir elimina o usurio anteriormente criado e seus objetos
(tabelas, vises, etc.):
DROP USER FULANO CASCADE;

2014 - Prof. Marcos Alexandruk

Oracle

2014 - Prof. Marcos Alexandruk

Microsoft SQL Server

2014 - Prof. Marcos Alexandruk

SQL Server

Usurios no SQL Server


Cada usurio tem dois nveis de nomes e cada nome est

associado a uma ID exclusiva:


Nome de logon
Nome do usurio do banco de dados

2014 - Prof. Marcos Alexandruk

SQL Server

Nome de logon
Cada usurio autorizado a conectar-se ao SQL Server tem um

nome de logon que proporciona ao usurio o acesso a uma


instncia do SQL Server. H dois tipos de nomes de logon:

Nomes da conta do Microsoft Windows


Nomes de logon SQL Server

2014 - Prof. Marcos Alexandruk

SQL Server

Nomes da conta do Microsoft Windows


Os membros sysadmin ou securityadmin, usando sp_grantlogin,
podem autorizar as contas do Windows de usurios individuais ou os
grupos do Windows a se conectarem a uma instncia do SQL Server.
O usurio identificado pela conta do Windows ou qualquer pessoa no
grupo do Windows pode, ento, se conectar a uma instncia do SQL
Server usando a Autenticao do Windows.
Cada conta do Windows ou nome de grupo armazenado em
sys.server_principals.

O identificador de segurana do Windows para a conta ou grupo do


Windows armazenado em sys.server_principals.sid.
2014 - Prof. Marcos Alexandruk

SQL Server

Nomes de logon SQL Server


So usados quando o usurio se conecta usando a Autenticao do
SQL Server. Os nomes de logon do SQL Server so definidos pelos
sysadmin ou securityadmin usando sp_addlogin.
Cada nome de logon do SQL
master.dbo.syslogins.loginname.

Server

armazenado

em

O SQL Server gera um GUID que usado como identificador de


segurana e o armazena em sys.server_principals.sid.
O SQL Server usa sys.server_principals.sid como o security_identifier
para o nome de logon.

2014 - Prof. Marcos Alexandruk

SQL Server

Nome do usurio do banco de dados


Cada conta do Windows ou logon do SQL Server deve estar associada a um
nome de usurio em cada banco de dados que o usurio estiver autorizado a
acessar, ou o banco de dados deve ter um acesso de convidado habilitado.
Os nomes de usurio so definidos pelos db_owner ou db_accessadmin e so
armazenados na tabela sys.database_principals disponvel em cada banco de
dados.
Cada nome de usurio de banco de dados est associado a uma ID de usurio
de banco de dados armazenada em sys.database_principals.uid.
O
security
identifier
para
cada
usurio

armazenado
em
sys.database_principals.sid; portanto, os usurios podem ser mapeados de
volta para os seus logons associados.
Pode-se utilizar o mesmo nome do usurio do banco de dados para o logon do
SQL Server ou para a conta do Windows, porm, isso no obrigatrio.
2014 - Prof. Marcos Alexandruk

SQL Server
Permisses
Determinam as aes que os usurios podem executar no SQL Server ou em um
banco de dados.
Permisses de objeto:
Nvel de servidor: servidores, logins, funes de servidor, etc.

Nvel de banco de dados: stored proocedures, functions, schemas, etc.


Permisses de instruo:
Criao de banco de dados, tabelas, vises, etc.

Permisses implcitas:
Apenas membros de funes de sistema predefinidas e proprietrios de
bancos de dados ou objetos de banco de dados tm permisses
implcitas. Permitem que executem todas atividades no banco de dados
e nos seus objetos (exemplo: ver, adicionar, alterar e excluir dados).

2014 - Prof. Marcos Alexandruk

SQL Server
Funes
Parecidas com os grupos de segurana do Windows, permitem atribuir
permisses a um grupo de usurios e podem ter permisses implcitas
(que no podem ser alteradas). H dois tipos de funes:
Funes de servidor
Funes de banco de dados

2014 - Prof. Marcos Alexandruk

SQL Server
Funes de servidor
Utilizadas para garantir recursos de administrao de servidor:

bulkadmin: Destinada s contas que precisam fazer inseres em massa no


banco de dados.
dbcreator: Destinada aos usurios que precisam criar, modificar, eliminar e
restaurar bancos de dados.

diskadmin: Destinada aos usurios que precisam gerenciar arquivos de disco.


processadmin: Destinada aos usurios que precisam controlar processos do
SQL Server.
securityadmin: Destinada aos usurios que precisam gerenciar logins, criar
permisses de banco de dados e ler logins de erros.
serveradmin: Destinada aos usurios que precisam definir opes de
configurao em nvel de servidor e encerrar o servidor.
setupadmin: Destinada aos usurios que precisam gerenciar servidores
vinculados e controlar procedimentos de inicializao.

sysadmin: Destinada aos usurios que precisam de controle total sobre o


SQL Server e os banco de dados instalados.
2014 - Prof. Marcos Alexandruk

SQL Server
Funes de banco de dados
So definidas para CADA banco de dados:

public: padro para todos os usurios do banco de dados. Permisses


atribudas funo public ficaro disponveis a TODOS os usurios do banco.
db_acessadmin: Destinada a usurios que precisam adicionar ou remover
logins.

db_backupoperator: Destinada aos usurios que precisam fazer backup de


um banco de dados.
db_datareader: Destinada aos usurios que precisam ver os dados de um
banco de dados.
db_writer: Destinada aos usurios que precisam adicionar dados em qualquer
tabela de usurio do banco de dados.
db_ddladmin: Destinada aos usurios que precisam executar tarefas
relacionada DDL (Definition Data Language).
db_denydatareader: Destinada a restringir o acesso aos dados em um banco
de dados pelo login.

2014 - Prof. Marcos Alexandruk

SQL Server
Funes de banco de dados (continuao)
db_denydatawriter: Destinada a restringir as permisses de modificao em
um banco de dados pelo login.
db_owner: Destinada a usurios que precisam de controle total ao banco de
dados.
db_securityadmin: Destinada aos usurios
permisses, posse de objetos e funes.

que

precisam

gerenciar

dbm_monitor: Destinada aos usurios que precisam monitor o status atual do


espelhamento de banco de dados.

2014 - Prof. Marcos Alexandruk

SQL Server
Criao de usurios com o utilitrio SQLCMD
Abrir o prompt de comando do Windows.
Acessar o SQLCMD:

SQLCMD -S .\SQLEXPRESS
SQLEXPRESS = Nome da Instncia
Criar um login:

CREATE LOGIN FULANO WITH PASSWORD = 'ABC123';


GO
Criar um usurio de banco de dados para o login acima:

CREATE USER FULANO FOR LOGIN FULANO;


GO
2014 - Prof. Marcos Alexandruk

IBM DB2

2014 - Prof. Marcos Alexandruk

IBM DB2
Segurana
H trs nveis de segurana para acesso ao SGBD IBM DB2:
Autenticao:
O acesso instncia gerenciado por um sistema externo ao SGBD.
Pode estar incorporado ao sistema operacional ou a outro produto.
Autoridade:
Aps a autenticao positiva o acesso aos dados definido e
gerenciado pelo DB2.

Privilgio:
Atribudos aos usurios para que possam trabalhar com os objetos do
banco de dados (SELECT, UPDATE, etc.)

2014 - Prof. Marcos Alexandruk

IBM DB2
Autenticao
O parmetro AUTHENTICATION no DBM CFG, acionado no servidor
DB2, tem um leque de valores possveis. Por exemplo, quando o
parmetro configurado como SERVER (por omisso), a autenticao
realizada pelo sistema operacional ou mecanismo exterior de
segurana no servidor.

No entanto, se a AUTHENTICATION configurada como CLIENT, a


autenticao realizada pelo sistema operativo ou mecanismo exterior
de segurana no cliente.

2014 - Prof. Marcos Alexandruk

IBM DB2
Autenticao
O parmetro AUTHENTICATION pode configurado com um dos seguintes valores:
SERVER (default): Autenticao ocorre no servidor
CLIENT: Autenticao ocorre no cliente
SERVER_ENCRYPT: Igual ao SERVER mas os users Ids e as passwords
esto encriptadas
KERBEROS: Autenticao
segurana Kerberos

ocorre

usando

mecanismo

externo

de

SQL_AUTHENTICATION_DATAENC: A autenticao efetuada no servidor e


as ligaes tem que usar encriptao de dados
SQL_AUTHENTICATION_DATAENC_CMP: Como a anterior,
encriptao de dados que apenas usada quando disponvel

exceto

na

GSSPLUGIN: Autenticao utiliza um mecanismo de segurana externo GSS


API-based (Generic Security Services Application Program Interface)
2014 - Prof. Marcos Alexandruk

IBM DB2
Grupo PUBLIC
O DB2 define um grupo interno chamado PUBLIC. Qualquer usurio identificado
pela autenticao do sistema operacional ou da rede implicitamente um
membro do grupo PUBLIC.
Quando uma base de dados criada, certos privilgios esto garantidos
automaticamente ao grupo PUBLIC:
CONNECT
CREATETAB
IMPLICIT SCHEMA
BINDADD

2014 - Prof. Marcos Alexandruk

IBM DB2
Grupo PUBLIC
Para segurana adicional, recomendvel revogar estes privilgios do
grupo PUBLIC como segue:

REVOKE CONNECT ON DATABASE FROM PUBLIC


REVOKE CREATETAB ON DATABASE FROM PUBLIC
REVOKE IMPLICIT_SCHEMA ON DATABASE FROM PUBLIC
REVOKE BINDADD ON DATABASE FROM PUBLIC

2014 - Prof. Marcos Alexandruk

IBM DB2
Consultando privilgios
Pode-se fazer uma consulta s views do catlogo DB2 SYSCAT para verificar os
privilgios de determinado usurio.
Por exemplo, se quisermos saber se o usurio DB2ADMIN possui o privilgio
SELECT na tabela TESTE, e saber quem garantiu este privilgio, podemos correr
a seguinte consulta:
SELECT grantor, grantee, selectauth
FROM syscat.tabauth
WHERE tabname = 'TESTE'
GRANTOR
GRANTEE
SELECTAUTH
------------------------------ALUNO
DB2ADMIN
Y
No exemplo acima, o usurio ALUNO garantiu o privilgio SELECT ao usurio
DB2ADMIN.
2014 - Prof. Marcos Alexandruk

MySQL

2014 - Prof. Marcos Alexandruk

MySQL
Privilgios de usurios
Os dados referentes aos privilgios dos usurios do SGBD MySQL, alterados
pelas instrues GRANT e REVOKE so armazenados no banco de dados
denominado mysql.
Cinco tabelas no banco de dados mysql tm relao com privilgios de usurios:
user
db
host
tables_priv
columns_priv

2014 - Prof. Marcos Alexandruk

MySQL
Privilgios de usurios
Estas tabelas podem ser consultadas para solucionar eventuais problemas
referentes a privilgios.
Ao invs de usar os comandos GRANT e REVOKE o administrador pode
modificar diretamente as tabelas.
Porm, neste caso, para que as alteraes entrem em vigor, precisar executar a
instruo:

flush privileges;

2014 - Prof. Marcos Alexandruk

MySQL
Tabela user
A tabela user contm informaes sobre o conjunto de privilgios globais de um
usurio. Esta tabela contm as seguintes colunas:
Colunas de escopo: Usadas para determinar quando uma linha relevante.
As colunas de escopo so: Host, User e Password.

Colunas de privilgios: Cada uma corresponde a um dos privilgios globais.


Podem ter o valor Y (se o usurio tiver o privilgio) ou N (caso no o tenha).
Algumas colunas de privilgios so: Select_priv, Insert_priv, Update_priv,
Delete_priv, etc.
Colunas de conexo segura: Representam as informaes da clusula
REQUIRE da instruo GRANT. As colunas so: ssl_type, ssl_cypher,
x509_issuer e x509_subject.
Colunas de limite de recursos: Representam qualquer limite no uso de
recursos especificados no final da clusula GRANT. As colunas so:
max_questions, max_updates e max_connections.
2014 - Prof. Marcos Alexandruk

MySQL
Tabela db
A tabela db armazena os privilgios de um usurio para determinado banco de
dados. Esta tabela contm as seguintes colunas:
Colunas de escopo: Usadas para determinar quando uma linha relevante.
Caso as regras sejam diferentes para cada um dos hosts o campo deve ser

deixado em branco e as regras devem ser declaradas na tabela host. As


colunas de escopo so: Host, Db e User.
Colunas de privilgios: Especificam se a combinao Host, DB e User tm
cada um dos privilgios listados. Podem ter o valor Y ou N. Algumas
colunas de privilgios so: Select_priv, Insert_priv, Update_priv, Delete_priv,
etc.

2014 - Prof. Marcos Alexandruk

MySQL
Tabela host
A tabela host consultada quando o MySQL encontra uma entrada em branco
na coluna Host da tabela db. Esta tabela contm as seguintes colunas:
Colunas de escopo: Usadas para determinar quando uma linha relevante.
Cada linha fornece informaes para um nico banco de dados acessar a
partir de um host. As colunas de escopo so: Host e Db.
Colunas de privilgios: Especificam se a combinao Host e DB tm cada
um dos privilgios listados. Podem ter o valor Y ou N. Algumas colunas de
privilgios so: Select_priv, Insert_priv, Update_priv, Delete_priv, etc.

2014 - Prof. Marcos Alexandruk

MySQL
Tabela tables_priv
A tabela tables_priv apresenta os privilgios de usurio com relao s tabelas
individuais. Esta tabela contm as seguintes colunas:
Colunas de escopo: Usadas para determinar quando uma linha relevante.
Cada linha fornece informaes para um nico banco de dados acessar a
partir de um host. As colunas de escopo so: Host, Db, User e Table_name.
Colunas de concesso: Especificam que concedeu o privilgio e quando. As
colunas de concesso so: Grantor e Timestamp.
Coluna Table_priv: Determina quais privilgios a combinao Host, Db e
User tm na tabela listada em Table_name. Pode conter os seguintes
valores: Select, Insert, Update, Delete, Create, Alter, Drop, Grant, References
e Index.
Coluna Column_priv: Informa quais privilgios o usurio tem sobre as
colunas da tabela listada em Table_name. Pode conter os seguintes valores:
Select, Insert, Update e References.
2014 - Prof. Marcos Alexandruk

MySQL
Tabela columns_priv
A tabela columns_priv apresenta os privilgios de usurio com relao s
colunas individuais. Esta tabela contm as seguintes colunas:
Colunas de escopo: Usadas para determinar quando uma linha relevante.
Cada linha fornece informaes para um nico banco de dados acessar a
partir de um host. As colunas de escopo so: Host, Db, User, Table_name e
Column_Name.
Coluna Column_priv: Informa quais privilgios foram concedidos para a
combinao determinada nas colunas de escopa. Pode conter os seguintes
valores: Select, Insert, Update e References.
Coluna Timestamp: Informa quando o privilgio foi concedido.

2014 - Prof. Marcos Alexandruk

PostgreSQL

2014 - Prof. Marcos Alexandruk

PostgreSQL
Criando um usurio
Para criar um usurio deve-se utilizar o seguinte comando:

CREATE USER FULANO WITH PASSWORD 'ABC123';


Para criar um usurio com senha vlida at 2015 deve-se utilizar o seguinte
comando:

CREATE USER FULANO WITH PASSWORD 'ABC123'


VALID UNTIL '2015-12-31';
Para criar um com permisso de criar bancos de dados deve-se utilizar o
seguinte comando:

CREATE USER FULANO WITH PASSWORD 'ABC123'

CREATEDB;
2014 - Prof. Marcos Alexandruk

PostgreSQL
Alterando atributos do usurio
Para renomear um usurio deve-se utilizar o seguinte comando:

ALTER USER FULANO RENAME TO BELTRANO;


Para modificar a senha de um usurio deve-se utilizar o seguinte comando:

ALTER USER FULANO WITH PASSWORD 'XYZ123';


Para permitir que um usurio crie usurios e bancos de dados deve-se utilizar o
seguinte comando:

ALTER USER FULANO CREATE USER CREATEDB;

2014 - Prof. Marcos Alexandruk

Aula 5: Use AVA

MariaDB, SGBD criado por um dos fundadores do MySQL, Michael


Widenius, est sendo adotado por grandes empresas como o
Google. Faa uma pesquisa sobre o MariaDB destacando aos
colegas os pontos que voc achou interessante principalmente no
que diz respeito segurana.

2014 - Prof. Marcos Alexandruk

Sistemas Gerenciadores de Banco de Dados


Aula 6
Prof. Marcos Alexandruk

Aula 6

Desenvolvendo um pequeno banco de dados

Oracle

2014 - Prof. Marcos Alexandruk

Tablespaces
Tablespaces

O Oracle apresenta trs tipos principais de tablespaces:


Permanente: contm segmentos que persistem alm da durao de
uma transao ou sesso;
Undo: armazenam valores anteriores a uma incluso, atualizao
ou excluso. Um banco de dados pode ter mais de um tablespace
de undo, mas apenas um pode estar ativo em um dado momento.
Temporrio: contm dados transitrios que s existem enquanto
durar a sesso, alocando, por exemplo, espao para concluir uma

classificao de dados que no cabe na memria.


2014 - Prof. Marcos Alexandruk

Tablespaces
Nomes dos tablespaces
Consultar nomes dos tablespaces:
SELECT TABLESPACE_NAME FROM DBA_TABLESPACES;
TABLESPACE_NAME
-----------------------------SYSTEM
SYSAUX
UNDOTBS1
TEMP
USERS
EXAMPLE

2014 - Prof. Marcos Alexandruk

Tablespaces
Tipos de gerenciamento de tablespaces

Os tablespaces podem ser gerenciados por dicionrio ou localmente.

Se o tablespace SYSTEM for gerenciado localmente todos os outros


tablespaces, exceto os que sejam somente de leitura (read only),

devem obrigatoriamente ser gerenciados localmente.

Verificar o tipo de gerenciamento de extenses do tablespace SYSTEM:

SELECT TABLESPACE_NAME, EXTENT_MANAGEMENT FROM


DBA_TABLESPACES
WHERE TABLESPACE_NAME = 'SYSTEM';

2014 - Prof. Marcos Alexandruk

Tablespaces
Criando um tablespace permanente gerenciado localmente

Criar um TABLESPACE gerenciado localmente:

CREATE TABLESPACE TESTE1


DATAFILE 'E:\DADOS1.DBF' SIZE 10M
EXTENT MANAGEMENT LOCAL UNIFORM SIZE 256K;

UNIFORM SIZE indica que todas as extenses tero o mesmo tamanho.


O tamanho (SIZE) default 1MB.

Consultar os nomes dos tablespaces:

SELECT TABLESPACE_NAME FROM DBA_TABLESPACES;

2014 - Prof. Marcos Alexandruk

Tablespaces
Criando um tablespace permanente gerenciado localmente

Se a clusula UNIFORM SIZE for omitida, ser assumido o valor default:


AUTOALLOCATE (alocao das extenses gerenciada pelo Oracle).

Criar o tablespace TESTE2 com a opo AUTOALLOCATE:


CREATE TABLESPACE TESTE2
DATAFILE 'E:\DADOS2.DBF' SIZE 10M
EXTENT MANAGEMENT LOCAL AUTOALLOCATE;

Consultar os nomes dos tablespaces:


SELECT TABLESPACE_NAME FROM DBA_TABLESPACES;

2014 - Prof. Marcos Alexandruk

Tablespaces
Criando tablespaces de UNDO e TEMPORRIOS

Criar um TABLESPACE de UNDO:

CREATE UNDO TABLESPACE UNDOTBS2


DATAFILE 'E:\UNDOTBS02.ORA' SIZE 10M
EXTENT MANAGEMENT LOCAL AUTOALLOCATE;

Para criar um TABLESPACE TEMPORRIO:

CREATE TEMPORARY TABLESPACE TEMP2


TEMPFILE 'E:\TEMP2.ORA' SIZE 10M
EXTENT MANAGEMENT LOCAL;

2014 - Prof. Marcos Alexandruk

Tablespaces
Alterando um tablespace
Incluir mais um arquivo de dados (datafile) em um tablespace:
ALTER TABLESPACE TESTE2
ADD DATAFILE 'E:\DADOS3.DBF' SIZE 10M;

2014 - Prof. Marcos Alexandruk

Tablespaces
Eliminando um tablespace
Eliminar um tablespace:
DROP TABLESPACE TESTE1
INCLUDING CONTENTS AND DATAFILES CASCADE CONSTRAINTS;

INCLUDING CONTENTS: o tablespace ser eliminado mesmo que contenha


segmentos. A operao fracassar se houverem segmentos de undo ou
temporrios ativos.

AND DATAFILES: utilizado com INCLUDING CONTENTS, fora a eliminao


fsica dos arquivos de dados (datafiles) que compem o tablespace.

CASCADE CONSTRAINTS: Elimina constraints relacionadas a tabelas do


tablespace que est sendo eliminado que estejam em outro tablespace.
2014 - Prof. Marcos Alexandruk

Datafiles
Datafiles

Cada arquivo de dados (datafile) do Oracle corresponde a um arquivo


fsico do sistema operacional.

Um tablespace pode ser composto por vrios arquivos de dados,


porm um arquivo de dados membro de somente um tablespace.

Para alterar o tamanho de um datafile deve-se utilizar o comando


ALTER DATABASE.

Alterar o tamanho do arquivo DADOS1.DBF para 20 MB:

ALTER DATABASE
DATAFILE 'E:\DADOS2.DBF' RESIZE 20M;
2014 - Prof. Marcos Alexandruk

Segmentos
Segmentos

Um segmento composto por um grupo de extenses e abrange um objeto (tabela, ndice, etc.).

Criar uma tabela no tablespace USERS:


CREATE TABLE CLIENTE (
CODIGO NUMBER(4),
NOME VARCHAR2(30))
TABLESPACE USERS;

Foi alocado um segmento que recebeu o mesmo nome da tabela (coluna SEGMENT_NAME):
SELECT TABLE_NAME, TABLESPACE_NAME FROM USER_TABLES
WHERE TABLE_NAME = 'CLIENTE';
TABLE_NAME
TABLESPACE_NAME
------------------- -----------------CLIENTE
USERS
SELECT SEGMENT_NAME, SEGMENT_TYPE, TABLESPACE_NAME FROM USER_SEGMENTS
WHERE TABLESPACE_NAME = 'USERS';
SEGMENT_NAME
SEGMENT_TYPE
TABLESPACE_NAME
------------------ ------------------- ------------------CLIENTE
TABLE
USERS
2014 - Prof. Marcos Alexandruk

Extenses
Extenses

Extenses so formadas por um ou mais blocos de dados. Quando um objeto


do banco de dados expandido so alocadas mais extenses.

Verificar o tipo de gerenciamento de extenses em cada tablespace:

SELECT TABLESPACE_NAME, EXTENT_MANAGEMENT FROM DBA_TABLESPACES;


TABLESPACE_NAME
-----------------------------SYSTEM
SYSAUX
UNDOTBS1
TEMP
USERS
EXAMPLE

EXTENT_MAN
---------LOCAL
LOCAL
LOCAL
LOCAL
LOCAL
LOCAL

2014 - Prof. Marcos Alexandruk

Blocos
Blocos

Blocos so as menores estruturas de armazenamento no banco de dados Oracle.

Um bloco de dados pode ser constitudo de um ou mais blocos do sistema


operacional.

Verificar o tamanho dos blocos em cada tablespace:

SELECT TABLESPACE_NAME, BLOCK_SIZE FROM DBA_TABLESPACES;


TABLESPACE_NAME
BLOCK_SIZE
------------------------------ ---------SYSTEM
8192
SYSAUX
8192
UNDOTBS1
8192
TEMP
8192
USERS
8192
EXAMPLE
8192
2014 - Prof. Marcos Alexandruk

Gerenciamento de usurios
Autenticao de usurios
Os usurios podem ser autenticados no banco de
dados atravs de trs mtodos diferentes:
atravs do banco de dados;
atravs do sistema operacional;
atravs da rede.

2014 - Prof. Marcos Alexandruk

Gerenciamento de usurios
Criao de usurios
Quando um usurio cria um novo objeto no banco de dados
(uma tabela, por exemplo) este objeto far parte de um schema
(esquema) que tem o mesmo nome do usurio.
Um usurio de banco de dados somente poder ser criado pelo
DBA ou por outro usurio com o privilgio de sistema CREATE
USER. Alm de informar o nome e a senha (provisria),
possvel

determinar

tambm

quais

tablespaces

estaro

disponveis e at mesmo quanto espao de armazenamento o

novo usurio poder utilizar em cada tablespace.


2014 - Prof. Marcos Alexandruk

Gerenciamento de usurios
Criando um usurio

Criar um novo usurio:

CREATE USER FULANO IDENTIFIED BY ABC123


ACCOUNT UNLOCK
PASSWORD EXPIRE
DEFAULT TABLESPACE USERS
TEMPORARY TABLESPACE TEMP;
ACCOUNT UNLOCK: A conta estar desbloqueada (default).
PASSWORD EXPIRE: Usurio dever alterar a senha no primeiro login.
DEFAULT TABLESPACE: Tablespace padro do usurio.

TEMPORARY TABLESPACE: Tablespace temporria para este usurio.


2014 - Prof. Marcos Alexandruk

Gerenciamento de usurios
Alterando um usurio

Pode-se alterar os privilgios e outros atributos dos usurios do banco


de dados com o comando ALTER USER.

Estabelecer para o usurio uma cota de 100 MB no tablespace USERS:

ALTER USER FULANO


QUOTA 100M ON USERS;

2014 - Prof. Marcos Alexandruk

Gerenciamento de usurios
Concedendo privilgios a um usurio

Para conceder privilgios a um usurio deve-se utilizar a instruo


GRANT.

O exemplo a seguir apresenta a concesso do privilgio CONNECT ao


novo usurio que permitir a ele conectar-se ao banco de dados:

GRANT CONNECT TO FULANO;

2014 - Prof. Marcos Alexandruk

Gerenciamento de usurios
Eliminando um usurio

Para eliminar usurios utiliza-se o comando DROP USER.

Eliminar o usurio e seus objetos (tabelas, vises, etc.):

DROP USER FULANO CASCADE;

2014 - Prof. Marcos Alexandruk

Gerenciamento de usurios
Apresentando os usurios

Nomes dos usurios podem ser obtidos atravs da viso DBA_USERS:

SELECT USERNAME FROM DBA_USERS;

Consultar o status de cada usurio (conta):

SELECT USERNAME, ACCOUNT_STATUS FROM DBA_USERS;


OPEN: A conta est disponvel para uso;
LOCKED: A conta foi bloqueada pelo DBA;
EXPIRED: A senha expirou. O usurio dever redefini-la;

EXPIRED & LOCKED: A conta foi bloqueada e a senha expirou.


2014 - Prof. Marcos Alexandruk

Gerenciamento de usurios
Conectando-se como outro usurio

H casos em que o DBA precisar conectar-se como outro usurio para


resolver determinados problemas.

EXERCCIO

Utilize o roteiro a seguir e observe como isso pode ser feito.

2014 - Prof. Marcos Alexandruk

Gerenciamento de usurios
1. O DBA (conectado como SYSTEM) obtm a senha conforme gerada por um algoritmo HASH:
SELECT NAME, PASSWORD FROM SYS.USER$ WHERE NAME = 'FULANO';
NAME
PASSWORD
------------------------- ----------------FULANO
22DD56A22A50F1B8
2. O DBA copia a senha em um arquivo texto.
3. O DBA (conectado como SYTEM) altera temporariamente a senha do usurio:
ALTER USER FULANO IDENTIFIED BY SENHA_TEMP;
4. O DBA conecta-se ao banco utilizando a senha temporria:
CONNECT FULANO/SENHA_TEMP;
5. O DBA realiza as operaes necessrias na conta do usurio:
6. O DBA (conectado como SYSTEM) 'repe' a senha original do usurio:
ALTER USER FULANO IDENTIFIED BY VALUES '22DD56A22A50F1B8';.

2014 - Prof. Marcos Alexandruk

Perfis de usurios
Criando um perfil de usurio

Alterao necessria para que os limites relacionados ao recursos de


sistema possam ser controlados atravs de perfis de usurios:

ALTER SYSTEM SET resource_limit = TRUE;

Criar um PROFILE denominado LIMITE_LOGIN para limitar o nmero de


vezes consecutivas que um login pode falhar antes de bloquear a senha
do usurio:

CREATE PROFILE LIMITE_LOGIN


LIMIT FAILED_LOGIN_ATTEMPTS 3;

Criar um PROFILE denominado LIMITE_CONEXAO para limitar o tempo


de conexo a um usurio em trinta minutos:

CREATE PROFILE LIMITE_CONEXAO


LIMIT CONNECT_TIME 30;
2014 - Prof. Marcos Alexandruk

Perfis de usurios
Criando um perfil de usurio

Quando no for especificado nenhum perfil para um novo usurio do


banco de dados o Oracle aplica a este o perfil DEFAULT.

Para conhecer quais so os limites do perfil DEFAULT deve-se utilizar a


seguinte consulta ao dicionrio de dados:

SELECT * FROM DBA_PROFILES


WHERE PROFILE = 'DEFAULT';

2014 - Prof. Marcos Alexandruk

Perfis de usurios

Controle de recursos

Parmetros relacionados aos recursos que podero ser utilizados pelos usurios:

2014 - Prof. Marcos Alexandruk

Perfis de usurios

Controle de senhas dos usurios

Parmetros relacionados administrao de senhas de usurios.

2014 - Prof. Marcos Alexandruk

Perfis de usurios
Alterando um perfil de usurio
Alterar o parmetro FAILED_LOGIN_ATTEMPTS:
ALTER PROFILE LIMITE_LOGIN
LIMIT FAILED_LOGIN_ATTEMPTS 5;

Alterar o tempo de conexo de um usurio para sessenta minutos:

ALTER PROFILE LIMITE_CONEXAO


LIMIT CONNECT_TIME 60;

2014 - Prof. Marcos Alexandruk

Perfis de usurios
Associando um usurio a um perfil

Associar um usurio a um determinado perfil:

-- Ao criar o usurio:
CREATE USER FULANO IDENTIFIED BY 'ABC123'
PROFILE NOME_PERFIL;
-- Para usurio criado anteriormente:
ALTER USER FULANO PROFILE NOME_PERFIL;

Consultar a que perfil um usurio est relacionado:

SELECT USERNAME, PROFILE FROM DBA_USERS


WHERE USERNAME = 'FULANO';
2014 - Prof. Marcos Alexandruk

Privilgios de sistema

Privilgios de sistema envolvem os direitos de realizar determinadas


aes sobre objetos do banco de dados e alterao de parmetros de
sistema, dentre outros.

A verso 11.2 do Oracle Database oferece 208 privilgios de sistema


que

so

apresentados

na

tabela

SYSTEM_PRIVILEGE_MAP.

2014 - Prof. Marcos Alexandruk

de

dicionrio

de

dados

Privilgios de sistema
SELECT NAME FROM SYSTEM_PRIVILEGE_MAP;
NAME
-------------------ALTER SYSTEM
AUDIT SYSTEM
CREATE SESSION
CREATE TABLESPACE
ALTER TABLESPACE
DROP TABLESPACE
CREATE USER
ALTER USER
DROP USER
CREATE TABLE
CREATE ANY TABLE
ALTER ANY TABLE
DROP ANY TABLE
...

...
CREATE INDEX
CREATE ANY INDEX
ALTER ANY INDEX
DROP ANY INDEX
SYSDBA
SYSOPER
CREATE VIEW
ALTER DATABASE
CREATE PROCEDURE
CREATE ANY PROCEDURE
...

2014 - Prof. Marcos Alexandruk

Privilgios de sistema
PRIVILGIO DE SISTEMA

DESCRIO

SYSDBA | SYSOPER

Criar uma nova entrada no arquivo externo de senhas, inicializar ou interromper uma
instncia, criar, alterar e recuperar um banco de dados, etc.

ALTER SYSTEM

Alterar os parmetros no arquivo SPFILE. Emitir instrues ALTER SYSTEM.

AUDIT SYSTEM

Fazer auditoria no banco de dados.

CREATE SESSION

Conectar com o banco de dados.

ALTER DATABASE

Alterar o estado de um banco de dados. Exemplo: alterar o estado de MOUNT para OPEN.

CREATE TABLESPACE

Criar novos tablespaces.

ALTER TABLESPACE

Alterar parmetros dos tablespaces.

DROP TABLESPACE

Eliminar tablespaces.

CREATE USER

Criar novos usurios.

ALTER USER

Alterar privilgios e outros dados dos usurios.

DROP USER

Eliminar usurios.

CREATE TABLE

Criar novas tabelas em seu prprio esquema.

CREATE ANY TABLE

Criar novas tabelas em qualquer esquema.

ALTER ANY TABLE

Alterar as tabelas em qualquer esquema.

DROP ANY TABLE

Eliminar tabelas em qualquer esquema.

CREATE PROCEDURE

Criar uma procedure, funo ou pacote em seu prprio esquema.

CREATE ANY PROCEDURE

Criar uma procedure, funo ou pacote em qualquer esquema.

...

...
2014 - Prof. Marcos Alexandruk

Privilgios de sistema
Concedendo privilgios de sistema

Privilgios so concedidos aos usurios utilizando-se o comando GRANT.

Conceder ao usurio FULANO os privilgios necessrios para criar tabelas


e vises em seu prprio esquema:

GRANT CREATE TABLE, CREATE VIEW TO FULANO;

Privilgios tambm podem ser concedidos a todos os usurios do banco


atravs do grupo especial denominado PUBLIC:

GRANT CREATE TABLE TO PUBLIC;

2014 - Prof. Marcos Alexandruk

Privilgios de sistema
Concedendo privilgios de sistema

Conceder privilgios ao usurio e permitir que ele, por sua vez, tambm
conceda para outros os mesmos privilgios que est recebendo:

GRANT CREATE TABLE TO FULANO WITH ADMIN OPTION;

Se a permisso do usurio FULANO para conceder seus privilgios a


outros for revogada, os usurios aos quais ele concedeu os privilgios
continuaro a ret-los (no sero revogados).

2014 - Prof. Marcos Alexandruk

Privilgios de sistema
Revogando privilgios de sistema

Revogar o privilgio CREATE VIEW concedido anteriormente ao


usurio FULANO:

REVOKE CREATE VIEW FROM FULANO;

2014 - Prof. Marcos Alexandruk

Privilgios de sistema
Consultando privilgios de sistema

O dicionrio de dados apresenta algumas vises que podem ser


consultadas para obter-se os privilgios concedidos aos usurios do
banco de dados.

Consultar os privilgios de sistema atribudos diretamente para o


usurio SCOTT:

SELECT * FROM DBA_SYS_PRIVS


WHERE GRANTEE = 'SCOTT';

2014 - Prof. Marcos Alexandruk

Privilgios de sistema
Vises de dicionrio de dados de privilgios de sistema

VISO

DESCRIO

DBA_SYS_PRIVS

Privilgios de sistema atribudos a usurios e papis.

SESSION_PRIVS

Privilgios de sistema concedidos ao usurio na sesso atual


diretamente ou atravs de um papel.

ROLE_SYS_PRIVS

Privilgios de sistema concedidos ao usurio na sesso atual atravs


de um papel.

2014 - Prof. Marcos Alexandruk

Privilgios de objetos

Privilgio de objetos o direito de realizar um tipo especfico de ao sobre determinados


objetos de um banco de dados (tabelas, vises, procedures, etc.) que no fazem parte do
esquema do usurio.

Como ocorre com os privilgios de sistema, para conceder privilgios sobre objetos de
banco de dados utiliza-se o comando GRANT e para revog-los utiliza-se o comando
REVOKE.

Os privilgios de objetos podem ser concedidos a todos os usurios do banco de dados


atravs do grupo especial PUBLIC.

Pode-se tambm conceder privilgios de objetos a determinado usurio e permitir que ele,
por sua vez, tambm conceda-os para outros. Exemplo:

GRANT SELECT ON NOME_TABELA TO FULANO WITH GRANT OPTION;

Diferente do que acontece quando se concede permisses de sistema, se os privilgios de


objetos do usurio forem revogados, sero tambm revogados os privilgios de todos os
usurios da cadeia, isto , que receberam seus privilgios atravs deste usurio (FULANO
no exemplo acima).

2014 - Prof. Marcos Alexandruk

Privilgios de objetos
Privilgios de tabela

Os privilgios de tabelas podem ser concedidos para operaes de DDL (Data


Definition Language) e de DML (Data Manipulation Language):

Operaes de DDL: adicionar, modificar ou descartar colunas das tabelas


ou ainda criar ndices nas tabelas.

Operaes de DML: SELECT, INSERT, UPDATE e DELETE. possvel


restringir os privilgios a determinadas colunas das tabelas.

GRANT UPDATE (ID, NOME) ON FULANO.FUNCIONARIO TO SCOTT;

Revogar o privilgio concedido anteriormente:

REVOKE UPDATE ON FULANO.FUNCIONARIO FROM SCOTT;

2014 - Prof. Marcos Alexandruk

Privilgios de objetos
Consultando privilgios de tabela

O dicionrio de dados apresenta algumas vises que podem ser


consultadas para obter-se os privilgios de objetos concedidos aos
usurios do banco.

Consultar os privilgios de tabela concedidos diretamente ao usurio


SCOTT:

SELECT * FROM DBA_TAB_PRIVS WHERE GRANTEE = 'SCOTT';

2014 - Prof. Marcos Alexandruk

Privilgios de objetos
Vises de dicionrio de dados de privilgios de objetos
VISO

DESCRIO

DBA_TAB_PRIVS

Privilgios de tabelas concedidos a usurios e papis.

DBA_COL_PRIVS

Privilgios de colunas concedidos ao usurio na sesso atual


diretamente ou atravs de um papel.

SESSION_PRIVS

Privilgios de sistema concedidos ao usurio na sesso atual


diretamente ou atravs de um papel.

ROLE_TAB_PRIVS

Privilgios de tabelas concedidos ao usurio na sesso atual atravs de


um papel.

2014 - Prof. Marcos Alexandruk

Gerenciamento de papis (roles)


Roles

Papis ou roles so grupos identificados de privilgios que podem


incluir tanto privilgios de sistema como privilgios de objetos.

A utilizao de papis facilita a administrao dos privilgios


concedidos aos usurios do banco de dados. Pois, em vez de conceder
diversos privilgios individualmente aos usurios, possvel concedlos a um papel e este, por sua vez, ser concedido aos usurios.

Caso seja necessria alguma alterao, esta poder ser feita no role e,
consequentemente, os privilgios de todos os usurios que utilizam
este papel sero automaticamente alterados. Isto pode reduzir
significativamente os nmeros de comandos GRANT e REVOKE
necessrios para a administrao dos privilgios dos usurios do
banco de dados.
2014 - Prof. Marcos Alexandruk

Gerenciamento de papis (roles)


Papis predefinidos

A tabela a seguir apresenta alguns dos principais papis predefinidos:


PAPEL

PRIVILGIO

CONNECT

ALTER SESSION, CREATE CLUSTER, CREATE DATABASE LINK,


CREATE SEQUENCE, CREATE SESSION, CREATE SYNONYM,
CREATE TABLE, CREATE VIEW.

RESOURCE

CREATE CLUSTER, CREATE INDEXTYPE, CREATE OPERATOR,


CREATE PROCEDURE, CREATE SEQUENCE, CREATE TABLE,
CREATE TRIGGER, CREATE TYPE.

DBA

Todos os privilgios de sistema WITH ADMIN OPTION.

SELECT_CATALOG_ROLE

Privilgio SELECT nos objetos do dicionrio de dados.

EXP_FULL_DATABASE

Privilgio para exportar todos os objetos do banco de dados.

IMP_FULL_DATABASE

Privilgio para importar todos os objetos do banco de dados.

2014 - Prof. Marcos Alexandruk

Gerenciamento de papis (roles)


Criando um role

Criar um novo role:

CREATE ROLE TESTE;

necessrio possuir o privilgio de sistema CREATE ROLE que


geralmente concedido aos administradores do banco de dados.

Descartando um papel

Descartar um role:

DROP ROLE TESTE;


2014 - Prof. Marcos Alexandruk

Gerenciamento de papis (roles)


Concedendo privilgios a um role

Privilgios so concedidos a um role atravs do comando GRANT.

Conceder um privilgio de objeto na tabela FUNCIONARIOS ao role


GERENTE_RH. (O role GERENTE_RH deve ser criado antes.)

GRANT SELECT ON FUNCIONARIOS TO GERENTE_RH;

Conceder um privilgio de sistema ao role GERENTE_RH.

GRANT CREATE TRIGGER TO GERENTE_RH;

2014 - Prof. Marcos Alexandruk

Gerenciamento de papis (roles)


Atribuindo um role a um usurio

Atribuir o role GERENTE_RH ao usurio FULANO:

GRANT GERENTE_RH TO FULANO;

Caso sejam concedidos outros privilgios ao role GERENTE_RH estes


sero imediatamente atribudos ao usurio FULANO.

2014 - Prof. Marcos Alexandruk

Gerenciamento de papis (roles)


Atribuindo um role a outro role

Roles podem tambm ser atribudos a outros roles permitindo assim que o DBA tenha a sua

disposio uma hierarquia de papis.

No exemplo a seguir, em vez de atribuir-se privilgios de objetos individuais ao role


TODOS_DEPT, preferiu-se atribuir os roles MM_DEPT, RH_DEPT, FI_DEPT e SD_DEPT ao
role TODOS_DEPT.

GRANT MM_DEPT, RH_DEPT, FI_DEPT, SD_DEPT TO TODOS_DEPT;

Portanto, o role TODOS_DEPT poderia, por exemplo, ser atribudo ao presidente da empresa

e este teria acesso s tabelas de todos os departamentos.

GRANT TODOS_DEPT TO USUARIO_PRESIDENTE;

O role TODOS_DEPT poderia ter tambm outros privilgios de sistema ou de objetos que

no seriam atribudos aos outros (MM_DEPT, RH_DEPT, FI_DEPT e SD_DEPT).


2014 - Prof. Marcos Alexandruk

Gerenciamento de papis (roles)


Revogando um role

Revoga-se um role atravs do comando REVOKE:

REVOKE GERENTE_RH FROM FULANO;

Caso outros roles atribudos ao usurio FULANO tiverem alguns dos

privilgios concedidos ao role GERENTE_RH, o usurio (FULANO)


continuar a ret-los at que sejam explicitamente revogados.

2014 - Prof. Marcos Alexandruk

Gerenciamento de papis (roles)


Ativando um role protegido por senha

O DBA poder atribuir uma senha a um role, aumentando com esta medida a segurana.

CREATE ROLE TESTE_SENHA IDENTIFIED BY ABC123;

O papel TESTE_SENHA deve ser concedido normalmente atravs do comando GRANT.

GRANT TESTE_SENHA TO FULANO;

Quando o usurio FULANO conectar-se ao banco de dados dever fornecer o nome do


papel e a sua respectiva senha para que possa "receber" os privilgios.

SET ROLE TESTE_SENHA IDENTIFIED BY ABC123;


2014 - Prof. Marcos Alexandruk

Gerenciamento de papis (roles)


Vises de dicionrio de dados referentes aos papis
VISO

DESCRIO

DBA_ROLES

Apresenta todos os papis e se eles requerem senha.

DBA_ROLE_PRIVS

Apresenta os papis concedidos a outros usurios ou a outros papis.

ROLE_ROLE_PRIVS

Apresenta os papis concedidos a outros papis.

ROLE_SYS_PRIVS

Apresenta os privilgios de sistema que foram concedidos aos papis.

ROLE_TAB_PRIVS

Apresenta os privilgios de tabelas e colunas de tabelas que foram


concedidos aos papis.

SESSION_ROLES

Apresenta os papis que esto em efeito na sesso atual.

2014 - Prof. Marcos Alexandruk

Exportao e Importao

O Oracle apresenta trs mtodos para fazer backup de um banco de

dados:

exportao/importao (backup lgico);


backup off-line (backup fsico);
backup on-line (backup fsico).
Uma boa estratgia de backup para um banco de dados envolve tanto
backups lgicos como fsicos.

2014 - Prof. Marcos Alexandruk

Exportao e Importao

O backup lgico envolve a leitura de um conjunto de registros do banco


de dados e a gravao destes registros em um determinado arquivo.
A leitura dos registros ocorre independentemente das suas localizaes
fsicas.

Apesar de utilitrios mais antigos como o Import e o Export ainda


estarem disponveis, recomendvel a utilizao do utilitrio Data Pump
Export (disponvel a partir da verso 10g) para realizao do backup e do
Data Pump Import para recuperao dos mesmos.
O Data Pump Export consulta o banco de dados, inclusive o dicionrio
de dados, e grava os registros em um arquivo padro XML chamado
"arquivo dump de exportao". Podem ser exportados para este arquivo
todo o banco de dados, determinados usurios, tablespaces ou tabelas.
2014 - Prof. Marcos Alexandruk

Exportao e Importao

Aps a exportao dos dados atravs do Data Pump Export, estes

podero ser recuperados atravs do utilitrio Data Pump Import.


possvel recuperar todos os dados ou apenas uma parte dos dados
exportados.
Caso seja importado todo o arquivo gerado a partir de uma exportao
completa, ento todos os objetos do banco (tablespaces, arquivos de
dados e usurios) sero criados durante a importao.
Por outro lado, caso sejam importados apenas uma parte dos dados, os
tablespaces, arquivos de dados e usurios, devero ser devidamente

configurados antes da importao.


2014 - Prof. Marcos Alexandruk

Exportao e Importao

Utilizando o DATA PUMP EXPORT


O exemplo que ser apresentado tem como base a exportao dos
objetos do usurio FULANO que dever ser criado e dever receber
alguns privilgios, conforme segue:

CREATE USER FULANO IDENTIFIED BY ABC123;


GRANT CONNECT, RESOURCE TO FULANO;

2014 - Prof. Marcos Alexandruk

Exportao e Importao

Utilizando o DATA PUMP EXPORT


O prximo passo apresenta a criao de uma tabela simples
denominada TAB1 para teste. A tabela ser criada pelo usurio
FULANO:

CREATE TABLE TAB1 (


COL1 NUMBER(2));

A seguir sero inseridas duas linhas na tabela TAB1:

INSERT INTO TAB1 VALUES (1);


INSERT INTO TAB1 VALUES (2);

COMMIT;
2014 - Prof. Marcos Alexandruk

Exportao e Importao

Utilizando o DATA PUMP EXPORT


Cria-se a seguir um diretrio para armazenar os arquivos de dados e de
controle que o Data Pump ir criar (na exportao) e ler (na importao).
necessrio que o usurio que emitir o comando tenha o privilgio de
sistema CREATE ANY DIRECTORY.
Portanto, o DBA criar um diretrio denominado TESTE e conceder os
privilgios de leitura e escrita ao usurio FULANO:

CREATE DIRECTORY TESTE AS 'C:\TESTE';


GRANT READ, WRITE ON DIRECTORY TESTE TO FULANO;

2014 - Prof. Marcos Alexandruk

Exportao e Importao

Utilizando o DATA PUMP EXPORT


O utilitrio EXPDP serve como interface com o Data Dump.
A tabela seguir apresenta alguns dos principais parmetros utilizados
com o EXPDP.
PARMETRO

DESCRIO

DIRECTORY

Especifica o diretrio de destino para os arquivos de log e para os


arquivos de dump.

DUMPFILE

Especifica os nomes dos arquivos de dump.

CONTENT

Especifica o que ser exportado: DATA_ONLY, METADATA_ONLY ou ALL.

2014 - Prof. Marcos Alexandruk

Exportao e Importao

Utilizando o DATA PUMP EXPORT


Para utilizar o EXPDP deve-se digitar EXPDP em uma janela de prompt de
comando do sistema operacional.
O exemplo abaixo apresenta a utilizao do EXPDP pelo usurio FULANO.

Foi passado o valor METADATA_ONLY ao parmetro CONTENT. Portanto, apenas


a estrutura da tabela TAB1 (nico objeto do usurio FULANO) ser exportada.
Para exportao da estrutura e dos dados da tabela o valor deste parmetro
(CONTENT) deveria ser alterado para ALL.
C:\> EXPDP DIRECTORY=TESTE DUMPFILE=DATA.DMP CONTENT=METADATA_ONLY

Ser solicitado o nome do usurio e sua senha. Aps fornec-los o EXPDP

passar criao do arquivo de log e do arquivo dump no diretrio TESTE.


2014 - Prof. Marcos Alexandruk

Exportao e Importao

Utilizando o DATA PUMP EXPORT


A etapa seguinte envolver a importao dos dados com base na
exportao que acaba de ocorrer.
Porm, antes de executar o utilitrio de importao, ser eliminada a
tabela TAB1 criada no exemplo apresentado.

DROP TABLE TAB1;

2014 - Prof. Marcos Alexandruk

Exportao e Importao

Utilizando o DATA PUMP IMPORT


Deve-se utilizar o Data Pump Import para importao de arquivos
exportados via Data Pump Export.
Para importao dos objetos do usurio FULANO, deve-se utilizar o
comando:

C:\> IMPDP DIRECTORY=TESTE DUMPFILE=DATA.DMP CONTENT=METADATA_ONLY

Voltando ao SQL Plus ao utilizar o comando DESCRIBE (ou sua


abreviao DESC) pode-se observar que o objeto anteriormente
excludo (a tabela TAB1) foi recuperado.

DESC TAB1

2014 - Prof. Marcos Alexandruk

Exportao e Importao
No exemplo apresentado apenas a estrutura da tabela foi exportada.
Para que os dados tambm fossem exportados seria necessrio passar o valor
ALL ao parmetro CONTENT.
Caso a tabela a ser importada j existir e a opo CONTENT receber o valor
METADATA_ONLY esta ser simplesmente ignorada.
Porm, se a tabela j existir e a opo CONTENT receber o valor DATA_ONLY os
"novos" dados sero acrescentados aos dados j existentes na tabela. Para
alterar isso, deve-se utilizar a opo TABLE_EXISTS_ACTION atribuindo-lhe um
dos seguintes valores:

SKIP: Conserva apenas os valores que j se encontravam na tabela, nada


ser importado;

APPEND: Acrescenta os "novos" valores aos que j se encontram na tabela;

TRUNCATE: Corta (elimina) os valores da tabela e insere os dados contidos


no arquivo de importao;

REPLACE: Substitui toda a tabela (estrutura e dados). Para esta opo deve
ser especificado o valor ALL ao parmetro CONTENT na exportao e na
importao.
2014 - Prof. Marcos Alexandruk

Exportao e Importao

2014 - Prof. Marcos Alexandruk

Exportao e Importao

2014 - Prof. Marcos Alexandruk

Exportao e Importao

2014 - Prof. Marcos Alexandruk

Exportao e Importao

2014 - Prof. Marcos Alexandruk

Exportao e Importao

Utilizando as opes EXCLUDE, INCLUDE e QUERY


possvel excluir ou incluir conjuntos de tabelas ou ainda apenas
determinadas linhas de tabelas em uma exportao utilizando as
opes EXCLUDE, INCLUDE e QUERY.
O exemplo a seguir exclui a tabela TAB1 do arquivo de exportao
(todas as outras tabelas seriam exportadas, exceto TAB1):
C:\>EXPDP DIRECTORY=TESTE DUMPFILE=DATA.DMP
EXCLUDE=TABLE:\"=\'TAB1\'\"

CONTENT=ALL

Caso no seja especificado nenhum nome, todos os objetos do tipo


especificado no sero includos na exportao.
O exemplo a seguir no importar nenhum ndice:
C:\>EXPDP DIRECTORY=TESTE
EXCLUDE=INDEX

DUMPFILE=DATA.DMP

2014 - Prof. Marcos Alexandruk

CONTENT=ALL

Exportao e Importao

Utilizando as opes EXCLUDE, INCLUDE e QUERY


O prximo exemplo inclui apenas a TAB1 no arquivo de exportao
(todas as outras tabelas no seriam exportadas):
C:\>EXPDP DIRECTORY=TESTE DUMPFILE=DATA.DMP CONTENT=ALL
INCLUDE=TABLE:\"=\'TAB1\'\"
Pode-se exportar apenas determinadas linhas de uma tabela. O
exemplo a seguir apresenta a exportao das linhas cujos valores da
COL1 (da tabela TAB1) sejam menores que 5:
C:\>EXPDP DIRECTORY=TESTE DUMPFILE=DATA.DMP CONTENT=ALL
INCLUDE=TABLE:\"=\'TAB1\'\" QUERY=TAB1:\"WHERE COL1 < 5\"
Para importao dos dados utiliza-se, por exemplo, o seguinte
comando:
C:\>IMPDP DIRECTORY=TESTE DUMPFILE=DATA.DMP CONTENT=ALL
TABLE_EXISTS_ACTION=APPEND
2014 - Prof. Marcos Alexandruk

Backups Fsicos

Backups Fsicos
Podem ser realizados com utilitrios dos principais sistemas operacionais:
Windows (copy ou winzip32);
Unix (cp ou tar).
O Oracle disponibiliza dois tipos de backups fsicos:

Off-line (tambm chamado fechado ou a frio);


On-line (tambm chamado aberto ou a quente).

2014 - Prof. Marcos Alexandruk

Backups Fsicos
Opes disponveis
Integral ou parcial
Integral: conjunto inteiro de arquivos de dados e de controle;
Parcial: apenas alguns arquivos de dados e/ou de controle.
Total ou incremental
Total: autocontido, utilizvel por si prprio;
Incremental: apenas os blocos que foram alterados desde o
ltimo backup. (Realizados somente atravs do RMAN)

2014 - Prof. Marcos Alexandruk

Backups off-line

Requisitos
O banco dever ser "desligado" atravs de um destes tipos de shutdown:
shutdown normal;
shutdown immediate;
shutdown transactional.
No se deve realizar um backup off-line aps um shutdown abort para

que no ocorram inconsistncias nos dados.


Caso seja necessrio fazer um shutdown abort, para realizao de um
backup off-line consistente, deve-se reiniciar o banco de dados e realizar
novamente um shutdown com uma das trs opes acima.
2014 - Prof. Marcos Alexandruk

Backups off-line

Deve-se fazer backup de todos os arquivos dos seguintes grupos:


Arquivos de dados;
Arquivos de controle;
Arquivos de logs de redo on-line;
Arquivo init.ora e spfile (se utilizado).

2014 - Prof. Marcos Alexandruk

Backups off-line

1. Criar o diretrio para arquivar os backups (Exemplo: C:\BACKUP)


2. Criar (no SQL*Plus) o shell script para executar o backup:
SPOOL E:\BACKUP\BACKUP_OFFLINE.BAT
SELECT 'COPY '||NAME||' E:\BACKUP' FROM V$DATAFILE
UNION ALL

SELECT 'COPY '||NAME||' E:\BACKUP' FROM V$CONTROLFILE


UNION ALL
SELECT 'COPY '||MEMBER||' E:\BACKUP' FROM V$LOGFILE;
CREATE PFILE='E:\BACKUP\SPFILE_BACKUP.ORA' FROM SPFILE;
SPOOL OFF
Para criar o script preciso fazer login como sysdba (ou equivalente).
2014 - Prof. Marcos Alexandruk

Backups off-line
Arquivo gerado
SQL>
2
3
4
5

SELECT 'COPY '||NAME||' C:\BACKUP' FROM V$DATAFILE


UNION ALL
SELECT 'COPY '||NAME||' C:\BACKUP' FROM V$CONTROLFILE
UNION ALL
SELECT 'COPY '||MEMBER||' C:\BACKUP' FROM V$LOGFILE;

'COPY'||NAME||'C:\BACKUP'
-------------------------------------------------------------------COPY C:\APP\MASTER\ORADATA\ORCL\SYSTEM01.DBF C:\BACKUP
COPY C:\APP\MASTER\ORADATA\ORCL\SYSAUX01.DBF C:\BACKUP
COPY C:\APP\MASTER\ORADATA\ORCL\UNDOTBS01.DBF C:\BACKUP
COPY C:\APP\MASTER\ORADATA\ORCL\USERS01.DBF C:\BACKUP
COPY C:\APP\MASTER\ORADATA\ORCL\EXAMPLE01.DBF C:\BACKUP
COPY C:\APP\MASTER\ORADATA\ORCL\CONTROL01.CTL C:\BACKUP
COPY C:\APP\MASTER\FLASH_RECOVERY_AREA\ORCL\CONTROL02.CTL C:\BACKUP
COPY C:\APP\MASTER\ORADATA\ORCL\REDO03.LOG C:\BACKUP
COPY C:\APP\MASTER\ORADATA\ORCL\REDO02.LOG C:\BACKUP
COPY C:\APP\MASTER\ORADATA\ORCL\REDO01.LOG C:\BACKUP
10 linhas selecionadas.
SQL> CREATE PFILE='C:\BACKUP\SPFILE_BACKUP.ORA' FROM SPFILE;
Arquivo criado.
SQL> SPOOL OFF
2014 - Prof. Marcos Alexandruk

Backups off-line

Para executar o backup preciso realizar o shutdown no banco de

dados (como sysdba):

SHUTDOWN IMMEDIATE

O backup realizado atravs do sistema operacional com a 'execuo'


do script anteriormente criado (BACKUP_OFFLINE.BAT).

2014 - Prof. Marcos Alexandruk

Backups on-line

Backups on-line (tambm denominados abertos ou "a quente") so


aqueles realizados enquanto o banco de dados Oracle encontra-se
aberto.
No possvel fazer um backup on-line no modo NOARCHIVELOG.
Neste modo todas as transaes encerradas com COMMIT, mas que
ainda no foram gravadas nos arquivos de dados ficam disponveis
nos arquivos de redo log online.
Por outro lado, quando o modo ARCHIVELOG est ativado, o processo
em background ARCn (Archiver Process) faz uma cpia de cada
arquivo de redo log antes de sobrescrev-lo.

2014 - Prof. Marcos Alexandruk

Backups on-line
VERIFICANDO O ARCHIVELOG MODE
Consulta a seguir para verificar se o archivelog mode est ativado:

SELECT LOG_MODE FROM V$DATABASE;

Se o archivelog mode estiver desativado a consulta retornar o


seguinte:

LOG_MODE
-----------NOARCHIVELOG

2014 - Prof. Marcos Alexandruk

Backups on-line
ATIVANDO O ARCHIVELOG MODE
Antes de ativar o archivelog mode preciso parar o banco:

SHUTDOWN IMMEDIATE
A seguir, deve-se subir o banco para o estado mount:

STARTUP MOUNT;
Para alterar archivelog mode deve-se utilizar o seguinte comando:

ALTER DATABASE ARCHIVELOG;


O prximo passo ser abrir o banco de dados:

ALTER DATABASE OPEN;


2014 - Prof. Marcos Alexandruk

Backups on-line
BACKUP DOS ARQUIVOS DE CONTROLE
Alternativa 1:
ALTER DATABASE BACKUP CONTROLFILE TO '/BACKUP/CONTROL1.BKP';
Realiza uma cpia binria do arquivo de controle, isto , uma cpia idntica
byte-a-byte do arquivo de controle.

Alternativa 2:
ALTER DATABASE BACKUP CONTROLFILE TO TRACE AS '/BACKUP/CONTROL2.BKP';
Cria um novo arquivo de controle, um arquivo ASCII, que poder ser executado
enquanto a instncia estiver no modo NOMOUNT para criar um novo arquivo de
controle com contedo idntico ao original.

2014 - Prof. Marcos Alexandruk

Backups on-line
BACKUP DOS ARQUIVOS DE UM TABLESPACE
Determinar quais so os arquivos associados ao tablespace (ex. SYSAUX):
SELECT FILE_NAME FROM DBA_DATA_FILES
WHERE TABLESPACE_NAME = 'SYSAUX;
Colocar o tablespace (ex. SYSAUX) no modo backup:
ALTER TABLESPACE SYSAUX BEGIN BACKUP;
Fazer o backup do(s) arquivo(s) de dados utilizando um utilitrio do sistema
operacional. (No caso do Microsoft Windows pode-se utilizar o utilitrio copy.)
C:\>COPY C:\APP\MASTER\ORADATA\ORCL\SYSAUX01.DBF C:\BACKUP\SYSAUX01.DBF;

Encerrar o modo backup no tablespace SYSAUX:

ALTER TABLESPACE SYSAUX END BACKUP;


2014 - Prof. Marcos Alexandruk

RMAN (Recovery Manager)

O RMAN muito mais do que um simples utilitrio que pode ser


utilizado do lado cliente para realizar backups.
Apresenta muitos recursos que no esto disponveis em
outros mtodos de backup.

2014 - Prof. Marcos Alexandruk

RMAN (Recovery Manager)


EFETUANDO BACKUP COM O RMAN
Para efetuar um backup com o RAMAN deve-se primeiramente verificar
se o ARCHIVELOG est habilitado:

SELECT LOG_MODE FROM V$DATABASE;


Se o archivelog mode estiver desativado a consulta retornar o
seguinte:

LOG_MODE
-----------NOARCHIVELOG

2014 - Prof. Marcos Alexandruk

RMAN (Recovery Manager)


ATIVANDO O ARCHIVELOG MODE
Antes de ativar o archivelog mode preciso parar o banco:

SHUTDOWN IMMEDIATE
A seguir, deve-se subir o banco para o estado mount:

STARTUP MOUNT;
Para alterar archivelog mode deve-se utilizar o seguinte comando:

ALTER DATABASE ARCHIVELOG;


O prximo passo ser abrir o banco de dados:

ALTER DATABASE OPEN;


2014 - Prof. Marcos Alexandruk

RMAN (Recovery Manager)


INICIANDO O RMAN
A seguir, deve-se entrar no prompt (do sistema operacional) e digitar o
seguinte comando:

RMAN TARGET SYS/SENHA_DO_SYS


O comando anterior produzir a seguinte sada:
Conectado ao banco de dados de destino: ORCL (DBID=1178846893)

2014 - Prof. Marcos Alexandruk

RMAN (Recovery Manager)


BACKUP DOS ARQUIVOS DE DADOS
Criar o diretrio para backup dos arquivos.
Configurar o diretrio para backup:
RMAN> CONFIGURE CHANNEL DEVICE TYPE DISK FORMAT 'C:\BACKUP\%U';

Realizar o backup dos arquivos de dados:


RMAN> BACKUP DATABASE PLUS ARCHIVELOG;

2014 - Prof. Marcos Alexandruk

RMAN (Recovery Manager)


BACKUP DO ARQUIVO DE CONTROLE
Configurar o diretrio para backup do arquivo de controle:
RMAN> CONFIGURE CONTROLFILE AUTOBACKUP FORMAT FOR DEVICE TYPE
DISK TO 'C:\BACKUP\%F';

Realizar o backup do arquivo de controle:


RMAN> BACKUP CURRENT CONTROLFILE;
possvel consultar os backups realizados atravs da seguinte consulta:
RMAN> LIST BACKUP;

2014 - Prof. Marcos Alexandruk

RMAN (Recovery Manager)


RESTORE DO ARQUIVO DE CONTROLE
Entrar no utilitrio RMAN:
RMAN TARGET SYS/SENHA_DO_SYS;

Iniciar o banco de dados no modo NOMOUNT:


RMAN> STARTUP FORCE NOMOUNT;
Fazer o restore do arquivo:
RMAN> RESTORE CONTROLFILE FROM 'C:\BACKUP\NOME_ARQ_CONTROLE';
Nota: O arquivo de controle foi feito por ltimo, portanto, provavelmente ele deve
ser o ltimo arquivo do conjunto de backup.
2014 - Prof. Marcos Alexandruk

RMAN (Recovery Manager)


RESTORE DOS ARQUIVOS DE DADOS
Montar a base com o arquivo de controle recuperado:

RMAN> STARTUP FORCE MOUNT;


Restaurar os arquivos de dados:
RMAN> RESTORE DATABASE;
Recuperar (recover) a base de dados:
RMAN> RECOVER DATABASE;
Abrir o banco de dados (com o parmetro RESETLOGS que cria novos
arquivos de REDOLOG):
RMAN> ALTER DATABASE OPEN RESETLOGS;
2014 - Prof. Marcos Alexandruk

RMAN (Recovery Manager)


APAGAR ARQUIVOS DE BACKUP

Excluir os arquivos de backup:


RMAN> DELETE BACKUP;

2014 - Prof. Marcos Alexandruk

Sistemas Gerenciadores de Banco de Dados


Aula 7
Prof. Marcos Alexandruk

Aula 7
Desenvolvendo um pequeno banco de dados

SQL Server
SQL Command
Management Studio

2014 - Prof. Marcos Alexandruk

Microsoft SQL Server

SQL COMMAND

2014 - Prof. Marcos Alexandruk

SQL Command
ACESSAR O SQL COMMAND
Executar o Prompt de Comando como Administrador
Chamar o utilitrio SQLCMD:

SQLCMD S .\SQLEXPRESS
ou
SQLCMD S SAMSUNG-5\SQLEXPRESS
SAMSUNG-5 = Servidor
SQLEXPRESS = Instncia
2014 - Prof. Marcos Alexandruk

SQL Command
CRIAR LOGIN E USER
Criar um novo LOGIN:
CREATE LOGIN FULANO WITH PASSWORD = 'ABC123'
GO
Criar um novo USER:
CREATE USER FULANO FOR LOGIN FULANO
GO

2014 - Prof. Marcos Alexandruk

SQL Command
CONSULTAR LOGINS E USERS
Apresentar os nomes de LOGINS:
SELECT NAME
FROM SYS.SERVER_PRINCIPALS
GO
Apresentar os nomes de USERS:
SELECT NAME
FROM SYS.DATABASE_PRINCIPALS
GO

2014 - Prof. Marcos Alexandruk

SQL Command
LOGIN
Login como usurio FULANO:
SQLCMD S .\SQLEXPRESS U FULANO P ABC123

2014 - Prof. Marcos Alexandruk

SQL Command
CRIAR UM DATABASE
Criar um novo database denominado DBTESTE:
CREATE DATABASE DBTESTE
GO

Criar o database como usurio Administrador ou outro com

privilgio CREATE DATABASE.

2014 - Prof. Marcos Alexandruk

SQL Command
SELECIONAR UM DATABASE
Selecionar o database DBTESTE:
USE DBTESTE
GO

Criar uma tabela no database DBTESTE:

CREATE TABLE TESTE (


CODIGO INT)
GO

2014 - Prof. Marcos Alexandruk

SQL Command
SP_GRANTDBACCESS
Utilizar a Stored Procedure SP_GRANTDBACCESS para permitir
que o usurio FULANO acesse o database DBTESTE:
USE DBTESTE
GO
SP_GRANTDBACCESS FULANO
GO

2014 - Prof. Marcos Alexandruk

SQL Command
SP_REVOKEDBACCESS
Utilizar a Stored Procedure SP_REVOKEDBACCESS para retirar
do usurio FULANO o privilgio de acessar o database DBTESTE:

USE DBTESTE
GO
SP_REVOKEDBACCESS FULANO
GO
EXIT

2014 - Prof. Marcos Alexandruk

SQL Command
PRIVILGIO GRANT SELECT
O usurio FULANO, aps receber a permisso para acessar o
database DBTESTE, consegue acess-lo. Porm, no consegue
consultar os dados dos objetos do database DBTESTE, pois no
recebeu permisso para isso.
Conceder privilgio para que o usurio FULANO possa realizar
consultas no database DBTESTE:

USE DBTESTE
GO
GRANT SELECT TO FULANO
GO
2014 - Prof. Marcos Alexandruk

SQL Command
PRIVILGIO CREATE DATABASE
Conceder privilgio para usurio FULANO criar databases:
GRANT CREATE DATABASE TO FULANO
GO

Retirar privilgio do usurio FULANO criar databases:

REVOKE CREATE DATABASE FROM FULANO


GO

2014 - Prof. Marcos Alexandruk

SQL Command
SCHEMA
Criar um schema para o usurio FULANO:

CREATE SCHEMA FULANO AUTHORIZATION FULANO


GO
EXIT
Usurio FULANO criando uma tabela no schema acima:
CREATE TABLE FULANO.TESTE
CODIGO INT)
GO
A tabela ser criada no database master, caso no seja
especificado outro database.
2014 - Prof. Marcos Alexandruk

SQL Server

SQL COMMAND
PL/T-SQL

2014 - Prof. Marcos Alexandruk

SQL Command
STORED PROCEDURE
Criar uma Stored Procedure simples denominada SP_TESTE:
CREATE PROCEDURE SP_TESTE AS
DECLARE @MENSAGEM CHAR(20)
SET @MENSAGEM = 'TESTE PROCEDURE'
PRINT @MENSAGEM
GO
Testar a Stored Procedure SP_TESTE:
EXEC SP_TESTE
GO
Eliminar a Stored Procedure SP_TESTE:
DROP PROCEDURE SP_TESTE
GO
2014 - Prof. Marcos Alexandruk

SQL Command
STORED PROCEDURE

Criar procedure SP_SOMA que recebe dois nmeros e apresenta o valor


da soma:

SQLCMD -S .\SQLEXPRESS
CREATE PROCEDURE SP_SOMA @A FLOAT, @B FLOAT AS
DECLARE @X FLOAT
SET @X = @A + @B
PRINT @X
GO

Executar a procedure SP_SOMA:

EXEC SP_SOMA 3.5, 5.4


GO
2014 - Prof. Marcos Alexandruk

SQL Command
FUNCTION

Criar a funo SF_SOMA que recebe dois nmeros e retorna a soma:

CREATE FUNCTION SF_SOMA (@A FLOAT, @B FLOAT)


RETURNS FLOAT AS
BEGIN
DECLARE @X FLOAT
SET @X = @A + @B
RETURN (@X)
END
GO

2014 - Prof. Marcos Alexandruk

SQL Command
FUNCTION
Chamar a funo SF_SOMA:

SELECT DBO.SF_SOMA (3, 7)


GO
Eliminar a funo SF_SOMA:
DROP FUNCTION DBO.SF_SOMA
GO

dbo = Database Owner (schema default para membros do role sysadmin)

2014 - Prof. Marcos Alexandruk

SQL Command
TRIGGER

Criar um trigger, TR_AUDITORIA, para disparar quando ocorrerem


atualizaes na tabela PRODUTO:

CREATE TABLE PRODUTO (


CODPROD INT,
NOMEPROD VARCHAR(20))
GO
CREATE TABLE AUDITORIA (
USUARIO VARCHAR(20),
DATA DATETIME,
CODPROD INT)
GO
2014 - Prof. Marcos Alexandruk

SQL Command
TRIGGER

Criar um trigger, TR_AUDITORIA, para disparar quando ocorrerem


atualizaes na tabela PRODUTO:

CREATE TRIGGER TR_AUDITORIA ON PRODUTO FOR UPDATE AS


INSERT INTO AUDITORIA SELECT
SUSER_SNAME(), GETDATE(), CODPROD
FROM INSERTED
GO

2014 - Prof. Marcos Alexandruk

SQL Command
TRIGGER
Testar o trigger TR_AUDITORIA:
INSERT INTO PRODUTO VALUES (1, 'PRODUTO 1')
GO

UPDATE PRODUTO SET NOMEPROD = 'PRODUTO 2'


WHERE CODPROD = 1
GO
SELECT * FROM PRODUTO
GO
SELECT * FROM AUDITORIA
GO
2014 - Prof. Marcos Alexandruk

SQL Server

MANAGEMENT STUDIO

2014 - Prof. Marcos Alexandruk

Management Studio

2014 - Prof. Marcos Alexandruk

Management Studio

2014 - Prof. Marcos Alexandruk

Management Studio

2014 - Prof. Marcos Alexandruk

Management Studio

2014 - Prof. Marcos Alexandruk

Management Studio

2014 - Prof. Marcos Alexandruk

Management Studio

2014 - Prof. Marcos Alexandruk

Management Studio

2014 - Prof. Marcos Alexandruk

Management Studio

2014 - Prof. Marcos Alexandruk

Management Studio

2014 - Prof. Marcos Alexandruk

Management Studio

2014 - Prof. Marcos Alexandruk

Management Studio

2014 - Prof. Marcos Alexandruk

Aula 7: Use AVA

Recentemente a Microsoft lanou o SQL Server 2014. Faa uma


pesquisa e comente com seus colegas quais foram as principais
novidades desta nova verso.

2014 - Prof. Marcos Alexandruk