martes, 23 de agosto de 2011

Error ORA-01843: Not a Valid Month

Al tratar de realizar un import de un esquema

c:\>  imp system/prueba@prueba  file=prueba.dmp  log=prueba.log fromuser=scott touser=tiger
Recibimos el error
IMP-00017: following statement failed with ORACLE error 1843:
" ALTER TABLE "TABLA1" MODIFY ("FECHA" DEFAULT '01-01-2009' )"

IMP-00003: ORACLE error 1843 encountered
ORA-01843: not a valid month

Este error ocurre generalmente por que tenemos configurado el NLS_DATE_FORMAT diferente a como esta la tabla.

Para solucionarlo simplemente configuramos las variables (para sistemas unix)
export NLS_DATE_FORMAT=DD-MM-RRRR
export NLS_LANG=AMERICAN_AMERICA.WE8MSWIN1252

Si estamos en un sistema operativo windows debemos modificar estas entradas en el regedit :)

miércoles, 6 de julio de 2011

Iniciar y Detener Bases de Datos Oracle Automáticamente

Lo primero que debemos hacer si queremos iniciar y detener nuestras bases de datos Oracle automáticamente es modificar el archivo oratab, en éste archivo se almacena la información de las bases de datos instaladas además de indicar si las instancias deben iniciar automáticamente.


Editar el archivo oratab
editamos el archivo oratab con usuario root
vi  /etc/oratab
editamos la linea TEST:/oracle/app/oracle/10.2.0/db:N y la cambiamos a Y
TEST:/oracle/app/oracle/10.2.0/db:Y

martes, 28 de junio de 2011

Restaurar Base de Datos Master en SQL Server 2000

Mover bases de datos entre servidores en SQL SERVER es generalmente sencillo, pero cuando se trata de la base de datos Master, es un poco más complejo. Aquí va un ejemplo de cómo restaurar la base de datos master en otro servidor.

Vamos a asumir que el SQL SERVER 2000 ya esta instalado en la nueva máquina, y tiene los mismos service packs a nivel de base de datos de la maquina original, ahora seguiremos estos pasos:

1. En la nueva máquina vamos a detener los servicios del SQL SERVER 2000
net stop MSSQLServer

2. Iniciar  el servicio SQL SERVER en modo single-user
sqlservr -c -m

viernes, 13 de mayo de 2011

Matar sesiones de un usuario

En Oracle existen varias formas de Matar una sesión de usuario, Aquí va  un ejemplo de un procedimiento que puede hacerlo, sirve para versiones  10g y  anteriores, recibe como parametro el usuario a cancelar y elimina todas las sesiones

 CREATE OR REPLACE PROCEDURE Matar_una_sesion ( Usuario in varchar2)  AS
Sesion  varchar2(20);
Serial  varchar2(20);
Cursor_Sql integer;
Retorno integer;
Comando VARCHAR2(100);

viernes, 1 de abril de 2011

Error en Listener "The listener supports no services "

Hace poco estabamos realizando una instalación de Oracle 11g y cambiamos el puerto del listener, configuramos el listener.ora el tnsnames.ora pero aún asi no funcionaba.

Entrada en el tnsnames.ora
TEST11G =
  (DESCRIPTION =
    (ADDRESS_LIST =
      (ADDRESS = (PROTOCOL = TCP)(HOST =TEST)(PORT = 1523)))
    (CONNECT_DATA =
     (SERVICE_NAME = TEST11G)))


Entrada del listener.ora

LISTENER =
  (DESCRIPTION_LIST =
    (DESCRIPTION =
      (ADDRESS = (PROTOCOL = TCP)(HOST = TEST)(PORT = 1523))
      (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1523))
    )
  )
ADR_BASE_LISTENER = /oracle/app/oracle


domingo, 20 de marzo de 2011

Recuperar Base de Datos Oracle Sin Backup

Esta nota pretende mostrar un ejemplo de cómo recuperar una base de datos cuando no tenemos un backup y por ejemplo perdemos un disco ó tenemos un datafile corrupto; tal vez no logremos recuperar la información del disco, pero podremos poner de nuevo la base de datos en uso, aunque sin algún(os) tablespace(s).

Cuando encontramos una base de datos abajo e intentamos darle startup nos encontraremos con algo como:

SQL> startup
ORACLE instance started.

viernes, 4 de marzo de 2011

Cambiando El Puerto de Listener

Las bases de datos Oracle trabajan por defecto por el Puerto 1521 , si quieres que no sea tan obvio para alguien hallar tu base de datos, puedes probar cambiando el puerto del listener, he aquí un ejemplo.

En la ruta
/oracle/app/oracle/10.2.0/db/network/admin
Hallamos el archivo de configuración del listener, llamado listener.ora
allí cambiamos el numero del puerto al que queremos.

LISTENER_TEST =
  (DESCRIPTION_LIST =
    (DESCRIPTION =
      (ADDRESS = (PROTOCOL = TCP)(HOST = TEST1)(PORT = 4543))
    )
 )


Luego en nuestra base de datos debemos cambiar el parametro local_listener
sqlplus / as sysdba
SQL>  show parameter local_listener
NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
local_listener                       string