Oracle acaba de sacar su framework JET para la creación de front-end de aplicaciones web usando Javascript.
Me figuraba que sería otro de los "tochos" de esta empresa, con documentación críptica y montones de manuales por leerse. Nada de eso: El producto va como como la seda. Con JET se pueden empezar aplicaciones con un par de clicks, sabiendo que estás sobre un framework muy bien estructurado y que te quita la mayoría de dolores de cabeza típicos de una aplicación de gestión.
Una vez descargada la plantilla, sólo hay que hacer copia-pegar de las "recetas" que cubren una gran cantidad de supuestos de uso o "patterns" que nos encontramos en este tipo de aplicaciones. La plantilla está diseñada para que el código esté ordenado y sea fácil de mantener.
Está basado sobre código abierto (aunque JET no lo es al 100% de momento). Usa, entre otros, jquery y knockout para la sincronización.
Las plantillas vienen por defecto con mobile first, lo que nos ahorra tener que pensar también en el aspecto del renderizado en múltiples plataformas.
Para aplicaciones de gestión es especialmente interesante el apartado de Data collections, podemos asociar los UI widgets a nuestras fuentes de datos de forma bastante fácil.
Sólo necesitamos un sencillo servidor web corriendo en la raiz del proyecto para poder trabajar.
A diferencia de otros frameworks más especializados, JET decide un montón de cosas del front de tu aplicación. El aspecto, menús, interacción,... Esto puede ser bueno si lo que necesitas es concentrarte en el backend.
Lo que me gusta es que trabajas con él de la misma forma en que tú ya estás trabajando: Cuando necesitas algo, lo buscas, le haces copiar-pegar y lo adaptas a tu necesidad.
El contar con el respaldo de una empresa como Oracle también es un tanto a favor en cuanto a la estabilidad y mantenimiento del framework. Oracle quiere meterse en las tablets y los móviles y me da la impresión de que por este camino, ayudando a los desarrolladores, va a conseguirlo.
No es para nada casualidad que hace poco Oracle creaba su centro de soporte para Node y sacara los drivers oficiales (node-oracledb) para conectar este con su gestor de base de datos. La apuesta de Oracle por Javascript y el mobile va muy en serio.
Mostrando entradas con la etiqueta oracle. Mostrar todas las entradas
Mostrando entradas con la etiqueta oracle. Mostrar todas las entradas
viernes, 30 de octubre de 2015
martes, 25 de noviembre de 2014
Oracle password no caduca
Para que no caduquen los passwords de las cuentas de Oracle podemos cambiar el perfil.
Primero, miramos el perfil del usuario:
select profile from DBA_USERS where username = '<username>';
y después seteamos el password_life_time del perfil:
alter profile <profile_name> limit password_life_time UNLIMITED;
martes, 25 de marzo de 2014
Django llamar a procedimientos almacenados Oracle con parámetros de salida
En el momento de escribir esto (1.6 de django) y después de darle varias vueltas, he llegado a la conclusión de que no es factible acceder al contenido de los parámetros de retorno sin usar directamente cx_Oracle, lo que en un momento dado puede repercutir en la portabilidad de la aplicación.
Teniendo esto claro, se trata de diseñar una estrategia que nos permita usar toda la potencia de los procedimientos almacenados con el mínimo coste en caso de cambiar de gestor de base de datos.
He intentado alejarme del estándar lo menos posible pero, como he comentado, no veo forma de librarse del uso directo de cx_Oracle. Esto es debido a las particularidades que presenta cada gestor a la hora de reservar espacio para las variables de salida en función del tipo. Por ello, lo que he hecho es escribir una función para cada tipo de parámetro de salida, por ejemplo,
Para un procedimiento como este:
En resumen; No es la mejor solución del mundo pero es fácil de portar si cambiamos de gestor de base de datos.
Teniendo esto claro, se trata de diseñar una estrategia que nos permita usar toda la potencia de los procedimientos almacenados con el mínimo coste en caso de cambiar de gestor de base de datos.
He intentado alejarme del estándar lo menos posible pero, como he comentado, no veo forma de librarse del uso directo de cx_Oracle. Esto es debido a las particularidades que presenta cada gestor a la hora de reservar espacio para las variables de salida en función del tipo. Por ello, lo que he hecho es escribir una función para cada tipo de parámetro de salida, por ejemplo,
from django.db import connection import cx_Oracle def call_proc_str1(cadena, valors=None): """ llama a un procedimiento Oracle cuyo ultimo parámetro es un string de salida """ cur = connection.cursor() # preparam cadena per a Oracle cadena="BEGIN %s; END;;" % (cadena,) # preparam el parametre de sortida sortida=cur.cursor.var(cx_Oracle.STRING) # afeixim paràmetre com a darrer valors.append(sortida) try: cur.execute(cadena, valors) # retornam paràmetre de sortida return sortida.getvalue() except Exception, e: mensaje="%s Error: call_proc cadena#%s valors#%s" % (e, cadena, valors) logger.error(mensaje) raise Exception(mensaje) finally: cur.close()
Se observan varios detalles:
- Hay que formar la cadena de la llamada como cadena="BEGIN %s; END;;" % (cadena,). Es debido a la forma cómo se hace la llamada via execute.
- Se crea y se reserva espacio para un string mediante cur.cursor.var(cx_Oracle.STRING) y se añade al final de los parámetros de conexión.
- Extraemos el valor del parámetro mediante sortida.getvalue()
Para un procedimiento como este:
create or replace procedure prueba( param1 in varchar2, param2 in varchar2, param3 out varchar2) as .....La llamada sería
try: plsql="prueba(%s, %s, %s)" param3=call_proc_str1(plsql, [param1, param2]) return jOk(param3) except Exception, ex: return jErr(str(ex))
Notar que usamos el placeholder %s de python-db en vez de el de Oracle.
En resumen; No es la mejor solución del mundo pero es fácil de portar si cambiamos de gestor de base de datos.
lunes, 24 de marzo de 2014
python cx_oracle code patterns
Here some useful notes about cx_Oracle taken from dbaportal.eu
http://dbaportal.eu/sidekicks/sidekick-cx_oracle-code-paterns/
and a pdf backup.
http://dbaportal.eu/sidekicks/sidekick-cx_oracle-code-paterns/
and a pdf backup.
sábado, 15 de febrero de 2014
Instalación de Oracle Database 12 en Oracle Linux 6
Instalación del entorno gráfico
Bajar el Oracle Linux 6 de oracle.com y arrancar. Como el instalador es gráfico, tenemos que instalar un escritorio obligatoriamente. Puede ser gnome o KDE.
Si estas instalando en entorno virtual, puedes usar dos CDs, uno con el disco de boot y otro con el sistema completo.
Cuando nos pida seleccionar elementos, escojemos Internet->Navegador web y en Escritorio tenemos que seleccionar X Windows, Escritorio y todo lo relacionado con gnome.
Nombre de máquina y configuración de red
Una posibilidad es dbserver.nombre_empresa.com
En configuración de red sólo tenemos que activar la opción "Conectar la tarjeta al inicio del sistema".
Espacio en disco y creación de particiones
Dejar un mínimo de 40Gb de disco y 2Gb de RAM.
En el asistente debemos seleccionar "Crear las particiones manualmente". Creamos una partición primaria en ext4 y otra de swap. Seleccionar en cada caso las opciones. Primero creamos la partición primaria, le ponemos el tamaño y la damos como activa. Seguidamente creamos la partición de swap con el File System "Swap" y le damos "ocupar todo el espacio disponible".
Tener en cuenta que el espacio de swap debe ser 1,5 veces el de la memoria RAM. Por lo tanto, nos quedará
partición primaria: Tamaño_disco - (1,5 * RAM)
swap: todo lo que quede
Para crear la partición primaria: Crear->Partición estándar
Punto de montaje: /
Sistema de archivos ext4
Tamaño: (mínimo 40000MB)
Tamaño fijo
Forzar partición primaria
Para el área de swap:
Crear->Partición estándar
Sistema de archivos sqap
Completar hasta el máximo aceptable
Usuario
Cuando nos pida el nombre de usuario darle el nombre "oracle".
Terminar el asistente y hacer reboot.
Entrar en el entorno gráfico como usuario oracle.
Primero tenemos que configurar el entorno para que cumpla con las especificaciones de oracle, tenemos que buscar el fichero de preinstalación adecuado a nuestra versión, en este momento es
oracle-rdbms-server-12cR1-preinstall
Abrir terminal y hacer
su
cd /etc/yum.repos.d/
wget http://public-yum.oracle.com/public-yum-ol6.repo
yum install oracle-rdbms-server-12cR1-preinstall
yum update
[ --- Snapshot --- ]
Hacer reboot
Cuando volvamos a abrir sesión, editar el la configuración de selinux para bajar la protección
su
vi /etc/selinux/config
cambiar la linea SELINUX=enforcing por SELINUX=permissive
Con el firefox, entrar en la página web de Oracle y bajar los dos ficheros zip de Oracle Database 12c
Crear la estructura de directorios
su
cd /
mkdir -p /u01/app/oracle/product/12c/db_1
Donde "oracle" es el nombre de usuario y por tanto será el oracle path de este usuario.
Damos propiedad al grupo oinstall.
chown -R oracle:oinstall /u01
chmod -R 775 /u01
Salimos de su
exit
Editamos el profile del usuario oracle para que incluya el path
cd /home/oracle
vi .bash_profile
Y añadimos:
ORACLE_HOSTNAME=dbserver.empresa.com; export ORACLE_HOSTNAME
ORACLE_UNQNAME=orcl; export ORACLE_UNQNAME
ORACLE_BASE=/u01/app/oracle; export ORACLE_BASE
ORACLE_HOME=$ORACLE_BASE/product/12c/db_1; export ORACLE_HOME
ORACLE_SID=orcl; export ORACLE_SID
PATH=$ORACLE_HOME/bin:$PATH; export PATH
LD_LIBRARY=$ORACLE_HOME/lib:/lib:/usr/lib; export LD_LIBRARY
CLASSPATH=$ORACLE_HOME/jlib:$ORACLE_HOME/rdbms/jlib; export CLASSPATH
Guardamos y recargamos
. .bash_profile
Vamos al directorio de descargas y unzipeamos
cd Descargas
unzip *.zip
Vamos al directorio database y arrancamos la instalación (sin ser root)
cd database
./runInstaller
Se arranca el instalador gráfico Oracle Universal Installer. Introducimos los datos.
Antes de instalar podemos guardar el archivo de respuesta, que nos puede servir en el futuro como referencia de la instalación.
Cuando el instalador termine nos pedirá que ejecutemos unos scripts como root.
Para comprobar la instalación abrimos una terminal y hacemos
sqlplus / as sysdba
startup;
select sysdate from dual;
probar el manager accediendo a
https://localhost:1158/em
Logear como SYS y connect as SYSDBA, comprobar que la instancia esté levantada.
Si tenemos problemas con el listener.ora o el tnsnames.ora, estos apuntes pueden ayudar:
1) Comprobar el nombre de la base de datos
select name, value from v$parameter where name='db_name';
2) comprobar el nombre de la instancia
select instance_name, host_name from v$instance;
Con estos datos, en el tnsnames.ora, comprobamos el nombre del servicio:
=
(DESCRIPTION =
(ADDRESS=
(PROTOCOL = TCP)
(HOST =)
(PORT = 1521))
)
(CONNECT_DATA =
(SERVICE_NAME=)
)
)
Y en el listener.ora:
SID_LIST_LISTENER =
(SID_LIST =
(SID_DESC =
(SID_NAME =)
(ORACLE_HOME = /u01/app/oracle/product/XXX/db_1)
)
)
)
Para hacer las comprobaciones, podemos usar los comandos:
lsnrctl stat
lsnrctl start
Finalmente, para hacer el startup automático, editamos /etc/oratab y ponemos Y en el último caracter. Seguir este tutorial, o este para terminar de configurar el auto start/stop.
En caso necesario, abrir el puerto 1521 en el cortafuegos.
[ --- Snapshot --- ]
Referencias:
Series de DBASoup http://www.youtube.com/watch?v=enzODUcYERI
Bajar el Oracle Linux 6 de oracle.com y arrancar. Como el instalador es gráfico, tenemos que instalar un escritorio obligatoriamente. Puede ser gnome o KDE.
Si estas instalando en entorno virtual, puedes usar dos CDs, uno con el disco de boot y otro con el sistema completo.
Cuando nos pida seleccionar elementos, escojemos Internet->Navegador web y en Escritorio tenemos que seleccionar X Windows, Escritorio y todo lo relacionado con gnome.
Nombre de máquina y configuración de red
Una posibilidad es dbserver.nombre_empresa.com
En configuración de red sólo tenemos que activar la opción "Conectar la tarjeta al inicio del sistema".
Espacio en disco y creación de particiones
Dejar un mínimo de 40Gb de disco y 2Gb de RAM.
En el asistente debemos seleccionar "Crear las particiones manualmente". Creamos una partición primaria en ext4 y otra de swap. Seleccionar en cada caso las opciones. Primero creamos la partición primaria, le ponemos el tamaño y la damos como activa. Seguidamente creamos la partición de swap con el File System "Swap" y le damos "ocupar todo el espacio disponible".
Tener en cuenta que el espacio de swap debe ser 1,5 veces el de la memoria RAM. Por lo tanto, nos quedará
partición primaria: Tamaño_disco - (1,5 * RAM)
swap: todo lo que quede
Para crear la partición primaria: Crear->Partición estándar
Punto de montaje: /
Sistema de archivos ext4
Tamaño: (mínimo 40000MB)
Tamaño fijo
Forzar partición primaria
Para el área de swap:
Crear->Partición estándar
Sistema de archivos sqap
Completar hasta el máximo aceptable
Usuario
Cuando nos pida el nombre de usuario darle el nombre "oracle".
Terminar el asistente y hacer reboot.
Entrar en el entorno gráfico como usuario oracle.
Primero tenemos que configurar el entorno para que cumpla con las especificaciones de oracle, tenemos que buscar el fichero de preinstalación adecuado a nuestra versión, en este momento es
oracle-rdbms-server-12cR1-preinstall
Abrir terminal y hacer
su
cd /etc/yum.repos.d/
wget http://public-yum.oracle.com/public-yum-ol6.repo
yum install oracle-rdbms-server-12cR1-preinstall
yum update
[ --- Snapshot --- ]
Hacer reboot
Cuando volvamos a abrir sesión, editar el la configuración de selinux para bajar la protección
su
vi /etc/selinux/config
cambiar la linea SELINUX=enforcing por SELINUX=permissive
Con el firefox, entrar en la página web de Oracle y bajar los dos ficheros zip de Oracle Database 12c
Crear la estructura de directorios
su
cd /
mkdir -p /u01/app/oracle/product/12c/db_1
Donde "oracle" es el nombre de usuario y por tanto será el oracle path de este usuario.
Damos propiedad al grupo oinstall.
chown -R oracle:oinstall /u01
chmod -R 775 /u01
Salimos de su
exit
Editamos el profile del usuario oracle para que incluya el path
cd /home/oracle
vi .bash_profile
Y añadimos:
ORACLE_HOSTNAME=dbserver.empresa.com; export ORACLE_HOSTNAME
ORACLE_UNQNAME=orcl; export ORACLE_UNQNAME
ORACLE_BASE=/u01/app/oracle; export ORACLE_BASE
ORACLE_HOME=$ORACLE_BASE/product/12c/db_1; export ORACLE_HOME
ORACLE_SID=orcl; export ORACLE_SID
PATH=$ORACLE_HOME/bin:$PATH; export PATH
LD_LIBRARY=$ORACLE_HOME/lib:/lib:/usr/lib; export LD_LIBRARY
CLASSPATH=$ORACLE_HOME/jlib:$ORACLE_HOME/rdbms/jlib; export CLASSPATH
Guardamos y recargamos
. .bash_profile
Vamos al directorio de descargas y unzipeamos
cd Descargas
unzip *.zip
Vamos al directorio database y arrancamos la instalación (sin ser root)
cd database
./runInstaller
Se arranca el instalador gráfico Oracle Universal Installer. Introducimos los datos.
Antes de instalar podemos guardar el archivo de respuesta, que nos puede servir en el futuro como referencia de la instalación.
Cuando el instalador termine nos pedirá que ejecutemos unos scripts como root.
Para comprobar la instalación abrimos una terminal y hacemos
sqlplus / as sysdba
startup;
select sysdate from dual;
probar el manager accediendo a
https://localhost:1158/em
Logear como SYS y connect as SYSDBA, comprobar que la instancia esté levantada.
Si tenemos problemas con el listener.ora o el tnsnames.ora, estos apuntes pueden ayudar:
1) Comprobar el nombre de la base de datos
select name, value from v$parameter where name='db_name';
2) comprobar el nombre de la instancia
select instance_name, host_name from v$instance;
Con estos datos, en el tnsnames.ora, comprobamos el nombre del servicio:
(DESCRIPTION =
(ADDRESS=
(PROTOCOL = TCP)
(HOST =
(PORT = 1521))
)
(CONNECT_DATA =
(SERVICE_NAME=
)
)
Y en el listener.ora:
SID_LIST_LISTENER =
(SID_LIST =
(SID_DESC =
(SID_NAME =
(ORACLE_HOME = /u01/app/oracle/product/XXX/db_1)
)
)
)
Para hacer las comprobaciones, podemos usar los comandos:
lsnrctl stat
lsnrctl start
lsnrctl stop
Finalmente, para hacer el startup automático, editamos /etc/oratab y ponemos Y en el último caracter. Seguir este tutorial, o este para terminar de configurar el auto start/stop.
Para crear el primer usuario y otorgarle permisos podemos usar algo parecido a esto.
En caso necesario, abrir el puerto 1521 en el cortafuegos.
[ --- Snapshot --- ]
Referencias:
Series de DBASoup http://www.youtube.com/watch?v=enzODUcYERI
sábado, 8 de febrero de 2014
Ubuntu instalar cliente python Oracle
En Ubuntu12 LTS a mi me ha funcionado esto:
En caso de tener el servidor Oracle en la misma máquina que el servidor Apache, entonces hay que añadir las lineas
en
La razón es que, al menos en mi caso, no podemos usar las librerias del servidor como cliente ya que cx_Oracle nos da el error InterfaceError: Unable to acquire Oracle environment hanle
Fuentes:
http://stackoverflow.com/questions/4307479/install-cx-oracle-for-python
apt-get install python-dev build-essential libaio1- Bajar
instantclient-basic-linuxeinstantclient-sdk-linuxde Oracle. - unzipear en, por ejemplo,
/opt/ora/ - Modificar el path (cuidado con las versiones)
export ORACLE_HOME=/opt/ora/instantclient_11_2export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$ORACLE_HOME - Crear link
cd $ORACLE_HOME && ln -s libclntsh.so.11.1 libclntsh.so - Hacer
visudoy añadir la líneaDefaults env_keep += "ORACLE_HOME" pip install cx_oracle- Provamos con import cx_Oracle
- Si queremos usar las librerías desde cualquier usuario, editamos /etc/environment y añadimos el punto 4 (sin el export) con el path entre comillas.
En caso de tener el servidor Oracle en la misma máquina que el servidor Apache, entonces hay que añadir las lineas
export ORACLE_HOME=/opt/ora/instantclient_11_2export LD_LIBRARY_PATH=/opt/ora/instantclient_11_2en
/etc/apache3/envvars y reiniciar apache.La razón es que, al menos en mi caso, no podemos usar las librerias del servidor como cliente ya que cx_Oracle nos da el error InterfaceError: Unable to acquire Oracle environment hanle
Fuentes:
http://stackoverflow.com/questions/4307479/install-cx-oracle-for-python
lunes, 3 de febrero de 2014
ORA-12519: TNS:no appropriate service handler found
El problema puede venir por que se sobrepasa el número máximo de conexiones.
Para comprobarlo hacemos:
si vemos que la instancia XE está BLOCKED podemos aumentar el número de processes con:
fuente: https://community.oracle.com/thread/2471899?tstart=0
Para comprobarlo hacemos:
lsnrctl servicessi vemos que la instancia XE está BLOCKED podemos aumentar el número de processes con:
sqlplus / as sysdba
alter system set processes=300 scope=spfile;
shut immediate;
startup
fuente: https://community.oracle.com/thread/2471899?tstart=0
lunes, 16 de diciembre de 2013
Oracle log como SYSDBA sin ser del grupo dba
Para poder hacer este logeo, primero abrimos una sesión con sqlplus con la opción /nolog para que no escriba en el log del dba sin tener permisos. Luego logeamos como "as sysdba".
$sqlplus /nolog
SQL> connect sys/password as sysdba
Connected
SQL>
$sqlplus /nolog
SQL> connect sys/password as sysdba
Connected
SQL>
domingo, 15 de diciembre de 2013
Oracle formatear fecha incio sesión
CREATE OR REPLACE
TRIGGER set_formato_fecha
AFTER LOGON ON SCHEMA
BEGIN
dbms_session.set_nls('nls_language','SPANISH');
dbms_session.set_nls('nls_territory','SPAIN');
dbms_session.set_nls('nls_date_format','''dd/mm/yyyy''');
END set_formato_fecha;
Mucho cuidado con el sqldeveloper: Formatea las fechas por su cuenta pasando de los nls.
Recordar que siempre podemos forzar con
select to_char(sysdate,'"día" dd "de" month "de" yyyy','nls_date_language=spanish')
from dual;
TRIGGER set_formato_fecha
AFTER LOGON ON SCHEMA
BEGIN
dbms_session.set_nls('nls_language','SPANISH');
dbms_session.set_nls('nls_territory','SPAIN');
dbms_session.set_nls('nls_date_format','''dd/mm/yyyy''');
END set_formato_fecha;
Mucho cuidado con el sqldeveloper: Formatea las fechas por su cuenta pasando de los nls.
Recordar que siempre podemos forzar con
select to_char(sysdate,'"día" dd "de" month "de" yyyy','nls_date_language=spanish')
from dual;
Oracle crear rol y asignárselo a usuario
-- http://docs.oracle.com/cd/B19306_01/server.102/b14200/statements_9013.htm#i2077938
$sqlplus "/as sysdba"
create role programador;
GRANT CONNECT TO programador;
GRANT create session, alter session TO programador;
GRANT create procedure to programador;
GRANT execute any procedure to programador;
GRANT create table TO programador;
GRANT create sequence TO programador;
Grant create trigger to programador;
Grant create type to programador;
grant create view to programador;
grant create any index, create indextype to programador;
grant debug connect session to programador;
grant debug any procedure to programador;
-- CREATE USER username IDENTIFIED BY apassword;
-- GRANT role_name TO user_name;
-- en 11g la tablespace users ya viene hecha, si queremos podemos crear otra tablespace con
CREATE SMALLFILE TABLESPACE USERS DATAFILE 'u01/app/oracle/oradata/ORCL/espacio.dbf' SIZE 50g;
-- el size puede ser unlimited
ALTER DATABASE DEFAULT TABLESPACE USERS;
ALTER USER user_name QUOTA UNLIMITED ON USERS;
$sqlplus "/as sysdba"
create role programador;
GRANT CONNECT TO programador;
GRANT create session, alter session TO programador;
GRANT create procedure to programador;
GRANT execute any procedure to programador;
GRANT create table TO programador;
GRANT create sequence TO programador;
Grant create trigger to programador;
Grant create type to programador;
grant create view to programador;
grant create any index, create indextype to programador;
grant debug connect session to programador;
grant debug any procedure to programador;
-- CREATE USER username IDENTIFIED BY apassword;
-- GRANT role_name TO user_name;
-- en 11g la tablespace users ya viene hecha, si queremos podemos crear otra tablespace con
CREATE SMALLFILE TABLESPACE USERS DATAFILE 'u01/app/oracle/oradata/ORCL/espacio.dbf' SIZE 50g;
-- el size puede ser unlimited
ALTER DATABASE DEFAULT TABLESPACE USERS;
ALTER USER user_name QUOTA UNLIMITED ON USERS;
ORA-12528: TNS:listener: all approriate instances are blocking new connection
En un máquina con Windows XP SP3, me salia este error al intentar arrancar OracleXE 11g. Después de googlear un rato, realicé las siguientes acciones:
cd \oraclexe\app\oracle\product\11.2.0\server\bin
>lsnrctl
status
-- mirar si alguno de los servicios está BLOCKED
-- p.e. Instance "xe", status BLOCKED...
-- parar e iniciar el listener
stop
start
-- volver a comprobar el estado
Ahora, entrar como SYSDBA y hacer un startup
set ORACLE_SID=XE
sqlplus "/as sysdba"
-- opcional por si se había quedado con sesiones restringidas
alter system disable restricted session;
-- startup
startup
Volver a probar la conexión. Si el listener ya no está BLOCKED ya está todo bien.
Peeero..... En mi caso, lo que realmente estaba ocurriendo es que el registro de eventos de windows estaba lleno y por eso el listener no arrancaba. No he encontrado este error en Internet documentado de esta manera. Supongo que puede presentarse en multitud de escenarios, por ello conviene cercionarse de vez en cuando de cómo está el registro de eventos y vaciarlo.
El error en concreto lo vi cuando entraba en el sqlplus:
cd \oraclexe\app\oracle\product\11.2.0\server\bin
>lsnrctl
status
-- mirar si alguno de los servicios está BLOCKED
-- p.e. Instance "xe", status BLOCKED...
-- parar e iniciar el listener
stop
start
-- volver a comprobar el estado
Ahora, entrar como SYSDBA y hacer un startup
set ORACLE_SID=XE
sqlplus "/as sysdba"
-- opcional por si se había quedado con sesiones restringidas
alter system disable restricted session;
-- startup
startup
Volver a probar la conexión. Si el listener ya no está BLOCKED ya está todo bien.
Peeero..... En mi caso, lo que realmente estaba ocurriendo es que el registro de eventos de windows estaba lleno y por eso el listener no arrancaba. No he encontrado este error en Internet documentado de esta manera. Supongo que puede presentarse en multitud de escenarios, por ello conviene cercionarse de vez en cuando de cómo está el registro de eventos y vaciarlo.
El error en concreto lo vi cuando entraba en el sqlplus:
Suscribirse a:
Entradas (Atom)
