A l os fanáticos del diseño y modelamiento en 3D, les dejo una página con los mejores tutoriales a mi parecer.
acá tienen tutoriales de:
- 3D Studio Max
- Maya
- Lightwave
- Softimage
- Cinema4D
- Z-Brush
- Photoshop
- After Effects
- Quidam
- Blender3D
- Beginners
- MattePainting
- Painter
- DeepUV
- RealSoft 3D
- Texturing
Hechen una miradita y comenten
Estamos dedicados a Oracle, Bases de datos en general, computación, programación, todo hardware y software en Chile, contáctanos
27 octubre 2009
Gran página con tutoriales de modelamiento 3d
Como Hacer Aplicaciones en Facebook
Esta es una página bien detallada de cómo hacer aplicaciones en Facebook.
La gracia de hacer una aplicación en Facebook no es solamente que muchas personas la usen, si no que también puedes agregar enlaces patrocinados de Google o de otra empresa. Esto te permitirá comenzar a ganar dinero por las personas que pinchen esta publicidad.
Entonces, si tu aplicación facebook es muy buena, esta se repartirá muy rápido por internet, lo que te permitirá tener gran posibilidad de que gente pinche tus enlaces patrocinados y posteriormente recibir los pagos.
En internet hay muchos hosting de bajo costo, por lo que invirtiendo una cantidad de dinero mensual, puedes lograr hacer mucho dinero.
"Como Hacer Aplicaciones en Facebook"
- Como Hacer Aplicaciones en Facebook « A Coder’s Corner (ver en Google Sidewiki)
01 octubre 2009
Identificación de Objetos Inválidos en Oracle 9i
Espero que les sea de utilidad.
select 'alter ' || decode(object_type, 'PACKAGE BODY', 'PACKAGE', object_type)
|| ' ' || owner || '.' || object_name || ' compile'
|| decode(object_type, 'PACKAGE BODY', ' body;', ';') objetos
from dba_objects
where status='INVALID'
order by owner,
decode(object_type, 'PACKAGE BODY', 'AAA', 'PACKAGE', 'AAB',
substr(object_type, 1, 3)) desc,
object_name;
En 10g es un poco más sencillo recompilar todo, ya que dentro de la carpeta de instalación de la base de datos (ORACLE_HOME) hay una carpeta "rdbms/admin" en donde hay un "utlrp.sql"
personalmente en el servidor me meto al sql plus y lo ejecuto.
sqlplus "/as sysdba"
SQL> @?/rdbms/admin/utlrp
Esto les recompilará todo lo que esté inválido y mostrará un status. Lo malo de esto es que no es posible identificar los objetos en cuestión para ver por que no compilan.
El script que puse en un principio, también funciona para 10g.
mucha suerte.
29 septiembre 2009
Otro método para Hot Backup
Tienen que tener ojo, por que este script funciona adecuadamente para los Tablespaces que tienen sólo un datafile asociado.
en el fondo pone el tablespace en modo backup, copia el datafile en una carpeta /data/Backup, y luego sale del modo backup.
siempre prueben antes de poner en ambiente productivo.
SELECT
'sqlplus /nolog <<TOPE ' || CHR(10) ||
'connect /as sysdba'|| CHR(10) ||
'alter tablespace '|| TABLESPACE_NAME || ' begin backup;'|| CHR(10) ||
'TOPE'|| CHR(10) ||
'cp '|| FILE_NAME || ' /data/Backup'|| CHR(10) ||
'sqlplus /nolog <<TOPE' || CHR(10) ||
'connect /as sysdba'|| CHR(10) ||
'alter tablespace '|| TABLESPACE_NAME || ' end backup;'|| CHR(10)||
'TOPE'|| CHR(10) EJECUTAR
FROM DBA_DATA_FILES order by TABLESPACE_NAME desc;
Para identificar los Tablespaces que tienen más de un Datafile asociado, pueden ver con el siguiente script.
select
TABLESPACE_NAME
FROM DBA_DATA_FILES
having count(file_name) > 1
group by TABLESPACE_NAME;
Espero que les sea de utilidad, cualquier cosa comenten.
28 septiembre 2009
Recuperación de Respaldos Manuales
En el post anterior puse un script que realiza respaldos de los datafiles, bueno, acá les indico como se debe utilizar este respaldo en caso de borrar "por error" un datafile.
lo primero es contar con el datafile creado en el respaldo...
Luego te conectas al SQL*Plus como sysdba y ejecutas
alter database datafile '/app/oracle9/9.2/product/dbs/ORACL_01.DBF' offline;
después copias el datafile a la localización original, que para este caso es la que sale en el Alter.
Verifica que tengas todos los archive logs desde la fecha del respaldo del DBF
y ejecutas en el SQL*Plus
recover automatic datafile '/app/oracle9/9.2/product/dbs/ORACL_01.DBF';
Esto recuperará el archivo desde el respaldo... una vez hecho esto, haces el mismo alter pero para poner el datafile online.
alter database datafile '/app/oracle9/9.2/product/dbs/ORACL_01.DBF' online;
y ya está!
lo que hace este proceso es aplicar todos los cambios hechos en el datafile hasta la fecha, estos cambios los saca de los Archive Logs.
espero sea de vuestra utilidad.
cualquier cosa me avisan!
Full Hot Backup de BD Oracle
Adjunto un script que encontré, este hace un backup Full de la base de datos.
Este respaldo corresponde a respaldar los Datafile, Archivelogs y Control file, este script crea un Backup.txt que contiene los comandos para hacer un hot backup de la base de datos. Es muy importante que también estén enterados de como utilizar estos respaldos. Es muy sencillo y lo publicaré en el siguiente post.
Recomendación, no se queden solo con el script, si tienen una base de datos de prueba, respalden y prueben la recuperación, y de ser posible documenten todo el proceso.
mucha suerte.
-- -----------------------------------------------------------------------------------
-- File Name : http://www.oracle-base.com/dba/script_creation/backup.sql
-- Author : DR Timothy S Hall
-- Description : Creates a very basic hot-backup script. A useful starting point.
-- Call Syntax : @backup
-- Last Modified: 28/01/2001
-- -----------------------------------------------------------------------------------
SET SERVEROUTPUT ON
SET FEEDBACK OFF
SPOOL Backup.txt
DECLARE
CURSOR c_tablespace IS
SELECT a.tablespace_name
FROM dba_tablespaces a
ORDER BY 1;
CURSOR c_datafiles (in_ts_name IN VARCHAR2) IS
SELECT a.file_name
FROM dba_data_files a
WHERE a.tablespace_name = in_ts_name
ORDER BY 1;
CURSOR c_archive_redo IS
SELECT a.value
FROM v$parameter a
WHERE a.name = 'log_archive_dest';
v_sid VARCHAR2(100) := 'ORCL';
v_backup_com VARCHAR2(100) := '!ocopy ';
v_remove_com VARCHAR2(100) := '!rm';
v_dest_loc VARCHAR2(100) := '/opt/oracleddds/dbs1/oradata/ddds/';
BEGIN
DBMS_Output.Disable;
DBMS_Output.Enable(1000000);
DBMS_Output.Put_Line('svrmgrl');
DBMS_Output.Put_Line('connect internal');
DBMS_Output.Put_Line(' ');
DBMS_Output.Put_Line('-- ----------------------');
DBMS_Output.Put_Line('-- Backup all tablespaces');
DBMS_Output.Put_Line('-- ----------------------');
FOR cur_ts IN c_tablespace LOOP
DBMS_Output.Put_Line(' ');
DBMS_Output.Put_Line('ALTER TABLESPACE ' || cur_ts.tablespace_name || ' BEGIN BACKUP;');
FOR cur_df IN c_datafiles (in_ts_name => cur_ts.tablespace_name) LOOP
DBMS_Output.Put_Line(v_backup_com || ' ' || cur_df.file_name);
END LOOP;
DBMS_Output.Put_Line('ALTER TABLESPACE ' || cur_ts.tablespace_name || ' END BACKUP;');
END LOOP;
DBMS_Output.Put_Line(' ');
DBMS_Output.Put_Line('-- -----------------------------');
DBMS_Output.Put_Line('-- Backup the archived redo logs');
DBMS_Output.Put_Line('-- -----------------------------');
FOR cur_ar IN c_archive_redo LOOP
DBMS_Output.Put_Line(v_backup_com || ' ' || cur_ar.value || '/*');
END LOOP;
DBMS_Output.Put_Line(' ');
DBMS_Output.Put_Line('-- ----------------------');
DBMS_Output.Put_Line('-- Backup the controlfile');
DBMS_Output.Put_Line('-- ----------------------');
DBMS_Output.Put_Line('ALTER DATABASE BACKUP CONTROLFILE TO ''' || v_dest_loc || v_sid || 'Controlfile.backup'';');
DBMS_Output.Put_Line(v_backup_com || ' ' || v_dest_loc || v_sid || 'Controlfile.backup');
DBMS_Output.Put_Line(v_remove_com || ' ' || v_dest_loc || v_sid || 'Controlfile.backup');
DBMS_Output.Put_Line(' ');
DBMS_Output.Put_Line('EXIT');
END;
/
PROMPT
SPOOL OFF
SET FEEDBACK ON
24 septiembre 2009
Flashback en Oracle 9i (recuperar una tabla modificada y hecho el Commit)
les tengo un buen dato, supongamos que un usuario por error borró o modificó datos de una tabla y luego hizo "commit;"
¿cómo recuperar los datos anteriores?
Bueno, Oracle tiene una función llamada "Flashback", y si bien no es elemental su uso, es fácil de entender con el script que les voy a mostrar.
Supongamos que existe una tabla llamada "TABLA_ANTIGUA", y un usuario por error modificó los datos en la tabla con un "UPDATE" y puso "COMMIT;", o bien borró todos los datos haciendo un "DELETE FROM TABLA_ANTIGUA;"
El script que presento lo que hace es crear una tabla nueva, que llamaré "TABLA_NUEVA" con la misma estructura que "TABLA_ANTIGUA" y la vacía, luego hace un flashback y retrocede en el tiempo para llenar "TABLA_NUEVA" con los datos que tenía "TABLA_ANTIGUA", esto con el fin de poder corregir los cambios que sean necesarios y poder aplicar esto a "TABLA_ANTIGUA". ¿Se entiende?, bueno, será más fácil cuando hagan pruebas por ustedes mismos.
Recuerden que este script fué creado y probado en Oracle 9i
-- Creación de TABLA_NUEVA con la misma estructura de TABLA_ANTIGUA
CREATE TABLE TABLA_NUEVA AS SELECT * FROM TABLA_ANTIGUA;
-- Vaciado de TABLA_NUEVA para que quede sin datos
DELETE FROM TABLA_NUEVA;
COMMIT;
DECLARE
CURSOR C1 IS SELECT * FROM TABLA_ANTIGUA;
CUR_RECUPERA TABLA_ANTIGUA%ROWTYPE;
BEGIN
-- Aca defino el tiempo que quiero volver expresado en minutos (20 minutos)
DBMS_FLASHBACK.ENABLE_AT_TIME(SYSDATE - 20/1440);
OPEN C1; -- Abro el cursor con los datos de hace 20 minutos
DBMS_FLASHBACK.DISABLE;
LOOP
-- En este loop recorro el cursor e inserto los datos en TABLA_NUEVA
FETCH C1 INTO CUR_RECUPERA;
EXIT WHEN C1%NOTFOUND;
INSERT INTO TABLA_NUEVA VALUES CUR_RECUPERA;
END LOOP;
-- Verifico si el cursor aun esta abierto y lo cierro
IF C1%ISOPEN THEN
CLOSE C1;
END IF;
COMMIT;
END;
Algunas cosas que deben considerar:
- Para tablas muy grandes es mejor crear manualmente la tabla a mano, manteniendo la misma estructura de la tabla original, ya que como el script hace un CREATE TABLE AS... esto creará una tabla nueva llena de datos, lo cual puede tardar bastante en tablas grandes.
- Deben verificar el parámetro de la base de datos llamado UNDO_RETENTION, esto se hace de la siguiente manera en SQL*Plus
col name format a15
SELECT NAME, VALUE/60 MINUTES_RETAINED FROM V$PARAMETER WHERE NAME = 'undo_retention';
Este parámetro nos da el tiempo dentro del cual podemos hacer un flashback, o "cuanto" podemos retroceder en el tiempo.
bueno, mucha suerte, espero les sea de utilidad y que nunca tengan la necesidad de usarlo.
prueben de todas formas, así podram adaptarlo a vuestras necesidades.
22 septiembre 2009
Errores más comunes PL/SQL
Dura aproximadamente una hora.
por favor dense el tiempo y veanlo, aunque no sepan inglés dense el tiempo, es muy interesante.
cualquier duda, posteen comentarios.
21 septiembre 2009
Documentación Oracle
Inicialmente es una página de búsqueda de documentos, pero uno puede seleccionar la documentación que le es de interés. Si pinchan sobre un motor de base de datos específico, les recomiendo que vayan a la parte que dice "Books", acá encontrarán en HTML y PDF toda la documentación que necesitan.
http://tahiti.oracle.com/
Ahí hay documentación de RMAN, PL SQL, Instalación de BD Oracle, SQL*Plus, etc.
búsquen, si no encuentran lo que andan buscando me avisan a ver si les puedo dar algún otro dato.
17 septiembre 2009
Respaldos en Oracle
Siguiendo un poco en la línea, voy a comentar algo sobre los respaldos en Oracle, nunca está de más.
El ideal es tener dos tipos de respaldos, uno Físico y uno Lógico.
El físico es el respaldo de los Datafile y los control file, idealmente tabmién agregar los Archivelogs.
El lógico está dado principalmente por los export de los esquemas que se quieran respaldar. A esto idealmente hay que incluirle los Packages, Procedures, Functions y demás elementos que se consideren de importancia.
La idea de poder tener ambos respaldos es por que principalmente hay dos eventos en los cuales se requiere recuperar la base de datos. Ante eventos causados por fallas de hardware, y ante errores de aplicación o de usuario.
Ante errores de hardware, como fallas del disco duro, se utiliza el primer tipo de respaldo, el Físico, ya que con este tipo de respaldos(idealmente realizados con RMAN) nos permite recuperar los datafiles corruptos y dejar la base de datos operativa hasta la fecha. El Rman (Recovery Manager) es una poderosa herramienta que nos permite facilitar el respaldo físico y a su vez facilita la restauración de la base de datos ante problemas físicos. En caso de corrupción de un Datafile, el RMAN es capaz de repararlo y aplicar todas las modificaciones realizadas sobre los objetos que incluye para dejar el datafile operativo nuevamente (más adelante daré más detalles).
Ante errores de Aplicación o de Usuario, debemos contar idealmente con los export actualizados, la idea principalmente es que si un desarrollador borra una tabla por error, o bien altera datos, o ante cualquier evento de este tipo, en que la integridad de la base de datos físicamente esté bien, nos permita rescatar tablas, procedimientos, funciones y demás objetos hasta cierta fecha. Es decir, que si tengo una tabla con datos de los trabajadores de la empresa, y por error esta tabla es borrada, se podrá rescatar usando los dump realizados con anterioridad. Dependiendo de la frecuencia en que se modifiquen los datos y la relevancia de estos es que la planificación de los respaldos lógicos debe ser realizada.
En resumen, ante falla física de la base de datos, o ante alguna detención inesperada de esta, será recomendado hacer un recovery desde RMAN, si la falla se trata de pérdida de datos por problemas de aplicación, o bien por problemas de usuario, idealmente habrá que aplicar una restauración del respaldo lógico.
Recordemos que oracle nos permite rescatar tablas y objetos desde un usuario a otro, por lo que nos permitiría también revisar como estaban los datos antes de recuperarlos.
quedo atento a vuestros comentarios.
15 septiembre 2009
Oracle y RMAN
La estructura que tengo pensada es un respaldo full semanal e incrementales acumulativos diarios.
cualquier sugerencia será bienvenida.
20 agosto 2009
A la informática se ha dicho
quedo atento a vuestros comentarios, si tienen algún dato útil no duden en comentar e iré agregando.