Mir Sayeed Hassan – Oracle Blog

Oracle DBA – Tips & Techniques | Learn with real-time examples

  • Translate

  • It’s Me






  • My Certificates

  • Links

    My Acclaim Certification : Credly Profile
    My Oracle ACE Pro Profile

  • Achievements

    Awarded Top 100 Oracle Blogs from Worldwide - #RANK 39
  • VISITORS COUNT

  • Verified International Academic Qualification from World Education Service (WES)

    Verified International Academic Qualification from World Education Service (WES)

  • Jobs

Find the Quick General query as per your requirement

Posted by Mir Sayeed Hassan on October 4th, 2017

Find the Quick General query as per your requirement

Find the status of the database

SQL> select status from v$instance;

STATUS
------------
OPEN
SQL> select database_status from v$instance;

DATABASE_STATUS
-----------------
ACTIVE

Or – To get the complete details of DB

SQL> select * from v$instance;

INSTANCE_NUMBER INSTANCE_NAME
-------------- ----------------
HOST_NAME
----------------------------------------------------------------
VERSION           STARTUP_T STATUS       PAR    THREAD# ARCHIVE LOG_SWITCH_WAIT
---------------- --------- ------------ --- ---------- ------- ---------------
LOGINS     SHU DATABASE_STATUS   INSTANCE_ROLE      ACTIVE_ST BLO
---------- --- ----------------- ------------------ --------- ---
1 testdb
testdb.local
11.2.0.4.0        17-AUG-17 OPEN         NO           1 STARTED
ALLOWED    NO  ACTIVE            PRIMARY_INSTANCE   NORMAL    NO

Find the uptime of the database using sqlplus

SQL> select 'Hostname : ' || host_name ,'Instance Name : ' || instance_name ,'Started At : ' || to_char(startup_time,'DD-MON-YYYY HH24:MI:SS') stime ,'Uptime : ' || floor(sysdate - startup_time) || ' days(s) ' || trunc( 24*((sysdate-startup_time) - trunc(sysdate-startup_time))) || ' hour(s) ' ||  mod(trunc(1440*((sysdate-startup_time) - trunc(sysdate-startup_time))), 60) ||' minute(s) ' || mod(trunc(86400*((sysdate-startup_time) -  trunc(sysdate-startup_time))), 60) ||' seconds' uptime from sys.v_$instance;

'HOSTNAME:'||HOST_NAME
---------------------------------------------------------------------------
'INSTANCENAME:'||INSTANCE_NAME   STIME
-------------------------------- ------------------------------------------
UPTIME
--------------------------------------------------------------------------------
Hostname : testdb.local
Instance Name : testdb           Started At : 17-AUG-2017 16:02:08
Uptime : 33 days(s) 23 hour(s) 39 minute(s) 50 seconds

Or

SQL> SELECT to_char(logon_time,'DD/MM/YYYY HH24:MI:SS') FROM v$session WHERE sid=1;

