Archive for the ‘Linux’ Category

Restaurar los permisos inciales en CEntOS

miércoles, noviembre 28th, 2012

Cuando entregas la password de root un servidor de pre producción puede que se la entregues a un persona más acelerada e inquieta que no reflexiona tanto los comando como tu. En mi caso se hizo una ejecucion del siguiente comando

chmod 755 -R / carpeta

NOTA: El comando anterior es ERRONEO!!!

Uno de los problemas es que la persona no se dió cuenta de los persmisos que estaba cambiando, debido a que entre el / y la carpeta existió un espacio, lo que implicó que el cambio de permisos afectó desde la raíz hacia todas las subcarpetas (por el -R).

Cuando comenzaron a fallar las cosas, y al detectar que fue este comando aplicado el problema requerí reiniciar los permisos, se hizo de la siguiente forma

for p in $(rpm -qa); do rpm --setperms $p; done

Para el caso de haber cambiado los GUIDs tambien puede ser útil conocer (aun cuando este no lo aplique)

for u in $(rpm -qa); do rpm --setugids $u; done

Oracle no inicia luego de un reinicio

martes, octubre 9th, 2012

Debido a que en un servidor Linux se le estableció más RAM hubo que apagarlo, en el estaba instalado Oracle pero la máquina nunca había sido reiniciada luego de la instalacion de Oracle. Quizas el hecho de hacer una instalación Oracle descuidada ayudo a que luego de un reinicio no partiera Oracle, aun cuando estaba claro que en el futuro lo iba a iniciar a linea de mando debido a que al ser instalado no lo introduje en el proceso de init de linux.

Primero, conectarse como usuario de oacle, es conocido que en Linux las operaciones sobre base de datos NO deben hacerse como root. Para cambiarme de usuario al de Oracle y luego iniciar la base de datos ejecute

su - oracle

Luego iniciar la base de datos, previa revision de variables de configuracion del entorno.

Se inicia además el listener, de forma que así se pueda conectarse a la base de datos.

Se conecta a través de SQLPlus para ejecutar el inicio de la base de datos

sqlplus /nolog
connect / as sysdba
startup

Esto puede generar el error

ORA-00205: error in identifying control file, check alert log for more info

Lo que significa que no esta configurado el archivo de control o esta perdido.
Hay que crear un pfile, para luego modificar sus parametros coonsiderando el archivo ctl quese tenga.

Pero para volver a ejecutar el comando debes detener

shutdown abort

Corta todas las conexiones y hace el proceso de shutdown. Puede existir la posibilidad de que aun con esto puedan existir procresos Oracle corriendo a través de un ps -fea, verificar que ninguno este corriendo, puedes identificarlo debido a que estan utilizados por el usuario oracle.

Luego de detener, inicias nuevamente la base de datos apuntando al nuevo pfile

SQL> startup pfile='/opt/oracle/app/oracle/product/11.2.0/dbhome_1/dbs/initorcl.ora'
ORACLE instance started.

Total System Global Area 1068937216 bytes
Fixed Size                  2220200 bytes
Variable Size             616566616 bytes
Database Buffers          444596224 bytes
Redo Buffers                5554176 bytes
Database mounted.
Database opened.
SQL> exit

Con lo que desde ese momento tienes tu base de datos levantada.

ORA-12505: TNS: el SID es desconocido

martes, octubre 9th, 2012

Esto te puede ocurriral iniciar el listener de Oracle

lsnrctl start

o al intentar conectarte a Oracle a través de un cliente Oracle. Esto puede significar que no existan las variables de entorno, sobre todo ORACLE_SID (SID, Service Identificator)

Si esta configurado revisa dos archivos tnsnames.ora y/o listener.ora.

En el caso de tnsnames.ora, luego de crear la base de datos debiese existir una anotación sobre el nombre y el protocolo que se utilizará. Ejemplo

ORCL =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521))
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = orcl)
    )
  )

Que en mi caso estaba correcto.
En cambio al listener.ora le faltaba referenciar al SID orcl. Para hacerlo, se debe agregar dentro de la lista de listener, que en mi caso solo era este

SID_LIST_LISTENER =
  (SID_LIST =
    (SID_DESC =
      (GLOBAL_DBNAME = orcl)
      (ORACLE_HOME = /u01/app/oracle/product/11.2/db_1)
      (SID_NAME = orcl)
    )
  )

Variables de entorno Oracle

martes, octubre 9th, 2012

A el usuario oracle se le deben establecer las siguientes variables en el archivo .bash_profile o el profile que estes utilizando.En este archivo incorpora las líneas cambiandolas por las rutas de tu instalación de Oracle


Actualización (24-09-2015)
Se presume que se instaló la base de datos segun lo esxplicado en otro de mis articulos
Instalando Oracle 11G a linea de mando

ORACLE_BASE=/u01/app/oracle
export ORACLE_BASE
ORACLE_HOME=$ORACLE_BASE/product/11.2/db_1
export ORACLE_HOME
ORACLE_PATH=$ORACLE_HOME/bin
export ORACLE_PATH
ORACLE_SID=orcl
export ORACLE_SID

Adicionalmente es util tener configurada el path de linux hacia los ejecutables de oracle, esto nos evitará cambios de rutas y cosas asi

PATH=$PATH:$HOME/bin:$ORACLE_PATH
export PATH

Linux debe ser reiniciado solo por un cambio en el hardware

lunes, octubre 8th, 2012

Debo admitir que ciertamente defiendo Linux como sistema operativo de servidores. Como desktop aún le falta (aun cuando ubuntu a avanzado años luz), como servidor… debo admitir que admiro esta situación de configurar archivos.

Con el amor propio herido debido a que tras un reinicio de un servidor Linux que fue aumentado en RAM, Oracle no funcionaba decidí reiniciar debido a que no se me ocurrían más cosas para hacerlo partir… pero no estaba todo dicho… sobre todo luego de un comentario “…o sea, que igual que Windows tienes que reiniciar” (Julio Romero)… frase que fue (en buen chileno) como un ají ahí mismito…

Así que luego la decisión fue no claudicar… no puede ser el reinicio, no puede ser que Linux deba ser reiniciado, pero por sobretodo no se puede rebajar a ser igualado a windows.

Aun cuando efectivamente existen parches en el Kernel que ameritan reinicio, la mayoría o los reinicios justificados en Linux sólo debiesen ser de hardware, ya que para todo lo demás existe un archivo de configuración que si esta mal «seteado» la aplicación no funcionará.

En mi caso, Oracle finalmente inicio, luego de hacer un serie de pasos para que esto sucediera.

Crear spfile en oracle

lunes, octubre 8th, 2012

Para crear un archivo con los parametros de la base de datos debes aplicar el siguiente comando

CREATE SPFILE FROM PFILE;

Puede que te de el siguiente error

CREATE SPFILE FROM PFILE
*
ERROR at line 1:
ORA-01078: failure in processing system parameters
LRM-00109: could not open parameter file
'ORACLE_HOME/dbs/initSID.ora'

Si esto sucede debes especificar explicitamente la ubicacion del archivo pfile

create spfile from pfile='RUTA/init.ora'

y debieses recibir

File created.