0% found this document useful (0 votes)
38 views58 pages

Untitled

This document provides best practices for optimizing performance of Oracle Database on Windows platforms. It discusses Oracle Database architecture on Windows, including support for 32-bit and 64-bit versions. It offers tips for optimizing CPU usage, network performance, and file I/O. Specific recommendations are provided for diagnosing and addressing high CPU usage. The benefits of shared server configuration versus dedicated server are also outlined.

Uploaded by

Mirco Ghizzoni
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
38 views58 pages

Untitled

This document provides best practices for optimizing performance of Oracle Database on Windows platforms. It discusses Oracle Database architecture on Windows, including support for 32-bit and 64-bit versions. It offers tips for optimizing CPU usage, network performance, and file I/O. Specific recommendations are provided for diagnosing and addressing high CPU usage. The benefits of shared server configuration versus dedicated server are also outlined.

Uploaded by

Mirco Ghizzoni
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 58

<Insert Picture Here>

Best Practices for Performance of Oracle Database on


Windows
Christian Shay, Principal Product Manager, Oracle
Agenda

• Oracle Database on Windows Overview


• Architecture
• Best Practices for Windows (32 bit and 64 bit)
• Windows OS Diagnostic Tools
• Optimize CPU usage
• Optimize Network
• Optimize File I/O
• Best Practices for 32 bit Windows
• Optimize Memory
• Best Practices for 64 bit Windows
• Q+A: Ask the Experts
<Insert Picture Here>

Oracle Database on Windows


Overview
Windows 32-bit Platform Support

OS 9iR2 10gR1 10gR2 11g

Windows 2000 Yes Yes Yes Yes

Windows XP Professional Yes Yes Yes Yes

Windows Server 2003 Yes Yes Yes Yes

Windows Vista No No Yes Yes

Windows Server 2008 No No Planned Planned


Windows 64-bit Platform Support
OS 9iR2 10gR1 10gR2 11g
Windows Server 2003 for Itanium Yes Yes Yes TBD
Windows XP & Windows Server No No Yes Yes
2003, x64 Editions
Windows Vista for x64 systems No No Planned Yes

Windows Server 2008 for x64 No No Planned Planned


systems

Windows Server 2008 for Itanium No No TBD TBD

TBD – Plan is to be determined. Will be announced later.


<Insert Picture Here>

Oracle Database on Windows


Architecture
Architecture: Thread Model

SGA contains
Oracle process db buffers,
log buffers
SGA shared pool,
other memory
3GB allocations
or
Each thread
8TB consists of
total PGA, stack,
Background and foreground threads
other memory
Code allocations
Database Architecture

• Thread model, not a straight port of Oracle’s process


architecture
• 3GB (32-bit) or 8TB (64-bit) maximum memory per
database instance. VLM support allows >3GB on 32-bit.
• Runs as a Windows service process
• No limits on memory, connections, resources except those
imposed by the operating system
File I/O

• Oracle11g supports asynchronous I/O to all types


of files
• Logical and physical raw files and partitions are
fully supported (faster than NTFS)
• Full 64-bit file I/O internally
• No 2GB or 4GB limitations on database file
sizes.
• Maximum file size is 64GB
• Maximum database size is 4 petabytes
New for Windows Server 2003
• Large Page support
• For instances with large memory requirements, large page support
can improve performance.
• Set registry parameter ORA_LPENABLE to 1
• 32 bit – 4kb default – 2MB
• 64 bit – 8kb default – 16 MB
• x64 – 8kb default – 2 MB
• NUMA support for memory/scheduling
• Database intelligently allocates memory and schedules threads
based on node configuration
• Best Practice: For NUMA on AMD patch to a minimum 10.2.0.2 P5
Hyperthreading

• Circuitry added to Intel CPUs resulting in single CPU


functioning as 2 CPUs
• All versions of Oracle are supported in Hyperthreaded
environments.
Additional Integration with Windows

• Integration with Performance Monitor


• Integration with Event Log
Direct NFS Client on Windows

• Network Attached Storage (NAS) uses Network File


System (NFS)
• Oracle Database 11g allows direct Windows NFS v3
access
• Part of DB kernel in Oracle Disk Manager library
• Common Oracle NFS interface for potentially all host
platforms and NFS servers
• Specially useful for Windows as Kernel NFS is not
natively supported on Windows
• Bypasses a lot of software layers in OS
• Tailored for the specific I/O patterns that Oracle uses
Direct NFS

• Linear scalability of direct NFS can be achieved with


