Oracle On Windows Performance
Oracle On Windows Performance
Oracle On Windows Performance
Program Agenda
Overview Architecture Best Practices for Windows (32 bit & 64 bit)
Windows OS Diagnostic Tools Optimize CPU usage Optimize Network Optimize File I/O
Overview
10gR2
Yes Yes 10.2.0.4 10.2.0.5 10.2.0.4
11gR1
Yes Yes Yes No 11.1.0.7
11gR2
Yes Yes Yes Yes Yes
10gR2
Yes Yes
11gR1
No Yes
11gR2
No Yes
Yes No 11.1.0.7 No
Architecture
db buffers, log buffers shared pool, other memory allocations Each thread consists of PGA, stack, other memory allocations
Code
Database Architecture Thread model, not a straight port of Oracles 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 (for both Win32 and Win64 OS). This means: No 2GB or 4GB limitations on database file sizes.
Maximum file size is 64GB Maximum database size is 4 petabytes
10
File I/O Asynch IO support on Windows is very good for both file system and raw devices. No need to set INIT.ORA parameter filesystemio_options Default value of asynch is the recommended setting.
11
12
Test well before going into production, Work with your hardware vendor and Oracle support to enable NUMA.
13
Hyperthreading
Circuitry added to Intel CPUs resulting in single CPU functioning as 2 CPUs All versions of Oracle are supported in Hyperthreaded environments.
14
15
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
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
16
Direct NFS Linear scalability of direct NFS can be achieved with inexpensive NICS - and
Does not require expensive switches which support link aggregationOracle 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
17
18
19
Process Explorer
20
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
21
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
22
Integrated with ADR OCI and Net tracing and logging uses ADR by default Multithreaded client-side diagnosability context support First Failure Capture
No need to reproduce a second time to get a dump
Client and Server trace file correlation Reduce one-off diagnostic patches Structure Dump Facility
Dumps more than just a stack
23
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
24
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
25
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
26
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>
27
Use one listener per system The default queue-size for Windows Server is 50 increase to 200 or 300 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
28
29
Networking Best Practices: Shared Server vs. Dedicated Server Dedicated server gives very best performance
Each client connection has its 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
30
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.
31
32
33
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. (60 Seconds default in 11.2). Tune down from there. Too low false positives SQLNET.OUTBOUND_CONNECT_TIMEOUT 10gR2 and later Not set by default. These two timeouts can be used individually or at the same time
34
Networking Best Practices: TCP Optimization on Windows Vista / Server 2008 supports TCP auto-tuning For other versions, *careful* tuning necessary under RegKey
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\ Services\Tcpip\Parameters
If desired, tune Window Size at the Interface Level (eg network card level)
Tcpip\Parameters\Interfaces\<interfaceGUID>\ TcpWindowSize
35
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.
36
Use ASM whether single-instance or RAC use most recent version of ASM Benefits
Dont need to move datafiles around Dont need to take tablespaces offline Add disks with no downtime
37
ASM
Non-ASM
(Gets out of tune in time)
CERN testing on 11.2 Beta: ACFS much faster than ext3 with comparable or less CPU usage
TIME
38
700
600
seconds
500
400
300
200
100
0 ext3 async ext3 directio ocfs directio IO type ocfs direct+async asm async
39
Siebel Web
PSFT EBS
DW ODS
DB Datafiles
40
11g: Use MEMORY_TARGET for automatic management of combined SGA and PGA 10g and earlier:
Control SGA Memory by using SGA_TARGET parameter Control PGA Memory by using PGA_AGGREGATE_TARGET parameter
41
Specific to 32-bit
42
32 bit Memory Best Practices Dont use 32-bit Windows! Move to 64-bit Windows if at all possible!!! Memory issues on Win32 are a pain to deal with. 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
43
Monitoring Memory
44
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
45
Windows Server Memory Limits (32-bit) Standard Edition: 4GB Enterprise Edition:
SGA
3GB
Code
64GB
memory
46
Memory from AWE calls used for db buffers only. The amount of AWE memory allocated equals db_block_size times db_block_buffers.
rest of RAM
3GB
Code
Oracle operating system process. Normally limited to 3GB of address space. With VLM, Oracle can get up to 12GB of database buffers.
47
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
48
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).
49
Specific to 64-Bit
50
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
51
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 64bit database
52
Use SP2 or later for Windows Server 2003 to avoid OS performance bug. (Fixed in 2008) 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
53
High Availability
54
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)
55
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
56
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.4 Oracle provides platform independent Oracle Clusterware to handle failover of services to surviving nodes Uses Oracles own clustering software, it does not depend on MSCS
57
Oracle Data Guard Data Guard is Oracles 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
58
Next Steps
59
60
More Information
61
QUESTIONS ANSWERS
62
Oracle OpenWorld
63
Oracle OpenWorld
Beijing 2010
December 1316, 2010
64
Oracle Store
Buy Oracle license and support online today at oracle.com/store
65
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 Oracles products remains at the sole discretion of Oracle.
66
67
68