DO BÁSICO AO AVANÇADO PARA MANIPULAÇÃO E OTIMIZAÇÃO DE DADOS. Fábio Roberto Octaviano

Documentos relacionados
DO BÁSICO AO AVANÇADO PARA MANIPULAÇÃO E OTIMIZAÇÃO DE DADOS. Fábio Roberto Octaviano

Uniao Educacional e Tecnologica Impacta- Uni Impacta

DO BÁSICO AO AVANÇADO PARA MANIPULAÇÃO E OTIMIZAÇÃO DE DADOS. Fábio Roberto Octaviano

DO BÁSICO AO AVANÇADO PARA MANIPULAÇÃO E OTIMIZAÇÃO DE DADOS. Fábio Roberto Octaviano

DO BÁSICO AO AVANÇADO PARA MANIPULAÇÃO E OTIMIZAÇÃO DE DADOS. Fábio Roberto Octaviano

DO BÁSICO AO AVANÇADO PARA MANIPULAÇÃO E OTIMIZAÇÃO DE DADOS. Fábio Roberto Octaviano

BD II (SI 587) Segurança em Banco de Dados. Josenildo Silva.

DO BÁSICO AO AVANÇADO PARA MANIPULAÇÃO E OTIMIZAÇÃO DE DADOS. Fábio Roberto Octaviano

Uniao Educacional e Tecnologica Impacta- Uni Impacta

Administração de Banco de Dados

DO BÁSICO AO AVANÇADO PARA MANIPULAÇÃO E OTIMIZAÇÃO DE DADOS. Fábio Roberto Octaviano

Instituto Federal de Educação, Ciência e Tecnologia de São Paulo

DO BÁSICO AO AVANÇADO PARA MANIPULAÇÃO E OTIMIZAÇÃO DE DADOS. Fábio Roberto Octaviano

Banco de Dados Oracle 10g: Fundamentos de SQL II

DO BÁSICO AO AVANÇADO PARA MANIPULAÇÃO E OTIMIZAÇÃO DE DADOS. Fábio Roberto Octaviano

PSI Linguagem de Definição de dados. Módulo 15

DO BÁSICO AO AVANÇADO PARA MANIPULAÇÃO E OTIMIZAÇÃO DE DADOS. Fábio Roberto Octaviano

saída durante o runtime Usando Functions de uma Única Linha para Personalizar Relatórios Mostrar as diferenças entre as functions SQL de uma única

ORACLE 11 G INTRODUÇÃO AO ORACLE, SQL,PL/SQL

BANCO DE DADOS WEB AULA 9. concessão e revogação de privilégios. professor Luciano Roberto Rocha.

DO BÁSICO AO AVANÇADO PARA MANIPULAÇÃO E OTIMIZAÇÃO DE DADOS. Fábio Roberto Octaviano

DO BÁSICO AO AVANÇADO PARA MANIPULAÇÃO E OTIMIZAÇÃO DE DADOS. Fábio Roberto Octaviano

DO BÁSICO AO AVANÇADO PARA MANIPULAÇÃO E OTIMIZAÇÃO DE DADOS. Fábio Roberto Octaviano

BANCO DE DADOS FACSUL 2017 TECNOLOGIA DE REDE DE COMPUTADORES

BANCO DE DADOS. info 3º ano. Prof. Diemesleno Souza Carvalho

Banco de Dados. Professora: Luciana Faria

Usando Subconsultas para Solucionar Consultas

Marcelo Henrique dos Santos

BANCO DE DADOS II Prof. Ricardo Rodrigues Barcelar

AULA 8. Ambientes Visuais 8.1. OBJETIVO DA AULA SQL (Structured Query Language)

Segurança de Acesso a Banco de Dados no MS SQL Server

EXEMPLO DE FLASHBACK VERSIONS QUERY E FLASHBACK TRANSACTION QUERY


DO BÁSICO AO AVANÇADO PARA MANIPULAÇÃO E OTIMIZAÇÃO DE DADOS. Fábio Roberto Octaviano

SQL Structured Query Language. SQL Linguagem de Definição de Dados. SQL Structured Query Language. SQL Structured Query Language

DICIONÁRIO DE DADOS. Contém detalhes dos objetos pertencentes ao usuário.

Tabelas. Banco de Dados I MySQL

Introdução à Engenharia da Computação. Banco de Dados Professor Machado

Oracle Database 11g: Introdução à Linguagem SQL Novo

Administração de Usuários e Privilégios no Banco de Dados

