Database Information Script


 Database Information Script


-- -----------------------------------------------------------

-- Find Database Info


--find_db_info.sql


--to run : goto sqlplus and run

--@/path/to/your/find_db_info.sql

-- -----------------------------------------------------------


set echo off

set lines 140

set pages 2000


COLUMN spool_file NEW_VALUE spool_file NOPRINT


SELECT HOST_NAME || '_' || name || '_db_status_'

       || TO_CHAR (SYSDATE,

                   'YYYY_MM_DD_hh24mi',

                   'NLS_DATE_LANGUAGE=''AMERICAN''')

       || '.log'

          AS spool_file

  FROM v$database, v$instance;


SPOOL &spool_file


col YYYYMMDD  for a15 heading "YYYY-MM-DD"

col Date_Time for a25 heading "Date and Time"


select to_char(sysdate,'YYYY-MM-DD') YYYYMMDD, to_char(sysdate,'DD-Mon-YY HH24:MI:SS') Date_Time from dual;


prompt =====================================

prompt Database Info

prompt =====================================


col host_name       for a20 heading "Host Name"

col DB_Name         for a13 heading "DB Name"

col version         for a10 heading "DB Version"

col LOG_MODE        for a15 heading "Log Mode"

col Started_Time    for a20 heading "Started Time"

col FLASHBACK_ON    for a15 heading "Flashback"

col db_created_date for a18 heading "DB Created Date"


col platform_name for a25


SELECT host_name,

       NAME DB_Name,

       version,

       TO_CHAR(CREATED,'DD/Mon/YYYY HH24:MI') db_created_date,

       platform_name

  FROM V$database,

       V$instance;


SELECT NAME DB_Name,

       LOG_MODE "Log Mode",

       OPEN_MODE,

       FLASHBACK_ON,

       PROTECTION_MODE,

       TO_CHAR(STARTUP_TIME,'DD/MM/YYYY HH24:MI:SS') Started_Time,

       ROUND(SYSDATE - STARTUP_TIME,2) "Days Up"

  FROM V$database,

       V$instance;


prompt =====================================

prompt Importent Parameter Values

prompt =====================================


col name  for a35 heading "Parameter Name";

col value for a90;


SELECT name, VALUE

  FROM v$parameter

 WHERE name IN

          ('db_name',

           'db_unique_name',

           'global_names',

           'db_block_size',

           'db_file_multiblock_read_count',

           'control_file_record_keep_time',

           'cursor_sharing',

           'open_cursors',

           'processes',

           'statistics_level',

           'os_authent_prefix',

           'deferred_segment_creation',

           'memory_max_target',

           'memory_target',

           'sga_max_size',

           'sga_target',

           'pga_aggregate_target',

           'processes',

           'compatible',

           'remote_login_passwordfile',

           'sec_case_sensitive_logon',

           'sort_area_retained_size',

           'sort_area_size',

           'workarea_size_policy',

           'log_buffer',

           'job_queue_processes',

           'audit_trail',

           'local_listener',

           'remote_listener',

           'timed_statistics',

           'undo_management',

           'undo_retention',

           'undo_tablespace',

           'recyclebin')

  AND value is not null

ORDER BY 1;



SELECT name, VALUE

  FROM v$parameter

 WHERE name IN

          ('spfile',

           'ifile',

           'diagnostic_dest',

           'background_dump_dest',

           'user_dump_dest',

           'audit_file_dest',

           'utl_file_dir',

           'archive_lag_target',

           'fal_client',

           'fal_server',

           'dg_broker_config_file1',

           'dg_broker_config_file2',

           'dg_broker_start',

           'log_archive_format',

           'log_archive_dest_1',

           'log_archive_dest_2',

           'log_archive_dest_3',

           'log_archive_dest_4',

           'log_archive_dest_5',

           'log_archive_dest_state_1',

           'log_archive_dest_state_2',

           'log_archive_dest_state_3',

           'log_archive_dest_state_4',

           'log_archive_dest_state_5',

           'db_recovery_file_dest',

           'db_recovery_file_dest_size',

           'db_flashback_retention_target',

           'db_file_name_convert',

           'db_create_file_dest',

           'db_create_online_log_dest_1',

           'db_create_online_log_dest_2',

           'db_create_online_log_dest_3',

           'standby_file_management')

  AND value is not null

