Olá !
Dessa vez irei demonstrar como criar uma ambiente para DEV utilizando o Oracle Express Edition no Oracle Linux 5.8.
O objetivo foi criar um servidor com Linux onde os meus alunos da faculdade pudessem resolver os exercícios das Disciplinas Banco de Dados e Projetos de Banco de Dados e puderem administrar esse ambiente de uma forma básica com as features disponíveis nessa versão de avaliação.
Não irei abordar a instalação do Oracle Linux 5.8 pois partimos de um ambiente ja instalado, mas você pode visualizar um exemplo aqui.
Pre-requisitos
A swap do Oracle Linux deverá ser no minimo 2G;
Instalar as bibliotecas
libaio, bc e flex ou atualizalas.
[root@devoracle ~]# yum install libaio bc flex
Você deve efetuar o download do Oracle XE
aqui.E descompacta-lo
[root@devoracle ~]# unzip -q oracle-xe-11.2.0-1.0.x86_64.rpm.zip
Após a descompactação o Oracle irá criar um diretório conforme abaixo:
[root@devoracle ~]# cd Disk1
[root@devoracle Disk1]# ls
oracle-xe-11.2.0-1.0.x86_64.rpm response upgrade
Passo 2: Instale o arquivo RPM usando os comandos abaixo:
rpm -ivh oracle-xe-11.2.0-1.0.x86_64.rpm
[root@devoracle Disk1]# rpm -ivh oracle-xe-11.2.0-1.0.x86_64.rpm
Preparing... ########################################### [100%]
1:oracle-xe ########################################### [100%]
Executing post-install steps...
You must run '/etc/init.d/oracle-xe configure' as the root user to configure the database.
[root@devoracle Disk1]#
Passo 2: Configurar 11g XE Database and Options
Execute o seguinte comando /etc/init.d/oracle-xe configure .
[root@devoracle Disk1]# /etc/init.d/oracle-xe configure
Oracle Database 11g Express Edition Configuration
-------------------------------------------------
This will configure on-boot properties of Oracle Database 11g Express
Edition. The following questions will determine whether the database should
be starting upon system boot, the ports it will use, and the passwords that
will be used for database accounts. Press <enter> to accept the defaults.
Ctrl-C will abort.
Specify the HTTP port that will be used for Oracle Application Express [8080]:
Specify a port that will be used for the database listener [1521]:
Specify a password to be used for database accounts. Note that the same
password will be used for SYS and SYSTEM. Oracle recommends the use of
different passwords for each database account. This can be done after
initial configuration:
Confirm the password:
Do you want Oracle Database 11g Express Edition to be started on boot (y/n) [y]:y
Starting Oracle Net Listener...Done
Configuring database...Done
Starting Oracle Database 11g Express Edition instance...Done
Installation completed successfully.</enter>
A instalaçao foi criada no diretório .
Passo 3: Setar as variáveis de ambiente.
Para setar as variáveis de ambiente no Oracle , utilize o script
oracle_env.sh incluso no diretorio de instalação
/u01/app/oracle/product/11.2.0/xe/bin
[root@devoracle Disk1]# cd /u01/app/oracle/product/11.2.0/xe/bin
Para setar execute os comando abaixo.'. ./oracle_env.sh':
[root@devoracle bin]# . ./oracle_env.sh
Para setar permanentemente para os usuários, adicione as variáveis nos arquivos .bashrc ou .bash_profile dos usuarios que irao acessar.
. /u01/app/oracle/product/11.2.0/xe/bin/oracle_env.sh
Agora acesso o SQL *Plus
Passo 4 - Permitir Acesso Remoto ao Orace 11g XE.
SQL> EXEC DBMS_XDB.SETLISTENERLOCALACCESS(FALSE);
PL/SQL procedure successfully completed.
Passo 5 - Mover a Flash Recovery Area (Fast Recovery Area)
Para proteger uma possível falha de disco, você deve mover a Flash Recovery Area para um disco separado;
Por default a Fast Recovery Area pode estar localizada em /u01/ap/oracle/fast_recovery_area
SQL> show parameter DB_RECOVERY_FILE_DEST;
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
db_recovery_file_dest string /u01/app/oracle/fast_recovery_area
db_recovery_file_dest_size big integer 10G
SQL>
Então, para poder mover deverá ser criado uma pasta previa.
[root@devoracle ~]# mkdir /opt/fra
[root@devoracle ~]# chown oracle:dba /opt/fra
SQL> ALTER SYSTEM SET DB_RECOVERY_FILE_DEST = '/opt/fra';
System altered.
SQL>
Para mover os arquivos use o script movelog.sql:
SQL> @?/sqlplus/admin/movelogs
SQL> SET FEEDBACK 1
SQL> SET NUMWIDTH 10
SQL> SET LINESIZE 80
SQL> SET TRIMSPOOL ON
SQL> SET TAB OFF
SQL> SET PAGESIZE 100
SQL> declare
2 cursor rlc is
3 select group# grp, thread# thr, bytes/1024 bytes_k
4 from v$log
5 order by 1;
6 stmt varchar2(2048);
7 swtstmt varchar2(1024) := 'alter system switch logfile';
8 ckpstmt varchar2(1024) := 'alter system checkpoint global';
9 begin
10 for rlcRec in rlc loop
11 stmt := 'alter database add logfile thread ' ||
12 rlcRec.thr || ' size ' ||
13 rlcRec.bytes_k || 'K';
14 execute immediate stmt;
15 begin
16 stmt := 'alter database drop logfile group ' || rlcRec.grp;
17 execute immediate stmt;
18 exception
19 when others then
20 execute immediate swtstmt;
21 execute immediate ckpstmt;
22 execute immediate stmt;
23 end;
24 execute immediate swtstmt;
25 end loop;
26 end;
27 /
PL/SQL procedure successfully completed.
SQL>
SQL>
Agora, defina um tamanho adequado para a Área de recuperação rápida.
Utilize df -h para garantir que há um amplo espaço.
SQL> ALTER SYSTEM SET DB_RECOVERY_FILE_DEST_SIZE = 20G;
System altered.
Verifique a nova localização e tamanho.
SQL> show parameter DB_RECOVERY_FILE_DEST;
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
db_recovery_file_dest string /opt/fra
db_recovery_file_dest_size big integer 20G
SQL>
Passo 6: Adicionar membros para grupos de Redo Log.
Você deve ter pelo menos dois Grupos Redo e cada grupo deve ter pelo menos dois membros.Além disso, os membros devem ser distribuídos em discos (ou pelo menos diretórios)
Na instalação padrão apenas um membro é criado por grupo.
Você pode visualizar os arquivos de log redo usando
SQL> SELECT * FROM V $ LOGFILE;
Uma vez que o local padrão para os dois membros é da Área de Recuperação Flash, os dois membros existentes foram movidos para o nosso novo FRA.
Agora você deve adicionar mais um membro para cada grupo sob /u01/app/oracle/oradata/XE
SQL> ALTER DATABASE ADD LOGFILE MEMBER '/u01/app/oracle/oradata/XE/log1b.LOG' TO GROUP 1;
Database altered.
SQL> ALTER DATABASE ADD LOGFILE MEMBER '/u01/app/oracle/oradata/XE/log2b.LOG' TO GROUP 2;
Database altered.
SQL>
Passo 7: Definir os parâmetros sessões e processos
SQL> show parameters sessions;
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
java_max_sessionspace_size integer 0
java_soft_sessionspace_limit integer 0
license_max_sessions integer 0
license_sessions_warning integer 0
sessions integer 172
shared_server_sessions integer
SQL> show parameters processes;
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
aq_tm_processes integer 0
db_writer_processes integer 1
gcs_server_processes integer 0
global_txn_processes integer 1
job_queue_processes integer 4
log_archive_max_processes integer 4
processes integer 100
Após cada alteração, será necessário reiniciar o banco de dados pois os parâmetros no são dinâmicos
Aumente as sessões e, em seguida efetuar shutdown no banco de dados.
SQL> alter system set sessions=250 scope=spfile;
System altered.
SQL> shutdown immediate
Database closed.
Database dismounted.
ORACLE instance shut down.
SQL> startup
ORACLE instance started.
Total System Global Area 1068937216 bytes
Fixed Size 2233344 bytes
Variable Size 780143616 bytes
Database Buffers 281018368 bytes
Redo Buffers 5541888 bytes
Database mounted.
Database opened.
Verifique mudança de parâmetro de sessões:
SQL> show parameters sessions;
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
java_max_sessionspace_size integer 0
java_soft_sessionspace_limit integer 0
license_max_sessions integer 0
license_sessions_warning integer 0
sessions integer 252
shared_server_sessions integer
SQL> show parameters processes;
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
aq_tm_processes integer 0
db_writer_processes integer 1
gcs_server_processes integer 0
global_txn_processes integer 1
job_queue_processes integer 4
log_archive_max_processes integer 4
processes integer 200
SQL>
Passo 8: Ativar o modo ARCHIVELOG
Para habilitar backups on-line ou "quentes", o Modo Archivelog deve ser ativado.
Além disso, se você não permitir que o modo ARCHIVELOG e use apenas offline ou backups "frios", se você precisar restaurar o banco de dados só será capaz de restaurar o último backup
Para ativar o modo ARCHIVELOG, efetue o shutdown do banco de dados e, em seguida, startup mount:
SQL> shutdown immediate
Database closed.
Database dismounted.
ORACLE instance shut down.
SQL> startup mount
ORACLE instance started.
Total System Global Area 1068937216 bytes
Fixed Size 2233344 bytes
Variable Size 763366400 bytes
Database Buffers 297795584 bytes
Redo Buffers 5541888 bytes
Database mounted.
SQL> alter database archivelog;
Database altered.
Abra o banco de dados e verifique se o Modo de Arquivamento foi habilitado.
SQL> alter database open;
Database altered.
SQL>
SQL> SELECT LOG_MODE FROM SYS.V$DATABASE;
LOG_MODE
------------
ARCHIVELOG
SQL>
Etapa 9: Criar Script de Backup Online
Para criar backups automatizados, você pode modificar o backup.sh incluídos em
/u01/app/oracle/product/11.2.0/xe/config/scripts
[root@devoracle ~]# mkdir /opt/ora_backup
Alterar o proprietário para oracle e que o grupo dba
[root@devoracle ~]# chown oracle:dba /opt/ora_backup
Copie o script backup.sh de /u01/app/oracle/product/11.2.0/xe/config/scripts para o diretório criado acima.
[root@devoracle ~]# cp /u01/app/oracle/product/11.2.0/xe/config/scripts/backup.sh /opt/ora_backup/backup.sh
Abra o script backup.sh em um editor de texto ou vi. A última seção será parecido com este:
else
echo Backup of the database succeeded.
echo Log file is at $rman_backup_current.
fi
#Wait for user to press any key
echo -n "Press ENTER key to exit"
read userinp
Altere para :
else
echo Backup of the database succeeded.
echo Log file is at $rman_backup_current.
mail -s 'Oracle Backup Completed' 'professorbdemerson@gmail.com' < /u01/app/oracle/oxe_backup_current.log
fi
#Wait for user to press any key
#echo -n "Press ENTER key to exit"
#read userinp
A linha de nós adicionamos acima, -s mail 'a Oracle backup concluído' 'professorbdemerson@gmail.com' </u01/app/oracle/oxe_backup_current.log, vai enviar uma notificação por e-mail que o backup foi concluído, bem como um log dos enventos cópia de segurança log para o corpo da mensagem.
Note que também comentei as duas últimas linhas do roteiro (o prompt).
Crie um job no cron para executar o script com o usuário oracle
Você deve executá-lo pelo menos uma vez por dia. Com o Modo Archivelog habilitado, é importante que os backups ser verificados regularmente para impedir a Flash Recovery Area de encher.
Etapa 10: Criar usuário para criação dos objetos
[root@devoracle ~]# sqlplus sys as sysdba
SQL*Plus: Release 11.2.0.2.0 Production on Qui Mar 5 14:39:43 2015
Copyright (c) 1982, 2011, Oracle. All rights reserved.
Informe a senha:
Conectado a:
Oracle Database 11g Express Edition Release 11.2.0.2.0 - 64bit Production
SQL>
SQL> create user emerson identified by oracle;
Usuário criado.
SQL> grant connect,resource,dba to emerson;
Concessão bem-sucedida.
SQL> exit
Desconectado de Oracle Database 11g Express Edition Release 11.2.0.2.0 - 64bit Production
[root@localhost ~]# sqlplus emerson/oracle
SQL*Plus: Release 11.2.0.2.0 Production on Qui Mar 5 14:37:48 2015
Copyright (c) 1982, 2011, Oracle. All rights reserved.
Conectado a:
Oracle Database 11g Express Edition Release 11.2.0.2.0 - 64bit Production
SQL> select * from v$instance;
INSTANCE_NUMBER INSTANCE_NAME
--------------- ----------------
HOST_NAME
----------------------------------------------------------------
VERSION STARTUP_ STATUS PAR THREAD# ARCHIVE LOG_SWITCH_WAIT
----------------- -------- ------------ --- ---------- ------- ---------------
LOGINS SHU DATABASE_STATUS INSTANCE_ROLE ACTIVE_ST BLO EDITION
---------- --- ----------------- ------------------ --------- --- -------
1 XE
localhost.localdomain
11.2.0.2.0 05/03/15 OPEN NO 1 STARTED
ALLOWED NO ACTIVE PRIMARY_INSTANCE NORMAL NO XE
SQL> exit
Estar pronto nosso Oracle XE ambiente de desenvolvimento.
No próximos post irei demonstrar como efetuar backup do banco de dados, instalar ferramentas adicionais como por exemplo o SQL Developer 4.0.3 e efetuar conexão com o Banco de Dados.
Até lá !!
Emerson Martins
Referencias:
http://docs.oracle.com/cd/E17781_01/install.112/e18802/toc.htm