terça-feira, 24 de novembro de 2015

Fragmentando tablespace

 Fragmentação de tablespaces


 Passo 1 - connectar como dba
 a connect system/uninove
 b alter user sys identified by oracle
 c connect sys as sysdba senha:oracle


  passo2 - criando uma tablespa

 a select file_name from dba_data_files;
 b create tablespace tbs_teste

CREATE TABLESPACE tbs_teste
DATAFILE
'C:\APP\ALUNO\ORADATA\ORCL\arq_texte_01.dbf' SIZE 50 M reuse
extent management local
segment space management auto;

passo 3 criando um usuario

create user teste identified by teste
default tablespace tbs_teste
quota unlimited on tbs_teste;

passo 4 grant connect, resource to teste

passo 5 connectar com usuario teste
a criar uma tabela criente na tablespace criada
b criar uma sequence
c fazer uma carga de 100.000
d select count (*) from cliente


create table cliente(
id_cliente number(6),
nome_cliente varchar2(20),
cpf_cliente varchar2(20))
tablespace tbs_teste;


 create sequence
 sequencia_cliente
 start with 40;


 DECLARE
      contador INTEGER;
      CPF_CLI NUMBER(11):=35419972816;
     BEGIN
       contador := 1;
       while contador <= 100000 loop
               insert into cliente values (sequencia_cliente.nextval, 'marcio_marcelo', CPF_CLI);
              contador := contador + 1;
        CPF_CLI := CPF_CLI +1;
       end loop;
       commit;
    end;
  /

select count (*) from cliente;

passo 6 analisar a tabela

analyze table cliente compute statistics;

passo 7  consultar blocos livres e blocos utilizados

select a.blocks, b.blocks hwm, b.empty_blocks
from
user_segments a, user_tables b
where a. segment_name=b.table_name and
b.table_name='CLIENTE';

passo 8 deletando as linhas da tabela cliente

delete from cliente;
commit;

passo 9 analisar a tabela

analyze table cliente compute statistics;

passo 10 consulta dos blocos

select a.blocks, b.blocks hwm, b.empty_blocks
from
user_segments a, user_tables b
where a. segment_name=b.table_name and
b.table_name='CLIENTE';

passo 11 connectar administrador e efetuar
consulta dos extents utilizados
pelo segmento cliente

select extent_id,blocks,block_id from
dba_extents
where upper (segment_name)='CLIENTE' and upper(owner)='TESTE';

passo 12 criar e popular titulo
a connect teste/teste
b create table titulo (id number);
c insert into titulo select level from dual connect by level <=20000;

passo 13 consulta blocos livres e blocos usados

select a.blocks, b.blocks hwm, b.empty_blocks
from
user_segments a, user_tables b
where a. segment_name=b.table_name and
b.table_name='TITULO';

passo 14 consulta dos extents

select extent_id,blocks,block_id from
dba_extents
where upper (segment_name)='TITULO' and upper(owner)='TESTE';

passo 15 eliminar a fragmentação
connect teste/teste
a - alter table cliente move;
b - alter table cliente enable row movement;
c - alter table cliente shrink space;

passo 16  (no system) consulta dos extents do segmento cliente

select extent_id,blocks,block_id from
dba_extents
where upper (segment_name)='CLIENTE' and upper(owner)='TESTE';


quinta-feira, 5 de novembro de 2015

Consultar privilégios de usuário no Oracle

Estas são consultas úteis para identificar quais são os privilégios de um determinado usuário em base Oracle:

1) Privilégios de sistema: select privilege from dba_sys_privs where grantee = '<usuario>';

2) Privilégios em tabelas: select privilege from dba_tab_privs where grantee = '<usuario>';

3) Roles concedidas ao usuário: select granted_role from dba_role_privs where grantee = '<usuario>';

Para identificar quais são as ROLES e privilégios do usuário que você está conectado, existem essas duas consultas, que são mais simples:

1) Roles do meu usuário: select * from session_roles;

2) Privilégios do meu usuário: select * from session_privs;

quinta-feira, 1 de outubro de 2015

ALTERAR TABLESPACE