ORDER BY 1;



prompt =====================================

prompt Database Property Info

prompt =====================================


col PROPERTY_NAME for a30

col PROPERTY_VALUE for a40


  SELECT PROPERTY_NAME, PROPERTY_VALUE

    FROM database_properties

ORDER BY 1;



prompt =====================================

prompt Users Info

prompt =====================================


col account_status for a25

col username for a25

col profile for a20

BREAK ON account_status on profile SKIP 0;


SELECT d.account_status,

       d.profile,

       d.username,

       u.password,

       d.created

  FROM dba_users d, SYS.USER$ U

 WHERE U.NAME = D.USERNAME

 ORDER BY 1,2,3;



prompt =====================================

prompt Find DB and Tablespace Space Details

prompt =====================================


set lines 140

set pages 2000


COL NAME           FOR A12     HEADING "DB Name";

COL OPEN_MODE      FOR A12     HEADING "Open Mode";

COL HOST_NAME      FOR A15     HEADING "Server";

COL VERSION        FOR A12     HEADING "Version";

COL Processes      FOR A10     HEADING 'Processes'

COL TABLESPACE     FOR A25     HEADING 'Tablespace Name'

COL FILE_NAME      FOR A55     HEADING 'File Name'

COL AUTOEXTENSIBLE FOR A6      HEADING 'Auto|Extend'

COL MAX_BYTES      FOR 999999,990 HEADING 'Max.File|Ext.Size'

COL SIZEMB         FOR 999999,990 HEADING 'TBS.Size| (MBs)'

COL USEDMB         FOR 9999,990 HEADING 'Used.Size| (MBs)'

COL FREEMB         FOR 999,990 HEADING 'Free.Size| (MBs)'

COL FILE_SIZE      FOR 999999,990 HEADING 'Data.File|Size(MBs)'

COL PCT_USED       FOR 990.00  HEADING 'TBS.%|Used'

COL PCT_FREE       FOR 990.00  HEADING 'TBS.%|Free'

COL MAX_USED       FOR 990.00  HEADING 'Max.File|Ext.%Used'



select

(select round(sum(bytes/1073741824),2) from dba_data_files) "DataFile(GBs)",

(select NVL(sum(bytes/1048576),0) from dba_temp_files) "Temp Mb",

(select sum(bytes/1048576)*max(members) from v$log) "Redo Mb",

(select count(*) from v$log) "Redo Group",

round(((select sum(bytes/1048576) from dba_data_files) +

(select NVL(sum(bytes/1048576),0) from dba_temp_files) +

(select sum(bytes/1048576)*max(members) from v$log)) / 1024,2) "Tot.DB Size(GBs)",

(select round(to_number(value) / 1024/1024,2) from v$parameter where name = 'sga_max_size') "SGA Size",

(select count(*) from dba_users) "Users",

(select value from v$parameter where name like 'processes') ||

  (select TO_CHAR(count(*),99999) from v$session where username is not null) as Processes

from dual;