inexpensive NICS - and
• Does not require expensive switches which support link
aggregation…Oracle does load balancing rather relying on a
switch.
• Parallel network paths – More NICS – more bandwidth
• Direct NFS is a good solution from low to high end
database servers
<Insert Picture Here>

Best Practices for 32 bit and


64 bit Windows
Diagnostic Tools - Performance Monitor
ODP.NET Integration with Performance
Monitor
• Monitor Connection Pools (New Feature of ODP.NET 11.1)
• Enable in
HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE\ODP.NET\Asse
mbly_Version\PerformanceCounters

Counters include (among many):


• HardConnectsPerSecond
• HardDisconnectsPerSecond
• SoftConnectsPerSecond
• SoftDisconnectsPerSecond
• NumberOfActiveConnection
• NumberOfFreeConnections
Process Explorer
OS Tools

• tasklist, taskkill
• tlist (Shows command line args with -c)
• driverquery
• diskpart
• sc (sc query state= all)
• regmon, filemon, procexp, tcpview
• Windows Services for Unix
• poolmon
Client Diagnosability on 11g

• Integrated with ADR


• OCI and Net tracing and logging uses ADR by default
• Multithreaded client-side diagnosability context support
• First Failure Capture
• Client and Server trace file correlation
• Reduce one-off diagnostic patches
• Structure Dump Facility
Client Characteristics

• V$SESSION_CONNECT_INFO/GV$_SESSION_CONNECT_INF
• CLIENT_CHARSET (NLS character set)
• CLIENT_CONNECTION (Homogeneous/heterogeneous)
• CLIENT_OCI_LIBRARY (Home-based, Instant Client Full/Light)
• CLIENT_VERSION (client RSF version)
• CLIENT_DRIVER (OCI/JDBC/other)
• OCI_ATTR_DRIVER_NAME to set third party driver
Client-Side Crash Handler

• Goal: handle segfaults, other core dumps


• As of 10.2, handler only in RDBMS server
• With 11g, we add one on client side
• Generates error message & stack trace, and controls
core dump location
CPU Tuning

• Oracle uses all processors available through the OS


• ORACLE_AFFINITY registry value can be set to tell
Oracle which threads to run on which processors
(same setting for all instances)
• Use Database Resource Manager to set CPU usage
for different classes of users
• For example, one can configure the db to use 50% CPU for
gold customers, 30% for silver and 20% for rest
• Thread priorities can be set in the registry using the
ORACLE_PRIORITY variable
CPU Tuning – Diagnosing High CPU

• Process Explorer: drill down to threads


• Get thread id of high CPU thread and then do query
• SELECT a.spid, b.username FROM v$process a,
v$session b WHERE a.addr= b.paddr AND a.spid =
<thread number>
Networking Best Practices

• Use one listener per system


• The default queue-size for Windows Server is 50 –
increase using QUEUESIZE parameter in
LISTENER.ORA – prevents errors during login storms
• Listener Logon Storm Handler
• Configurable on server side in LISTENER.ORA (RATE_LIMIT =
<max conn/sec>)
• Use only if you have logon storm issues
Networking Best Practices

• Increase SDU_SIZE in SQLNET.ORA or


TNSNAMES.ORA
• Controls SQL*Net packet size
• Default SDU_SIZE in 11g is now 8k. For bulk data transfer
scenarios, increase SDU_SIZE in sqlnet.ora or tnsnames.ora. It
can be increased up to 32K.
• Any mix of 11g and 10g will cause it to negotiate down to lower
of the two peers (pre-11g default is 2K)
• For 10g increase SDU_SIZE to 8k or higher.
• Common misperception: Should not be set to match MTU!
Networking Best Practices:
Shared Server vs. Dedicated Server
• Dedicated server gives very best performance
• Each client connection has it’s own thread
• Memory usage is 2-4 MB per server thread
• Oracle uses dedicated server for OLTP benchmarks
• Can hit scalability limits due to memory use
• Shared server saves a lot of memory!
• Idle connections will not consume much memory
• Latency because dispatcher hands request to shared server
• Good for large number of connections with many idle
Networking Best Practices:
Shared Server vs. Dedicated Server

• Recommendation: Use dedicated server if you have


enough physical memory, otherwise use shared for all
sessions that may be idle for some time.
• Continue to use dedicated server for a small number of
high performance connections/queries.
Networking Best Practices:
Using Shared Server
• Client connections share pre-spawned server threads
• No dedicated idle threads wasting resources
• Enable Shared Server on client in tnsnames.ora:
(DESCRIPTION=
(ADDRESS=(PROTOCOL=tcp)
(HOST=sales-server)(PORT=1521))
(CONNECT_DATA= (SERVICE_NAME=sales.us.acme.com)
(SERVER=shared) ))

