![]() |
BD: MySQL Autor: MySQL AB Traductor: MySQL Hispano Pregunta: Conteo de filas Respuesta: Las bases de datos son usadas frecuentemente para responder una pregunta, "¿Con qué frecuencia ocurre un cierto tipo de dato en una tabla?". Por ejemplo, tal vez queremos conocer cuántas mascotas tenemos, o cuántas mascotas tiene cada uno de los propietarios. Contar el número total de animalitos que tenemos es lo mismo que hacer la siguiente pregunta "¿Cuántas filas hay en la tabla mascotas?" ya que hay un registro por mascota. La función COUNT( ) es la que nos ayuda en esta situación. mysql> SELECT COUNT(*) FROM mascotas; +----------+ | COUNT(*) | +----------+ | 9 | +----------+ 1 row in set (0.00 sec)Si deseamos conocer cuántas mascotas tiene cada uno de los propietarios, la consulta es la siguiente: mysql> SELECT propietario, COUNT(*) FROM mascotas GROUP BY propietario ; +-------------+----------+ | propietario | COUNT(*) | +-------------+----------+ | Arnoldo | 2 | | Benito | 2 | | Diana | 2 | | Juan | 1 | | Omar | 1 | | Tomás | 1 | +-------------+----------+ 6 rows in set (0.00 sec)Se debe notar que se ha usado una cláusula GROUP BY para agrupar todos los registros de cada propietario. Si no hacemos esto, obtendremos un mensaje de error: mysql> SELECT propietario, COUNT(*) FROM mascotas; ERROR 1140: Mixing of GROUP columns (MIN(),MAX(),COUNT()...) with no GROUP columns is illegal if there is no GROUP BY clauseEn efecto, el uso de la función COUNT( ) en conjunto con la cláusula GROUP BY es muy útil en diversas situaciones. A continuación se muestran algunos ejemplos. El número de animalitos por especie: mysql> SELECT especie, COUNT(*) FROM mascotas GROUP BY especie ; +-----------+----------+ | especie | COUNT(*) | +-----------+----------+ | Ave | 2 | | Gato | 2 | | Hamster | 1 | | Perro | 3 | | Serpiente | 1 | +-----------+----------+ 5 rows in set (0.00 sec)El número de animalitos por sexo: mysql> SELECT sexo, COUNT(*) FROM mascotas GROUP BY sexo: +------+----------+ | sexo | COUNT(*) | +------+----------+ | NULL | 1 | | f | 4 | | m | 4 | +------+----------+ 3 rows in set (0.01 sec)El número de animalitos por combinación de especie y sexo: mysql> SELECT especie, sexo, COUNT(*) FROM mascotas GROUP BY especie, sexo ; +-----------+------+----------+ | especie | sexo | COUNT(*) | +-----------+------+----------+ | Ave | NULL | 1 | | Ave | f | 1 | | Gato | f | 1 | | Gato | m | 1 | | Hamster | f | 1 | | Perro | f | 1 | | Perro | m | 2 | | Serpiente | m | 1 | +-----------+------+----------+ 8 rows in set (0.00 sec)No es necesario que se obtengan todos los datos de una tabla cuando se usa la función COUNT( ). Por ejemplo, en la consulta anterior, para ver únicamente los datos de perritos y gatitos, la consulta queda de la siguiente manera: mysql> SELECT especie, sexo, COUNT(*) FROM mascotas -> WHERE especie="Perro" OR especie="Gato" -> GROUP BY especie, sexo; +---------+------+----------+ | especie | sexo | COUNT(*) | +---------+------+----------+ | Gato | f | 1 | | Gato | m | 1 | | Perro | f | 1 | | Perro | m | 2 | +---------+------+----------+ 4 rows in set (0.00 sec)O bien, si deseamos el número de animalitos por sexo, y cuyo sexo es conocido: mysql> SELECT especie, sexo, COUNT(*) FROM mascotas -> WHERE sexo IS NOT NULL -> GROUP BY especie, sexo ; +-----------+------+----------+ | especie | sexo | COUNT(*) | +-----------+------+----------+ | Ave | f | 1 | | Gato | f | 1 | | Gato | m | 1 | | Hamster | f | 1 | | Perro | f | 1 | | Perro | m | 2 | | Serpiente | m | 1 | +-----------+------+----------+ 7 rows in set (0.00 sec) |
BD: MySQL Autor: MySQL AB Traductor: MySQL Hispano Pregunta: Usando mas de una table Respuesta: La tabla mascotas nos ha servido hasta este momento para tener guardados los datos acerca de los animalitos que tenemos. Si deseamos guardar algún otro tipo de información acerca de ellos, tal como los eventos en sus vidas -visitas al veterinario, nacimientos de una camada, etc- necesitaremos de otra tabla. ¿Cómo deberá estar conformada esta tabla?. Lo que necesitamos es: El nombre de la mascota para saber a cuál de ellas se refiere el evento. Una fecha para saber cuando ocurrió el evento. Una descripción del evento. Un campo que indique el tipo de evento, si deseamos categorizarlos. Dadas estas condiciones, la sentencia para crear la tabla eventos queda de la siguiente manera: mysql> CREATE TABLE eventos(nombre varchar(20), fecha date, -> tipo varchar(15), descripcion varchar(255)); Query OK, 0 rows affected (0.03 sec)De manera similar a la tabla mascotas, es más fácil cargar los datos de los registros iniciales al crear un archivo de texto delimitado por tabuladores en el que se tenga la siguiente información: nombre fecha tipo descripción Fluffy 2001-05-15 camada 4 gatitos, 3 hembras, 1 macho Buffy 2001-06-23 camada 5 perritos, 2 hembras, 3 machos Buffy 2002-06-19 camada 2 perritos, 1 hembra, 1 macho Chispa 2000-03-21 veterinario Una pata lastimada FanFan 2001-08-27 cumpleaños Primera vez que se enfermo de la panza FanFan 2002-08-03 veterinario Dolor de panza Whicho 2001-02-09 cumpleaños Remodelación de casaCargamos los datos en este archivo con la siguiente sentencia: mysql> LOAD DATA LOCAL INFILE "eventos.txt" INTO TABLE eventos; Query OK, 7 rows affected (0.02 sec) Records: 7 Deleted: 0 Skipped: 0 Warnings: 0Tomando en cuenta lo que hemos aprendido en la ejecución de consultas sobre la tabla mascotas, debemos de ser capaces de recuperar algunos datos de la tabla eventos; los principios son los mismos. Sin embargo puede suceder que la tabla eventos por sí misma sea insuficiente para darnos las respuestas que necesitamos. Supongamos que desemos conocer la edad de cada mascota cuando tuvieron una camada. La tabla eventos indica cuando ocurrió dicho evento, pero para calcular la edad de la madre, necesitamos sin duda su fecha de nacimiento. Dado que este dato está almacenado en la tabla mascotas, necesitamos de ambas tablas para realizar esta consulta. mysql> SELECT mascotas.nombre, -> (TO_DAYS(fecha) - TO_DAYS(nacimiento))/365 AS edad, -> descripcion FROM mascotas, eventos -> WHERE mascotas.nombre=eventos.nombre -> AND tipo='camada'; +--------+------+---------------------------------+ | nombre | edad | descripcion | +--------+------+---------------------------------+ | Fluffy | 2.28 | 4 gatitos, 3 hembras, 1 macho | | Buffy | 2.12 | 5 perritos, 2 hembras, 3 machos | | Buffy | 3.10 | 2 perritos, 1 hembra, 1 macho | +--------+------+---------------------------------+ 3 rows in set (0.05 sec)Hay diversas cosas que notar acerca de esta consulta: La cláusula FROM lista dos tablas dado que la consulta necesita información que se encuentra en ambas tablas. Cuando se combina (junta) información de múltiples tablas, es necesario especificar los registros de una tabla que pueden coincidir con los registros en la otra tabla. En nuestro caso, ambas columnas tienen una columna "nombre". La consulta usa la cláusula WHERE para obtener los registros cuyo valor en dicha columna es el mismo en ambas tablas. Dado que la columna "nombre" ocurre en ambas tablas, debemos de especificar a cuál de las columnas nos referimos. Esto se hace al anteponer el nombre de la tabla al nombre de la columna. Nota: La función TO_DAYS( ) regresa el número de días transcurridos desde el año 0 hasta la fecha dada. No es necesario que se tengan dos tablas diferentes para que se puedan juntar. Algunas veces es útil juntar una tabla consigo misma si se desean comparar registros de la misma tabla. Por ejemplo, para encontrar las posibles parejas entre nuestras mascotas de acuerdo a la especie, la consulta sería la siguiente: mysql> SELECT m1.nombre, m1.sexo, m2.nombre, m2.sexo, m1.especie -> FROM mascotas AS m1, mascotas AS m2 -> WHERE m1.especie=m2.especie AND m1.sexo="f" AND m2.sexo="m"; +--------+------+--------+------+---------+ | nombre | sexo | nombre | sexo | especie | +--------+------+--------+------+---------+ | Fluffy | f | Mau | m | Gato | | Buffy | f | FanFan | m | Perro | | Buffy | f | Kaiser | m | Perro | +--------+------+--------+------+---------+ 3 rows in set (0.00 sec)En esta consulta se ha especificado un alias para el nombre de la tabla, y es éste el que se utiliza para referirse a las columnas. |
BD: MySQL Autor: MySQL AB Traductor: MySQL Hispano Pregunta: usando MySql en modo Batch Respuesta: En todos los ejemplos mostrados anteriormente, hemos usado mysql de manera interactiva para ejecutar algunas consultas y ver los resultados. Sin embargo, es posible usar mysql en modo batch. Para hacer esto tenemos que poner los comandos que deseamos ejecutar dentro de un archivo, y entonces decirle a mysql que lea los comandos de dicho archivo: shell> mysql < archivo-batchSi se usa mysql de esta manera, se está creando un pequeño script, y posteriormente se está ejecutando dicho script. Al ejecutar las sentencias y comandos que se encuentran en el script, es posible que suceda algún error. Si se desea que se continuen ejecutando las demás sentencias, a pesar de que haya ocurrido un error, se tiene que usar la opción --force shell> mysql --force < archivo-batchAsí mismo, es posible especificar los parámetros de conexión desde la línea de comandos. Por ejemplo:shell> mysql -h casita -u blueman -p < archivo-batch ¿Por qué usar un script? Aquí hay algunas cuantas razones: Si se ejecutan un cierto número de consultas frecuentemente (cada día, o cada semana), al hacer un script nos evitamos tener que volver a teclear cada una de las consultas. Se pueden generar nuevas consultas que sean similares a las existentes al copiar y editar estos scripts. Al escribir consultas de varias líneas, los scripts ayudan bastante para que no se tengan que escribir todas las líneas nuevamente si se comete algún error. Si se están ejecutando consultas que producen una gran cantidad de datos, es posible usar un paginador para examinar los resultados de una mejor manera. shell> mysql < archivo-batch | lessSe puede guardar la salida en un archivo para revisarla posteriormente. shell> mysql < archivo-batch > salida-del-script.txtSe pueden distribuir los scripts a otras personas para que puedan ejecutar también nuestros comandos y sentencias. En algunas situaciones no se permite el uso interactivo de mysql. Por ejemplo cuando se ejecuta un cron. En este caso, es indispensable usar el modo batch. Cabe mencionar que el formato de la salida es diferente (más conciso) cuando se ejecuta mysql en modo batch, que cuando se usa de manera interactiva. Ver el siguiente ejemplo. La consulta es: SELECT DISTINCT especie FROM mascotas. Si se ejecuta en modo interactivo: mysql> SELECT DISTINCT especie FROM mascotas; +-----------+ | especie | +-----------+ | Gato | | Perro | | Ave | | Serpiente | +-----------+ 4 rows in set (0.00 sec)Si se ejecuta en modo batch: shell> mysql -h casita -u blueman -p < especies-distintas.sql Enter password: ****** especie Gato Perro Ave SerpienteDonde el fichero especies-distintas.sql contiene la consulta a ejecutar. Si se desea obtener la salida que proporciona el modo interactivo, se tiene que usar la opción -t. shell> mysql -t -h casita -u blueman -p < especies-distintas.sql Enter password: ****** +-----------+ | especie | +-----------+ | Gato | | Perro | | Ave | | Serpiente | +-----------+ |
Hola!! el comando select funciona de la siguiente manera: SELECT nombre_campo1,nombre_campo2,.... FROM tabla WHERE condicion_que_desees_cumplir ORDER BY nombre_campo(1,2,3,..) ASC (si quieres que sea ascendente) o DESC (si quieres que sea descendente) Recuerda que para poder ordenarlo por un campo cualquiera, debes seleccionarlo previamente después del SELECT i que si quieres seleccionar todos los campos de la tabla, basta con poner * después del SELECT. Espero que te ayude. |
Mundo Oracle BD: Oracle Preguna: Como instalo la base de datos oracle..? Respuesta: eso depende de sobre que plataforma la quieras instalar, pero pues podrias consultar las guias que hay en : http://www.oracle-base.com/articles/...gInstallations y ahi ver los requisitos necesarios y pasos a seguir.... salu2. |
Oracle Autonumerico BD: ORACLE PREGUNTA: COMO CREAR UN CAMPO AUTO NUMERICO..? RESPUESTA: create table tbl_foo( id number primary key, txt varchar2(20) ); create sequence seq_foo; create trigger trg_foo before insert on tbl_foo for each row begin select seq_foo.nextval into :new.id from dual; end; / insert into tbl_foo (txt) values('bar'); insert into tbl_foo (txt) values('baz'); insert into tbl_foo (txt) values('qqq'); select * from tbl_foo; ID TXT ---------- -------------------- 1 bar 2 baz 3 qqq Ya esta! Ahora, trata de especificar un id arbitrariamente: insert into tbl_foo (id, txt) values(100, '###'); insert into tbl_foo (id, txt) values(200, '???'); insert into tbl_foo (id, txt) values(300, '!!!'); No funciona, porke es sobre escrito por el trigger! select * from tbl_foo; ID TXT ---------- ---------------------------------------------------------------------------------------------------- 1 bar 2 baz 3 qqq 4 ### 5 ??? 6 !!! Cambiando el trigger ... create or replace trigger trg_foo before insert on tbl_foo for each row begin if :new.id is null then select seq_foo.nextval into :new.id from dual; end if; end; / .... Trata otra ves: insert into tbl_foo (id, txt) values(111, 'This'); insert into tbl_foo (id, txt) values(222, 'should'); insert into tbl_foo (id, txt) values(333, 'work'); De verdad funciona... select * from tbl_foo; ID TXT ---------- -------------------------------------- 1 bar 2 baz 3 qqq 4 ### 5 ??? 6 !!! 111 This 222 should 333 work |
Como quitar la contraseña al root de MySQL: He perdido la contraseña del root Si has perdido la contraseña que usas como root, es decir, para administrar MySQL, puedes establecer otra, usando el mismo ordenador donde físicamente está instalado el daemon: Apaga el servidor Inicia el servidor con la opción --skip-grant-tables. Conecta con el servidor usando mysql -u root mysql. Con eso no te pedira la password y accederas directamante a la base de datos MySQL que es la que guarda la informacion de usuarios. cambia la contraseña usando este comando SQL: mysql> UPDATE user SET Password=PASSWORD('') WHERE User='root'; Ejecuta un nuevo comando SQL: mysql> FLUSH PRIVILEGES; Apaga y reinicia el servidor y ya podras usar la nueva password -------------------------------------------------------------------- |
Como puedo eliminar los registros que tienen valor nulo en una consulta por ejemplo Select nombre_alumno notas_historia, notas_castellano, notas_ingles where id_alumno= '1' order by id_nota. me mostrará las notas de 3 ramos, todo OK, el problema es que cuando hagola consulta me muestra espacios entre las notas de los ramos( debe ser por el orden de ingreso, porque primero ingreso todaslas notas de historia depsues todas las de castellano y depues todas las de ingles, y me muestra algo asi: notas_historia---notas_castellano---notas_ingles ____60____ ____36____ ____57____ ____________________30_____ ____________________55_____ ____________________60_____ ____________________________________64 ____________________________________58 Como puedo hacer la consulta para que me muestre la consulta asi: notas_historia---notas_castellano---notas_ingles ____60_____________30_____________64 ____36_____________55_____________58 ____57_____________60 sin espacios entre ellas. Saludos |
Tema: Manual de Instalación para snort+MySQL+PHP+ACID+IIS en Windows Ubicación del manual: http://www.forohxc.com/snort/mswin/s...lugins.win.pdf (25 pág.) |
BD: MySQL Tema: Tabla con todos los paises Como a mi me llevo mucho trabajo pues para que otros no tengan que currar lo ya currado. Os pongo una tabla (sencilla) en la que se guardan los nombres de todos los paises (puede que me falte alguno :golpeado: ) Código: CREATE TABLE pais(Código: INSERT INTO pais(id_pais,nombre_pais) VALUES('','Afghanistan'); |
continua... Código: INSERT INTO pais(id_pais,nombre_pais) VALUES('','Republic of Congo'); |
Es una pena enterarme como novato del tema, que no hay ni un solo Faq de access, ( la respuesta obvia que vendra sera... es q access es muy basico, no sirve para nada, es lento, con errores, etc) pero bueno, para gente beginner basta y sobra, lastima que no pueda aprender nada al respecto sobre Acces en una seccion de bases de datos.. |
Hola a todos como seria la sentencia sql para un loader. Y que esta contenido en el archivo de control. Osea que controlo con ese archivo. gracias de antemano. |
Interbase Tema : Interbase / Firebird Pregunta : ¿Porqué cuando elimino registros mi base de dato, esta no se reduce de tamaño? Respuesta : Interbase/Firebird no libera espacio, sin embargo, cuando se eliminan registros los marca como eliminados y luego el espacio marcado como eliminado es reutilizado cuando se insertan nuevos registros o se actualicen registro existentes. Para reducir el espacio físico de tu base de datos debes realizar un respaldo y luego una restaurar ese respaldo. |
Interbase Tema : Interbase / Firebird Pregunta : ¿Cuantos usuario concurrentes soporta Interbase / Firebird? Respuesta : Interbase/Firebird soportara hasta 1024 usuarios concurrentes |
Interbase Tema : Interbase / Firebird Pregunta : ¿Qúe son los Roles? Respuesta Los Roles son parte del sistema de seguridad de Firebird/InterBase. Permiten que se manejen de manera más fácil los permisos, ya que podemos crear roles y asignarles los permisos a éstos (y también revocárselos). Posteriormente se puede asignar un rol a uno o más usuarios. De esta manera ya no repetimos la asignación de permisos por cada tabla a cada usuario, facilitando la asignación de permisos y creando una especie de "tipos de usuarios". Esto es muy útil cuando las bases de datos tienen muchas tablas, procedimientos y vistas. Por ejemplo, supongamos que tenemos un rol SUPER_USUARIO definido con TODOS los privilegios sobre la tabla PRUEBA. SQL> create table prueba (i1 integer); SQL> create role SUPER_USUARIO; SQL> grant all on prueba to SUPER_USUARIO; SQL> show grant prueba; GRANT DELETE, INSERT, SELECT, UPDATE, REFERENCES ON PRUEBA TO SUPER_USUARIO A los usuarios USUARIO1 y USUARIO2 le consederemos que asuman los privilegios del rol SUPER_USUARIO. SQL> grant SUPER_USUARIO to USUARIO1; SQL> grant SUPER_USUARIO to USUARIO2; Ahora los usuarios USUARIO1 y USUARIO2 tienen todos los privilegios para la tabla PRUEBA, cuando ellos se conecten asumiendo el rol SUPER_USUARIO. Si los usuarios USUARIO1 y USUARIO2 intentan conectarse sin asumir el rol SUPER_USUARIO, entonces, no tendrán privilegio alguno sobre la tabla PRUEBA. Ejemplo 1.- Conexión sin asumir el rol SUPER_USUARIO. SQL> connect basededato.gdb user usuario1 password usuario1; Database: basededato.gdb, User: usuario1 SQL> select * from prueba; Statement failed, SQLCODE=-551 no permission for read/select access to table PRUEBA Ejemplo 2.- Conexión asumiendo el rol SUPER_USUARIO. SQL> connect basededato.gdb user usuario1 password usuario1 role super_usuario; Database: basededato.gdb, User: usuario1 SQL> select * from prueba; |
Interbase Tema : Interbase / Firebird Pregunta : ¿Como permito que los usuarios puedan modificar su propia contraseña? Respuesta La forma más fácil es hacer un GRANT UPDATE ON USERS TO PUBLIC, y agregar un TRIGGER que prevenga que los usuarios, con excepción de SYSDBA de modificar la contraseña de alguién más Este es el script : /* Base de datos de seguridad (isc4.gdb) - version A -permite a los usuario cambiar su propia contraseña, -permite a SYSDBA agregar, cambiar, borrar cualquier usuario/contraseña. Escrito por: Ivan Prenosil, 2001 */ CONNECT 'C:\Archivos de programa\Borland\InterBase\isc4.gdb' USER 'SYSDBA' PASSWORD 'masterkey'; CREATE EXCEPTION E_NO_RIGHT 'No tiene provilegios para modificar éste usuario.'; SET TERM !!; CREATE TRIGGER user_name_bu FOR USERS BEFORE UPDATE AS BEGIN IF (NOT (USER='SYSDBA' OR USER=OLD.USER_NAME)) THEN EXCEPTION E_NO_RIGHT; END !! SET TERM ;!! /** Grants. **/ GRANT UPDATE(PASSWD, GROUP_NAME, UID, GID, FIRST_NAME, MIDDLE_NAME, LAST_NAME) ON USERS TO PUBLIC; Importante El problema de éste procedimiento es que los usuarios con sus contraseñas quedan visibles, por lo que si alguien malintencionado podría intentar descriptar las contraseñas a fuerza bruta. |
Tema : Oracle Pregunta : ¿Como puedo migrar data de tipo BLOB? Respuesta : Una vez me ocurrio esto, migrando de una BD a otra, las inserciones lo haciamos con un insert select, pero en el caso de los BLOB no es posible. Simplemente se crea un procedure y se declara una variable con el atributo del campo que tiene el tipo de dato BLOB, se crea un cursor para recorrer todos los campos y se almacena el tipo BLOB en la variable declarada. Luego se hace el insert con la variable que tiene el BLOB almacenado. He aqui un ejemplo: set serveroutput on declare parcodfac foto_cliente.codfac%type; parcodesc foto_cliente.codesc%type; parcodcli foto_cliente.codcli%type; parfotcli foto_cliente.fotcli%type; parurlcli foto_cliente.urlcli%type; parusucre foto_cliente.ideusucre%type; parfeccre foto_cliente.fechorusucre%type; parusumod foto_cliente.ideusumod%type; parfecmod foto_cliente.fechorusumod%type; parcoderr NUMBER; parmsgerr VARCHAR2(100); nCont NUMBER; cursor cl_foto is SELECT codfac,codesc,codcli,fotcli,urlcli,ideusucre,fecho rusucre,ideusumod,fechorusumod FROM foto_cliente; BEGIN nCont:=0; for c_cl_foto IN cl_foto loop parcodfac:=c_cl_foto.codfac; parcodesc:=c_cl_foto.codesc; parcodcli:=c_cl_foto.codcli; parfotcli:=c_cl_foto.fotcli; parurlcli:=c_cl_foto.urlcli; parusucre:=c_cl_foto.ideusucre; parfeccre:=c_cl_foto.fechorusucre; parusumod:=c_cl_foto.ideusumod; parfecmod:=c_cl_foto.fechorusumod; insert into foto_cliente@ciencias (codfac,codesc,codcli,fotcli,urlcli,ideusucre,fech orusucre,ideusumod,fechorusumod) values (parcodfac,parcodesc,parcodcli,parfotcli,parurlcli ,parusucre,parfeccre,parusumod,parfecmod); nCont:=nCont+1; end loop; dbms_output.put_line('Son : '||to_char(nCont)); exception when others then parcoderr:=sqlcode; parmsgerr:=sqlerrm; rollback; end; En este caso creamos un dblink para poder acceder a la base de datos origen y desde esa conexión insertar a la base de datos destino. Es la forma que use..... |
Firebird Tema : Firebird Pregunta : ¿Como instalo en Linux sólo el cliente de Firebird? Respuesta Linux y otros clientes Posix De momento no hay ningún programa de instalación para sólo instalar el cliente de Firebird. Esto es porqué algunos Posix, incluyendo Linux, tienen algunos de requerimientos para los lugares de los sistemas de archivos. Por ésta razón, no existe una versión en *x para una opción de instalación solo para cliente de Firebird. Sin embargo en la mayoría de las distintas distribuciones de Linux, el siguiente procedimiento sirve para sólo instalar el cliente Firebird. Conéctate como root.
|
Tips administrar bd en ORACLE les adjunto algunas pequeñas instrucciones para administrar las bases de datos espero les sirva: Algunas consultas SQL muy útiles para el administrador de Oracle (estado de la base de datos Oracle, parámetros generales, ficheros de control, conexiones actuales a Oracle, nombre del ejecutable que se utiliza, nombre del usuario, diccionario de datos (vistas y tablas)... Vista que muestra el estado de la base de datos: select * from v$instance Consulta que muestra si la base de datos está abierta select status from v$instance Vista que muestra los parámetros generales de Oracle select * from v$system_parameter Versión de Oracle select value from v$system_parameter where name = 'compatible' Ubicación y nombre del fichero spfile select value from v$system_parameter where name = 'spfile' Ubicación y número de ficheros de control select value from v$system_parameter where name = 'control_files' Nombre de la base de datos select value from v$system_parameter where name = 'db_name' Vista que muestra las conexiones actuales a Oracle Para visualizarla es necesario entrar con privilegios de administrador select osuser, username, machine, program from v$session order by osuser Vista que muestra los programas conectados a Oracle y el número de sesiones por programa select program, count(program) "Número" from v$session group by program order by "Número" desc Propietarios de objetos y número de objetos por propietario select owner, count(owner) Numero from dba_objects group by owner order by Numero desc Diccionario de datos (incluye todas las vistas y tablas de la Base de Datos) select * from dictionary select table_name from dictionary Muestra los datos de una tabla especificada (en este caso todas las tablas que lleven la cadena "EMPLO" select * from ALL_ALL_TABLES where upper(table_name) like '%EMPLO%' Tablas propiedad del usuario actual select * from user_tables Todos los objetos propiedad del usuario conectado a Oracle select * from user_catalog Consulta SQL para el DBA de Oracle que muestra los tablespaces, el espacio utilizado, el espacio libre y los ficheros de datos de los mismos: Select t.tablespace_name "Tablespace", t.status "Estado", ROUND(MAX(d.bytes)/1024/1024,2) "MB Tamaño", ROUND((MAX(d.bytes)/1024/1024) - (SUM(decode(f.bytes, NULL,0, f.bytes))/1024/1024),2) "MB Usados", ROUND(SUM(decode(f.bytes, NULL,0, f.bytes))/1024/1024,2) "MB Libres", t.pct_increase "% incremento", SUBSTR(d.file_name,1,80) "Fichero de datos" FROM DBA_FREE_SPACE f, DBA_DATA_FILES d, DBA_TABLESPACES t WHERE t.tablespace_name = d.tablespace_name AND f.tablespace_name(+) = d.tablespace_name AND f.file_id(+) = d.file_id GROUP BY t.tablespace_name, d.file_name, t.pct_increase, t.status ORDER BY 1,3 DESC Productos Oracle instalados y la versión: select * from product_component_version Roles y privilegios por roles: select * from role_sys_privs Reglas de integridad y columna a la que afectan: select constraint_name, column_name from sys.all_cons_columns Tablas de las que es propietario un usuario, en este caso "HR": SELECT table_owner, table_name from sys.all_synonyms where table_owner like 'HR' Otra forma más efectiva (tablas de las que es propietario un usuario): SELECT DISTINCT TABLE_NAME FROM ALL_ALL_TABLES WHERE OWNER LIKE 'HR' Parámetros de Oracle, valor actual y su descripción: SELECT v.name, v.value value, decode(ISSYS_MODIFIABLE, 'DEFERRED', 'TRUE', 'FALSE') ISSYS_MODIFIABLE, decode(v.isDefault, 'TRUE', 'YES', 'FALSE', 'NO') "DEFAULT", DECODE(ISSES_MODIFIABLE, 'IMMEDIATE', 'YES','FALSE', 'NO', 'DEFERRED', 'NO', 'YES') SES_MODIFIABLE, DECODE(ISSYS_MODIFIABLE, 'IMMEDIATE', 'YES', 'FALSE', 'NO', 'DEFERRED', 'YES','YES') SYS_MODIFIABLE , v.description FROM V$PARAMETER v WHERE name not like 'nls%' ORDER BY 1 Usuarios de Oracle y todos sus datos (fecha de creación, estado, id, nombre, tablespace temporal,...): Select * FROM dba_users Tablespaces y propietarios de los mismos: select owner, decode(partition_name, null, segment_name, segment_name || ':' || partition_name) name, segment_type, tablespace_name,bytes,initial_extent, next_extent, PCT_INCREASE, extents, max_extents from dba_segments Where 1=1 And extents > 1 order by 9 desc, 3 Últimas consultas SQL ejecutadas en Oracle y usuario que las ejecutó: select distinct vs.sql_text, vs.sharable_mem, vs.persistent_mem, vs.runtime_mem, vs.sorts, vs.executions, vs.parse_calls, vs.module, vs.buffer_gets, vs.disk_reads, vs.version_count, vs.users_opening, vs.loads, to_char(to_date(vs.first_load_time, 'YYYY-MM-DD/HH24:MI:SS'),'MM/DD HH24:MI:SS') first_load_time, rawtohex(vs.address) address, vs.hash_value hash_value , rows_processed , vs.command_type, vs.parsing_user_id , OPTIMIZER_MODE , au.USERNAME parseuser from v$sqlarea vs , all_users au where (parsing_user_id != 0) AND (au.user_id(+)=vs.parsing_user_id) and (executions >= 1) order by buffer_gets/executions desc Todos los ficheros de datos y su ubicación: select * from V$DATAFILE Ficheros temporales: select * from V$TEMPFILE Tablespaces: select * from V$TABLESPACE Otras vistas muy interesantes: select * from V$BACKUP select * from V$ARCHIVE select * from V$LOG select * from V$LOGFILE select * from V$LOGHIST select * from V$ARCHIVED_LOG select * from V$DATABASE Memoria Share_Pool libre y usada select name,to_number(value) bytes from v$parameter where name ='shared_pool_size' union all select name,bytes from v$sgastat where pool = 'shared pool' and name = 'free memory' Cursores abiertos por usuario select b.sid, a.username, b.value Cursores_Abiertos from v$session a, v$sesstat b, v$statname c where c.name in ('opened cursors current') and b.statistic# = c.statistic# and a.sid = b.sid and a.username is not null and b.value >0 order by 3 Aciertos de la caché (no debe superar el 1 por ciento) select sum(pins) Ejecuciones, sum(reloads) Fallos_cache, trunc(sum(reloads)/sum(pins)*100,2) Porcentaje_aciertos from v$librarycache where namespace in ('TABLE/PROCEDURE','SQL AREA','BODY','TRIGGER'); Sentencias SQL completas ejecutadas con un texto determinado en el SQL SELECT c.sid, d.piece, c.serial#, c.username, d.sql_text FROM v$session c, v$sqltext d WHERE c.sql_hash_value = d.hash_value and upper(d.sql_text) like '%WHERE CAMPO LIKE%' ORDER BY c.sid, d.piece Una sentencia SQL concreta (filtrado por sid) SELECT c.sid, d.piece, c.serial#, c.username, d.sql_text FROM v$session c, v$sqltext d WHERE c.sql_hash_value = d.hash_value and sid = 105 ORDER BY c.sid, d.piece //Tamaño ocupado por la base de datos select sum(BYTES)/1024/1024 MB from DBA_EXTENTS //Tamaño de los ficheros de datos de la base de datos select sum(bytes)/1024/1024 MB from dba_data_files //Tamaño ocupado por una tabla concreta sin incluir los índices de la misma select sum(bytes)/1024/1024 MB from user_segments where segment_type='TABLE' and segment_name='NOMBRETABLA' //Tamaño ocupado por una tabla concreta incluyendo los índices de la misma select sum(bytes)/1024/1024 Table_Allocation_MB from user_segments where segment_type in ('TABLE','INDEX') and (segment_name='NOMBRETABLA' or segment_name in (select index_name from user_indexes where table_name='NOMBRETABLA')) //Tamaño ocupado por una columna de una tabla select sum(vsize('NOMBRECOLUMNA'))/1024/1024 MB from NOMBRETABLA //Espacio ocupado por usuario SELECT owner, SUM(BYTES)/1024/1024 FROM DBA_EXTENTS MB group by owner //Espacio ocupado por los diferentes segmentos (tablas, índices, undo, rollback, cluster, ...) SELECT SEGMENT_TYPE, SUM(BYTES)/1024/1024 FROM DBA_EXTENTS MB group by SEGMENT_TYPE //Espacio ocupado por todos los objetos de la base de datos, muestra los objetos que más ocupan primero SELECT SEGMENT_NAME, SUM(BYTES)/1024/1024 FROM DBA_EXTENTS MB group by SEGMENT_NAME order by 2 desc |
Tema : MSSQL Server Pregunta : ¿Cómo inserto los registros de una tabla al final de otra? Respuesta: http://www.forosdelweb.com/showthrea...=1#post1635032 saludos |
Tema: SQL Server 2005 SQLEXPRESS Pregunta: No me puedo conectar a SQL Server 2005 EXPRESS Respuesta: http://www.mistrucos.net/truco-sql-s...gado-691_1.htm |
Visualizar el tamaño de una base de datos Tema: SQL Server 2000 Pregunta: ¿Cómo puedo ver el peso de las tablas? Respuesta: http://www.mistrucos.net/truco-sql-s...atos-687_1.htm |
Tema: SQL SERVER 2005 EXPRESS Pregunta: ¿Cómo puedo crear una cadena de conexión? Respuesta: http://www.mistrucos.net/truco-sql-s...xion-692_1.htm |
Tema: SQL SERVER 2005 EXPRESS Pregunta: ¿Cómo puedo hacer un backup si me da error con text index? Respuesta: http://www.mistrucos.net/truco-sql-s...atos-693_1.htm |
Re: FAQ de Base de Datos Tema : Interbase / Firebird Pregunta : ¿Creando campos lógicos Booleanos en Interbase / Firebird? Problema : InterBase / Firebird no tiene campos de tipo Booleano. Respuesta : Opción 1: --------- Crea un campo de tipo CHAR y usa CHECK CONSTRAINTS para limitar los valores permitidos en el campo. Ejemplo: CHAR(1) CHECK (VALUE IN ("Y", "N")) NOT NULL; Opción 2: --------- Parecida a la anterior, pero usando un campo de tipo global para la base de datos, para poder reutilizar el tipo de dato más fácilmente. Ejemplo: CREATE DOMAIN YN AS CHAR(1) CHECK (VALUE IN ("Y","N")) NOT NULL; |
Re: FAQ de Base de Datos Tema : Interbase / Firebird Pregunta : ¿Para que sirve el archivo aliases.conf? Respuesta : InterBase / Firebird tiene la capacidad de usar Alias en sus bases de datos, esto te dará más seguridad pues no es necesario que los usuarios sepan la ruta de acceso o path de las bases de datos, de esta forma pueden usar el alias del nombre para conexión. Los Alias se guardan en ‘aliases.conf’ que se puede encontrar dentro del path de instalación de InterBase / Firebird, y luce así: # # List of known database aliases # ------------------------------ # # Examples: # # dummy = c:\data\dummy.fdb # En Windows: fbdb = c:\Firebird\sample\Employee.fdbEn Linux: fbdb = /opt/firebird/sample/employee.fdbPuedes editar éste archivo con el servidor corriendo y no hay necesidada de reiniciar o detener el servidor para que los cambios tengan efecto. |
Re: FAQ de Base de Datos Tema : Interbase / Firebird Descripción : Uso de campos de tipo BLOB Introducción : InterBase fue la base de datos pionera en el uso de los campos de tipo Blob, un Blob de InterBase o Firebird puede considerarse como una secuencia de bytes arbitrariamente larga que puede manipularse dentro de una transacción. El nombre blob no significa nada, no definido originalmente como acrónimo para Binary Large Object, o Basic Large Object, el nombre realmente viene de la película de terror "The Blob", el Blob era una criatura del espacio que se comía todo lo que se le cruzaba. Tipos de BLOB : Sub-type 0 blob : es creado por defecto cuando se usa el comando CREATE y es un sub-tipo no especificado. Es usado para almacenar información de tipo binario de un tipo no determinado. Sub-type 1 blob : es usado para almacenar y manipular texto. O Sub-type 2 blob : es usado para almacenar BLR (Binary Language Representation), como Triggers y Procedimientos almacenados. Sub-type definido por el usuario : También podemos definir nuestros propios sub-tipos. Estos se definen colocando un valor negativo con el nombre del sub-tipo. Este valor puede ser completamente arbitrario. Pero debe ser negativo.
|
Re: FAQ de Base de Datos BD: Oracle 10g Tema: Compilacion de Objetos invalidos Descripcion: Teniendo exportada la variable ORACLE_HOME en el ambiente de SO, podemos ejecutar con el usuario SYS el script utlrp.sql, que el Oracle mismo proporciona, desde la linea de comandos de SQLPlus*. SQL> @$ORACLE_HOME/rdbms/admin/utlrp al final consultamos: select * from dba_objects where status='INVALID'; si continuan algunos objetos como invalidos es momento de verificar que todos los grants hayan sido asignados, los objetos creados y los codigos de los store procedures debidamente compilados. |
Re: FAQ de Base de Datos BD: Oracle 10g R2 Tema: Navegar dentro del ASM como en Filesystem Descripcion: Exportar como usuario Oracle en SO la variable de ambiente ORACLE_SID con el nombre de la instancia de ASM como valor (+ASM normalmente). Desde la linea de comandos de SO ejecutar: # asmcmd -p Esto nos coloca ya dentro del ASM y podemos ejecutar instruccion tales como ls, rm, cd, etc.. como si fuera SO. Para obtener una lista de las instrucciones disponibles teclear ? o help. |
Re: FAQ de Base de Datos BD: Oracle 10g Tema: CRS de Oracle no me deja crear una base que ya borre. Descripcion: Cuando se tiene un RAC de Oracle en ocasiones se llega a borrar una base de datos con el DBCA pero este asistente falla y sigue apareciendo en la configuracion de CRS, esto puede provocar que cuando se intente crear un recurso con el mismo nombre el CRS no lo permita. Lo que se debe hacer es: 1. Identificar el nombre del recurso 2. Borralo manualmente y continuar. 1.- crs_stat | grep <nombre_del_recurso> Esto devuelve una salida similar a NAME=<nombre_en_el_crs> 2.- crs_unregister <nombre_en_el_crs> Ejecutar nuevamente el paso uno y solo regresa el prompt. |
Firebird Tema : Interbase / Firebird Descripción : ¿Cómo programo respaldos en Firebird / InterBase? Introducción : Firebird sede éste trabajo en las herramientas que tenga el sistema operativo. En Windows, puedes crear una tarea programada para invocar un pequeño script .BAT en donde puedes crear directorios, invocar los comandos gbak desde el directorio binario de Firebird, y usar herramientas de compresión ZIP o RAR para empaquetar los archivos de respaldo. En Linux, puedes usar el demonio crond. Puedes configurarlo con el comando 'crontab -e'. Igual que en Windows, puedes configurar una tarea programada para ello. Aquí ha un ejemplo: Código: #defino nombre de variable de respaldo |
Firebird Tema : Interbase / Firebird Descripción : ¿Porque en Ubuntu Dapper LTS tengo problemas al iniciar el demonio de Firebird? Respuesta: Cada vez que reinicias el servidor o el deminio de Firebird, el directorio /var/run está vacío, justo después de ... # Check the file is there and is executable. MANAGER=$FIREBIRD/bin/fbmgr.bin [ -x $MANAGER ] || exit 0 ... agrega las siguientes líneas al script /etc/init.d/firebird2. Código: if [ ! -d /var/run/firebird2 ] |
Firebird Descripción : ¿Cómo calculo la edad desde un campo fecha en Firebird? Respuesta: Asumiendo que la tabla1 contiene un campo tipo fecha con la información de la fecha de nacimiento ... o más sencillo SELECT CAST((CURRENT_DATE-campo_fecha)/365.25 AS INTEGER) FROM tabla1 Nota : Este script no calcula la edad con meses ni en meses |
Firebird Descripción : ¿Que son los archivos Shadow? Respuesta: Los archivos Shadow son copias en vivo de la base de dato original activa, permitiendo mantener duplicados en vivo de la base de datos de producción, la que puede ser puesta en produción en caso de una falla de hardware. Estos shadows son administrados en tiempo real por el servidor InterBase/Firebird. Son usados por razones de seguridad: puede la base de datos original ser dañada o incapacitada por problemas de hardware, el shadow puede ser tomado inmediatamente como la base de datos primaria. Entonces, es importante que los archivos shadow no estén en el mismo servidor o almenos en el mismo disco de la base de datos primaria. Los archivos shadow no son usados normalmente en plataformas Windows, como el archivo shadow deba estar en el mismo computador de la base de datos activa. Sin embargo, esto funciona en LINUX/UNIX. InterBase/Firebird permite hasta 65,536 (216) archivos de base de datos, incluyendo los archivos shadow. Sin embargo, el sistema operativo usado puede tener un límite inferior de archivos abiertos simultaneamente de los que IBServer/FBServer puede tener. En algunos casos, el SO provee medios para incrementar éste límite. Los archivos shadow, como con la base de datos principal y archivos secundarios, no pueden residir en sistemas de red o remotos (ej. unidades mapeadas en Windows y NFS en UNIX). Los archivos Shadow ofrece un número de ventajas:
Pero también tiene algunas limitaciones:
|
Re: FAQ de Base de Datos Tema:todas Descripcion: Ejemplo de base de datos. En esta pagina podran encontrar unos ejemplos de diseño de base de datos espero que les sirva. http://www.databaseanswers.org/data_models/index.htm |
Firebird 2.x Tema: Firebird Pregunta: ¿Cómo creo un procedimiento para validar RUT en Chile ? Respuesta: Mediante el siguiente procedimiento almacenado se puede validar el RUT en Chile mediante el uso del módulo 11. Fuente: http://www.dcc.uchile.cl/~mortega/mi...algoritmo.html Código: SET TERM ^ ;SELECT * FROM obtener_dgv(12345678) |
Respuesta: FAQ de Base de Datos Tema: Base de datos en general Pregunta: ¿Que motor de base de datos es mejor? Respuesta: Por sugerencia de gnzsoloyo un articulo al respecto. |
Respuesta: Firebird Cita:
A tener la necesidad de tener un procedimiento más exacto, llegué a hacer este sencillo Procedimiento Almacenado. Código: SET TERM ^ ; |
Respuesta: FAQ de Base de Datos Por favor alguien que pueda saber me responda la siguiente duda. Tengo funcionando firebird en windows 7 funciona bien. Ahora quiero poner la base de datos agenda.fdb en una carpeta de linux Por ej: /home/usuario/agenda/agenda.fdb Al ejecutar lazarus con firebird en linux no me funciona da error 10061 --el destino rechazo la coneccion. ¿Como hago para conectar en linux solo la base de datos? habilite el puerto 3050 en linux : iptables -A INPUT -s tcp --port ip -j ACCEPT .......para udp y para sport Aun asi da el mismo error. puse en localhost de ZConnection1 el nombre del servidor de linux y en la databases la direccion descripta anteriormente y sigue sin funciona ¿Que me falta ?¿Como lo resuelto? Gracias |
| La zona horaria es GMT -6. Ahora son las 12:57. |
Desarrollado por vBulletin® Versión 3.8.7
Derechos de Autor ©2000 - 2026, Jelsoft Enterprises Ltd.