Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Save ingmarioalberto/205c4a97974ee25a00730fa4a6b92f39 to your computer and use it in GitHub Desktop.
Save ingmarioalberto/205c4a97974ee25a00730fa4a6b92f39 to your computer and use it in GitHub Desktop.
Diplomado Oracle HA
Hints:
- El profesor indica que es mejor no tener swap
- Al instalar oracle en el apartado de Servers -> System Administration Tools, por default no viene ninguno seleccionado, por lo que hay que manualmente agregar: oracle-rdbms-server-12cR1
Profesor: Conde
https://loquecallamoslosdba.wordpress.com/
RTO Recovery Time Objective: tiempo en el cual yo espero recuperarme
RPO Recovery Point Objective: tiempo que transcurre entre el momento del desastre y el último punto de restauración.
Banco RPO ~= 0
que tanto puedo perder
SLA Service Level Agreement
Base de datos relacionales: datos comparten relaciones entre ellos
RDBMS
+->SQL
+->Ansi
+->Propietario p/tipo
Oracle Pros:
+->pueden manejar teras de información
+->commit/rollback
+->HA activo/activo
3 Tier Computing
BD<-->App<-->Client
ODBC=Open DataBase Connectivity
oracle database
oracle clusterware->todo lo que tiene q ver con cluster
oracle cluster filesystem (OCFS)
Oracle Stand Alone (single instance) VM1
Oracle RAC(real app clusters)(Multi instance) VM1 = Instacia1, VM2 = Instancia2, BD = SAN
Oracle Dataguard (Capa extra con activo/pasivo
+-> RACa <--Dataguard/Sync--> RACb
Server process -> Listener (socket) puerto 1521<---conexion ---->user process (session)
instacia: Conj de struct de mem y procs en bg que nos permiten interactuar con una BD Oracle
una instancia esta casada en una sola base de datos
una instancia va a la bd y nos devuelve los resultados
Oracle cluster -> no es shared nothing
SPoF Single Point of Failure
el SPoF de Oracle es el storage
user -> SQL -> user process <--conexion-->server process-->sesión
sesion contiene vars relativas al usuario (idioma, moneda, territorio)
Tamaño de bloque de oracle
+->default->8K
+->Soportados->2K, 4K, 8K, 16K, 32K
+->a mayor tamaño de bloque, mayor cap de almacenamiento
----
La maestra comento que SELECT no es DML
----
DML->Data Manipulation Language: SELECT INSERT UPDATE DELETE
DDL->Data Definition Language->CREATE INDEX/VIEW ; DROP
+->Tienen un commit implicito
PGA : Program Global Area (memoria del proceso)
+->Operaciones de almacenamiento/hashing/bitmap +->70 a 80% RAM
-----------------------------------------------------
SGA : System Global Area (memoria de la instancia) +->30 a 20% RAM
+->shared pool: datos relativos q deben ver todos las sesiones/usuarios
+->server result cache:: informacion en texto de resultados
+->database buffer cache: todos los datos q se obtienen de la bd en binario
+->tiene copia de datos de los data files
+->se comparte con todos los usuarios concurrentes
+->posee dirty blocks que son copias de bloques que podrían ser modificados
+->nk buffer cache->cache para cuando se interactue con tablas de diferente tamaño de bloque, inactivos por default.
+->keep pool->datos que vamos a estar utilizando
+->recycle pool->datos que expiren rapido
+->redo log buffer: historico de transacciones en la bd (tanto confirmadas como NO confirmadas) se va sobreescribiendo
+->large pool: todas las ops que requieran un I/O de gran tamaño
+->backup/restore
+->java pool: segmento de mem q permite ejecución de código java, inicia en cero, no se aloja en mem hasta que se ocupa
+->streams pool: ya no se ocupa, solo es para retrocompatibilidad. Buffer de mem utilizado para flujos de datos p.ej: replicación y encolamiento
+->Fixed SGA: misc stuff housekeeping
-----------------------------------------------------
Process Structures
DBWn: DataBase Writer->Interactua con los datafiles, lee y escribe desde DB Buffer Cache<->Database files
LGWR: Log Writer->Lee el Redo Log Buffer y escribe en el Redo Log File cuando: *ver doc
CKPT->
+->Proceso q hace checkpoints
+->sincroniza los Database files, control file, y redo log file con el SCN (System Change Number / Timestamp )
SMON: System monitor->limpiar segm temporales y realiza el instance recovery
PMON: Process monitor->encargado de liberar recursos utilizados por otros procesos al término de su ciclo de vida
*Si SMON y PMON mueren, se cae la BD.
LREG: Listener Registration->Registra la instancia con el listener
MMON: Manageability Monitor->Captura estadisticas cada hora de performance dentro de la BD
ARCn: Archiver Process->Transforma los Redo Log Files en Archived Redo Log Files
-----------------------------------------------------
Database Storage Architecture Control files->Archivo binario q contiene la estructura física de la BD, puede almacenar características adicionales +->Set de caracteres. +->informacion de los respaldos +->rutas +->
Data files->Archivos binarios q almacenan la información dentro de la BD Archivos pricipales (files) Online redo log files: Archivos binarios q contienen el histórico de mods de la BD (por tuning al menos 3, pero puede ser 1) Parameter file: contienen los parámetros de inicialización de una BD->nombre, tamaño bloque, memoria, etc +->pfile: texto plano estático solo se lee al iniciar el demonio de BD +->spfile: binario y soporta cambios dinámicos. +->p.ej. tamaño de bloques, etc Backup files: Respaldos de la bd (binarios fmt oracle) Archived Redo Log Files: Redo Log Files que fueron archivados Password File: Archivo que contiene los usuarios con privilegios especiales Alert log and trace files: Log general de la BD (Todo lo que ha hecho la BD)
-----------------------------------------------------
Tablespace->Div. lógica de una bd para poder crear objetos en él.
+->Al crear una BD se generan automag. 5 tablespaces
+->System
+->Sysaux
+->Temp
+->Undo
+->Users
-----------------------------------------------------
Clase 3
-----------------------------------------------------
SQL Plus
+->Terminal cli
+->admin BD, Query, etc
SQL Developer
+->GUI
+->Desarrolladores
+->Programada en Java
+->Portable JVM
Database Grid Central 11c se dividió en...
+->Database Express
+->Cloud Control 12c/13c
Initializacion Parameters
+->Parametros que vámos a setear al inicio de la instancia y definen su comportamiento
+->casi todos tienen valores por default/defecto
Basicos: Forzosamente deben estar definidos
CONTROL_FILES: Control filenames
DB_FILES:Núm max de archivos de bd
PROCESSES: Núm max de procesos de usuario a nivel SO que se pueden conectar
DB_BLOCK_SIZE: tamaño de bloque que se usa en todas las tablas una vez creado no se puede modificar
DB_CACHE_SIZE: Tamaño de standard block buffer cache
SGA_TARGET: Tamaño total de todo los miembros del SGA para que se autoadministren
Avanzados: Extra
SQL Plus para ver parámetros
+->SELECT name, value FROM V$PARAMETER;
+->SHOW PARAMETER SHARED_POOL_SIZE (tiene autocompletar)
Para ver información de los parámetros:
+->desc V$parameter
Cambiar parámetros de inicialización:
+->estáticos
+->solo pueden modificarse por medio del parameter file
+->dinámicos
+->nivel sesion
+->solo modifica para sesion actual
+->nivel sistema
+->modifica globalmente
+->Diagrama:
___System _spfile
/ \ /
Alter+ +Set 'parameter'='' scope +--Both
\__Session/ \
-memory
Permite configurar el ambiente PATH etc
$ . oraenv
export ORACLE_SID=instancia (no mayor de 8 caracteres)
encender/boot/Starting up and oracle database instance
solo en 3 estados de la base de datos + shutdown
+->shutdown
+->nomount: leyó pfile y params, levantó procesos y alojó memoria (sirven para respaldos/replicaciones)
+->mount: monta el control file (monta la base) en la ruta que está definida en el spfile y set de caracteres
+->alter database mount;
+->open: abre la base, ya habría acceso a los datos
+->alter database open;
> startup nomount;
> alter database mount;
> alter database open;
> shutdown immediate;
o bien directamente
> startup open
para apagar hay que ir directo a 0 (shutdown immediate)
modos para bajar:
Shutdown Abort Immediate Transactional Normal
Allow new conns No No No No
Waits until current sessions end No No No Yes
Waits until current transactions end No No Yes Yes
Forces a checkpoint and closes files No Yes Yes Yes
shutdown abort / matar pmon -> pueden producir perdida de datos -> instance recovery
por default en modo instancia es shutdown normal
vs
en multi instancia es shutdown immediate
-------------------------------------------
Alert log
-------------------------------------------
Una vista es un Query que se ejecuta antes de nuestro SQL cuando lo mandamos llamar, es como para formatear.
Using Dynamic Performance Views
Las vistas de performance dinámicos nos dan info del sistema pero no todas la dan en tiempo real, depende de cada...
p.ej:
SELECT sql_text, executions FROM v$sql WHERE cpu_time>200000;
SELECT * FROM v$database;
SELECT * FROM v$instance;
-------------------------------------------
Creación de usuuarios
+->oracle
ORACLE_BASE="/u01/app/oracle/"
+->ORACLE_HOME="/u01/app/oracle/product/11.2.0/dbhome_1"
-------------------------------------------
Instalacion Linux Oracle
Seguir en blog: https://loquecallamoslosdba.wordpress.com/2017/04/05/ambiente-de-pruebas-oracle/
VMware WorkstationEdit
+->Edit->Virtual Network Editor
---------------------------------------
MAA (Maximum Availability Architecture)
+->Oracle RA
+->Dataguard
investigar dnsmask
Single Client Access Name
La SCAN no es un proxy,
la SCAN es una entidad que indica una direccion adonde se debe conectar el cliente de manera transparente al usuario
(SCAN)
+->3 Virtual IP => 2 nodos
172.16.19.101->nodo1
SO/
\172.16.19.102->nodo2
172.16.19.103->VIP1
/172.16.19.104->VIP2
Cluesterware+-172.16.19.105->SCAN
\172.16.19.106->SCAN
172.16.19.107->SCAN
ASM->Automatic Storage Management
(en oragle no hay nodo master, pero hay un nodo local y los nodos joining)
Archivos de cluster que no se deben de tocar:
+->
archive log list : para saber si está en modo archive
como poner en modo archive:
+->shut immeadiate
+->startup mount
+->alter database archivelog;
Nodo1 Nodo2
_____ _____
|vars | |vars |
| | | |
| | | |
|_____| |_____|
|diplo1 |diplo2
|ASM1 |ASM2
'-----+------'
|
|
___
| |
|===|diplo
|===|ASM
|___|
|
|
,------+------+------+------,
| | | | |
|__ |__ |__ |__ |__
|d1| |d2| |d3| |d4| |d5|
|__| |__| |__| |__| |__|
------------Teoría 20/12/2019------------ ........user-session........ + +
User->App/cliente-------->DB Instance
^------listener------/
Listener->archivo q contiene nombre, puerto, protocolo (es un archivo y además tiene un proceso "Lsnr") +->app envia user y pass al listener y este valida todo y da acceso a BD +->el listener siempre debe estar arriba para poderse conectar remotamente a la BD +->con lsnrctl podemos controlar el listener->start/stop/status +->Escucha peticiones entrantes y administra tráfico al servidor +->listener.ora +->uno por cada servidor en RAC +->listener hace valudación, si es correcta manda petición al dispatcher
Dispatcher +->Reparte la petición en los servidores libres
TNSnames->es como un etc/hosts que guarda una nombre,puerto (es un archivo) +->tnsnames.ora -> local en cada equipo. +->ejemplo: net_service_name= (DESCRIPTION= (ADDRESS=(protocol_address_information)) (CONNECT_DATA= (SERVICE_NAME=service_name)))
Server Process en RAC->Siempre hay un dispatcher Dedicado 1 a 1 (user -> session) Compartido muchos a 1 (user -> session) ( usa dispatcher)
Profiles->Contiene configuraciones contraseñas cifradas (se usa en cloud) +->sqlnet.ora
---
Dedicated Server vs Shared Server
---
Componentes de una BD: Segmentos->Tablas->Bloques->TableSpaces
Maestra:??
TableSpaces->Segmentos->Bloques
Database Block:Contents->Escriba de abajo hacia arriba. +->Block Header ~= id +->espacio libre +->Row data +->8kb de info que puede tener parte +->1 reglon de la tabla o la tabla entera +->limitado al tamaño del bloque +->(compuesto por bloques)
---
Crear base de datos:* /u01/app/oracle/product/12.1.0/dbhome_1/bin/dbca
---
Concurrencia de datos
Concurrencia de acceso datos
DML Locks (Exclusive) Se hace tanto implicita, como explicitamente.
Deadlock = Cuando se aciclan dos usuarios tratando de hacer cambios en rows alternadamente.
---
Transaccion 1 Transaccion 2
Update tabla 1 Update tabla 1
set s=s*1.1 set s=20
where id=1000 where id=2000
Update tabla 1 Update tabla 1
set s=s*1.1 set s=20
where id=2000 where id=1000
ORA-000060
Deadlock detected while waiting for resource
se tiene que matar el proceso.
------------Respaldos--------------
Para poder trabajar con RMAN la BD debe estar en modo archive
Lo más importante de una BD para respaldar es el pfile
Tipos de Respaldos:
+->Físicos +->Respaldo de Archivos +->SO (no se hace, no sirve) vmware? +->RMAN (administra las reglas de respaldos, ejecuta los respaldos, depura) +->Frío->bajar la BD para que no haya cambios +->Caliente->BD funcional +CMDs-> +->Se comunica con el ASM para saber donde está la info respaldada.
+->Logicos (NO SIRVE PARA RESPALDAR, Solo para extraer datos) +->Extracción de datos (datapump) +->Export +->Import +-Tipos> +->Full +->Parciales +->Cuentan con extensión .DMP
Tipos de Respaldos:
Full->Respaldan TODO al momento de la ejecución. (FULL1*)
Incrementales ->objetivo->Respaldar bloques que han sufrido CAMBIOS desde cierto respaldo (momento) ->Tipos: +->1{----Differential and default: Lo que cambió después del más reciente incremental 1-0 \--Cumulative: Lo que cambió después del más reciente incremental 0 +->0:Base para los siguientes respaldos se conoce como level 0 (es como un fullsito, ya que es la base de los demás respalditos) |\_Respalda todos los bloques que contienen datos (INC1*) |__Datafile->Backup set full +->Menor tiempo +->Ocupa menos recursos +->Ocupa menos espacio
Diferencia entre FULL1* y INC1* : El full nunca se incluye en una estrategia incremental para eso se usa el level 0
Modo Archive
Diferential/Differential Acumuliativo/Cumulative
|-------------0 | |------1
| | 1 | |-----1|
| | 1 | |----1 |
| | 1 | |---1 |
| | 1 | |--1 |
| | 1 | |-1 |
| |1 | |1 |
|------0 |------1 |
| 1 |-----1| |
| 1 |----1 | |
| 1 |---1 | |
| 1 |--1 | |
| 1 |-1 | |
|1 |1 | |
0-------------- 0--------------
LMmJVSDLMmJVSD LMmJVSDLMmJVSD
Generalmente se utiliza el tipo Diferencial
Image Copy +->Copia exacta +->Todos los archivos +->Disk
Backup set +->Entradas lógicas +->creados por rman +->repositorio rman
Backup pieces +->1 o más archivos de la BD en un formato compatco de rman +->comprimidos, solo los bloques que han sido ocupados en la BD.
Flashback +->Guarda en papelera datos borrados (casi no se usa por que ocupa mucho espacio)
------------RMAN------------ .--variable de entorno debe estar seteada
rman target /
comandos para respaldo
--cut here---
----rman rman target /
run { backup incremental level 0 database format 'db_%d_Level_0_%U_%T.BAK'; backup format 'log_DBA_t%t_s%s_p%p' (archivelog all); } EXIT
----datapump: CREATE DIRECTORY dbs AS '/u01/app/oracle/product/12.1.0/dbhome_1/dbs'; expdp \'/ as sysdba\' directory=dbs DUMPFILE=diplosi.dmp LOGFILE=diplo.log tablespaces=SYSTEM
----ver ubicación de control files
select name, value from v$parameter where name = 'control_files';
---crear un spfile
CREATE SPFILE='/u01/admin/prod/pfile/file_mydb.ora' FROM PFILE=/u01/admin/prod/pfile/initprod.ora'; create pfile from spfile;
--cut here---
------------------------
Si la base de datos no está en modo archive se respalda el pfile ?
--cut here---
----rman rman target /
run { backup incremental level 0 database format 'db_%d_Level_0_%U_%T.BAK'; backup format 'log_DBA_t%t_s%s_p%p' (archivelog all); } EXIT
----datapump: CREATE DIRECTORY dbs AS '/u01/app/oracle/product/12.1.0/dbhome_1/dbs'; expdp \'/ as sysdba\' directory=dbs DUMPFILE=diplosi.dmp LOGFILE=diplo.log tablespaces=SYSTEM
----ver ubicación de control files
select name, value from v$parameter where name = 'control_files';
---crear un spfile
CREATE SPFILE='/u01/admin/prod/pfile/file_mydb.ora' FROM PFILE=/u01/admin/prod/pfile/initprod.ora'; create pfile from spfile;
--cut here---
------------------------
Si la base de datos no está en modo archive se respalda el pfile ?
------------------------
Oracle Data Guard -> Solución de DR complementaria a Oracle RAC
+->se basa en
+->Tener la misma BD escuchando en modo pasivo (=>activo-activo)
+->En otra ubicación (en otro datacenter).
+->BD Activa -> Primaria y BD Pasiva -> Stand-by
+->Replicación de Activo a Pasivo es por medio de los redo logs (Redo Transport)
Diagrama BD:
línea continua: EW
línea punteada: RO
El stand-by no permite RW, solo RO.
en la 19c si lo permite, pero realmente por debajo, se redirije al activo.
Tipos de Stand By
+->Física->BD idéntica bloque a bloque, copia exactemente igual (redo logs)
+->Lógioca->Clón activo-activo->es un subconjunto de la BD funciona como un ETL
+->Snapshot->física que por un tiempo limitado funciona y dura solo un tiempo.
Servicios Data Guard
+->Transport services -> de redo logs->se envíen correctamente de la primaria al stand-by
+->Apply Services
+->Redo apply (física)
+->SQL apply (lógica)
+->Role management services
+->Primaria se convierta en stand-by
+->Stand-by en Primaria
+->Oracle Data Guard support role-transition ops
+->Switchover->Controlado
+->Cambiar rol de manera controlada
+->Ventanda de mantenimiento (OS/HW)
+->Failover->Emergencia->BD primaria queda inutilizable->Stand-by se convierte en primaria y viceversa
+->Unplanned role reversal
+->Emergency use
+->Oracle Data Guard: Architecture (Overview)
+->https://i1.wp.com/oracle-help.com/wp-content/uploads/2018/04/oracle-data-guard-11g-architecture11.png
+->LNSn->envía
+->RFSn->recibe
+->MRP/LSP->aplica
+->El stand-by puede hacer el backup/reportes sin molestar al primario
+->Requirements HW/OS
+->CPU Architectures
+->OS
+->OS binaries 32/64 bit
+->Oracle binaries 32/64 bit
+->
El Grid es el administrador del ASM
Si aparece->Connected to an idle instance
+->STARTUP MOUNT
Configuración de red TNSnames.ora y xxx.ora
[oracle@rac1 ~]$ export ORACLE_SID=diplo11 ;#diplo12 en el rac2
[oracle@rac1 ~]$ sqlplus / as sysdba
create configuration 'DIPLO' as primary database is 'diplosi'
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment