




























































Estude fácil! Tem muito documento disponível na Docsity
Ganhe pontos ajudando outros esrudantes ou compre um plano Premium
Prepare-se para as provas
Estude fácil! Tem muito documento disponível na Docsity
Prepare-se para as provas com trabalhos de outros alunos como você, aqui na Docsity
Encontra documentos específicos para os exames da tua universidade
Prepare-se com as videoaulas e exercícios resolvidos criados a partir da grade da sua Universidade
Responda perguntas de provas passadas e avalie sua preparação.
Ganhe pontos para baixar
Ganhe pontos ajudando outros esrudantes ou compre um plano Premium
Objetos administrativos no Oracle
Tipologia: Notas de estudo
1 / 68
Esta página não é visível na pré-visualização
Não perca as partes importantes!





























































O ORACLE aloca espaço para todos os tipos de dados do banco de dados. Quando um objeto é alocado, também é assegurada área para armazenamento das informações. Outro momento de alocação de área é quando o objeto cresce, requerendo um aumento de sua área prevista. Estas reservas de espaço são feitas em TABLESPACES, que corresponde a uma área lógica para armazenamento de informações do banco de dados, no entanto, sabemos que o banco de dados armazena suas informações em DATAFILES. Resta-nos, então, conhecer como estes elementos se relacionam: ◊ DATABASE x DATAFILES – Um banco de dados Oracle consiste de um conjunto de arquivos de dados, chamados DATAFILES. O sistema operacional onde o banco de dados está instalado tem visibilidade destes arquivos, no entanto, sua organização interna é totalmente de responsabilidade do banco de dados. ◊ DATABASE x TABLESPACES – Um banco de dados Oracle consiste de um conjunto de TABLESPACES, isto é, áreas para armazenamento de dados. O TABLESPACE é uma estrutura lógica, interna ao banco de dados. Não é visível pelo sistema operacional. ◊ TABLESPACES x DATAFILES – Um TABLESPACE está diretamente relacionado a um DATAFILE, na medida em que quando criamos um TABLESPACE (lógico), criamos, simultaneamente, o DATAFILE (físico) que receberá a informação. Desta forma cada DATAFILE só está associado a um TABLESPACE, em outras palavras, em um DATAFILE todas as informações pertencem a um único TABLESPACE. No entanto, poderemos atribuir mais de um DATAFILE a um único TABLESPACE. Sendo assim, o relacionamento entre TABLESPACE e DATAFILE é do tipo 1 (tablespace): N (datafiles). Na figura ao lado encontramos, graficamente, o relacionamento entre os elementos. Para o sistema operacional existem dois arquivos: ts_aluno1.ora e ts_aluno2.ora. Internamente, no Oracle, existe apenas o TABLESPACE TS_ALUNO. Os objetos que viermos alocar dentro deste tablespace podem ser acomodados pelo Oracle em qualquer dos arquivos físicos associados ou, até mesmo em partes.
◊ Cada TABLESPACE consiste de um ou mais arquivos do sistema operacional. ◊ Os TABLESPACES podem ser colocados online enquanto o banco de dados estiver em execução. ◊ Os TABLESPACES podem ser colocados offline (exceto system ou um tablespace que tenham um segmento de rollback ativo) enquanto o banco de dados estiver em execução. ◊ Os TABLESPACES podem alternar de situação passando de read-write para read-only e vice-versa. ◊ Os objetos criados em um tablespace nunca podem alocar espaço fora de seu TABLESPACE original. VANTAGENS ◊ Controlar a alocação de espaço e associar cotas de espaço para os usuários. ◊ Controlar a disponibilidade de dados, colocando o tablespace específico online ou offline. ◊ Possibilidade de distribuição de área através de diversos discos para adicionar performance (I/O) e reduzir a contenção de I/O (em vez de usar um único disco). ◊ Possibilidade de operações de backup e recuperação parcial. ◊ Colocação de grandes quantidades de dados estáticos em meios de armazenamento read-only.
A quantidade total de espaço físico alocado pelos objetos do banco de dados Oracle, depende do tamanho dos arquivos (do sistema operacional) criados e associados a tablespaces individuais. Se desejarmos aumentar a área de dados de um banco de dados, podemos agir de três formas: ◊Adicionar um novo DATAFILE a um TABLESPACE já existente. Esta operação adiciona ao TABLESPACE uma área do tamanho do arquivo adicionado. ◊Adicionar um novo TABLESPACE ao banco de dados. Nesta opção o novo TABLESPACE, que possui o tamanho do DATAFILE associado a ele, disponibiliza mais espaço para o banco de dados. ◊ Aumentar o tamanho de um DATAFILE já associado a um TABLESPACE. Nesta opção o espaço adicional necessário a um TABLESPACE específico é adquirido pelo crescimento de um dos DATAFILES que compõem o TABLESPACE. Este incremento pode ser feito manualmente ou automaticamente.
A criação de um tablespace é feita com o comando CREATE TABLESPACE. SINTAXE CREATE TABLESPACE create_tablespace::= ( permanent_tablespace_clause, temporary_tablespace_clause, undo_tablespace_clause)
table_compression::= ( storage_clause::=) extent_management_clause ::= ( size_clause::=) segment_management_clause ::= flashback_mode_clause ::=
temporary_tablespace_clause::= ( file_specification::=, tablespace_group_clause, extent_management_clause ::=) tablespace_group_clause::= undo_tablespace_clause::= ( file_specification::=, extent_management_clause ::=, tablespace_retention_clause ::=) tablespace_retention_clause ::=
◊ TEMPORARY - especifica que o tablespace será usado somente para armazenar objetos temporários. (por exemplo, segmentos usados para ordenação implícita causada pelo uso de uma cláusula ORDER BY). ◊ extent_management_clause – especifica como as extensões do TABLESPACE serão administradas: ◊ DICTIONARY – indica que o TABLESPACE será administrado usando tabelas dicionário. Esta é a opção default. ◊ L OCAL – indica que o TABLESPACE é “locally managed”. Isto indica que parte do TABLESPACE é controlado por um BITMAP. Quando usamos esta cláusula não podemos especificar DEFAULT storage_clause , MINIMUM EXTENT ou TEMPORARY. ◊ AUTOALLOCATE – especifica que o TABLESPACE é gerenciado pelo sistema. Os usuários não podem determinar o tamanho de uma extensão. Esta é a opção default. ◊ UNIFORM – especifica que o TABLESPACE é gerenciado com extensões de tamanho uniforme. Devemos determinar este tamanho (em Kbytes ou Mbytes). O tamanho default é 1Mbyte. OBS: ◊ Quando um TABLESPACE é criado, seu estado inicial é READ-WRITE. Isto pode ser alterado posteriormente. ◊ Se omitirmos as opções ONLINE e OFFLINE, o ORACLE cria o TABLESPACE ONLINE, por default. A view do dicionário de dados chamada DBA_TABLESPACES indica o estado de cada tablespace. ◊ Se a opção REUSE for especificada, o arquivo deve existir, caso contrário a opção SIZE deve ser especificada e o arquivo não deve existir.
Criar o tablespace TS_TESTE com um arquivo de dados chamado TS_TESTE.DBF de tamanho 1M, tornando-o disponível imediatamente para uso. A opção PCTINCREASE tem um valor default de 50. No exemplo foi usado zero (0) a fim de controlarmos (impedirmos) o crescimento de segmentos criados no tablespace. Criar o tablespace TS_BIG com um arquivo de dados chamado TS_BIG.DBF de tamanho 1M. Este tablespace poderá se expandir automaticamente desde que não ultrapasse o limite de 3M. A alocação de espaço neste tablespace deverá obedecer a múltiplos de 50K. SQL> CREATE TABLESPACE ts_teste 2 DATAFILE '/opt/oracle/oradata/orcl/ts_teste.dbf' SIZE 1M 3 DEFAULT STORAGE (INITIAL 50K 4 NEXT 50K 5 MINEXTENTS 10 6 MAXEXTENTS 121 7 PCTINCREASE 0); Espaço de tabela criado. SQL> CREATE TABLESPACE ts_big 2 DATAFILE '/opt/oracle/oradata/orcl/ts_big.dbf' SIZE 1M 3 AUTOEXTEND ON MAXSIZE 3M 4* MINIMUM EXTENT 50K Espaço de tabela criado.
Podemos separar um tablespace para realização de operações de ordenação. Este uso traz como vantagem a eliminação do gerenciamento de espaço envolvendo operações de alocação de liberação de área para ordenação. Os tablespaces temporários têm esta finalidade, isto é, realizar todas as operações de ordenação (SORT OPERATIONS) para uma determinada instância, incluindo joins, construção de índices, ORDER BY, GROUP BY e ANALYZE. Estes tablespaces: ◊ Não podem conter qualquer objeto permanente. ◊ São gerenciados pelo DBA. Para criarmos um tablespace temporário, devemos usar o comando CREATE TABLESPACE (com a opção TEMPORARY) ou CREATE TEMPORARY TABLESPACE. OBS: A Oracle recomenda que: ◊Para um tablespace gerenciado localmente, usemos o comando CREATE TEMPORARY TABLESPACE. ◊Para um tablespace gerenciado pelo dicionário de dados usemos o comando CREATE TABLESPACE com a opção TEMPORARY. Podemos também alterar um tablespace de permanente para temporário e de temporário para permanente usando o comando ALTER TABLESPACE.
filespec autoextend_clause
O principal propósito de um tablespace read-only é eliminar a necessidade de execução de backup e recovery de grandes pedaços do banco de dados que são estáticos (não mudam). Desta forma estes arquivos podem residir em uma mídia read-only (CD-ROMs ou drives WORM). OBS: Quando criamos um novo tablespace, seu estado inicial é READ-WRITE. Antes do DBA tornar um tablespace READ-ONLY, as seguintes condições devem ser satisfeitas. OBS: É recomendado que atendamos estas restrições inicializando o banco de dados no modo restrito. ◊ O tablespace deve estar ONLINE. ◊ Não devem existir transações ativas. ◊ O tablespace não deve conter qualquer segmento de rollback ativo. ◊ O tablespace não deve estar envolvido (neste momento) em um backup online. É recomendado que o DBA remova (DROP) os segmentos de rollback presentes neste tablespace antes de torna-lo READ-ONLY. OBS: O tablespace SYSTEM nunca pode se tornar um tablespace read-only. EXEMPLOS Usar o comando de SQL ALTER TABLESPACE para tornar um tablespace para read-only. Usar o comando de SQL ALTER TABLESPACE para tornar um tablespace para read-write. OBS: Para alterarmos o estado de um tablespace READ-ONLY para READ-WRITE, todos os arquivos de dados do tablespace devem estar online. Podemos usar a opção DATAFILE ONLINE do comando ALTER DATABASE para colocar um arquivo de dados online. A view V$DATAFILE lista o estado corrente de um arquivo de dados. SQL> ALTER TABLESPACE tabspace_2 READ ONLY; Tablespace altered. SQL> ALTER TABLESPACE tabspace_2 READ WRITE; Tablespace altered.
O comando ALTER TABLESPACE...READ ONLY coloca o tablespace no modo transitional read-only e aguarda que as transações existents (COMMIT ou rollback) para este tablespace se completem. Este estado não permite qualquer operação de gravação para o tablespace, exceto rollback de transações existentes. Após todas as transações terem completado (com COMMIT ou ROLLBACK), a operação solicitada (READ ONLY) é concluída e o estado do tablespace é modificado. OBS: Este estado “transitional” somente ocorre se o valor do parâmetro de inicialização COMPATIBLE for 8.1.0 ou maior. Para parâmetros inferiores a este valor, o comando ALTER TABLESPACE READ ONLY falha se houver qualquer transação em atividade. Uma vez que tablespaces read-only não podem ser modificados, eles não precisam ser salvos repetidamente. Quando necessitarmos recuperar o banco de dados, não precisamos nos preocupar, porque eles não foram modificados. Podemos remover itens (tabelas, índices, etc) de um tablespace read-only, da mesma forma que podemos remover itens de um tablespace offline, porém não podemos criar ou alterar objetos. Por outro lado, também não podemos adicionar DATAFILES a este tipo de tablespace, mesmo se o colocarmos offline (quando adicionamos um datafile, o Oracle deve atualizar o file header do arquivo e esta operação de gravação não é permitida para tablespaces read-only).
A alteração de um tablespace permite que: ◊ modifiquemos seus parâmetros de armazenamento default ; ◊ tornemos o tablespace online ou offline , ◊ acrescentemos outros arquivos de dados, ◊ façamos a substituição (renomear) dos nomes dos arquivos de dados existentes, ◊ realizemos sua salva (backup). sintaxe ALTER TABLESPACE alter_tablespace::= ( table_compression ::=--part of ALTER TABLE, storage_clause::=, size_clause::=, datafile_tempfile_clauses ::=, tablespace_logging_clauses ::=, tablespace_group_clause::=,
tablespace_state_clauses::=, autoextend_clause ::=, flashback_mode_clause ::=, tablespace_retention_clause::=) datafile_tempfile_clauses ::= ( file_specification::=). tablespace_logging_clauses ::= ( logging_clause::=) tablespace_group_clause::=