Paso0: Poner el tiquete en antención
- El primer paso en poner el tiquete en antención para que el usuario sepa que va a iniciar el proceso

Paso1: conectarse al servidor
- Conectarse al servidor r/Oracle01
ssh sigesadesa.una.ac.cr -l root
- No conectarnos con el osuario oracle
su – oracle
- Establecemos la variable de SID de la base de datos
export ORACLE_SID=CCONTRA
Paso2: clonar
- Identificamos el respaldo
ls -ltrh /respaldos/rman/SIGESA
- Y lo guardamos en un block de notas, ejemplo
02:55 CNTRL_CUNA01_20250116_c-2894181579-20250116-03.back
- Nos vamos a esta ruta y editamos el archivo
cd /home/oracle/scripts
nano restore.rman
- Modificamos el archivo con el archivo y la hora del respaldo mas 2 minutos

- Ingresasmos a sql
sqlplus / as sysdba
- Comprobamos que estamos en la base de datos correcta
show pdbs;

- Si es correcta ejecutamos
shut immediate
startup restrict mount
show parameters control_file
- Borramos la base de datos
drop database;
exit
- Eliminar las rutas del la base de datos:
rm -rf /u02/app/oracle/oradata/${ORACLE_SID}/*
rm -rf /u02/app/oracle/fast_recovery_area/${ORACLE_SID}
rm -rf /u01/app/oracle/product/19.0.0.0/dbhome_1/dbs/lk${ORACLE_SID}
rm -rf /u01/app/oracle/product/19.0.0.0/dbhome_1/dbs/hc_${ORACLE_SID}.dat
- Eliminar de la ruta /respaldos/rman/SIGESA/ donde se guarda el respaldo de sigesa, cualquier archivo que sea anterior al día que se va a realizar la recuperación
find /respaldos/rman/SIGESA/ ! -newermt $(date +%Y%m%d) | xargs rm -f ;
- Lanzar rman
cd /home/oracle/scripts/
rman target / @restore.rman
Paso3: configurar instancia
- Conectarse al servidor r/Oracle01
ssh sigesadesa.una.ac.cr -l root
- No conectarnos con el osuario oracle
su – oracle
- Establecemos la variable de SID de la base de datos
export ORACLE_SID=CCONTRA
- Ingresasmos a la dirección
cd /home/oracle/scripts
- Ingresamso a sqlplus
sqlplus / as sysdba
- y vemois que se lalma SIGESA
show pdbs;
- Resultado

- para renombrarla
exit
- Ingresamos a
cd /home/oracle/scripts
- Ingresamos a sql
sqlplus / as sysdba
- Y ejecutamos
@CONTRALORIA.sql
- Resultado

- ejecutamos
show pdbs;
- Resultado

- Modificamos la sesión para que estemos en la BD CONTRALORIA
alter session set container=CONTRALORIA;
- Resultado

- Y ejecutamos los siguientes alter user que modifican las contraseñas de los usuarios
alter user system identified by dba4desa;
alter user system account unlock;
alter user sys identified by dba4desa;
alter user sys account unlock;
alter user sysman identified by dba4desa;
alter user sysman account unlock;
alter user adm identified by sigesa2015;
alter user adm account unlock;
alter user www_sigesa identified by sigesa2015;
alter user www_sigesa account unlock;
- Esto tambien lo podemos ejecutar en la conexión de SQL Developer

- Ejecutamos los siguientes updates que modifican datos sensibles
update usuario set clave = '$2a$10$rIhwk3WpjvYoz6dboLa5We33qzrwOcPWn3YnQJDcv.PZePQ3spU7a', correo = 'a@gmail.com';
update persona_correo set correo_electronico = id_persona_correo || '@gmail.com';
update parametro set valor='a@gmail.com' where llave='param_rhu_fmo_email_copia_instancias_notificacion_fin_labores';
Insert into USUARIO_ROL (ID_USUARIO_ROL,USUARIO,ROL,NOTAS,ESTADO,FECHA_CREACION,USUARIO_CREACION,FECHA_MODIFICACION,USUARIO_MODIFICACION,VERSION,CAMPO_CONFIGURABLE,FECHA_DESDE,FECHA_HASTA) values (SQ_USUARIO_ROL.nextval,'1','9747',null,'1',to_date('30/04/15','DD/MM/RR'),'1',to_date('30/04/15','DD/MM/RR'),'1','0',null,to_date('15/06/16','DD/MM/RR'),to_date('31/12/25','DD/MM/RR'));
update persona_telefono set telefono = id_persona_telefono;
update parametro set valor = 'sergio.campos.rodriguez@una.cr' where id_parametro in (3603,814,10091,10090,6078,5518,3242,4678,5878);
update parametro set valor = replace(valor, '/NFS', '') where id_parametro in (1409,942,9200);
update parametro set valor = 'SIGESA PRUEBAS<sigesa@una.ac.cr>' where id_parametro = 944;
update parametro set valor = '@una.cr' where llave = 'param_epf_feh_factura_electronica_mail';
update EME.persona_general_historica set correo_electronico = concat(id_persona_general_historica,'@gmail.com');
update EME.persona_general_temporal set correo_electronico = concat(id_persona_general_temporal,'@gmail.com');
update TEUNA.estudiantes_banner set correo = concat(ROWNUM, '@gmail.com');
update parametro set valor = 'http://documentosdesa.una.ac.cr/alfresco/api/-default-/public/alfresco/versions/1/' where llave = 'param_sdkuna_alfresco_server';
update parametro set valor = 'http://documentosdesa.una.ac.cr/alfresco/cmisatom' where llave = 'param_sdkuna_alfresco_server_cmisatom';
UPDATE "SAS"."PARAMETRO" SET VALOR = 'http://documentosdesa.una.ac.cr/alfresco/api/-default-/public/authentication/versions/1' WHERE LLAVE = 'param_sdkuna_alfresco_rest_auth';
UPDATE "SAS"."PARAMETRO" SET VALOR = 'http://documentosdesa.una.ac.cr/alfresco/api/-default-/public/alfresco/versions/1' WHERE LLAVE = 'param_sdkuna_alfresco_rest_core';
UPDATE "SAS"."PARAMETRO" SET VALOR = 'http://documentosdesa.una.ac.cr/alfresco/api/-default-/public/search/versions/1' WHERE LLAVE = 'param_sdkuna_alfresco_rest_search';
UPDATE "SAS"."PARAMETRO" SET VALOR = '4afe563e-3bf4-4b4a-abcc-4c4dee44c731' WHERE LLAVE = 'param_sdkuna_alfresco_rest_root_repository_id';
UPDATE "SAS"."PARAMETRO" SET VALOR = 'a21b89a8-9a18-4763-9430-e78ff2ace722' WHERE LLAVE = 'param_sdkuna_alfresco_rest_plantillas_folder_id';
UPDATE "SAS"."PARAMETRO" SET VALOR = '6a2b132c-83cc-4a77-8967-3938df416499' WHERE LLAVE = 'param_sdkuna_alfresco_rest_factura_electronica_folder_id';
UPDATE "SAS"."PARAMETRO" SET VALOR = '91ec5cd5-b63b-4374-8067-7f75e2e12d4c' WHERE LLAVE = 'param_sdkuna_alfresco_rest_constancias_folder_id';
UPDATE "SAS"."PARAMETRO" SET VALOR = '91ec5cd5-b63b-4374-8067-7f75e2e12d4c' WHERE LLAVE = 'param_sdkuna_alfresco_rest_constancias_folder_id';
update parametro set valor = 'TEUNA UNA<sigesapruebas@una.ac.cr>' where id_parametro = 12467;
commit;
- Le damos ENTER hasta que salga el commit

- Cambiar el dblink de BANNER9 a QA
DROP PUBLIC DATABASE LINK BANNER9;
CREATE PUBLIC DATABASE LINK BANNER9
CONNECT TO baninst1 IDENTIFIED BY u_pick_it
USING '(DESCRIPTION =(ADDRESS = (PROTOCOL = TCP)(HOST = bannerdesa.una.ac.cr)(PORT = 1521))(CONNECT_DATA =(SERVER = DEDICATED)(SERVICE_NAME = qa.una.ac.cr)))';
commit;
- Creamos los roles de desarrollo
CREATE ROLE DESARROLLO NOT IDENTIFIED;
GRANT CREATE SESSION TO DESARROLLO;
GRANT ALTER ANY INDEX TO DESARROLLO;
GRANT ALTER ANY SEQUENCE TO DESARROLLO;
GRANT ALTER ANY TABLE TO DESARROLLO;
GRANT ALTER ANY TRIGGER TO DESARROLLO;
GRANT ALTER SESSION TO DESARROLLO;
GRANT ALTER USER TO DESARROLLO;
GRANT AUDIT ANY TO DESARROLLO;
GRANT COMMENT ANY TABLE TO DESARROLLO;
GRANT CREATE ANY INDEX TO DESARROLLO;
GRANT CREATE ANY JOB TO DESARROLLO;
GRANT CREATE ANY MATERIALIZED VIEW TO DESARROLLO;
GRANT CREATE ANY SEQUENCE TO DESARROLLO;
GRANT CREATE ANY SYNONYM TO DESARROLLO;
GRANT CREATE ANY TABLE TO DESARROLLO;
GRANT CREATE ANY TRIGGER TO DESARROLLO;
GRANT CREATE ANY VIEW TO DESARROLLO;
GRANT CREATE DATABASE LINK TO DESARROLLO;
GRANT CREATE JOB TO DESARROLLO;
GRANT CREATE LIBRARY TO DESARROLLO;
GRANT CREATE MATERIALIZED VIEW TO DESARROLLO;
GRANT CREATE PROCEDURE TO DESARROLLO;
GRANT CREATE PUBLIC DATABASE LINK TO DESARROLLO;
GRANT CREATE PUBLIC SYNONYM TO DESARROLLO;
GRANT CREATE ROLE TO DESARROLLO;
GRANT CREATE SEQUENCE TO DESARROLLO;
GRANT CREATE ANY SYNONYM TO DESARROLLO;
GRANT CREATE ANY TABLE TO DESARROLLO;
GRANT CREATE ANY PROCEDURE TO DESARROLLO;
GRANT CREATE ANY TRIGGER TO DESARROLLO;
GRANT CREATE ANY VIEW TO DESARROLLO;
GRANT CREATE DATABASE LINK TO DESARROLLO;
GRANT CREATE JOB TO DESARROLLO;
GRANT CREATE LIBRARY TO DESARROLLO;
GRANT CREATE MATERIALIZED VIEW TO DESARROLLO;
GRANT DELETE ANY TABLE TO DESARROLLO;
GRANT DROP ANY TRIGGER TO DESARROLLO;
GRANT DROP ANY VIEW TO DESARROLLO;
GRANT DROP PUBLIC DATABASE LINK TO DESARROLLO;
GRANT DROP PUBLIC SYNONYM TO DESARROLLO;
GRANT DROP USER TO DESARROLLO;
GRANT EXECUTE ANY PROCEDURE TO DESARROLLO;
GRANT EXECUTE ANY PROGRAM TO DESARROLLO;
GRANT FLASHBACK ANY TABLE TO DESARROLLO;
GRANT INSERT ANY TABLE TO DESARROLLO;
GRANT SELECT ANY DICTIONARY TO DESARROLLO;
GRANT SELECT ANY SEQUENCE TO DESARROLLO;
GRANT UPDATE ANY TABLE TO DESARROLLO;
commit;
- Truncar las tablas grandes de RHU para liberar espacio
truncate table rhu.concepto_resultado_recal;
truncate table rhu.concepto_resultado_val_re;
truncate table sas.registro_recurso;
- Liberamos mas espacio de tablas de RHU (no ejecuitar en DESA02 o DESA08)
truncate table rhu.concepto_resultado_valor;
ALTER TABLE RHU.CONCEPTO_RESULTADO_VALOR MODIFY CONSTRAINT FK_CONCEPTO_R_CONCEPTO_RE_4 DISABLE;
truncate table rhu.concepto_resultado;
ALTER TABLE RHU.CONCEPTO_RESULTADO_VALOR MODIFY CONSTRAINT FK_CONCEPTO_R_CONCEPTO_RE_4 ENABLE;
commit;
- Disminuir los tablespace
set serveroutpu on;
BEGIN
FOR r IN (select 'ALTER DATABASE DATAFILE '''||file_name||''' RESIZE '||smallest_mb||'M' str
from (
SELECT file_name,
CEIL ((NVL (hwm, 1) * t.block_size) / 1024 / 1024) smallest_mb,
CEIL (blocks * t.block_size / 1024 / 1024) current_mb
FROM dba_data_files a,
dba_tablespaces t,
(SELECT file_id, MAX (block_id + blocks - 1) hwm
FROM dba_extents
GROUP BY file_id) b
WHERE t.tablespace_name = a.tablespace_name
AND a.file_id = b.file_id(+)
)where current_mb-smallest_mb>=10
) LOOP
begin
EXECUTE IMMEDIATE r.str ;
dbms_output.put_line('Exitoso:'||r.str);
EXCEPTION
WHEN OTHERS THEN
dbms_output.put_line('ERROR RESIZE EJECUTE MANUALMENTE:'||r.str);
end;
END LOOP;
END;
/
- Este script retorna una serie de resultados copiamos todos los que dierón error

- Los modificamos para ponerles 300m y punto y coma ejemplo y lo ejecutamos
ALTER DATABASE DATAFILE '/u02/app/oracle/oradata/CCONTRA/DBF260BEDF5248BAE0539703000AFE64/datafile/o1_mf_tab_06_mrm347y5_.dbf' RESIZE 300M;
ALTER DATABASE DATAFILE '/u02/app/oracle/oradata/CCONTRA/DBF260BEDF5248BAE0539703000AFE64/datafile/o1_mf_auditori_mrm339hd_.dbf' RESIZE 300M;
- Luego de arriba a abajo como el 10 registro dice «undotbs2» lo copiamos ya que la utilizaremos mas adelante
Exitoso:ALTER DATABASE DATAFILE
'/u02/app/oracle/oradata/CCONTRA/DBF260BEDF5248BAE0539703000AFE64/datafile/o1_mf
_undotbs2_mrm1xc4d_.dbf' RESIZE 3M
Eliminar UNDOTBS2
- salimos
exit
- ingresamos
su - oracle
export ORACLE_SID=CCONTRA
sqlplus / as sysdba
show pdbs;

- Ejecutamos
- Esto:
- Detiene la BD
- La monta para poder modificar los archivos de configuración y no aceptar configuraciones
- Habilita los logs
Shut immediate
Startup mount
ALTER DATABASE ARCHIVELOG;
- Resultado



- Luego modificamos la sesion
alter session set container=CONTRALORIA;

- y luego con la información del segundo que habiamos guardado
Exitoso:ALTER DATABASE DATAFILE '/u02/app/oracle/oradata/CCONTRA/DBF260BEDF5248BAE0539703000AFE64/datafile/o1_mf_undotbs2_mkfm2987_.dbf' RESIZE 3M
- lo que ocupamos es la dirección del archivo
'/u02/app/oracle/oradata/CCONTRA/DBF260BEDF5248BAE0539703000AFE64/datafile/o1_mf_undotbs2_mrm1xc4d_.dbf'
- vamos a modificar esta linea
# Formato
ALTER DATABASE DATAFILE 'ruta_archivo' OFFLINE
# Ejemplo
ALTER DATABASE DATAFILE '/u02/app/oracle/oradata/CCONTRA/DBF260BEDF5248BAE0539703000AFE64/datafile/o1_mf_undotbs2_mrm1xc4d_.dbf' OFFLINE;
- Resultado

- Ahora salimos
exit
- Y volvemos a ingresar
sqlplus / as sysdba

- Verificamos que estamos en CONTRALORIA
show pdbs;

- Y mandamos a abrir la base de datos
ALTER DATABASE OPEN;

- Modificamos la sesión
alter session set container=CONTRALORIA;

- Y eliminamos el UNDOTBS2
DROP TABLESPACE UNDOTBS2 INCLUDING CONTENTS AND DATAFILES;

- Salimos
exit
- Volvemos a ingresar
sqlplus / as sysdba
- Detenemos
SHUT IMMEDIATE;

- y la levantamos
STARTUP;

Recrear el UNDO
- Continuando modificamos la sesión
alter session set container=CONTRALORIA;

- Ejecutamos
CREATE UNDO TABLESPACE UNDOTBS2 DATAFILE SIZE 64M AUTOEXTEND ON NEXT 32M MAXSIZE UNLIMITED ONLINE RETENTION NOGUARANTEE BLOCKSIZE 8K FLASHBACK ON;
ALTER SYSTEM SET UNDO_TABLESPACE= UNDOTBS2 Scope=both;
Drop tablespace UNDOTBS1 including contents and datafiles;

- Salimos
exit
- Reiniciamos la BD
sqlplus / as sysdba
show pdbs;
Shut immediate
Startup

Paso4: Verificar conexión de BD en SQL Developer
- Ha este punto podemos verificar que la BD esta funcional en SQL Developer
- Solo ver que conectar

Paso5: Deploy aplicación de producción
- Ahora para el caso de contraloría como acabamos de clonar la BD de producción
- Debemos hacer lo mismo de la aplicación ya que pueden tener versiones diferentes
- El servidor de desa es el siguiente, ha este es el que le vamos a actualizar la aplicación
Nombre: SIGESA-CONTRALORIA
DNS: test-contra.una.ac.cr
IP: 10.0.2.15

- Para obtener la aplicación lo vamos hacer desde cualquier nodo de producción

- Por ejemplo
Nombre: SIGESA-PROD01
IP: 10.0.2.153

- para esto nos conectamos al servidor c/u
ssh 10.0.2.15 -l cgi
- Ingresamos con el usuario tomcat t/u4t
su - tomcat8
- esto ingresa al directorio /tomcat8

- Detenemos el tomcat
./bin/shutdown.sh
- Removemos los logs
rm -rf logs/* temp/* work/* application*.gz
- Y ingresamos al directorio webapps para borrar la aplicación
cd /tomcat8/webapps/
- Si listamos
ls
- Observamos el directorio y el .war de sigesa-webapp
- Asi es como se debe llamar para contraloría

- Por lo tanto lo eliminamos
rm -rf sigesa-webapp*
- Y obtenemos el .war de SIGESA-PROD01 y lo renombramos
- pero para hacer esto primero debemos saber el numero de deploy del war en producción
- para esto podemos ejecutar t/u4t
ssh tomcat8@10.0.2.153 "ls /tomcat8/webapps"
- Esto nos retorna el listado y el nombre del war que ocupamos

- Ya con esto modificamos la siguiente instrucción
# Formato
scp tomcat8@10.0.2.153:/tomcat8/webapps/nombre_archivo.war sigesa-webapp.war
# Ejemplo
scp tomcat8@10.0.2.153:/tomcat8/webapps/sigesa-webapp-1.0.0-SNAPSHOT##1874.war sigesa-webapp.war
- Regresamos de directorio
cd ..
- Verificamos que el servidor tomcat esta apagado y no existen procesos
./bin/shutdown.sh
ps -ef |grep tomcat
rm -rf logs/* temp/* work/* application*.gz
- Iniciamos el servidor
./bin/startup.sh
- Y verificamos que levanta
tail -f logs/catalina.out
- Verificamos que la aplicación este levantando
https://test-contra.una.ac.cr/sigesa-webapp/security/login.xhtml

- Y listo
Paso6: actualizar archivo control de clonaciones
- Ahora debemos ingresar a
- https://docs.google.com/spreadsheets/d/1aR6CEO6sWJZmODZtJLwhxshq9zcYG9TNUI5IvQ5PCp4/edit?gid=695721135#gid=695721135
- Al tab de «Bitacora Verificación de Respaldos y Clonaciones»
- Y Agregamos el registro

Paso7: cerrar el Tiquete
- Reponder el tiquete
Clonación éxitosa