alter user MARCIO default tablespace BECODOSPOETAS;

Criando uma tablespace, usuário e uma tabela

Ante de começar você sabe o que é uma Tablespaces?
Um banco de dados é dividido em unidades lógicas de armazenamento, denominadas tablespaces, que podem ser usadas para agrupar estruturas lógicas relacionadas. Cada banco de dados está dividido logicamente em um ou mais tablespaces. Um ou mais arquivos de
dados são criados explicitamente para cada tablespace, de modo a armazenar fisicamente os dados de todas as estruturas lógicas de um tablespace.
Enfim, vamos ao que interessa, para criarmos uma tablespace, devemos logar com o usuário sys:
[oracle@oracle ~]$ sqlplus / as sysdba
SQL*Plus: Release 10.2.0.1.0 – Production on Sat Apr 30 22:01:08 2011
Copyright (c) 1982, 2005, Oracle.  All rights reserved.
Connected to:
Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 – Production
With the Partitioning, OLAP and Data Mining options
Agora podemos rodar o comando create tablespace, para criar a tablespace:
CREATE TABLESPACE nome_tablespace LOGGING DATAFILE ‘/u01/app/oracle/oradata/TSH1/nome_tablespace.dbf’ SIZE 100m AUTOEXTEND ON NEXT 100m EXTENT MANAGEMENT LOCAL;
Ótimo, criamos uma tablespace e agora criamos um usuário no Oracle e vincular este usuário ao tablespace chamada nome_tablespace.
CREATE USER usuario IDENTIFIED BY senha DEFAULT TABLESPACE nome_tablespace QUOTA UNLIMITED ON  nome_tablespace;
Se tentarmos logar com este usuário, vai aparecer o seguinte erro:
[oracle@oracle ~]$ sqlplus usuario/senha
SQL*Plus: Release 10.2.0.1.0 – Production on Sat Apr 30 22:15:06 2011
Copyright (c) 1982, 2005, Oracle.  All rights reserved.
ERROR:
ORA-01045: user USUARIO lacks CREATE SESSION privilege; logon denied
Humm… esta faltando o grant de session, para que possamos logar com o usuario, vamos dar um grant para o usuário logar e abrir uma sessão:
GRANT CREATE SESSION TO usuario;
Consegui logar e agora vamos tentar criar uma tabela:
[oracle@oracle ~]$ sqlplus usuario/senha;
SQL*Plus: Release 10.2.0.1.0 – Production on Sat Apr 30 22:24:16 2011
Copyright (c) 1982, 2005, Oracle.  All rights reserved.
Connected to:
Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 – Production
With the Partitioning, OLAP and Data Mining options
SQL> CREATE TABLE TABELA (
  2  nome VARCHAR(100),
  3  sobre_nome VARCHAR(100),
  4  Telefone CHAR(11),
  5  Endereco VARCHAR(30),
  6  Idade    NUMBER
  7  );