SELECT * FROM (

 SELECT d.tablespace_name tablespace,

        ROUND(A.MAX_BYTES,2) MAX_BYTES,

        NVL  (a.BYTES, 0) / 1024 / 1024 SizeMB,

        ROUND (NVL (a.BYTES - NVL (f.BYTES, 0), 0) / 1024 / 1024, 2) UsedMB,

        ROUND ((NVL (a.BYTES, 0) - NVL (a.BYTES - NVL (f.BYTES, 0), 0)) / 1024/1024,2) FreeMB,

        ROUND (NVL ((a.BYTES - NVL (f.BYTES, 0)) / a.BYTES * 100, 0), 2) pct_used,

        ROUND (100 - NVL ((a.BYTES - NVL (f.BYTES, 0)) / a.BYTES * 100, 0), 2) pct_free,

        ROUND (100 - ((A.max_bytes - ROUND (NVL (a.BYTES - NVL (f.BYTES, 0), 0) / 1024 / 1024, 2)) / A.max_bytes * 100), 2) MAX_USED

   FROM SYS.dba_tablespaces d,

        (SELECT tablespace_name, SUM (BYTES) BYTES,

                SUM(DECODE(NVL(MAXBYTES,0),0,BYTES,MAXBYTES)) / 1024/1024 MAX_BYTES

           FROM dba_data_files

          GROUP BY tablespace_name) a,

        (SELECT tablespace_name, SUM (BYTES) BYTES

           FROM dba_free_space

          GROUP BY tablespace_name) f

  WHERE d.tablespace_name = a.tablespace_name(+)

        AND d.tablespace_name = f.tablespace_name(+)

        AND d.CONTENTS NOT IN ('TEMPORARY')

--        AND (NVL ((a.BYTES - NVL (f.BYTES, 0)) / a.BYTES * 100, 0) >= 95)   -- TBS PCD_USED

  ORDER BY 8 desc

);




COL TABLESPACE     FOR a25     HEADING 'Tablespace Name'

COL FILE_NAME      FOR A65     HEADING 'File Name'

COL AUTOEXTENSIBLE FOR A6      HEADING 'Auto|Extend'

--COL MAX_SIZE       FOR 999,990 HEADING 'Maximun |Ext.size'

COL FILE_SIZE      FOR 999,990 HEADING 'Data.File|Size(MBs)'

--COL FREE_MBS       FOR 999,990 HEADING 'Free.MBS'


BREAK ON TABLESPACE SKIP 0;



SELECT * FROM

(

SELECT A1.TABLESPACE_NAME tablespace,

       A1.FILE_NAME,

       A1.AUTOEXTENSIBLE,

       A1.MAXBYTES / 1024/1024 MAX_BYTES,

       A1.BYTES/1024/1024 AS FILE_SIZE,

       nvl(B.FREEMB,0) as FREEMB

  FROM DBA_DATA_FILES A1,

       (SELECT FILE_ID,

               SUM(BYTES)/1024/1024 AS FREEMB

          FROM DBA_FREE_SPACE

         GROUP BY FILE_ID) B

 WHERE A1.FILE_ID = B.FILE_ID(+) AND

       A1.TABLESPACE_NAME IN

(

SELECT tablespace FROM (

SELECT   d.tablespace_name tablespace,

         ROUND(A.MAX_BYTES,2) MAX_BYTES,

         NVL  (a.BYTES, 0) / 1024 / 1024 SizeMB,

         ROUND (NVL (a.BYTES - NVL (f.BYTES, 0), 0) / 1024 / 1024, 2) UsedMB,

         ROUND ((NVL (a.BYTES, 0) - NVL (a.BYTES - NVL (f.BYTES, 0), 0)) / 1024/1024,2) FreeMB,

         ROUND (NVL ((a.BYTES - NVL (f.BYTES, 0)) / a.BYTES * 100, 0), 2) pct_used,

         ROUND (100 - NVL ((a.BYTES - NVL (f.BYTES, 0)) / a.BYTES * 100, 0), 2) pct_free,

         ROUND (100 - ((A.max_bytes - ROUND (NVL (a.BYTES - NVL (f.BYTES, 0), 0) / 1024 / 1024, 2)) / A.max_bytes * 100), 2) MAX_USED

    FROM SYS.dba_tablespaces d,

         (SELECT   tablespace_name, SUM (BYTES) BYTES, SUM(MAXBYTES) / 1024/1024 MAX_BYTES

              FROM dba_data_files

          GROUP BY tablespace_name) a,

         (SELECT   tablespace_name, SUM (BYTES) BYTES

              FROM dba_free_space

          GROUP BY tablespace_name) f

   WHERE d.tablespace_name = a.tablespace_name(+)

     AND d.tablespace_name = f.tablespace_name(+)

     AND d.CONTENTS NOT IN ('TEMPORARY')

--     AND ROUND (100 - ((A.max_bytes - ROUND (NVL (a.BYTES - NVL (f.BYTES, 0), 0) / 1024 / 1024, 2)) / A.max_bytes * 100), 2) > 50

)

))