TO_CHAR(LOGON_TIME,
-------------------
17/08/2017 16:02:10

 Find the Complete size of the database usage

SQL> col "Database Size" format a20
SQL>col "Free space" format a20
SQL>col "Used space" format a20
SQL>select round(sum(used.bytes) / 1024 / 1024 / 1024 ) || ' GB' "Database Size"
 , round(sum(used.bytes) / 1024 / 1024 / 1024 ) -
 round(free.p / 1024 / 1024 / 1024) || ' GB' "Used space"
 , round(free.p / 1024 / 1024 / 1024) || ' GB' "Free space"
 from (select bytes
 from v$datafile
 union all
 select bytes
 from v$tempfile
 union all
 select bytes
 from v$log) used
 , (select sum(bytes) as p
 from dba_free_space) free
 group by free.p
 /
Database Size        Used space           Free space
-------------------- -------------------- --------------------
46 GB                39 GB                7 GB

Find the dblink information as shown below:

SQL> SELECT DB_LINK, USERNAME, HOST FROM ALL_DB_LINKS;

DB_LINK  USERNAME  HOST
-------------------------------------------------------------------------------
MYLINK MIR REMOTEDB

Find the IO progress of the query

SQL> select * from v$sess_io;

SID BLOCK_GETS CONSISTENT_GETS PHYSICAL_READS BLOCK_CHANGES CONSISTENT_CHANGES OPTIMIZED_PHYSICAL_READS
---------- ---------- --------------- -------------- ------------- ------------------ ------------------------
1          0               0              0             0                  0                        0
2          0               0              0             0                  0                        0
3          0               0              0             0                  0                        0
4       8267           24801              0             0                  0                        0

Find the nls database set

SQL> select * from nls_database_parameters;

PARAMETER                      VALUE
------------------------------ --------------------------------
NLS_LANGUAGE                   AMERICAN
NLS_TERRITORY                  AMERICA
NLS_CURRENCY                   $
NLS_ISO_CURRENCY               AMERICA
NLS_NUMERIC_CHARACTERS         .,
NLS_CHARACTERSET               AL32UTF8
NLS_CALENDAR                   GREGORIAN
NLS_DATE_FORMAT                DD-MON-RR
NLS_DATE_LANGUAGE              AMERICAN
NLS_SORT                       BINARY
NLS_TIME_FORMAT                HH.MI.SSXFF AM
PARAMETER                      VALUE
------------------------------ ----------------------------------------------------------------------------------------------------------------------------------------------------------------
NLS_TIMESTAMP_FORMAT           DD-MON-RR HH.MI.SSXFF AM
NLS_TIME_TZ_FORMAT             HH.MI.SSXFF AM TZR
NLS_TIMESTAMP_TZ_FORMAT        DD-MON-RR HH.MI.SSXFF AM TZR
NLS_DUAL_CURRENCY              $
NLS_COMP                       BINARY
NLS_LENGTH_SEMANTICS           BYTE
NLS_NCHAR_CONV_EXCP            FALSE
NLS_NCHAR_CHARACTERSET         AL16UTF16
NLS_RDBMS_VERSION              11.2.0.4.0

Or

SQL> select value from NLS_DATABASE_PARAMETERS  where parameter='NLS_CHARACTERSET';

VALUE
----------------------------------------------------------------------------------------------------------------------------------------------------------------
AL32UTF8

Find the privilege of the users in the oracle database:

SQL> select GRANTEE, PRIVILEGE , ADMIN_OPTION from dba_sys_privs where GRANTEE='MIR';

GRANTEE                        PRIVILEGE                                ADM
------------------------------ ---------------------------------------- ---
MIR                            UNLIMITED TABLESPACE               NO

Note: If you omit where clause, you can view all the users

Find the auto extend tablespaces:

SQL> select substr(file_name,1,50), AUTOEXTENSIBLE from dba_data_files;

SUBSTR(FILE_NAME,1,50)                                   AUTO
-------------------------------------------------------------------
/u01/app/oracle/oradata/prim/users01.dbf                                                                                                                                                             YES
/u01/app/oracle/oradata/prim/undotbs01.dbf                                                                                                                                                         YES
/u01/app/oracle/oradata/prim/sysaux01.dbf                                                                                                                                                          YES

Or

SQL> select   'alter database datafile '||   file_name ||   ' '| |    ' autoextend on maxsize unlimited;' from    dba_data_files;

'ALTERDATABASEDATAFILE'||FILE_NAME||''||'AUTOEXTENDONMAXSIZEUNLIMITED;'
------------------------------------------------------------------------------------------------------------------------------------------------
alter database datafile /u01/app/oracle/oradata/prim/users01.dbf  autoextend on maxsize unlimited;
alter database datafile /u01/app/oracle/oradata/prim/undotbs01.dbf  autoextend on maxsize unlimited;
alter database datafile /u01/app/oracle/oradata/prim/sysaux01.dbf  autoextend on maxsize unlimited;
Etc...

Find the date wise archive log generated in a oracle database:

SQL> select trunc(COMPLETION_TIME) TIME, SUM(BLOCKS * BLOCK_SIZE)/1024/1024 SIZE_MB from V$ARCHIVED_LOG group by trunc (COMPLETION_TIME) order by 1;

TIME         SIZE_MB
--------- ----------
02-SEP-17 174.628906
03-SEP-17 196.592773
04-SEP-17 140.374023
05-SEP-17 175.258789
06-SEP-17 148.604492 ….

Find the existing created in database

SQL> select * from all_objects where object_type ='DIRECTORY';

OWNER                          OBJECT_NAME                    SUBOBJECT_NAME                  OBJECT_ID DATA_OBJECT_ID OBJECT_TYPE         CREATED   LAST_DDL_ TIMESTAMP           STATUS  T G S  NAMESPACE EDITION_NAME
------------------------------ ------------------------------ ------------------------------ ---------- -------------- ------------------- --------- --------- ------------------- ------- - - - ---------- ------------------------------
SYS     ORACLE_OCM_CONFIG_DIR   13744    DIRECTORY           24-AUG-13 20-JAN-16 2016-01-17:05:53:28 VALID   N N N    9
SYS     DUMPFILE                                   53019   DIRECTORY           17-AUG-16 28-AUG-16 2016-08-17:08:08:59 VALID   N N N   9
SYS     NEWDUMP                                 153291 DIRECTORY           28-AUG-16 28-AUG-16 2016-08-28:03:43:07 VALID   N N N    9

Or

SQL> SELECT owner, directory_name, directory_path FROM all_directories;

OWNER                          DIRECTORY_NAME                 DIRECTORY_PATH
SYS                            DAILY_DUMP_BACKUP              /backup/daily_dump_backup
SYS                            DUMPFILE_DB                             /tmp/dumpfile_db
SYS                            TABLE_MPG                                 /tmp/table_mpg

Find the active session in oracle database

SQL> SELECT SID, Serial#, UserName, Status, SchemaName, Logon_Time FROM V$Session WHERE Status='ACTIVE' AND UserName IS NOT NULL;

SID    SERIAL# USERNAME        STATUS   SCHEMANAME    LOGON_TIM
---------- ---------- ------------------------------ -------- ------------------------------ ---------
719       4983 SYS                            ACTIVE   SYS                            18-SEP-17

Or

Find the count of session is active in database

SQL> Select count (*) From V$session where status='ACTIVE';

COUNT (*)
----------
49

Or

Find the individual user

SQL> select sid, serial#, status from v$session where username='MIR';
no rows selected

Find the no of process in database

SQL> select username, program from v$process;

USERNAME        PROGRAM

--------------- ------------------------------------------------
PSEUDO
oracle          oracle@ogg-test1 (PMON)
oracle          oracle@ogg-test1 (PSP0)
oracle          oracle@ogg-test1 (VKTM) ……

Find the process, stat and cpu usage

SQL> select
 ss.username,
 se.SID,
 VALUE/100 cpu_usage_seconds
 from
 v$session ss,
 v$sesstat se,
 v$statname sn
 where
 se.STATISTIC# = sn.STATISTIC#
 and
 NAME like '%CPU used by this session%'
 and
 se.SID = ss.SID
 and
 ss.status='ACTIVE'
 and
 ss.username is not null
 order by VALUE desc;

USERNAME                              SID CPU_USAGE_SECONDS
------------------------------ ---------- -----------------
SYS                                   719              2.41
SYS                                   719                 0

Or

SQL> select pname, pval1 from sys.aux_stats$;

PNAME                               PVAL1
------------------------------ ----------
STATUS
DSTART
DSTOP
FLAGS                                   1
CPUSPEEDNW                     3074.07407
IOSEEKTIM                              10
IOTFRSPEED                           4096
SREADTIM
MREADTIM
CPUSPEED
MBRC
PNAME                               PVAL1
------------------------------ ----------
MAXTHR
SLAVETHR

Get the Sysdate, Time etc…

SQL> Select sysdate from dual;

SYSDATE
---------
18-SEP-17
SQL> select to_char(sysdate, 'dd-mm-yyyy hh24:mi:ss') date_and_time from dual;

DATE_AND_TIME
------------------
18-09-2017 14:50:39
SQL> SELECT sessiontimezone FROM DUAL;

SESSIONTIMEZONE
---------------------------------------------------------------------------
+04:30
SQL> SELECT SYSTIMESTAMP(3) FROM   dual;

SYSTIMESTAMP(3)
---------------------------------------------------------------------------
18-SEP-17 02.52.32.633 PM +04:30

Find out the audit information in Oracle database

 SQL> Show parameter audit

NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
audit_file_dest                      string      /u01/app/oracle/admin/prim/adu
mp
audit_sys_operations                 boolean     FALSE
audit_syslog_level                   string
audit_trail                          string      DB

Find the datadump jobs status

SQL> select * from dba_datapump_jobs;

OWNER_NAME                     JOB_NAME                       OPERATION                                                                                                                JOB_MODE   STATE                               DEGREE ATTACHED_SESSIONS DATAPUMP_SESSIONS

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

SYSTEM                         SYS_EXPORT_SCHEMA_02           EXPORT                                                                                                                   SCHEMA     NOT RUNNING                              0                 0                 0

Find the database running with SPFILE or Not

SQL> SELECT DECODE(value, NULL, 'PFILE', 'SPFILE') "Init File Type" FROM sys.v_$parameter WHERE name = 'spfile';

Init F
------
SPFILE

Or

SQL> show parameter spfile

NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
spfile                               string      /u01/app/oracle/product/11.2.0
/dbhome_1/dbs/spfiletestdb.ora

Find the redolog size currently used in Oracle database

SQL> select  a.GROUP#,   a.THREAD#,  a.SEQUENCE#,   a.ARCHIVED,   a.STATUS, b..MEMBER  as redolog_file_name,

(a.BYTES/1024/1024) AS SIZE_MB  FROM v$log a  JOIN v$logfile b ON a.Group#=b.Group#  ORDER BY a.GROUP#  asc;

GROUP#    THREAD#  SEQUENCE# ARC STATUS           REDOLOG_FILE_NAME                                     SIZE_MB
---------- ---------- ---------- --- ---------------- -------------------------------------------------- ----------
1          1      11108 NO  CURRENT          /u01/app/oracle/oradata/prim/redo01.log                    50
2          1      11106 YES INACTIVE         /u01/app/oracle/oradata/prim/redo02.log                    50
3          1      11107 YES INACTIVE         /u01/app/oracle/oradata/prim/redo03.log                    50

Find the status of all the background process in Oracle database

SQL> select FUNCTION_ID, FUNCTION_NAME from v$iostat_function order by FUNCTION_ID;

FUNCTION_ID FUNCTION_NAME

----------- ------------------
0 RMAN
1 DBWR
2 LGWR
3 ARCH
4 XDB
5 Streams AQ
6 Data Pump
7 Recovery
8 Buffer Cache Reads
9 Direct Reads
10 Direct Writes
FUNCTION_ID FUNCTION_NAME
----------- ------------------
11 Smart Scan
12 Archive Manager
13 Others
14 rows selected.

Find the status of the user password expired in oracle database

USERNAME                       ACCOUNT_STATUS
------------------------------ --------------------------------
FLOWS_FILES                    EXPIRED & LOCKED
MDSYS                          EXPIRED & LOCKED
ORDSYS                         EXPIRED & LOCKED
EXFSYS                         EXPIRED & LOCKED
WMSYS                          EXPIRED & LOCKED   Etc……

Find the size of the asm disk group using sqlplus

SQL> select GROUP_NUMBER,TOTAL_MB,FREE_MB from v$ASM_DISKGROUP;

GROUP_NUMBER   TOTAL_MB    FREE_MB
------------ ---------- ----------
1                               11072     1204
2                               57192     5724

Find the blocking session in database

SQL> SELECT
s.blocking_session,
s.sid,
s.serial#,
s.seconds_in_wait
FROM
v$session s
WHERE
blocking_session IS NOT NULL;
no rows selected

Find the lock session in database

SQL> select * from v$lock where block=1;
no rows selected

or

SQL> select count(*) from gv$lock where block=1;

COUNT(*)
----------
0

Find the status of the Oracle 12c database

SQL> select name, cdb, con_id from v$database;

NAME      CDB     CON_ID
--------- --- ----------
ORA12C    YES          0
SQL> select instance_name, status, con_id from v$instance;

INSTANCE_NAME    STATUS           CON_ID
---------------- ------------ ----------
ora12c           OPEN                  0
SQ> select NAME, OPEN_MODE from v$pdbs;

NAME                           OPEN_MODE
------------------------------ ----------
PDB$SEED                       READ ONLY
PDBORCL                        READ WRITE
PDB2                                READ WRITE

Find out which SQL Query is currently in waiting stage

SQL> select
sid,
sql_text
from
v$session s,
v$sql q
where
sid in
(select
sid
from
v$session
where
state in ('WAITING')
and
wait_class != 'Idle'
and
event='enq: TX - row lock contention'
and
(q.sql_id = s.sql_id or q.sql_id = s.prev_sql_id));
no rows selected

Find out the estimated size for sga assign in database

SQL> select estd_db_time_factor,sga_size ,sga_size_factor from v$sga_target_advice order by sga_size;

ESTD_DB_TIME_FACTOR   SGA_SIZE SGA_SIZE_FACTOR

------------------- ---------- ---------------
12.6709       1176              .5
1.8269        1764             .75
1              2352               1
.99            2940            1.25
.9892         3528             1.5
.9892         4116            1.75
.9892         4704               2
7 rows selected.

Or

SQL> desc v$sga_target_advice

Name                                      Null?    Type
----------------------------------------- -------- ----------------------------
SGA_SIZE                                           NUMBER
SGA_SIZE_FACTOR                           NUMBER
ESTD_DB_TIME                                NUMBER
ESTD_DB_TIME_FACTOR                NUMBER
ESTD_PHYSICAL_READS                   NUMBER

Find the ASM Disk group usuage

ASMCMD> lsdg
State    Type    Rebal  Sector  Block       AU  Total_MB  Free_MB  Req_mir_free_MB  Usable_file_MB  Offline_disks  Voting_files  Name
MOUNTED  EXTERN  N         512   4096  1048576      5114     5055                0            5055              0             N  CRS/
MOUNTED  EXTERN  N         512   4096  1048576      5114     1796                0            1796              0             N  DATA/
MOUNTED  EXTERN  N         512   4096  1048576      5114     1696                0            1696              0             N  FRA/

Or

Sql>  SELECT g.group_number  "Group" ,      g.name          "Group Name" ,      g.state         "State" ,      g.type          "Type" ,      g.total_mb/1024 "Total GB" ,      g.free_mb/1024  "Free GB" ,      100*(max((d.total_mb-d.free_mb)/d.total_mb)-min((d.total_mb-d.free_mb)/d.total_mb))/max((d.total_mb-d.free_mb)/d.total_mb) "Imbalance" ,      100*(max(d.total_mb)-min(d.total_mb))/max(d.total_mb) "Variance" ,      100*(min(d.free_mb/d.total_mb)) "MinFree" ,      100*(max(d.free_mb/d.total_mb)) "MaxFree" ,      count(*)        "DiskCnt" FROM v$asm_disk d, v$asm_diskgroup g WHERE d.group_number = g.group_number and d.group_number<> 0 and d.state = 'NORMAL' and d.mount_status = 'CACHED' GROUP BY g.group_number, g.name, g.state, g.type, g.total_mb, g.free_mb ORDER BY 1;

Or

SQL> set pagesize 2000
Set lines 2000
set long 999
col path for a54
SQL> select name, path, header_status, total_mb free_mb, trunc(bytes_read/1024/1024) read_mb, trunc(bytes_written/1024/1024) write_mb from v$asm_disk;

NAME                           PATH                                                   HEADER_STATU    FREE_MB    READ_MB   WRITE_MB
------------------------------ ------------------------------------------------------ ------------ ---------- ---------- ----------
CRSVOL1                        ORCL:CRSVOL1                                          MEMBER             5114          2           213
DATAVOL1                     ORCL:DATAVOL1                                       MEMBER             5114       6876       3123
FRAVOL1                        ORCL:FRAVOL1                                          MEMBER             5114         88          2684
ORCL:DATA1                                                 PROVISIONED           0

Or

SQL> SELECT name, free_mb, total_mb, free_mb/total_mb*100 as percentage

FROM v$asm_diskgroup;  2

NAME                              FREE_MB   TOTAL_MB PERCENTAGE
------------------------------ ---------- ---------- ----------
CRS                                  5055       5114 98.8463043
DATA                               1795       5114 35.0997262
FRA                                  1658       5114 32.4208056

Find the archive generate by hours in database

SQL> set lines 299
 SQL> SELECT TO_CHAR(TRUNC(FIRST_TIME),'Mon DD') "DG Date",
 TO_CHAR(SUM(DECODE(TO_CHAR(FIRST_TIME,'HH24'),'00',1,0)),'9999') "12AM",
 TO_CHAR(SUM(DECODE(TO_CHAR(FIRST_TIME,'HH24'),'01',1,0)),'9999') "01AM",
 TO_CHAR(SUM(DECODE(TO_CHAR(FIRST_TIME,'HH24'),'02',1,0)),'9999') "02AM",
 TO_CHAR(SUM(DECODE(TO_CHAR(FIRST_TIME,'HH24'),'03',1,0)),'9999') "03AM",
 TO_CHAR(SUM(DECODE(TO_CHAR(FIRST_TIME,'HH24'),'04',1,0)),'9999') "04AM",
 TO_CHAR(SUM(DECODE(TO_CHAR(FIRST_TIME,'HH24'),'05',1,0)),'9999') "05AM",
 TO_CHAR(SUM(DECODE(TO_CHAR(FIRST_TIME,'HH24'),'06',1,0)),'9999') "06AM",
 TO_CHAR(SUM(DECODE(TO_CHAR(FIRST_TIME,'HH24'),'07',1,0)),'9999') "07AM",
 TO_CHAR(SUM(DECODE(TO_CHAR(FIRST_TIME,'HH24'),'08',1,0)),'9999') "08AM",
 TO_CHAR(SUM(DECODE(TO_CHAR(FIRST_TIME,'HH24'),'09',1,0)),'9999') "09AM",
 TO_CHAR(SUM(DECODE(TO_CHAR(FIRST_TIME,'HH24'),'10',1,0)),'9999') "10AM",
 TO_CHAR(SUM(DECODE(TO_CHAR(FIRST_TIME,'HH24'),'11',1,0)),'9999') "11AM",
 TO_CHAR(SUM(DECODE(TO_CHAR(FIRST_TIME,'HH24'),'12',1,0)),'9999') "12PM",
 TO_CHAR(SUM(DECODE(TO_CHAR(FIRST_TIME,'HH24'),'13',1,0)),'9999') "1PM",
 TO_CHAR(SUM(DECODE(TO_CHAR(FIRST_TIME,'HH24'),'14',1,0)),'9999') "2PM",
 TO_CHAR(SUM(DECODE(TO_CHAR(FIRST_TIME,'HH24'),'15',1,0)),'9999') "3PM",
 TO_CHAR(SUM(DECODE(TO_CHAR(FIRST_TIME,'HH24'),'16',1,0)),'9999') "4PM",
 TO_CHAR(SUM(DECODE(TO_CHAR(FIRST_TIME,'HH24'),'17',1,0)),'9999') "5PM",
 TO_CHAR(SUM(DECODE(TO_CHAR(FIRST_TIME,'HH24'),'18',1,0)),'9999') "6PM",
 TO_CHAR(SUM(DECODE(TO_CHAR(FIRST_TIME,'HH24'),'19',1,0)),'9999') "7PM",
 TO_CHAR(SUM(DECODE(TO_CHAR(FIRST_TIME,'HH24'),'20',1,0)),'9999') "8PM",
 TO_CHAR(SUM(DECODE(TO_CHAR(FIRST_TIME,'HH24'),'21',1,0)),'9999') "9PM",
 TO_CHAR(SUM(DECODE(TO_CHAR(FIRST_TIME,'HH24'),'22',1,0)),'9999') "10PM",
 TO_CHAR(SUM(DECODE(TO_CHAR(FIRST_TIME,'HH24'),'23',1,0)),'9999') "11PM"
 FROM V$LOG_HISTORY
 GROUP BY TRUNC(FIRST_TIME)
 ORDER BY TRUNC(FIRST_TIME) DESC
 /
DG Date         12AM  01AM  02AM  03AM  04AM  05AM  06AM  07AM  08AM  09AM  10AM  11AM  12PM  1PM   2PM   3PM   4PM   5PM   6PM   7PM   8PM   9PM   10PM  11PM
--------------- ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- -----
Feb 12              0     0     0     2     0     0     1     0     0     0     0     0     0     0     0     0     0     0     1     0     0     0     1     0
Feb 11              0     0     0     0     0     0     0     0     0     0     1     0     0     0     1     0     0     0     0     0     0     0     0     0
Feb 10              0     0     0     0     0     1     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     3     0

…….

Find the current users are logged in database

SQL> select a.value, s.username, s.sid, s.serial# from v$sesstat a, v$statname b,
v$session s where a.statistic# = b.statistic#  and s.sid=a.sid and
b.name = 'opened cursors current' and s.username is not null;

VALUE USERNAME                              SID    SERIAL#
---------- ------------------------------ ---------- ----------
1 SYS                                   481      13025

Find the specific or all the user privilege in database

SQL> SELECT GRANTEE, PRIVILEGE FROM DBA_SYS_PRIVS WHERE GRANTEE = 'MIR';

GRANTEE                        PRIVILEGE
------------------------------ ----------------------------------------
MIR                            UNLIMITED TABLESPACE

Or

SQL> desc user_tab_privs;

Name                                                              Null?    Type
----------------------------------------------------------------- -------- --------------------------------------------
GRANTEE                                                           NOT NULL VARCHAR2(30)
OWNER                                                             NOT NULL VARCHAR2(30)
TABLE_NAME                                                        NOT NULL VARCHAR2(30)
GRANTOR                                                           NOT NULL VARCHAR2(30)
PRIVILEGE                                                         NOT NULL VARCHAR2(40)
GRANTABLE                                                                  VARCHAR2(3)
HIERARCHY                                                                  VARCHAR2(3)

Or

SQL> desc all_tab_privs;

Find the entire user in database

SQL> select username from dba_users;

USERNAME
------------------------------
SPATIAL_WFS_ADMIN_USR
DIP
SH
IX
MDDATA
ORACLE_OCM
SPATIAL_CSW_ADMIN_USR
APEX_PUBLIC_USER
MIR ……………………………. Etc

Find the tablespace used by the user in database

SQL> select distinct TABLESPACE_NAME from dba_tables where owner='MIR';

TABLESPACE_NAME
------------------------------
GOLDENGATE
USERS

Find the invalid objects in database

SQL> SELECT owner,
object_name,
object_type,
Status
FROM dba_objects
WHERE status ='INVALID';

Or

SQL> desc dba_objects;

Find the size of table,index, schema in database

SIZE OF TABLE:

Select segment_name,sum(bytes)/1024/1024/1024 as “SIZE in GB” from user_segments where segment_name=’TABLE_NAME’ group by segment_name;

Or

select owner,segment_name,sum(bytes)/1024/1024/1024 as “SIZE in GB” from dba_segments where owner=’SCHEMA_NAME’ and segment_name=’TABLE_NAME’ group by owner,segment_name;

SIZE OF INDEX:

select segment_name,sum(bytes)/1024/1024/1024 as “SIZE in GB” from user_segments where segment_name=’INDEX_NAME’ group by segment_name;

Or

select owner,segment_name,sum(bytes)/1024/1024/1024 as “SIZE in GB” from dba_segments where owner=’SCHEMA_NAME’ and segment_name=’INDEX_NAME’ group by owner,segment_name

SIZE OF A USER/SCHEMA:

select owner, segment_name, sum(bytes)/1024/1024/1024 from dba_segments where owner = 'XRM' group by owner,segment_name;

Lots more to add……