TLBD II Instruções SQL

Introdução à Banco de Dados. Nathalia Sautchuk Patrício

GBC043 Sistemas de Banco de Dados

PostgreSQL. André Luiz Fortunato da Silva Analista de Sistemas CIRP / USP alf@cirp.usp.br

ORACLE 11 G INTRODUÇÃO AO ORACLE, SQL,PL/SQL. Carga horária: 32 Horas

MySQL: Controle de Acesso

Marcos Alexandruk Marcos Alexandruk

DO BÁSICO AO AVANÇADO PARA MANIPULAÇÃO E OTIMIZAÇÃO DE DADOS. Fábio Roberto Octaviano

Banco de Dados. Prof. Antonio

Linguagem SQL Restrições, Triggers e Views

SQL Structured Query Language. SQL Structured Query Language. SQL Structured Query Language. Composição do SQL. Composição do SQL.

Lista 02 Sistema de Banco de Dados CAP 241 Computação Aplicada I

A U L A 3 S U B G R U P O S D M L E D Q L : I N S E R I N D O E P E S Q U I S A N D O D A D O S E M U M A T A B E L A

SQL. Prof. Roger Cristhian Gomes

Rápida revisão do Modelo Relacional

SQL Linguagem de Definição de Dados. Banco de Dados Profa. Dra. Cristina Dutra de Aguiar Ciferri

SQL CREATE DATABASE. MySQL, SQL Server, Access, Oracle, Sybase, DB2, e outras base de dados utilizam o SQL.

SQL (Tópicos) Structured Query Language

DDL DML DCL DTL Tipos Numéricos: INT FLOAT DOUBLE Tipos String: CHAR VARCHAR BINARY BLOB TEXT Tipos Data e Hora: DATE TIME TIMESTAMP YEAR

Bases de Dados. DDL Data Definition Language

Comandos de Manipulação

Programando em SQL. Triggers, Stored Procedures e funções. Profa. Késsia Marchi

Quando se seleciona os modos OS ou XML, arquivos são criados com os registros de auditoria, eles se localizam parâmetro audit_file_dest.

Banco de Dados. -Aprendendo conceitos -Usando o SQL Conf para: -Conectar no banco de dados -Criar, alterar, excluir e consultar estruturas de tabelas

<Course name> <Lesson number>- #

Revisão Banco de Dados

BANCO DE DADOS: SQL. Edson Anibal de Macedo Reis Batista. 27 de janeiro de 2010

Introdução em Banco de Dados

Preparação. Linguagem de Manipulação de Dados (DML) Estudo Dirigido 10/12/2013

Faculdade Pitágoras 16/08/2011. Curso Superior de Tecnologia: Banco de Dados Sistemas para Internet

Faculdade Pitágoras. Curso Superior de Tecnologia: Banco de Dados. Disciplina: Banco de Dados Prof.: Fernando Hadad Zaidan SQL

Controle de transações em SQL

A U L A 1 0 C R I A N D O V I E W S V I E W S ( V I S Õ E S )

INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E TECNOLOGIA DO RIO GRANDE DO NORTE INTRODUÇÃO A SQL

Conceitos básicos. Funcionario SIAPE Nome Lotacao Cargo Salario Admissao

SQL PostgreSQL. I Criação de Tabelas. Disciplina: SCC0241 Bases de Dados Professor: Eduardo Hruschka Estagiária PAE: Dayse de Almeida

Utilizando o Postgres - comandos SQL para a manipulação de dados

um mecanismo, chamado de perfil, para controlar o limite desses recursos que o usuário pode

SQL Linguagem de Definição de Dados. Laboratório de Bases de Dados Profa. Dra. Cristina Dutra de Aguiar Ciferri

Laboratório de Banco de Dados. Prof. Luiz Vivacqua.

Banco de Dados I. Aula 12 - Prof. Bruno Moreno 04/10/2011

Banco de Dados Oracle 10g: Introdução à Linguagem SQL

Preparação criar tabela. Linguagem de Manipulação de Dados (DML) Estudo Dirigido 12/11/2018

Visões ... Esquema Externo n. Esquema Externo 1. Esquema Lógico. Usuários finais/aplicações

Sumário: 1) Trabalhando com Constraints: - NOT NULL - UNIQUE - PRIMARY KEY - FOREIGN KEY - DEFAULT

SQL comando SELECT. SELECT [DISTINCT] <campos> FROM <tabela> [condição] [ ; ] Paulo Damico - MDK Informática Ltda.

