miércoles, 4 de diciembre de 2019

Cómo restaurar backup de RMAN en otro servidor windows con diferentes rutas

Cómo restaurar backup de RMAN en otro servidor windows con diferentes rutas


Hola.

En este post voy a explicar cómo restaurar un backup RMAN de Oracle 11g en otro servidor windows con diferentes rutas. Hace tiempo escribí otro artículo similar para Restaurar backup RMAN con las mismas rutas pero este artículo es usando Recovery Manager y con ambas bases de datos usando diferentes rutas.

En este caso la base de datos origen y la base de datos destino se encuentran en la siguientes rutas:

Base de datos origen se encuentra en D:\app\<ORACLE_BASE>\
Base de datos destino se encuentra en F:\app\<ORACLE_BASE>\

Archivos necesarios.


Primero debemos obtener los archivos necesarios de la base de datos origen para la restauración en el nuevo servidor. Son los mismos archivos para el caso de la restauración con mismas rutas.

1.- Backup de la base de datos origen
2.- Password file
3.- Pfile de la base de datos origen

Para obtener estos archivos, sigan los siguientes pasos:

1.- Backup de la base de datos origen con RMAN

RMAN> BACKUP DATABASE;
.
piece handle=D:\app\<ORACLE_BASE>\flash_recovery_area\DATABASE\BACKUPSET\2019_10_06\O1_MF_
NNNDF_TAG20191006T150022_GSNGG8C7_.BKP tag=TAG20191006T150022 comment=NONE
channel ORA_DISK_1: backup set complete, elapsed time: 00:02:16
Finished backup at 06-OCT-19
Starting Control File and SPFILE Autobackup at 06-OCT-19
piece handle=D:\app\<ORACLE_BASE>\flash_recovery_area\DATABASE\AUTOBACKUP\2019_10_06\O1_MF
_S_1020956559_GSNGLJXS_.BKP comment=NONE
Finished Control File and SPFILE Autobackup at 06-OCT-19
RMAN>

De los archivos generados, necesitamos copiar los archivos generados en las carpetas AUTOBACKUP y BACKUPSET del Flash recovery area.

-El backup del control file se encuentra en la carpeta AUTOBACKUP
-El backup de los datos se encuentra en la carpeta BACKUPSET

2.- El password file se encuentra en D:\app\<ORACLE_BASE>\product\11.2.0\dbhome_1\database

3.- Create PFILE from SPFILE en la base de datos origen y copiarlo al nuevo servidor

RMAN> SQL "CREATE PFILE FROM SPFILE";

El archivo se crea en D:\app\<ORACLE_BASE>\product\11.2.0\dbhome_1\database

Copiar el PFILE generado (INITdatabase.ORA) al servidor destino y editar las rutas del nuevo servidor, en este caso a unidad F. No deben cambiar el nombre de la base de datos, tiene que ser el mismo nombre.

Ejemplo de las lineas a editar:

database.__oracle_base='F:\app\<ORACLE_BASE>'#ORACLE_BASE set from environment
*.audit_file_dest='F:\app\<ORACLE_BASE>\admin\database\adump'
*.control_files='F:\app\<ORACLE_BASE>\oradata\database\control01.ctl','F:\app\<ORACLE_BASE>\flash_recovery_area\database\control02.ctl'
*.db_recovery_file_dest='F:\app\<ORACLE_BASE>\flash_recovery_area'

Y así con todas las lineas que tengan ruta del servidor origen deben cambiarlas por la ruta del servidor destino.

4.- Crear una base de datos en la máquina destino con el mismo nombre de la base de datos que estamos restaurando. Click aquí para crear la base de datos.

Todos los archivos generados hasta aquí los he guardado en la siguiente ubicación pero puede ser la que ustedes elijan: E:\backup\

Comandos para la restauración con RMAN


De aquí en adelante comienza la restauración de la base de datos en el nuevo servidor.

1.- Reemplazar el password file en el nuevo servidor en la misma ubicación, diferente unidad.

F:\app\<ORACLE_BASE>\product\11.2.0\dbhome_1\database

2.- Abrir un command prompt como administrador y ejecutar los siguientes comandos. Es muy importante que sea como administrador y el orden de las instrucciones.

-Asignar la variable ORACLE_SID con el nombre de la base de datos y entrar a RMAN

SET ORACLE_SID=<db_name>
RMAN TARGET /

-Apagar la base de datos y asignar el DBID de la base de datos origen. Click aqui para obtener el DBID.

RMAN>SHUTDOWN IMMEDIATE;
RMAN>SET DBID 4042975402;

-Iniciar en nomount con el PFILE generado anteriormente y editado con las nuevas rutas.

RMAN>STARTUP NOMOUNT PFILE=E:\backup\INITdatabase.ORA;

-Crear SPFILE from PFILE y forzamos nuevamente a nomount. Con esto estamos reescribiendo los parámetros de inicio de la base de datos origen a la destino.

RMAN>SQL "CREATE SPFILE FROM PFILE=''E:\backup\INITdatabase.ORA''";
RMAN>STARTUP FORCE NOMOUNT;

-Restaurar el control file del backup. Esto reescribe los archivos de control en el nuevo servidor.

RMAN> RESTORE CONTROLFILE FROM 'E:\backup\O1_MF_S_1020956559_GSNGLJXS_.BKP';

-Montar la base de datos

RMAN> ALTER DATABASE MOUNT;

-Renombrar los tres Redolog files con su nueva ruta.

RMAN>SQL "ALTER DATABASE RENAME FILE ''D:\app\<ORACLE_BASE>\oradata\DATABASE\REDO01.LOG'' TO ''F:\app\<ORACLE_BASE>\oradata\DATABASE\REDO01.LOG''";

RMAN>SQL "ALTER DATABASE RENAME FILE ''D:\app\<ORACLE_BASE>\oradata\DATABASE\REDO02.LOG'' TO ''F:\app\<ORACLE_BASE>\oradata\DATABASE\REDO02.LOG''";

RMAN>SQL "ALTER DATABASE RENAME FILE ''D:\app\<ORACLE_BASE>\oradata\DATABASE\REDO03.LOG'' TO ''F:\app\<ORACLE_BASE>\oradata\DATABASE\REDO03.LOG''";

-Borrar físicamente los tres redolog files del server destino porque me pasa que el recover falla al desconocerlos. Estos se crean nuevamente el abrir la base de datos así que no hay problema.

F:\app\<ORACLE_BASE>\ORADATA\DATABASE\REDO01.LOG
F:\app\<ORACLE_BASE>\ORADATA\DATABASE\REDO02.LOG
F:\app\<ORACLE_BASE>\ORADATA\DATABASE\REDO03.LOG

