Hola buenas, antes que nada les comento que soy consultor en tecnologias, ahora me especializo en bases de datos (DBA) y mas sobre Oracle, pero se manejar SQL Server, MySQL y DB2 asi en ese orden de conocimientos, y todo sobre Unix, Linux y Windows, este es un script que fui armando a partir de muchas consultas que fui sacando de muchos lados y que las voy utilizando en el dia a dia en las empresas que voy y tengo que averiguar cosas, me es muy util porque solo pongo la ruta del mismo dentro de la base Ej: SQL> @/home/oracle/scripts/Chequeo_general.sql y el solito me saca toda la informacion ordenadita, aunque parezca una pavada me llevo mucho tiempo armar las consultas o encontrarlas y armar el script y luego probarlo que funcionara y sobre todo que se viera bien y facil ya que salia cualquier cosa y tambien corregir sus errores en la consulta, ahora anda de 10 y para aquel que necesite un script de chequeo rapido es buenisimo, espero les ayude, asi que aca se los dejo, esta copiado y pegado de un notepad y aunque se ve diferente aca al pasarlo al notepad deberia andar asi nomas y sino con una minima modificacion quedaria bien otra vez, saludos.
PD: Si dejan puntos no me enojo, sino espero que les sirva igual
EL SCRIPT EMPIEZA ACA Y SE LLAMA: Chequeo_general.sql
conn sys@BASE as sysdba ===> ESTA LINEA LA USO XQ PIDO QUE ME AUTENTIQUE CUANDO LO LLAMO
PROMP
PROMP
PROMP
PROMP
PROMP ************************************************************************************************************************************************
PROMP ************************************************************************************************************************************************
PROMP ************ ESTE SCRIPT NO HACE UN SPOOL, SI SE NECESITA AGREGARLO ****************************************************************************
PROMP ************ ESTE SCRIPT SE PUEDE MODIFICAR A GUSTO PERO SIEMPRE DEJANDO LOS DATOS DEL CREADOR Y AGREGANDOLE LOS DEL MODIFICADOR MAS ABAJO *****
PROMP ************ ESPERO LES SEA UTIL, SALUDOS ******************************************************************************************************
PROMP ************************************************************************************************************************************************
PROMP ************************************************************************************************************************************************
PROMP
PROMP
PROMP
PROMP
PROMP
PROMP *****************************************************************
PROMP ************ EMPEZAMOS EL CONTROL GENERAL DE LA BASE ************
PROMP *****************************************************************
PROMP
PROMP ***************************************************************************
PROMP ************ VEMOS EL DETALLE DE LOS DATOS DE LA BASE DE DATOS ************
PROMP ***************************************************************************
select * from v$version where banner like 'Oracle%';
PROMP
PROMP ***********************************************************
PROMP ************ VEMOS EL DB NAME Y EL UNIQUE NAME ************
PROMP ***********************************************************
col NAME format a30
col VALUE format a30
SELECT name, value
FROM gv$parameter
WHERE name LIKE 'db%name';
PROMP
PROMP ********************************************
PROMP ************ VEMOS LA INSTANCIA ************
PROMP ********************************************
Select * from v$instance;
PROMP
PROMP **********************************************************
PROMP ************ VEMOS LA INSTANCIA MAS DETALLADA ************
PROMP **********************************************************
SET LINESIZE 1500
COL Instance_name FORMAT A10
COL HOST FORMAT A20
COL Version FORMAT A15
COL Status FORMAT A10
COL Database_Status FORMAT A15
select a.Instance_name INSTANCIA,
a.Host_name HOST,
a.Version,
a.Status,
a.Archiver,
a.Database_Status,
b.data_size+j.temp_size "TAMAÑO EN GB",
round(SUM(w.bytes)/(1024*1024*1024),2) "USADO EN GB" ,
round((c.value) /(1024*1024)) "SGA MAX SIZE MB"
from v$instance a,
( select round(sum(bytes) /(1024*1024*1024),2) data_size from dba_data_files ) b,
( select nvl(sum(bytes)/(1024*1024*1024) ,2) temp_size from dba_temp_files ) j,
v$parameter c,
dba_segments w
where c.name ='sga_max_size'
group by c.value,
a.Instance_name,
a.Host_name,
a.Version,
a.Status,
a.Archiver,
a.Database_Status,
b.data_size,
j.temp_size;
PROMP
PROMP
PROMP
PROMP ************************************************************************************
PROMP ************ VEMOS LA SECUENCIA Y LAS RUTA DONDE SE ALOJAN LOS ARCHIVES ************
PROMP ************************************************************************************
PROMP
PROMP
archive log list;
PROMP
PROMP
PROMP
PROMP ********************************************************
PROMP ************ HACEMOS UN CONTROL DE LOS JOBS ************
PROMP ********************************************************
set linesize 200
col log_user for a10
col schema_user for a10
col job for 9999
col prog for a50
col instance for 999
col Fail for 99
select job, log_user, schema_user, what "Prog", substr(to_char(last_date),1,10) "L Date", substr(to_char(next_date),1,10) "N Date", broken "Brok", failures "Fail", instance
from dba_jobs;
PROMP
PROMP
PROMP
PROMP ***************************************************
PROMP ************ VEMOS EL BUFFER HIT RATIO ************
PROMP ***************************************************
set pagesize 66
select sum(decode(NAME, 'consistent gets',VALUE, 0)) "Consistent Gets",
sum(decode(NAME, 'db block gets',VALUE, 0)) "DB Blk Gets",
sum(decode(NAME, 'physical reads',VALUE, 0)) "Physical Reads",
round((sum(decode(name, 'consistent gets',value, 0)) +
sum(decode(name, 'db block gets',value, 0)) -
sum(decode(name, 'physical reads',value, 0))) /
(sum(decode(name, 'consistent gets',value, 0)) +
sum(decode(name, 'db block gets',value, 0))) * 100,2) "Hit Ratio"
from sys.v_$sysstat;
PROMP
PROMP
PROMP
PROMP **********************************************************
PROMP ************ VEMOS EL LIBRARY CACHE HIT RATIO ************
PROMP **********************************************************
set pagesize 66
select sum(PINS) "Executions",
sum(PINHITS) "Execution Hits",
round((sum(PINHITS) / sum(PINS)) * 100,3) "Hit Ratio",
sum(RELOADS) "Misses",
round((sum(PINS) / (sum(PINS) + sum(RELOADS))) * 100,3) "Hit Ratio"
from sys.v_$librarycache;
PROMP
PROMP
PROMP
PROMP ************************************************************
PROMP ************ VEMOS EL DATA DICTIONARY HIT RATIO ************
PROMP ************************************************************
set pagesize 66
select sum(GETS) "Gets",
sum(GETMISSES) "Cache Misses",
round((1 - (sum(GETMISSES) / sum(GETS))) * 100,2) "Hit Ratio"
from sys.v_$rowcache;
PROMP
PROMP
PROMP
PROMP
PROMP
PROMP
PROMP ***********************************************************************************
PROMP ************ VEMOS LA UBICACION DE LOS ARCHIVOS IMPORTANTES DE LA BASE ************
PROMP ***********************************************************************************
set pagesize 100
set feedback off
set line 500
col Tipo_de_Archivo format a15
col PATH format a100
col FILE_NAME format a50
col TABLESPACE_NAME format a20
col AUTOEXTENSIBLE format a3
col Bytes_Megas format 999,999,999,999
col MAXSIZE format 999,999,999,999
select 'Tipo_de_Archivo',
value PATH
from sys.v_$parameter
where name = 'log_archive_dest' and value is not null
UNION ALL
select 'Control Files',
value
from sys.v_$parameter
where name = 'control_files'
UNION ALL
select 'Datafile',
name
from sys.v_$datafile
UNION ALL
select 'Datafile (Tempfiles)',
name
from sys.v_$tempfile
UNION ALL
select 'LogFile Member',
member
from sys.v_$logfile
UNION ALL
select 'Pfile',
value
from sys.v_$parameter where name like '%pfile%' and value is not null;
PROMP
PROMP
PROMP
PROMP *****************************************************
PROMP ************ VEMOS SI USA PFILE O SPFILE ************
PROMP *****************************************************
show parameters spfile
PROMP
PROMP
PROMP
PROMP
PROMP
PROMP
PROMP ************************************************
PROMP ************ VEMOS LOS CONTROLFILES ************
PROMP ************************************************
set linesize 200
col NAME format A60
SELECT NAME FROM V$CONTROLFILE;
PROMP
PROMP
PROMP
PROMP
PROMP
PROMP
PROMP ********************************************
PROMP ************ VEMOS LOS REDOLOGS ************
PROMP ********************************************
col member for a47
col tamano_MB for 9999
col group for 9
SELECT a.GROUP#, BYTES/1024/1024 as tamano_MB, 'ONLINE' AS TYPE, b.member
FROM V$LOG a,v$logfile b where a.group#=b.group#
UNION
SELECT c.GROUP#, BYTES/1024/1024 as tamano_MB, 'STANDBY' AS TYPE, b.member
FROM V$STANDBY_LOG c ,v$logfile b where c.group#=b.group#
ORDER BY 1;
select GROUP#, THREAD#, SEQUENCE#, MEMBERS, ARCHIVED, STATUS, bytes/1024/1024 SIZE_MB from v$log;
PROMP
PROMP
PROMP
PROMP
PROMP
PROMP
PROMP ********************************************************************
PROMP ************ VEMOS LAS CUENTAS QUE ESTAN EN ESTADO OPEN ************
PROMP ********************************************************************
COL USERNAME FORMAT A20
COL ACCOUNT_STATUS FORMAT A20
SELECT USERNAME, ACCOUNT_STATUS
FROM DBA_USERS
WHERE ACCOUNT_STATUS='OPEN'
/
PROMP
PROMP
PROMP
PROMP
PROMP
PROMP
PROMP *****************************************************
PROMP ************ VEMOS LOS OBJETOS INVALIDOS ************
PROMP *****************************************************
select count(*) from dba_objects where status like 'INVALID';
PROMP
PROMP
PROMP *****************************************************************************
PROMP ************ OBJETOS INVALIDOS QUE NO SON NI DE SYSTEM NI DE SYS ************
PROMP *****************************************************************************
PROMP
PROMP
select count(*)
from all_objects
where status = 'INVALID' and owner not in ('SYSTEM', 'SYS');
set linesize 300
set pagesize 200
col OBJECT_NAME format a40
select owner, object_name, object_type, status, created from dba_objects where status = 'INVALID' ORDER BY 5;
PROMP
PROMP
PROMP
select owner, object_type, count(*)
from dba_objects
where status='INVALID'
group by owner, object_type
/
PROMP
PROMP
PROMP
PROMP
PROMP
PROMP
PROMP ******************************************************************
PROMP ************ VEMOS LOS OBJETOS QUE ESTAN EN NOLOGGING ************
PROMP ******************************************************************
set linesize 200
set pagesize 200
col OWNER format A20
col TABLE_NAME format A50
SELECT OWNER,TABLE_NAME, LOGGING
FROM DBA_TABLES
WHERE LOGGING='NO' and OWNER NOT IN ('SYS','SYSTEM','DBSNMP') order by 1,2
/
PROMP
PROMP
PROMP
PROMP
PROMP
PROMP
PROMP **********************************************************************
PROMP ************ VEMOS LOS DATAFILES DE TODOS LOS TABLESPACES ************
PROMP **********************************************************************
col FILE_NAME format a40
select FILE_NAME, FILE_ID, TABLESPACE_NAME, BLOCKS, STATUS, AUTOEXTENSIBLE, INCREMENT_BY from dba_data_files;
PROMP
PROMP
PROMP
PROMP
PROMP
PROMP
PROMP *******************************************************************************************
PROMP ************ VEMOS LOS DATAFILES QUE ESTAN EN AUTOEXTEND Y SUS LIMITES MAXIMOS ************
PROMP *******************************************************************************************
set pagesize 66
col file_name format a45;
select file_name,autoextensible,maxbytes
from dba_data_files
where autoextensible = 'YES';
PROMP
PROMP
PROMP
PROMP
PROMP
PROMP
PROMP ******************************************************
PROMP ************ VEMOS EL IO EN LOS DATAFILES ************
PROMP ******************************************************
set pagesize 66
col "File Name" format a50;
col "Reads %" format 999.99;
col "Writes %" format 999.99;
select NAME "File Name",
round((PHYRDS / pd.PHYS_READS)*100,2) "Reads %",
round(PHYWRTS * 100 / pd.PHYS_WRTS,2) "Writes %"
from (select sum(PHYRDS) phys_reads,
sum(PHYWRTS) phys_wrts
from sys.v_$filestat) pd,
sys.v_$datafile df,
sys.v_$filestat fs
where df.FILE# = fs.FILE#
order by fs.PHYBLKRD + fs.PHYBLKWRT desc;
PROMP
PROMP
PROMP
PROMP
PROMP
PROMP
PROMP *****************************************************
PROMP ************ VEMOS TODOS LOS TABLESPACES ************
PROMP *****************************************************
set linesize 200
set pagesize 500
col %Usado format A25
SELECT TRUNC (SYSDATE) fecha, tablespace_name,
SUM (mbtotal) / 1024 / 1024 mbtotal,
SUM ( mbtotal
- mblibre) / 1024 / 1024 mbusado,
SUM (mblibre) / 1024 / 1024 mblibre,
TO_CHAR (
( SUM (mbtotal)
- SUM (mblibre)
) * 100 / SUM (mbtotal),
'999.99'
) "%Usado"
FROM (SELECT tablespace_name, bytes mbtotal, 0 mblibre
FROM dba_data_files
UNION ALL
SELECT tablespace_name, bytes mbtotal, 0 mblibre
FROM dba_temp_files
UNION ALL
SELECT tablespace_name, 0 mbtotal, bytes mblibre
FROM dba_free_space)
GROUP BY TRUNC (SYSDATE), tablespace_name
ORDER BY 6 DESC
/
PROMP
PROMP
PROMP
PROMP
PROMP
PROMP
PROMP *************************************************************************************
PROMP ************ VEMOS QUE USUARIOS TIENEN AL TABLESPACE SYSTEM COMO DEFAULT ************
PROMP *************************************************************************************
set pagesize 100
col username format a20;
col profile format a20;
col TABLESPACE_DEFAULT format a30;
col TABLESPACE_TEMPORAL format a20;
select USERNAME,
PROFILE,
DEFAULT_TABLESPACE "TABLESPACE_DEFAULT",
TEMPORARY_TABLESPACE "TABLESPACE_TEMPORAL"
from dba_users
where (default_tablespace ='SYSTEM'
or temporary_tablespace = 'SYSTEM')
and username not in ('SYS','SYSTEM')
order by DEFAULT_TABLESPACE, TEMPORARY_TABLESPACE, USERNAME;
PROMP
PROMP
PROMP
PROMP
PROMP
PROMP
PROMP ***************************************************************************************************
PROMP ************ VEMOS LA CANTIDAD DE OBJETOS EN EL TABLESPACE SYSTEM Y A QUIEN PERTENECEN ************
PROMP ***************************************************************************************************
set pagesize 66
col owner format a20;
col cantidad format 9999;
select OWNER,
count(1) "Cantidad"
from dba_segments
where TABLESPACE_NAME = 'SYSTEM'
and OWNER not in ('SYS','SYSTEM')
group by owner
order by OWNER;
PROMP
PROMP
PROMP
PROMP
PROMP
PROMP
PROMP *****************************************************************************
PROMP ************ VEMOS TODOS LOS TABLESPACES QUE NECESITAN AMPLIARSE ************
PROMP *****************************************************************************
set pages 999 lines 100
col "Tablespace" for a50
col "Size MB" for 999999999
col "%Used" for 999
col "Add (80%)" for 999999
select tsu.tablespace_name "Tablespace"
, ceil(tsu.used_mb) "Size MB"
, 100 - floor(tsf.free_mb/tsu.used_mb*100) "%Used"
, ceil((tsu.used_mb - tsf.free_mb) / .8) - tsu.used_mb "Add (80%)"
from (select tablespace_name, sum(bytes)/1024/1024 used_mb
from dba_data_files group by tablespace_name) tsu
, (select ts.tablespace_name
, nvl(sum(bytes)/1024/1024, 0) free_mb
from dba_tablespaces ts, dba_free_space fs
where ts.tablespace_name = fs.tablespace_name (+)
group by ts.tablespace_name) tsf
where tsu.tablespace_name = tsf.tablespace_name (+)
and 100 - floor(tsf.free_mb/tsu.used_mb*100) >= 80
order by 3,4
/
PROMP
PROMP
PROMP
PROMP
PROMP
PROMP
PROMP *****************************************************************
PROMP ************ VEMOS QUE TABLAS NO TIENEN ESTADISTICAS ************
PROMP *****************************************************************
set pagesize 66
select OWNER,
sum(decode(nvl(NUM_ROWS,9999), 9999,0,1)) "Analyzed",
sum(decode(nvl(NUM_ROWS,9999), 9999,1,0)) "Not Analyzed",
count(TABLE_NAME) "Total"
from dba_tables
where OWNER not in ('SYS', 'SYSTEM')
group by OWNER
having sum(decode(nvl(NUM_ROWS,9999), 9999,1,0)) != 0;
PROMP
PROMP
PROMP
PROMP
PROMP
PROMP
PROMP **********************************************************************
PROMP ************ VEMOS LAS TABLAS QUE TIENEN MAS DE 5 INDICES ************
PROMP **********************************************************************
set pagesize 66
select OWNER,
TABLE_NAME,
COUNT(1)
from dba_indexes
where OWNER not in ('SYS','SYSTEM')
group by OWNER, TABLE_NAME
having COUNT(*) > 5
order by COUNT(*) desc, OWNER, TABLE_NAME;
PROMP
PROMP
PROMP
PROMP
PROMP
PROMP
PROMP ******************************************************************
PROMP ************ VEMOS LOS OBJETOS CON MAS DE 100 EXTENTS ************
PROMP ******************************************************************
set linesize 150
col OWNER format A20
col SEGMENT_NAME format A30
SELECT OWNER, SEGMENT_NAME, TABLESPACE_NAME, COUNT(*) EXT
FROM DBA_EXTENTS
GROUP BY OWNER, SEGMENT_NAME, TABLESPACE_NAME
HAVING COUNT(*) > 100
/
PROMP
PROMP
PROMP
PROMP
PROMP
PROMP
PROMP ******************************************************************
PROMP ************ VEMOS LOS OBJETOS CON EXTENTS PELIGROSOS ************
PROMP ******************************************************************
set linesize 500
col TABLESPACE_NAME format a30
col SEGMENT_NAME format a30
select tablespace_name Tablespace_Name, segment_name Segment_Name,
segment_type Segment_Type, next_extent Next_Extent
from dba_segments a
where next_extent >
(
select max(bytes) from dba_free_space b
where a.tablespace_name = b.tablespace_name
);
PROMP
PROMP ************************************************************
PROMP ************ FIN DEL CONTROL GENERAL DE LA BASE ************
PROMP ************************************************************
PROMP
PROMP °°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°
PROMP °°°°°°°°°°°°°°°°°°°°°°°° CREADO POR °°°°°°°°°°°°°°°°°°°°°°°°
PROMP °°°°°°°°°°°°°°°°°° MARCELO PATRICIO BUORA °°°°°°°°°°°°°°°°°°
PROMP °°°°°°°°°°°°°°°°°°°°°°°° ALIAS TUKA °°°°°°°°°°°°°°°°°°°°°°°°
PROMP °°°°°°°°°°°°°° AÑO 2012 Y MODIFICADO EN 2013 °°°°°°°°°°°°°°°
PROMP °°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°
PROMP °°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°
Agradecer no cuesta nada, si te sirvio dejame algun puntito asi subo de rango y puedo dejar comentarios en otros post, gracias.
PD: Si dejan puntos no me enojo, sino espero que les sirva igual
EL SCRIPT EMPIEZA ACA Y SE LLAMA: Chequeo_general.sql
conn sys@BASE as sysdba ===> ESTA LINEA LA USO XQ PIDO QUE ME AUTENTIQUE CUANDO LO LLAMO
PROMP
PROMP
PROMP
PROMP
PROMP ************************************************************************************************************************************************
PROMP ************************************************************************************************************************************************
PROMP ************ ESTE SCRIPT NO HACE UN SPOOL, SI SE NECESITA AGREGARLO ****************************************************************************
PROMP ************ ESTE SCRIPT SE PUEDE MODIFICAR A GUSTO PERO SIEMPRE DEJANDO LOS DATOS DEL CREADOR Y AGREGANDOLE LOS DEL MODIFICADOR MAS ABAJO *****
PROMP ************ ESPERO LES SEA UTIL, SALUDOS ******************************************************************************************************
PROMP ************************************************************************************************************************************************
PROMP ************************************************************************************************************************************************
PROMP
PROMP
PROMP
PROMP
PROMP
PROMP *****************************************************************
PROMP ************ EMPEZAMOS EL CONTROL GENERAL DE LA BASE ************
PROMP *****************************************************************
PROMP
PROMP ***************************************************************************
PROMP ************ VEMOS EL DETALLE DE LOS DATOS DE LA BASE DE DATOS ************
PROMP ***************************************************************************
select * from v$version where banner like 'Oracle%';
PROMP
PROMP ***********************************************************
PROMP ************ VEMOS EL DB NAME Y EL UNIQUE NAME ************
PROMP ***********************************************************
col NAME format a30
col VALUE format a30
SELECT name, value
FROM gv$parameter
WHERE name LIKE 'db%name';
PROMP
PROMP ********************************************
PROMP ************ VEMOS LA INSTANCIA ************
PROMP ********************************************
Select * from v$instance;
PROMP
PROMP **********************************************************
PROMP ************ VEMOS LA INSTANCIA MAS DETALLADA ************
PROMP **********************************************************
SET LINESIZE 1500
COL Instance_name FORMAT A10
COL HOST FORMAT A20
COL Version FORMAT A15
COL Status FORMAT A10
COL Database_Status FORMAT A15
select a.Instance_name INSTANCIA,
a.Host_name HOST,
a.Version,
a.Status,
a.Archiver,
a.Database_Status,
b.data_size+j.temp_size "TAMAÑO EN GB",
round(SUM(w.bytes)/(1024*1024*1024),2) "USADO EN GB" ,
round((c.value) /(1024*1024)) "SGA MAX SIZE MB"
from v$instance a,
( select round(sum(bytes) /(1024*1024*1024),2) data_size from dba_data_files ) b,
( select nvl(sum(bytes)/(1024*1024*1024) ,2) temp_size from dba_temp_files ) j,
v$parameter c,
dba_segments w
where c.name ='sga_max_size'
group by c.value,
a.Instance_name,
a.Host_name,
a.Version,
a.Status,
a.Archiver,
a.Database_Status,
b.data_size,
j.temp_size;
PROMP
PROMP
PROMP
PROMP ************************************************************************************
PROMP ************ VEMOS LA SECUENCIA Y LAS RUTA DONDE SE ALOJAN LOS ARCHIVES ************
PROMP ************************************************************************************
PROMP
PROMP
archive log list;
PROMP
PROMP
PROMP
PROMP ********************************************************
PROMP ************ HACEMOS UN CONTROL DE LOS JOBS ************
PROMP ********************************************************
set linesize 200
col log_user for a10
col schema_user for a10
col job for 9999
col prog for a50
col instance for 999
col Fail for 99
select job, log_user, schema_user, what "Prog", substr(to_char(last_date),1,10) "L Date", substr(to_char(next_date),1,10) "N Date", broken "Brok", failures "Fail", instance
from dba_jobs;
PROMP
PROMP
PROMP
PROMP ***************************************************
PROMP ************ VEMOS EL BUFFER HIT RATIO ************
PROMP ***************************************************
set pagesize 66
select sum(decode(NAME, 'consistent gets',VALUE, 0)) "Consistent Gets",
sum(decode(NAME, 'db block gets',VALUE, 0)) "DB Blk Gets",
sum(decode(NAME, 'physical reads',VALUE, 0)) "Physical Reads",
round((sum(decode(name, 'consistent gets',value, 0)) +
sum(decode(name, 'db block gets',value, 0)) -
sum(decode(name, 'physical reads',value, 0))) /
(sum(decode(name, 'consistent gets',value, 0)) +
sum(decode(name, 'db block gets',value, 0))) * 100,2) "Hit Ratio"
from sys.v_$sysstat;
PROMP
PROMP
PROMP
PROMP **********************************************************
PROMP ************ VEMOS EL LIBRARY CACHE HIT RATIO ************
PROMP **********************************************************
set pagesize 66
select sum(PINS) "Executions",
sum(PINHITS) "Execution Hits",
round((sum(PINHITS) / sum(PINS)) * 100,3) "Hit Ratio",
sum(RELOADS) "Misses",
round((sum(PINS) / (sum(PINS) + sum(RELOADS))) * 100,3) "Hit Ratio"
from sys.v_$librarycache;
PROMP
PROMP
PROMP
PROMP ************************************************************
PROMP ************ VEMOS EL DATA DICTIONARY HIT RATIO ************
PROMP ************************************************************
set pagesize 66
select sum(GETS) "Gets",
sum(GETMISSES) "Cache Misses",
round((1 - (sum(GETMISSES) / sum(GETS))) * 100,2) "Hit Ratio"
from sys.v_$rowcache;
PROMP
PROMP
PROMP
PROMP
PROMP
PROMP
PROMP ***********************************************************************************
PROMP ************ VEMOS LA UBICACION DE LOS ARCHIVOS IMPORTANTES DE LA BASE ************
PROMP ***********************************************************************************
set pagesize 100
set feedback off
set line 500
col Tipo_de_Archivo format a15
col PATH format a100
col FILE_NAME format a50
col TABLESPACE_NAME format a20
col AUTOEXTENSIBLE format a3
col Bytes_Megas format 999,999,999,999
col MAXSIZE format 999,999,999,999
select 'Tipo_de_Archivo',
value PATH
from sys.v_$parameter
where name = 'log_archive_dest' and value is not null
UNION ALL
select 'Control Files',
value
from sys.v_$parameter
where name = 'control_files'
UNION ALL
select 'Datafile',
name
from sys.v_$datafile
UNION ALL
select 'Datafile (Tempfiles)',
name
from sys.v_$tempfile
UNION ALL
select 'LogFile Member',
member
from sys.v_$logfile
UNION ALL
select 'Pfile',
value
from sys.v_$parameter where name like '%pfile%' and value is not null;
PROMP
PROMP
PROMP
PROMP *****************************************************
PROMP ************ VEMOS SI USA PFILE O SPFILE ************
PROMP *****************************************************
show parameters spfile
PROMP
PROMP
PROMP
PROMP
PROMP
PROMP
PROMP ************************************************
PROMP ************ VEMOS LOS CONTROLFILES ************
PROMP ************************************************
set linesize 200
col NAME format A60
SELECT NAME FROM V$CONTROLFILE;
PROMP
PROMP
PROMP
PROMP
PROMP
PROMP
PROMP ********************************************
PROMP ************ VEMOS LOS REDOLOGS ************
PROMP ********************************************
col member for a47
col tamano_MB for 9999
col group for 9
SELECT a.GROUP#, BYTES/1024/1024 as tamano_MB, 'ONLINE' AS TYPE, b.member
FROM V$LOG a,v$logfile b where a.group#=b.group#
UNION
SELECT c.GROUP#, BYTES/1024/1024 as tamano_MB, 'STANDBY' AS TYPE, b.member
FROM V$STANDBY_LOG c ,v$logfile b where c.group#=b.group#
ORDER BY 1;
select GROUP#, THREAD#, SEQUENCE#, MEMBERS, ARCHIVED, STATUS, bytes/1024/1024 SIZE_MB from v$log;
PROMP
PROMP
PROMP
PROMP
PROMP
PROMP
PROMP ********************************************************************
PROMP ************ VEMOS LAS CUENTAS QUE ESTAN EN ESTADO OPEN ************
PROMP ********************************************************************
COL USERNAME FORMAT A20
COL ACCOUNT_STATUS FORMAT A20
SELECT USERNAME, ACCOUNT_STATUS
FROM DBA_USERS
WHERE ACCOUNT_STATUS='OPEN'
/
PROMP
PROMP
PROMP
PROMP
PROMP
PROMP
PROMP *****************************************************
PROMP ************ VEMOS LOS OBJETOS INVALIDOS ************
PROMP *****************************************************
select count(*) from dba_objects where status like 'INVALID';
PROMP
PROMP
PROMP *****************************************************************************
PROMP ************ OBJETOS INVALIDOS QUE NO SON NI DE SYSTEM NI DE SYS ************
PROMP *****************************************************************************
PROMP
PROMP
select count(*)
from all_objects
where status = 'INVALID' and owner not in ('SYSTEM', 'SYS');
set linesize 300
set pagesize 200
col OBJECT_NAME format a40
select owner, object_name, object_type, status, created from dba_objects where status = 'INVALID' ORDER BY 5;
PROMP
PROMP
PROMP
select owner, object_type, count(*)
from dba_objects
where status='INVALID'
group by owner, object_type
/
PROMP
PROMP
PROMP
PROMP
PROMP
PROMP
PROMP ******************************************************************
PROMP ************ VEMOS LOS OBJETOS QUE ESTAN EN NOLOGGING ************
PROMP ******************************************************************
set linesize 200
set pagesize 200
col OWNER format A20
col TABLE_NAME format A50
SELECT OWNER,TABLE_NAME, LOGGING
FROM DBA_TABLES
WHERE LOGGING='NO' and OWNER NOT IN ('SYS','SYSTEM','DBSNMP') order by 1,2
/
PROMP
PROMP
PROMP
PROMP
PROMP
PROMP
PROMP **********************************************************************
PROMP ************ VEMOS LOS DATAFILES DE TODOS LOS TABLESPACES ************
PROMP **********************************************************************
col FILE_NAME format a40
select FILE_NAME, FILE_ID, TABLESPACE_NAME, BLOCKS, STATUS, AUTOEXTENSIBLE, INCREMENT_BY from dba_data_files;
PROMP
PROMP
PROMP
PROMP
PROMP
PROMP
PROMP *******************************************************************************************
PROMP ************ VEMOS LOS DATAFILES QUE ESTAN EN AUTOEXTEND Y SUS LIMITES MAXIMOS ************
PROMP *******************************************************************************************
set pagesize 66
col file_name format a45;
select file_name,autoextensible,maxbytes
from dba_data_files
where autoextensible = 'YES';
PROMP
PROMP
PROMP
PROMP
PROMP
PROMP
PROMP ******************************************************
PROMP ************ VEMOS EL IO EN LOS DATAFILES ************
PROMP ******************************************************
set pagesize 66
col "File Name" format a50;
col "Reads %" format 999.99;
col "Writes %" format 999.99;
select NAME "File Name",
round((PHYRDS / pd.PHYS_READS)*100,2) "Reads %",
round(PHYWRTS * 100 / pd.PHYS_WRTS,2) "Writes %"
from (select sum(PHYRDS) phys_reads,
sum(PHYWRTS) phys_wrts
from sys.v_$filestat) pd,
sys.v_$datafile df,
sys.v_$filestat fs
where df.FILE# = fs.FILE#
order by fs.PHYBLKRD + fs.PHYBLKWRT desc;
PROMP
PROMP
PROMP
PROMP
PROMP
PROMP
PROMP *****************************************************
PROMP ************ VEMOS TODOS LOS TABLESPACES ************
PROMP *****************************************************
set linesize 200
set pagesize 500
col %Usado format A25
SELECT TRUNC (SYSDATE) fecha, tablespace_name,
SUM (mbtotal) / 1024 / 1024 mbtotal,
SUM ( mbtotal
- mblibre) / 1024 / 1024 mbusado,
SUM (mblibre) / 1024 / 1024 mblibre,
TO_CHAR (
( SUM (mbtotal)
- SUM (mblibre)
) * 100 / SUM (mbtotal),
'999.99'
) "%Usado"
FROM (SELECT tablespace_name, bytes mbtotal, 0 mblibre
FROM dba_data_files
UNION ALL
SELECT tablespace_name, bytes mbtotal, 0 mblibre
FROM dba_temp_files
UNION ALL
SELECT tablespace_name, 0 mbtotal, bytes mblibre
FROM dba_free_space)
GROUP BY TRUNC (SYSDATE), tablespace_name
ORDER BY 6 DESC
/
PROMP
PROMP
PROMP
PROMP
PROMP
PROMP
PROMP *************************************************************************************
PROMP ************ VEMOS QUE USUARIOS TIENEN AL TABLESPACE SYSTEM COMO DEFAULT ************
PROMP *************************************************************************************
set pagesize 100
col username format a20;
col profile format a20;
col TABLESPACE_DEFAULT format a30;
col TABLESPACE_TEMPORAL format a20;
select USERNAME,
PROFILE,
DEFAULT_TABLESPACE "TABLESPACE_DEFAULT",
TEMPORARY_TABLESPACE "TABLESPACE_TEMPORAL"
from dba_users
where (default_tablespace ='SYSTEM'
or temporary_tablespace = 'SYSTEM')
and username not in ('SYS','SYSTEM')
order by DEFAULT_TABLESPACE, TEMPORARY_TABLESPACE, USERNAME;
PROMP
PROMP
PROMP
PROMP
PROMP
PROMP
PROMP ***************************************************************************************************
PROMP ************ VEMOS LA CANTIDAD DE OBJETOS EN EL TABLESPACE SYSTEM Y A QUIEN PERTENECEN ************
PROMP ***************************************************************************************************
set pagesize 66
col owner format a20;
col cantidad format 9999;
select OWNER,
count(1) "Cantidad"
from dba_segments
where TABLESPACE_NAME = 'SYSTEM'
and OWNER not in ('SYS','SYSTEM')
group by owner
order by OWNER;
PROMP
PROMP
PROMP
PROMP
PROMP
PROMP
PROMP *****************************************************************************
PROMP ************ VEMOS TODOS LOS TABLESPACES QUE NECESITAN AMPLIARSE ************
PROMP *****************************************************************************
set pages 999 lines 100
col "Tablespace" for a50
col "Size MB" for 999999999
col "%Used" for 999
col "Add (80%)" for 999999
select tsu.tablespace_name "Tablespace"
, ceil(tsu.used_mb) "Size MB"
, 100 - floor(tsf.free_mb/tsu.used_mb*100) "%Used"
, ceil((tsu.used_mb - tsf.free_mb) / .8) - tsu.used_mb "Add (80%)"
from (select tablespace_name, sum(bytes)/1024/1024 used_mb
from dba_data_files group by tablespace_name) tsu
, (select ts.tablespace_name
, nvl(sum(bytes)/1024/1024, 0) free_mb
from dba_tablespaces ts, dba_free_space fs
where ts.tablespace_name = fs.tablespace_name (+)
group by ts.tablespace_name) tsf
where tsu.tablespace_name = tsf.tablespace_name (+)
and 100 - floor(tsf.free_mb/tsu.used_mb*100) >= 80
order by 3,4
/
PROMP
PROMP
PROMP
PROMP
PROMP
PROMP
PROMP *****************************************************************
PROMP ************ VEMOS QUE TABLAS NO TIENEN ESTADISTICAS ************
PROMP *****************************************************************
set pagesize 66
select OWNER,
sum(decode(nvl(NUM_ROWS,9999), 9999,0,1)) "Analyzed",
sum(decode(nvl(NUM_ROWS,9999), 9999,1,0)) "Not Analyzed",
count(TABLE_NAME) "Total"
from dba_tables
where OWNER not in ('SYS', 'SYSTEM')
group by OWNER
having sum(decode(nvl(NUM_ROWS,9999), 9999,1,0)) != 0;
PROMP
PROMP
PROMP
PROMP
PROMP
PROMP
PROMP **********************************************************************
PROMP ************ VEMOS LAS TABLAS QUE TIENEN MAS DE 5 INDICES ************
PROMP **********************************************************************
set pagesize 66
select OWNER,
TABLE_NAME,
COUNT(1)
from dba_indexes
where OWNER not in ('SYS','SYSTEM')
group by OWNER, TABLE_NAME
having COUNT(*) > 5
order by COUNT(*) desc, OWNER, TABLE_NAME;
PROMP
PROMP
PROMP
PROMP
PROMP
PROMP
PROMP ******************************************************************
PROMP ************ VEMOS LOS OBJETOS CON MAS DE 100 EXTENTS ************
PROMP ******************************************************************
set linesize 150
col OWNER format A20
col SEGMENT_NAME format A30
SELECT OWNER, SEGMENT_NAME, TABLESPACE_NAME, COUNT(*) EXT
FROM DBA_EXTENTS
GROUP BY OWNER, SEGMENT_NAME, TABLESPACE_NAME
HAVING COUNT(*) > 100
/
PROMP
PROMP
PROMP
PROMP
PROMP
PROMP
PROMP ******************************************************************
PROMP ************ VEMOS LOS OBJETOS CON EXTENTS PELIGROSOS ************
PROMP ******************************************************************
set linesize 500
col TABLESPACE_NAME format a30
col SEGMENT_NAME format a30
select tablespace_name Tablespace_Name, segment_name Segment_Name,
segment_type Segment_Type, next_extent Next_Extent
from dba_segments a
where next_extent >
(
select max(bytes) from dba_free_space b
where a.tablespace_name = b.tablespace_name
);
PROMP
PROMP ************************************************************
PROMP ************ FIN DEL CONTROL GENERAL DE LA BASE ************
PROMP ************************************************************
PROMP
PROMP °°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°
PROMP °°°°°°°°°°°°°°°°°°°°°°°° CREADO POR °°°°°°°°°°°°°°°°°°°°°°°°
PROMP °°°°°°°°°°°°°°°°°° MARCELO PATRICIO BUORA °°°°°°°°°°°°°°°°°°
PROMP °°°°°°°°°°°°°°°°°°°°°°°° ALIAS TUKA °°°°°°°°°°°°°°°°°°°°°°°°
PROMP °°°°°°°°°°°°°° AÑO 2012 Y MODIFICADO EN 2013 °°°°°°°°°°°°°°°
PROMP °°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°
PROMP °°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°
Agradecer no cuesta nada, si te sirvio dejame algun puntito asi subo de rango y puedo dejar comentarios en otros post, gracias.