Skip to content
pvmehta.com

pvmehta.com

  • Home
  • About Me
  • Toggle search form
  • Guide to Linux System Command Mastery Linux/Unix
  • Oracle Internal Good Websites 1 Oracle
  • Alter procedure auditing Oracle
  • Read CSV File using Python Python/PySpark
  • Good notes on Oracle Events Oracle
  • sid_wise_sql.sql Further explaination Oracle
  • Standby Database Behavior when a Datafile is Resized on the Primary Database Note:123883.1 Oracle
  • Looping for remote servers and find its database from oratab file. Linux/Unix
  • Very Good Oralce Internal Tuning Book Oracle
  • How To Resolve Stranded DBA_2PC_PENDING Entries ID 401302.1 (Very Good prooven) Oracle
  • PHP code to add WordPress posts in bulk programmatically PHP/MYSQL/Wordpress
  • Standby Database File Management in 10g with STANDBY_FILE_MANAGEMENT Oracle
  • Changing unix system clock when Oracle database is running. Oracle
  • Adding or Dropping Online Redo Log Files When Physical Standby in place Oracle
  • Goldengate Tutorial Oracle

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

  • dbinv.sql Oracle
  • Good notes on Oracle Events Oracle
  • SQL Tracker by SID sqltrackerbysid.sql Oracle
  • Histogram information Oracle
  • login.sql Oracle
  • Global Unique Identifier Generation in Oracle 9.2 SYS_GUID() 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
  • DBMS_Shared_pool pinning triggers Oracle
  • create user with unlimited quota Oracle
  • Kernel Parameter setting explaination for Processes Parameter Linux/Unix
  • How does one SELECT a value from a table into a Unix variable? From SQL to Shell Linux/Unix
  • remove archfiles only when it is applied to DR rm_archfiles.sh Linux/Unix
  • DB Console Mainenance. Oracle
  • Alter procedure auditing Oracle
  • cur_sql.sql Oracle

Copyright © 2025 pvmehta.com.

Powered by PressBook News WordPress theme