-Catalog start with desde RMAN. Con esto indicamos la ubicación de nuestros dos archivos de backup. Click en YES cuando pida confirmar catalogar los archivos. La siguiente línea puede fallar si no ejecutaron el SET DBID.

RMAN> CATALOG START WITH 'E:\backup\';

-Ejecutar las instrucciones set newname para renombre los database files a las nuevas rutas del servidor. Cambien el ORACLE_BASE path de las siguientes instrucciones.
El recover puede mostrar un error al finalizar si tienen su base de datos en modo archive log. Esto es normal ya que no estamos aplicando secuencia de archivelogs.

RMAN> RUN { 
SET NEWNAME FOR DATAFILE 'D:\APP\<ORACLE_BASE>\ORADATA\DATABASE\SYSTEM01.DBF' TO 'F:\app\<ORACLE_BASE>\oradata\DATABASE\SYSTEM01.DBF'; 
SET NEWNAME FOR DATAFILE 'D:\APP\<ORACLE_BASE>\ORADATA\DATABASE\SYSAUX01.DBF' TO 'F:\app\<ORACLE_BASE>\oradata\DATABASE\SYSAUX01.DBF'; 
SET NEWNAME FOR DATAFILE 'D:\APP\<ORACLE_BASE>\ORADATA\DATABASE\UNDOTBS01.DBF' TO 'F:\app\<ORACLE_BASE>\oradata\DATABASE\UNDOTBS01.DBF'; 
SET NEWNAME FOR DATAFILE 'D:\APP\<ORACLE_BASE>\ORADATA\DATABASE\USERS01.DBF' TO 'F:\app\<ORACLE_BASE>\oradata\DATABASE\USERS01.DBF'; 
SET NEWNAME FOR DATAFILE 'D:\APP\<ORACLE_BASE>\ORADATA\DATABASE\DATABASE_IDX01.DBF' TO 'F:\app\<ORACLE_BASE>\oradata\DATABASE\DATABASE_IDX01.DBF'; 
SET NEWNAME FOR DATAFILE 'D:\APP\<ORACLE_BASE>\ORADATA\DATABASE\DATABASE_IDX02.DBF' TO 'F:\app\<ORACLE_BASE>\oradata\DATABASE\DATABASE_IDX02.DBF'; 
SET NEWNAME FOR DATAFILE 'D:\APP\<ORACLE_BASE>\ORADATA\DATABASE\DATABASE_DAT01.DBF' TO 'F:\app\<ORACLE_BASE>\oradata\DATABASE\DATABASE_DAT01.DBF'; 
SET NEWNAME FOR DATAFILE 'D:\APP\<ORACLE_BASE>\ORADATA\DATABASE\DATABASE_DAT02.DBF' TO 'F:\app\<ORACLE_BASE>\oradata\DATABASE\DATABASE_DAT02.DBF'; 
SET NEWNAME FOR TEMPFILE 'D:\APP\<ORACLE_BASE>\ORADATA\DATABASE\TEMP01.DBF' TO 'F:\app\<ORACLE_BASE>\oradata\DATABASE\TEMP01.DBF'; 
SWITCH TEMPFILE ALL; 
RESTORE DATABASE; 
SWITCH DATAFILE ALL;
RECOVER DATABASE; 
}

-Finalmente abrimos la base de datos con la opción resetlogs. Este paso va a regenerar los REDO logs que borramos anteriormente. Ojo porque al abrir con resetlogs ya no se pueden aplicar los archivelogs después.

RMAN>ALTER DATABASE OPEN RESETLOGS;

database opened

-Es importante recrear el tablespace temporal ya que este no es restaurado por RMAN y pertenece a la base de datos destino. Les dejo aquí el link de cómo recrear el tablespace temporal.

*Aguas con las comillas y apóstrofes si están copiando los comandos.

Espero les sirva.

jueves, 28 de noviembre de 2019

Cómo ordenar elementos aleatoriamente con jQuery para Slick.js

Cómo ordenar elementos aleatoriamente con jQuery para Slick.js


Hola.

Estoy usando la librería Slick.js para mostrar una galería de fotos que se van moviendo de derecha a izquierda dentro de la página principal.

El método o constructor Slick se coloca con javascript al momento de la carga de la página sobre un div especifico a través de la class del div.

Slick.js no tiene algún método para mostrar la galería en orden aleatorio por lo que se debe resolver de otra manera. En mi caso voy a resolver con jQuery porque no tengo modo de hacerlo de otra manera.

Solución.


Lo recomendable es ordenar aleatoriamente los elementos de la galería antes de llamar al método Slick porque este agrega nuevos elementos div para hacer los efectos visuales.

Lo que hago es definir una función llamada randomize para ordenar aleatoriamente los child elements del div especificado, después llamo a esta función y finalmente llamo al método Slick.

Aquí abajo les dejo el código:


$.fn.randomize = function (selector) {
var $elems = selector ? $(this).find(selector) : $(this).children(),
$parents = $elems.parent();
$parents.each(function () {
$(this).children(selector).sort(function () {
return Math.round(Math.random()) - 0.5;
}).detach().appendTo(this); });
return this;
};

$(".clientes-logo").randomize();    

$(".clientes-logo").slick({infinite: true, autoplay: true, autoplaySpeed: 4000 });


Como ven la función randomize que ordena aleatoriamente es muy útil para ordenar elementos dentro de un div por lo que la pueden usar para algún otro propósito.

Espero les sirva.


miércoles, 27 de noviembre de 2019

Cómo acceder elemento random de una lista en c#

Cómo acceder elemento random de una lista en c#


Hola.

Acceder un elemento random de una lista en c# es un problema muy común en programación. En este caso se trata de mostrar ciertos elementos de publicidad en una vista en donde el orden no importa pero requiere de cierta movilidad.

Así que estoy usando una lista de c# para guardar elementos de tipo entero.

Lo que quiero hacer es obtener un indice aleatorio de la lista para acceder al elemento de ese indice. Con esto obtendré un elemento aleatorio cada vez que se ejecute el código.

Esto se resuelve de la siguiente manera.

Solución.


En este caso miLista es una lista de numero enteros.

1.- Crear una nueva instancia de random
2.- Obtener un numero aleatorio teniendo como máximo el numero de elementos de la lista
3.- Obtener el elemento con la posición aleatoria.

Así queda el código ejemplo:

static Random random = new Random(); 
int indiceRandom = random.Next(miLista.Count);
int elementoRandom = miLista[indiceRandom];


Espero les sirva

martes, 26 de noviembre de 2019

ASP - Permission denied - Scripting.FileSystemObject

ASP - Permission denied


Hola.

Este es un error no descriptivo de IIS de permisos de escritura al usar el objeto Scripting.FileSystemObject

