0

Our team is developing basic monitoring tool for SQL Server and Oracle. We are now looking for this output in Oracle.

{
        "name": "InfraData",
        "time": "2018-01-04T19:49:07.838Z",
        "timeInMin": "2018-01-04T19:49:00Z",
        "sampleRate": 0,
        "iKey": "sq05058e-89te-50eb-a701-70e1f892191g",
        "data_baseType": "Sql_Performance",
        "machine_name": "HPSTSS02",
        "ip_address": "10.0.2.37",
        "logged_in_user": "Administrator",
        "agent_version": "VS212017121d0",
        "output_type": "latencydata",
        "database_name": "CABS_TEST",
        "sql_Database_DB_FileType": "DATA File - Location C:~Program Files~Microsoft SQL Server~MSSQL12.MSSQLSERVER~MSSQL~DATA~CABS_TEST.mdf",
        "sql_Database_DB_readLatency": 7,
        "sql_Database_DB_writeLatency": 0,
        "sql_Database_DB_Latency": 7,
        "sql_db_num_of_reads": 455,
        "sql_db_num_of_writes": 1,
        "sql_db_size_on_disk_bytes": 536870912,
        "id": "c0cd6c53-7869-44c8-8bd6-11a1b0724cce",
        "_version_": 1588682190333411300,
        "timestamp": "2018-01-04T17:03:21.839Z"
      },

I made a query in oracle using some subquery but there are several bugs, can someone help me with this. I am totally lost.

column GET_HOST_NAME format a25
column GET_HOST_ADDRESS format a20  
select name,sysdate, to_char(sysdate,'HH24:MI:SS AM') as timeInMin,
select sum(SAMPLESIZE) as sampleRate from IND$,
(select max(banner) from v$version) as data_baseType,
(SELECT UTL_INADDR.get_host_name from dual) as machine_name,(select UTL_INADDR.get_host_address from dual) as ip_address,
(select user from dual) as logged_in_user, (select name from v$database) as database_name,
(select FILE_NAME sql_Database_DB_FileType from dba_data_files where FILE_ID = (select min(FILE#) from sys.file$)) as sql_Database_DB_FileType,
(select max(READ_LATENCY) as oracle_Database_DB_readLatency ,max(WRITE_LATENCY) as sql_Database_DB_writeLatency from V_$IOSTAT_NETWORK),
(select (sum(READ_LATENCY)+sum(WRITE_LATENCY)) as sql_Database_DB_Latency from V_$IOSTAT_NETWORK)  from V_$IOSTAT_NETWORK,dual,v$database;
select sum(PHYSICAL_READS_TOTAL) as Oracle_db_num_of_reads,sum(PHYSICAL_WRITES_TOTAL) as Oracle_db_num_of_writes from DBA_HIST_SEG_STAT;
select ( select sum(bytes)/1024/1024/1024 data_size from dba_data_files ) + ( select nvl(sum(bytes),0)/1024/1024/1024 temp_size from dba_temp_files ) + ( select sum(bytes)/1024/1024/1024 redo_size from sys.v_$log ) + ( select sum(BLOCK_SIZE*FILE_SIZE_BLKS)/1024/1024/1024 controlfile_size from v$controlfile) "Size in GB"  from dual;
1
  • What are the bugs? What are you trying to achieve? What kind of errors are you having? Commented Jan 22, 2018 at 20:13

1 Answer 1

1

This is really a horrible way to gather this data, but here is your SQL modified to work. I substituted 'USER' for 'NAME' on the first line because I had no idea what name you wanted.

SELECT USER
     , SYSDATE
     , TO_CHAR (SYSDATE, 'HH24:MI:SS AM')
           AS timeinmin
     , (SELECT SUM (samplesize)
          FROM ind$)
           AS samplerate
     , (SELECT MAX (banner)
          FROM v$version)
           AS data_basetype
     , (SELECT UTL_INADDR.get_host_name
          FROM DUAL)
           AS machine_name
     , (SELECT UTL_INADDR.get_host_address
          FROM DUAL)
           AS ip_address
     , (SELECT USER
          FROM DUAL)
           AS logged_in_user
     , (SELECT name
          FROM v$database)
           AS database_name
     , (SELECT file_name sql_database_db_filetype
          FROM dba_data_files
         WHERE file_id = (SELECT MIN (file#)
                            FROM sys.file$))
           AS sql_database_db_filetype
     , (SELECT MAX (read_latency) AS oracle_database_db_readlatency
          FROM v_$iostat_network)
     , (SELECT MAX (write_latency) AS sql_database_db_writelatency
          FROM v_$iostat_network)
     , (SELECT (SUM (read_latency) + SUM (write_latency)) AS sql_database_db_latency
          FROM v_$iostat_network)
  FROM DUAL;

SELECT SUM (physical_reads_total) AS oracle_db_num_of_reads, SUM (physical_writes_total) AS oracle_db_num_of_writes
  FROM dba_hist_seg_stat;

SELECT   (SELECT SUM (bytes) / 1024 / 1024 / 1024 data_size
            FROM dba_data_files)
       + (SELECT NVL (SUM (bytes), 0) / 1024 / 1024 / 1024 temp_size
            FROM dba_temp_files)
       + (SELECT SUM (bytes) / 1024 / 1024 / 1024 redo_size
            FROM sys.v_$log)
       + (SELECT SUM (block_size * file_size_blks) / 1024 / 1024 / 1024 controlfile_size
            FROM v$controlfile)
           "Size in GB"
  FROM DUAL;
Sign up to request clarification or add additional context in comments.

1 Comment

Thanks Brian. This was what i was looking for.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.