Skip to content
pvmehta.com

pvmehta.com

  • Home
  • About Me
  • Toggle search form
  • CTAS with LONG Column for 9i and higher Oracle
  • find_pk.sql /* Find Primary Key */ Oracle
  • Good notes for shared pool Oracle
  • pvm_pre_change.sql Oracle
  • Another export with Query Oracle
  • newupload.html PHP/MYSQL/Wordpress
  • sql_doing_fts.sql Oracle
  • How to choose Driver table in SQL statement Oracle
  • Sending email with file attachment. Linux/Unix
  • oracle tips… from http://www.bijoos.com/oracle/douknow.htm Oracle
  • Find nth max and min. Oracle
  • compile_inv.sql Oracle
  • Sample WW22 listener.ora Oracle
  • VIvek Encryption Package and Its Usage Oracle
  • Reading config file from other folder inside class Python/PySpark

Settting up get_vmstat.sh for colletinf CPU Usage.

Posted on 13-Jan-2006 By Admin No Comments on Settting up get_vmstat.sh for colletinf CPU Usage.

To collect CPU stats from Server following code needs to be setup. ( Step By Step )

Step-1

======

Create a user named PERFSTAT/PERFSTAT. This is not for statspack, we only need 3 tables and package for this settings. Give appropriate default TS for same.

Step-2

======

create tables with following definitons:

CREATE TABLE STATS$VMSTAT2

(

START_DATE DATE,

DURATION NUMBER,

SERVER_NAME VARCHAR2(20),

RUNQUE_WAITS NUMBER,

BUSY_WAITS NUMBER,

RUNNABLE_WAITS NUMBER,

SWAP NUMBER,

FREE NUMBER,

PAGE_RECLAIMS NUMBER,

MINOR_FAULTS NUMBER,

PAGE_IN NUMBER,

PAGE_OUT NUMBER,

PAGE_FREE NUMBER,

DESTROYED NUMBER,

SCAN_RATE NUMBER,

DEVICE_INTERRUPT NUMBER,

SYSTEM_CALLS NUMBER,

CONTEXT_SWITCHES NUMBER,

USER_CPU NUMBER,

SYSTEM_CPU NUMBER,

IDLE_CPU NUMBER,

WAIT_CPU NUMBER

)

TABLESPACE CS_DATA

PCTUSED 60

PCTFREE 10

INITRANS 1

MAXTRANS 255

STORAGE (

INITIAL 10M

NEXT 5M

MINEXTENTS 1

MAXEXTENTS 5000

PCTINCREASE 0

FREELISTS 1

FREELIST GROUPS 1

BUFFER_POOL DEFAULT

)

LOGGING

NOCACHE

NOPARALLEL;

CREATE INDEX STATS$VMSTAT_STDTE_I ON STATS$VMSTAT2

(START_DATE)

LOGGING

TABLESPACE CS_DATA

PCTFREE 10

INITRANS 2

MAXTRANS 255

STORAGE (

INITIAL 2M

NEXT 2080K

MINEXTENTS 1

MAXEXTENTS 500

PCTINCREASE 0

FREELISTS 1

FREELIST GROUPS 1

BUFFER_POOL DEFAULT

)

NOPARALLEL;

CREATE TABLE STATS$USERSESSIONS

(

START_DATE DATE,

SYSTEM_SESSIONS NUMBER,

ACTIVE_USERS NUMBER,

INACTIVE_USERS NUMBER,

DEDICATED_SERVERS NUMBER,

USER_SESSIONS NUMBER,

TRANSACTIONS NUMBER

)

TABLESPACE CS_DATA

PCTUSED 60

PCTFREE 10

INITRANS 1

MAXTRANS 255

STORAGE (

INITIAL 10M

NEXT 5M

MINEXTENTS 1

MAXEXTENTS 505

PCTINCREASE 0

FREELISTS 1

FREELIST GROUPS 1

BUFFER_POOL DEFAULT

)

LOGGING

NOCACHE

NOPARALLEL;

CREATE INDEX STATS$USERSESSIONS_STDTE_I ON STATS$USERSESSIONS

(START_DATE)

LOGGING

TABLESPACE CS_DATA

PCTFREE 10

INITRANS 2

MAXTRANS 255

STORAGE (

INITIAL 5M

NEXT 5M

MINEXTENTS 1

MAXEXTENTS 500

PCTINCREASE 0

FREELISTS 1

FREELIST GROUPS 1

BUFFER_POOL DEFAULT

)

NOPARALLEL;

CREATE TABLE STATS$TOTALUSERS

(

MEASURED_DATE DATE,

TOTAL_USERS NUMBER,

ACTIVE_USERS NUMBER,

WEB_USERS NUMBER,

BLOOMORA_USERS NUMBER

)

TABLESPACE CS_DATA

PCTUSED 60

PCTFREE 10

INITRANS 1

MAXTRANS 255

STORAGE (

INITIAL 10M

NEXT 5M

MINEXTENTS 1

MAXEXTENTS 500

PCTINCREASE 0

FREELISTS 1

FREELIST GROUPS 1

BUFFER_POOL DEFAULT

)

LOGGING

NOCACHE

NOPARALLEL;

You can modify this by changing for appropriate tablespace.

Step-3

======

Create Procedure in PERFSTAT user.

CREATE OR REPLACE PROCEDURE PERFSTAT.vmstat3

