miércoles, 17 de abril de 2013

Ficheros - Archivos de datos - Ubicación

  • Ficheros de Datos

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

Tablas - Objetos

  • Propietarios objetos

select owner, count(owner) Numero
from dba_objects
group by owner
order by Numero desc

   

  • Muestra los datos de una tabla especificada

select * from ALL_ALL_TABLES where upper(table_name) like '%EMPLO%'

  • Tablas del usuario

select * from user_tables

  • Todos los objetos propiedad del usuario conectado a Oracle

select * from user_catalog

Sesiones Activas

  • Vista que muestra las conexiones actuales a Oracle:

select osuser, username, machine, program
from v$session
order by osuser
 
  • Vista que muestra el número de conexiones actuales a Oracle agrupado por aplicación

select program Aplicacion, count(program) Numero_Sesiones
from v$session
group by program
order by Numero_Sesiones desc

  • Vista que muestra los usuarios de Oracle conectados y el número de sesiones por usuario


select username Usuario_Oracle, count(username) Numero_Sesiones
from v$session
group by username
order by Numero_Sesiones desc

Consultas SQL útiles Información / Administración de Oracle

  • Estado de la base de datos

select * from v$instance
  • 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'
  • Diccionario de datos

select * from dictionary
select table_name from dictionary

martes, 16 de abril de 2013

Tablespace - Espacio - Tablas

  • Ver - Tablespace - Espacios - Ocupación

Select
df.tablespace_name "Tablespace",
df.bytes / (1024 * 1024) "Tamaño (Mb)",
Sum(fs.bytes) / (1024 * 1024) "Libre (Mb)",
Nvl(Round(SUM(fs.bytes) * 100 / df.bytes),1) "% Libre",
Round((df.bytes - SUM(fs.bytes)) * 100 / df.bytes) "% Usado"
From  dba_free_space fs,
(Select tablespace_name,SUM(bytes) bytes From  dba_data_files
Group by  tablespace_name ) df
Where
fs.tablespace_name (+)  = df.tablespace_name
Group by  df.tablespace_name,df.bytes

Union All

Select
df.tablespace_name tspace,
fs.bytes / (1024 * 1024),
Sum(df.bytes_free) / (1024 * 1024),
Nvl(Round((SUM(fs.bytes) - df.bytes_used) * 100 / fs.bytes), 1),
Round((SUM(fs.bytes) - df.bytes_free) * 100 / fs.bytes)
From  dba_temp_files fs,
( Select tablespace_name,bytes_free,bytes_used From v$temp_space_header
Group by tablespace_name,bytes_free,bytes_used) df
Where
 fs.tablespace_name (+)  = df.tablespace_name
 Group by  df.tablespace_name,fs.bytes,df.bytes_free,df.bytes_used
Order by 5 Desc;




  • Ver Ocupación por Tabla (Incluyendo Indices) del usuario conectado

select sum(Table_Allocation_MB), table_name
 from
(
select sum(user_segments.bytes)/1024/1024 Table_Allocation_MB,user_indexes.table_name
 from user_segments, user_indexes
where user_segments.segment_type in ('INDEX') and user_segments.segment_name=user_indexes.index_name
GROUP BY  user_indexes.table_name
union all
select sum(bytes)/1024/1024 Table_Allocation_MB,segment_name from user_segments
where segment_type in ('TABLE')
GROUP BY segment_name
)
group by table_name order by 1 desc


También podemos agregarle a la consulta la ocupación de los tipos de datos LOB.

select sum(Table_Allocation_MB), table_name from (select sum(user_segments.bytes)/1024/1024 Table_Allocation_MB,user_indexes.table_name from user_segments, user_indexes where user_segments.segment_type in ('INDEX') and user_segments.segment_name=user_indexes.index_nameGROUP BY user_indexes.table_name
union all

select
sum
(bytes)/1024/1024 Table_Allocation_MB,segment_name from user_segmentswhere segment_type in ('TABLE')GROUP BY segment_name
UNION ALL

select
sum
(bytes)/1024/1024 Table_Allocation_MB,segment_name from user_segmentswhere segment_type IN ('LOBINDEX','LOBSEGMENT')GROUP BY segment_name) group by table_nameorder by 1 desc

Manejo de Jobs

  • Tablas Relacionadas

select * from user_errors;
select * from user_source;
select * from dba_jobs;
select * from users_jobs;

  • Crear Jobs

variable jobno number;
begin
dbms_job.submit( :jobno,
'owner.storeprocedure;',
sysdate + (1/24/60)*5,
'sysdate + (1/24/60)*30'
);
end;
/
commit;

  • Borrar Jobs

variable jobno number;
begin
dbms_job.remove (24);
end;
/
commit;
-------modifica jobs----
begin
dbms_job.change(<Job number>,
'owner.storeprocedure;',
sysdate + (1/24/60)*5,
'sysdate + (1/24/60)*5'
);
end;
/
commit;

  • Habilta/Deshabilita jobs


begin
dbms_job.broken(<JOBNUMBER>,FALSE);
end;
/
commit;

martes, 24 de abril de 2012

Procedure

Como crear un Procedure

CREATE or REPLEACE procedure "SUMA"
(var1 number,var2 number)
as

v_suma number
BEGIN

v_suma := var1 + var2;

EXCEPTION
when others then
begin
end;


END;


Como ver errores de compilación

select * from user_errors;



Como ejecutar un procedure
Call suma(2,3);

Como dar permisos de ejecución

grant execute on "SUMA" to "USUARIO";