CREATE TABLE TABELA (
*
ERROR at line 1:
ORA-01031: insufficient privileges
Caramba ainda falta mais grant !!! este oracle é chatão neh ??? NÃO e NÃO, ele é SEGURO!!!! Vamos ao grant para a tabela, após tentamos criar novamente a tabela.
GRANT CREATE TABLE TO usuario;
CREATE TABLE TABELA (
nome VARCHAR(100),
sobre_nome VARCHAR(100),
Telefone CHAR(11),
Endereco VARCHAR(30),
Idade    NUMBER
);
table TABELA created.

Pronto, criamos a tabela, mais não vamos conseguir criar sequence, procedure, views e etc, para isso podemos colocar na mesma linha o grant, façamos desta maneira:
GRANT create session, alter session, create table, create procedure, create view, create materialized view, create trigger, create sequence, create any directory, create type, create synonym TO william;
Acho que é isso, espero que gostem.
Um abraço

FONTE http://aprenderoracle.com/2011/04/30/criando-uma-tablespace-um-usuario-e-uma-tabela/

exercicio resolvido

-script sql que construa as demandas solicitadas:

-criação de um usuario owner (schema / esquema) que será proprietário dos objetos dos objetos (tabelas,etc) da atividade.(videolar

-criar 1 usuario que terá um perfil de digitador c/ o seguinte nome ''dig01'' senha " clobo"

-criar 1 usuario que tera um perfil de gerente
c/ o seguinte nome "ger01"  senha "curitiba"

-o perfil digitador pode executar select, insert , update, delete via role nas tabelas de videolar.

-o perfil gerente pode somente select






resposta

create user videolar identified by lar;

 create table videolar.clientes(
 cpf number (10)primary key,
 Nom_cliente varchar2(30) not null,
 End_cliente varchar2(30) not null,
 Cidade varchar2(30) not null,
 Estado varchar2(30),
 Bairro varchar2(30),
 Telefone number (15)
 );

 create table videolar.genero(
 cod_genero number (10)primary key,
 nom_genero varchar2(30) not null
 );

 create table videolar.itens_locados(
 cod_locacao number (5),
 cod_filme number (10),
 valor_unitario number (10,2) not null
 );

alter table itens_locados add constraint item_PK primary key (cod_locacao,cod_filme);
alter table itens_locados add constraint locacao1_fk foreign key (cod_locacao) references locacao (cod_locacao);
alter table itens_locados add constraint fil_fk foreign key (cod_filme)  references filmes (cod_filme);

create table videolar.genero(
cod_genero number (10)primary key,
nom_genero varchar2(30) not null
);

create table videolar.locacao(
cod_locacao number (5)primary key,
cpf number (10),
data_locacao date not null,
data_devolucao date not null,
valor_total number (10,2)
);

alter table locacao add constraint locacao_fk foreign key (cpf) references clientes (cpf);

create table videolar.categoria(
cod_categoria number (5) primary key,
tipo_categoria varchar2(30),
valor_categoria number (10,2) null
);

alter table categoria add constraint ck_categoria check(tipo_categoria in ('OURO','PRATA','BRONZE'));

create table videolar.filmes(
cod_filme number (10)primary key,
cod_categoria number (5),
cod_genero number (5),
tit_filme varchar2(30),
ano_lancamento number (5),
tipo_midia varchar2(3) not null
);

alter table filmes add constraint cat_fk foreign key (cod_categoria) references categoria (cod_categoria);
alter table filmes add constraint gen_fk foreign key (cod_genero)references genero (cod_genero);
alter table filmes add constraint ck_midia check(tipo_midia in ('DVD','VHS'));

create table videolar.itens_locados(
cod_locacao number (5),
cod_filme number (10),
valor_unitario number (10,2) not null
);

alter table itens_locados add constraint item_PK primary key (cod_locacao,cod_filme);
alter table itens_locados add constraint locacao1_fk foreign key (cod_locacao) references locacao (cod_locacao);
alter table itens_locados add constraint fil_fk foreign key (cod_filme) references filmes (cod_filme);


insert into videolar.clientes values(10,'ANTONIO SERAFIN','RUA UVAIAS , 137','SAO PAULO','SP', 'SAUDE', 34528473);
insert into videolar.clientes values(20,'MARIA APARECIDA','RUA ANTONIO PRADO, 245','CAMPINAS','SP', 'SAO JOAQUIM', 87362390);
insert into videolar.clientes values(30,'JOSE AMADEU','RUA ALMIRANTE BARROSO, 512','SAO PAULO','SP', 'VILA FORMOSA', 98371235);
insert into videolar.clientes values(40,'CLAUDIO DA SILVA','RUA DA GLORIA, 9826','SAO PAULO','SP', 'VILA MARIANA', 54543972);
insert into videolar.filmes values(1,3,6,'LAGOA AZUL',1980,'VHS');
insert into videolar.filmes values(2,1,2,'HOME-ARANHA 3',2007,'DVD');
insert into videolar.filmes values(3,2,3,'PEQUENOS ESPIOES',2005,'DVD');
insert into videolar.filmes values(4,2,3,'SHREK',2005,'DVD');
insert into videolar.filmes values(5,3,1,'TITANIC',2002,'VHS');
insert into videolar.filmes values(6,3,6,'VIDAS PASSADAS',1997,'VHS');
insert into videolar.genero values (1,'DRAMA');
insert into videolar.genero values (2,'AVENTURA');
insert into videolar.genero values (3,'INFANTIL');
insert into videolar.genero value  (5,'COMEDIA');

COMMIT;

create role digitador;
create role gerente;
 

grant select,insert,update,delete on videolar.clientes to digitador;
grant select,insert,update,delete on videolar.genero to digitador;
grant select,insert,update,delete on videolar.locacao to digitador;
grant select,insert,update,delete on videolar.categoria to digitador;
grant select,insert,update,delete on videolar.filmes to digitador;
grant select,insert,update,delete on videolar.itens_locados to digitador;


grant digitador to dig01;


grant select on videolar.clientes to gerente;
grant select on videolar.genero to gerente;
grant select on videolar.categoria to gerente;
grant select on videolar.filmes to gerente;
grant select on videolar.itens_locados to gerente;
grant select on videolar.locacao to gerente;


grant connect to ger01;

grant connect to dig01;









alterar senha usuario

alter user USUARIO identified by nova_senha;

Dicionário de dados

Podemos dizer que dicionário de dados, é um conjuto de tabelas e views somente leitura, utilizado pelo banco de dados Oracle. Este conjunto é criado e mantido pelo Oracle e contém informações sobre o banco de dados, o dicionário de dados é estruturado em tabelas e views, da mesma forma que outros dados do banco. O dicionário de dados é uma importante ferramenta para todos os usuários, desde usuários finais até os desenvolvedores, inclusive os DBA’s. Para acessar o dicionário de dados, é utilizado as instruções de SQL, como dito acima, é somente leitura, então, só vamos conseguir usar o SELECT.  Todas as tabelas pertecem ao usuário SYS.
Que informações vamos encontrar na nas views de dicionário ?
As informações armazenadas no dicionário de dados incluem os nomes dos usuários do servidor Oracle, os privilegios concedidos aos usuários, os nomes dos objetos do banco de dados, as constraints de tabelas e as informações de auditoria. Há quatro categorias de views de dicionário de dados. Cada categoria possui um prefixo distinto que flete o uso pretendido.

PrefixoSignificado
USER_Contém detalhes dos objetos pertencentes ao usuário.
ALL_Contém detalhes dos objetos para os quais o usuário ganhou direitos de acesso e dos objetos pertencentes ao usuário.
DBA_Contém detalhes dos usuários com privilégios de DBA para acessar qualquer objeto do banco de dados.
V$_Armazena informações sobre o desempenho ou bloqueio do servidor do banco de dados; disponível para os administradores do banco.

Vejamos algumas views mais utilizadas:

Antes de começarmos a ver as tabelas do dicionário, podemos ver como elas se encontram dentro da tabela dicionário.
Select * from dictionary;

USER_TABLES: Exibe a descrição de todas as tabelas do usuário.
Select * from user_tables;

ALL_TABLES: Exibe a descrição de todas as tabelas do usuário e as que foram concedidas a ele, mesmo ele não sendo o owner.
SELECT * FROM all_tables;

USER_OBJECTS: Exibe todos os objetos pertencentes ao seu usuário.
SELECT * FROM user_objects;

ALL_OBJECTS: Exibe todos os objetos que pertencem ao usuário e aos quais tem acesso.
SELECT * FROM all_objects;

USER_TAB_COLUMNS: Você obter informações detalhadas sobre as colunas das suas tabelas. No qual, você é o dono.
SELECT * FROM user_tab_columns;

USER_CONSTRAINTS: Exibe as definições de constrainsts nas tabelas, pertencentes a seu usuário.
SELECT * FROM user_constraints;

USER_CONS_COLUMNS: Exibe as definições de constraints nas colunas das tabelas, pertencentes ao seu usuário
SELECT * FROM user_cons_columns;

USER_VIEWS: Exibe as views pertencentes ao seu usuário.
SELECT * FROM user_views;

USER_SEQUENCES: Exibe informações das sequences criadas, pelo seu usuário.
SELECT * FROM user_sequences;

USER_SYNONYMS: Exibe os synonyms pertencentes ao seu usuário.
SELECT * FROM user_synonyms;

USER_TAB_PRIVS_MADE: Exibe todas as conexões feitas aos objetos pertencentes ao usuário
SELECT * FROM user_tab_privs_made;

USER_COL_PRIVS_MADE: Exibe todas as concessões feitas às colunas de objetos pertencentes ao usuário.
SELECT * FROM user_col_privs_made;
Espero que tenham gostado.
Um abraço.

fonte : http://aprenderoracle.com/2011/05/13/dicionario-de-dados/

terça-feira, 22 de setembro de 2015

shared pool free

select round ((sum (decode(name,'freee memory',bytes,0))/sum(bytes))*100,2)from v$sgastat

sorts in memory

select round((mem.value/(mem.value+dsk.value))*100,2)
from v$sysstat mem, v$sysstat dsk
where mem.name = 'sorts (memory)'
and dsk.name = 'sorts (disk)'

LIBRARY CACHE HIT RATIO

select sum (pinhits)/sum (pins)"hit ratio",
sum(reloads)/sum (pins) "reload percent"
from v$librarycache
where namespace in
('SQL AREA','TABLE/PROCEDURE','BODY','TRIGGER')

dictionary cache hit ratio

select sum (gets-getmisses)*100/sum(gets)
from v$rowcache

Buffer cache hit ratios

select round ((1-(pr.value/(bg.value+cG.value)))*100,2)
from v$sysstat pr,v$sysstat bg,v$sysstat cg
where pr.name='physical reads'
and bg.name='db block gets'
and cg.name='consistent gets';

Alterar tamanho da memória


alter system set shared_pool_size=200m

Pesquisar tamanho da memoria

show parameter shared_pool_size

Avaliação da Memória

select shared_pool_size_for_estimate tamanho_em_mb,
shared_pool_size_factor fator,
estd_lc_time_saved tempo
from v$shared_pool_advice
/

quarta-feira, 9 de setembro de 2015

Exercício ; simulação ' locks '

Passo 1 – Criando um perfil de usuário.



Create profile = Cria um perfil novo;
Perfil_Padrão = Nome do perfil (pode ser qualquer nome);
Limit sessions_per_user 1= Estipula um limite de um acesso por usuário.



Passo 2 – Criando usuário novo



Create user usr1 = Cria um novo usuário chamado usr1;
Profile perfil_padrão = Atribui a esse usuário o perfil criado no script
acima;
Identified by = Atribui uma senha para esse usuário (nesse caso a senha
é oracle);
Quota unlimited on users = O usuário pode usar memoria ilimitada da
table space;
Account unlock = A conta de usuário inicia desbloqueada;


Passo 3 – Criar um segundo usuário:



Identified by = Atribui uma senha para esse usuário (nesse caso a senha
é oracle);
Quota unlimited on users = O usuário pode usar memoria ilimitada da
table space;
Account unlock = A conta de usuário inicia desbloqueada;


Passo 4 – Dar autorização p/ os dois usuários:


Grant = Concede permissão;
Create table = criar tabela
Connect = conectar
Resource = recursos


Passo 5 – Em usr1 conectar, criar uma nova tabela e inserir dados.




Passo 6 – Em usr1 efetivar as transações.



Passo 7 – Dar permissão para o usuário 2 efetivar update na tabela
produto.


Passo 8 – Fazer um update na tabela produto


Passo 9 – Fazer um update na tabela produto.


Obs.: Sistema está em Lock pois o usr1 não commitou a primeira
transação.


Passo 10 – Entrar no usuário administrador e rodar o comando para ver
quem está travando a operação.



Passo 11 – Entrar no usuário administrador e rodar o comando para ver
quem está sendo travado na operação.



Passo 12 – Identificando a sessão que está causando o lock



Passo 13 – Finalizando a sessão que está causando o lock pelo modo kill






quinta-feira, 27 de agosto de 2015

salva o ultimo comando do buffer no diret¢rio

SAVE <caminho><nome_do_arquivo>

 salva o ultimo comando do buffer no diret¢rio

Aplica comandos do sistema operacional

HOST <comando_do_SO>
 aplica comandos do sistema operacional

Abre o ultimo comando do buffer no bloco de notas

ED ;

 abre o ultimo comando do buffer no bloco de notas

Limpar tela

cl scr;

Lista o ultimo comando

L

Lista e executa o ultimo comando

run;

Executa o ultimo comando

/ (barra)


Mostrar usuario logado no banco

select user from dual

Ver todas tabelas

1)Ver todas tabelas  

SELECT * FROM ALL_ALL_TABLES 



2)Caso seja necessário especificar o owner que a tabela pertença: 

