Technological recipes that I've held to prepare some solutions DBA environments. (Comments and questions to my emails: felipe.donoso@oracle.com or felipe@felipedonoso.cl)
Oct 31, 2007
Linux: Habilitar aceleración 3d en Linux
Inevitablemente para poder activar xgl en Opensuse que es muy fácil, y para poder emular juegos con Cedega que también es muy fácil (En otro blog comentaré como activar estas dos cosas, aunque ya en opensuse se dispone de herramientas gráficas que por lo menos permiten activar Xgl) deben tener activada la aceleración 3D. y Basta con seguir los siguientes pasos como root.
Tener instalado:
-make
-gcc
-Kernel_source
con el comando rpm -qa make pueden buscar si el paquete está instalado
dirigirse a la carpeta /usr/src/linux y ahí ejecutar los siguientes comandos
make mrproper
make cloneconfig
make modules_prepare
make clean
hacer un init 3 para entrar en modo consola
correr el script del controlador gráfico, este driver puede ser descargado desde la página de ati y este depende del tipo de tarjeta que ustedes posean:
sh ./ati-driver-installer-....
seguir los pasos y dejar todo por defecto
editar el archivo /etc/ld.so.conf y agregar la siguiente línea
máquinas de 32 bits: /usr/lib/fglrx/lib
y para máquinas de 64 bits: /usr/lib64/fglrx/lib
ejecutar el comando ldconfig
Hacer un backup de /etc/X11/xorg.conf
ejecutar aticonfig --initial --input=/etc/X11/xorg.conf
ejecutar sax2 -r -m 0=fglrx
y sería todo. Yo tengo la aceleración 3d activada en un intel celeron D y en mi notebook acer aspire 5050 sólo siguiendo estos pasos.
Oracle: Cambiar de ubicación los datafiles
Pasos para cambiar Ubicación de datafiles:
-Bajar la base de datos
sql> SHUTDOWN IMMEDIATE
- Mover los archivos al nuevo destino
(el movimiento de archivos se puede hacer mientras la base esté montada, no hay problemas con eso)
- Luego Montar la base de datos
SQL> startup mount
ORACLE instance started.
Total System Global Area 439418880 bytes
Fixed Size 1300436 bytes
Variable Size 201328684 bytes
Database Buffers 230686720 bytes
Redo Buffers 6103040 bytes
Database mounted.
- Ahora hacer un rename del datafile hacia el nuevo destino ('ORIGEN' to 'DESTINO')
SQL> ALTER DATABASE RENAME FILE '/u02/oradata/newton/system01.dbf' TO '/u03/oradata/newton/system01.dbf'; Database altered. SQL> ALTER DATABASE RENAME FILE '/u02/oradata/newton/undotbs01.dbf' to '/u04/oradata/newton/undotbs01.dbf'; Database altered. SQL> alter database open; Database altered.
PD: como los archivos de tempfile no se renombran hay que borrarlos y volverlos agregar:
ALTER DATABASE TEMPFILE
'/u02/oradata/infra/infra/temp01.dbf' DROP;
ALTER TABLESPACE TEMP ADD TEMPFILE
'/u02/oradata/infra/temp01.dbf' SIZE 500M;
Linux: Montando partición NTFS en centos4 x64
if you need write access to the ntfs partition, you'll need fuse and ntfs-3g ....
Use the RPMForge repository (see http://wiki.centos.org/Reposito
Then update your /etc/fstab to use your ntfs partition and declare it as a ntfs-3g partition (don't forget the rw option ....)
If you only need read access, the centosplus kernel has ntfs read access module built-in so nothing to do/setup
Felipitux.
Centos: Habilitando repositorio en centos 4
The CentOSPlus Repository
The CentOSPlus repository contains packages that are upgrades to the packages in the CentOS base + CentOS updates repositories. These packages are not part of the upstream distribution and extend CentOS's functionality at the expense of upstream compatibility. Enabling this repository makes CentOS different from upstream. You should understand the implications of this prior to enabling CentOSPlus. Here is the CentOSPlus Readme file for CentOS 4 and CentOS 5. You should also browse the CentOSPlus directory for CentOS 4 or CentOS 5 on our mirrors for the architecture you intend to use.
The CentOSPlus repository contains a group of packages, all of which are updates. You probably do not want to enable CentOSPlus as a whole, but instead want to pick the exact packages that you want to use. |
Note: The CentOSPlus repository also contains the CentOS Web Stack. If you are interested in upgrading to the CentOS Web Stack please see this page instead. The CentOS Web Stack contains updates to Apache (httpd) 2.0.58, MySQL 5.0, PostgreSQL 8.1, Perl 5.88, mod_perl 2, PHP 5.1.6, and ODBC. |
For example, you may want php-5.x and mysql-5.x from CentOSPlus but you may not want the postfix with mysql_pgsql capability, the kernel with unsupported items turned on, etc. Prior to enabling the CentOSPlus repository you should read about the includepkgs= and/or exclude= options in yum. To read about these options use this command at the command line:
man yum.conf
Enabling the CentOSPlus repository
To enable the CentOSPlus repository, edit the file /etc/yum.repos.d/CentOS-Base.repo and look for the [centosplus] section. Here is how it looks by default:
#additional packages that extend functionality of existing packages
[centosplus]
name=CentOS-$releasever - Plus
mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=centosplus
#baseurl=http://mirror.centos.org/centos/$releasever/centosplus/$basearch/
gpgcheck=1
enabled=0
gpgkey=http://mirror.centos.org/centos/RPM-GPG-KEY-centos4 <== -CentOS-5 in CentOS5
Example 1: (CentOS 4) We want the new CentOSPlus postfix with mysql_pgsql support. Here is how to setup /etc/yum.repos.d/CentOS-Base.repo:
#additional packages that extend functionality of existing packages
[centosplus]
name=CentOS-$releasever - Plus
mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=centosplus
#baseurl=http://mirror.centos.org/centos/$releasever/centosplus/$basearch/
gpgcheck=1
enabled=1
gpgkey=http://mirror.centos.org/centos/RPM-GPG-KEY-centos4
includepkgs=postfix-*
exclude=postfix-*plus*
Note: If you want to use postfix compiled for the CentOS Web Stack versions of pgsql and mysql, you would not need the "exclude=postfix-*plus*"
You would also want to add this to both the [base] and [update] sections of /etc/yum.repos.d/CentOS-Base.repo, so as not to get postfix packages from there anymore:
exclude=postfix-*
Example 2: We want to use CentOSPlus kernel to be able to use the jfs or reiserfs file system and the creation tools. We would edit /etc/yum.repos.d/CentOS-Base.repo and modify the following in the [centosplus] section:
enabled=1
includepkgs=kernel* jfsutils reiserfs-utils
In the [base] and [update] section you would do the following:
exclude=kernel kernel-devel kernel-smp-* kernel-hugemem* kernel-largesmp* (CentOS 4 only)
exclude=kernel kernel-devel kernel-PAE-* (CentOS 5 only)
Note: If you want to use the XFS file system there are kernel modules to do that, so see examples 3 and 4.
Example 3: We want to use the XFS file system with the regular kernel ... this does not require the CentOSPlus repo at all, you would just do this:
yum list available kmod-xfs\*
The results would be something like this:
Available Packages
kmod-xfs.i686 0.4-1.el4.2.6.9_55.0.9 extras
kmod-xfs-hugemem.i686 0.4-1.el4.2.6.9_55.0.9 extras
kmod-xfs-smp.i686 0.4-1.el4.2.6.9_55.0.9 extras
kmod-xfs-xenU.i686 0.4-1.el4.2.6.9_55.0.9 extras
I would then pick the module that I need ... in my case kmod-xfs-smp.i686 and install it with this command:
yum install kmod-xfs-smp.i686 xfsdump xfsprogs
Note: The kernel module also has dmapi support, so you can add dmapi to the above install line if you want to use it. XFS usage details are beyond the scope of this page.
Example 4: We already have the CentOSPlus kernel (for a different reason ... otherwise see example 3) AND we want to add XFS filesystem. We would edit /etc/yum.repos.d/CentOS-Base.repo and modify the following in the [centosplus] section:
enabled=1
includepkgs=kernel* xfs* dmapi*
In the [base] and [update] section you would do the following:
exclude=kernel kernel-devel kernel-smp-* kernel-hugemem* kernel-largesmp* (CentOS 4 only)
exclude=kernel kernel-devel kernel-PAE-* (CentOS 5 only)
In the [extras] section you would do the folowing:
exclude=xfs* kmod-xfs* dmapi*
yum-plugin-priorities
Another way to protect your system from updates from the CentOSPlus repository is to use the yum-plugin-priorities plugin. This is the recommended method. Follow the instructions shown in the link and set up yum-plugin-priorites. Edit /etc/yum.conf and add this line:
plugins=1
You would set priorities in /etc/yum.repos.d/CentOS-Base.repo like this:
[base]
exclude=foo bar
priority=1
[update]
exclude=foo bar
priority=1
[centosplus]
enable=1
priority=2
This will make the [base] and [update] repositories have higher priority over the [centosplus] repository, so the only items in CentOSPlus that will update either [base] or [update] are items that are excluded from those repositories with an exclude= setting.
Therefore, using yum-plugin-priorities allows you to skip setting up the includepkgs= for the [centosplus] section of CentOS-Base.repo, but it still only allows updates of packages that you exclude= from the [base] and [update] repositories.
Summary
Using the CentOSPlus repository is more dangerous than using other CentOS repositories, as it is designed to have several updated packages and it is not really designed to be completely enabled.
You can use all the packages in CentOSPlus, but normally one will pick only the packages they are looking for and use exclude= and includepkgs= (or exclude= and yum-plugin-priorities) to load only those packages from the CentOSPlus repository.
Please ensure that you understand all these concepts before you use the CentOSPlus repository.Comandos de vi
$vi Editar un texto sin nombre
$vi fichero Editar un fichero (Nuevo o no)
$vi fichero1 fichero2 ... Editar lista de ficheros
$vi +n fichero Editar fichero en la linea n
$vi +/txt fichero Editar fichero en la 1a linea donde aparece txt
Movimientos del cursor
↑k
← →
h ↓j l
0 Inicio de linea
$ Fin de linea
w Word: Avanzar palabra
b Back: Retroceder palabra
e End: Al final de palabra
H Home: Esquina sup. izq. de la ventana
L Last: Esquina inf. izq. de la ventana
^u Window up: Subir ventana
^d Window down: Bajar ventana
^b Page back: Retroceder p´gina
a
^f Page forward: Avanzar página
nG Go: Salta a la n-ésima linea
1G A la primera linea
$G A la ultima linea
zRet Hacer la linea actual la superior
zz Hacer la linea actual la central
z- Hacer la linea actual la ultima
fcar Buscar en la linea el carácter car (hacia delante)
Fcar Buscar en la linea el carácter car (hacia atrás)
Marcas
m(a-z) Marcar la linea actual con (a-z)
’(a-z) Mover a la marca (a-z)
Insertar texto
i Insertar (delante del cursor)
I Insertar al principio de la linea
a Añadir (detrás del cursor)
A A˜ adir al final de la linea
n
o Insertar una linea debajo de la actual
O Insertar una linea encima de la actual
Borrar texto
x Borrar caracter actual
X Borrar caracter anterior
dd Borrar linea actual
D Borrar hasta final de linea
dCmdMov Borrar hasta la posici´n del movimiento indicado
o
dw Borrar palabra
Cambiar texto
rcar Reemplazar el caracter actual por car
R Reemplazar texto desde la posici´n del cursor
o
s Substituir el caracter actual por texto a insertar
S Substituir la linea actual
C Cambiar hasta el final de la linea
cCmdMov Cambiar hasta la posici´n del movimiento indicado
o
cw Cambiar palabra
J Unir a la linea actual la siguiente
Copiar y pegar
CmdBorrado Cortar (El ultimo borrado pasa automáticamente al buffer)
yy Copiar en el buffer la linea actual
αyy Copiar en el buffer α lineas desde la actual
yCmdMov Copiar en el buffer hasta la posición del movimiento indicado
p Pega el buffer detrás del cursor
P Pega el buffer delante del cursor
"(a-z)CmdBorrado Cortar hacia el buffer de nombre (a-z)
"(a-z)CmdCopiar Copiar hacia el buffer de nombre (a-z)
"(a-z)CmdPegar Pegar desde el buffer de nombre (a-z)
Buscar y substituir
% Busca el caracter delimitador ( ) [ ] { } que balancea el actual
(Dentro de un entorno salta al delimitador inicial)
/ExpReg Busca hacia delante la expresi´n regular ExpReg
?ExpReg Busca hacia atr´s la expresi´n regular ExpReg
n Repite la ultima b´ squeda
N Repite la ultima b´ squeda en el sentido contrario
:s/txt/txt2 Substituye el texto txt por txt2 la primera vez que aparece en la linea
:s/txt/txt2 /g Substituye todas las apariciones de txt por txt2 en la linea
:α, βs/txt/txt2 /g Substituye en el rango de lineas [α, β]
Repetir y deshacer
. Repetir ultimo comando de actualizaci´n (Borrado/Inserci´n/Cambio)
u Deshacer ultimo comando de actualizaci´n
U Deshacer todos los cambios en la linea actual
Comandos del shell
:sh Invoca un nuevo shell. Al salir continua la edici´n
:!CmdShell Ejecuta un comando del sistema operativo
:r!CmdShell Ejecuta un comando del S.O. e inserta su salida en la posici´n del cursor
!!CmdShell Ejecuta un comando del S.O. e inserta su salida en la posici´n del cursor
:!! Repite el ultimo comando ejecutado en un shell
´
:α, β!Cmd Ejecuta un comando del S.O. sobre el rango de lineas [α, β]
Operaciones con ficheros
:rfichero Inserta el contenido de fichero debajo de la linea actual
:w Graba las modificaciones efectuadas en el fichero
:wfichero Escribe el texto actual en fichero (Sólo si no existía)
:w!fichero Escribe el texto actual en fichero
:α, βwfichero Escribe el rango de lineas en fichero
:efichero Descartar el texto actual y editar fichero
:n[ext] Editar el siguiente fichero de la lista de argumentos
:rew[ind] Volver al primer fichero de la lista
:q Salir (si no hay cambios)
:q! Salir (sin grabar)
:wq Grabar cambios y salir
:x Grabar cambios y salir
ZZ Grabar cambios y salir
Control de comandos
Esc Finalizar/Anular comando
^l Refresca la pantalla
αCmd Repite el comando α-veces
:α, βCmd Ejecuta el comando sobre el rango de lineas [α, β]
(α y β pueden ser n´ mero, comandos de movimiento, marcas,...)
$ indica la ultima linea del fichero
. indica la linea donde est´ el cursor
set opci´n Activa la opci´n de vi correspondiente
set noopci´n Desactiva la opci´n de vi correspondiente
all Muestra todas las opciones y sus valores
ai Modo de autoindentaci´n o
list Muestra caracteres de control
nu[mber] Muestra numeraci´n de lineas
vb Sustituye el pitido por una indicaci´n visual
wrap Mostrar partidas las lineas que no caben en la pantalla
...
saludos.
.Net: Cambiando la consulta utilizada por un gridview desde un parámetro URL
Para cambiar la consulta que utiliza un gridview utilizando un parámetro por la URL de una página deben agregar lo siguiente al tag correspondiente:
ProviderName="<%$ ConnectionStrings:ConexionBD.ProviderName %>" SelectCommand="SELECT APE_PAT ,APE_MAT ,NOMBRES ,RUT_NUM||'-'||RUT_DV FROM GLO_PROFESOR WHERE APE_PAT LIKE :p">
//http://localhost:1057/Test.11.05.2007/ViewProfesores.aspx?p=R%
Saludos. Felipitux.
ORacle: cambiar de ubicación los control files
Muchas veces se ha tratado de modificar los control files a través del famoso comando ALTER SYSTEM SET .... etc. Y este ha dado más de algún problema. Aquí les adjunto un método que hasta ahora no me ha fallado ni siquiera en la versión 11g de esta plataforma.
oracle@felipitux:~> sqlplus "/as sysdba"
SQL*Plus: Release 11.1.0.6.0 - Production on Wed Oct 31 10:50:15 2007
Copyright (c) 1982, 2007, Oracle. All rights reserved.
Connected to:
Oracle Database 11g Enterprise Edition Release 11.1.0.6.0 - Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options
- Se recrea el PFILE a partir del SPFILE
SQL> create pfile from spfile;
File created.
- Se baja la instancia
SQL> shutdown immediate
Database closed.
Database dismounted.
ORACLE instance shut down.
SQL> exit
Disconnected from Oracle Database 11g Enterprise Edition Release 11.1.0.6.0 - Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options
- Se mueven de ubicación los control files a las particiones deseadas
oracle@felipitux:~> mv /u02/oradata/newton/control02.ctl /u03/oradata/newton/
oracle@felipitux:~> mv /u02/oradata/newton/control03.ctl /u04/oradata/newton/
- Luego se busca el PFILE creado y se edita con las ubicaciones nuevas
- Generalmente este archivo se ubica en $ORACLE_HOME/dbs/init
oracle@felipitux:~> cd /u01/app/oracle/product/11.1.0/db_1/dbs/
oracle@felipitux:/u01/app/oracle/product/11.1.0/db_1/dbs>vi initnewton.ora
- Luego de Editar levantamos la instancia en modo nomount indicando que vamos a utilizar un PFILE
oracle@felipitux:~> sqlplus "/as sysdba"
SQL*Plus: Release 11.1.0.6.0 - Production on Wed Oct 31 10:53:06 2007
Copyright (c) 1982, 2007, Oracle. All rights reserved.
Connected to an idle instance.
SQL> startup nomount pfile=/u01/app/oracle/product/11.1.0/db_1/dbs/initnewton.ora;
ORACLE instance started.
Total System Global Area 439418880 bytes
Fixed Size 1300436 bytes
Variable Size 201328684 bytes
Database Buffers 230686720 bytes
Redo Buffers
- Luego recreamos el SPFILE a partir del PFILE modificado
SQL> create spfile from pfile;
File created.
- Luego realizamos los pasos para levantar la instancia completa y revisar las nuevas ubicaciones
SQL> alter database mount;
Database altered.
SQL> alter database open;
Database altered.
SQL> show parameter control_files
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
control_files string /u02/oradata/newton/control01.
ctl, /u03/oradata/newton/contr
ol02.ctl, /u04/oradata/newton/
control03.ctl
SQL> exit
Disconnected from Oracle Database 11g Enterprise Edition Release 11.1.0.6.0 - Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options
oracle@felipitux:/u01/app/oracle/product/11.1.0/db_1/dbs>
Felipitux.
Jooce, un sistema operativo online bastante espectacular
No solemos traer todos los llamados sistemas operativos online, aunque los que si elijamos es porque ofrecen funcionalidades diferentes, como el caso de Jooce.
A falta de poder probarlo en persona, habiendo solicitado mi invitación como tú también puedes hacer, Jooce es un completo y agradable sistema operativo online desarrollado en flash y en el que encontraremos funcionalidades más que interesantes.
Ya desde su portada, la cual podemos poner en español, nos encontramos con un servicio que nos ofrece un sistema de almacenamiento donde podemos subir y gestionar nuestros archivos, que en caso de archivos de audio o vídeo, también podemos reproducir, ya sean subiéndolos o importándolos, como el caso de los vídeos de YouTube. No está de más indicar que podemos compartir nuestros archivos con nuestros contactos, con lo que también tenemos opciones para poder organizarlos. Pero también está integrada la mensajería, con lo que además podemos configurar nuestras cuentas y establecer contacto con nuestros amigos.
Sólo queda que una invitación caiga en mis manos para hacer una revisión en primera persona de todas y cada una de sus funcionalidades, aunque de mientras podemos disfrutar de las capturas que nos ofrecen desde su portada.
Vía | Wwwhat´s new
Enlace | Jooce
(Genbeta)
Oct 30, 2007
Sql Server: Tamaños de bases de datos y objetos nuevos
Este script entrega el tamaño en detalle de las bases de datos y además entrega los objetos nuevos de cada una de ellas, este script lo utilizo mucho en mis monitoreos.
print 'Tamaño de las bases de Datos y objetos nuevos dentro estas'
declare @dbname varchar(100)
Declare @SQL VarChar(1000)
declare curdb cursor for
SELECT DB_NAME(dbid) AS DB_NAME
FROM sysdatabases
--WHERE DB_NAME(dbid) IN ('BINARIA','CARGA_SOTEK','SOTEK','SOTEK_GESTION')
ORDER BY dbid
open curdb
FETCH NEXT FROM curdb INTO @dbname
while @@FETCH_STATUS = 0
BEGIN
PRINT 'BASE DE DATOS: '+@dbname+' PROCEDIMIENTO SP_HELPDB'
exec sp_helpdb @dbname
Select @SQL = 'use '+@dbname+' exec sp_spaceused '
PRINT 'BASE DE DATOS: '+@dbname+' PROCEDIMIENTO SP_SPACEUSED'
Exec ( @SQL)
SELECT @SQL = '
SELECT
SYSUSERS.NAME Propietario,
SYSOBJECTS.NAME Nombre,
CASE SYSOBJECTS.XTYPE
WHEN ''C'' THEN ''Restricción CHECK''
WHEN ''F'' THEN ''Foreign Key''
WHEN ''K'' THEN ''Primary Key''
WHEN ''P'' THEN ''Procedimiento''
WHEN ''S'' THEN ''Tabla de Sistema''
WHEN ''TR'' THEN ''Trigger''
WHEN ''U'' THEN ''Tabla''
WHEN ''V'' THEN ''Vista''
END ''Tipo de objeto'',
LEFT(CONVERT(VARCHAR, SYSOBJECTS.CRDATE, 120), 10) AS ''Fecha Creación''
FROM
SYSOBJECTS,
SYSUSERS
WHERE
SYSOBJECTS.CRDATE > GETDATE() - 10
--AND SYSOBJECTS.UID = SYSUSERS.UID
ORDER BY
SYSOBJECTS.XTYPE,
SYSUSERS.NAME
'
PRINT ''
PRINT 'OBJETOS NUEVOS EN LA BASE DE DATOS '+@dbname
Exec ( @SQL)
FETCH NEXT FROM curdb INTO @dbname
END
CLOSE curdb
DEALLOCATE curdb
GO
Script que entrega los últimos respaldos ejecutados en SQL Server
PRINT 'ÚLTIMOS RESPALDOS EJECUTADOS'
SELECT B.name as Database_Name, ISNULL(STR(ABS(DATEDIFF(day, GetDate(),
MAX(Backup_finish_date)))), 'NUNCA') as DaysSinceLastBackup,
ISNULL(Convert(char(10), MAX(backup_finish_date), 101), 'NUNCA') as LastBackupDate
FROM master.dbo.sysdatabases B LEFT OUTER JOIN msdb.dbo.backupset A
ON A.database_name = B.name AND A.type = 'D' GROUP BY B.Name ORDER BY B.name
To Know the Oracle Version. ¿32 or 64 bits?
How about this Oracle install? Is it 64-bit?
The question here is weather your Oracle binaries are 64-bit. While some of the binaries associated with Oracle may be 32-bit, the important ones will be 64 bit. To check those, follow these steps from the command line:
cd $ORACLE_HOME/bin
file oracl*
This will display the file type of your oracle binaries. If you are running 64-bit binaries, the output should look like this:
oracle: ELF 64-bit MSB executable SPARCV9 Version 1, dynamically linked, not stripped
oracleO: ELF 64-bit MSB executable SPARCV9 Version 1, dynamically linked, not stripped
If your binaries are 32-bit, the output will look like this:
oracle: ELF 32-bit MSB executable SPARC Version 1, dynamically linked, not stripped
Restaurar una tabla borrada en Oracle
- Primero se debemos estar logueados en lo posible con el usuario que realizó el drop table
- Segundo, Debemos consultar la tabla USER_RECYCLEBIN (SELECT * FROM USER_RECYCLEBIN )
- Tercero, Si hacemos un DESC sobre esa tabla veremos muchos campos entre ellos, dos particularmente;OBJECT_NAME y ORIGINAL_NAME. Si nos fijamos bien ORIGINAL_NAME tiene el nombre original de nuestro Objeto Borrado en este caso una tabla, y OBJECT_NAME tiene el HASH que le corresponde a ese objeto. Este último campo es el que demos utilizar para restaurar nuestro objeto.
- Cuarto, Debemos utilizar la sentencia FLASHBACK TABLE, que es la que restaurar nuestra tabla borrada: y la utilizamos de la siguiente manera:
FLASHBACK TABLE "hash_que_le_corresponde_a_nuestro_objeto" TO BEFORE DROP
- Eso es todo.
Script que entrega cantidad de Filas en Oracle
spool cantidad_de_filas.txt
SET SERVEROUTPUT ON
declare
v_ct number := 0 ;
v_sqlcode number := 0 ;
v_stmt varchar2(90) ;
cursor c_tbl is
select owner, table_name
from sys.dba_tables
where owner = 'SAMA'
and rownum < 11
;
r_tbl c_tbl%rowtype;
begin
open c_tbl;
loop
fetch c_tbl into r_tbl;
exit when c_tbl%notfound;
v_stmt := 'select count(*) from '||r_tbl.owner||'.'||r_tbl.table_name;
execute immediate v_stmt into v_ct;
v_sqlcode := SQLCODE;
if v_sqlcode = 0
then dbms_output.put_line('Table '||r_tbl.owner||'.'||
rpad(r_tbl.table_name,30)||
' count is '||to_char(v_ct,'999999999990')
);
else dbms_output.put_line('Bad return code'||v_sqlcode||
' on select of '||r_tbl.owner||
'.'||r_tbl.table_name
);
end if;
end loop;
close c_tbl;
end;
/
spool off
Script para recompilar objetos inválidos en Oracle
/*
# ----------------------------------------------------------------------
# Autor : Felipe Donoso Bastías
#
# Fecha de creación : 29-08-2007
#
# Objetivo : Recompilar todos los objetos inválidos de la base de datos
#
# Modificado : Felipe Donoso Bastías 04-09-2007
#
# ----------------------------------------------------------------------
*/
SET SERVEROUTPUT ON
DECLARE
CURSOR C_OBJETOS
IS
SELECT OWNER, OBJECT_NAME, OBJECT_TYPE FROM DBA_OBJECTS
WHERE STATUS = 'INVALID';
nombre_objeto VARCHAR2(100);
propietario VARCHAR2(100);
tipo_objeto VARCHAR2(100);
sql_str VARCHAR2(1000);
BEGIN
OPEN C_OBJETOS;
LOOP
FETCH C_OBJETOS INTO propietario, nombre_objeto, tipo_objeto ;
EXIT WHEN C_OBJETOS%NOTFOUND;
IF tipo_objeto = 'PACKAGE BODY' THEN
sql_str := 'ALTER PACKAGE '||propietario||'.'||nombre_objeto||' COMPILE';
dbms_output.put_line(sql_str);
EXECUTE IMMEDIATE sql_str;
sql_str := 'ALTER PACKAGE '||propietario||'.'||nombre_objeto||' COMPILE BODY';
dbms_output.put_line(sql_str);
EXECUTE IMMEDIATE sql_str;
END IF;
IF tipo_objeto = 'PROCEDURE' THEN
sql_str := 'ALTER PROCEDURE '||propietario||'.'||nombre_objeto||' COMPILE';
dbms_output.put_line(sql_str);
EXECUTE IMMEDIATE sql_str;
END IF;
IF tipo_objeto = 'FUNCTION' THEN
sql_str := 'ALTER FUNCTION '||propietario||'.'||nombre_objeto||' COMPILE';
dbms_output.put_line(sql_str);
EXECUTE IMMEDIATE sql_str;
END IF;
IF tipo_objeto = 'TRIGGER' THEN
sql_str := 'ALTER TRIGGER '||propietario||'.'||nombre_objeto||' COMPILE';
dbms_output.put_line(sql_str);
EXECUTE IMMEDIATE sql_str;
END IF;
IF tipo_objeto = 'VIEW' THEN
sql_str := 'ALTER VIEW '||propietario||'.'||nombre_objeto||' COMPILE';
dbms_output.put_line(sql_str);
EXECUTE IMMEDIATE sql_str;
END IF;
END LOOP;
CLOSE C_OBJETOS;
END;
/
Blogger primer lugar en ranking de blogs
María Pastora Sandoval, El Mercurio Online
SANTIAGO.- El portal Orbitando.com, informó que el 71,3 por ciento de los blogueros chilenos prefiere la plataforma Blogger para la publicación de sus espacios virtuales.En segundo lugar aparece Bligoo, con un 6,7 por ciento, una “agradable sorpresa” según publica el blog del portal, puesto que dicha plataforma fue desarrollada en Chile.
Con un 5,4 por ciento, como tercero de la lista, figura Wordpress.
El total de canales registrados por Orbitando.com, que informan su sistema de publicación, es de 3.384, en los que incluyen los fotologs, Flickr y YouTube.
Las cifras fueron obtenidas según los registros del portal se estiman de acuerdo a los registros de los inscritos, pero no todos han informado sobre su sistema de publicación, “por lo que el estudio solo da una muestra parcial pero significativa”.
En total, registran ya más de 5 mil blogs creados por chilenos, los que incluyen a compatriotas que publican desde el extranjero.
Además, entregó cifras sobre el uso de sistemas marcadores en su portal, en el que aparece Google Bookmarks como el más utilizado, seguido por Del.icio.us y MSN Live.
Nueva versión de gimp
Después de distintas versiones en las que se añadían poco más que bugfixes, los desarrolladores de Gimp han sacado esta nueva versión 2.4 con nuevas características muy interesantes, y un lavado de cara que los anteriores usuarios notarán como lo he hecho yo. Vamos a ir un poquito más a fondo, a ver qué mejoras han integrado y en qué nos beneficiaremos respecto a la versión estable anterior:
- Interfaz retocada. Seguramente lo primero que veas sea los nuevos iconos Tango, bastante mejores que los anteriores y que además están pensados tanto para los temas de GTK claros como oscuros. Más allá de eso los paneles se han retocado y prácticamente se pueden arrastrar a cualquier sitio, perfecto para crearnos un entorno de trabajo más personal y eficiente. También encontraremos cambios en los menús, por ejemplo se ha creado el menú Color que abarca todas las herramientas de Gimp en este tema. Y ya para acabar con este apartado, la barra de estado nos ofrecerá mucha más información que antes. Según los desarrolladores, estos cambios deberían suavizar la curva de aprendizaje, mientras los usuarios más experimentados pueden personalizar aún más su instalación.
- Nueva interfaz para seleccionar/cortar. ¡Con esto yo ya me conformaba! Para los que hayan trabajado antes con Gimp, seguramente se habrán dado cuenta que, por ejemplo, al recortar la imagen te aparecía una ventanita extra con información que particularmente odiaba, porque solo molestaba, como los popups. Por suerte, en esta versión esa y otras ventanitas “popups” se han integrado en el panel de herramientas. Pero además, la herramienta que sirve para establecer una selección es mucho más clara que antes. Ahora puedes cambiar el tamaño de una selección “temporal” arrastrando los cuadraditos que aparecen en las esquinas, facilitando muchísimo esta tarea. Además, ahora puedes establecer esquinas redondeadas de una forma más sencilla. Para mí, este apartado ha pasado de ser una de las peores herramientas disponibles a ser mucho mejor que las ofrecidas por otras aplicaciones comerciales. En serio: si los desarrolladores consiguieran transmitir este diseño al resto de herramientas, probablemente sería una de las aplicaciones gráficas más sencillas de usar.
- Selección del frente. Esta herramienta es completamente nueva, y sirve para seleccionar un objeto de primer plano (en realidad cualquier objeto, pero funciona mejor así). Su funcionamiento se basa en dos fases: primero rodeamos el objeto, con poca o ninguna precisión, y luego vamos pintando el objeto por dentro, igualmente admite bastante imprecisión. Luego nos genera una selección, que podremos ir retocando poco a poco hasta alcanzar la correcta. Funciona bien, pero para los usuarios avanzados seguro que con las rutas de toda la vida son más rápidos y obtienen mejor resultado. En el vídeo siguiente lo podemos ver en funcionamiento:
- Pinceles escalables. Antes si querías tener un pincel, por ejemplo un círculo, de un determinado tamaño, era posible crearte uno a medida para usarlo más adelante. Pero eso es mucho trabajo si solo vamos a usar ese pincel esa vez, así que ahora han integrado una barra de desplazamiento que permitirá agrandar o empequeñecer los pinceles en tiempo real, incluidos los bitmaps (¿alguien dijo pimiento?).
- Selección de color fuera del lienzo. Aquí es donde dejo caer otro “por fin”. Esta funcionalidad, que creo que ya tiene Photoshop desde hace tiempo si pulsas Control, te permite capturar un color que se encuentra en otra ventana fuera del lienzo. Sobre todo es útil para coger algún color desde una página del navegador. Para hacer esta tarea yo me valía de una herramienta adicional aparte, pero desde ahora ya no hace falta.
- Clonación en perspectiva. Si antes ya existía la clonación normal, es decir, copiar cierto número de pixeles y mezclarlos en otro sitio, ahora podemos disfrutar de la interesante clonación en perspectiva. La idea es que es posible que queramos clonar una parte de la fotografía en otra que tiene perspectiva diferente, y por lo tanto debe ser más pequeña/grande/distorsionada. Con esta herramienta lo puedes hacer, tal y como explican en el siguiente vídeo:
- Corrección de lente distorsionada. Se trata de un nuevo filtro que ayuda a reparar una imagen capturada con una lente deformada, fenómeno normalmente causado por una lente barata. Muy barata. No sé exactamente a cuanta gente le vendrá bien este filtro como para incluirlo por defecto, pero la verdad es que se obtenienen buenos resultados.
- Alinear elementos. Otra característica que es muy común en otros programas que Gimp o había implementado. Simplemente seleccionamos varios elementos y los podemos alinear/distribuir de manera sencilla. Por cierto, un paso muy importante que conlleva esta herramienta es que por fin se puede trabajar con varias capas a la vez (no una ni dos ni todas, sino las que queramos), lo que por ejemplo también se ha llevado a la herramienta Mover, y que en un futuro sería muy interesante en el resto de herramientas. Como ya digo, una limitación menos.
- Pantalla completa mejorado. Una vez estemos en el modo de Pantalla completa (F11), podemos utilizar el tabulador para mostrar/ocultar las herramientas, dejando la pantalla limpia. De hecho, el tabulador se puede usar siempre.
- Gestión de color. Aunque no han añadido modos nuevos de imagen (CMYK y demás), al menos han introducido esta mejora. Al soportar los perfiles de colores, GIMP evitará que nuestras fotografías parezcan de mundos diferentes si las vemos en la pantalla o si las imprimimos. Con esta inclusión, ha ganado varios puntos de seriedad.
- Nuevo sistema de impresión. Aprovechando las novedades de GTK en este campo, se ha rediseñado por completo la ventana de impresión. Prácticamente podremos acceder a cualquier parámetro de la impresión, y no deja de ser sencillo de usar.
- Herramienta de texto junto a rutas. Aunque sigue con algunas carencias en este apartado, se han añadido varias opciones muy interesantes, sobre todo relacionadas con las rutas. Por ejemplo, podremos alterar un texto para que siga la forma de una ruta/trazado, muy útil al maquetar texto sobre imágenes.
- Otras pequeñas mejoras. Evidentemente han corregido otro montón de fallos de usabilidad y han añadido opciones nuevas para muchas herramientas. También habría que destacar la mejora en el soporte de formatos no nativos, desde PSD a otros nuevos formatos. Otro aspecto muy mejorado es la visualización interna de miniaturas, que ahora tienen muchísima más calidad que antes y parecen más suaves que antes. Por otro lado, la mayoría de plugins y filtros han sido retocados para ser más eficientes, incluyendo las herramientas que ofrece Script-Fu. La mejora en las combinaciones de tecla es notable, siendo ahora más intuitivo: por ejemplo ahora se puede usar la tecla Suprimir para borrar la selección activa. Por último, se ha incluido un nuevo detector de ojos rojos automático que solo necesita de un par de clicks (si la imagen tiene objetos rojos tendrás que acotar la zona de los ojos).
Safari: el más rápido según performance
Según parece los señores de Web Performance tienen un veredicto en cuanto a rapidez se refiere en la guerra de los navegadores, lo que es lo mismo IE vs Firefox vs Safari vs Opera, o bueno mejor dicho, con respecto a los tres primeros, ya que el cuarto lo han omitido en la comparativa y sólo han considerado versiones Windows.
La comparativa, como decía incluye a IE7, Firefox 2 y Safari 3 Beta para Windows y la han hecho conectándose contra los sitios más visitados del ranking Alexa en el mes de Agosto y con los mismos sitios descargados en local y luego midiendo los tiempos de carga de los sitios, pura y simplemente la prueba se reducía a determinar el navegador que cargase más rápido las páginas de esos sitios.
Y la conclusión es que Safari fue el que mejor rendimiento mostró en las dos pruebas, con tiempos de carga de un 40 a un 60% inferiores que el resto de rivales, con lo que de momento se demuestra, o más bien debería decir que hay pruebas fehacientes que lo confirman que Jobs no mintió cuando dijo que la versión windowsera del navegador era el más rápido para la plataforma Windows.
Aunque eso sí, mejor no hablemos de estabilidad o de compatibilidad porque igual el navegador de Apple tiene todas las de perder.
origen de la noticia: Genbeta. Vía | MacWorld UK
Gmail 2.0
Nos suben la capacidad de almacenamiento, nos ofrecen soporte IMAP, y otras tantas cosas que nos han ido ofreciendo en el corto periodo de tiempo de vida de GMail. Pero, como en todo, hay que reciclarse por muy bueno que sea.
En este plan está Google con GMail, el cual nos ofrecerá próximamente una nueva versión con las siguientes novedades:
- Prebúsqueda de mensajes: Buscará anticipadamente los mensajes pertenecientes a la lista de mensajes que muestra al usuario, lo que permitirá que éste acceda a cualquiera de sus mensajes y se muestre al instante. Una nueva arquitectura Javascript traerá esta mejora en el rendimiento.
- Nuevo gestor de contactos: Gestor de contactos que además será compartido con otros servicios de Google, como ocurre hasta ahora.
- Integración de características de otros servicios de Google: Añade otra serie de características de otros servicios como por ejemplo la disponibilidad de un enlace para abrir con Google Docs los adjuntos de los correos o también la otra posibilidad de integración de Google Reader.
Aunque de momento no sabemos exactamente como serán las nuevas características de GMail 2.0, también tenemos que tener en cuenta el posible rediseño del mismo y de su interacción con los usuarios.
Por cierto, ya disponemos de 4,47 GB de espacio, con lo que se vuelve a abrir la veda de la guerra de los webmails.
(Act.) Desde Google Blogoscoped tenemos ya algunas capturas de una versión demo de Gmail 2.0
(genbeta)
Oct 29, 2007
Procedimiento Sql Server para leer espacio Libre en Discos Duros
EXEC master..xp_fixeddrives
Saludossss
Error Java al levantar la instalación de 11g en OpenSuse
tienes que ingresar el siguiente comando como root, como dice nuestro amigo anterior:
sed -i 's/XINERAMA/FAKEEXTN/g' /usr/lib/jvm/java-1.5.0-sun-1.5.0_update12/jre/lib/i386/xawt/libmawt.so
*sería bueno que se hiciera un respaldo de ese archivo.
- luego lanzar la instalación de Oracle con los siguientes parámetros:
. runInstaller -jreLoc /usr/lib/jvm/java-1.5.0-sun-1.5.0_update12/jre -ignoresysprereqs
- el segundo parámetro es para que te ignore los requisitos como el tipo de sistema operativo (en 11g no es necesario ponerlo, pero talvez 10g les va a reclamar), recordemos que Oracle está diseñado para sistemas certificados como RedHat o Suse (que es != de OPENSUSE)
- y eso sería todo para la instalación.
PD: cuando uses el dbca tendrás el mismo problema. Arreglalo con lo siguiente, como oracle:
sed -i 's/XINERAMA/FAKEEXTN/g' $ORACLE_HOME/jdk/jre/lib/i386/xawt/libmawt.so
y eso sería todo.
saludos.
Felipitux.
DBA y Adm. S.O.
Problema con virtual BOX en Opensuse 10.3
(Obviamente como root)
modprobe vboxdrv
#luego hay que asegurarse de que nuestro usuario tenga permiso para acceder
#al dispositivo creado:
chown username /dev/vboxdrv
#o también puede ser:
chmod 777 /dev/vboxdrv
Para no tener que hacer esto cada vez que el sistema inicie: podemos hacer lo siguiente:
editar el archivo
/etc/init.d/network y agregar los comandos necesarios:
modprobe vboxdrv
chmod 755 /dev/vboxdrv
chown username;grupo_usuario /dev/vboxdrv
Saludos.
Enviar correo al loguearse en Oracle
create or replace trigger audit_scott
after logon on database
declare x varchar2(50);
begin
select to_char(sysdate, 'DD-MM-YYYY HH24:MI:SS') into x from dual;
if sys_context('userenv','session_user') = 'SCOTT' then
sys.mailsend (
sender => 'oracle@dizwellmail.com',
recipient => 'hjr@dizwellmail.com',
mail_subject => 'SCOTT has logged on',
mail_body => 'Scott logged on at '||x||'!');
end if;
end;
/
Como siempre espero que lo disfruten.
Saludos.
Consulta que lee los archivos de LOG de Sql Server
-- el signo # es para crear tablas temporales.
PRINT 'Mensajes de los archivos SQL Server LOGS'
CREATE TABLE #Errors (vchMessage varchar(255), ID int)
CREATE INDEX idx_msg ON #Errors(ID, vchMessage)
INSERT #Errors EXEC xp_readerrorlog
SELECT vchMessage
FROM #Errors
WHERE
vchMessage LIKE '%Log backed up%' OR
vchMessage LIKE '%Starting up%' OR
vchMessage LIKE '%.TRN%' OR
vchMessage LIKE '%Database backed up%' OR
vchMessage LIKE '%.BAK%' OR
vchMessage LIKE '%BACKUP failed%' OR
vchMessage LIKE '%SqlDumpExceptionHandler%' OR
vchMessage LIKE '%Recovery%' OR
vchMessage LIKE '%SQL Server is aborting%' OR
vchMessage LIKE '%Error:%'
ORDER BY ID DROP TABLE #Errors