Primero aquí lo recomendable es habilitar errores descriptivos de IIS para saber la linea exacta del error. Para esto hagan lo siguiente desde IIS:

El error que tengo es usando el objeto Scripting.FileSystemObject, para ser exactos el error ocurre al momento de borrar una imagen fisicamente.

Les pongo aquí el código que está ocasionando el error y la línea que falla es la que realiza el DeleteFile.

Set fs=Server.CreateObject("Scripting.FileSystemObject")
finalfile = "E:\mi\ruta\miarchivo.htm"
fs.DeleteFile(finalfile)


Solución


La solución es dar permisos al usuario de IIS (IUSR) sobre el archivo o la carpeta en cuestión.
Para saber cuál es el usuario que está usando IIS para el sitio web, sigan estos pasos:

1.- Abrir IIS
2.- Seleccionar el sitio web
3.- Seleccionar Authentication
4.- Seleccionar Anonymous Authentication y click en Edit


Edit Anonymous Authentication Credentials


Con el nombre del usuario identificado deben ir a la carpeta o archivo físico y agregar el usuario con permisos de edición.

1.- Seleccionar la carpeta o archivo con click derecho
2.- Seleccionar el tab Security
3.- Click en Edit
4.- Click en Add y buscar el usuario IUSR
5.- En permisos para IUSR seleccionar Modify
6.- Click en OK

Les dejo aquí la imagen de cómo se ve el usuario con permisos sobre una carpeta o archivo.

Security Permissions for IUSR


Después de esto ya pueden volver a intentar, el permiso de escritura del usuario IUSR debe quedar arreglado.

Espero les sirva.

Cómo ver errores descriptivos de IIS en el navegador

Cómo ver errores descriptivos de IIS en el navegador


Hola.

Tengo el error genérico de un sitio web en IIS que dice:

An error occurred on the server when processing the URL. Please contact the system administrator.

Como ven el error no dice nada mas y por lo tanto no es útil para poder debuguear y solucionar el problema.

Lo que necesito es habilitar la descripción de errores en el browser para tener mas información y así saber por dónde atacar el error.


Solución.


Para hacerlo sigan estos pasos en IIS.

1.- Abrir IIS
2.- Seleccionar del lado izquierdo el sitio web
3.- Seleccionar la opción IIS > ASP
4.- Dentro de Debugging Properties cambiar Send Errors to Browser a True
5.- Click en Apply

IIS Send Errors to Browser

Después de esto, refresquen el navegador y ya deben poder ver más información sobre el error.

Espero les sirva.

lunes, 25 de noviembre de 2019

Cómo agregar nuevo elemento a un array en c#

Cómo agregar nuevo elemento a un array en c#


Hola.

Estuve buscando la manera de cómo agregar un elemento a un arreglo de c# de manera rápida.

Bueno, resulta que no hay manera rápida de agregar un elemento a un arreglo en c#. Por definición un arreglo es de una medida fija y por lo tanto no puede ser extendido. Esto aplica para arreglos de cualquier tipo: int, string, char, etc.

En mi caso estoy usando un arreglo de enteros y quiero agregar uno al final dinámicamente por lo que no sé cual es la medida el arreglo.

Solución.


La solución aquí es usar una lista en lugar de un array. La lista puede ser extendida dinámicamente facilmente con el método add y no tienen que definir un length fijo.

Utilizar la lista facilita no solo el agregar elementos sino también otras tareas sobre la lista.

Les dejo aquí abajo un ejemplo de cómo agregar un elemento a una lista de enteros.

List<int> enteros = new List<int>(); 
enteros.add(1);


Espero les sirva.


jueves, 21 de noviembre de 2019

ORA-01157: cannot identify/lock data file 201 - see DBWR trace file

ORA-01157: cannot identify/lock data file 201 - see DBWR trace file


Hola.

Se obtiene este error cuando no se encuentra el temp data file de la base de datos de Oracle.

Me sucede porque he realizado una restauración de base de datos y el TEMP datafile no es un archivo que forme parte de los archivos de backup.

En mi caso cuando la restauración se realiza, el nombre del temp datafile es actualizado y no coincide con el de la base de datos destino. En el caso de que el nombre y la ruta del temp datafile fuera el mismo, incluso así, lo mejor es recrear el TABLESPACE temporal o el datafile temporal.

El datafile temporal no se exporta ni se restaura por lo que lo mas recomendable después de una operación de restauración es crear uno nuevo. Siempre tomando en cuenta que una base de datos de Oracle necesita al menos un datafile temporal.

En mi caso para la solución lo que hago es eliminar el TABLESPACE temporal, volverlo a crear y asignarlo a la base de datos.

Solución.


Primero lo recomendable es ver el nombre y la ubicación del datafile temporal. Para esto ejecuten el siguiente query sobre la vista v$tempfile. Verifiquen que la ruta y el nombre existan.

SQL>SELECT FILE#,STATUS,NAME FROM V$TEMPFILE;

Como mencioné se puede borrar únicamente el datafile temporal o el TABLESPACE temporal completo.

Aquí les dejo las instrucciones para crear un nuevo TABLESPACE (TEMP01) con un nuevo datafile (TEMP0101.dbf), asignar a la base de datos y borrar el TABLESPACE anterior (TEMP).

Esto se puede hacer con la base de datos prendida ya que es tablespace temporal.

SQL> CREATE TEMPORARY TABLESPACE TEMP01 TEMPFILE 'C:\app\administrator\oradata\DATABASE\TEMP0101.dbf' SIZE 200M AUTOEXTEND ON; 
SQL> ALTER DATABASE DEFAULT TEMPORARY TABLESPACE TEMP01; 
SQL> DROP TABLESPACE TEMP INCLUDING CONTENTS AND DATAFILES;


Espero les sirva.

miércoles, 20 de noviembre de 2019

ORA-20001: SYSMAN already exists

ORA-20001: SYSMAN already exists


Hola.

Como saben el usuario SYSMAN es la cuenta de Oracle usada para configurar y administrar el Enterprise Manager. Este usuario es creado para ese propósito por lo que si están viendo este error se debe a que el repositorio de Enterprise Manager ya ha sido creado con anterioridad.

El error se me presenta cuando estoy tratando de reconfigurar el Enterprise Manager de Oracle después de haber realizado una restauración de base de datos Oracle con RMAN.

Como en la base de datos origen el Enterprise Manager ya estaba configurado, el usuario SYSMAN y todos sus objetos ya estaban creados, el script truena cuando se intenta volver a crear el usuario SYSMAN.

Solución.


Ante este error busqué las siguientes instrucciones para borrar el usuario SYSMAN, roles y objetos. Estos objetos se vuelven a crear cuando se reconfigura el repositorio Enterprise Manager de Oracle.