(START_DATE DATE,

DURATION NUMBER,

SERVER_NAME VARCHAR2,

RUNQUE NUMBER,

BUSY_WAITS NUMBER,

RUNNABLE_WAITS NUMBER,

SWAP NUMBER,

FREE NUMBER,

PAGE_RECLAIMS NUMBER,

MINOR_FAULTS NUMBER,

PAGE_IN NUMBER,

PAGE_OUT NUMBER,

PAGE_FREE NUMBER,

DESTROYED NUMBER,

SCAN_RATE NUMBER,

DEVICE_INTERRUPT NUMBER,

SYSTEM_CALLS NUMBER,

CONTEXT_SWITCHES NUMBER,

USER_CPU NUMBER,

SYSTEM_CPU NUMBER,

IDLE_CPU NUMBER,

WAITS_CPU NUMBER)

AS

active_users number;

total_users number;

web_users number;

bloomora_users number;

BEGIN

INSERT INTO PERFSTAT.STATS$VMSTAT2 VALUES(START_DATE,DURATION,SERVER_NAME,RUNQUE,BUSY_WAITS,RUNNABLE_WAITS, SWAP, FREE, PAGE_RECLAIMS, MINOR_

FAULTS, PAGE_IN, PAGE_OUT, PAGE_FREE, DESTROYED, SCAN_RATE, DEVICE_INTERRUPT, SYSTEM_CALLS, CONTEXT_SWITCHES,

USER_CPU, SYSTEM_CPU, IDLE_CPU,WAITS_CPU);

select count(*) into active_users From v$session where username <> ‘ ‘ and status = ‘ACTIVE’;

select count(*) into total_users From v$session where username <> ‘ ‘ ;

select count(*) into web_users From v$session where username <> ‘ ‘ and status = ‘ACTIVE’ and username like ‘WEB%’;

select count(*) into bloomora_users From v$session where username <> ‘ ‘ and status = ‘ACTIVE’ and username like ‘BLOOMORA%’;

INSERT INTO PERFSTAT.STATS$TOTALUSERS

(measured_date,total_users,active_users,web_users,bloomora_users)

values

(START_DATE,total_users,active_users,web_users,bloomora_users);

INSERT INTO PERFSTAT.STATS$USERSESSIONS select sysdate,sum(decode(type,’BACKGROUND’,1,0)) system_sessions,

sum(decode(type,’BACKGROUND’,0,decode(status,’ACTIVE’,1,0))) active_users,

sum(decode(type,’BACKGROUND’,0,decode(status,’ACTIVE’,0,1))) inactive_users,

sum(decode(type,’BACKGROUND’,0,decode(server,’DEDICATED’,1,0))) dedicated_servers,

sum(decode(type,’BACKGROUND’,0,1)) user_sessions,

sum(decode(taddr,”,0,decode(status,’ACTIVE’,1,0))) transactions

from v$session;

commit;

END;

/

Step-4

======

Now we created package and tables in PERFSTAT Schema. Now,

GRANT execute on PERFSTAT.vmstat3 to OPS$ORACLE.

This is needed as we are executing procedure as oracle os user.

Note: if OPS$ORACLE is not there then need to create this user.

create user ops$ORACLE identified externally;

grant connect to ops$ORALCE;

Step-5

======

Now execute this package using following backgraound job. Actually this is a Shell program named get_vmstat.sh.

$ nohup get_vmstat.sh WEBP 1>$HOME/paresh/tmp/get_vmstat_WEBP.log 2>&1 &

Step-6

======

Periodically you can check following tables for data gathering. U can change the snapshot interval in this get_vmstat.sh script. General rule of thumb is that IDLE CPU should not be less that 35%. Else need to re-consider serious tuning or Capacity level of Server Hardware.

Oracle, SQL scripts

Post navigation

Previous Post: Giving Grant on v$DATABASE
Next Post: Privileges Required to Create Procedures and Functions that uses objects from other schema.

Related Posts

  • lck.sql Oracle
  • sql_plan9i.sql Oracle
  • sid_wise_sql.sql Further explaination Oracle
  • How To Resolve Stranded DBA_2PC_PENDING Entries ID 401302.1 (Very Good prooven) Oracle
  • Important Script Method for tuning Oracle
  • Another Tuning Article for subheap of shared pool Oracle

Leave a Reply Cancel reply

Your email address will not be published. Required fields are marked *

Categories

  • AWS (2)
  • Azure (1)
  • Linux/Unix (149)
  • Oracle (392)
  • PHP/MYSQL/Wordpress (10)
  • Power-BI (0)
  • Python/PySpark (7)
  • RAC (17)
  • rman-dataguard (26)
  • shell (149)
  • SQL scripts (341)
  • Uncategorized (0)
  • Videos (0)

Recent Posts

  • load SPM baseline from cursor cache05-Jun-2025
  • Drop all SPM baselines for SQL handle05-Jun-2025
  • Load SPM baseline from AWR05-Jun-2025
  • Drop specific SQL plan baseline – spm05-Jun-2025
  • findinfo.sql (SQL for getting CPU and Active session info)27-May-2025
  • SQL Tracker by SID sqltrackerbysid.sql22-Apr-2025
  • How to connect to Oracle Database with Wallet with Python.21-Mar-2025
  • JSON/XML Types in Oracle18-Mar-2025
  • CPU Core related projections12-Mar-2025
  • Exadata Basics10-Dec-2024

Archives

  • 2025
  • 2024
  • 2023
  • 2010
  • 2009
  • 2008
  • 2007
  • 2006
  • 2005
  • sid_wise_cursor.sql find open cursor basis on username or SID Oracle
  • ORA-01220 Oracle
  • How to change hostname in Linux Linux/Unix
  • tuning commmand for cpu, ip and memory stats Linux/Unix
  • For Perl DBI installation and testing program PHP/MYSQL/Wordpress
  • Another export with Query Oracle
  • get_aix_vmstat.ksh Oracle
  • Some useful Unix Commands Linux/Unix

Copyright © 2025 pvmehta.com.

Powered by PressBook News WordPress theme