sábado, 12 de marzo de 2016

Failed to connect to database instance: ORA-28001: the password has expired (DBD ERROR: OCISessionBegin)

Failed to connect to database instance: ORA-28001: the password has expired (DBD ERROR: OCISessionBegin). 

Me apareció este error de Oracle al dar la contraseña del usuario DBSNMP. Parece que el password ha expirado.

Para verificar el estado del usuario en la base de datos pueden ejecutar la siguiente consulta con un usuario superior como sys.

SQL> select username, account_status from dba_users where username='DBSNMP'; 

Para cambiar el password usen la sentencia de alter user identified by, aquí abajo la dejo.

SQL> alter user dbsnmp identified by **** account unlock;

Espero les sirva.
 

miércoles, 9 de marzo de 2016

Imprimir fecha, hora, mes y día con javascript

Cómo imprimir fecha, hora, mes y día de la semana con javascript


Recientemente he tenido que imprimir la fecha con javascript en español en una página web usando javascript.

Como saben esto es algo que se puede hacer con javascript puro sin tener que utilizar ninguna librería externa como jQuery o alguna otra.

Para lograr esto deben hacer uso de la función Date() de javascript.

Como esta función solo retorna índices para especificar tanto el día de la semana como el del mes, hay que definir arreglos con los nombres respectivos de mes y día en español o cualquier idioma.

Aquí les dejo el código que utlice para esto:

<script>
var meses = new Array ("Enero","Febrero","Marzo","Abril","Mayo","Junio","Julio","Agosto","Septiembre","Octubre","Noviembre","Diciembre");
var diasSemana = new Array("Domingo","Lunes","Martes","Miércoles","Jueves","Viernes","Sábado");
var f=new Date();
document.write(diasSemana[f.getDay()] + " " + f.getDate() + " de " + meses[f.getMonth()] + " " + f.getFullYear() + " " + f.getHours()+":"+ f.getMinutes());
</script>


Con este código pueden cambiar la posición de cada elemento para lograr el formato que desean.

Espero les sirva.

domingo, 6 de marzo de 2016

ORA-27486: insufficient privileges, ORA-06512: at SYS.DBMS_ISCHED, SYS.DBMS_SCHEDULER‏

ORA-06512: at SYS.DBMS_ISCHED, SYS.DBMS_SCHEDULER‏


Hola.

Me encontré con este error en Oracle 11g al intentar ejecutar un stored procedure. El error es de privilegios insuficientes de ejecución. Por lo cual es necesario saber el permiso correcto a asignar en este tipo de errores.

ORA-06512: at SYS.DBMS_ISCHED, SYS.DBMS_SCHEDULER‏

Ocurre este error al ejecutar un stored procedure sin los permisos necesarios. Usualmente con un usuario que no es el dueño del procedimiento. Es decir que el stored no se encuentra dentro del esquema del usuario.

En este caso, el stored procedure es parte de una tarea programada en Oracle através de jobs.

Solución.

Esto se resuelve asignado el permiso Manage scheduler al usuario correspondiente con la siguiente instrucción:

GRANT MANAGE SCHEDULER TO xxx;

Tomé la referencia de aquí.

Espero les sirva.

Enter the full pathname for java.exe error en SQL Developer

Enter the full pathname for java.exe error en SQL Developer

Este error ocurre al intentar iniciar Oracle SQL Developer de una reciente instalación de Oracle 11g.

A pesar de estar especificando la ruta correcta para el archivo java.exe el mismo error se presentaba cada vez.

La solución es sencilla, únicamente tienen que iniciar el SQL Developer en modo administrador.
Click derecho y seleccionar "Iniciar como administrador" o "Run as administrator".

Después de eso usar la ruta correcta hacia el archivo java.exe. En mi caso:


C:\app\administrator\product\11.2.0\dbhome_2\jdk\jre\bin

Espero les sirva.

Cómo reconfigurar el Enterprise Manager de Oracle 11g con emca

Reconfigurar el Enterprise Manager de Oracle 11g con emca