SQL> SHUTDOWN IMMEDIATE; 
SQL> STARTUP RESTRICT; 
SQL> EXEC sysman.emd_maintenance.remove_em_dbms_jobs; 
SQL> EXEC sysman.setEMUserContext('',5); 
SQL> REVOKE dba FROM sysman; 
SQL> DROP USER mgmt_view CASCADE; 
SQL> DROP ROLE mgmt_user; 
SQL> DROP USER sysman CASCADE; 
SQL> ALTER SYSTEM DISABLE RESTRICTED SESSION;



Espero les sirva.





The script from file was loaded even though its MIME type (“text/html”) is not a valid JavaScript MIME type

The script from file was loaded even though its MIME type (“text/html”) is not a valid JavaScript MIME type


Hola.


Este post está relacionado un post anterior que escribí acerca de activar la opción Enable Parent Paths de IIS. Este error me sale justo después de activar esa opción pues ahora el archivo sí es reconocido y ejecutado.

El archivo que da problemas es un archivo asp clásico pero que su contenido es javascript por lo que el servidor web IIS tiene problemas para interpretarlo. La inclusion del archivo es así:

<script language="JavaScript" src="../asp/default_javascript.asp" type="text/javascript"></script>

Como ven es un asp que sirve javascript. Tal vez no les haga mucho sentido pero así pueden darle un poco de dinamismo al código javascript.

Solución.


Para corregir este error deben colocar las siguientes dos lineas en el archivo asp al inicio del archivo. Es muy importante que sean las dos primeras lineas del archivo para que el servidor IIS conozca el ContentType del archivo al momento de cargar.

<%   
Response.Clear()  
Response.ContentType = "text/javascript" 
%>


Espero les sirva.

martes, 19 de noviembre de 2019

GET file net::ERR_ABORTED 500 (Internal Server Error)

Error de IIS al llamar archivo - GET file net::ERR_ABORTED 500 (Internal Server Error)


Hola.

En esta ocasión escribo sobre un error de IIS común que surge cuando estamos configurando algún sitio por primera vez.

La descripción del error se ve así:

default.aspx:22 GET http://misitio.com/asp/default_javascript.asp net::ERR_ABORTED 500 (Internal Server Error)

En mi caso tengo un archivo asp que sí se encuentra físicamente en la ruta pero IIS no lo encuentra.

En este caso particular, se trata de un archivo de asp clásico que está siendo llamado a través de una ruta relativa. Es decir, ruta relativa al archivo que lo llama. En el código se ve así:

<script language="JavaScript" src="../asp/default_javascript.asp" type="text/javascript"></script>

Como ven la ruta es relativa se establece a partir del archivo que lo llama usando el punto punto.

El archivo contiene código javascript por eso ven el type como javascript pero esto no tiene que ver con el error.

Solución.


Deben activar la opción Parent Paths en IIS.

Esta opción de Enable Parent Paths permite que las rutas relativas en IIS sean interpretadas correctamente. Para esto sigan estos pasos:

1.- Abrir IIS
2.- Seleccionar al sitio web del lado izquierdo
3.- Seleccionar la opción IIS > ASP
4.- Cambiar a true en Enable Parent Paths como en la imagen
5.- Apply


IIS Enable Parent Paths

Espero les sirva.

martes, 12 de noviembre de 2019

Error: cannot add duplicate collection entry of type mimeMap with unique key attribute fileExtension set to

Error: cannot add duplicate collection entry of type ‘mimeMap’ with unique key attribute ‘fileExtension’ set to ‘.woff’


Hola.


Me encontré con este error al tratar de levantar una aplicación o sitio web en IIS 8 que corre sin problemas en IIS 6.

Básicamente recuerdo que esos MIME Types los agregué manualmente hace tiempo al web.config raíz del sitio. Y veo que ahora da problema en IIS 8.

Revisando un poco la nueva configuración de IIS 8 en Windows Server 2012 veo que esos MIME Types ya vienen por default en la configuración del sitio default por lo que está causando conflicto con las líneas que tengo en el web.config.

Los MIME Types que me están dando problemas son estas:

<mimeMap fileExtension=".svg" mimeType="image/svg+xml" />
<mimeMap fileExtension=".woff2" mimeType="font/woff2" />
<mimeMap fileExtension=".woff" mimeType="font/woff" />

Solución.


La solución en este caso es remover estas líneas que están entrando en conflicto con las ya definidas por IIS. Como ven no podemos tener duplicados.

Simplemente borren o comenten primero y prueben nuevamente.

Espero les sirva.




lunes, 11 de noviembre de 2019

Cómo ver estatus de usuarios de Oracle

Cómo ver estatus de usuarios de Oracle


Hola.

Es probable que hayan necesitado conocer el estado de un usuario de Oracle. Por diversas razones importante saber esto para identificar las acciones a tomar.

En mi caso no puedo conectarme con un usuario por que el usuario se encuentra bloqueado y necesito tener más información acerca del bloqueo.

Con este query pueden conocer el estatus de los usuarios de oracle usando la vista dba_users

SQL>SELECT username, account_status, created, lock_date, expiry_date FROM dba_users;

Una vez identificado el problema lo que hago es desbloquear al usuario. Les dejo link aquí para desbloquear un usuario de oracle.


Espero les sirva






Checar el espacio del Flash Recovery Area de Oracle

Cómo checar el espacio del Flash Recovery Area de Oracle


Hola.

En esta ocasión les dejo una manera fácil de checar cuanto espacio tienen asignado al directorio de Flash Recovery Area en Oracle.

Es muy importante administrar correctamente el espacio de Flash Recovery Area en Oracle porque si este espacio se ve sobrepasado ocasiona que la base de datos no se pueda acceder o prender.

Este folder se encuentra en la ruta:

D:\app\<ORACLE_BASE>\flash_recovery_area

El FRA o Flash Recovery Area de Oracle es la ubicación predeterminada para almacenar los archivos de Backup, Archivelogs, Flashback logs, etc.

Con el siguiente parámetro de base de datos pueden saber cual es el espacio reservado para el flash recovery area y mantenerlo por debajo de ese valor.


SQL> show parameter DB_RECOVERY_FILE_DEST_SIZE;

NAME                                     TYPE      VALUE
------------------------------------ ----------- ------------------------------
db_recovery_file_dest_size     big integer 50G

SQL>

En este caso tengo 50GB como límite para la ubicación del FRA.


Espero les sirva.



jueves, 7 de noviembre de 2019

Checar estado de base de datos Oracle

Cómo checar estado de base de datos Oracle


Hola.

Escribo este post para dejarles una manera rápida de saber el estado de una base de datos Oracle. Este query les sirve para cuando quieren saber si la base de datos Oracle está activa, montada, desmontada, etc.

