Download Configuring Oracle on Linux For Peak Performance

Document related concepts

Serializability wikipedia , lookup

DBase wikipedia , lookup

SQL wikipedia , lookup

Entity–attribute–value model wikipedia , lookup

Microsoft Access wikipedia , lookup

IMDb wikipedia , lookup

Extensible Storage Engine wikipedia , lookup

Btrieve wikipedia , lookup

Microsoft SQL Server wikipedia , lookup

Functional Database Model wikipedia , lookup

Open Database Connectivity wikipedia , lookup

Ingres (database) wikipedia , lookup

Concurrency control wikipedia , lookup

Relational model wikipedia , lookup

Microsoft Jet Database Engine wikipedia , lookup

Database wikipedia , lookup

PL/SQL wikipedia , lookup

Database model wikipedia , lookup

Clusterpoint wikipedia , lookup

ContactPoint wikipedia , lookup

Oracle Database wikipedia , lookup

Transcript
Tutorial HK:
Configuring Oracle on Linux For
Peak Performance
Roger Schrag
Database Specialists, Inc.
www.dbspecialists.com
LinuxWorld Conference & Expo
August 10, 1999
Today’s Presentation
• Introduction to Oracle technology
• Installing Oracle
• Managing your database
• Optimizing your database
• Where to get more information
About The Author
• 10+ years experience with Oracle technology
• Lots of Oracle DBA experience on Unix
platforms
• Mostly e-business and ERP systems
• Presenter at Oracle user groups and
conferences
• Author of various white papers
• Linux believer
Today’s Goals
• Get a basic understanding of “How Oracle
Works”
• Learn the proper way to install Oracle
• Gain access to accurate information
Oracle Quick Start
• Learn basic Oracle concepts
• Install Oracle software
• Create a default database
• Make the default database usable
• Create application schema
• Develop application
• Big picture issues (backups, capacity planning…)
An Introduction to
Oracle Technology
• Platform independence
• Database terminology
• Important files
• Oracle process architecture
• Environment variables
• Optimal flexible architecture
• Interacting with a database
Platform Independence
• Abstraction of platform-specific issues
• Generic and platform-specific documentation
• Oracle skills transfer well from one platform
to another
Database Terminology
• Key fundamentals
• Learn them correctly
• Many “Oracle-isms”
Terminology
DBA
• Stands for “database administrator”
• Involved in logical design of a
database
• Performs the physical design and
implementation
• Assists developers with difficult
database issues
• Responsible for ensuring good
performance, proper security, as well
as backup and recovery strategies
Terminology
Database
• A collection of operating system files that
make up one physical data store or node
• Many different types of data, each with its
own attributes, can be stored in one database
Terminology
Database Name
•
•
•
•
Every Oracle database has a name
Eight characters or less
Default global domain name is “.WORLD”
Best to give each database a unique name and
use one common domain
Terminology
Instance
• A set of operating system processes and
shared memory structures which allow an
application to access data in a database
Terminology
Instance Name
• Also known as SID (System Identifier)
• Applications identify which instance they
wish to access by name
• The convention is to give an instance the
same name as the database it accesses
Terminology
SGA
• Stands for System Global Area
• A collection of shared memory structures
created by an Oracle instance
• Each process of the instance attaches itself to
the SGA upon startup
Terminology
Starting the Database
• Opening a database so that applications may
access it
• Done by starting up an instance and mounting
it to the database
Terminology
Net8 or SQL*NET
• Networking infrastructure that allows
applications to access databases on remote
servers
• Was called SQL*Net before Oracle8
• Renamed to Net8
Terminology
Client/Server
• Oracle internally uses a client/server
architecture
• The application accessing Oracle is seen as
the client, the Oracle server process is a
server
Terminology
Username
• Each user in an Oracle database has a unique
name up to 30 characters in length
• Separate usernames in the database do not
need to map to separate real-life users
Terminology
Schema
• A separate namespace for database objects
such as tables, indexes and stored procedures
• Every database object resides in one schema
• Each database user has one schema with the
same name as their username
• Username = schema
Terminology
Data Dictionary
• Repository of information indicating all of
the users defined in the database and all of
the objects they own
• A set of database tables with names like
user$ and tab$
Terminology
SYS and SYSTEM
• SYS user owns all of the internal structures that
make up the data dictionary for the database
• SYS user has all privileges on the database
• SYSTEM user has DBA privileges also
Terminology
Control Files, Data Files, Redo Logs
and Parameter Files
• The physical files that make up an Oracle
database
Terminology
Tablespace
• A named collection of one or more physical
files used for storing database objects
• Mask certain implementation details from
application developers
Terminology
Extent
• One contiguous chunk of physical storage
within a tablespace
• Can range in size from 2 Kb to 2 Gb, but must
be contiguous
Terminology
Segment
• A collection of extents that belong to one
object
• Physical storage used to hold the data for an
object
• Most hold the contents of a table or index,
but there are other types of segments as well
Terminology
Rollback Segment
• Stores “undo” information for a transaction
that is still in progress
• Allows Oracle to back out the transaction if
the application requests a rollback
• Enables one session to update data while
another is querying the same data
Terminology
Temporary Segment
• Holds a partial result set when too much data
is involved to complete the operation in
memory
• Commonly used when sorting data for
ordering, grouping, or building an index
Terminology
Identifier
• Most are limited to 30 bytes in length and are
case-insensitive
• Unless quoted, identifiers must start with a
letter and may include letters, digits and
certain special characters like _, $, and #
Terminology
The Files That Control an
Oracle Instance
• Parameter file
• Password file
The Files That Make Up a Database
• Control files
• Data files
• Online redo logs
• Archived redo logs
The Oracle Process Architecture
• Database
• Instance
• Net8
• Applications
The Oracle Instance
• Shared global area (SGA)
• Daemon processes
• Server processes
Oracle Daemons
Process Monitor
System Monitor
Log Writer
Database Writer
Checkpoint
Archiver
Recoverer
Job Queue
Lock
PMON
SMON
LGWR
DBWn
CKPT
ARCH
RECO
SNPn
LCKn
Oracle Process Architecture
Making an Oracle
Database Available
1. Start an instance
2. Mount the database
3. Open the database
Accessing a Local Database
1. Application forks an Oracle server process
2. Environment variable indicates which local
database to access
3. setuid bit allows server process to attach to
SGA, read data files
4. Application communicates with server
process via IPC
Accessing a Remote Database
1. Net8 client resolves alias to hostname, port,
and instance name (in the case of TCP/IP
protocol; other protocols supported)
2. Net8 client sends a request to the Net8
listener on the database server
3. Net8 listener on database server forks an
Oracle server process
4. Application communicates with server
process using any supported protocol
Environment Variables
•
•
•
•
•
•
•
•
•
ORACLE_HOME
LD_LIBRARY_PATH
PATH
ORACLE_SID
TWO_TASK
NLS_LANG
ORA_NLS33
ORACLE_BASE
DBA
$ORACLE_HOME
• Location of Oracle software installation
• For example: /u01/app/oracle/product/8.0.5
• Always required
$LD_LIBRARY_PATH
• Location of Oracle shared libraries
• Must include $ORACLE_HOME/lib
• For example:
/u01/app/oracle/product/8.0.5/lib
• Always required
$PATH
• Location of Oracle executables
• Must include $ORACLE_HOME/bin
• For example:
/u01/app/oracle/product/8.0.5/bin
• Always required
$ORACLE_SID
• Name of local Oracle instance to access
• For example: MYDB
• Overridden if application specifies Net8 alias
or if $TWO_TASK is set
• Required if application does not specify Net8
alias and $TWO_TASK is not set
$TWO_TASK
• Net8 alias for local or remote Oracle instance
to access
• For example: MYDB
• Overridden if application specifies Net8 alias
explicitly
• Optional
$NLS_LANG
• Language and character set of client
application
• Format is
language_territory.CHARSETNAME
• For example: american_america.US7ASCII
• See platform-specific installation guide for a
list of supported settings
• Required when default character set is not
being used
$ORA_NLS33
• Location of Oracle client NLS character set data
• Typically
$ORACLE_HOME/ocommon/nls/admin/data
• For example:
/u01/app/oracle/product/8.0.5/ocommon/nls/admin/data
• Required when default character set is not being
used
$ORACLE_BASE
• Location of OFA directory structure
• For example: /u01/app/oracle
• An optional convenience
$DBA
• Location of instance-related administrative
files
• For example: /u01/app/oracle/admin
• An optional convenience
Optimal Flexible Architecture
• A set of best practices for installing Oracle
• Developed by Oracle Consulting and refined
over the years
• Observed reasonably well by the Oracle
Installer
• See platform-specific administrator’s
reference for complete OFA specification
OFA Guidelines
• Assigning and naming mount points
• Directory hierarchies
• Naming conventions for all files
• Naming conventions for tablespaces
• Policies for assigning segments to tablespaces
OFA Benefits
•
•
•
•
A standardized methodology
A good naming convention
Files organized in an easy-to-find manner
Support for multiple databases or Oracle
releases on one server
• Separation of Oracle software and database
files
• Ability to distribute I/O across many physical
devices
Key Directories in an
OFA-Compliant Installation
• $ORACLE_BASE
• $ORACLE_BASE/product/<version>
• $ORACLE_BASE/admin/$ORACLE_SID
–
–
–
–
–
pfile
bdump
cdump
udump
create
• <mount point>/oradata/<dbname>
Accessing an Oracle Database
(as a DBA)
• SQL*Plus
• Server Manager
• Enterprise Manager
Installing Oracle
• Prepare the server
• Install the Oracle software
• Create a database
• Complete the server configuration
Our Installation Environment
• Oracle 8.0.5 Standard Edition
• Red Hat Linux 5.2
You are welcome to use other versions of
Oracle or other distributions of Linux, but
you may need to deviate from these steps
Oracle 8i
• Just became available in late July
• Installs very differently than Oracle 8.0.5
• Released too late to include in this presentation
Prepare the Server
1.
2.
3.
4.
5.
6.
7.
Meet the software requirements
Meet the hardware requirements
Meet the kernel parameter requirements
Create a Linux group for DBAs
Create a software owner Linux account
Create mount points
Choose a local bin directory
Prepare the Server (continued)
8. Mount the CD ROM
9. Create the /etc/oratab file
Install the Oracle Software
1. Edit software owner’s login script
2. Log out and back in to set environment
3. Verify that TCP/IP is working
4. Ensure there is enough storage space
available
Install the Oracle Software (continued)
5. Run the Oracle Installer to install software
a. Choose a custom install
b. Choose to install software without creating a
database
c. Choose a language for database messages
d. Choose the products to install
e. Choose the DBA and osoper groups
Install the Oracle Software (continued)
6. Add enhancements to the oraenv script
7. Add enhancements to the dbshut script
8. Perform certain steps as the root user
9. Double check file permissions
Create a Database
1. Choose a database block size
2. Tweak an Installer script to get the desired
block size
Create a Database (continued)
3. Run the Oracle Installer to create a database
a.
b.
c.
d.
e.
f.
g.
h.
Choose a custom install
Choose to create database objects
Choose relevant products for database creation
Choose to create a filesystem-based database
Specify the mount point for the database
Choose the character sets for the database
Choose database passwords
Choose whether to load SQL*Plus help and
demo
Create a Database (continued)
4.
5.
6.
7.
Configure the Net8 listener
Prepare a tnsnames.ora file
Improve the parameter file
Relocate data files and redo logs to balance
I/O
8. Configure the temporary tablespace
9. Configure rollback segments
10.Create application tablespaces
11.Create application schemas and roles
Complete the Server Configuration
1. Update the /etc/oratab file
2. Remove hardcoding from software owner’s
login script
3. Create separate Linux accounts for database
users
4. Configure automatic database start on server
reboot
Managing Your Database
• Starting and stopping
• Connectivity and troubleshooting
• Schemas and users
• Tablespaces and segments
• Fault tolerance and backups
Opening and Closing a Database
• Invoking Server Manager
• Authentication
• STARTUP
• SHUTDOWN
Starting and Stopping the
Net8 Listener
• Invoking the listener control tool
• START
• STOP
• RELOAD
Logs and Trace Files
• Instance alert log
• Trace files for daemons
• Trace files for server processes
• Net8 logs
Net8 Connectivity Problems
•
•
•
•
•
TNS: could not resolve service name
TNS: unable to connect to destination
TNS: no listener
ORACLE not available
TNS: listener could not resolve SID given in
connect descriptor
Schemas and Users
• Application owner schemas
– Contain application schema objects
– Not used by end users
• Individual Oracle users
–
–
–
–
Database authenticates end users
Synonyms reference application objects
Privileges to access application objects
Commonly used in client/server systems
Schemas and Users (continued)
• Generic Oracle users
–
–
–
–
Application authenticates end users
Synonyms reference application objects
Privileges to access application objects
Commonly used in web-based systems
Tablespace Functions
Tablespace Contents
Data dictionary and Oracle internals
Name in Default Database
SYSTEM
Rollback segments
RBS
Temporary segments
TEMP
Oracle and third party tools
TOOLS
Unclassified user segments
USERS
Application tables
n/a
Application indexes
n/a
Assigning Application Segments
to Tablespaces
• Use separate tablespaces for each application
• Place tables and indexes in separate
tablespaces
• Separate segments that grow or shrink rapidly
from more static ones
• Separate segments that are created and
dropped frequently from longer lived ones
• Give large segments their own tablespace
Segment Storage Parameters
Name
initial
next
pctincrease
minextents
maxextents
pctfree
pctused
Purpose
Size of the initial extent
Size of the next extent to be allocated
Factor by which to increase the size of each
successive next extent
Initial number of extents to allocate
Maximum number of extents the segment is
allowed to have
Space to leave empty in each new block to allow
for updates that cause data to take up more space
How much space in a block must be free before
additional data will be inserted
Choosing Storage Parameters For
Segments to Maximize Performance and
Minimize Fragmentation
• Set the default storage clause for each
tablespace as follows:
INITIAL
NEXT
MINEXTENTS
MAXEXTENTS
PCTINCREASE
128k, 4m, or 128m
Same as INITIAL
1
1024
0
Choosing Storage Parameters For
Segments to Maximize Performance and
Minimize Fragmentation (continued)
• When creating segments, assign them to a
tablespace but do note specify storage
parameters
Optimizing storage parameters was much more complicated
with earlier versions of Oracle, but starting with Oracle 7.3
this task became greatly simplified.
Make Your Database Fault Tolerant
• Store multiple control files on separate
devices
• Store multiple members of each online redo
log group on separate devices
• Store data files on RAID filesystems
Eliminate single points of failure wherever possible.
Backing Up an Oracle Database
• Export
• Cold Backups
• Hot Backups
• Recovery Manager
Optimizing Your Database
• Tuning applications
• Sizing the SGA
• Balancing I/O
• Tuning sorts
• Configuring rollback segments
Tuning Database Applications
• Use bind variables to reduce parsing
• Tune queries so Oracle can run them efficiently
– Use tools like EXPLAIN PLAN and TKPROF
– Look inside the SGA while application is running
• Tune application logic to make the most of SQL
and PL/SQL
Application tuning usually gives the biggest bang for the buck when
optimizing Oracle systems. Reducing running time from 18 hours to ten
minutes by changing one line of code is not uncommon.
Sizing the SGA
• Size the buffer cache
– Set the db_block_buffers parameter
– Query v$sysstat to check hit ratio
– Consider checking extended LRU statistics
• Size the shared SQL area
– Set the shared_pool_size_parameter
– Consider use of bind variables and PL/SQL when
sizing
Maximize cache hit ratios while keeping the entire SGA in
physical memory at all times.
Balancing I/O
• Assign segments to tablespaces carefully
• Distribute data files across physical devices
• Query v$filestat to check I/O counts
• Adjust file placement as needed
Tuning Sorts
• Set sort_area_size parameter
• Assign all users a temporary tablespace
• Set content type of temporary tablespace to
TEMPORARY
• Set storage parameters on temporary
tablespace
Configuring Rollback Segments
• Lots of small segments for OLTP
• A few large segments for batch
• Usually, need to mix the two
Where To Get More Information
• Oracle documentation
• Other publications
• Oracle Technology Network
• Oracle user groups
• Free web resources
Slide Show and Tutorial Are
Available in Soft Copy
Visit
http://www.dbspecialists.com/present.html
for this presentation
Contact Information
Roger Schrag
[email protected]
Database Specialists, Inc.
388 Market Street, Suite 400
San Francisco, CA 94111
415-344-0500