non-transferable license to use this Student Guide

Oracle Database 10g: Fundamentos de SQL e PL/SQL

Técni n c i as e L i L n i g n u g age g ns n p ara r Ba B nc n o d e D ados I ACCESS

SEGURANÇA E ADMINISTRAÇÃO DE BANCOS DE DADOS

MySQL. Introdução Prof. Erinaldo Nascimento

A criação de utilizadores no MySQL pode passar pela utilização de dois comandos: - Create user; - Grant;

S U B G R U P O S D M L E D Q L : A L T E R A N D O E A P A G A N D O D A D O S E M U M A T A B E L A

Laboratório de Banco de Dados II Aula 04. Prof. Érick de Souza Carvalho

PCS3413. Engenharia de So-ware e Banco de Dados. Aula 18. Escola Politécnica da Universidade de São Paulo

Lidando com Armazenamento de Dados

Restrições ao Domínio Integridade Referencial Asserções Triggers Segurança e Autorizações

1. Sua primeira tarefa é determinar a estrutura da tabela DEPARTMENTS e seu conteúdo.

Transcrição:

DO BÁSICO AO AVANÇADO PARA MANIPULAÇÃO E OTIMIZAÇÃO DE DADOS Fábio Roberto Octaviano

Controlando Acesso dos Usuários

Após o término do Capítulo: Diferenciar privilégios de sistema e privilégios de objetos. Conceder privilégios em tabelas. Verificar privilégios no Dicionário de Dados. Dar privilégios em roles. Distinguir entre privilégios e roles.

Database administrator Username and password Privileges Users

Segurança em Banco de Dados: Segurança do Sistema Segurança de Dados Privilégios de Sistema: conseguindo acesso ao banco de dados. Privilégios de Objetos: manipulando o conteúdo dos objetos do banco de dados. Esquemas: Coleção de objetos, tais como tabelas, visões e sequences.

Mais de 100 privilégios de sistema estão disponíveis no Oracle. O DBA (administrador do banco) tem privilégios de sistema de alto nível para tarefas como: Criar novos usuários. Remover usuários. Remover tabelas. Fazer backup de tabelas.

O DBA cria usuários por meio da instrução CREATE USER. CREATE USER user IDENTIFIED BY password; CREATE USER USER1 IDENTIFIED BY USER1; User created.

Após criar um usuário, o DBA pode conceder privilégios de sistema específicos a ele. GRANT privilege [, privilege...] TO user [, user role, PUBLIC...]; Um desenvolvedor, por exemplo, pode ter os seguintes privilégios de sistema: CREATE SESSION CREATE TABLE CREATE SEQUENCE CREATE VIEW CREATE PROCEDURE

O DBA pode conceder privilégios de sistema específicos a ele. GRANT create session, create table, create sequence, create view TO scott; Grant succeeded.

Uma role é um grupo de privilégios relacionados que pode ser concedido ao usuário. Usuários Gerente Privilégios Alocando privilégios sem usar roles Alocando privilégios utilizando roles

Criação de uma role: CREATE ROLE manager; Role created. Conceder privilégios a uma role: GRANT create table, create view TO manager; Grant succeeded. Conceder acesso a role para os usuários : GRANT manager TO BELL, KOCHHAR; Grant succeeded.

Normalmente, o DBA é o responsável por criar uma conta de usuário e inicializar o password. O usuário pode alterar seu password utilizando a instrução ALTER USER. ALTER USER HR IDENTIFIED BY employ; User altered.

Object Privilege Table View Sequence Procedure ALTER DELETE EXECUTE INDEX INSERT REFERENCES SELECT UPDATE

Tipos de privilégios de objetos variam conforme o objeto. O dono do objeto tem todos os privilégios sobre ele. O dono do objeto pode conceder privilégios específicos aos usuários desejados. GRANT object_priv [(columns)] ON object TO {user role PUBLIC} [WITH GRANT OPTION];

Conceda privilégio de consulta na tabela EMPLOYEES: GRANT select ON employees TO sue, rich; Grant succeeded. Conceda privilégio de atualizar colunas específicas a usuários e roles: GRANT update (department_name, location_id) ON departments TO scott, manager; Grant succeeded.

Conceda ao usuário autoridade de conceder seus privilégios sobre o objeto: GRANT select, insert ON departments TO scott WITH GRANT OPTION; Grant succeeded. Permita que todos os usuários do sistema consulte dados da tabela DEPARTMENTS do esquema Alice: GRANT select ON alice.departments TO PUBLIC; Grant succeeded.