• Modify init.ora parameters on server to enable shared


servers
• Rough guidelines: 20 or 30 Shared Servers per 500 sessions, then
tune from there
• Use 1 dispatcher for every 50-100 sessions
• See Net Admin Guide for more details
Networking Best Practices:
Oracle Database Resident Connection Pool
• Pools Oracle Dedicated Servers
• Shares server side connection pool across mid tier systems and
processes
• Co-exists in all server configurations
• Dedicated Servers, Shared Servers, RAC
• Most useful when you have many thousands of client processes
connecting to a database server and each process needs to hold
on to the database server session for a short time
• In test environment, we were able to support more than 10,000
connections to a 2 GB Database Server
• Pooling is optionally enabled by DBA on Server
• Client connect string also needs to have (SERVER=POOLED)
Networking Best Practices:
Connection Timeouts

• Client Side connection timeouts: Achieve fast failover


when you have multiple addresses in connect string
• TCP.CONNECT_TIMEOUT – 11g feature - it can be a few
seconds. Not set by default.
• SQLNET.OUTBOUND_CONNECT_TIMEOUT – 10gR2 and later
– Not set by default.
• These two timeouts can be used individually or at the same time
• Server Side connection timeouts:
• SQLNET.INBOUND_CONNECT_TIMEOUT – 10gR1 and later -
default 60 secs for 10gR2 and 11g, not enabled by default for
10gR1; this can also be used along with the client side timeouts
above.
Networking Best Practices

• SQLNET.AUTHENTICATION_SERVICES=(NTS)
• This is a default value in SQLNET.ORA, needed for OS
authentication (connect / as SYSDBA)
• It should be left at default on server side.
• Use SecureFile LOBs
• NET stack optimizations provide very high throughput limited
only by the underlying hardware
File System Best Practices

• Use ASM – whether single-instance or RAC – use


10.1.0.4 or higher
• Benefits
• Don’t need to move datafiles around
• Don’t need to take tablespaces offline
• Add disks with no downtime
Memory Best Practices

• 11g: Use MEMORY_TARGET for automatic


management of combined SGA and PGA
• 10g and earlier:
• ControlSGA Memory by using SGA_TARGET parameter
• Control PGA Memory by using
PGA_AGGREGATE_TARGET parameter
<Insert Picture Here>

Best Practices for 32 bit


Windows
32 bit Memory Best Practices

• Increase addressable memory available to the Oracle


process by adding /3GB switch to boot.ini file:
multi(0)disk(0)rdisk(0)partition(1)\WINNT="Microsoft Windows 2000 Advanced
Server" /fastdetect /3GB

• Reboot server to enable


• Must monitor kernel memory closely to prevent
instability of operating system
• See Metalink Notes 46001.1 and 297498.1
• See Microsoft KB article 297812
Monitoring Memory

• Key Items to Monitor for Memory Usage:


• Perfmon - Virtual Bytes for oracle.exe to see total memory
used by the process
• Total Pool Non-Paged Bytes – Memory Counter
• If grows close to 128MB, operating system instability will
occur
• If this grows too high, look for memory leaks
• Free System Page Table Entries (PTE’s) – Memory Counter
• Should never fall below 7500 or so
• /USERVA=2560 switch in boot.ini will help prevent this
Using ORASTACK

• Each thread within Oracle process is provided 1MB


reserved stack space
• Reduce to 500k without consequence on most systems:
C:\ orastack tnslsnr.exe 500000
C:\ orastack oracle.exe 500000
• Be sure to run on BOTH tnslsnr.exe and oracle.exe
• Stop processes before running Orastack
• If you apply a patch, you must re-run Orastack
• Make sure to test your system to be sure 500k is OK
• See Metalink Note 46001.1 for more information
32-bit: VLM Support

rest
of For O/S, other apps Windows Server 2003
RAM Memory Limits (32-bit)
Standard Edition:
4GB
Enterprise Edition:
32GB
SGA Datacenter Edition:
64GB
3GB
database
threads/
Code memory
32-bit: VLM Support

Extended memory
available for db Memory from AWE calls
rest buffers via AWE calls used for db buffers only.
of The amount of AWE
RAM memory allocated
For O/S, other apps equals db_block_size
times db_block_buffers.
Window on db
buffers in AWE mem Oracle operating system
SGA minus db buffers process. Normally limited
3GB to 3GB of address space.
With VLM, Oracle can get
Code up to 12GB of database
buffers.
Implementing AWE