SELECT * FROM ALL_ALL_TABLES WHERE OWNER='NOME_OWNER' 

Exemplo: 

SELECT * FROM ALL_ALL_TABLES WHERE OWNER='marcio' 

3)Caso seja necessário ver somente as tabelas de um determinado tablespace: 

SELECT * FROM ALL_ALL_TABLES WHERE TABLESPACE_NAME='NOME_TABLESPACE' 

Exemplo: 

SELECT * FROM ALL_ALL_TABLES WHERE TABLESPACE_NAME='SYS' 

Conceder permissão -usuario

1) DBA

 GRANT DBA TO nome user

Criar Usuario - CREATE USER nome_user IDENTIFIED BY senha

1- Criando usuario
 
 
 CREATE USER marcio identified by aluno;
 
Criamos o usuário MARCIO com a senha ALUNO, esse usuário foi criado de forma direta, ou seja, foi omitida a DEFAULT TABLESPACE e TEMPORARY TABLESPACE, isso faz com que o Oracle assuma o padrão do banco. Nesse caso assume de forma as tablespace SYSTEM e TEMP. Para checar as tablespaces usadas na criação do usuário, pode ser executada o select aplicado na

2- Verificando as teblespaces

SELECT 
  username,
  default_tablespace,
  temporary_tablespace 
