Introduo
Prof. Marcos Alexandruk
EMENTA
OBJETIVO
BIBLIOGRAFIA BSICA
BIBLIOGRAFIA COMPLEMENTAR
BRYLA, Bob; LONEY, Kevin. Oracle Database 11g
manual do DBA. Porto Alegre: Bookman, 2009.
Conceitos gerais
Conceitos gerais
+
conjunto de programas para acessar e manipular esses dados
Silberschatz p. 4
Conceitos gerais
Conceitos gerais
Conceitos gerais
Conceitos gerais
Silberschatz p. 2
2014 - Prof. Marcos Alexandruk
Aula 1: Exerccios
MODELO DE DADOS
NMERO DE USURIOS
LOCALIZAO
MODELO DE DADOS
MODELO DE DADOS
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.
MODELO DE DADOS
MODELO DE DADOS
desperdcio de espao.
MODELO DE DADOS
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
MODELO DE DADOS
MODELO DE DADOS
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.
MODELO DE DADOS
MODELO DE DADOS
MODELO DE DADOS
MODELO DE DADOS
NMERO DE USURIOS
LOCALIZAO
HETEROGNEOS
HETEROGNEOS
RESUMO
HETEROGNEOS
LOCALIZAO
HETEROGNEOS
MODELOS DE DADOS?
HIERRQUICOS
EM REDE
RELACIONAIS
ORIENTADOS A OBJETOS
HETEROGNEOS
DE USURIOS?
MONOUSURIOS
MULTIUSURIOS
HETEROGNEOS
LOCALIZAO?
CENTRALIZADOS
DISTRIBUDOS
PRINCIPAIS SGBDs
dBase
Lanado em 1984 pela Ashton-Tate (adquirido, em 1991, pela
Borland)
PRINCIPAIS SGBDs
dBase
PRINCIPAIS SGBDs
Paradox
Lanado em 1985 pela Ansa Software (adquirida em 1987 pela
Borland)
PRINCIPAIS SGBDs
Paradox
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)
PRINCIPAIS SGBDs
FoxBase / FoxPro
Lanado em dezembro de 1984 pela Fox Software (mais tarde
adquirida pela Microsoft)
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
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)
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
PRINCIPAIS SGBDs
Informix
Projetado por Roger Sippl no final dos anos 1970
A Informix foi fundada em 1980 e tornou-se pblica em 1986
PRINCIPAIS SGBDs
Sybase
Fundada por Mark Hoffman e Bob Epstein em 1984, em Berkeley,
na Califrnia
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)
PRINCIPAIS SGBDs
SQL Server
Lanado pela Microsoft em 1988
Inicialmente era uma verso especial do Sybase (parceria com a
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
PRINCIPAIS SGBDs
PostgreSQL
Origem: Projeto Postgre, Universidade Berkeley, Califrnia. Equipe
orientada pelo Prof. Michael Stonebraker
Oracle Database
Oracle Database
Oracle Database
Instncia (Instance)
Banco de Dados (Database)
Oracle Database
INSTNCIA
A Instncia composta por:
SGA (System Global Area) - rea Global do Sistema
Oracle Database
Oracle Database
Background Processes
Executam
tarefas
de
E/S
monitoram
outros
processos do servidor
Ajudam a garantir maior paralelismo e integridade dos
Oracle Database
Oracle Database
Estrutura fsica
A estrutura fsica consiste em trs tipos de arquivos:
Data files
Control Files
Redo Log Files
Oracle Database
Estrutura lgica
A estrutura lgica do Oracle inclui:
Tablespaces
Segmentos
Extenses
Blocos de dados
Oracle Database
Database Engine
SSRS (SQL Server Reporting Services)
Database Engine
Principal servio do SQL Server
Permite armazenar, recuperar, processar e proteger os
dados
Fornece acesso controlado
processamento
de
para
integrao
de
dados
em
nvel
http://technet.microsoft.com/en-us/library/bb497064.aspx
2014 - Prof. Marcos Alexandruk
IBM DB2
IBM DB2
Processos
Memria
Armazenamento
IBM DB2
Componente de Processo
Vrios processos so controlados neste componente,
o principal processo o db2sysc, que abre outros
IBM DB2
Componente de Memria
Possui reas de memria em nvel de:
instncia
base de dados
aplicao
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.
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.
MySQL
MySQL
MySQL
Compatibilidade
O MySQL apresenta verses para os seguinte SOs:
Microsoft Windows
FreeBSD
Mac OS
MySQL
Padro SQL
SQL-92
SQL-99
SQL 2003 (parcialmente)
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
Caractersticas
PORTABILIDADE: Desenvolvido em C/C++ torna-se portvel entre
diferentes plataformas e compiladores.
MULTITHREADS:
Aumenta
significativamente
velocidade
de
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
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.
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.
MySQL
Mtodos de armazenamento
MyISAM
Muito rpido
MySQL
Mtodos de armazenamento
InnoDB
Recomendado para bancos de dados grandes e complexos
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
MySQL
Mtodos de armazenamento
ARCHIVE
Dados so gravados em arquivos-texto no formato de tabelas sequenciais
(ordem de gravao)
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
PostgreSQL
PostgreSQL
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.
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.
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
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.
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.
PostgreSQL
Plataformas suportadas pelo PostgreSQL:
Unix
Linux
FreeBSD
Microsoft Windows
MacOS
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');
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
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".
PostgreSQL
Recursos "recentes":
Stored Procedures
As procedures do PostgreSQL podem ser escritas em vrias
linguagens (PL/PgSQL, Perl, Python, Ruby, e outras)
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.
PostgreSQL
Recursos "recentes":
Tablespaces
Tablespace designa uma subdiviso lgica de um banco de
dados utilizada para agrupar estruturas lgicas relacionadas.
do
banco
de
dados.
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
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
Oracle Database
Segurana e autenticao
Oracle Database
Oracle
Criao de usurios
Um usurio de banco de dados somente poder ser criado pelo DBA ou
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).
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;
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;
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;
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;
Oracle
SQL Server
SQL Server
Nome de logon
Cada usurio autorizado a conectar-se ao SQL Server tem um
SQL Server
SQL Server
Server
armazenado
em
SQL Server
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.
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).
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
SQL Server
Funes de servidor
Utilizadas para garantir recursos de administrao de servidor:
SQL Server
Funes de banco de dados
So definidas para CADA banco de dados:
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
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:
IBM DB2
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.)
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.
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
exceto
na
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
IBM DB2
Grupo PUBLIC
Para segurana adicional, recomendvel revogar estes privilgios do
grupo PUBLIC como segue:
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
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
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;
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.
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
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.
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.
PostgreSQL
PostgreSQL
Criando um usurio
Para criar um usurio deve-se utilizar o seguinte comando:
CREATEDB;
2014 - Prof. Marcos Alexandruk
PostgreSQL
Alterando atributos do usurio
Para renomear um usurio deve-se utilizar o seguinte comando:
Aula 6
Oracle
Tablespaces
Tablespaces
Tablespaces
Nomes dos tablespaces
Consultar nomes dos tablespaces:
SELECT TABLESPACE_NAME FROM DBA_TABLESPACES;
TABLESPACE_NAME
-----------------------------SYSTEM
SYSAUX
UNDOTBS1
TEMP
USERS
EXAMPLE
Tablespaces
Tipos de gerenciamento de tablespaces
Tablespaces
Criando um tablespace permanente gerenciado localmente
Tablespaces
Criando um tablespace permanente gerenciado localmente
Tablespaces
Criando tablespaces de UNDO e TEMPORRIOS
Tablespaces
Alterando um tablespace
Incluir mais um arquivo de dados (datafile) em um tablespace:
ALTER TABLESPACE TESTE2
ADD DATAFILE 'E:\DADOS3.DBF' SIZE 10M;
Tablespaces
Eliminando um tablespace
Eliminar um tablespace:
DROP TABLESPACE TESTE1
INCLUDING CONTENTS AND DATAFILES CASCADE CONSTRAINTS;
Datafiles
Datafiles
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.).
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
EXTENT_MAN
---------LOCAL
LOCAL
LOCAL
LOCAL
LOCAL
LOCAL
Blocos
Blocos
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.
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
Gerenciamento de usurios
Criando um usurio
Gerenciamento de usurios
Alterando um usurio
Gerenciamento de usurios
Concedendo privilgios a um usurio
Gerenciamento de usurios
Eliminando um usurio
Gerenciamento de usurios
Apresentando os usurios
Gerenciamento de usurios
Conectando-se como outro usurio
EXERCCIO
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';.
Perfis de usurios
Criando um perfil de usurio
Perfis de usurios
Criando um perfil de usurio
Perfis de usurios
Controle de recursos
Parmetros relacionados aos recursos que podero ser utilizados pelos usurios:
Perfis de usurios
Perfis de usurios
Alterando um perfil de usurio
Alterar o parmetro FAILED_LOGIN_ATTEMPTS:
ALTER PROFILE LIMITE_LOGIN
LIMIT FAILED_LOGIN_ATTEMPTS 5;
Perfis de usurios
Associando um usurio a um perfil
-- Ao criar o usurio:
CREATE USER FULANO IDENTIFIED BY 'ABC123'
PROFILE NOME_PERFIL;
-- Para usurio criado anteriormente:
ALTER USER FULANO PROFILE NOME_PERFIL;
Privilgios de sistema
so
apresentados
na
tabela
SYSTEM_PRIVILEGE_MAP.
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
...
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
AUDIT SYSTEM
CREATE SESSION
ALTER DATABASE
Alterar o estado de um banco de dados. Exemplo: alterar o estado de MOUNT para OPEN.
CREATE TABLESPACE
ALTER TABLESPACE
DROP TABLESPACE
Eliminar tablespaces.
CREATE USER
ALTER USER
DROP USER
Eliminar usurios.
CREATE TABLE
CREATE PROCEDURE
...
...
2014 - Prof. Marcos Alexandruk
Privilgios de sistema
Concedendo privilgios de sistema
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:
Privilgios de sistema
Revogando privilgios de sistema
Privilgios de sistema
Consultando privilgios de sistema
Privilgios de sistema
Vises de dicionrio de dados de privilgios de sistema
VISO
DESCRIO
DBA_SYS_PRIVS
SESSION_PRIVS
ROLE_SYS_PRIVS
Privilgios de objetos
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.
Pode-se tambm conceder privilgios de objetos a determinado usurio e permitir que ele,
por sua vez, tambm conceda-os para outros. Exemplo:
Privilgios de objetos
Privilgios de tabela
Privilgios de objetos
Consultando privilgios de tabela
Privilgios de objetos
Vises de dicionrio de dados de privilgios de objetos
VISO
DESCRIO
DBA_TAB_PRIVS
DBA_COL_PRIVS
SESSION_PRIVS
ROLE_TAB_PRIVS
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
PRIVILGIO
CONNECT
RESOURCE
DBA
SELECT_CATALOG_ROLE
EXP_FULL_DATABASE
IMP_FULL_DATABASE
Descartando um papel
Descartar um role:
Roles podem tambm ser atribudos a outros roles permitindo assim que o DBA tenha a sua
Portanto, o role TODOS_DEPT poderia, por exemplo, ser atribudo ao presidente da empresa
O role TODOS_DEPT poderia ter tambm outros privilgios de sistema ou de objetos que
O DBA poder atribuir uma senha a um role, aumentando com esta medida a segurana.
DESCRIO
DBA_ROLES
DBA_ROLE_PRIVS
ROLE_ROLE_PRIVS
ROLE_SYS_PRIVS
ROLE_TAB_PRIVS
SESSION_ROLES
Exportao e Importao
dados:
Exportao e Importao
Exportao e Importao
Exportao e Importao
Exportao e Importao
COMMIT;
2014 - Prof. Marcos Alexandruk
Exportao e Importao
Exportao e Importao
DESCRIO
DIRECTORY
DUMPFILE
CONTENT
Exportao e Importao
Exportao e Importao
Exportao e Importao
DESC TAB1
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:
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
Exportao e Importao
Exportao e Importao
Exportao e Importao
Exportao e Importao
CONTENT=ALL
DUMPFILE=DATA.DMP
CONTENT=ALL
Exportao e Importao
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:
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)
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
Backups off-line
Backups off-line
Backups off-line
Arquivo gerado
SQL>
2
3
4
5
'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
SHUTDOWN IMMEDIATE
Backups on-line
Backups on-line
VERIFICANDO O ARCHIVELOG MODE
Consulta a seguir para verificar se o archivelog mode est ativado:
LOG_MODE
-----------NOARCHIVELOG
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:
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.
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;
LOG_MODE
-----------NOARCHIVELOG
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:
Aula 7
Desenvolvendo um pequeno banco de dados
SQL Server
SQL Command
Management Studio
SQL COMMAND
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
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
SQL Command
LOGIN
Login como usurio FULANO:
SQLCMD S .\SQLEXPRESS U FULANO P ABC123
SQL Command
CRIAR UM DATABASE
Criar um novo database denominado DBTESTE:
CREATE DATABASE DBTESTE
GO
SQL Command
SELECIONAR UM DATABASE
Selecionar o database DBTESTE:
USE DBTESTE
GO
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
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
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
SQL Command
SCHEMA
Criar um schema para o usurio FULANO:
SQL Server
SQL COMMAND
PL/T-SQL
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
SQLCMD -S .\SQLEXPRESS
CREATE PROCEDURE SP_SOMA @A FLOAT, @B FLOAT AS
DECLARE @X FLOAT
SET @X = @A + @B
PRINT @X
GO
SQL Command
FUNCTION
SQL Command
FUNCTION
Chamar a funo SF_SOMA:
SQL Command
TRIGGER
SQL Command
TRIGGER
SQL Command
TRIGGER
Testar o trigger TR_AUDITORIA:
INSERT INTO PRODUTO VALUES (1, 'PRODUTO 1')
GO
SQL Server
MANAGEMENT STUDIO
Management Studio
Management Studio
Management Studio
Management Studio
Management Studio
Management Studio
Management Studio
Management Studio
Management Studio
Management Studio
Management Studio