ORDER BY TABLESPACE,FILE_NAME;


COL TABLESPACE     FOR A15     HEADING 'Tablespace Name'

COL FILE_NAME      FOR A60     HEADING 'File Name'

col status for a12



select tablespace_name tablespace,file_name,AUTOEXTENSIBLE,MAXBYTES/1024/1024 MAX_BYTES,

bytes/1024/1024 FILE_SIZE,user_bytes/1024/1024 USEDMB,status

from dba_temp_files

order by 1,2;


prompt =====================================

prompt Control Files Info

prompt =====================================


col name for a60

col status for a10


select name,status from v$controlfile;



prompt =====================================

prompt Log Files Info

prompt =====================================


col member for a60

col status for a12

col type for a12

col thread# for 9999

col group# for 9999



SELECT l.thread#,

       l.group#,

       lf.MEMBER,

       l.bytes / 1024 / 1024 Size_MB,

       l.status,

       lf.TYPE

  FROM v$log l, v$logfile lf

 WHERE l.group# = lf.group#

 order by 1,2,3;


prompt =====================================

prompt DBA Directories

prompt =====================================


col owner for a20

col directory_name for a25

col directory_path for a55


select * from dba_directories order by owner,directory_name;



prompt =====================================

prompt DB Components and Objects status Info

prompt =====================================


col comp_name     for a50;

col version       for a15;

col status        for a15;

col owner         for a25

col object_name   for a30;

col object_type   for a25;

col action_time   for a30

col action        for a10

col namespace     for a10

col version       for a12

col bundle_series for a15

col comments      for a25


select comp_name,version,status from DBA_REGISTRY order by status,comp_name;

select action_time,action,namespace,version,bundle_series,comments from dba_registry_history order by 1 desc;

-- select action_time,action,namespace,version,comments from dba_registry_history order by 1 desc;


break on owner skip 0;


select owner,object_type,count(*) from dba_objects where status='INVALID' group by owner,object_type order by 1,2;

select owner,object_type,object_name from dba_objects where status='INVALID' order by 1,2,3;


clear break;


prompt =====================================

prompt Datafiles with unrecoverable changes

prompt =====================================


set pages 2000

set lines 150


break on tablespace_name skip 0


col tablespace_name for a20

col file_name for a60

col  UNRECOVERABLE_CHANGE# for 99999999999999999

col unrecover_time for a20



select df.tablespace_name,

       df.file_name,

       to_char(v.unrecoverable_time,'DD-Mon-YY HH24:MI') unrecover_time,

       v.unrecoverable_change#,

       b.time

  from dba_data_files df,

       v$datafile     v,

       v$backup b

 where v.file# = df.file_id

       and v.file# = b.file#

       and v.unrecoverable_change# > 0

       and (b.time is null or b.change# < v.unrecoverable_change#)

order by tablespace_name, file_name

/


clear break;


prompt =====================================

prompt Recyclebin Objects count

prompt =====================================


SELECT OWNER,COUNT(*) FROM DBA_RECYCLEBIN GROUP BY owner ORDER BY owner;


select to_char(sysdate,'YYYY-MM-DD') YYYYMMDD, to_char(sysdate,'DD-Mon-YY HH24:MI:SS') Date_Time from dual;


spool off;



Akash

I am working as a Data Engineer

Post a Comment

Previous Post Next Post