martes, 26 de abril de 2011

DEDOS CHUECOS


Para aquellos que tienen los dedos chuecos como yo, y en ocaciones escriben "sl" en lugar de "ls" , pues aqui tienen un tren

Para instalar este paquete solo hay que hacer:

#apt-get install sl







O si quieren ver una vaca que habla, hagan:

#apt-get cowsay

y ejecuten:

$cowsay hola campeones, y saldrá una vaca

< hola campeones >
------
\ ^__^
\ (oo)\_______
(__)\ )\/\
||----w |
|| ||


rlwrap

Algo que puede llegar a ser bastante molesto es volver a escribir una consulta, sobre todo cuando son muy largas, cosa que si puede ocacionar extrañar a WINDOWS!!!( Dios no lo quiera) para esto exite rlwrap :D

#apt-get install rlwrap

Después de esto solo agregamos una línea a nuestro bash :p

#
vi ~/.bashrc

alias sqlplus='rlwrap sqlplus'


Y LISTO!!!!!!!!!!!!!!!!!!!!!!!!!!!
Tenemos nuestro Buffer en nuestra sagrada terminal al momento de usar Linux

~/.bashrc, ~/.bash_profile, /etc/bashrc, /etc/profile

Bien en muchas ocaciones es necesario crear alias, o exportar alguna variable, y es aqui donde entra la duda "en que archivo lo hago", bien es muy fácil:

Si queremos que estos cambios o alias se apliquen a TODOS LOS USUARIOS,

/etc/bashrc Se ejecuta cada vez que se ejecuta el programa bash
/etc/profile Se ejecuta cuando los usuarios inician sesión

Si queremos que estos cambios o alias se apliquen a SOLO UN USUARIO, tendriamos que editar alguno de estos archivos:

~/.bashrc Se ejecuta cada vez que iniciamos el programa bash
~/.bash_profile Se ejecuta cuando el usuario inicia sesión

NOTA: Recordemos que el caracter ~ significa que estamos en el home de un usuario, en otras palabras si somos el usuario oracle ~ significa /home/oracle

lunes, 25 de abril de 2011

ORA-00132

Al tratar de iniciar la base de datos Oracle muestra el siguiente error:

SQL> startup
ORA-00119: invalid specification for system parameter LOCAL_LISTENER
ORA-00132: syntax error or unresolved network name 'LISTENER_OPROD3'


Bien si observamos un poco, vemos que esta marcando errores de sintaxis, lo que debemos hacer es lo siguiente:

1.-Editar el archivo tnsnames.ora
vi $ORACLE_HOME/network/admin/tnsnames.ora

2.-Agregar los datos del listener que está marcando error, en mi caso agrego la siguiente línea:

LISTENER_OPROD3 =
(ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521))

y listo


miércoles, 20 de abril de 2011

Insertar millones de datos aleatorios en Oracle

Bien, hay bastantes entradas en Internacho sobre este tema, solo pondré un script para insertar y millon y medio de registros en una tabla:

begin
for i in 1..1500000 loop

insert into pruebas2 values(

i,
dbms_random.string('U', 200),
ROUND(DBMS_RANDOM.VALUE(1,1000000000)),
to_date(trunc(dbms_random.value(2454867,2455598)), 'J'),
EMPTY_BLOB()

--Opcional para hacer commit cada 1,000 registros

if mod(i,1000)=0 then
commit;
end if;
end loop;
end;
/

viernes, 15 de abril de 2011

Acceder a Oracle con el usuario sys sin el privilegio de SYSDBA

Muchas veces tratamos de acceder a Oracle con el usuario "SYS" y nos muestra el siguiente error

ORA-28009: connection as SYS should be as SYSDBA or SYSOPER

Esto se soluciona de la siguiente manera

-Nos conectamos a oracle como sysdba y cambiamos el valor de O7_DICTIONARY_ACCESSIBILITY a true

SQL> conn / as sysdba

SQL> SHOW PARAMETER O7_DICTIONARY_ACCESSIBILITY
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
O7_DICTIONARY_ACCESSIBILITY boolean FALSE

SQL> ALTER SYSTEM SET O7_DICTIONARY_ACCESSIBILITY=TRUE scope=spfile;


2.-Damos de baja la base de datos y la iniciamos

SQL> shutdown immediate;
SQL> startup


3.-Ahora ya podemos conectanor con el usuario sys

SQL> conn sys/lennon
Connected.

SQL> show parameter O7_DICTIONARY_ACCESSIBILITY
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
O7_DICTIONARY_ACCESSIBILITY boolean TRUE

NOTA: estas conectado como el usuario sys , pero no tienes el privilegio de sysdba asi que no podras ser dios :p

SQL> shutdown immediate;
ORA-01031: insufficient privileges

SQL> show user
USER is "SYS"

FUENTE:http://arjudba.blogspot.com/2008/05/ora-28009-connection-as-sys-should-be.html

lunes, 11 de abril de 2011

Conectar Perl y Oracle

Pues esto de conectar varios lenguajes con Oracle como que ya se puso de moda,jajjajaja
a diferencia de la conexión de PHP y Oracle, la conexión con Perl es muy sencilla.

Primero q nada DBI, ya debe estar instalado, que seguramente lo esta lo checamos con este comando:


perl -e 'use DBI; print $DBI::VERSION,"\n";'

Bien ahora conseguimos el modulo
DBD:Oracle, lo descomprimimos y ejecutamos:

perl Makefile.PL (asegurate de tener seteadas las varibles ORACLE_HOME y LD_LIBRARY_PATH)
make
make install

y listo!!!
Hacemos un sencillo script, para ver q todo furule


#!/usr/bin/perl

$oracle_server="192.168.2.100";
$oracle_listener="listener";
$oracle_sid="XE";
$oracle_port="1522";
$oracle_user="motor";
$oracle_password="lennon";
$oracle_testing_table="dual";

use DBI;
use DBD::Oracle;

my $dbh = DBI->connect("dbi:Oracle:host=$oracle_server;port=$oracle_port;sid=$oracle_sid",
$oracle_user, $oracle_password)
or die "Impossible de se connecter à la base Oracle : " . DBI->errstr;

my $sth = $dbh->prepare("SELECT sysdate FROM $oracle_testing_table")
or die "Impossible de preparer la requette: " . $dbh->errstr;

$sth->execute()
or die "Impossible d'exécuter la requette: " . $sth->errstr;

while ( my @data = $sth->fetchrow_array() )
{
my $date = $data[0];
print "Fecha: $date\n";
}


$sth->finish;

$dbh->disconnect;