jueves, 22 de febrero de 2007

Conectarse a Oracle como sysdba sin saber el password

   El sistema que estoy probando en mi nuevo trabajo utiliza Oracle 10g como base de datos. El otro día quería ver más a fondo cómo estaban creados los datafiles, tablespaces, índices,... Obviamente con el usuario de aplicación que tengo para conectarme no podía hacer mucho, así que pensé qué podía hacer para conectarme con permisos de DBA.

   Recordando lo que aprendí el año pasado en los cursos de Oracle que hice y también en mi anterior trabajo, el usuario de sistema operativo dueño de la instalación de oracle puede conectarse como sysdba sin necesidad de conocer el password. Para ello sólo hay que hacer lo siguiente y automáticamente estaremos conectados a la instancia y además con permisos totales de administración. No obstante, en mi caso esto daba error:
C:\Documents and Settings\User>sqlplus /nolog

SQL*Plus: Release 10.2.0.2.0 - Production on Wed Mar 14 10:32:28 2007

Copyright (c) 1982, 2005, Oracle. All Rights Reserved.

SQL> conn / as sysdba
ERROR:
ORA-01031: insufficient privileges

   Haciendo más memoria todavía, cuando se instala un servidor Oracle en windows, se crea el grupo ORA_DBA al que es necesario añadir todos los usuarios que se podrán conectar como dba. Mi usuario no estaba añadido, pero después de hacerlo seguía sin poder conectarme como sysdba.

   Lo dejé y después de comer (siempre dicen que con el estómago lleno se piensa mejor) me acordé de que había un parámetro en el archivo sqlnet.ora en el que se puede configurar si se va a utilizar la autenticación que proporciona el sistema operativo o no. En mi máquina estaba deshabilitada, por lo que era obligatorio utilizar el password.
#SQLNET.AUTHENTICATION_SERVICES= (NTS)

NAMES.DIRECTORY_PATH= (TNSNAMES, EZCONNECT)

   Cambié la línea en cuestión del archivo para indicarle que utilizase la autenticación de windows (simplemente descomentándola):
SQLNET.AUTHENTICATION_SERVICES= (NTS)

NAMES.DIRECTORY_PATH= (TNSNAMES, EZCONNECT)

   Y probé de nuevo:
C:\Documents and Settings\User>sqlplus /nolog

SQL*Plus: Release 10.2.0.2.0 - Production on Wed Mar 14 10:35:29 2007

Copyright (c) 1982, 2005, Oracle. All Rights Reserved.

SQL> conn / as sysdba;
Connected.

   Y una vez conectados nos podemos crear un usuario con permisos de dba para poder utilizarlo y conectarnos desde el Toad...
SQL> create user ivan identified by ivan;

User created.

SQL> grant connect,resource to ivan;

Grant succeeded.

SQL> grant dba to ivan;

Grant succeeded.

21 comentarios:

Anónimo dijo...

¡Pero es que el Oracle estaba instalado en tu máquina, sobre la que seguramente tienes todos los privilegios a nivel S.O.! (Administrar usuarios y grupos, etc, etc...)

Prueba a hacer lo mismo en un servidor de producción medianamente 'serio'...

Saludos.

Carlos.

Iván dijo...

Hola Carlos,

tienes toda la razón. En un servidor "de verdad" (unix) necesitas acceso como oracle o root para poder hacer esto. De todas formas es una forma de conseguirlo en una máquina windows.

Saludos, Iván.

Anónimo dijo...

Buenas.

"En un servidor "de verdad" (unix)"

No sólo en UNIX, en windows también. ¿Como vas a acceder al 'host' siendo un 'mindundi' y poder editar el sqlnet.ora?

Sólo te sirve si eres el 'boss' de la máquina (Windows/UNIX/Linux)

Saludos.

Carlos.

Anónimo dijo...

Muy buena explicacion. Gracias

Iván dijo...

Gracias Vicky, me alegro de que te haya gustado y resultado útil.

Saludos, Iván.

Anónimo dijo...

Excelente artículo.
Mas info sobre Oracle para desarrolladores y DBA en www.dba-oracle.com.ar

Iván dijo...

Gracias Diego por leerme y por dejar el comentario.

Saludos, Iván.

Eben-Erzito dijo...

muchas gracias por este aporte, esta muy bien explicado, para aquellos que aun estamos iniciando con oracle. Hasta pronto y sigue subiendo cosas como esta que son de mucha utilidad. Dtb

Iván dijo...

Hola Jose David,

me alegro de que te haya gustado el post y que te resulte útil.

Saludos, Iván.

Anónimo dijo...

una pregunta, eso sirve solo si REMOTE_LOGIN_PASSWORDFILE esta en NONE?.. porque yo hice los pasos que indicas en mi equipo y aun no me deja conectarme.

Anónimo dijo...

Para añadir mas información, pues si deseas conectarte a un Linux y no tienen la clave del root, y es de vida o muerte conectarte al servidor, pues tienes que reiniciar el servidor y entrar al grub, luego inicias en single mode y ahi no te pide clave y te conectas como root, desde ahi podras poner las claves que quieras al usuario oracle y al root y reiniciar normalmente. Con esto ya puedes conectarte como root/oracle y modificar el sqlnet.ora. Si alguien sabe como hacer lo mismo en windows por favor expliquelo. GRacias

Iván dijo...

Hola Anónimo,

gracias por tu tip. Una forma de hacer lo que comentas (el "single" ya no funciona en grub) la conté hace ya unos años en esta entrada: http://lopezivan.blogspot.com/2007/03/recuperar-debian-sin-password-de-root.html

Anónimo dijo...

Gracias Ivan. Me funciono de 100

Iván dijo...

@Anónimo: Me alegro :-)

Anónimo dijo...

como conectar oracle con xcelsius

Anónimo dijo...

no se

Anónimo dijo...

Muy buen aporte...saludos..!!!

George Cristian dijo...

Gracias Ivan por la ayuda, me ayudo mucho!!
Saludos.
George Aquiño

Cebampe dijo...

Gracias wey

Jefferson Regalado Rosales dijo...
Este comentario ha sido eliminado por el autor.
Unknown dijo...

mil gracias, me sacaste de un apuro

Publicar un comentario