Visão do DD ROLE_SYS_PRIVS ROLE_TAB_PRIVS USER_ROLE_PRIVS Descrição Privilégos de sistema dados a roles Privilégos de tabela dados a roles Roles acessíveis ao usuário USER_TAB_PRIVS_MADE Privilégios de objeto dados sobre os objetos do usuário USER_TAB_PRIVS_RECD Privilégios de objeto dados ao usuário USER_COL_PRIVS_MADE Privilégios de objeto dados sobre as colunas dos objetos do usuário USER_COL_PRIVS_RECD Privilégios de objeto dados sobre as colunas dos objetos para o usuário USER_SYS_PRIVS Privilégos de sistema dados ao usuário

Para revogar privilégios concedidos a outros usuários, utilize a instrução REVOKE: Privilégios concedidos a outros usuários por meio da cláusula WITH GRANT OPTION são também revogados: REVOKE {privilege [, privilege...] ALL} ON object FROM {user[, user...] role PUBLIC} [CASCADE CONSTRAINTS];

Como usuário Alice, revogue os privilégios SELECT e INSERT da tabela DEPARTMENTS concedidos ao usuário Scott: REVOKE select, insert ON departments FROM scott; Revoke succeeded.

Resumo dos principais comandos para controle de usuários e privilégios: Comando CREATE USER GRANT CREATE ROLE ALTER USER REVOKE Ação Cria um usuário (normalmente por DBA) Concede privilégios sobre objetos a outros usuários Cria uma coleção de privilégios (normalmente executado por um DBA) Modifica o password de um usuário Revoga privilégios sobre objetos de usuário

Objetivos: Conceder privilégios de tabela a usuários. Modificar tabelas de outro usuário por meio de privilégios recebidos. Criação de um sinônimo. Consultando as visões do Dicionário de Dados relacionadas a privilégios.

1. Qual privilégio um usuário deve receber para conseguir fazer login no servidor Oracle? Ele é um privilégio de sistema ou de objeto? 2. Qual privilégio um usuário deve receber para conseguir criar tabelas? 3. Se você criar uma tabela, quem pode conceder privilégios sobre sua tabela a outros usuários?

4. Você é o DBA e está criando muitos usuários que requerem os mesmos privilégios de sistema. O que você deveria utilizar para tornar seu trabalho mais fácil? 5. Qual comando você deve utilizar para alterar seu próprio password?

6. Conceda a outro usuário acesso à sua tabela DEPARTMENTS e peça a ele que conceda acesso à tabela DEPARTMENTS dele. Consulte os dados de ambas as tabelas DEPARTMENTS. GRANT SELECT ON departments TO oraxx

