2. ProyectoBBDD 2016- 2017
Autor:FranciscoCabrero Torres
Indice
1. Objetivo.......................................................................................................................2
2. Instalación de CENTOS 7................................................................................................2
a) Creación de usuarios .................................................................................................2
b) Desactivar hugepages................................................................................................3
c) Definición de variables de entorno Oracle:..................................................................4
3. Configuración Grid Infraestructure.................................................................................4
a) Añadir discos.............................................................................................................5
b) Instalación discos ......................................................................................................6
4. Instalación de Oracle.....................................................................................................7
a) Definición de Diskgroup.............................................................................................7
b) Creación de BBDD.....................................................................................................8
c) Comprobación parámetros BBDD.............................................................................10
5. Creación de esquema..................................................................................................13
6. Creación de usuarios...................................................................................................14
a) Creación de roles.....................................................................................................14
7. Backup.......................................................................................................................14
a) Completo físico.......................................................................................................15
b) Copias incrementales ..............................................................................................15
c) Backup archives ......................................................................................................16
d) Export dump...........................................................................................................16
8. Paso a histórico...........................................................................................................17
9. Estimación tamaño de los tablespaces.........................................................................19
10. Auditoria.................................................................................................................20
11. Notas finales...........................................................................................................21
3. ProyectoBBDD 2016- 2017
Autor:FranciscoCabrero Torres
1. Objetivo
Este trabajo va a constar de generaruna BBDD enASM, con las especificacionesindicadasenel
documento Proyecto fin decurso Curso oficial en administración deBBDD Oracle.
Para el desarrollodel proyectose vaa utilizarel software de virtualizaciónOracle Virtualbox
5.1.8 con lassiguientescaracterísticas:
1 discoprincipal de 40 GB
4 discosauxiliares SCSI
8 GB de RAM
SistemaoperativoLinux CentOS 7
La decisiónde elegirLinux,esparaimplantarunproyectodesde 0con el sistemamáscomún
que he observadoenmi trayectoriaprofesional,ademásque enlaprácticaesmucho más
seguroque otrossistemas.
2. Instalación de CENTOS 7
No se va a realizarunaguía, sobre como instalarel sistemaoperativo si nose vaa centrar en
detallarlospasos posteriores que hayque realizarenel Sistemaoperativoantesde realizarla
instalacióndel softwarede Oracle.
a) Creación de usuarios
Antesde generarlosusuarios,se debengeneraranivel de sistemaoperativolosgrupos, uno
para cada rol para tenerlosseparados.
Se han creado lossiguientesgrupos:
DBA: /usr/sbin/groupadd -g 54322 dba
OSBACKUPDBA: /usr/sbin/groupadd -g 54324 backupdba
OSDGDBA: /usr/sbin/groupadd -g 54325 dgdba
OSASMDBA: /usr/sbin/groupadd -g 54327 asmdba
OSASMADMIN: /usr/sbin/groupadd -g 54329 asmadmin
ORACLE INVENTORY GROUP: groupadd oinstall
Se va a crear un usuarioparacada rol
Oracle para las BBDD
useradd -u 54321 -g oinstall -G dba,backupdba,dgdba oracle
5. ProyectoBBDD 2016- 2017
Autor:FranciscoCabrero Torres
c) Definición de variables de entorno Oracle:
Antesde lanzarla instalaciónse deberácrearlasvariablesconlasrutas recomendadas,para
ellose definenlassiguientes
3. Configuración Grid Infraestructure
Antesde ejecutarlainstalación,se debe prepararlosdispositivosde almacenamientoparaque
puedanserutilizadosporASM. Para laversiónde Centosexistenunaslibrerías(asmlib)que
permitenmarcarel hardware para poderserutilizadoporASM.
Estas libreríasse encuentrandisponiblesenlasiguientedirección:
http://www.oracle.com/technetwork/server-storage/linux/asmlib/rhel7-2773795.html
Previamentese tiene que instalarlosprerrequisitos,conlautilidad
yum install kmod-oracleasm
yum install oracleasm-support-2.1.8-3.el7.x86_64.rpm
yum install oracleasmlib-2.0.12-1.el7.x86_64.rpm
Una vez que se haya instalado,se debe arrancalalibreríaasmlib,conlossiguientesvalores:
TMP=/tmp; export TMP
TEPDIR=$TMP; export TEPDIR
ORACLE_BASE=/softOracle/app/oracle; export ORACLE_BASE
ORACLE_HOME=$ORACLE_BASE/product/12.1.0/dbhome_1; export
ORACLE_HOME
GRID_HOME=/softOracle/app/oragrid/product/12.1.0/grid; export
GRID_HOME
PATH=/usr/sbin:$PATH; export PATH
PATH=$ORACLE_HOME/bin:$PATH; export PATH
LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/lib; export
LD_LIBRARY_PATH
CLASSPATH=$ORACLE_HOME/JRE:$ORACLE_HOME/jlib:$ORACLE_HOME/rdbms/jli
b;
export CLASSPATH
6. ProyectoBBDD 2016- 2017
Autor:FranciscoCabrero Torres
a) Añadir discos
Se ha preparado 4 discosSCSIenla máquinavirtual para poderdar de altaDG enASM. Como
fines didácticosse vaa utilizarRedundanciaExterna,peroenlavidareal el sistemaoperativo
soloveráuna unidadlógicaperolaredundancialorealizarálascabinasensistemasRAID.
Se crearían lossiguientesdiscosconlossiguientescomandos:
[root@srvoracle12~]# oracleasmconfigure -i
Configuringthe Oracle ASMlibrarydriver.
Thiswill configure the on-bootpropertiesof the Oracle ASMlibrary
driver. The followingquestionswill determinewhetherthe driveris
loadedonbootand what permissionsitwill have. The currentvalues
will be showninbrackets('[]'). Hitting<ENTER> withouttypingan
answerwill keepthatcurrentvalue. Ctrl-Cwillabort.
Defaultusertoown the driverinterface []: oragrid
Defaultgroupto ownthe driverinterface []: asmadmin
Scan for Oracle ASMdisksonboot (y/n) [y]: y
WritingOracle ASMlibrarydriverconfiguration:done
oracleasm createdisk DATA1 /dev/sda1
oracleasm createdisk DATA2 /dev/sdb1
oracleasm createdisk DATA3 /dev/sdc1
oracleasm createdisk DATA4 /dev/sdd1
7. ProyectoBBDD 2016- 2017
Autor:FranciscoCabrero Torres
b) Instalación discos
Con todoslospreparativos,yaestapreparadoel servidorpararealizarlainstalación,a
continuaciónse indicanlasopcionesque se hanseleccionadoparallevaracabola instalación.
El discoprincipal donde se almacenaranlosdatosseránen+DG_DATA que estaráconstituido
solopor el discoDATA1
8. ProyectoBBDD 2016- 2017
Autor:FranciscoCabrero Torres
4. Instalación de Oracle
Para la instalaciónde Oracle,se eligesoloinstalarsoftware de Base de datos,lacreaciónde la
BBDD se indicaráa continuaciónconel asistente
a) Definición de Diskgroup
Se debe crear losdiskgroups paraalmacenarcada componente de labase de datos.Para
realizarlose hautilizadolautilidadasmcayse han creado4 grupos:
DATA_ASM Donde se encuentranlosdatosde la BBDD
DG_DATA_HIST Donde se guardaran losdatosde laBBDD histórico
DG_FRA Zonade la FastRecoveryArea.
DG_REDO Localizacióndonde se guardaránlosredos
9. ProyectoBBDD 2016- 2017
Autor:FranciscoCabrero Torres
b) Creación de BBDD
Para la creaciónde BBDD se usará el asistente de creaciónde Base de datos
Se elige personalizarloyaque lasotras plantillasnocumplentodoslosrequisitosque indican
enla practica.
Para evitarexcesivoconsumode memorianose montael Enterprise Manager
11. ProyectoBBDD 2016- 2017
Autor:FranciscoCabrero Torres
Se asignalos 700 MB y se utilizagestiónautomáticade memoriaque esotropuntorequisito
de la practica
En estapantallase define el tamañode bloque en16K
Los scriptsde creaciónse encuentran encrearTB y tablas,créate_DB_proyecto
c) Comprobación parámetros BBDD
Antesde avanzarcon la creaciónde la BBDD, se debe comprobarque losparámetrosse han
guardadocorrectamente.Analicemosunaauna lascaracterísticas que debe tener:
Tamaño de bloque 16k
4 gruposde redo con2 miembrosde cada uno.Este paso nose realizaenlacreación
de BBDD para habilitarlo
SQL> showparameterdb_block_size
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
db_block_size integer 16384
ALTER DATABASE
ADD LOGFILE GROUP 4 ('+DATA_ASM/PROYECTO/ONLINELOG/',
'+DG_FRA/PROYECTO/ONLINELOG/') SIZE 50M;
12. ProyectoBBDD 2016- 2017
Autor:FranciscoCabrero Torres
4 ficherosde control
Esta parte se ha realizadogenerandounpfile desde el spfile,parandolaBBDD,copiandolos
controlfile aotraruta e indicandoenel pfile laubicaciónde loscontrolfile copiadosadicionales
a los que ya existen.
Se generael spfile del pfile yse arrancala BBDD.
SQL> selectgroup#,bytesfromv$log;
GROUP# BYTES
---------- ----------
1 52428800
2 52428800
3 52428800
4 52428800
1* select group#,member from v$logfile
GROUP# MEMBER
---------- --------------------------------------------------------
----
1 +DATA_ASM/PROYECTO/ONLINELOG/group_1.258.931188957
1 +DG_FRA/PROYECTO/ONLINELOG/group_1.268.931188957
2 +DATA_ASM/PROYECTO/ONLINELOG/group_2.264.931188959
2 +DG_FRA/PROYECTO/ONLINELOG/group_2.261.931188959
3 +DATA_ASM/PROYECTO/ONLINELOG/group_3.257.931188959
3 +DG_FRA/PROYECTO/ONLINELOG/group_3.260.931188959
4 +DATA_ASM/PROYECTO/ONLINELOG/group_4.262.931190789
4 +DG_FRA/PROYECTO/ONLINELOG/group_4.267.931190789
13. ProyectoBBDD 2016- 2017
Autor:FranciscoCabrero Torres
Tamaño de SGA 4g
Tamaño de la SGA 700M
SQL> showparametersga_max_size
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
sga_max_size biginteger700M
SQL> selectname,value fromv$parameter
2 where name like 'contro%'
3 ;
NAME VALUE
-------------------- ----------------------------------------------------------------------------------------------------
control_files +DATA_ASM/PROYECTO/CONTROLFILE/current.266.931188957,
+DG_FRA/PROYECTO/CONTROLFILE/current.269.931188957,
+DATA_ASM/PROYECTO/CONTROLFILE/current,
+DG_FRA/PROYECTO/CONTROLFILE/currentbkp_fra
1* SELECT * FROM V$RECOVERY_FILE_DEST
NAME SPACE_LIMITSPACE_USED SPACE_RECLAIMABLE
NUMBER_OF_FILES CON_ID
-------------------------------------------------- ----------- ---------- ----------------- --------------- ----------
+DG_FRA 4294967296 942669824 0 7 0
14. ProyectoBBDD 2016- 2017
Autor:FranciscoCabrero Torres
Gestiónautomáticade lamemoria
5. Creación de esquema
En el ficherocrearesquema.txtse encuentranloscomandosSQLpara la creacióndel esquema
indicadoenladocumentacióndel proyecto.
Se han creado dostablespaces,unoparadatosy otro para losíndices.El esquemaestacreado
totalmente enel tablespace de datos.
El usuariopropietariodel esquemaseráel usuarioOE,de el colgará todala estructuradel
proyecto
Segunladocu de ORACLE, estáactiva si lossiguientesvaloresestanasí
ALTER SYSTEM SET MEMORY_TARGET = nM;
ALTER SYSTEM SET SGA_TARGET = 0;
ALTER SYSTEM SET PGA_AGGREGATE_TARGET = 0;
SQL> showparametermemory_target
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
memory_target big integer700M
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
sga_target biginteger0
SQL> showparameterpga_aggregate_target
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
pga_aggregate_target big integer0
15. ProyectoBBDD 2016- 2017
Autor:FranciscoCabrero Torres
6. Creación de usuarios
En el proyectoindicalacreaciónde variosusuariosenglobadosendistintosgruposcon
permisosdiferentes.Paraellose utilizaranlosrolesyunavezcreados,se asignaranlos
usuariosal rol correspondiente.
a) Creación de roles
Se crearan dos rolesunoque permitael borrado y otro que no.
Las asignacionesde permisosse detallanenel ficherogrants.txt,paracrear unusuarioy
asignárseloal rol se deberáasignarde la siguientemanera
Grant sin_delete to user1
Se ha elegidodarpermisosindividualmente porcadatablay por cada acción para evitarque se
cree una tablaen el esquemayque pordefectoestosusuariosnopuedanaccederaella.Si se
quiere daracceso bastaría con modificaryañadirloal rol correspondiente.
7. Backup
Al ser unabase de datosde producciónnose puede permitirperdidade servicioominimizarla
lomáximoposible.Antesde planificarlosscriptsse ha decididoponerlaBBDDen archivelog,
debidoaque las opcionesde recuperaciónsonmuchomásrápidasque enmodonoarchivelog.
CREATE ROLE SIN_DELETE_OE;
CREATE ROLE MODIFICACION_OE;
16. ProyectoBBDD 2016- 2017
Autor:FranciscoCabrero Torres
a) Completo físico
Se utilizarálautilidadRMAN,yeste backupestaráprogramadodiariamente de madrugada.Se
copiara todala BBDD, losarchives,controlfile yel spfile actual. Tambiénse borranlos
archivelogscopiadosylascopiasde seguridadobsoletas.
b) Copias incrementales
En el caso de BBDD grandesse puede utilizarlascopiasincrementalesdesde lautilidadRMAN,
si no se especificatodaslascopiasestánenel nivel 0y copiantodo. Si se quiere realizaruna
copiacon losficherosmodificadosdesde laultimacompletase utilizarael siguiente script.
La opciónlevel 1indicaraque solose copiaranlosarchivosmodificadosdesde el ultimobackup
level 0que se realizó.
LOG=`date +%d%m%H%M`_incr1.log
rman target/ <<EOF >$LOG
run {
backupincremental level 1database;
backuparchivelogall deleteinput;
}
EOF
rman target/ <<EOF >salida.txt
run {
allocate channel c1 type disk;
allocate channel c2 type disk;
backupdatabase;
backuparchivelogall deleteinput;
backupcurrent controlfile;
backupspfile;
delete nopromptobsolete;
}
EOF
17. ProyectoBBDD 2016- 2017
Autor:FranciscoCabrero Torres
c) Backup archives
El FS donde se guardanlosarchiveseslimitado,yenlasBBDD de producciónse suelengenerar
por elloypara evitarun mal mayor se tiene que saneareste FS.Paraelloconun periodomas
corto se deberálanzareste backup,donde se copiaranlosarchivesyse borraran del FSdel
servidor.
d) Export dump
Para realizarcopiasy transportarlasse optarápor este métodode exportaciónde datosa
otros entornosque se considerenoportunos.
Previamenteantesde generarlosexportsdebemoscrearundirectorioenel sistemaoperativo
y añadirloa laentrada de directoriosenOracle.
El exportserádel schemaOE que esel objetode backup.Para ellose utilizaráel siguiente
parfile:
Y el script que ejecutarael export
LOG=`date +%d%m%H%M`_archives.log
rman target/ <<EOF >$LOG
run {
backuparchivelogall deleteinput;
}
EOF
create directoryEXPORTSAS'/softOracle/app/oracle/exports'
DIRECTORY=EXPORTS
SCHEMAS=OE
DUMPFILE=EXPORT_OE.DMP
LOGFILE=EXPORT_OE.LOG
PASS=`cat ~/.pass`
exportORACLE_SID=proyecto
expdpuserid=system/$PASSparfile=export.parfile
18. ProyectoBBDD 2016- 2017
Autor:FranciscoCabrero Torres
El ficherode passwordestaráocultoenel home de Oracle y solotendrápermisosel usuario
Oracle para verlo.Coneste ficherose podráconectara laBBDD sinque un usuarioque nosea
el original del scriptpuedaverlo.(permiso600)
8. Paso a histórico
Se ha diseñadounaBD con igual esquemaque labase de datosoriginal paraguardar losdatos
obsoletosyasi agilizarlasconsultasconel año encurso. El pase a históricose hará unavezpor
año por loque loscriteriosque se han elegidoparapasarde la base de datos proyectoa la
históricoson:
Pedidosde ese año
Productosque esténdescatalogados
Estas tablasestaránenmodo sololecturay solose habilitaranlaescrituraunavezal año,
cuandose realice lacarga.
Para que el traspasode informaciónseatransparente yse ejecutede maneraautomática,el
usuarioque ejecute deberátenerpermisosadicionalesque permitancrearjob,proceduresy
database link. Se asignanal usuarioOE de histórico estospermisos.
El pasode informaciónse realizaráconundblinkde laBD historicoa lastablasde la BBDD
principal:
create database LINKlink_proyecto connecttooe identifiedbyoe using'PROYECTO';
grant create any jobto OE;
grant create any procedure toOE;
grant create database linktoOE;
19. ProyectoBBDD 2016- 2017
Autor:FranciscoCabrero Torres
SiendoPROYECTOunaentradadel tnsnames.ora
Ahorabien, comova a serun procesodesatendidose deberádejarunatraza con losposibles
erroresque se hayan producido.Paraellose generaráunatablaLOG donde se almacenarálos
erroresdel proceso.
Para el desarrollodel scriptse hafijadoenlastablasque se estimanuncrecimientoacusado:
Tabla pedidos.Se pasarántodoslospedidosanterioresaeste año.
Tabla detalle de pedidos.Se pasarántodoslosregistrosasociadosalospedidos
anterioresaeste año.
Tabla inventarios.Se pasarántodoslosregistros que notengan enstock y que su
productoeste descatalogado.
Para las demástablasel purgadoserámanual,al no tenerun criterioporel que realizarlo.
El jobse realizarácada 1 de eneroa las 03:00, para que la BBDD esté listoparasu usoeste año
El scriptcompletose encuentraenel anexo“scriptpasoa histórico.sql”
PROYECTO =
(DESCRIPTION =
(ADDRESS= (PROTOCOL= TCP)(HOST= localhost)(PORT=1521))
(CONNECT_DATA =
(SERVER= DEDICATED)
(SERVICE_NAME= proyecto)
)
)
20. ProyectoBBDD 2016- 2017
Autor:FranciscoCabrero Torres
9. Estimación tamaño de los tablespaces
Teniendoencuentalasprevisionesde crecimientode losregistrosse haestimadoel tamañode lastablasutilizandoel método
sys.create_table_cost_columns.Coneste método,indicando todaslascolumnasde latablay el númerode registrosjuntoconel PCTUSED que pordefecto
esel 10% nos muestranlossiguientesresultados. Cálculosindicadosenel fichero“estimacióntamaño”
ESTIMACION TAMAÑO TABLAS (MB)
Tabla TAMAÑO CARGAINICIAL CRECIMIENTO ANUAL
FILAS
INICIALES FILAS INCREMENTAL AÑO PESO MEDIO TABLA
CUSTOMERS 43 3 150000 15000 10
ALMACENES 0,25 0,06 4000 400 19
INVENTARIOS 9 9 450000 450000 11
DETALLE DE PEDIDOS 1792 2240 50000000 63360000 11
PEDIDOS 1152 448 220000 792000 10
PRODUCT DESCRIPTIONS 336 34 150000 15000 346
INFORMACION DEPRODUCTOS 392 40 150000 15000 11
TOTAL 3724,25 2774,06 51124000 64602000 418
Tamaño total 6498,31
Para realizarunaestimaciónde loque creceránlastablasclientes,almacenes,descripcionesde productose informaciónde productos,yaque noexiste una
estimaciónapriori,se hará unaestimaciónde que creceránun10 % al año.Con estasindicacionesse tieneque generarel tablespace de datoseneste año
unos6,4 GB.
21. ProyectoBBDD 2016- 2017
Autor:FranciscoCabrero Torres
10. Auditoria
Se pide saberque usuarioshanrealizadolasaccionesselect,insert,update ydelete sobre las
tablasordersy orders_items.Pararealizarlaauditoriade selectnose puede realizarmediante
triggers.Se ejecutael comando
auditselectonoe.orders;
auditselectonoe.order_items;
Para consultarlosvaloresde auditoriaseleccionadosenestasauditoriase puedeconsultarcon
el comando:
SELECT USERNAME, SQL_TEXT, TIMESTAMP FROM DBA_AUDIT_TRAIL WHERE
SQL_TEXT LIKE 'SELECT %';
Para las operacionesde audiciónde insert,update ydeletesobre lastablasindicadasse
realizaramediante untriggerque insertara losvaloresenlatablade oe.auditar
En el campo tablase almacenaráel nombre de latablaafectada,enel caso seráorderso
orders_items.
En el campo operaciónse indicarási esINSERT,DELETE o UPDATE.
En campos se indicaránlosvaloresinsertados,borradosoanterioresal UPDATE.
En valor,se guardará los valoresactualizadosconel nuevovalor.
En usuario,se introduciráel usuarioque harealizadolaoperación
Fecha:el momentoque se produce el evento.
Los scripts,se encuentranenel anexoauditoria.txt
create table oe.auditar
( tablavarchar2(50),
operacionvarchar2(30),
camposvarchar2(1000),
valorvarchar2(2000),
usuariovarchar2(30),
fecha date
);
22. ProyectoBBDD 2016- 2017
Autor:FranciscoCabrero Torres
11. Lista de anexos
ComprobaciónrequisitosBD
o Sql_test_BD.txt.Txtconlosscriptsutilizadosparacomprobarlosrequisitos
inicialesde laBBDD
Backup
o Bkp_archives.txt.Scriptparaejecutarbackupde ficherosde archivado
o Crear directorio.txt.Sentenciaparadefinirel directoriodonde Oracle guardará
losdump
o Parfile.txt.Archivoque se utilizaparacogerlosparámetrosusadosenlosdata
pump
o Rman completa.sh.Scriptparabackupfull de BBDD,los logsde archives,
controlfile yspfile.Ademasborralascopias
o Rman_inc_0.sh.Scriptincremental 0con la utilidadRMAN
o Rman_inc_1.sh.Scriptincremental 1con la utilidadRMAN
o Sh export.txt.Ejecutableque lanzaunpumputilizandoel archivopar.
Permisos
o Sentenciasutilizadasparacrearlosperfilesde accesode usuarios
Estadísticas
o Sentenciasutilizadasparapasarlasestadísticas
Crear TB y tablas
o CREATE_DB_proyecto.Scriptsgeneradosenel dbcapara la creaciónde BBDD
principal
o Crear esquema.txtScriptsparacrear tablespacesytablas.
Estimacióntamaño
o Estimacióntamaño.txt. Sentenciasyrazonamientode espacioque ocuparála
BBDD
o Resumenespacio.xlsx.Enestahojase resumentodoslosdatosdel
crecimiento.
Auditoria
o Auditoria.txt.Desarrollode triggersyscriptspara
Pasoa histórico
o Crear esquemahistórico.txt Scriptsparacrear el esquemade laBBDD
histórico
o Créate dblink.txt.Entradadel tnsnames.oraysentenciaparacrear el database
link.
o scriptpaso a historico.sql.Procedimientoyprogramaciónparatraspasarla
informaciónde laBBDD online alahistórico.
23. ProyectoBBDD 2016- 2017
Autor:FranciscoCabrero Torres
12. Notas finales
Una vez realizadolacarga, se deberápasarlasestadísticasenlas tablaspara que Oracle pueda
ejecutarplanesde ejecuciónóptimospararecuperarlainformación.Parapasar lasestadísticas
al esquemaOEse harán el siguiente comando:
SQL> showparameterstatistics_level
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
statistics_level string TYPICAL
SQL>
EXEC dbms_stats.gather_schema_stats('OE',cascade=>TRUE);