Particularmente útil cuando quieren ejecutar alguna acción que depende directamente del estado en el que se encuentra la base de datos Oracle.

El siguiente query utiliza la vista V$INSTANCE para conocer el status actual de la base de datos de Oracle.


SQL> SELECT INSTANCE_NAME, STATUS, DATABASE_STATUS FROM V$INSTANCE;

INSTANCE_NAME    STATUS       DATABASE_STATUS
---------------- ------------ -----------------
ipebdm           OPEN         ACTIVE

SQL>



Espero les sirva.

miércoles, 6 de noviembre de 2019

RMAN-06189: current DBID does not match target mounted database

RMAN-06189: current DBID does not match target mounted database


Hola

Ocurre este error cuando ejecuto el comando CATALOG START WITH desde RMAN.

RMAN> CATALOG START WITH 'E:\backup\';

Starting implicit crosscheck backup at 13-OCT-19
RMAN-00571: ===========================================================
RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ===============
RMAN-00571: ===========================================================
RMAN-03002: failure of catalog command at 10/13/2019 16:39:14
RMAN-12010: automatic channel allocation initialization failed
RMAN-06189: current DBID 4269500080 does not match target mounted database (4242985402)

El error se debe a que no definí la variable DBID antes de hacer el catalog start with.

Como estoy haciendo una tarea de restauración de base de datos, anteriormente he ejecutado RESTORE CONTROL FILE y montado la base de datos con ALTER DATABASE MOUNT. Por lo que ya no puedo ejecutar set DBID.

Este error obtengo al ejecutar SET DBID inmediatamente.

RMAN> SET DBID 4242985402;

executing command: SET DBID
RMAN-00571: ===========================================================
RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ===============
RMAN-00571: ===========================================================
RMAN-03002: failure of set command at 10/13/2019 16:51:43
RMAN-06188: cannot use command when connected to a mounted target database

Les dejo link aquí para saber cómo obtener el DBID de Oracle.

Solución.


Así que tengo que apagar la base de datos y ejecutar los pasos anteriores.
En resumen: Apagar, ejecutar SET DBID, startup nomount, restore controlfile, montar y catalog start with nuevamente.

Les dejo aquí abajo los comandos RMAN y su output.

RMAN> SHUTDOWN IMMEDIATE;

ORACLE error from target database:
ORA-00210: cannot open the specified control file

Oracle instance shut down

RMAN> SET DBID 4042975402;

RMAN> SHUTDOWN IMMEDIATE;

ORACLE error from target database:
ORA-00210: cannot open the specified control file

Oracle instance shut down

RMAN> SET DBID 4242985402;

executing command: SET DBID

RMAN> STARTUP NOMOUNT;

connected to target database (not started)
Oracle instance started

Total System Global Area    1670221824 bytes

Fixed Size                     2176328 bytes
Variable Size               1342180024 bytes
Database Buffers             318767104 bytes
Redo Buffers                   7098368 bytes

RMAN> RESTORE CONTROLFILE FROM 'E:\backup\O1_MF_S_1021562333_GT6Y4Y4W_.BKP';

Starting restore at 13-OCT-19
allocated channel: ORA_DISK_1
channel ORA_DISK_1: SID=126 device type=DISK

channel ORA_DISK_1: restoring control file
channel ORA_DISK_1: restore complete, elapsed time: 00:00:03
output file name=D:\APP\<ORACLE_BASE>\ORADATA\DATABASE\CONTROL01.CTL
output file name=D:\APP\<ORACLE_BASE>\FLASH_RECOVERY_AREA\DATABASE\CONTROL02.CTL
Finished restore at 13-OCT-19

RMAN> ALTER DATABASE MOUNT;

database mounted
released channel: ORA_DISK_1

RMAN> CATALOG START WITH 'E:\backup\';
.
.
Do you really want to catalog the above files (enter YES or NO)? Y
cataloging files...
cataloging done

List of Cataloged Files
=======================
File Name: E:\BACKUP\O1_MF_NNNDF_TAG20191013T151636_GT6Y0OVS_.BKP
File Name: E:\BACKUP\O1_MF_S_1021562333_GT6Y4Y4W_.BKP


Con esto, el comando CATALOG START WITH ya lista los archivos de backup disponibles a catalogar.


Espero les sirva.







viernes, 1 de noviembre de 2019

Restaurar backup de RMAN en otro servidor windows con las mismas rutas

Restaurar backup de RMAN en otro servidor windows con las mismas rutas


Hola.

En este post voy a explicar cómo restaurar un backup RMAN de Oracle 11g en otro servidor windows. Hace tiempo escribí otro artículo similar sobre la restauración de una base de datos Oracle en otro servidor pero este artículo es utilizando Recovery Manager exclusivamente y con ambas bases de datos usando las mismas rutas.

En este caso la base de datos origen y la base de datos destino se encuentran en la misma ubicación y tienen el mismo nombre:

D:\app\<ORACLE_BASE>\

Archivos necesarios.


Primero debemos obtener los archivos necesarios de la base de datos origen para la restauración en el nuevo servidor.

1.- Backup de la base de datos origen
2.- Password file
3.- Pfile de la base de datos origen

Para obtener estos archivos, sigan los siguientes pasos:

1.- Backup de la base de datos origen con RMAN

RMAN> BACKUP DATABASE;
.
piece handle=D:\app\<ORACLE_BASE>\flash_recovery_area\DATABASE\BACKUPSET\2019_10_06\O1_MF_
NNNDF_TAG20191006T150022_GSNGG8C7_.BKP tag=TAG20191006T150022 comment=NONE
channel ORA_DISK_1: backup set complete, elapsed time: 00:02:16
Finished backup at 06-OCT-19
Starting Control File and SPFILE Autobackup at 06-OCT-19
piece handle=D:\app\<ORACLE_BASE>\flash_recovery_area\DATABASE\AUTOBACKUP\2019_10_06\O1_MF
_S_1020956559_GSNGLJXS_.BKP comment=NONE
Finished Control File and SPFILE Autobackup at 06-OCT-19
RMAN>

De los archivos generados, necesitamos copiar los archivos generados en las carpetas AUTOBACKUP y BACKUPSET del Flash recovery area.
-El backup del control file se encuentra en la carpeta AUTOBACKUP
-El backup de los datos se encuentra en la carpeta BACKUPSET

2.- El password file se encuentra en D:\app\<ORACLE_BASE>\product\11.2.0\dbhome_1\database

3.- Create PFILE from SPFILE en la base de datos origen y copiarlo al nuevo servidor

RMAN> SQL "CREATE PFILE FROM SPFILE";

El archivo se crea en D:\app\<ORACLE_BASE>\product\11.2.0\dbhome_1\database

A diferencia de la restauración en un servidor con diferentes rutas, aquí no cambiamos rutas del PFILE ya que las rutas en el nuevo servidor son las mismas.