FROM  
  dba_users
WHERE
   username = 'MARCIO';
 
3- Criando o usuário passando de forma explicita as tablespace
 
CREATE USER mario2 identified by aluno2
DEFAULT TABLESPACE users
TEMPORARY TABLESPACE temp;

Foi criado o usuário MARCIO2 com a senha ALUNO2, essa usuário foi criado passando as tablespaces de forma explicita, tanto para DEFAULT TABLESPACE como para TEMPORARY TABLESPACE.

4- Verificando as tablespaces do usuário marcio2

SELECT 
  username,
  default_tablespace,
  temporary_tablespace 
FROM  
  dba_users
WHERE
   username = 'MARCIO2';
 



5- Verificando as tablespace dos dois usuários
SELECT 
  username,
  default_tablespace,
  temporary_tablespace 
FROM  
  dba_users
WHERE
   username IN('MARCIO','MARCIO2');

Alterando a senha, bloqueando/desbloqueando e excluindo usuários

.
6- Alterando a senha do usuário

ALTER USER marcio identified by 4321;

7 - Desbloqueando um usuário

ALTER USER marcio identified by 4321 account unlock;
 
o ACCOUNT UNLOCK que tem a função de desbloquear o usuário, nesse caso não é necessário á troca da senha, a menos que seja necessário.

