Escolar Documentos
Profissional Documentos
Cultura Documentos
11g (Básico)
Publicado em 27 de Maio de 2015por Sérgio O. Marques
A instalação do motor da base-de-dados é o primeiro passo a tomar caso este ainda não
tenha sido dado. Antes de proceder à sua instalação é conveniente ler o manual de
utilização de modo a garantir que o sistema que se pretende ser o anfitrião é suportado e
possui o mínimo de recuros necessários. É possível encontrar este manual na
ligação Database Quick Installation Guide. Supondo que o sistema se encontra de acordo
com os requisitos e os recursos de memória e processamento são suficientes, estamos
aptos a proceder à instalação do programa, o qual pode ser obtido em Oracle Database
Software Downloads. É importante lembrar que os programas disponibilizados
pela Oracle são regulados por uma licença que restringe legalmente a sua utilização e
deverá ser lida com a devida atenção.
A instalação da base-de-dados Oracle 11g não oferece grandes dificuldades se for realizada
em sistemas operativos profissionais, empresariais ou de servidor (como é o caso
do Windows Server/Enterprise ou Linux). A sua distribuição é realizada por intermédio
de dois ficheiros compactados em formato zip, os quais terão de ser descompactados para
uma directoria à escolha. Entre os ficheiros descompactados encontra-se o
executável Setup.exe que permite iniciar o instalador. O instalador requer a introdução de
alguns parâmetros de configuração, nomedamente, a Oracle Base Location (localização
onde serão guardados os binários de base-de-dados) e a Oracle Home
Location (localização dos ficheiros que constituem o motor em si). Além disso, permite
criar uma instância inicial. Como cada instância consiste numa base-de-dados e o motor
suporta várias instâncias, a sua criação poderá ser adiada para uma fase posterior desde
que seja criado um Listener. A criação de uma instância aquando da instalação resulta
numa base-de-dados completamente funcional com o menor esforço possível e é
aconselhável numa fase inicial (de facto, suporei aqui que esta opção foi seleccionada).
Para efeitos de testes, a escolha de uma instalação por defeito é suficiente.
Suponhamos que instalámos o motor da base-de-dados, criando uma instância
denominada orcl com palavra-chave do sistema orcl num anfitrião qualquer. Pretendemos,
portanto, conectar-nos ao sistema. Duas formas são imediatamente disponibilizadas,
nomeadamente, o Oracle Enterprise Manager e o SQLPlus.
O Oracle Enterprise Manager consiste numa aplicação de servidor que pode ser acedida
por intermédio de um navegador como o Chrome ou o Firefox. Em ambiente Windows, é
criada uma ligação no menu Oracle – OraDb11g_home1 sita no submenu Todos os
Programas (All Programs) do menu Iniciar (Start) designada por Database Control –
orcl que permite lançar o navegador definido por defeito no endereço e porta correctos.
Para acedermos às páginas de controlo da base-de-dados, caso esta opção tenha sido
escolhida durante a instalação da instância de base-de-dados, introduzimos o utilizador
SYS, a palavra-chave definida durante a instalação e conectamo-nos como SYSDBA. Neste
ambiente é possível realizar praticamente todas as tarefas de administração da base-de-
dados.
O SQLPlus consiste num utilitário de linha de comandos que permite ao administrador
executar qualquer comando ou script na base-de-dados, incluindo consultas de SQL. Se
executarmos, na linha de comandos do anfitrião,
>sqlplus sys/orcl as
1sysdba
o SQLPlus tenta uma ligação à instância que se encontra definida por defeito (no caso do Windows
Server, vem definido na tabela dos registos – Configuration Parameters and the Registry) com o
utilizador SYS e palavra-chave orcl. É útil observar que, quando é executado o SQLPlus, surge a
sua versão no cabeçalho. Esta informação torna-se importante quanto pretendemos recuperar bases-
de-dados em instalações diferentes, sendo os erros, devidos a diferenças nas versões, difíceis de
detectar.
Para aceder à instância específica, teremos de alterar a variável de ambiente oracle_sid na sessão
actual. Para garantir que o SQLPlus se conecta à instância orcl, introduzimos, na linha de
comandos, supondo que pretendemos conectar-nos à base-de-dados com SID=orcl (o SID é
definido durante a criação da base-de-dados, caso tenha sido seleccionada a opção de criação de
uma instância durante a instalação),
1>set oracle_sid=orcl
>sqlplus sys/orcl as
2sysdba
Uma vez iniciado o SQLPlus, podemos emitir comandos de administração bem como realizar
consultas sobre as bases-de-dados. Por exemplo, a consulta
SQL>select instance_name, status from
1v$instance;
permite-nos confirmar o SID da base-dados ao qual nos conectámos e o seu estado (STARTED,
MOUNTED, OPEN).
Deixo aqui uma nota final sobre a conexão à base-de-dados com o auxílio do SQLPlus é efectuada a
partir do anfitrião (máquina onde se encontra instalada a base-de-dados). Como podemos ver no
capítulo Configuring Users, Groups and Environments for Oracle Database do Database
Installation Guide, vários grupos são criados no servidor aquando da instalação e, em particular, o
grupo ORA_DBA. Se executarmos o SQLPlus numa conta de utilizador que se encontre registada
no grupo ORA_DBA (ver como acrescentar um utilizador a um grupo no Windwos Server aqui), é-
nos suficiente emitir os comandos
>set
1oracle_sid=orcl
2>sqlplus / as
sysdba
para nos conectarmos à base-de-dados como adiministradores.
Se não proporcionarmos a palavra-chave, isto é, se fizermos
>sqlplus sys as
1sysdba
o programa força-nos a introduzi-la posteriormente. Esta opção é mais segura na medida em que o
seu conteúndo não é imprimido no ecrã.
Encerramento e Inicialização
SQL>startup
1nomount;
permite elevar a base-de-dados ao estado de STARTED. Caso pretendamos passar ao estado
MOUNTED teremos de utilizar o comando
SQL>alter database
1mount;
De seguida, se pretendermos disponibilizá-la, recorremos ao comando
SQL>alter database
1open;
Vemos que o startup é executado apenas uma vez, sendo as restantes elevações conseguidas por
intermédio da instrução alter database. Se a base-de-dados se encontrar encerrada, é possível iniciá-
la em qualquer um dos estados. Por exemplo,
SQL>startup
1mount;
permite iniciar a base-de-dados no modo MOUNTED, passando automaticamente pelo modo
STARTED.
Para termos uma ideia do que acontece em cada um dos estados de inicialização, é
conveniente percebermos o propósito de dois ficheiros fundamentais, nomedamente
o spfile (Server Parameter File) e o control file. O comando no SQLPlus
SQL>create pfile='...\Desktop\pfile_orcl.ora' from
1spfile
cria um ficheiro denominado pfile_orcl.ora na directoria ...\Desktop. Se editarmos o ficheiro com
um editor detexto como o notepad++ verificamos que este contém uma lista de parâmetros e
respectivos valores que parametrizam a instância durante a sua inicialização. Este formato era
utilizado para parametrizar bases-de-dados em versões antigas. O spfile constitui uma evolução do
mesmo e não pode ser alterado com um auxílio de um editor de texto. Entre estes encontra-se
definido o parâmetro control_files, definindo a localização dos ficheiros de controlo (uma ou mais
cópias). O ficheiro spfileconsiste, portanto, num ficheiro de servidor onde estão persistidas as
configurações associadas a uma determinada instância. Para consultar a directoria onde o ficheiro
de inicialização se encontra, podemos emitir o comando no SQLPlus
SQL>show parameter
1spfile;
A instrução
SQL>show
1parameter;
permite obter o valor de todos os parâmetros configuráveis na base-de-dados. O comando
SQL>startup
1pfile='...\Desktop\pfile_orcl.ora'
permite iniciar a base-de-dados configurada pelos parâmetros definidos no ficheiro pfile_orcl.ora.
Encontrando-se a base-de-dados inicializada com um pfile, é possível criar um ficheiro spfile com o
comando
SQL>create spfile from
1pfile;
Assim, um ficheiro spfile é criado na directoria que está definida para conter este tipo de ficheiros.
De um modo geral, é possível criar um ficheiro spfile a partir de um pfile com a ajuda da instrução
SQL>create spfile='...\Desktop\spfile_orcl.ora' from
1pfile='...\Desktop\pfile_orcl.ora';
e também um ficheiro pfile a partir de um spfile com
SQL>create pfile='...\Desktop\pfile_orcl_created.ora' from
1pfile='...\Desktop\spfile_orcl.ora';
Se pretendermos inicializar a base-de-dados, importando os parâmetros de um ficheiro do
tipo spfile que se encontre numa localização diferente da definida, por
exemplo, …\Desktop\spfile.ora,
criamos um ficheiro …\Desktop\pfile_orcl.ora com a linha
SPFILE=’…\Desktop\spfile.ora’
e iniciamos a base-de-dados com
SQL>startup
1pfile='pfile.ora';
Os parâmetros do spfile podem ser alterados no SQLPlus com o auxílio da instrução “alter system”.
Verificámos atrás que um dos parâmetros explicitados no spfile contém o caminho para os ficheiros
de controlo e como este parâmetro pode ser consultado, isto é,
SQL>show parameter
1control_files;
proporciona-nos essa lista. Os ficheiros de controlo contêm a informação sobre a estrutura física da
base-de-dados, mantendo, por exemplo, o caminho para todos os ficheiros de dados que a
constituem. Além desta informação, também lá se poderão encontrar os últimos registos de cópias
de segurança efectuadas com o auxílio do RMAN.
É possível obter um script que nos permita criar um ficheiro de controlo da nossa base-de-dados.
Para o efeito temos de determinar, em primeiro lugar, onde se encontra a directoria de rastreio da
base-de-dados com a consulta
SQL>select value from v$diag_info where name='Default Trace
1File';
no SQLPlus. O comando
SQL>alter database backup controlfile to
1trace;
permite salvaguardar o ficheiro de controlo no ficheiro de rastreio actual. No final do ficheiro (à
altura da execução do comando) deverá surgir o script que possibilita a construção de um ficheiro
de controlo semelhante ao que se encontra na nossa base-de-dados. Verificamos que um ficheiro de
controlo é criado com a base-de-dados em modo STARTED através do comando create controlfile.
Como se pode observar, a criação manual de um ficheiro de controlo pode ser extensa, sendo
aconselhável manter uma cópia de segurança regular destes ficheiros.
De um modo resumido, a inicialização da base-de-dados começa com a leitura do spfilepara a
obtenção da parametrização. A entrada na fase STARTED não requer a existência do ficheiro de
controlo nem dos ficheiros de dados. Se este ficheiro não existir é nesta fase que deverá ser criado.
Na fase MOUNTED, tanto o ficheiro de controlo como os ficheiros de dados são carregados. A
base-de-dados só passa ao estado OPEN se toda a estrutura física se encontrar livre de problemas.
Os ficheiros de dados
>sqlplus sys@orcl_service as
1sysdba
Depois de introduzirmos a palavra-chave, encontramo-nos conectados. O ficheiro tnsnames.ora é
utilizado pelos programas cliente para resolver o nome do serviço que passamos durante a conexão.
Convém neste ponto dar uma ideia do fluxo associado a um pedido de cliente. Todos os
pedidos de conexão à base-de-dados são realizados por intermédio de um processo que se
encontra em execução no anfitrião designado por Listener. Quando uma nova instância de
base-de-dados é configurada no anfitrião, esta deverá ser registada num Listener de
modo a possibilitar conexões de cliente. Nas versões superiores à 9i, o registo das
instâncias é garantido por um processo que se encontra em execução, não sendo necessária
qualquer configuração (as configurações estáticas dos serviços associados a
um Listener são configuradas num ficheiro designado por listener.ora que se encontra na
mesma directoria Oracle_home\network\admin). Para consultar quais são os serviços que
estão registados nos Listeners, emitir o comando na consola do sistema operativo do
anfitrião
>lsnrctl
1status
Como já foi referido atrás, a criação de uma base-de-dados durante a instalação do
motor Oracle efectua a criação de um Listener. Caso essa opção não tenha sido tomada, é
necessário proceder à sua criação com o auxílio do Oracle Net Configuration Assistant antes de
proceder à criação da primeira instância, utilizando o Database Configuration Assistant.
O ficheiro de palavras-chave
1SQL>shutdown
immediate;
2SQL>exit
Ora, a base-de-dados é, deste modo, desligada. Tentemos ligar-nos novamente à mesma instância
que agora se encontra em baixo.
>sqlplus
1sys/orcl@._._._.:1521/orcl.local
Provavelmente iremos obter um erro a indicar que o listener não reconhece o serviço especificado.
Isto deve-se ao facto do resgisto da base-de-dados efectuado no listener ser realizado
automaticamente (ver serviço de registos). Quando a base-de-dados é desligada, o seu registo
automático no listener é eliminado do mesmo modo. Para podermos continuar a conectar-nos à
base-de-dados quando esta foi desligada, o serviço associado deverá encontrar-se configurado
estaticamente no ficheiro listener.ora. Para registarmos estaticamente o serviço, começamos por
parar o listener
>lsnrctl
1stop
Editamos o ficheiro listener.ora que se encontra na directoria Oracle_home\network\admin,
acrescentando-lhe as linhas
1SID_LIST_LISTENER=
2(SID_LIST=
3(SID_DESC=
(GLOBAL_DBNAME=orcl.local)
4(ORACLE_HOME=[Oracle_home]
5)
6(SID_NAME=orcl)))
Observe-se que se trata de uma lista de listas de registos de SID. Se alguns outros SID se
encontrarem registados, adicionar
1(SID_DESC=
2(GLOBAL_DBNAME=orcl.local)
(ORACLE_HOME=[Oracle_home]
3)
4(SID_NAME=orcl))
à lista SID_LIST. A variável GLOBAL_DBNAME deverá conter o nome global da base-de-dados e
pode ser obtido por intermédio da consulta
SQL>grant sysdba to
1nome_do_utilizador;
Se o utilizador já existia com privilégios de sysdba é necessário remover-lhe e voltar a adicionar-lhe
o privilégio de modo a proceder à respectiva sincronização com a base-de-dados. Os comandos são
1SQL>revoke sysdba from
nome_do_utilizador;
2SQL>grant sysdba to nome_do_utilizador;
Para obter uma lista de utilizadores listados no ficheiro, fazemos
SQL>show parameter
1remote_login_passwordfile;
Este parâmetro, que se encontra configurado no spfile admite três valores possíveis,
nomeadamente, none, exclusive e shared. O primeiro, indica que a base-de-dados não possui
ficheiro, o segundo indica que o ficheiro é exclusivo e o terceiro que se trata de um ficheiro
partilhado. Apenas podemos acrescentar ou eliminar utilizadores do ficheiro caso este esteja no
modo exclusivo. Para alterar para none o valor deste parâmetro, fazemos
SQL>alter system set remote_login_password=none
1scope=spfile;
Trata-se de uma parâmetro de configuração que surtirá efeito apenas quando a base-de-dados for
reiniciada e, por isso, trata-se de um daqueles parâmetros que terá de ser configurado apenas ao
nível do spfile.
Como nota final, o algoritmo de encriptação utilizado pela Oracle encontra-se descrito no
livro Special Ops Host And Network Security For Microsoft, Unix, And Oracle. Apesar de alguns
ataques poderem ser realizados, resultando em possíveis falhas de segurança associadas à
publicação deste tipo de ficheiros, não iremos aqui debater o assunto. Convém utilizar, no caso de
utilizadores com privilégios de administração, boas palavras-chave.
Os diários de arquivo – archive logs
SQL>alter database
1archivelog;
e abrimo-la
SQL>alter database
1open;
Neste ponto é importante realizar uma nova cópia de segurança. Para colocar a base-de-dados em
NOARCHIVELOG, é suficiente colocar a base-de-dados no estado mount, alterar o estado e depois
abri-la:
1SQL>shutdwon immediate;
2SQL>startup mount;
SQL>alter database
3noarchivelog;
4SQL>alter database open;
Note-se que, em ambos os casos, é importante ter em mente que deverão ser realizadas uma cópia
de segurança antes e depois de alterar o modo de arquivo dos diários.