• Use AWE with Oracle by adding initialization


parameter USE_INDIRECT_DATA_BUFFERS
• Use DB_BLOCK_BUFFERS instead of
DB_CACHE_SIZE
• With AWE, database buffer cache can be increased
up to roughly 12 GB
• Default value for AWE_WINDOW_MEMORY is 1 GB
• See Metalink Note 225349.1 for more information
Best Practices for 32-Bit Memory

• Use Automatic Workload Repository (AWR) to


monitor cache hit ratios and shared_pool stats, etc.
Make sure that values are not too high
• When implementing AWE be aware that using AWE
disables Automatic Memory Management features
(SGA_TARGET cannot be used when
USE_INDIRECT_DATA_BUFFERS is set).
<Insert Picture Here>

Best Practices for 64 bit


Windows
Oracle on 64-bit Windows

• Long history of supporting 64-bit databases on other


platforms
• Interoperability between 32-bit clients and 64-bit servers and
vice versa
• Improved performance, availability and scalability
64-bit: Migration

• 32-bit to 64-bit upgrade process is simple


• 32-bit data files are compatible with 64-bit DB
• Only recreate control file if neccesary (eg file location changes)
• No need to recreate the database
• Full export and import not required
• Database Upgrade Assistant automates process
• Transparent migration for end-user applications
• No changes required to existing client applications when running against 64-
bit database
64-Bit Best Practices

• Use SP2 for Windows Server 2003 to avoid OS


performance bug
• Run correct 64-Bit version of Oracle for the
architecture – I.e. 64-Bit Oracle for AMD or 64-Bit
Oracle for Itanium.
• 32-Bit Oracle db not supported on 64-Bit platforms
• 32-bit Client is supported on x64 64-bit platforms
• Enable Large Pages
<Insert Picture Here>

High Availability Solutions on


Windows
High Availability Solutions

• HA becomes essential as databases are critical


component of business
• HA Goals: Minimize downtime to your company and
your customers
• Solutions for Windows Environments
• Real Application Clusters (RAC)
• Oracle Fail Safe
• Data Guard (DG)
• Maximum Availability Architecture (MAA)
Fail Safe Best Practices

• One database per group


• Separate production from non-production databases into
different groups
• Multiple physical disks to be separated into different
groups
• Failback and Restart properties should be reviewed
for business needs
• Not all properties need to fail over

http://otn.oracle.com/tech/windows/failsafe/index.html
Real Applications Clusters

• Use RAC for scalability and High Availability


• Add instances against same database files providing more
Oracle processes and increasing number of users
• Provides unique scalability on Windows that no other vendor
offers
• Clustered databases supported on Windows platforms
since version 7.3.3
• Uses Oracle’s own clustering software, not MSCS
• Oracle 11g provides platform independent Cluster
Ready Service (CRS) to handle failover of services to
surviving nodes
Oracle Data Guard

• Data Guard is Oracle’s Disaster Recovery product


which maintains and monitors one or more standby
databases to protect enterprise data from failures,
disasters, errors, and corruptions
• Standby databases, which can be located across large
geographic regions away from the primary database,
can be switched to the production role if a problem
occurs with the primary
• Can use different Windows versions for primary and
standby (2003 for primary, 2000 for standby)
• DG is free with Enterprise Edition of RDBMS
http://www.oracle.com/technology/deploy/availability/htdocs/DataGuardOv
erview.html
Thursday’s Database on Windows Sessions

• 8:30 am – Moscone South 104:


• Best Practices for Oracle Database and Client
Deployment on Windows
• 1:00 pm - Moscone South 309:
• Using Oracle RAC and Microsoft Windows 64-Bit as the
Foundation for a Database Grid
• 1:00 pm – Moscone South 306:
• Oracle Database Integration with Active Directory and
Windows Security
More Information

• .Windows Server Center


• http://otn.oracle.com/windows
• My Windows and .NET Blog
• http://cshay.blogspot.com/
• For more questions
[email protected]
The preceding is intended to outline our general
product direction. It is intended for information
purposes only, and may not be incorporated into any
contract. It is not a commitment to deliver any
material, code, or functionality, and should not be
relied upon in making purchasing decisions.
The development, release, and timing of any
features or functionality described for Oracle’s
products remain at the sole discretion of Oracle.

You might also like