4.- Crear una base de datos en la máquina destino con el mismo nombre de la base de datos que estamos restaurando. Click aquí para crear la base de datos.

Todos los archivos generados hasta aquí los he guardado en la siguiente ubicación pero puede ser la que ustedes elijan: E:\backup\

Comandos para la restauración con RMAN


De aquí en adelante comienza la restauración de la base de datos en el nuevo servidor.

1.- Reemplazar el password file en el nuevo servidor en la misma ubicación.

D:\app\<ORACLE_BASE>\product\11.2.0\dbhome_1\database

2.- Abrir un command prompt como administrador y ejecutar los siguientes comandos. Es muy importante que sea como administrador y el orden de las instrucciones.

-Asignar la variable ORACLE_SID con el nombre de la base de datos y entrar a RMAN

SET ORACLE_SID=<db_name>
RMAN TARGET /

-Apagar la base de datos y asignar el DBID de la base de datos origen. Click aqui para obtener el DBID.

RMAN>SHUTDOWN IMMEDIATE;
RMAN>SET DBID 4042975402;

-Iniciar en nomount con el PFILE generado anteriormente. En este caso el PFILE no ha sido modificado porque las rutas son las mismas.

RMAN>STARTUP NOMOUNT PFILE=E:\backup\INITdatabase.ORA;

-Crear SPFILE from PFILE y forzamos nuevamente a nomount. Con esto estamos reescribiendo los parámetros de inicio de la base de datos origen a la destino.

RMAN>SQL "CREATE SPFILE FROM PFILE=''E:\backup\INITdatabase.ORA''";
RMAN>STARTUP FORCE NOMOUNT;

-Restaurar el control file del backup. Esto reescribe los archivos de control en el nuevo servidor.

RMAN> RESTORE CONTROLFILE FROM 'E:\backup\O1_MF_S_1020956559_GSNGLJXS_.BKP';

-Montar la base de datos

RMAN> ALTER DATABASE MOUNT;

-Borrar fisicamente los tres redo log files del server destino porque me pasa que el recover falla al desconocerlos. Estos se crean nuevamente el abrir la base de datos así que no hay problema.

D:\app\<ORACLE_BASE>\ORADATA\DATABASE\REDO01.LOG
D:\app\<ORACLE_BASE>\ORADATA\DATABASE\REDO02.LOG
D:\app\<ORACLE_BASE>\ORADATA\DATABASE\REDO03.LOG

-Catalog start with desde RMAN. Con esto indicamos la ubicación de nuestros dos archivos de backup. Click en YES cuando pida confirmar catalogar los archivos. La siguiente línea puede fallar si no ejecutaron el SET DBID.

RMAN> CATALOG START WITH 'E:\backup\';

-Restaurar y recuperar. Pasos principales de restauración y recuperación. El primero toma un poco de tiempo al sobreescribir los archivos de datos en el folder ORADATA.

RMAN> RESTORE DATABASE;

-El recover va a mostrar un error al finalizar si tienen su base de datos en modo archive log. Esto es normal ya que no estamos aplicando secuencia de archivelogs.

RMAN> RECOVER DATABASE;

unable to find archived log
archived log thread=1 sequence=22504
RMAN-00571: ===========================================================
RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ===============
RMAN-00571: ===========================================================
RMAN-03002: failure of recover command at 10/06/2019 17:29:11
RMAN-06054: media recovery requesting unknown archived log for thread 1 with seq
uence 22504 and starting SCN of 792253069

-Finalmente abrimos la base de datos con la opción resetlogs. Este paso va a regenerar los REDO logs que borramos anteriormente. Ojo porque al abrir con resetlogs ya no se pueden aplicar los archivelogs después.

RMAN>ALTER DATABASE OPEN RESETLOGS;

database opened

-Es importante recrear el tablespace temporal ya que este no es restaurado por RMAN y pertenece a la base de datos destino. Les dejo aquí el link de cómo recrear el tablespace temporal.

Les dejo link de un nuevo post sobre restauración de una base de datos en una ubicación diferente.
*Aguas con las comillas y apóstrofes si están copiando los comandos.

Espero les sirva.

jueves, 31 de octubre de 2019

Your current security settings do not allow this file to be downloaded

Your current security settings do not allow this file to be downloaded


Hola.

Este error ocurre al estar configurando un nuevo servidor windows, sistema operativo Windows Server 2012. Por default la configuración de seguridad en estos servidores es alta por lo que no se permite descargar archivos, ejecutar scripts, ver contenido multimedia, etc.

El problema es que necesitas navegar para buscar o descargar cosas y es cuando ocurre el problema.

La solución precisamente consiste en permitir la descarga de archivos en este caso. Para corregir esto sigan los siguientes pasos:


1.- Abrir Internet Explorer
2.- Ir a menú Tools
3.- Seleccionar Internet Options
4.- Click en tab Security
5.- Click en zona Internet
6.- Click en Custom Level
7.- Click en Downloads > File Download > Enable
8.- Click en Miscellaneous > Launching applications and unsafe files > Prompt (recommended)
9.- Click en Miscellaneous > Launching programs and files in an IFRAME > Prompt (recommended)
10.- Click en OK, OK.

Internet-options-security-settings


Y ahora volver a intentar
Eso debe corregir el problema.

Espero les sirva.

Checar characterset de base de datos Oracle

Cómo checar characterset de base de datos Oracle


Hola.

En el tema del día de hoy voy a escribir acerca de cómo checar el juego de caracteres de una base de datos de Oracle.

Tema muy importante al que uno nunca pone atención hasta que ya es demasiado tarde! Generalmente uno checa estas cosas hasta que las aplicaciones comienzan a mostrar caracteres raros.

Si eres ese uno en un millón que está checando el juego de caracteres o characterset antes de crear una base de datos, bien por ti!

Aquí te dejo el query para saber el character set de la base de datos.


SQL> SELECT VALUE FROM NLS_DATABASE_PARAMETERS WHERE PARAMETER='NLS_CHARACTERSET';

VALUE
----------------------------------------
WE8MSWIN1252

SQL>


Espero les sirva.

martes, 29 de octubre de 2019

ORA-28000: the account is locked - solución

ORA-28000: the account is locked - solución


Hola.

Me sale este error al intentar desconfigurar la dbcontrol de Oracle Enterprise Manager.

Al parecer el password del usuario SYSMAN es incorrecto y esto ha causado múltiples logins fallidos lo que a su vez ocasiona que el usuario quede bloqueado.

Este escenario se puede resolver de varias maneras pero aquí les pongo por la que vienen:

SQL>ALTER USER miusuario ACCOUNT UNLOCK; 

