14 dic 2009
Sea un heroe, sea proactivo!
10 dic 2009
Por que los Archived logs estan tambien en mi Flash recovery area !!!
>Sun Dec 6 22:21:51 2009
Errors in file $ORACLE_BASE/admin/SID/bdump/SID_arc0_21083.trc:
ORA-19815: Message 19815 not found; No message file for product=RDBMS, facility=ORA; arguments: [db_recovery_file_dest_size] [2147483648] [100.00] [0]
Sun Dec 6 22:21:51 2009
************************************************************************
You have following choices to free up space from flash recovery area:
1. Consider changing RMAN RETENTION POLICY. If you are using Data Guard,
then consider changing RMAN ARCHIVELOG DELETION POLICY.
2. Back up files to tertiary device such as tape using RMAN
BACKUP RECOVERY AREA command.
3. Add disk space and increase db_recovery_file_dest_size parameter to
reflect the new space.
4. Delete unnecessary files using RMAN DELETE command. If an operating
system command was used to delete files, then use RMAN CROSSCHECK and
DELETE EXPIRED commands.
************************************************************************
Sun Dec 6 22:21:51 2009
Errors in file /u01/app/oracle/admin/rpi10g2/bdump/SID_arc0_21083.trc:
ORA-19809: Message 19809 not found; No message file for product=RDBMS, facility=ORA
ORA-19804: Message 19804 not found; No message file for product=RDBMS, facility=ORA; arguments: [43593728] [2147483648]
ARC0: Error 19809 Creating archive log file to '$ORACLE_BASE/flash_recovery_area/SID/archivelog/2009_12_06/o1_mf_1_482_0_.arc'
SQL> select * from V$FLASH_RECOVERY_AREA_USAGE;
FILE_TYPE PERCENT_SPACE_USED PERCENT_SPACE_RECLAIMABLE NUMBER_OF_FILES
------------ ------------------ ------------------------- ---------------
CONTROLFILE 0 0 0
ONLINELOG 0 0 0
ARCHIVELOG 60.16 0 62
BACKUPPIECE 0 0 0
IMAGECOPY 0 0 0
FLASHBACKLOG 0 0 0
Efectivamente RMAN estaba backpeando los arclogs. Esto se refleja en LOG_ARCHIVE_DEST_10.
select dest_name,destination from V$ARCHIVE_DEST
where status ='VALID'
LOG_ARCHIVE_DEST_1 $ORACLE_BASE/backup/arc
LOG_ARCHIVE_DEST_10 USE_DB_RECOVERY_FILE_DEST
Para resolver esta situación solo hay que setear lo siguiente:
SQL> alter system set log_archive_dest_10='' scope=spfile;
Como el alcance es el spfile debemos reiniciar la base para que tome el cambio. Una vez reiniciada veremos que el log_archive_dest_10 es vacio y que los arclog se guardan en la unibicacion que seteamos en el log_archive_dest.
Esto no es todo, ¿ como libero el area de flash_recovery que ya ha sido utilizada?
Pues asi:
#>rman target sys/password@SID
RMAN> delete noprompt archivelog all;
Si hemos borrado archivos desde el sistema operativo de la area flash_recovery RMAN nos avisara que no puede borrar estos ya que no existe. Para sincronizar lo que hay en el filesystem con RMAN procedemos asi:
RMAN> crosscheck archivelog all;
Una vez realizado este paso vemos los resultados:
SQL> select * from V$FLASH_RECOVERY_AREA_USAGE;
FILE_TYPE PERCENT_SPACE_USED PERCENT_SPACE_RECLAIMABLE NUMBER_OF_FILES
------------ ------------------ ------------------------- ---------------
CONTROLFILE
0
0
0
ONLINELOG 0 0
0
ARCHIVELOG
0
0
0
BACKUPPIECE 0 0
0
IMAGECOPY
0
0
0
FLASHBACKLOG
0
0
0
6 rows selected.
Referencias:
Oracle Comunidad Hispana
Archived Redo Log Creation in the Flash Recovery Area
5 dic 2009
EM database console not start
[oracle@servidor]$ emctl start dbconsole
TZ set to Chile/Continental
OC4J Configuration issue. $ORACLE_HOME/oc4j/j2ee/OC4J_DBConsole_servidor_10g2 not found.
La solución es simple debemos reconstruir el repositorio para el nuevo hostname, para lo cual de antemano deberemos saber las password de los usuarios SYS,SYSMAN y DBSNMP. Con esos datos hacemos:
[oracle@servidor]$ emca -config dbcontrol db -repos recreate
Vamos contestando las preguntas que nos va suministrando y esperamos un par de minutitos y nuestro repositorio se vuelve a crear para el nuevo hostname.
Espero que sirva.
20 nov 2009
Linux NTP Server + SO Time Zone + Oracle Time Zone.
Tengo un servidor Linux con DB Oracle 10g en el cual la fecha y hora son extremadamente criticas. Debido a algunas inconsistencias ( entre el soft de virtualización, la bios virtual y el server virtual) he decidido conectarlo a un NTP server de internet. Otro factor que afecta, es el cambio horario de forma no uniforme en distintas regiones de Argentina.
La pregunta es:
¿ Existe un método para cambiar el time zone del sistema operativo mediante NTP ?
¿ Como afecta el cambio de time zone del sistema operativo a Oracle ?
Después de investigar un rato encuentro este FAQ el cual explica que el protocolo NTP es independiente de la zona horaria (time zone); brinda siempre la hora en UTC/GTM +00:00. Por lo que la hora del equipo depende no solamente del servicio NTP sino tambien del time zone que le setemos al equipo. Decido a comprobar esto armo mi propio servidor NTP.
#>apt-get install ntpd ntpdate
El archivo de configuracion del servicio esta en /etc/ntp.conf y queda asi
#> vi /etc/ntp.conf
# /etc/ntp.conf, configuration for ntpd; see ntp.conf(5) for help
driftfile /var/lib/ntp/ntp.drift
# Enable this if you want statistics to be logged.
statsdir /var/log/ntpstats/
statistics loopstats peerstats clockstats
filegen loopstats file loopstats type day enable
filegen peerstats file peerstats type day enable
filegen clockstats file clockstats type day enable
# You do need to talk to an NTP server or two (or three).
#server ntp.ubuntu.com
server time.sinectis.com.ar iburst
server tock.nap.com.ar iburst
server 0.ar.pool.ntp.org iburst
server 1.south-america.pool.ntp.org iburst
server 0.south-america.pool.ntp.org iburst
Un articulo muy lindo de como configurar esto, esta en este link, aqui obvie las configuraciones de seguridad. Los pools en mi caso Argentina los saque de aqui y de aquí, esto es por que la selección del servidor a utilizar por NTP viene dada por varios factores entre ellos la distancia. Reiniciamos el daemon para actualizar las configuraciones:
#>/etc/init.d/ntp restart
Luego chequeamos si nuestro servidor esta sincronizando con los que les detallamos en su configuración:
#> ntpq -np
remote refid st t when poll reach delay offset jitter
========== ===============================
+216.244.192.3 62.117.76.142 2 u 167 512 377 26.525 33.572 2.619
-200.10.140.1 192.5.41.41 2 u 122 512 377 26.534 44.511 45.921
-200.63.112.9 192.43.244.18 2 u 655 512 376 44.753 48.853 55.039
*187.49.33.13 200.20.186.75 2 u 162 512 377 326.558 35.854 4.766
+190.202.98.221 150.214.94.5 2 u 145 512 377 241.681 33.767 11.175
192.168.65.255 .BCST. 16 u - 64 0 0.000 0.000 0.002
Aqui solamente destaco, que el asterisco (*) indica el servidor al cual estamos sincronizando y con signo más (+) los servidores candidatos a sincronizar en caso del que el preferido falle.
Otras opciones interesantes para debugear en ntpq son:
ntpq> as
ind assID status conf reach auth condition last_event cnt
====================================
1 57640 9144 yes yes none falsetick reachable 4
2 57641 9444 yes yes none candidat reachable 4
3 57642 9444 yes yes none candidat reachable 4
4 57643 8053 yes yes none reject lost reach 5
5 57644 9644 yes yes none sys.peer reachable 4
6 57645 9344 yes yes none outlyer reachable 4
7 57646 8000 yes yes none reject
ntpq> rv
assID=0 status=06f4 leap_none, sync_ntp, 15 events, event_peer/strat_chg,
version="ntpd 4.2.4p4@1.1520-o Wed May 13 21:05:42 UTC 2009 (1)",
processor="i686", system="Linux/2.6.28-16-generic", leap=00, stratum=3,
precision=-19, rootdelay=351.872, rootdispersion=56.283, peer=57644,
refid=187.49.33.13,
reftime=ceb188e9.25b15a51 Sat, Nov 21 2009 2:00:17.147, poll=10,
clock=ceb18b4f.39f3287e Sat, Nov 21 2009 2:10:31.226, state=4,
offset=-4.565, frequency=9.125, jitter=4.385, noise=16.777,
stability=0.047, tai=0
ntpq> pe
remote refid st t when poll reach delay offset jitter
========================================
xtime.windows.co 0.0.0.0 2 u 593 1024 377 0.530 32852.8 0.073
+ns2.sinectis.co 62.117.76.142 2 u 105 1024 277 26.006 -4.959 4.634
+200.10.140.1.ad 192.5.41.41 2 u 576 1024 377 26.477 0.399 6.288
willie.norfe.ne 192.43.244.18 2 u 104m 512 0 44.753 48.853 0.000
*srv6.spbrasil.c 200.20.186.75 2 u 615 1024 377 329.167 -3.810 3.481
-190.202.98.221 150.214.94.5 2 u 599 1024 377 246.638 -18.083 25.978
192.168.65.255 .BCST. 16 u - 64 0 0.000 0.000 0.002
Bueno mi servidor NTP ya esta sincronizado y es stratum=3. Para demostrar que NTP solo provee UTC/GTM 00:00 sincronizo un cliente windows 2003 a este y cambio el time zone de mi server de -03:00 a -04:30. Y efectivamente mi server marca la 1am mientras que el cliente Windows dependiente de mi server NTP se mantiene en la misma hora, mas alla de haberse sincronizado manualmente y automáticamente. Lo que concluye que NTP brinda siempre la hora en UTC 00:00, independiente de donde estemos geográficamente, por lo que no es posible setear el time zone del sistema operativo mediante opciones o comandos del protocolo NTP. En este punto me doy cuenta que tendre que configurar en los cambios de horario invierno-verano la posición geográfica ( UTC/GTM) de cada uno de los servidores. Aunque lei que existe la opcion DTS para manejar las zonas horarias, la cual no me da mucha confianza ya que puede implicar cambios automaticos de time zone, pero la siguere analizando.
9 nov 2009
Integrando Apache2 + mod_jk + Tomcat Parte II
Actualmente utilizo apache2 para el alojamiento de sitios con php, pero ha surgido el requerimiento de servir paginas jsp en el mismo server. Las antiguas paginas que contiene apache, en php deben seguir funcionando, como asi también los nuevos sitios jsp.
Siguiendo el post de instalacion de tomcat el cual fue bello, rápido, practico y demasiado automático se me crearon dos directorios para la administración de tomcat.
#ls -l /usr/share/tomcat5.5
/usr/share/tomcat5.5/webapps2 --> /var/lib/tomcat5.5/
#ls -l /usr/share/tomcat5.5-webapps
/usr/share/tomcat5.5-webapps/ROOT
/usr/share/tomcat5.5-webapps/manager
Leyendo el archivo de configuración /etc/default/tomcat5 y de inicio /etc/init.d/tomcat podemos tener una buena vision sobre la instalación. Aunque la descompresion de archivos war se almacera en /var/lib/tomcat5.5/ en vez de /usr/share/tomcat5.5-webapps, cosa que no sucede con los sites por default que estan en este ultimo directorio. Cosa que leyendo los scripts no pude descifrar (a lo mejor alguien pueda comentarlo), por lo opte por la desinstalación completa de tomcat 5.
# apt-get remove --purge tomcat5.5 tomcat5.5-admin tomcat5.5-webapps
La instalacion de tomcat desde los binarios es muy sencilla, descargamos el archivo *.tar.gz desde tomcat, comprobamos que se haya descargado correctamente utilizando los hash md5 o gpg. Yo en mi caso los descomprimi en /usr/local/src
#tar xzvf apache-tomcat-6.0.20.tar.gz -C /usr/local/src
#ln -s /usr/local/src/apache-tomcat-6.0.20 /usr/local/apache-tomcat
Agregar las variables de entorno necesarias para la ejecucion de tomcat
JAVA_HOME = Directorio donde se encuentra la instalacion de java
CATALINA_HOME= Directorio donde se encuentra la instalación de tomcat
Una vez seteadas estas variables procedemos a inciar tomcat
#/usr/local/apache-tomcat/bin/start.sh
Chequeamos en el browser la pagina de inicio de tomcat, ingresando la dirección:
http://localhost:8080 ó http://localhost:8010
Instalamos el modulo libapache2-mod-jk
#apt-get install libapache2-mod-jk
Copiamos el archivo de ejemplo en mod-aviables
#cp /usr/share/doc/libapache2-mod-jk/httpd_example_apache2.conf /etc/apache2/mods-available/mod_jk.conf; cd /etc/apache2; ln -s mods-available/jk.conf mods-enabled/jk.conf; /etc/init.d/apache2 restart
Configuramos los worker's a los valores de las variables previamente configuradas.
#>vi /etc/libapache2-mod-jk/workers.properties
workers.tomcat_home=/usr/local/apache-tomcat #$CATALINA_HOME
workers.java_home=/usr/lib/jvm/java-6-sun #$JAVA_HOME
worker.list=ajp13_worker # El nombre de/los workes que utilizaremos.
worker.ajp13_worker.port=8009 # Puerto de comunicación apache - tomcat
worker.ajp13_worker.host=localhost #host
worker.ajp13_worker.type=ajp13 # Protocolo de comunicación
Configuramos el modulo de apache jk.conf. Aqui no hay demasiado de tocar, solamente el nivel de alerta y que directorio de $CATALINA_HOME/webapps sera mapeado de apache a tomcat.
#>vi /etc/apache2/mods-available/jk.conf
# Cambio a debug para chequear el funcionamiento lugo paso a error. Esto es
# debido que si los sitios que poseemos (en apache) generan demasiado trafico
#corremos el riesgo de que los logs nos llenen el disco/particion.
JkLogLevel debug
#Aqui esta el quid de la cuestion, estas directivas le diran a apache que
#directorios seran mapeados a tomcat a traves del worker, en este caso
#ajp13_worker, usando el protocolo ajp3. Debido a un par de ensayos opte por deshabilitar esta opcion en este archivo y setearla en el virtualhost dentro de los sitios de apache, lo cual le ha dado mayor claridad al seteo de JkMount.
# send all requests ending in .jsp to ajp13_worker
#JkMount /*.jsp ajp13_worker
#JkMount /* ajp13_worker
#send all requests ending /servlet to ajp13_worker
#JkMount /*/servlet/ ajp13_worker
Con todo esto ya estoy en condiciones de volver a la configuración del post anterior, donde agregaba un virtualhost a apache para que fuese mapeado a tomcat. Obvio que tiene modificaciones tambien.
#>vi /etc/apache2/site-aviable/prueba
VirtualHost IP:80>
# No es necesario, JkMount determina el mapeo a $CATALINA_HOME/webapps
# y la expresion que le pasemos a JkMount
ServerName prueba.localdomain
#Los paths dentro de $CATALINA_HOME/webapps que serán manejados por el
#protocolo ajp3.
JkMount /prueba/*.jsp ajp13_worker
/VirtualHost>
#> a2ensite prueba
#> /etc/init.d/apache2 restart
Y listo tenemos un nuevo sitio que servira paginas jsp en el mismo puerto que apache y el resto de los sitios.
Cabe destacar que se han obviado configuraciones de seguridad sobre tomcat, las cuales serán un próximo tema a tratar.
4 nov 2009
Integrando Apache2 + mod_jk + Tomcat
La idea es que apache pueda enviar las peticiones de paginas jsp a un tomcat para que este ultimo las procese. Esta comunicacion entre apache y tomcat se logra a traves del modulo jk.
Lo necesario para instalar y configurar a secas apache2+mod_jk+tomcat esta en esta pagina, bello, rapido y practico. Con esto funcionando llaga la hora de decirle a apache que las paginas .jsp estan en $CATALINA_HOME/webapps y que utlice el worker ajp3_worker (worker.properties) para pasarle el trabajo a tomcat. Esto se logra mediante la utilizacion de virtualhosts dentro de apache (/etc/apache2/site-aviables/xxx) con el parametro jkMount como se muestra en el siguiente ejemplo:
DocumentRoot /usr/share/tomcat5.5/webapps #El $catalina_home/webaaps
ServerAdmin admin@midominio.com
ServerName asensos.localdomain
JkMount /*/servlet/* ajp13_worker #las llamadas que seran delegadas al protocolo ajp3
<>
Hasta el momento las pruebas han funcionado a la perfección, llamo tanto a paginas estáticas como a paginas jsp, todo desde el puerto 80 donde corre apache.
Fuentes:
28 sept 2009
Oracle Offline backup.
#!/bin/bash
# Developer: Alejandro Andino
#+-----------------------------+
#| Backup en frio de DataFiles |
#+-----------------------------+
export ORACLE_SID="test"
export ORACLE_BASE="/u01/app/oracle"
export ORACLE_HOME="/u01/app/oracle/product/10.2.0/test"
export NLS_LANG=AMERICAN_AMERICA.WE8MSWIN1252
export NLS_DATE_FORMAT="DD-MON-YYYY HH24:MI:SS"
export LD_LIBRARY_PATH=$ORACLE_HOME/lib
export SQLPATH=/u01/app/oracle/product/10.2.0/test/sqlplus/admin
backup="/u01/app/oracle/backup/datafiles"
arc="/u01/app/oracle/backup/arc"
fecha=`date +"%d%m%y_%H%M"`
sequence=`sqlplus -s system/xxx @lastArcLog.sql|tr -d "[:blank:]"`
seq=$(($sequence-1))
#+-----------------+
#| FUNCTIONS |
#+-----------------+
#Function DEL_OldLogs: Borrar arc log archivados sin uso.
#Variables externas/globales: sequence, seq,arc
function DEL_OldLogs(){
list=`ls $arc | gawk -F "_" -v sq=$seq -v path=$arc '{ if($2 < sq) print path"/"$1"_"$2"_"$3 }'` for i in $list do if [ -f $i ]; then rm -f $i fi done }
# Se me ocurrio pensar que sucedería si se me rompe el disco que justamente guarda los backup. Asi que guardamos el backup en un almacenamiento
#externo también, con esta función.
function New_Backup(){
rm -f $backup/*.tar.gz
#Copy datafiles and archivelogs to backup.
tar -czvf $backup/$file $ORACLE_BASE/oradata/db10g2 $arc &>/dev/null
chmod +rw $backup/$file
# Almecenando backup a ubicacion remota.
smbclient //STORAGE/backup "" --user=backup%password --workgroup=dominio -c "lcd ${backup};cd Backup_DATA;put ${file};exit"
}
#+------------------------+
#| BEGIN SCRIPT |
#+------------------------+
sqlplus -s '/as sysdba' <<"EOF"
ALTER SYSTEM ARCHIVE LOG CURRENT; --> Forzar el archivado de redologs.
shutdown immediate
exit
EOF
DEL_OldLogs
#Levantamos la base de datos.
sqlplus -s '/as sysdba'<<"EOF"
startup
exit
EOF
#+------+
#| FIN |
#+------+
Por ultimo el pequeño script que uso para ver la ultima secuencia procesada por el proceso ARCx.
lastArcLog.sql
set echo off
set heading off
set flush off
set pause off
set feedback off
set pages 0
select MAX(sequence#) from v$archived_log;
exit
Este script se ejecuta diariamente, con lo que me deja el backup de los datafiles y los arclog generado por esta.
10 jun 2009
Chequeo de compatibilidades de SOURCE y TARGE Data Base
Estoy en la fase de acomodar la base de datos TARGET o destino, para
poder migrar los datos de otra db SOURCE o fuente. Esto lo voy a
realizar a través de las herramientas import / export de oracle 8i.
Siguiendo el documento 286775.1 voy realizando los siguiente chequeo entre las dos base de datos
- RDBMS 8.1.7.0 source databsae (produccion)
- RDBMS 8.1.7.4 target database ( a donde quiero migrar)
Source Database
---------------
3. In the source database, check which options were installed:
- Oracle Text - schema: CTXSYS
- Oracle OLAP - schema: OLAPSYS
- Oracle Spatial - schema: MDSYS
- Oracle Data Mining - schema: DMSYS
- Oracle Ultra Search - schema: WKSYS
- Oracle Label Security - schema: LBACSYS
- Oracle JVM ? - object_types: 'JAVA CLASS',
'JAVA DATA', 'JAVA RESOURCE'
- Oracle interMedia - schema: ORDSYS
- Oracle XML DB - schema: XDB
- run queries:
SELECT username FROM dba_users
WHERE username IN ('CTXSYS', 'OLAPSYS','MDSYS', 'DMSYS', 'WKSYS', 'LBACSYS', 'ORDSYS', 'XDB');
no rows selected
SELECT object_type, COUNT(*) FROM dba_objects
WHERE object_type LIKE 'JAVA%' GROUP BY object_type;
no rows selected
A simple vista observo que no existen tales properties mencionados anteriormente en la base de
datos fuente.
4. In the source database, check the characterset of the database:
SELECT * FROM nls_database_parameters
WHERE parameter LIKE '%SET' ORDER BY 1;
+--------+
| SOURCE |
+--------+
PARAMETER VALUE
------------------------------ ----------------------------------------
NLS_CHARACTERSET WE8ISO8859P1
NLS_NCHAR_CHARACTERSET WE8ISO8859P1
+--------+
| TARGET |
+--------+
PARAMETER VALUE
------------------------------ ----------------------------------------
NLS_CHARACTERSET WE8ISO8859P1
NLS_NCHAR_CHARACTERSET US7ASCII
Primer diferencia entre los dos RDBMS, siguiendo el documento llego al docId 77441.1
en donde uno de sus apartados dice:
"El character set es especificado durante la sesión de instalación o con la clasula CHARACTER
SET en la declaracion CREATE DATABASE. Para crear una nueva base de datos con un nuevo CHARACTER
SET, necesitas indicar el character set en el CREATE DATABASE script. Este es el unico lugar,
por que el CHARACTER SET no puede ser indicado en el init.ora, este no es un parametro valido
del init.ora"
NOTE: In Oracle 8.x.x there is a new NLS parameter called
NLS_NCHAR_CHARACTERSET. NLS_NCHAR_CHARACTERSET is National Character Set.
It specifies what languages can be used to name database objects. If you
already have a line for NLS_NCHAR_CHARACTERSET in your create database script,
you either need to indicate a character set value on that line in double
quotes as well, or take this line out because if NLS_NCHAR_CHARACTERSET is
not indicated in Create Database Script, it will just default to
NLS_CHARACTERSET value.
Estas es la nota al crear nuevamente la base de datos con este character set. Por lo que llamo al dbassist y
elimino la base de datos previamente creada en el TARGET database. Y la creo con este character set. Y
solucionado el problema.
Ya habiendo eliminado la base de datos, se me da por investigar un poco, y buscar una alternativa para no
eliminar la base de datos y setear nuevamente el character set. En el DocId 66320.1, las posibles
alternativas para realizar el cambio, este no realiza el cambio para los datos ya
existentes con distinto character set.
Sigo un poco mas, y en esta pagina encuentro la referencia a como cambiar el
NL_NCHAR_CHARACTERSET sin eliminar la base de datos en un ambiente de
migración, tal cual es mi caso. Por lo que concluyo que esta es la mejor opción
para mi ambiente.
1 jun 2009
Database "SID" warm started.
- Database "
" warm started.
Investigando un poco en Metalink llego al DocId:
- 98418.1 WARNING: "dbstart" does not work with 8.1.6 Instances.
- 50508.1 ALERT: "CONNECT INTERNAL" Syntax to be DeSupported
Description
~~~~~~~~~~~
"CONNECT INTERNAL" will no longer be supported AFTER Oracle8i Release 3 (8.1.7)
Server Manager will no longer be supported AFTER Oracle8i Release 3 (8.1.7)
As part of planning for future releases users are advised to convert
administrative scripts to use SQLPLUS in place of SVRMGRL and to use the
SYSDBA or SYSOPER privileges instead of CONNECT INTERNAL.
These privileges have been available and fully documented since Oracle 7.1
llego a la conclusión que lo mas saludable es cambiar el script dbora creado durante el proceso de instalación. Este es el encargado de subir y bajar la instancia cuando lo hace el sistema operativo.
Así que en el /etc/init.d/dbora cambio:
- su - $ORA_OWNER -c $ORA_HOME/bin/dbstart &
- su - $ORA_OWNER -c "
connect / as sysdba
startup
exit
EOF"
Y listo, desaparece el warning.
29 may 2009
28 may 2009
"ORA-03113: end-of-file on communication channel" after patch 2376472
ORA-03113: end-of-file on communication channel"
En el tracefile observo lo siguiente:
Oracle8i Enterprise Edition Release 8.1.7.4.0 - Production
With the Partitioning option
JServer Release 8.1.7.4.0 - Production
ORACLE_HOME = /u01/app/oracle/product/8.1.7
System name: Linux
Node name: CentOS-XXXXX
Release: 2.4.9-e.74smp
Version: #1 SMP Thu Jan 22 10:28:33 EST 2009
Machine: i686
Instance name: xxxxx
Redo thread mounted by this instance: 1
Oracle process number: 15
Unix process pid: 19434, image: oracle@CentOS-XXXX
*** SESSION ID:(11.1) 2009-05-28 13:05:45.750
Exception signal: 11 (SIGSEGV)
*** 2009-05-28 13:05:45.854
ksedmp: internal or fatal error
Current SQL statement for this session:
BEGIN
dbms_java.server_startup
; END;
----- PL/SQL Call Stack -----
object line object
handle number name
51ea7318 0 package body SYS.DBMS_JAVA
51e99d34 2 anonymous block
----- Call Stack Trace -----
calling call entry argument values in hex
location type point (? means dubious value)
Es obvio que el error esta relacionado con JVM del RDBMS.
Buscando en metalink encuentro:
Full JVM removal on 8.1.7 (includes re-installation steps) Doc ID: 159801.1
Purpose
-------------------
Assist in accomplishing a clean removal of a complete JVM installation on 8.1.7.
In the 8.1.7 version of the rdbms server there exists the potential to have a
wide variety of "java-related" functionality introduced into the database.
For an overview and description of the functionality alluded to,
please see Note 156477.1 "JVM installation on 8.1.7".
In prior versions of 8i it may have been sufficient to simply execute the
$ORACLE_HOME/javavm/install/rmjvm.sql script to remove the JVM from the database.
This isn't the case in the 8.1.7 version.
If other java-related scripts were executed in 8.1.7, for example,
initrepapi.sql, initxml.sql, and init_jis.sql there are additional steps needed
for a complete JVM removal. If only the initjvm.sql script has been run on 8.1.7 and no
other java-related scripts have been run subsequent to it, then the rmjvm.sql
script by itself should still be sufficient for JVM removal.
Siguiendo todos los paso:
- Elimino JVM del Oracle
- Check the System Requirements for a JVM Installation DocId: 204935.1
- Cambio _SYSTEM_TRIG_ENABLED=TRUE en el initXXX.ora,
- Re-instalo la JVM.
- Reinicio la base
27 may 2009
Oracle 8i in CentOS 2
- Sistema Oparativo: CentOS 2 kernel 2.4.9-e.74smp
- Base de Datos: Oracle 8.1.7.0.1
- VmWare Server 1.0.2
Los siguientes links me sirvieron de ayuda:
- http://www.myoracleguide.com/Oracle.htm
- http://www.idevelopment.info/data/Oracle/DBA_tips/Linux/LINUX_2.shtml
- http://download.oracle.com/docs/pdf/A86017_02.pdf
Durante la instalación de la base cuando esta al 97% puede surgir el siguiente error que se resuelve aqui:
"Error iError invoking target install of makefile /XX/.../ctx/lib/ins_ctx.mknvoking target install of makefile /u01/app/oracle/product8/8.1.7/ctx/lib/ins_ctx.mk"
Como recomendación utilizar el jdk118_v3-glibc-2.1.3.tar.bz2 y no jdk1.2.2, ya que con este ultimo se colgo el runInstaller en el Netassist. Lo que llevo a realizar todo nuevamente.
26 may 2009
Instalacion facil de Oracle con Oracle-validated
Acabo de leer este articulo "Prepare your Linux Server to install Oracle database using oracle-validated RPM" en el cual oracle entrega un rpm que realiza todos los pasos previos a la instalación de la base. Un espectáculo, a probarlo se ha dicho.
22 may 2009
21 abr 2009
ORA_ROWSCN Pseudocolumn
Me surge la duda sobre "
scn_to_timestamp", en el manual de oracle figura lo siguiente sobre esta función y su seudo columna:
SCN_TO_TIMESTAMP
Purpose
SCN_TO_TIMESTAMP
takes as an argument a number that evaluates to a system change number (SCN), and returns the approximate timestamp associated with that SCN. The returned value is of TIMESTAMP
datatype. This function is useful any time you want to know the timestamp associated with an SCN. For example, it can be used in conjunction with the ORA_ROWSCN
pseudocolumn to associate a timestamp with the most recent change to a row.
ORA_ROWSCN Pseudocolumn
Purpose
For each row, ORA_ROWSCN
returns the conservative upper bound system change number (SCN) of the most recent change to the row. This pseudocolumn is useful for determining approximately when a row was last updated. It is not absolutely precise, because Oracle tracks SCNs by transaction committed for the block in which the row resides. You can obtain a more fine-grained approximation of the SCN by creating your tables with row-level dependency tracking. Please refer to CREATE
TABLE
... NOROWDEPENDENCIES | ROWDEPENDENCIES for more information on row-level dependency tracking.
20 abr 2009
IMP-00061: Warning: Object type "X"."X" already exists with a different identifier
Estuve realizando una migración de Oracle 10gR2 de Windows a Oracle Linux 10gR2 también, y como no podía ser de otra forma surgieron problemas y errores. Me voy a detener solamente en este, que me resulto interesante, sobre todo por la poca info que encontré.
Comando de importación:
- imp system/xxx IGNORE=Y FILE=$file LOG=Log.log SHOW=N BUFFER=100000 RECORDLENGTH=8192
Salida de log de importación:
IMP-00061: Warning: Object type "SYSTEM"."REPCAT$_OBJECT_NULL_VECTOR" already exists with a different identifier
.......................................................
IMP-00061: Warning: Object type "SYSMAN"."MGMT_BCN_THRESHOLD" already exists with a different identifier......................................................
IMP-00061: Warning: Object type "SYSMAN"."MGMT_CRED_ROW_ARRAY" already exists with a different identifierCausa: en la creación de las tablas se genera un chequeo de tipos de datos en donde el type id no coincide.
Solución: agregar en el parámetro del impor toid_novalidate con el nombre de los objetos que generan el problema.
Ej:
imp system/xxxxx IGNORE=Y FULL=Y FILE=$files LOG=impFull.log FEEDBACK=10000 SHOW=N ANALYZE=N BUFFER=100000 RECORDLENGTH=8192 toid_novalidate= OLAPSYS.ALL_OLAP2_AW_METADATA_O, OLAPSYS.ALL_OLAP2_AW_METADATA_T, OLAPSYS.OLAP_SYS_AW_ACCESS_OBJ, OLAPSYS.OLAP_SYS_AW_ACCESS_TBL, OLAPSYS.OLAP_SYS_AW_ENABLE_ACCESS_OBJ, OLAPSYS.OLAP_SYS_AW_ENABLE_ACCESS_TBL, OLAPSYS.O_MESG_ROW, ...,etc
25 feb 2009
Apache + Virtal Host's siempre al mismo VirtualHost
Esto es para tenerlo presente princiapalmente para mi, ya que soy de olvidarme la resolucion de alguno de mis problemas.
- Problema: Tenemos varios virtualhost bien configurados, en mi caso use el site default como template para crear el resto. Pero cuando queremos acceder a uno de los sites virtuales siempre nos da el mismo.
- Solucion: despues de estar renegando un rato largo, alguien por ahi dice que esto se debe a que apache esta listando en todas las interfaces y no logra identificar el virtualhost basado en nombres. Y por ende muestra el por default el primero de la lista de apache2/sites-enabled. Agregar al final del apache2.conf el ServerName con el nombre del host resuelve el problema.
18 feb 2009
[ERROR] /usr/sbin/mysqld: Incorrect information in file: './xxxxx.frm'
En la busqueda de la optimizacion de mi base he encontrado el siguiente error:
mysqld[10582]: 090218 7:58:13 [ERROR] /usr/sbin/mysqld: Incorrect information in file: './xxxxxx.frm'
Por lo que encontre en la web, googleando obvio, se debe aparentemente a corrupciones en las tablas, debido a un mal cierre de la base ya sea por fallo de energia, kill process,etc.
En busqueda de solucionar mi problema he utilizado la herramienta mysqlcheck la que ha chequeado todas las tablas sin ningun problema.
Despues de unos dias nuevamente:
mysqld[10582]: 090218 7:58:13 [ERROR] /usr/sbin/mysqld: Incorrect information in file: './xxxxxx.frm' :( X(
Utilizo la misma tool y nada, algo no anda bien aparentemente. Asi que me decido utilizar myisamchk la cual se corre con la base de datos parada sobre los datafiles. Como la misma esta en produccion hago la copia de los archivos (/var/lib/mysql/dir) y pruebo correr la herramienta, y caramba aparece mas de un error. Myisamchk permite hacer reparaciones, asi que reparo y vuelvo a chequear y definitivamente ahora esta todo bien.
La pregunta del millon es: ¿ cual es la diferencia entre mysqlcheck y myisamchk ?
Segun el manual solo es el estado en el cual se encuentra la base, pero a lo mejor alguien mas me sepa responder.
Saludos.
17 feb 2009
MysqlTuner
Hace un par de dias que estoy con Joomla un CMS, muy bonito en lo que respecta a modulos, mambots y todo eso. Pero del lado de la base de datos (MySQL) un dolor de cabeza, en mi busqueda por optimizar el motor, a lo que de lugar, he encontrado un par de herrameintas bastante interesantes las que les comparto aqui.
- mytop: un clon del comando top de Linux pero exclusivo para mysql. Su instalacion es mas que sencilla apt-get install mytop. Suele tirar el error "Use of uninitialized value in substitution (s///) at /usr/bin/ mytop line 958" que se resuelve muy bien aqui.
- Otra herramienta y hasta el momento mi favorita es mysqltuner.pl, la corremos con los mismos paramtros que las demas herramientas ya integradas con el motor, y nos indica cuales son los parametros del /etc/mysql/my.cf que deberiamos optimizar. Un espectaculo :-)
Obvio que con eso no es suficiente, asi que seguire investigandoooo .........
Saludos.
13 feb 2009
Apt-Proxy
Hoy es el dia que he decidido hacer mis post mas que cortos y rapidos, cosa que no queden en un intento, como los otros tantos que tengo en mis borradores.
Tengo un server "A" front-end http el cual tambien tiene habilitado en el firewall el uso de Apt, todo barbaro hasta ahi. El problema que se me ha presentado es que existe otro server "B" back-end el cual necesito actualizar y cuya unica conexion es contra el server "A". ¿Como dientres hago?
Bueno gracias a debian exite apt-proxy, es muy facil, utilizamos los repositorios locales ("A") para proveer de paquetes de instalacion a otros servers ("B") y en caso de que no lo poseeamos en este server ("A") apt-proxy los busca desde los repositorios de la internet. No hay mucho que agregar esta mas que claro en Ubuntu.
Espero que a alguien mas le sirva.
Saludos.
Pd: Miren la seccion Troubleshooting si tienen algun problema.