8- Bloqueando um usuário

ALTER USER marcio account lock;
 
o ACCOUNT LOCK que tem a função de bloquear o usuário, nesse caso não o bloqueio não foi feito pelo oracle e sim feita por um outro usuário do banco.
Por padrão o Oracle bloqueia a o usuário sempre que a senha é errada dez vezes, para que se possa acessar novamente o banco com esse usuário é necessário o desbloqueio. Quando, o usuário tem seu acesso bloqueado o Oracle apresenta o erro ORA-28000.



9: Excluindo um usuário
DROP USER marcio;
Na listagem 10 foi usado o comando DROP USER para remover o usuário MARCIO.

Privilégios de Sistema

Como foi mencionado já anteriormente neste artigo, são os privilégios que permitem executar instruções DDL, tais como create session, create sequence, create synonym, create table, create view dentre vários outros.

10: Liberando Privilégios de Sistema

GRANT create session,create table,create view TO marcio;
 
Na listagem 11 estão sendo liberados três privilégios de sistema para o usuário MARCIO, nesse momento esse usuário passa a ter privilégio de criar uma sessão de conexão no banco, e ainda pode criar tabelas e views(visões) no banco Oracle. Sempre que for liberar privilégios temos a opção e usar uma cláusula WITH ADMIN OPTION, isso permite que o usuário possa estender seus privilégios para outros usuários.