Ahora que si les sigue pasando por algún proceso que no pueden controlar, lo más recomendable es cambiar el password del usuario en cuestión.

SQL>ALTER USER miusuario IDENTIFIED BY nuevopassword;

Estas instrucciones deben ser ejecutados con permisos necesarios, algún usuario DBA o SYS.


Espero les sirva.


Borrar tablespace con datafiles en Oracle

Cómo borrar un tablespace con datafiles en Oracle


Hola.

En este post les comparto un comando muy útil para borrar completamente un tablespace.

Me ha pasado en diversas ocasiones que necesito deshacerme de un tablespace completo con datafiles y todo.

Esto se puede presentar debido a varias razones:  realicé mal una restauración de base de datos, el datafile no corresponde con la base de datos restaurada, el tablespace temporal ya no me sirve o solo porque quiero ver al mundo arder,  etc.

Así que no hay nada mejor que eliminar el tablespace completo.

La instrucción queda así:

SQL>DROP TABLESPACE mitablespace INCLUDING CONTENTS AND DATAFILES CASCADE CONSTRAINTS;

Qué bonita y eficaz ella.

Espero les sirva.

lunes, 28 de octubre de 2019

Cómo obtener el DBID de Oracle

Cómo obtener el DBID de Oracle



Hola.

En esta ocasión les voy a compartir dos maneras de ver el DBID de una base de datos de Oracle.

Este valor es muy útil cuando se requieren realizar procedimientos de restauración de backups o para identificar una base de datos en especifico.

Lo pueden hacer con SQL o con RMAN. Abajo les dejo dos maneras rápidas de hacerlo.

1.- Consultando la vista v$database

SQL> SELECT DBID FROM V$DATABASE;

      DBID
----------
4042975402


2.- Conectando a RMAN desde un command prompt

C:\Windows\system32>RMAN TARGET /
Recovery Manager: Release 11.2.0.1.0 - Production on Mon Oct 28 21:31:09 2019
Copyright (c) 1982, 2009, Oracle and/or its affiliates.  All rights reserved.
connected to target database: DATABASE (DBID=4042975402)
RMAN>


Espero les sirva.



lunes, 21 de octubre de 2019

Borrar base de datos de Oracle 11g en Windows

Cómo borrar base de datos de Oracle 11g en Windows


Hola.

En este post voy a explicar como borrar una base de datos de Oracle 11g en Windows usando el Database Configuration Assistant también conocido como dbca.

Específicamente lo estoy haciendo en una máquina con Windows 10 pero el procedimiento aplica para Windows server 2008 y Windows server 2012 también.

Abrir una linea de comandos como administrador y ejecutar el comando dbca


De aquí en adelante todo es bastante intuitivo como todos los asistentes de instalación de Windows.

Seleccionar a opción Suprimir base de datos del menu.


En la siguiente pantalla seleccionar la base de datos a eliminar y credenciales de usuario sys. Click en terminar.


Aceptar el mensaje de advertencia sobre que se borrará la instancia de Oracle y los archivos de datos de la base de datos. Ojo que de aquí no hay marcha atrás.


La base de datos es eliminada así como el servicio de Windows.



Espero les sirva.



sábado, 19 de octubre de 2019

Crear base de datos Oracle 11g en windows

Cómo crear base de datos Oracle 11g en windows


Hola.

Este post es para explicar cómo crear una nueva base de datos de Oracle 11g en una maquina con Windows. Este procedimiento aplica para versiones de Windows server 2008 R2, Window 10 y Windows server 2012 R2.

Para este post ya deben tener instalado el software de Oracle 11g en su computadora el cual pueden descargar de aquí: https://www.oracle.com/database/technologies/112010-win64soft.html

Estoy usando el Database Configuration Assistant de Oracle 11g también conocido como dbca.

Lo primero que hacemos es abrir una consola de comandos en modo administrador y ejecutar el comando dbca.

C:\WINDOWS\system32>dbca

Con esto abriremos el asistente de instalación de Oracle 11g y en la primer pantalla hacemos click en Siguiente.


Seleccionar la opción crear base de datos.


Seleccionar usos generales o procesamiento de transacciones.


Introducir el nombre de la base de datos y de la instancia de Oracle.


Seleccionar opciones de gestión. Configurar Enterprise Manager y Database Control.


Introducir las contraseñas para los usuarios principales de Oracle: SYS, SYSTEM, DBSNMP y SYSMAN. Pueden usar la misma para todos seleccionando la opción de usar la misma contraseña.



Seleccionar la ubicación de los archivos de datos.


Seleccionar la configuración de recuperación y ubicación del flash recovery area.


Seleccionar esquemas de ejemplo o plantillas de datos en caso de requerir ejemplos de esquemas de datos.



Seleccionar parámetros de inicio: memoria SGA, memoria PGA, procesos, juego de caracteres y modo de conexión.


Seleccionar ubicación de archivos de control, datafiles o archivos de datos y redologs.



Por ultimo seleccionar las opciones de creación y si se requiere guardar las configuraciones como una plantilla.


Como ven he dejado todas las opciones default para no complicar mi instalación pero pueden personalizar de acuerdo a sus requerimientos.

Click en Terminar y a continuación viene una ventana de confirmación de la instalación donde pueden ver todos las configuraciones seleccionadas anteriormente y guardarlas si así lo desean.

Click en Aceptar para comenzar con la creación de la base de datos.



Con esto ya tendrán creada su base de datos de Oracle 11g en Windows.


Espero les sirva.




lunes, 9 de septiembre de 2019

TIBCO BW Reiniciar engines en modo fault tolerance con AppManage

TIBCO BW Cómo reiniciar engines en modo fault tolerance con AppManage


Hola.


En esta ocasión voy a escribir acerca de la manera en como detener e iniciar un engine de TIBCO BusinessWorks en modo fault tolerance usando la AppManage utility.

Resulta que hay un job programado que reinicia algunos engines fault tolerant pero sucede que, en algunas ocasiones, el engine primario se queda colgado al intentar apagarlo. El secundario si reinicia pero se queda en estatus "Standing by" y nunca toma el rol principal.

Esto ha ocasionado algunos problemas ya que los engines no son reiniciados correctamente y las transacciones se quedan atoradas hasta que por alguna otra alerta se sabe que los engines no están procesando.

Investigando un poco en la página de soporte, me encontré que los engines en modo fault tolerance deben ser detenidos e iniciados de manera especial, es decir que el orden de start y stop debe ser considerado.

Solución.

Les dejo aquí abajo la manera correcta de reiniciar los engines en modo fault tolerance.
Lo estoy replicando en mi job programado para analizar los resultados.

Para detener engines.

Stop - Primero el binding secundario y luego el primario

