0% found this document useful (0 votes)
359 views3 pages

Solaris Kernel

This document discusses using Oracle Automatic Workload Repository (AWR) data to analyze system resource usage and service activity trends over time for an Oracle Real Application Clusters (RAC) database. Queries are provided to extract cluster-wide system metrics and most active services from AWR views, and the results are exported to files for capacity planning.

Uploaded by

Dung
Copyright
© Attribution Non-Commercial (BY-NC)
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as TXT, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
359 views3 pages

Solaris Kernel

This document discusses using Oracle Automatic Workload Repository (AWR) data to analyze system resource usage and service activity trends over time for an Oracle Real Application Clusters (RAC) database. Queries are provided to extract cluster-wide system metrics and most active services from AWR views, and the results are exported to files for capacity planning.

Uploaded by

Dung
Copyright
© Attribution Non-Commercial (BY-NC)
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as TXT, PDF, TXT or read online on Scribd
You are on page 1/ 3

There are some new kernel parameters needs to be configured in order to Install

new patch set for 11gR2 (11.2.0.2)


The following are the list of parameters:
1) tcp_smallest_anon_port
2) tcp_largest_anon_port
3) udp_smallest_anon_port
4) udp_largest_anon_port
When i was trying to Install this new patchset, the result for pre-requisite che
ck was failed because of these newly introduces kernel parameters.

Setting these kernel parameters:


1) To view the current value of these parameters, login as root user:
bash-3.00# ndd /dev/tcp tcp_smallest_anon_port tcp_largest_anon_port
9000
65500
bash-3.00#
bash-3.00# ndd /dev/udp udp_smallest_anon_port udp_largest_anon_port
9000
65500
bash-3.00#
The kernel parameters as expected by the Installer:
kernel parameter present val expected
tcp_smallest_anon_port -- 32768 --> 9000
tcp_largest_anon_port -- 65535 --> 65500
udp_smallest_anon_port -- 32768 --> 9000
udp_largest_anon_port -- 65535 --> 65500
update these kernel parameters using following parameters:

bash-3.00# ndd -set /dev/udp udp_smallest_anon_port 9000


bash-3.00# ndd -set /dev/udp udp_largest_anon_port 65500
bash-3.00# ndd -set /dev/tcp tcp_smallest_anon_port 9000
bash-3.00# ndd -set /dev/tcp tcp_largest_anon_port 65500
Note these settings will be lost at next reboot of your server. To keep these se
tting permanent add it in a system startup file.
Then verify the settings using:
bash-3.00# ndd /dev/tcp tcp_smallest_anon_port tcp_largest_anon_port
bash-3.00# ndd /dev/udp udp_smallest_anon_port udp_largest_anon_port
After setting these kernel parameters the pre-requisite check was successfull an
d Installation completed without any issue.

Summary: System resource usage and trend analysis data gathering for capacity pl
anning can profit of Oracle AWR 10g repository as the source of data, both for R
AC and single instance.
1. System metric
I had the need to provide management with system resource utilization data for t
rend analysis and capacity planning of a production database. Production is on 1
0g RAC. Standard OS monitoring tools provide system metrics for each cluster nod
e separately, which would require the development of custom scripts to aggregate
the data in a cluster-wide view. Instead I have used AWR to extract system reso
urce usage metrics for the whole cluster. This has saved me considerable time an
d allowed for easier analysis. In particular I ran the query reported here below
against dba_hist_sysmetric_summary. The result of the query was spooled to a fi
le and imported to a spreadsheet to produce graphs from the collected metric val
ues.
----------------------------
set lines 250
set pages 9999
spool sysmetric_outp.log
alter session set nls_date_format='dd-mm-yyyy hh24:mi';
select min(begin_time), max(end_time),
sum(case metric_name when 'Physical Read Total Bytes Per Sec' then averag
e end) Physical_Read_Total_Bps,
sum(case metric_name when 'Physical Write Total Bytes Per Sec' then avera
ge end) Physical_Write_Total_Bps,
sum(case metric_name when 'Redo Generated Per Sec' then average end) Redo
_Bytes_per_sec,
sum(case metric_name when 'Physical Read Total IO Requests Per Sec' then
average end) Physical_Read_IOPS,
sum(case metric_name when 'Physical Write Total IO Requests Per Sec' then
average end) Physical_write_IOPS,
sum(case metric_name when 'Redo Writes Per Sec' then average end) Physica
l_redo_IOPS,
sum(case metric_name when 'Current OS Load' then average end) OS_LOad,
sum(case metric_name when 'CPU Usage Per Sec' then average end) DB_CPU_Us
age_per_sec,
sum(case metric_name when 'Host CPU Utilization (%)' then average end) Ho
st_CPU_util, --NOTE 100% = 1 loaded RAC node
sum(case metric_name when 'Network Traffic Volume Per Sec' then average e
nd) Network_bytes_per_sec,
snap_id
from dba_hist_sysmetric_summary
group by snap_id
order by snap_id;
spool off
--------------------------
Prior to running this and the following analysis I had set the retention period
for AWR to 31 days (default is 7 days, which may be too short for trend analysis
): EXECUTE DBMS_WORKLOAD_REPOSITORY.MODIFY_SNAPSHOT_SETTINGS(retention => 60*24*
31)

2. Service Activity
On a production 10g RAC database we run several database applications. Each appl
ication is associated with a dedicated Oracle service. For performance and capac
ity planning analysis I needed to find the list of most active applications/serv
ices and their activity trend. Service activity is defined as the ratio of 'DB T
ime' over 'Elapsed Time' (i.e. the percentage of time a given service is in a DB
call, as opposed to processing application logic or waiting for input). I extra
cted the application activity data from the AWR repository, and in particular th
e DBA_HIST_SERVICE_STAT view. The query I used makes use of analytic functions t
o extract the deltas of the 'DB time' metric between successive AWR snapshots an
d is RAC aware.
--------------
set lines 250
set pages 9999
col service_name for a40
col Interval_time for a40
spool service_activity.log
alter session set nls_date_format='dd-mm-yyyy hh24:mi';
select service_name,max(END_INTERVAL_TIME) Interval_time,round(sum(DeltaValue/De
ltaT_sec)*(100/1000000),0) Pct_active_time
from (
select sn.snap_id,ss.service_name,sn.END_INTERVAL_TIME,ss.instance_number,ss.
stat_name,ss.value,
lag(ss.value) over (partition by ss.service_name,ss.instance_number order
by sn.snap_id) prevValue,
ss.value - lag(ss.value) over (partition by ss.service_name,ss.instance_n
umber order by sn.snap_id nulls first) BlindDelta,
nvl2(lag(ss.value) over (partition by ss.service_name,ss.instance_number
order by sn.snap_id), -- if the instance restarted Delta=0, error by defect
ss.value - lag(ss.value) over (partition by ss.service_name,ss.insta
nce_number order by sn.snap_id), 0 ) DeltaValue,
extract(hour from END_INTERVAL_TIME-begin_interval_time)*3600
+ extract(minute from END_INTERVAL_TIME-begin_interval_time)* 60
+ extract(second from END_INTERVAL_TIME-begin_interval_time) Delta
T_sec
from DBA_HIST_SERVICE_STAT ss, dba_hist_snapshot sn
where ss.snap_id=sn.snap_id and ss.instance_number=sn.instance_number
and ss.stat_name='DB time'
)
group by snap_id, service_name
having sum(DeltaValue/DeltaT_sec)*(100/1000000)>10 -- Filters out points of low
activity (<10% PCT_active_time) and negative values due to instance restarts
order by snap_id, service_name;
spool off
------------------

You might also like