Alura > Cursos de Data Science > Cursos de SQL e Banco de Dados > Conteúdos de SQL e Banco de Dados > Primeiras aulas do curso Administração do Oracle Database: segurança e otimização do banco

Administração do Oracle Database: segurança e otimização do banco

Estrutura do banco de dados - Apresentação

Olá, meu nome é Victorino Vila e vamos começar mais um curso da formação Oracle na Alura.

Agora vamos abordar mais um pouco sobre a administração do banco de dados, assunto este que começamos no curso anterior.

Vamos começar esse curso falando mais detalhadamente das estruturas lógicas e físicas do banco de dados; veremos como se organizam os segmentos da base de dados e de que maneira fazemos as conexões entre cliente e servidor.

Passaremos a falar sobre os tablespaces, quer seriam os segmentos mais importantes da base Oracle. Entenderemos, na segunda aula do curso, como criar e dar manutenção nas tablespaces.

Passaremos, então, a falar dos usuários. Para haver acesso ao banco, é necessário que uma sessão seja aberta. Essa criação de sessão é efetuada sempre por meio da conta de um usuário.

Veremos como criar usuários, entenderemos o que são os privilégios de acesso, como dar esses privilégios e de que maneira os usuários podem repartir seus privilégios com outros usuários.

Passaremos ao assunto dos backups. Por segurança, necessitamos fazer cópias nas nossas bases para não perdermos dados devido a um eventual acidente que corrompa a base ou devido a algo errado que algum usuário faça diretamente nos dados, levando a perder ou modificar informações importantes.

Veremos a diferença entre o que é o backup quente e frio, e os requisitos para podermos fazer um ou outro tipo de cópia da base. Falaremos também nesse curso sobre políticas de backups e como funcionam os dois tipos de backups incrementais que temos disponíveis.

Já que aqui aprendemos a tirar uma cópia de segurança do banco, também temos que aprender a como recuperar essa cópia. Entendermos, então, a diferença entre recuperar e restaurar a base de dados.

Vamos ver como restaurar o banco devido, por exemplo, a um acidente em que o arquivo de dados foi corrompido, e entenderemos também como funciona, no Oracle, o que chamamos de flashback recovery.

Espero que vocês gostem desse curso, vamos em frente. Grande abraço, até o próximo vídeo.

Estrutura do banco de dados - Estruturas lógicas e físicas do banco

Quando falamos de um banco de dados, é importante que separemos a sua estrutura lógica e física. Quando o programador acessa o banco de dados, ele deve ver apenas a sua estrutura lógica, sem a possibilidade de descobrir onde está fisicamente um item do banco.

Assim, o armazenamento físico pode ser, a qualquer momento, reorganizado pelo sistema operacional. Com isso, o aplicativo que acessa o banco não está ciente de nenhuma mudança que acontece no lado físico.

Em outras palavras, mudanças físicas dos dados dentro do disco não vão modificar a estrutura lógica do banco. Quando incluímos, alteramos ou excluímos dados no banco de dados, cabe ao Oracle e ao sistema operacional gerenciar os bytes armazenados sem que nós, que estamos manipulando o banco, nos preocupemos com isso.

Essa figura que está sendo mostrada mostra um modelo de armazenamento do Oracle esboçado como se fosse um diagrama de relacionamento entre entidades, com as estruturas lógicas do lado esquerdo e as estruturas físicas do lado direito.

Vamos falar um pouco agora da estrutura lógica. No lado lógico, temos uma entidade superior que chamamos de tablespace. A tablespace é uma área em que todas as representações do banco vão estar associadas.

Abaixo dela, temos o segmento, que é qualquer estrutura lógica que armazena dados. Por exemplo, as tabelas ou os índices de um banco de dados são considerados segmentos.

Os segmentos possuem extensões que, por sua vez, estão associadas a blocos de espaço que, no Oracle, podem ser de tamanhos de 2K, 4K, 8K, 16K ou 32K.

Quando criamos o nosso banco de dados no outro curso, nós especificamos, durante a instalação, o tamanho padrão do bloco. Inclusive, eu enfatizei que após a definição o padrão não poderia ser modificado.

Agora vamos falar do lado físico. No lado direito, no lado físico, temos apenas duas entidades: os data files, que são os arquivos de dados do sistema operacional, e os blocos de bytes, que compõem os data files e estão intimamente associados ao sistema operacional em que esses arquivos estão armazenados.

Uma tablespace pode conter vários segmentos que podem estar gravados em muitos data files. Isso significa que qualquer segmento pode ser espalhado por qualquer data file, e um data file pode conter partes de muitos segmentos completos dentro dele ou não.

Esse tipo de estrutura resolve muitos desafios de armazenamento. Alguns sistemas operacionais mais antigos de gerenciamento de banco de dados usavam um relacionamento individual entre segmentos e data files, ou seja, cada segmento estava associado sempre a apenas um data file.

Também o data file é composto fisicamente de vários blocos de bytes no sistema operacional. Com os data files e os blocos são estruturados, depende inteiramente dos arquivos dos sistemas operacionais como esses data files estão armazenados.