./AppManage -stop -app midominio/AppFolder/AppName -service AppName.par -binding AppName-1 -domain midominio -cred /path/to/credenciales.txt 

./AppManage -stop -app midominio/AppFolder/AppName -service AppName.par -binding AppName -domain midominio -cred /path/to/credenciales.txt 


Para iniciar engines

Start - Primero el binding primario y luego el secundario

./AppManage -start -app midominio/AppFolder/AppName -service AppName.par -binding AppName -domain midominio -cred /path/to/credenciales.txt 

./AppManage -start -app midominio/AppFolder/AppName -service AppName.par -binding AppName-1 -domain midominio -cred /path/to/credenciales.txt 


Pueden encontrar el artículo original de soporte en este link: 



Espero les sirva.









viernes, 6 de septiembre de 2019

Instalar PostgreSQL 9.3 en Oracle Linux

Cómo instalar PostgreSQL 9.3 en Oracle Linux Server 7.5



Hola.

Estoy haciendo un training sobre contenedores y en una unidad de estudio se necesita tener instalado PostgresSQL para hacer uno de los laboratorios del curso.

Para este curso estoy usando una máquina virtual de Oracle Linux corriendo en VirtualBox así que he necesitado conocer los pasos para instalar PostgreSQL en este ambiente.

Aquí abajo les dejo las instrucciones de cómo lo hice y que me funcionó bien.

1.- Descargar e instalar las librerías requeridas para PostgreSQL - SDL (Simple DirectMedia Layer)

  • Abrir la dirección: https://www.libsdl.org/download-1.2.php
  • Ir a la sección Runtime Libraries > Linux
  • Seleccionar con click derecho y "Save as" en SDL-1.2.15-1.x86_64.rpm
  • Una vez descargado este archivo cambiar a usuario root e instalar 
[oracle@localhost Downloads]$ sudo su
[root@localhost Downloads]# yum localinstall -y SDL-1.2.15-1.x86_64.rpm
.
.
.
Running transaction
  Installing : SDL-1.2.15-1.x86_64                                                                                                                         
  Verifying  : SDL-1.2.15-1.x86_64                                                                                                                       

Installed:
  SDL.x86_64 0:1.2.15-1                                                                                                                                        

Complete!

2.-Descargar e instalar Postgresql 9.3

  • Abrir la dirección: https://yum.postgresql.org/repopackages.php
  • Ir a la sección PostgreSQL 9.3
  • Seleccionar con click derecho y "Save as" en Red Hat Enterprise Linux 7 - x86_64
  • Una vez descargado el archivo hay que instalarlo
[root@localhost Downloads]# yum localinstall pgdg-redhat93-9.3-3.noarch.rpm 
.
.
Running transaction
  Installing : pgdg-redhat93-9.3-3.noarch                                                                                                                  1/1 
  Verifying  : pgdg-redhat93-9.3-3.noarch                                                                                                                  1/1 

Installed:
  pgdg-redhat93.noarch 0:9.3-3                                                                                                                                 

Complete!
[root@localhost Downloads]# 

3.- Instalar Postgresql server

[root@localhost Downloads]# yum -y install postgresql93-server postgresql93
.
.
Installed:
  postgresql93.x86_64 0:9.3.25-1PGDG.rhel7                                   postgresql93-server.x86_64 0:9.3.25-1PGDG.rhel7                                  

Dependency Installed:
  postgresql93-libs.x86_64 0:9.3.25-1PGDG.rhel7                                                                                                                

Complete!
[root@localhost Downloads]#

4.- Instalar la UI Administration de Postgresql

[root@localhost Downloads]# sudo yum install pgadmin3_93 pgadmin3_93-docs
.
.
Installed:
  pgadmin3_93.x86_64 0:1.22.1-1.rhel7                                         pgadmin3_93-docs.x86_64 0:1.22.1-1.rhel7                                        

Dependency Installed:
  wxBase.x86_64 0:2.8.12-8.el7                                                   wxGTK.x86_64 0:2.8.12-8.el7                                                  

Complete!
[root@localhost Downloads]#

4.- Iniciar la base de datos

[root@localhost bin]$ /usr/pgsql-9.3/bin/postgresql93-setup initdb
Initializing database ... OK

5.- Activar prendido automático para iniciar al arrancar el sistema

[root@localhost bin]$ systemctl enable postgresql-9.3.service 
Created symlink from /etc/systemd/system/multi-user.target.wants/postgresql-9.3.service to /usr/lib/systemd/system/postgresql-9.3.service.

6.- Iniciar el servicio

[root@localhost bin]# /sbin/service postgresql-9.3 start
Redirecting to /bin/systemctl start postgresql-9.3.service

7.- Checar el estatus de la base de datos

[root@localhost bin]# /sbin/service postgresql-9.3 status
Redirecting to /bin/systemctl status postgresql-9.3.service
● postgresql-9.3.service - PostgreSQL 9.3 database server
   Loaded: loaded (/usr/lib/systemd/system/postgresql-9.3.service; enabled; vendor preset: disabled)
   Active: active (running) since Fri 2019-09-06 14:11:47 EDT; 1min 10s ago
  Process: 21118 ExecStart=/usr/pgsql-9.3/bin/pg_ctl start -D ${PGDATA} -s -w -t 300 (code=exited, status=0/SUCCESS)
  Process: 21108 ExecStartPre=/usr/pgsql-9.3/bin/postgresql93-check-db-dir ${PGDATA} (code=exited, status=0/SUCCESS)
 Main PID: 21121 (postgres)
   Memory: 14.4M
   CGroup: /system.slice/postgresql-9.3.service
           ├─21121 /usr/pgsql-9.3/bin/postgres -D /var/lib/pgsql/9.3/data
           ├─21122 postgres: logger process   
           ├─21124 postgres: checkpointer process   
           ├─21125 postgres: writer process   
           ├─21126 postgres: wal writer process   
           ├─21127 postgres: autovacuum launcher process   
           └─21128 postgres: stats collector process   

Sep 06 14:11:46 localhost.localdomain systemd[1]: Starting PostgreSQL 9.3 database server...
Sep 06 14:11:46 localhost.localdomain pg_ctl[21118]: < 2019-09-06 14:11:46.570 EDT >LOG:  redirecting log output to logging collector process
Sep 06 14:11:46 localhost.localdomain pg_ctl[21118]: < 2019-09-06 14:11:46.570 EDT >HINT:  Future log output will appear in directory "pg_log".
Sep 06 14:11:47 localhost.localdomain systemd[1]: Started PostgreSQL 9.3 database server.
[root@localhost bin]# 

Estos pasos me funcionaron para tener la base de datos PostgreSQL 9.3 instalada y lista para operar en Oracle Linux 7.5.

Update: Este método también funciona para Oracle Linux Server 7.6


Espero les sirva.