11- WITH ADMIN OPTION

GRANT create session,create table,create view TO marcio WITH ADMIN OPTION;

Na listagem 11 estão sendo liberados três privilégios de sistema para o usuário MARCIO, como foi adicionada a cláusula WITH ADMIN OPTION significa que o usuário MARCIO pode estender seus privilégios de sistema para outros usuários.

Privilégios de Objeto

Como foi mencionado já anteriormente neste artigo, são os privilégios que permitem executar instruções DML, tais como select, insert, update, delete dentre vários outros.

12- Liberando Privilégios de Objeto

GRANT select, update ON  HR.employees TO marcio;
 
Na listagem 12 estão sendo liberados privilégios de SELECT e UPDATE na tabela EMPLOYEES que é do esquema HR para o usuário MARCIO. Vale ressaltar que sempre que se está liberando privilégios a objetos de outro usuário deve-se sempre colocar o nome do usuário(esquema) antes do nome do objeto, como foi mostrando no exemplo da lista 12 HR.employees.







13- WITH GRANT OPTION

GRANT select,update ON HR.employees TO marcio WITH GRANT OPTION;
 
Na listagem 13 estão sendo liberados privilégios de SELECT e UPDATE na tabela EMPLOYEES que é do esquema HR para o usuário MARCIO, no final foi adicionada a cláusula WITH GRANT OPTION, significando que o usuário MARCIO pode estender seus privilégios de objetos para outros usuários.

14- Revogando(Removendo) de Sistema

REVOKE create view FROM marcio;
 
Na listagem 14 é apresentada a cláusula REVOKE que é responsável por remover um privilégio de um usuário, seja ela um privilégio de sistema ou objeto. Nesse caso está sendo removido o privilégio CREATE VIEW do usuário MARCIO que é um privilégio de sistema.

15- Revogando(Removendo) de Objetos

REVOKE  insert  ON HR.employees FROM marcio;
 
Na listagem 15 é apresentada a cláusula REVOKE que é responsável por remover um privilégio de um usuário, seja ela um privilégio de sistema ou objeto. Nessa caso está sendo removido o privilégio INSERT do usuário MARCIO que é um privilégio de objeto


Apagar usuário

DROP USER nome_user; (se não tiver objetos)
DROP USER nome_user; CASCADE; (se tiver objetos)

Mostrar tabela detalha tabela

desc nome_tabela;

Mostrar todos usuarios

select username
from dba_users
where username
not in('QS_CB','PERFSTAT','QS_ADM',
'PM','SH','HR','OE',
'ODM_MTR','WKPROXY','ANONYMOUS',
'OWNER','SYS','SYSTEM','SCOTT',
'SYSMAN','XDB','DBSNMP','EXFSYS',
'OLAPSYS','MDSYS','WMSYS','WKSYS',
'DMSYS','ODM','EXFSYS','CTXSYS','LBACSYS',
'ORDPLUGINS','SQLTXPLAIN','OUTLN',
'TSMSYS','XS$NULL','TOAD','STREAM',
'SPATIAL_CSW_ADMIN','SPATIAL_WFS_ADMIN',
'SI_INFORMTN_SCHEMA','QS','QS_CBADM',
'QS_CS','QS_ES','QS_OS','QS_WS','PA_AWR_USER',
'OWBSYS_AUDIT','OWBSYS','ORDSYS','ORDDATA',
'ORACLE_OCM','MGMT_VIEW','MDDATA',
'FLOWS_FILES','FLASHBACK','AWRUSER',
'APPQOSSYS','APEX_PUBLIC_USER',
'APEX_030200','FLOWS_020100');