Alguns data files possuem limitações conhecidas. Quando utilizados sistemas operacionais antigos, como, por exemplo, os padrões DOS-FAT, só podíamos manipular, por exemplo, arquivos de no máximo 4GB e os diretórios podiam ter apenas 512 arquivos cada.

Hoje em dia, a maioria dos bancos de dados são instalados em sistemas com arquivos que teoricamente não tem limites práticos, como, por exemplo, o padrão NTFS do Windows.

Vou parar um pouco por aqui e continuamos falando mais no próximo vídeo.

Estrutura do banco de dados - Tipos de segmentos

Olha esse slide em que tenho uma consulta SQL destacada por uma seta azul. Nessa consulta, é possível visualizarmos todos os segmentos de um banco de dados através da consulta da tabela “dba_segments”.

Quando visualizamos esses segmentos, conseguimos ver que eles pertencem a tipos diferentes. O que vamos falar agora é um pouco sobre esses tipos. Vamos começar pelo segmento mais popular, que é a tabela, ou table.

As tables são tabelas estruturadas em um formato que chamamos de heap. O que é isso? Heaps são linhas de comprimentos variáveis que são armazenadas em ordens aleatórias dentro da área de armazenagem do disco em que está o banco de dados.

Temos depois outro tipo de segmento, que é o índice, o index. Os índices são listas ordenadas de valores-chave em que tenho um ponteiro chamado “RowID” que está apontando para cada local físico da linha na tabela.

O rowID especifica qual bloco Oracle, em quais arquivos de dados, a linha e o número da linha estão armazenados. Isso faz com que uma busca de alguma informação utilizando o campo em que o índice está organizado seja muito mais rápida.

Outro tipo de segmento importante é o type undo. Os segmentos de tipo undo armazenam as versões de pré-troca de dados. Essas versões são necessárias para fornecer a integridade transacional do banco de dados.

Isso faz com que possamos fazer ações de reversão de dados indesejados, manter a consistência da leitura e, também, isolar a localização da informação dentro do banco de dados. Basicamente, é o type undo que ajuda a manter o banco íntegro.

Vamos falar sobre o table partition, que é outro tipo de segmento. Uma tabela pode ser dividida em várias partições. Se eu fizer isso, essas partições vão ser segmentadas em segmentos individuais e diferentes.

A tabela em si não vai ser um segmento único, ela só vai existir como uma soma total de partições. Cada partição da tabela vai ser estruturada como segmento único e esses segmentos podem estar em tablespaces diferentes.

Isso significa que é possível pegarmos uma tabela e a espalharmos por várias tablespaces diferentes dentro do banco de dados.

O index partition está associado a índices que também são armazenados em segmentos diferentes, mas, normalmente, os index partitions estão associados a índices de tabelas que também estão particionadas. Então, normalmente, quando criamos uma tabela particionada, os índices também serão particionados.

Vamos falar sobre outro segmento. Temos alguns grupos de segmentos que chamamos de segmentos lobs. Normalmente, nós podemos definir, dentro de uma tabela, uma coluna cujo tipo é um objeto grande de dados. Pode ser um arquivo grande, uma imagem, etc. Nós chamamos esses campos de campos lobs.

Ou seja, o componente da coluna é algo muito grande, e normalmente nós armazenamos esse conteúdo, esse campo lob, ou grandes textos, ou arquivos binários, dentro da base dados, em um segmento diferente do segmento da tabela.

O que tenho na tabela é um ponteiro apontando para esse segmento separado, que normalmente não é o mesmo segmento em que a tabela está residindo.

Finalmente, temos os clusters. O cluster é um segmento que pode conter várias tabelas. Ao contrário do particionamento, que permite espalhar uma tabela em vários segmentos, no cluster só consigo manter tabelas inteiras.

Vamos tentar entender, então, a parte lógica do banco de dados. Temos uma tablespace que pode ser composta de diversos segmentos e cada um desses segmentos de um tipo. Cada segmento pode estar armazenado em uma ou mais extensões, que é o que chamamos nessa figura de “Extend”.

Quando o segmento é criado, o Oracle aloca uma extensão a ele e uma tablespace específica. Eventualmente, enquanto os dados vão sendo inseridos dentro do segmento, a extensão vai sendo preenchida.

Chega um momento em que essa extensão, com um limite máximo associado ao tamanho do bloco que especificamos no momento que a criamos, estoura. O que vai acontecer? O Oracle vai criar outra extensão vazia em que depois o dado vai começar a ser preenchido.

Era isso que eu queria falar com vocês nesse vídeo. Espero que vocês tenham gostado, grande abraço, nos vemos daqui a pouco.

Sobre o curso Administração do Oracle Database: segurança e otimização do banco

O curso Administração do Oracle Database: segurança e otimização do banco possui 232 minutos de vídeos, em um total de 57 atividades. Gostou? Conheça nossos outros cursos de SQL e Banco de Dados em Data Science, ou leia nossos artigos de Data Science.

Matricule-se e comece a estudar com a gente hoje! Conheça outros tópicos abordados durante o curso:

Aprenda SQL e Banco de Dados acessando integralmente esse e outros cursos, comece hoje!

Conheça os Planos para Empresas