7. Adicione uma nova linha para SUA tabela DEPARTMENTS. Time 1 deve adicionar a linha Educação como departamento 500. Time 2 deve adicionar Finanças como departamento 510. Consulte a tabela do seu colega. INSERT INTO departments VALUES (500, 'Educacao'); COMMIT; -- OU, para o outro time: INSERT INTO departments VALUES (510, Financas'); COMMIT;

8. Crie um sinônimo para a tabela DEPARTMENTS do outro usuário. Depois consulte a tabela DEPARTMENTS do seu colega pelo sinônimo. --Time1 cria um sinônimo chamado Time2. CREATE SYNONYM team2 FOR <oraxx>.departments; --Time2 cria um sinônimo chamado Time1. CREATE SYNONYM team1 FOR <oraxx>. DEPARTMENTS;

9. Consulte as visões do Dicionário de Dados USER_TABLES e ALL_TABLES. Compare e veja as diferenças. Depois exclua da exibição de ALL_TABLES as tabelas que você é dono. SELECT table_name FROM user_tables; SELECT table_name, owner FROM all_tables WHERE owner <>'Oraxx ;

10. Revogue o privilégio SELECT do outro time. Depois remova a linha inserida na tabela DEPARTMENTS no exercício 7 e confirme as mudanças. REVOKE SELECT ON departments FROM <Oraxx>; DELETE FROM departments WHERE department_id = 500; COMMIT; -- OU, para o outro time: DELETE FROM departments WHERE department_id = 510; COMMIT;

Consultas Hierárquicas

Após o término do Capítulo: Interpretar o conceito de uma consulta hierárquica. Criar um relatório estruturado em árvore. Formatar dados hierárquicos. Excluir ramificações de uma estrutura de árvore.

MANAGER_ID = 100 (Child) EMPLOYEE_ID = 100 (Parent) King Kochhar De Haan Mourgos Zlotkey Hartstein Whalen Higgins Hunold Rajs Davies Matos Vargas Gietz Ernst Lorentz Abel Taylor Grant Fay

SELECT [LEVEL], column, expr... FROM table [WHERE condition(s)] [START WITH condition(s)] [CONNECT BY PRIOR condition(s)] ; WHERE condition: expr comparison_operator expr

Ponto de Início Especifica a condição que deve ser satisfeita. Aceita qualquer condição válida. START WITH column1 = value Usando a tabela EMPLOYEES, comece com o empregado cujo sobrenome seja Kochhar....START WITH last_name = 'Kochhar'

CONNECT BY PRIOR column1 = column2 Percorra a árvore de cima para baixo (top down), usando a tabela EMPLOYEES.... CONNECT BY PRIOR employee_id = manager_id Direções Top down Bottom up Column1 = Parent Key Column2 = Child Key Column1 = Child Key Column2 = Parent Key

SELECT last_name ' reports to ' PRIOR last_name "Walk Top Down" FROM employees START WITH last_name = 'King' CONNECT BY PRIOR employee_id = manager_id ;

SELECT employee_id, last_name, job_id, manager_id FROM employees START WITH employee_id = 101 CONNECT BY PRIOR manager_id = employee_id ;

Level 1 Raiz/Pai King Kochhar De Haan Mourgos Zlotkey Hartstein Whalen Higgins Hunold Rajs Davies Matos Vargas Level 3 Pai/Filho/Folha Fay Gietz Ernst Lorentz Abel Taylor Grant Level 4 Folha

É possível formatar relatórios hierárquicos utilizando LEVEL e LPAD. Exemplo: Para mostrar os níveis de gerenciamento da empresa, começando pelo mais alto nível e identando cada um dos níveis: COLUMN org_chart FORMAT A12 SELECT LPAD(last_name, LENGTH(last_name)+(LEVEL*2)-2,'_') AS org_chart FROM employees START WITH first_name='steven' AND last_name='king' CONNECT BY PRIOR employee_id=manager_id

Para eliminar um nó da árvore, utilize a cláusula WHERE na consulta hierárquica. WHERE last_name!= 'Higgins' Kochhar Whalen Higgins Gietz

Para eliminar uma ramificação da árvore, utilize a cláusula CONNECT BY adicionando um AND na consulta hierárquica. CONNECT BY PRIOR employee_id = manager_id AND last_name!= 'Higgins' Kochhar Whalen Higgins Gietz

Objetivos: Distinguir consultas hierárquicas de consultas não-hierárquicas. Percorrer uma árvore. Formatar relatórios com LEVEL e LPAD. Removendo itens da estratura da árvore. Ordenando a saída.

1. Gere um relatório mostrando um modelo organizacional do departamento que o empregado Mourgos trabalha. Mostre os sobrenomes, salários e Ids dos departamentos. SELECT last_name, salary, department_id FROM employees START WITH last_name = 'Mourgos' CONNECT BY PRIOR employee_id = manager_id;

2. Gere um relatório mostrando a hierarquia de gerentes do empregado Lorentz. Mostre seu gerente imediato em primeiro lugar. SELECT last_name FROM employees WHERE last_name!= 'Lorentz' START WITH last_name = 'Lorentz' CONNECT BY PRIOR manager_id = employee_id

3. Gere um relatório identado mostrando a hierarquia de gerenciamento começando pelo empregado de sobrenome Kochhar. Mostre o sobrenome, ID do gerente e o ID do departamento. Coloque os aliases como no ex.

3. Solução: COLUMN name FORMAT A20 SELECT LPAD(last_name, LENGTH(last_name)+(LEVEL*2)- 2,'_') name,manager_id mgr, department_id deptno FROM employees START WITH last_name = 'Kochhar' CONNECT BY PRIOR employee_id = manager_id / COLUMN name CLEAR

4. Gere um relatório mostrando a hierarquia gerencial. Inicie com a pessoa de maior nível hierárquico. Exclua todas as pessoas com cargo IT_PROG e exclua também o empregado De Haan e os empregados que reportam a ele. SELECT last_name,employee_id, manager_id FROM employees WHERE job_id!= 'IT_PROG' START WITH manager_id IS NULL CONNECT BY PRIOR employee_id = manager_id AND last_name!= 'De Haan