Después de una restauración de base de datos mi Enterprise Manager de Oracle 11g está corrupto y ahora quiero recuperarlo para poder utilizarlo.

Para esto hay que remover y volver a crear el repositorio utilizando la herramienta Enterprise Manager Configuration Assistant o emca

Para remover el repositorio actual:

emca -deconfig dbcontrol db -repos drop
Enter the following information:
Database SID: INSTANCIA
Listener port number: 1521
Password for SYS user:
Password for SYSMAN user:
Do you wish to continue? [yes(Y)/no(N)]: Y


Para volver a crear el repositorio:

emca -config dbcontrol db -repos create
Database SID: INSTANCIA
Listener port number: 1521
Listener ORACLE_HOME [ C:\app\administrator\product\11.2.0\dbhome_2 ]:
Password for SYS user:
Password for DBSNMP user:
Password for SYSMAN user:
Password for SYSMAN user: Email address for notifications (optional):
Outgoing Mail (SMTP) server for notifications (optional):

Do you wish to continue? [yes(Y)/no(N)]: Y 

Es probable que no hayas asignado un password al usuario DBSNMP, para eso abre otra consola y entra como sysdba a sqlplus.

SQL> ALTER USER DBSNMP IDENTIFIED BY yourpassword;

También pueden usar la instrucción recreate pero prefiero remover y después recrear porque la opción de recreate después de una restauración de base de datos en ocasiones no funciona correctamente.

emca -config dbcontrol db -repos recreate


Espero les sirva.

jueves, 5 de noviembre de 2015

PLS-00306: wrong number or types of arguments in call to

PLS-00306: wrong number or types of arguments in call to procedure


Este error me estaba ocurriendo desde mi aplicación web en c# y mvc: "PLS-00306: wrong number or types of arguments in call to" procedure.

Despúes de verificar todos los nombres y tipos de parámetros en la firma del stored, me puse a revisar el código de mi aplicación web.

El error se produjo porqué estaba usando un nombre de parámetro incorrecto desde mi aplicación web c#:


cmdToExecute.Parameters.Add("p_personaid", OracleType.Number);
cmdToExecute.Parameters["p_personaid"].Direction = System.Data.ParameterDirection.Output;


Sé que no tiene sentido en este contexto pero ese parámetro "p_personaid"  no existía en la firma del stored procedure por lo que sólo tuve que corregir el nombre del parámetro.
 
Esto me sucedió por haber hecho un copy paste del código.

Espero les sirva. 

miércoles, 4 de noviembre de 2015

PLS-00703: multiple instances of named argument

Error PLS-00703: multiple instances of named argument


Trabajando con mi aplicación web en c#, me encontré este error PLS-00703: multiple instances of named argument al estar haciendo pruebas.

Estoy utilizando un stored procedure de Oracle el cual llamo desde mi aplicación con diversos parámetros.

Este error "PLS-00703: multiple instances of named argument" se produce cuando estás enviando un parámetro dos veces desde tu código.

En mi caso, este era mi error:

 cmdToExecute.Parameters.Add("p_lugardetrabajo", OracleType.VarChar).Value = _lugardetrabajo;
 cmdToExecute.Parameters.Add("p_direcciondetrabajo", OracleType.VarChar).Value = _direcciondetrabajo;
 cmdToExecute.Parameters.Add("p_cedulapno", OracleType.VarChar).Value = _cedulapno;
 cmdToExecute.Parameters.Add("p_horariosdeatencion", OracleType.VarChar).Value = _horariosdeatencion;
 cmdToExecute.Parameters.Add("p_cedulapno", OracleType.VarChar).Value = _cedulapno;
 cmdToExecute.Parameters.Add("p_email", OracleType.VarChar).Value = _email;
 cmdToExecute.Parameters.Add("p_paginaweburl", OracleType.VarChar).Value = _paginaweburl;     


Como ven estaba mandando el mismo parámetro dos veces.

Sólo tuve que remover uno de los dos y el programa funcionó correctamente.

Espero les sirva.