Upload
gjaggu
View
163
Download
21
Tags:
Embed Size (px)
Citation preview
Oracle Database Administration ILesson 1 Oracle Server Architecture
Overviewu u u
Set of data to store and access information Based on a relational model of rows and columns stored in tables Also Object-oriented (OO) structuresn
Abstract datatypes and methods
u
Contains these components:n
Physical Memory Process
n
n
2
Oracles Overall Roleu u u u u
Retrieve data File I/O Space Management Change Management Access Management
3
Oracle Database Administration I 1
Database Structureu u u u u u u
Data file(s) Control file(s) Redo logs Init.ora (spfile.ora 9i) Trace Alert log Password
4
Instance Structureu
Memory structures are allocatedn
Collectively known as System Global Area. 95% defined by data block buffer cache, Shared SQL Pool, Large Pool and Java Pool.
n
u u
Oracle background processes are started. Single database accessible by multiple instances RAC (Real Application Cluster) a.k.a. parallel server
5
Instance Definedu
Defined by initialization parameter(s) that determine the size and composition Can be dynamically altered initSID.ora (ascii file) spfileSID.ora (binary file) configSID.ora (usually only used to create a database notwidely used)
u u u u
6
Oracle Database Administration I 2
Oracle Instanceu
Composed of:n
SGA (System Global Area) PGA (Program Global Area) Oracle BACKGROUND processes
n
n
7
System Global Area (SGA)u
Shared memory region allocated by Oracle for an Oracle database Allocated when the Oracle database is started The SGA should be in non-paged, non-swapped memory
u u
8
SGA Compositionu u u u u u u
Buffer cache Shared SQL Pool Large pool (optional) Java pool Redo log buffer Dictionary cache Other miscellaneous items
9
Oracle Database Administration I 3
PGA Compositionu
Non-shared memory area to which a process (server or background) can write Allocated by Oracle when a user connects to an Oracle database and a session is created
u
10
Oracle Instanceu
Required Background Processes:n
DBWn LGWR SMON PMON CKPT (9i)
n
n
n
n
11
Oracle Instanceu
Optional Background Processes:(not all inclusive)n
ARCn CKPT (prior to 9i) RECO Lock (LCK0) Job Queue (SNPn) Queue Monitor (QMNn) Dispatcher (Dnnn) Server (Snnn for dedicated MTS servers)
n
n
n
n
n
n
n
12
Oracle Database Administration I 4
Oracle Instance More Details
SGAu u u u
Buffer Cache Redo Log BUFFER Shared SQL Pool Dynamic (as of Oracle 9i)
14
Dynamic SGAu
Defined in Granulesn
SGA < 128mb SGA > 128mb
4mb size 16mb size
n
u u u
Can be modified on the fly (9i) Establish an overall maximum Initially allocated 4 for small, 3 for large (fixed SGA, buffer cache, Shared pool)
15
Oracle Database Administration I 5
Data Buffer Cache Structureu
Can be defined in two ways:n
By block db_block_buffers By byte db_cache_size
n
u
Was divided into blocks the same size as the blocks in the datafiles As of 9i, multiple buffer cache introduced (depends on block size of each tablespace) Size and number defined in the initialization Parameter File Holds copies of data blocks read from disk
u
u u
16
Data Buffer Cache Contentsu u
Stores the most recently accessed BLOCKS OF DATA Contains PINNED buffersn
Data being accessed Data that has been MODIFIED, but not written to disk
u
Contains DIRTY buffersn
u u
FREE buffers Two lists, write and LRU
17
REDO Log Buffersu u u
Stores the REDO ENTRIES (changes to the database) Default is four times the OS block size Larger reduces log I/O and uncommented redo to online redo logs Changed data is moved from the database buffer cache to the redo log buffer then to the redo log files
u
18
Oracle Database Administration I 6
Shared Poolu u
Can be dynamically modified (9i) Must be an integer multiple of the granule sizeu
Oracle will round up if not
u u
Managed by LRU algorithm Contains:n
Library Cache Data Dictionary Cache Control structures Reusable Runtime Memory
n
n
n
19
Shared Pool
20
Shared Poolu
Library Cachen
SHARED by all users for commonly used SQL statements Shared and Private SQL areas for executed statements PL/SQL Procedures and Packages Allocation and Reuse of Memory
n
n
n
21
Oracle Database Administration I 7
Library Cacheu
Shared SQLn
PARSE TREES for SQL statements EXECUTION plans for SQL statements Size dependent on complexity
n
n
u
Private SQLn
Each session has one Persistent and Runtime areas Cursors
n
n
22
Library Cacheu
PL/SQL Program Unitsn
Procedures, functions, Packages, anonymous blocks and database triggers
u
Allocation and Reuse of Memoryn
Every SQL statement submitted, Oracle automatically allocates memoryu u u
Checks for existence Allocate private SQL area May flush the shared pool
23
PGA
24
Oracle Database Administration I 8
PGAu
Varies depending if dedicated or Shared servers (MTS) are used Stack space Session information (PGA verses Shared Pool) Memory allocated to hold a sessions variables and arrays Automatically managed in 9i with the SQL memory management
u u u u
25
Questionsu u u u u
What is the name of Oracles memory structure? What are its contents? How is it divided? If I have 150 mb SGA, why does Oracle change the size? Can you vary sizes of Oracle blocks?n
If so, how?
26
Oracle Databaseu
Composed of two structures:n
Physical (Operating System view) Logical (Oracles view)
n
27
Oracle Database Administration I 9
Physical View Files
Physical Structureu
Made up of:n
Data files Redo Log Files two or more with members One or more Control Files One Parameter File Trace and alert log files One Password file
n
n
n
n
n
29
Datafileu u u u
Disk space for a tablespace One or more per tablespace Associated with only one tablespace Consists of segments:n
UNDO, Temporary, Data, index, undo, LOB and cache (for the most part)
30
Oracle Database Administration I 10
Redo Log Filesu
Characteristicsn
Record changes made to the data by various transactions Help RECOVER the data in case of a failure Streamline the process of how data is written to disk
n
n
31
Control Filesu
u u
Record of the overall architecture and status of the database Easily moved and recovered Contain the following:n n n
Database NAME Datafiles NAMES and LOCATIONS Redo log file NAMES, Log sequence number and LOCATIONS
32
Parameter Fileu
Attributes of an instance are defined through an Oracle Parameter File Determines the size and characteristics of the instance Stored in an ASCII file or housed with the database in a binary file
u
u
33
Oracle Database Administration I 11
Parameter Fileu
The only Oracle file that is ASCII All other files are binary and not directly changeable by the DBA Read-only when the instance startsn
u
u
Most changes require a stop and restart of the instance
34
Trace and Alert Logsu
Trace files contain information about significant events Alert log records the commands and results of major events in the life of the databasen
u
Monitor daily Rename for historical purposes
n
35
Logical View Structures
Oracle Database Administration I 12
Logical View Structuresu u u u u
Tablespace(s) Schema objects Segments Extents Data blocks
37
Tablespace(s)u u u
Logically divides a database One or more datafiles are explicity created for each one Logically divided into segments that are further divided into extents and blocks Can be defined as read-only A unit of space to store a schemas objects
u u
38
Object(s)u
Schema(s)n
A collection of objects owned by one Oracle user Tables, indexes, views, sequences, stored procedures, functions, packages, UNDO segments
u
Object(s)n
39
Oracle Database Administration I 13
Extents and Blocksu u u u
A collection of the smallest object in a database An extent can be of a varying size Extents MUST be contiguous Blocks are the finest collection of space in an Oracle database
40
Questionsu u u u u
What are the physical files of a database system? What are the logical entities of a database? What is the smallest structure? Which structure MUST be contiguous? Which structure will tell you event information?
41
Background Processes Review
Oracle Database Administration I 14
Background Processesn
Every instance has BACKGROUND PROCESSES BACKGROUND PROCESSES perform I/O, handle process cleanup and monitor the ORACLE database Provide support, increase performance, assist in recovery and make the database more reliable
n
n
43
Background Processesu u u u u u
DBW0 (DBWn) LGWR PMON SMON CKPT ARCn
44
Database Bufferu
After the changed data (redo entries) are written to the online redo log files, the changed data will be written to disk These changed data are called dirty Dirty data are moved to the write list Dirty data can be on the write list and on the LRU list
u u u
45
Oracle Database Administration I 15
DBWnu
At some time after the redo entries have been written into the online redo logs, the database writer (DBWn) writes the dirty buffer back to the database This is called delayed write and is based on initialization parameters
u
46
DBWn (Database Writer)u
Can have one or more runningn
Only available on systems with Asynch I/O Can use I/O slaves to duplicate the above on systems without itKeeps the BUFFER CACHE clean and free
n
u
Performs all WRITES to the databasen
47
When does the DBWR write?u u u
The dirty list reaches a threshold length A DBWR timeout LGWR issues a checkpoint
48
Oracle Database Administration I 16
LGWR (Log Writer)u
Writes the REDO log entries (located in the REDO LOG BUFFER) to the REDO LOG files Only the changed data, not the entire Oracle block(s) is written to the redo logs Issues checkpoints
u
u
49
Online Redo Log Filesu
The online redo log files hold the redo entries Only the changed bytes are written to the online redo log file The entire data block is not written to these logs
u
u
50
Online Redo Log Filesu
There is a fixed number of online redo log file groups Defined at database creation time Can add or drop groups or members (discussed later)
u u
51
Oracle Database Administration I 17
Online Redo Log Filesu u
Redo log file groups cycle If there are three redo log file groups:n
When the first group is full, LGWR starts writing to the second group When the second group is full, LGWR writes to the third group When the third group is full, LGWR writes to the first group
n
n
52
LGWR (Log Writer)u
What causes the LGWR to clear the REDO LOG BUFFER and transfer the transactions to disk?n
When a user process COMMITS a TRANSACTION TIME-OUT (caused every three seconds) When the redo log buffer becomes 1/3 FULL When the DBWR writes the dirty buffers to disk
n
n
n
53
LGWR (Log Writer)u
LGWR can be bypassedn
Use the UNRECOVERABLE key word This is to be used very carefully. No redo entries will ever exist after this point Best used for temporary object creation
n
n
54
Oracle Database Administration I 18
PMONu
Cleans up after failed server processes by releasing system resources FREEs resource locks Rolls back aborted processes Restarts dispatchers and shared-server processes
u u u
55
SMONu
INSTANCE RECOVERY performed at startup CLEANS up temp segment(s) no longer in use Can coalesce fragmented tablespaces
u
u
56
CKPTu
Updates the header record of the data files with a SCN (System Change Number) This SCN is used for synchronization of all files Does this on behalf of the LGWR Can be a source of I/O contention with the LGWR
u u u
57
Oracle Database Administration I 19
Archive Modeu
Saves the online redo log files as archived redo log files A database in archive log mode can be restored to the last committed transaction Production databases are run in archive log mode
u
u
58
ARCnu
Copies the REDO logs to the ARCHIVE storage when the REDO logs become filledn
Process was optional before 9i, but now is automatically started when archivelog mode is set. Must be turned on
n
59
ARCnu
ARCn copies a filled online redo log file to an archived redo log file ARCn gives each archived redo log file a unique name ARCn must be finished copying the online redo log before it is overwritten
u
u
60
Oracle Database Administration I 20
Process Questionsu
Which process can cause the DBWR to write to disk? Which process can coalesce the free space in a tablespace? Which process wakes up to take care of shared servers?
u
u
61
How does this all fit together?
Instance and Databaseu u u
The instance is started The instance mounts the database The database opensn
Users may now use the database
63
Oracle Database Administration I 21
User Processu
In network access mode (web or client/server), a user process utilizes the Transparent Network Substrate (TNS) that allow the client applications (i.e., ORACLE tools) to communicate with the server processes Initiates a session on the PC that connects to a dedicated server process
u
64
Sessionu
The activity of a user from the time the user connects to the database to the time the user disconnects from the database Can execute multiple transactions
u
65
User Starts Transactionu u u
A user application on the PC talks to SQL*Net SQL*Net talks to the user server process The server process parses the SQL statement and validates it
66
Oracle Database Administration I 22
A Transaction is Startedu
A logical unit of workn
One or more SQL statements that must all be saved (committed) or discarded (rolled back) as a group
u
Begins with the first executable SQL statement
67
A Transaction is Startedu
Ends with a COMMIT or ROLLBACK SQL statementn
Explicitly with a COMMIT or ROLLBACK Implicitly when a DDL statement is issued
n
u
The EXIT statement will do a commit by default
68
Dedicated Server
Assume for now that we have a Dedicated Server Architecture(Multi Threaded Server, MTS will be discussed later)n
Each user has one server process Each server process works for only one user Session information is stored in the PGA
n
n
69
Oracle Database Administration I 23
Dedicated Serveru
The user process on the PC communicates to the server through Oracles SQL*NET A network listener process is created A dedicated server process is created
u u
70
Server Processu u u
An OS process that works on behalf of the user Reads the data from disk into the buffer cache Communicates with the database for the usern
User processes do not connect directly to the database
71
What does the server process do?
Oracle Database Administration I 24
SGA Activityu
The server process reads data from the database datafiles and stores it into the data buffer cache The user SQL statement changes the data in the data buffer cache
u
73
PGA (Program Global Area)u
An area in memory that contains data and controls information for a single usern
Memory is ALLOCATED when a user process connects to the database Extra memory is allocated for session management if in dedicated server mode
n
74
PGA (Program Global Area)u
What does the PGA hold?n
Variables Arrays Other User information for a particular user
n
n
75
Oracle Database Administration I 25
Physical and Logical readsu u
Physical reads get data from the datafiles Logical reads get data from memory (The SGA data buffer cache) All managed by the server process(es)
u
76
The SQL Statementu
The server process receives the SQL statement. Processed either by:n
If an identical SQL statement is found in the shared pool, it uses it If not found in the shared pool, a new shared SQL area is allocated
n
u
There are three phases to a SQL statement:n
PARSE, EXECUTE and FETCH
77
PARSEu
CHECKS the statement for syntactic and semantic validityn
Data Dictionary
u
Ensures the processes issuing the command has the RIGHTS to execute the command ALLOCATES a private SQL area for the statement ( PGA ) SCANS existing SQL area for matching statement
u u
78
Oracle Database Administration I 26
PARSE TREEu
Method Oracle uses to find the specific data in the databasen
Two Typesu u
Cost Optimization Rule Optimizationn
Banner uses rule
79
EXECUTEu
Will only execute if the PARSE is successful APPLIES the PARSE TREE to the data PERFORM physical and logical reads
u
u
80
EXECUTEu
CHANGES data where necessary Performs constraint CHECKING FETCH RETURNS rows of data for a SELECT statement
u
u
81
Oracle Database Administration I 27
UNDO Segmentsu
The data before it was changed is written to the UNDO segmentsn
These segments are in a tablespace
u
If the user rolls back the data, the UNDO segments are used to restore the old data
82
Redo Log Bufferu u
The changed data is placed in the redo log buffer If the data is committed, the LGWR writes the changed data to the online redo log files The commit is completed after the data is written to the redo log
u
83
SGA ReviewBuffer Cache Shared Pool Redo Log Buffer
Oracle Database Administration I 28
Buffer Cacheu
Consists of buffers the size of the data blocks (only option prior to 9i) or in bytes Two purposes:n
u
To improve performance for repeated statements usage To allow users to make changes quickly in memory
n
u
Contains two lists:n
LRU WRITE
n
85
LRU (Least Recently Used)u
Data retained in SGA is by time ordern
Newest to oldest information Longer it sits, older it becomes When new space is needed or a CKPT (checkpoint) has occurred:u u
n
n
DIRTY buffers are written to disk and removed from memory Oldest data in the SGA can be written over
86
Parts of the Buffer listsu
FREEn
Empty section of memory ready for data
u
DIRTYn
Section of memory that CONTAINS data that has been modified, but not yet written to disk
u
PINNEDn
Data that is currently in use and has been locked
87
Oracle Database Administration I 29
Redo Log Bufferu u
Written to when a user modifies data The server process moves the changed data from user memory to this buffer Contains only the redo entries LGWR writes the redo entries to the online redo log file
u u
88
Shared Poolu
Has two mandatory structures:n
Library Cache Dictionary Cache
n
u
One optional structuren
Large Pool
89
Mandatory Contentsu
Data Dictionary cache (also called row cache)n
Dictionary row information recently accessed
u
Library cachen
Parsed statements Execution plans
n
90
Oracle Database Administration I 30
Read ConsistencyHow Oracle maintains a Consistent view of the data for each transaction
UNDO Segmentsu
Main purposen
Read consistency Transaction rollbacku u u
n
User initiated ROLLBACK Abnormal termination Abnormal database termination
92
UNDO Segmentsu
Containsn
Block Information File names and block ID Data as it existed before a transaction Transaction numbers
n
n
n
93
Oracle Database Administration I 31
UNDO (Rollback) Segmentsu
Stores the data before it was changed by a transaction If the user cancels a transaction (rolls back the data), the UNDO segments are used to restore the old data Discussed in a later section
u
u
94
UNDO Segmentsu
Record the transaction that occurred on the datan
Should an error occur during a modification of data, the record retained by the UNDO SEGMENT will restore the data prior to the modification attempt
95
Read Consistencyu
Ensures data seen by a statement is consistent with respect to a point-in-time Even data changed by another transaction is not seen during the transaction
u
96
Oracle Database Administration I 32
Read Consistencyu
Basic principlesn
Readers can not lock data blocks Readers can not block other readers Readers can not block writers Writers can not block readers Writers can block writers
n
n
n
n
97
COMMITu u u u
When a statement is executed and saved Can be explicitly or implicitly commited Ends the current transaction Generates a System Change Number (SCN)
98
COMMITu
What happens when a COMMIT is made?n
Modification becomes PERMANENT A copy of the transaction is placed in the REDO BUFFER Redo buffer is FLUSHED to the REDO LOGS
n
n
99
Oracle Database Administration I 33
COMMITu
When a COMMIT is made:n
User is NOTIFIED Resource locks are RELEASED DBW0 may WRITE the data back to the database fileu
n
n
Note: Issuing a COMMIT does not guarantee that a transaction has been written back to the DATAFILE
100
Redo Log Filesu
When a REDO BUFFER is flushed, its information is stored in the REDO LOG FILESn
Hold records of all transactions that have been applied to the database With these entries, a database can be reconstructed during a database crash
n
101
Redo Log Filesu
REDO LOG FILESn n
REDO LOG FILES are circular When a transaction is COMMITTED (data modified), the LGWR transfers the statement from the REDO LOG BUFFER to the REDO LOG FILES A SCN (System Change Number) is also associated to each COMMITTED transaction that is written to a REDO LOG FILE
n
102
Oracle Database Administration I 34
Redo Log Filesu
When a REDO LOG FILE becomes full, the LGWR moves to the next filen
If there are no new REDO LOG FILES, the old files are reused If these other files were not archived, all data before this point can no longer be recovered
n
103
Archiving Redo Logsu
If ARCHIVELOG is ENABLED, redo log files can be stored Archiving can be duplexed Standby databases can use these same archives
u u
104
Checkpoint Variables in Parameter Fileu
LOG_CHECKPOINT_INTERVAL (will be obsoleted in 10i)n
Number of filled REDO LOG FILE blocks written between consecutive CHECKPOINTS (OS-dependent)u
NOTE: Do not make this value larger than the REDO LOG FILE. If it is larger, the CKPT only occurs when switching logs
u
LOG_CHECKPOINT_TIMEOUTn
Maximum amount of time before another CHECKPOINT occurs (default 900 sec)
u
LOG_CHECKPOINT_TO_ALERTn
Puts the checkpoint information in the alert_SID.ora file.
105
Oracle Database Administration I 35
SWITCHING LOG FILESu
Occur in Two waysn
Filled REDO LOG Forced by DBA with the ALTER SYSTEM SWITCH LOGFILE command
n
106
Multiplexing Redo Log Filesu
Increase the security of the Oracle databasen
Groups must contain identical sets of logfiles (names should be different) Place on different disks to help increase the REDO LOG files chances of survival should there be a computer failure When the REDO buffers are flushed to the REDO LOG files, the information to be stored is mirrored to a log file in both groups
n
n
107
Multiplexing Redo Log Files
1,3,5,.. A_LOG1 A_LOG2 2,4,6,.. LGWR B_LOG1 B_LOG2 Group 1 Group 2
108
Oracle Database Administration I 36
CONTROL FILEu
A binary file that is necessary for the database to runn
Should remain read/write to the database File is constantly updatedu
n
NOTE: It is an excellent idea to have backup copies of this file, in case something should happen to it
109
CONTROL FILEu
Containsn
DATABASE NAME TIMESTAMP of database creation TIMESTAMP of last access NAMES and LOCATIONS of databases and redo log files Current LOG SEQUENCE number
n
n
n
n
110
TRANSACTIONu
Logical unit of workn
One or more SQL statements executed by a single user
111
Oracle Database Administration I 37
TRANSACTIONu
A TRANSACTION starts when a user executes a SQL statement The TRANSACTION ends when:n
u
SQL statement is COMMITTED A user ends the session unexpectedly A user EXITS the database
n
n
112
TRANSACTIONu
The TRANSACTION is aborted when:n
A ROLLBACK occurs User TERMINATES ABNORMAL user exit Processor FAILURE Media FAILURE
n
n
n
n
113
Parameter Fileu u
initSID.ora configSID.ora
114
Oracle Database Administration I 38
Data Buffer Cache Parametersu
DB_CACHE_SIZE (9i)u
Number of blocks in the data block buffer cache (3000 to 10,000) Can have five different block sizes DB_#K_CACHE_SIZE Cannot exceed the MAX_SGA_SIZE Specifies the size of a Oracle block Cannot be changed except by rebuilding the database/tablespace (2k, 4k or 8k)
u u uu
DB_BLOCK_SIZE (bytes)u u
115
Log Buffer Parametersu
log_buffer (bytes)n
Default value is:u
256k
116
Shared Pool Parameteru
Shared_pool_size (bytes)n
75,000,000 is minimum for Banner 250,000,000 or more for production is suggested
n
117
Oracle Database Administration I 39
Archiving Parametersu
log_archive_start (true / false)n
Starts automatic archiving
u
log_archive_dest (directory path)n
The disk location of the archived redo log files
u
log_archive_format (format of the name of the archive redo log files)
118
Archiving Parametersu u
Standby_archive_dest Log_archive_dest_nn
As of 9i can be up to 10 locations (SERVICE=tns_service | LOCATION= local location) MANDATORY | OPTIONAL Used for managing the 1-10 archive destinations
n
n
u
Log_archive_dest_state_nn
119
Archiving Parametersu u
Log_archive_duplex_dest Log_archive_min_succeed_destn
V$archive_dest V$archive V$logs
n
n
120
Oracle Database Administration I 40
Checkpoint Parameteru
Checkpoints should be avoided in an OLTP system like Banner Larger redo log files will reduce checkpoints Longer checkpoint intervals, larger redo gapsn
u u
How much are you willing to lose?
u
Parametersn
log_checkpoint_interval (blocks) log_checkpoint_timeout (seconds)u
n
0 value will turn it off
121
CKPT Background Processu u u
Background Process that helps LGWR at log switch This process updates the data file header files CKPT_PROCESS = TRUEn
Used only in Oracle systems prior to 9i In 9i, remove this parameter from any init.ora. It will cause an error. Automatically started in 9i
n
n
122
Other Banner Parametersu u
dml_locks (1500 to 2000) processes (number of user plus oracle background processes) open_cursors = 1024 (2048 is better) optimizer_mode = rule (Banner requirement)
u u
123
Oracle Database Administration I 41
More to life than a DEDICATED server
Server Configurationsu
Three typesn
DEDICATED server MULTITHREAD server COMBINED user/server process
n
n
125
DEDICATED serveru
Two tasksn
USER process and SERVER process If the two processes are on the same machine, the program interface is handled by the LOCAL MACHINE'S I/O If the two processes are on different machines, the program interface is handled by a COMMUNICATION MECHANISM (SQL*Net/Net80)
n
n
126
Oracle Database Administration I 42
DEDICATED server
127
MULTITHREADED serveru
Allows many user processes to share a server processn
This allows the system resources to be freed, but can cause decreased response time for heavy users
128
MULTITHREADED ServerApplication Code
Client Workstation Database Server
Dispatcher Processes
Oracle Server Code
System Global AreaRequest queue Response Queues
129
Oracle Database Administration I 43
DISPATCHERu
The USER process connects to a DISPATCHERn
The DISPATCHER routes the USER request to the Request Queue The SERVER process checks the queue for new requests (FIFO) The SERVER process then places the response on the calling dispatcher's response queue, and then back to the application
n
n
130
Parameter Settings - MTSu u u
Mts_servers = n Mts_max_servers = n Mts_dispatchers =
(protocol=ipc/tcp) (dispatchers=N)u
Mts_max_dispatchers = n
131
Summaryu
Oracle databasen
Data, redo log, control, trace, alert log and parameter files
u
Oracle Instancen
The set of background processes which access data, log, and control files. An Oracle Instance is defined by one or more Parameter Files that is read at startup time
n
132
Oracle Database Administration I 44
Oracle INSTANCEu
Processes that controln
DATAFILES REDO LOG FILES CONTROL FILES
n
n
133
Physical structureu
One or more DATA files that contain data Two or more REDO files One or more CONTROL files One or more Parameter Files
u
u
u
134
DATAFILEu
How is a DATAFILE used?n
Data is read into stored memory cache Can manipulate, view, or change the data After you complete the transaction, the data is written back to the DATAFILE
n
n
135
Oracle Database Administration I 45
REDO log filesu
When do they help?n
n n
When a system failure has prevented Oracle from updating DATA Allows the transaction to be recalled Prevents existing data from becoming corrupted through an incomplete transaction by restoring the original information
136
CONTROL FILESu
Why does Oracle need them?n
When an Oracle database is started, the CONTROL file that is listed first in the parameter file is read Identifies the database Opens the redo logs to allow the database to function
n
n
137
SETTING BUFFERSu u
Parameter File Data buffersn
DB_CACHE_SIZEu
Cannot be used with db_block_buffers
u
Redo logn
LOG_BUFFER
138
Oracle Database Administration I 46
PGA (Program Global Area)u
MULTITHREADED PGAn
The SGA is responsible for allocating the memory to the user sessions
u
DEDICATED PGAn
PGA allocates the memory to the user sessions as needed
139
BACKGROUND PROCESSESu
DBWn (Database Writer) LGWR (Log Writer) CKPT (Check Point) SMON (System Monitor) S### (Server)
u u u u u
PMON (Process Monitor) ARCn (Archiver) RECO (Recover) Dnnn (Dispatcher) LCKn (Lock)
u
u
u
u
140
RECOu
Resolves in-doubt transactions in distributed database systems
141
Oracle Database Administration I 47
Dnnnu
Used for MULTITHREADED servern
An optional feature The Dispatcher is used to TRANSLATE communications from one protocol to another
n
142
LCKnu
Used with the PARALLEL (RAC 9i) server optionn
It instantly LOCKS data to prevent data corruption caused by simultaneous access of data by different processes
143
CKPTu
Primary goaln
Make sure all modified data buffers get written to files FORCES DBWR to clean the BUFFER CACHE CAUSES the switching of REDO LOG FILES FLUSHES the REDO LOG BUFFER to disk
n
n
n
144
Oracle Database Administration I 48
CKPTu
PROBLEMSn
The CKPT processes will put more overhead on the server May cause a considerable slowdown In 9i, the CKPT process is predefined and started. In earlier version, to activate CKPT:u
n
u
Parameter Filen n
CHECKPOINT_PROCESS=TRUE
145
Oracle Database Administration ILesson 2 Starting and Stopping an Oracle Instance
Starting and Stopping an Oracle Databaseu
Agendan
Application(s) used in starting a database Required environment settings to startup a database Various levels of a database startup and shutdown
n
n
147
Oracle Database Administration I 49
Starting an Oracle Databaseu
After the installation of Oracle, the DBA configures, creates and starts a database for user access Before you can create a database, you must start an application to begin
u
148
Packages to Use for Startupu u
SQLPLUS Use a database management tool (Enterprise Manager, TOAD) Scripts Oracle Universal Installer RMAN (Recovery Manager not discussed in this course)
u u u
149
SQLPLUSu
The replacement for Server Manager (svrmgrl) starting with release 8.1.5 With Password filen
u
Sqlplus /nologn
Then issue connect / as sysdba (9i) Connect internal as sysdba (8i to be desupported after 9i)
n
u
Without password filen
Sqlplus / as sysdba
150
Oracle Database Administration I 50
Database Management toolsu
Oracle Enterprise Manager (OEM)n
Has become more sophisticated Comes with the Enterprise Edition Use the Instance Manager as INTERNAL or AS SYSDBA
n
n
u
TOADn
Downloadable version - minimal
u
Many other types
151
Starting an Oracle Databaseu
Scriptsn
Unix: csh, sh, perl VMS: dcl, perl NT: perlu
n
n
All require several environment variables to be set prior to running any Oracle application
152
Environment Variable - UNIXu
$ORACLE_HOMEu
Set to the directory that Oracle is installed under
u
$ORACLE_SIDu
Set to the name of the database the DBA wants to startup/shutdown
u
$LD_LIBRARY_PATHu
Set to $ORACLE_HOME/lib
u
(optional) $PATHu
Should include $ORACLE_HOME/bin
153
Oracle Database Administration I 51
Setting Environment - UNIXu
Executing the script oraenv, typically located in /usr/local/bin, automatically sets all environment variables Or manually at the command promptn
u
Examplesn
ORACLE_HOME = /u01/app/oracle/9.0.1/bin ORACLE_SID=TEST
n
u
NOTE: Oracle account should set variables in $ORACLE_HOME/bin with no application-specific definitions
154
Environment Variable - VMSu
ORA_DBu
Directory location for database parameter, configuration and dump files
u
ORA_SIDu
Set to the name of the database the DBA wants to startup/shutdown
u
ORA_ROOTDIRu
Oracles home directory
155
Setting Environment -VMSu
Running the command file ORAUSER_.COM, located under ORA_ROOT:[db_], automatically sets all logicals and symbols correctlyu
@orauser_.com
156
Oracle Database Administration I 52
Environment Variable - NTu
Registry values are defined and a service entry is created when the database is created Registry values are automatically set when you use OEM or during installationn
u
Run regeditu
HKEY_LOCAL_MACHINE/SOFTWARE/ORACLE
157
Setting Environment - NTu
ORADIM can be used to create itn
Oradim NEW SID sid SRVC serviceu
Please refer to the documentation for full syntax
u
CMD at the DOS prompt settingn
SET ORACLE_HOME=d:\oracle\ora91\bin SET ORACLE_SID=TEST
n
158
Local Database Startupu
Once the proper environment variables are set, the DBA then needs to invoke the local database management utilitysqlplus /nolog connect / as sysdba Or connect / as sysdban
NT has other options:u u
MANUAL or AUTOMATIC service ORADIM
159
Oracle Database Administration I 53
Connection ExampleC:\Documents and Settings\vdevore>sqlplus /nolog SQL*Plus: Release 9.2.0.1.0 - Production on Fri Apr 4 21:07:52 2003 Copyright (c) 1982, 2002, Oracle Corporation. reserved. SQL> connect sys/systest as sysdba Connected to an idle instance. SQL> All rights
160
Startup by OSu
User must have OS PRIVILEGES:n
Unix: group DBA(defined in /etc/groups) VMS: Rights identifier ORA__DBA (defined in sys$system:authorize) NT: be in the group ORA_DBA
n
n
161
Startup using ORAPWDu u
As of 8i, Oracle introduced the password file Grant sysdba, sysoper for remote or local connection More in DBA II
u
162
Oracle Database Administration I 54
Why use AS SYSDBA/INTERNAL?u
When the database is shut down, there is no way to verify username and password is necessary to find a way for an individual to log onto the database connected, the user has sys privileges
u It
u Once
163
What Options are there?u
Once the DBA has connected to the database, he/she can proceed to:u u u
Startup the database in several modes Shutdown the database in several modes Or create a database
164
Lets Start a databaseu u
There are several ways to start the database's instance We will look at:n
Nomount Mount Open Restrict Force
n
n
n
n
165
Oracle Database Administration I 55
Start the Instanceu
Starting the instance involves:n n n n
n
Reading a parameter file (text - init.ora, binary spfile.ora) Allocating SGA (system global area) in memory Creating background processes Reading the control files for system information (for existing databases only) Open files for read and/or read-write
166
NOMOUNTu u
Typically used during database creation Starts the background processes and allocates memory Also used in recovery
u
167
Nomount - exampleC:\Documents and Settings\vdevore>sqlplus /nolog SQL*Plus: Release 9.2.0.1.0 - Production on Fri Apr 4 21:07:52 2003 Copyright (c) 1982, 2002, Oracle Corporation. SQL> connect sys/systest as sysdba Connected to an idle instance. SQL> startup nomount ORACLE instance started. Total System Global Area Fixed Size Variable Size Database Buffers Redo Buffers SQL> 135338868 bytes 453492 bytes 109051904 bytes 25165824 bytes 667648 bytes All rights reserved.
168
Oracle Database Administration I 56
MOUNTu
Mounting the database involves:n
Associating the database with the started instance Opening the control file, reading it, obtaining the names of the redo log and data files Verify checksum value (if enabled) and/or SCN synchronization
n
n
169
Mount - exampleC:\Documents and Settings\vdevore>sqlplus /nolog SQL*Plus: Release 9.2.0.1.0 - Production on Fri Apr 4 21:07:52 2003 Copyright (c) 1982, 2002, Oracle Corporation. SQL> connect sys/systest as sysdba Connected to an idle instance. SQL> startup mount ORACLE instance started. Total System Global Area Fixed Size Variable Size Database Buffers Redo Buffers Database mounted. SQL> 135338868 bytes 453492 bytes 109051904 bytes 25165824 bytes 667648 bytes All rights reserved.
170
OPENu
Opening the database involves:n
Opening the data file(s) and online redo logs for read-write Allowing regular users to connect to the database Attempts to acquire one or more UNDO segments Performs automatic crash recovery if database was shutdown abnormally
n
n
n
171
Oracle Database Administration I 57
OPEN -ExampleSQL> startup open ORACLE instance started.
Total System Global Area Fixed Size Variable Size Database Buffers Redo Buffers Database mounted. Database opened. SQL>
135338868 bytes 453492 bytes 109051904 bytes 25165824 bytes 667648 bytes
172
STARTUP No Argumentsu
Oracle assumes that STARTUP with no arguments implies a STARTUP OPEN It is also assumed that the current SID environment variable is what will be used.n
u
DBAs must ALWAYS be sure that the proper environment is set
u
PFILE or SPFILE must be defined and accessible or it will fail DBA must have SYSDBA or OSDBA
u
173
Starting an instanceu
NOMOUNT, MOUNT, and OPEN are different stages of an Oracle database startupn
When a STARTUP OPEN is issued, the database first startups in a NOMOUNT state, then proceeds to a MOUNT state, and finally proceeds to an OPEN state
174
Oracle Database Administration I 58
RESTRICTu u
STARTUP RESTRICT Opens the database, but only allows users with RESTRICTED SESSION privilege to access the database Why start a database in a restricted mode?u u
u
Maintenance (database upgrades) Exporting and importing data
175
RESTRICT - ExampleSQL> startup restrict ORACLE instance started. Total System Global Area Fixed Size Variable Size Database Buffers Redo Buffers Database mounted. Database opened. SQL> 4199600 bytes 42028 bytes 4026500 bytes 122880 bytes 8192 bytes
176
FORCEu
STARTUP FORCE is used for troubleshooting a failed or failure to open database If the database is closed, forces the database open If the database is open, it will abort the database and then open itExample: To shutdown the current instance, restart it without mounting or opening and allow only DBA access:STARTUP FORCE NOMOUNT RESTRICT
u u
177
Oracle Database Administration I 59
Other Startup Optionsu
Parallel/Shared (RAC 9i)(Shared is a synonym for Parallel)n
Allows multiple instances to access the database Cannot be used with EXCLUSIVE or NOMOUNT Invalid if initialization parameter SINGLE_PROCESS is set to TRUE Automatically restarts every five seconds if the instance is busy being recovered Will not retry for any other reason - parallel mode only
n
n
u
Retryn
n
178
Other Startup Optionsu
STARTUP RECOVERn
Specifies that media recovery be performed Has same effect as issuing RECOVER DATABASE The recovery processesu u u
n
n
Enable log archiving for media recovery Perform complete database recovery Perform partial database recovery
179
Other Startup Commandsu
Pfile = parameterfilenamen
A site-specific parameter file to initialize an instance at startup. If not specified, Oracle searches for it in:u
n
UNIX -$ORACLE_HOME/dbs/init.ora VMS - ORA_ROOT:[db_]__init.ora NT - HOME#\admin\\init.ora
u
u
180
Oracle Database Administration I 60
Changing the startup state of a databaseu
The DBA can change the current state of a database using the ALTER DATABASE SQL command The syntax is on the next slide
u
181
Changing the startup state of a databaseALTER DATABASE [MOUNT | OPEN]SQL> startup nomount ORACLE instance started. Total System Global Area Fixed Size Variable Size Database Buffers Redo Buffers SQL> alter database mount; Statement processed. SQL> alter database open; Statement processed. SQL> 4199600 42028 4026500 122880 8192 bytes bytes bytes bytes bytes
182
Changing the startup state of a databaseu
The ALTER DATABASE SQL command only moves the startup state of the database to a higher leveln
For example, the ALTER DATABASE SQL command cannot change the startup state from OPEN to MOUNTu
In this case, the DBA must first shutdown the database and then issue a STARTUP MOUNT command
183
Oracle Database Administration I 61
Database shutdownu
A database shutdown stops an instance and makes the database unavailable to users SyntaxSHUTDOWN [ABORT|IMMEDIATE|NORMAL|TRANSACTIONAL]
u
184
Commonly Used Shutdown Optionsu
SHUTDOWN NORMALn
Flushes all buffered writes to the disk, waits for all sessions to disconnect and then terminates the instance
u
SHUTDOWN IMMEDIATEn
Flushes all buffered writes to the disk, kills all user connections, performs a rollback on all uncommitted transactions, then terminates the instance
185
Shutdown Immediate - exampleC:\Documents and Settings\vdevore>sqlplus /nolog SQL*Plus: Release 9.2.0.1.0 - Production on Sun Apr 6 13:16:30 2003 Copyright (c) 1982, 2002, Oracle Corporation. SQL> connect sys/systest as sysdba Connected. SQL> shutdown immediate Database closed. Database dismounted. ORACLE instance shut down. SQL> All rights reserved.
186
Oracle Database Administration I 62
Database shutdownu
SHUTDOWN ABORTn
Should only be used in emergency situations, such as when the DBA detects a media failure, power failure, or security breach to the database
187
Shutdown Abortu
SHUTDOWN ABORTn
Immediately terminates the Oracle instance All buffered writes are NOT flushed to disk Does not perform a rollback on uncommitted transactions An instance recovery is required on the next database startup (performed automatically)
n
n
n
188
Database shudownu
SHUTDOWN TRANSACTIONAL(new with Oracle 8i)n
All current sessions in a transaction are allowed to complete No new sessions are allowed to start Any connected sessions are disconnected either by issuing a new transaction or once all transactions are committed or aborted
n
n
189
Oracle Database Administration I 63
Database shutdownu
SHUTDOWN NORMAL, SHUTDOWN TRANSACTIONAL and SHUTDOWN IMMEDIATE are either the usual or safest shutdown commandsn
The following steps occur during a shutdown (See next slide)
190
Database shutdownu
(SHUTDOWN IMMEDIATE) USER CONNECTIONS ARE TERMINATED All database data in the SGA is written back to the database files All redo log buffer data is written back to the redo log files Database is dismounted The control files are closed The SGA is removed from memory and the background processes are closed
u u u u u
191
Shutdown States illustrated
192
Oracle Database Administration I 64
Viewsu
V$databasen
Contains database information from the control file
u
V$instancen
Gives the state of the current instance
193
Questions?u u u
Which OEM manager can use to start up a database? How must you connect to startup a database? Which shutdown command satisfies these conditions?u u
The database shuts down when the last user logs off Force the database to close with users connected and disconnects their transactions midstream Force the database to close with users connected, but let transactions complete
u
194
Summaryu
Start an Oracle DATABASEn
Log onto the host O/S, set up the proper environment and then run sqlplus /nolog
u
A database startup proceeds in three stages:n
Starting the instance (NOMOUNT) Opening the controlfile(s) (MOUNT) Opening the datafiles and redo logfiles (OPEN)
n
n
u
Ways to shutdown a database:n
Abort, Immediate, Normal and transactional
195
Oracle Database Administration I 65
Oracle Database Administration ILesson 3 Creating and Managing Tablespaces
Creating and Managing Tablespacesu
Agendan
Describe Oracle tablespaces Create and modify tablespaces Manage tablespaces by querying the appropriate data dictionary views
n
n
197
Creating and Managing Tablespacesu
All schema objects within the database (tables, views, packages, functions) are stored in segments and collectively stored in tablespacesn
A tablespace is a logical unit of storage that is defined within Oracle Each tablespace corresponds to one or more operating-system level datafiles Each segment is contained in a single tablespace
n
n
198
Oracle Database Administration I 66
Creating and Managing Tablespaces
199
Creating and Managing Tablespacesu
A tablespace can be in several states while the database is openn
Online or Offline Read-only or read-write
n
u
A tablespace can be altered back and forth between these options as neededn
Conditions must be tested before each alter (no current transactions may be active)
200
Creating and Managing Tablespacesu
Each database must be created with at least one tablespace (SYSTEM).n
This holds all data dictionary objects and built-in PL/SQL program units (procedures, functions, packages and triggers)
u
Each tablespace can contain one or more schemas and each schema can have one or more objectsn
Each object can span more than one datafile per tablespace
201
Oracle Database Administration I 67
Creating and Managing Tablespacesu
When the Oracle Universal Installer (OUI) or OEM creates a database, it creates several tablespaces by default. For example:n
SYSTEM - contains system definitions (Required) TEMP - used for sorting RBS/UNDO - used for rollback/UNDO segments TOOLS - used for storing PL/SQL program units USERS - used as default tablespace for users
n
n
n
n
202
Creating and Managing Tablespacesu
Prior to creating a tablespace, the DBA will need to consider (covered extensively in Lesson 5):n
Tablespace storageu
This includes the type of data file to create
n
Segment storage Disk contention Free space and segment fragmentation
n
n
203
Tablespace Storageu
Tablespace Storage considerationsn
System limitation on datafile size Database limitation when database is created (maxdatafiles) Data file managementu
n
n
Autoextend feature on an existing datafile Manually adding a datafile
u
204
Oracle Database Administration I 68
Data File Types and Behavioru u u u
Permanent Temporary Oracle Managed Files (OMF) Extent managementn
Dictionary Locallyu u
n
Uniform extent autoallocated
205
Tablespace Storageu
Each tablespace contains object segment(s) Each segment is subdivided into logical units of storage called EXTENTSu
u
When a user creates an object (such as tables, views, sequences) within the database, Oracle allocates an extent(s) within a tablespace in which to store the objects segment(s)
206
Tablespace Storage
207
Oracle Database Administration I 69
Segment Storageu
Segments can span across datafiles, but extents cannot Each segment can be composed of one or more extents Each extent is further subdivided into units of storage called DATABASE BLOCKS Extents must be made up of contiguous DATABASE BLOCKS
u
u
u
208
Database Blocksu
Not identical to operating system-level file blocks A logical database block may span multiple system level blocks Should be created to either fit into an OS-level file block or be the same
u
u
209
Database Blocksu
The size of each database block is determined by the parameter DB_BLOCK_SIZE in the initialization parameter file This size is fixed during database creation time. Cannot be changed unless the database is re-created The default DB_BLOCK_SIZE is 2048 bytes
u
u
210
Oracle Database Administration I 70
Tablespace Storageu
Logical storage hierarchy:n
Tablespaceu
Object segmentu
Extentsu
Oracle Blocks
211
Dictionary vs. Localu
Starting with 8i, you can now create tablespaces that are managed locally within the header file of the tablespace If you specify local in a create tablespace, you cannot specify default storage, minextents, nor temporary clause Local allows two types of management: uniform extent or autoallocate
u
u
212
Create Tablespace (dictionary)u
Create a tablespace using the CREATE TABLESPACE SQL command. The syntax for dictionary managed is:CREATE TABLESPACE datafile 'size [M|K] [autoextend_clause] DEFAULT STORAGE () [online|offline];
u
213
Oracle Database Administration I 71
Create Tablespace (local)u
Create locally managed tablespace syntax:CREATE TABLESPACE datafile '' size [M|K] EXTENT MANAGEMENT LOCAL UNIFORM SIZE [M|K];
214
Create Tablespace (OMF)u
Create an Oracle Managed File in a default location for datafile creation with defaults of 100M size and unlimited autoextensible maximum size:alter system set db_create_file_dest CREATE TABLESPACE ;
=
215
Datafile Namingu
The datafile name must contain the absolute pathn
No UNIX/NT variable names nor VMS logicals should be specified in the datafile name
u
The directory that contains the datafile MUST have write permissions for the Oracle software owner
216
Oracle Database Administration I 72
UNIX Namingu
Examplen
Create a tablespace called DEVELOPMENT Specify a datafile '/u01/oradata/SEED/SEED_DEVELOPMENT_01.dbf' with a size of 300 Megabytes Make this tablespace available to all users immediately
n
n
217
UNIX Naming Exampleu
The answer is:2> 3> datafile '/u01/oradata/SEED/SEED_DEVELOPMENT_01.dbf' size 300M;
SQL> create tablespace development
Tablespace created.
218
VMS Namingu
Example:n
Create a tablespace called RBS Specify a datafile 'dka300:[oradata.seed]seed_rbs_01.dbf' with a size of 300 Megabytes Make this tablespace available to all users immediately and autoextensible at 500k increments to a maximum of 400 megabytes
n
n
219
Oracle Database Administration I 73
VMS Naming Exampleu
The answer is:
SQL> create tablespace rbs 2> 3> 4> datafile 'dka300:[oradata.seed]seed_rbs_01.dbf size 300M autoextend on next 500k maxsize 400M;
Tablespace created.
220
NT Namingu
Examplen
Create a tablespace called NEWDATA Specify a datafile d:\oradata\seed\seed_newdata_01.dbf' with a size of 900 Kilobytes Make this tablespace unavailable to users.u
n
n
Extra credit what is missing with the final statement and assumed?
221
NT Naming Exampleu
The answer is:
SQL> create tablespace newdata 2> 3> datafile d:\oradata\seed\seed_newdata_01.dbf size 900K offline;
Tablespace created.
222
Oracle Database Administration I 74
Creating and Managing Tablespacesu
When creating datafiles for tablespaces, adopt a common file naming convention Most Oracle file types are named as follows (see next slides)
u
223
Creating and Managing Tablespacesu
DATAFILES__.dbf
u
Examplen
The third datafile of the SYSTEM tablespace belonging to the SEED database system_SEED_03.dbf
224
Creating and Managing Tablespacesu
Use the ALTER DATABASE SQL command to modify the characteristics of an existing tablespacen
Add/rename/change the state of a datafile Change a tablespace to read-only Take a tablespace offline/online Change the storage parameters To begin/end online hot backups Coalesce free space
n
n
n
n
n
225
Oracle Database Administration I 75
Alter Tablespace Syntax
226
Datafile Options
227
Creating and Managing Tablespacesu
Example:n
Add a second 100 MB datafile to the system tablespace Place the datafile under/u01/oradata/SEED/SYSTEM_SEED_02.dbf
n
n
Make it readily available
228
Oracle Database Administration I 76
Example Alter TablespaceSQL> alter tablespace system 2 add datafile '/u01/oradata/SEED/system_SEED_02.dbf 3 size 100M; Tablespace altered.
229
Creating and Managing Tablespacesu
Examplen
Change the development tablespace to read-only mode The syntax is:
n
SQL> alter tablespace development read only; Tablespace altered.
230
Creating and Managing Tablespacesu
Adding a datafile to a tablespacen
Space from the new file is automatically allocated to the tablespace The new datafile can reside on a separate disk Oracle treats this and all datafiles belonging to a tablespace as a single logical entity
n
n
231
Oracle Database Administration I 77
Creating and Managing Tablespaces
Tablespace
Datafile #1
Datafile #2
n
Once a datafile is added to a tablespace, you cannot delete it unless the tablespace is first dropped
232
Creating and Managing Tablespacesu
To drop any tablespace (except SYSTEM) use the DROP TABLESPACE SQL command The syntax is:
u
DROP TABLESPACE [INCLUDING CONTENTS [CASCADE CONSTRAINTS]]
233
Creating and Managing Tablespacesu
A tablespace that contains data cannot be dropped unless the INCLUDING CONTENTS option is specifiedn
If constraints exist between objects in the tablespace to be dropped and objects in another tablespace, the CASCADE CONSTRAINTS option must be specified along with the INCLUDING CONTENTS option
234
Oracle Database Administration I 78
Creating and Managing Tablespacesu
Once a tablespace is dropped, the datafile(s) associated with the tablespace must be deleted on the operating system leveln
The DROP command only removes that tablespace from the data dictionary Cannot drop the SYSTEM tablespace because it contains the data dictionary Once a drop is executed, it cannot be undone
n
n
235
Creating and Managing Tablespacesu
Examplen
Drop the DEVELOPMENT tablespace, including all contents The syntax is:
n
SQL> drop tablespace development including contents; Tablespace dropped.
236
OEM
237
Oracle Database Administration I 79
Summaryu
Steps to creating and managing tablespacesn
Prepare the operating system Determine storage options Execute the CREATE TABLESPACE SQL and ALTER TABLESPACE command Ways to manage the stored data
n
n
n
238
Oracle Database Administration ILesson 4 Creating an Oracle Database
Creating an Oracle Databaseu
Agendan
Methods of creation Set up the proper operating system environment prior to creating a database Execute the CREATE DATABASE SQL command Execute the proper scripts that build the data dictionary and PL/SQL procedures
n
n
n
240
Oracle Database Administration I 80
Creation Methodsu u u
OEM Database configuration assistant When the Oracle software is installed Manually, either with scripts or by command line
241
Creating an Oracle Databaseu
Six general steps to creating a databasen
Preparing the Operating System Creating a parameter file Starting the instance Creating the database Building the data dictionary Building the system PL/SQL procedures
n
n
n
n
n
242
Creating an Oracle Databaseu
Preparing the Operating Systemn
An Oracle database consists of datafiles, redo log files, and control files Prior to creating a database, the location(s) of these files should be thought out carefully Space will need to be allocated for the files The system administrator will need to create the appropriate directories and set the proper permissions for these files
n
n
n
243
Oracle Database Administration I 81
Creating an Oracle databaseu
All systemsn
The owner of the directories should be the Oracle software owner (typically "oracle").u
On Unix systems, the dba group will also be the group owner of the directory. On VMS, the user must have the ORA_DB rights identifier ON NT, the user must be in the group ORA_DBA
u un
The Oracle software owner should be the only user that has write access to these directories
244
Create the Oracle User environment UNIXu
Unixn
(as root)
Bash# cd /u01 bash# mkdir oradata bash# chown oracle:dba oradata bash# chmod 755 oradata
245
Create the Oracle User Environment VMSu
VMSn
(as SYSTEM)
$ Set default dka300:[000000] $ create/dir [.oradata] $ set file/own=oracle oracle.dir $ set prot=(S:RWED,O:RWED,G:RE,O:RE) oracle.dir
246
Oracle Database Administration I 82
Create the Oracle User Environment NTu
NTn
(As administrator) Use Administrative tools in 'Settings' or the Manage option in 'My Computer'u u
n
Create the partitions Define a user with administrative privileges.
247
Setting the Database Nameu
Setting the name of the database:n
UNIX Enter the new name in /var/opt/oracle/oratab VMS Run ora_find_sid.com to register the database NT Run oradim to create a new database service Labels each database with a unique identifieru u
n
n
n
Known as the ORACLE SYSTEM IDENTIFIER Referred to as the ORACLE SID
248
Defining the Oracle SIDu
Identifies which database a user will connect to upon executing an Oracle applicationu
Unix/NT - ORACLE SID is designated by an environment variable, $ORACLE_SID VMS Oracle SID is a logical, ORA_SID
u
249
Oracle Database Administration I 83
Setting the Oracle SIDu
Now that a SID is defined:n
Set the SID in the proper manner for the OSu u u
UNIX VMS NT
export ORACLE_SID=TRNG define ora_sid trng set ORACLE_SID=TRNG
n
Once the ORACLE SID is set, all subsequent Oracle I/O affects the associated database
250
Creating the Parameter fileu
Defines and configures the parameters that configure the database All parameters are customizable by the DBA Read at instance startup First created as an ASCII file (initSID.ora) As of 9i, a binary (spfileSID.ora) file can be created and be managed once the instance is started
u u u u
251
Parameter Fileu
Great care should be taken in the sizing of each parameter If a parameter is not defined, Oracle will provide defaultsn
u
To view all defined and defaulted values, run sqlplus as sys or system and issue:Show parameters
or
view v$parameter
u
See example in the workbook.
252
Oracle Database Administration I 84
Default Parameter File Locationu
Unixn
Oracle looks for the associated parameter file under $ORACLE_HOME/dbs/init.orau
This is usually a link to the real init.ora
u
VMSn
Oracle looks for the associated parameter file underORA_ROOT:[db_]__init.ora
u
NTn
Oracle looks under$ORACLE_HOME\database\init.ora
253
Creating an Oracle databaseu
Oracle provides a template init.ora located under:n n n
$ORACLE_HOME/dbs (Unix) ORA_RDBMS (VMS) $ORACLE_HOME\admin\sample\pfile (nt)
u
For example,n
If you have a database with a SID of SEED, Oracle looks for the associated parameter file under:u u
$ORACLE_HOME/dbs/initSEED.ora (Unix) ORA_ROOT:[db_seed]PLUTO_SEED_init.ora (VMS)
254
Questions?u
Refer to the workbook for a sample init.ora filen
What is the default block size? Is the buffer cached defined in blocks or bytes? Can you have more than one value for the service_names value? Which control file is read when the database is opened?
n
n
n
255
Oracle Database Administration I 85
Creating an Oracle databaseu
Most associated parameters take default values if they are not explicitly defined The values that MUST be defined in each file are:n
u
db_name (set to the same value as the ORACLE SID) control_files (should point to the location of the control files)
n
256
Which type of Data File?u
Dictionary managedn
Default storage clause used Uniform extent Autoallocate Oracle manages the allocation, growth and removal Default file location defined in the init.ora
u
Locally managedn n
u
Oracle managed files (OMF)n n
257
Creating an Oracle databaseu
Invoke Oracle as: sqlplus /nolog Connect to the database as the sysdba user Start the Oracle instance (nomount)n
u
u
Only allowable startup level since control files, redo log files, and datafiles do not exist at this point
258
Oracle Database Administration I 86
Creating an Oracle databaseThe workbook illustrates how to start a database in nomount mode
u
259
Creating an Oracle databaseu
Once the Oracle instance is started, execute a CREATE DATABASE SQL command. Below is an abridged syntax:
CREATE DATABASE DATAFILE '' size M LOGFILE GROUP '' size M
260
Creating an Oracle databaseu
The datafile defined becomes the first datafile of the SYSTEM TABLESPACE Each database MUST have at least two logfile groups For additional options of the CREATE DATABASE SQL command, consult the ORACLE SERVER ADMINISTRATOR'S GUIDE
u u
261
Oracle Database Administration I 87
Creating an Oracle databaseSQL> create database SEED 2> datafile '/oradata/SEED/system_SEED_01.dbf' size 200M 3> logfile group 1 '/oradata/SEED/log_SEED_01.rdo' size 3M, 4> group 2 '/oradata/SEED/log_SEED_02.rdo' size 3M 5> / Statement processed.
262
Creating an Oracle databaseu
Once the CREATE DATABASE command is executed, a new database is createdn
The control files associated with this database are also created in the location(s) designated in the parameter file
263
Creating an Oracle databaseu
Now the data dictionary and PL/SQL packages need to be built The scripts catalog.sql, catproc.sql need to run against the databasen
u
The former script MUST be run first
264
Oracle Database Administration I 88
Creating an Oracle databaseu
These scripts are located under:n
$ORACLE_HOME/rdbms/admin (unix/NT) ORA_ROOT:[rdbms] (VMS)
n
SQL> @?/rdbms/admin/catalog SQL> @?/rdbms/admin/catproc
265
Creating an Oracle databaseu
Once these scripts have run, two default users are created in the databasen
SYS (initial password change_on_install) SYSTEM (initial password MANAGER)
n
u
Both users have DBA authority over the databasen
These users should NEVER be deleted from the database
266
Data dictionaryu
Composed of a set of tables and views Read-only Provides information about the associated database Created by SQL script catalog.sql
u
u
u
267
Oracle Database Administration I 89
Data dictionaryu
Data dictionary contains the following:n
Usernames of the associated database Security Names and definitions of scheme objects Space allocation for database objects Auditing information Triggers, functions, packages, and stored procedures
n
n
n
n
n
268
Data dictionaryu
Scripts that construct the data dictionaryn
CATALOG.SQLu
Commonly used data dictionary views
n
CATPROC.SQLu
Scripts for PL/SQL on server
n
NOTE: The owner of the data dictionary is SYS
269
Data dictionary viewsu
Display basic information about Oracle accountsn
SQL> select * from all_users;
u
Display DBA informationn
SQL> select * from dba_users;
u
Rollback segments and their statusn
SQL> select segment_name, status 2> from dba_rollback_segs;
n
270
Oracle Database Administration I 90
Summaryu
Steps to creating an Oracle databasen
Preparing the O/S Determining the ORACLE SID Creating a parameter file Starting the instance Executing the CREATE DATABASE SQL command Building the data dictionary and PL/SQL packages
n
n
n
n
n
271
Oracle Database Administration ILesson 5 Space Management
Basics of Storageu
Tablespace - Logical storage area within an Oracle Database that subdivides the databasen
The placement and composition of a tablespace are critical for optimization
u
Data File - Physical files that make up a tablespacen
Size and structure should be well planned out
273
Oracle Database Administration I 91
Space Componentsu
Database block - smallest unit of storage within an Oracle database Extent - Contiguous allocation of database blocks Segment - Logical collection of extents that make up a table, cluster, index, temporary segment, or UNDO segment
u u
274
Segment Storage Attributesu
Each of these extent options should be reviewed individuallyn
Initial Next Minextents Maxextents -
Allocates the first extent of space Size of the extent allocated after the initial Number of extents allocated during the initial creation of the segment Limits the total number of extents the segment can create
n
n
n
275
Additional Storage Optionsu
Pctincrease - controls the rate of growth of extents beyond the secondn
If UNDO segments are being configured, this is not an option
u
PCTFREE - reserved portion of the data block that is used for later updates to rows in that block PCTUSED- percentage of space in a data block used before allocating another block A block is kept on the free list until it reaches PCTFREE A block stays off the free list until PCTUSED is reached
u
u
u
276
Oracle Database Administration I 92
Segment Creation Optionsu u
Tablespace - The tablespace to store the segments Partitioning - Feature of Oracle8 that allows a segment to be separated into multiple segments, each existing in a single or multiple tablespaces Optimal - sets the optimal size in bytes for a rollback segment (not used with UNDO)
u
277
ExampleCreate table EMP ( EMPID NUMBER, F_Name L_Name MI SSN VARCHAR2(25), VARCHAR2(25), VARCHAR2(1), VARCHAR2(11)
) Pctfree 10 Pctused 40 storage (Initial 2K Next 2K Pctincrease 0 unlimited) Tablespace USERS; Maxextents
278
Storage Considerationsu
Object creation parameters override tablespace default storage parameters with the exception of locally managed tablespaces as of Oracle8i Locally managed tablespaces enforce the use of uniform extent size or the size that has been autoallocated by Oraclen
u
One exception -- import (discussed in DBAII)
279
Oracle Database Administration I 93
Local vs. Dictionary Managedu
Two DBA philosophies:n
Dictionary managedu u
Grouping of tables are by schema, not table Can take schema offline (ie, bad blocks, recovery)
n
Locally managedu u
Never have tablespace fragmentation with uniform extents Never have to worry about extent growth with autoallocate
280
Physical Database Attributesu
Autoextend vs adding datafilesn
Both can be executed when the database is up Both can extend the tablespace and be ready for use immediately
n
u
Autoextending an existing datafile can alleviate DBA worries, but adversely can waste space Adding a datafile is under your controlAlter tablespace add datafile /u01/oradata/seed/newfile_seed_02.dbf size 500M;
u
281
RAIDu
RAIDn
Important to have for an Oracle system Jbod Lowest data cost low overhead 0 low data cost load balancing 1, 0+1 high data cost most expensive 5 Highest data cost safeu
n
n
n
n
It takes four I/Os for one write (read data, read parity,write data, write parity) Minimum of three disks, plus 66-87% of space The more disks, the higher the gain
u u
282
Oracle Database Administration I 94
Questionsu
What are the two ways to use the autoextend clause? Which segment type does not use the pctincrease storage clause? What would you think would be less problematic in regards to objects needing extents?
u
u
283
Storage issuesu
Disk contentionn
Background process content for data access
u
Segment fragmentationn
Seek time is reduced
u
Free space fragmentationn
Cannot allocate a contiguous extent
284
Disk Contentionu
Too many heavily used segments on a single disk slows down access time and causes degradation in database performance System (Data Dictionary), TEMP and UNDO segment tablespaces are used constantlyu
u
Keeping these tablespaces on separate disks ensures the best access time
285
Oracle Database Administration I 95
Fragmentation Issuesu
Fragmentationn
Frequent writes to a tablespace lead to greater fragmentation Fragmented tablespaces run slower and require more disk activity then non-fragmented tablespaces Thus, objects should be grouped into tablespaces based on their activity and size
n
n
286
Levels of Fragmentationu
Levels of fragmentationn
Application Interim Segmentu
Data changes are moderate, allowing for some fragmentation
n
UNDO Segmentsu
Used regularly with constant changes to data. Fragmentation is high
n
Temporary Segmentsu
Data is swapped in and out constantly. Fragmentation is highest
287
Free Space vs. Segmentu
Free space fragmentation is determined by the number of contiguous free space chunks within a tablespace Segment fragmentation is determined by the number of extents relative to the number of segments within a tablespace
u
288
Oracle Database Administration I 96
Free Space Fragmentationu u
Caused by dropping or truncating segments Categorized as usable or unusablen
A usable free space chunk is large enough to be used by the growth of an existing segment An unusable free space chunk is too small to be used by an existing segment
n
289
Segment Fragmentationu u
Caused by segments requiring multiple extents Using a uniform extent size (i.e. locally managed tablespaces) will alleviate this Manage this by monitoring dba_segments and dba_free_space
u
290
Common Methodologiesu
Uniform Extent sizesn
Eliminates unusable free space fragmentation Does not eliminate segment fragmentation Minimizes maintenance efforts Extent sizes should be carefully chosen to achieve best performance
n
n
n
291
Oracle Database Administration I 97
Common Methodologiesu
Appropriate sizing of segmentsn
Often complicated and time-consuming Bound to a finite period of time for growing tables
n
u
Rebuilds (imp/exp)n
Eliminate existing fragmentation by using imp/exp (discussed further in DBAII)
292
Common Methodologiesu
Using Pctincrease 100n
Minimizes segment fragmentation Minimizes maintenance efforts Extent sizes grow exponentially Requires large free space chunks to be available
n
n
n
293
Dictionary Viewsu
DBA_FREE_SPACEn
How much free space is available
u
DBA_SEGMENTSn
Information about all segments
u
DBA_EXTENTSn
Describes the extents of all objects
294
Oracle Database Administration I 98
Summaryu u u u u
Basics of Space Storage Storage Parameters Default Storage Parameters Fragmentation Methodologies for maintaining
295
Oracle Database Administration ILesson 6 Creating and Managing UNDO Segments
Creating and Managing Rollback/UNDO Segmentsu
Agendan
Theory behind rollback/UNDO segments Rollback/UNDO segments within an Oracle Database Rollback/UNDO segments used in transactions Rollback/UNDO segments used in read-consistency
n
n
n
297
Oracle Database Administration I 99
UNDO Segmentsu
Database objects that record old values of data before the data are modified by transactions Used to recover the database Provide read consistency Allow certain transactions to be undone (rolled back)
u u u
298
UNDO Segmentsu u
Undo management is new term for rollback Two options under 9in
Manual undo managementu
Oracle7/8i/9i rollback segments
n
Automatic undo managementu
AKA Automatic Undo Management (AUM) or System Managed Undo (SMU)
299
What are UNDO segments for?u
Three purposes for undon
Read consistency Transaction rollback Transaction recoveryu
n
n
New purpose in 9i
300
Oracle Database Administration I 10 0
Types of Undo Segmentsu
SYSTEMn
Used for objects in SYSTEM tablespace
u
Non-SYSTEMn
Used for objects in other tablespacesu u
Automatic (UNDO) Manual (rollback segments)
u
Deferredn
Used for offline tablespace
301
Why Use AUM?u
Easier to administern
In a recent Oracle benchmark, 400 rollback segments were replaced by one undo tablespace
u
Reduced chance of common errorsn
snapshot too oldu
DBA selected retention period Dynamic extent transfer
n
unable to extend rollback segmentu
302
Dynamic Extent Transferu
Extents within undo tablespace may switch ownership from one segment to another Prevents single large transaction from affecting other users Space reuse is more efficient, so errors are less likely Eliminates need for managing rollback space for online and batch differently
u u u
303
Oracle Database Administration I 10 1
Automatic Undo Managementu
New initialization parameters UNDO_MANAGEMENTn
AUTOu u u
Undo segments managed internally No CREATE, DROP, ALTER Automatic creation, shrinking, etc.
n
MANUALu
Default; DBA-managed rollback segments
304
UNDO valuesu
UNDO_TABLESPACEn
Defines the name of the tablespace used to hold the undo segments
u
UNDO_RETENTIONn
Controls amount of undo data to retainu u
Specify in seconds Read consistency and Oracle Flashback
305
UNDO Segmentsu
Discrete database objectsn
Reside within a specific tablespace
u
Each segment allocates extents within a tablespace to store table data before the data are modified
306
Oracle Database Administration I 10 2
UNDO Segmentsu
Can hold data for multiple transactions A single transaction must be contained in a single segment Provided maximum number of extents has not been reached
u
u
307
Creating UNDO Tablespaceu u
The tablespace is all that needs to be created with AUM. Usually created at database creation time as part of the CREATE DATABASE statement: UNDO TABLESPACE undotbs datafile'/u02/oradata/SEED/undodbs_seed_01.dbf' size 200m autoextend off
308
SYSTEM Rollback Segmentu
Default rollback segment is automatically created during database creation Cannot be deleted Segment resides in the SYSTEM tablespace Can only be used for SYSTEM objects Create a second one for creating the tablespaces during creation of a database
u
u
u
u
309
Oracle Database Administration I 10 3
SYSTEM Rollback Segmentu
Additional rollback/UNDO segments must be created to hold rollback data for objects in nonSystem tablespaces The size and number of segments must be monitored:n
u
v$rollstat, dba_segments
310
Create a Rollback Segmentu
CREATE ROLLBACK SEGMENT SQL command syntax:
CREATE ROLLBACK SEGMENT TABLESPACE [STORAGE |OPTIMAL]
NOTE: this is not required with 9i
311
Storage clauseu
Allows the DBA to set the sizing of the rollback segment(s) The DBA may allow Oracle to size the rollback segment automatically MINEXTENTS for rollback segments must be 2
u
u
312
Oracle Database Administration I 10 4
Create a Rollback Segmentu
Must reside in a rollback tablespacen
Example with Default storage parameters chosen:
SQL >create rollback segment rbs1 2 >tablespace rbs / Rollback segment created.
313
ALTER ROLLBACK SEGMENTu
Once the rollback segment is created, It must be brought online before it can store transaction information An entry must be made in the initSID.ora file to be brought online each time the instance is start Use the rule of four to estimate:n
u
u
# rollback = transactions/4
314
ALTER ROLLBACK SEGMENTALTER ROLLBACK SEGMENT ONLINE|OFFLINEu
ONLINEn
Brings rollback segment online Available for subsequent transactions Takes rollback segment offline Unavailable for subsequent transactions Will not go offline until all transactions have completed
n
u
OFFLINEn n
n
315
Oracle Database Administration I 10 5
When the database is shut down and restartedu u
Only the SYSTEM rollback segment is brought online Only the segment names in the ROLLBACK_SEGMENTS parameter in the initialization parameter file are brought onlineROLLBACK_SEGMENTS=(RBS1,RBS2)
u
Query the data dictionary view to check the status of all rollback segments:sys.dba_rollback_segs
316
Rollback Information Storedu
Each time a transaction is executed against the database, Oracle automatically allocates an available UNDO segment Unchanged data is stored for transaction and session rollback To ensure that each user has a consistent view of the data they are working on.
u
u
317
Request a Rollback Segmentu
Programmatically, you can specify the rollback segment to usen
Prior to executing the SQL statement, execute: SET TRANSACTION USE ROLLBACK SEGMENT Example:
n
SQL>SET TRANSACTION USE ROLLBACK SEGMENT RBS1; Transaction set.
318
Oracle Database Administration I 10 6
ExampleEMPNO | ENAME 00100 | John Doe 00200 | Sue Smith 00300 | Jane Goodall 00400 | Sam Tyson 00500 | Mike Jones | DEPTNO | | 001 | 001 | 001 | 001 | 001 | | | | | SAL 15000 15000 15000 15000 15000 -----------------------------------------
u u
The Emp table holds this information prior to the transaction Before the statement is applied, a free UNDO segment is obtained
319
Statement is ExecutedSQL> update emp set sal=30000 where empno=0500; 1 row updated.
u u
The user executes this SQL statement If the user commits, the rollback/UNDO segment is released
320
Rollback Statementu
To undo changesn
Execute a ROLLBACK SQL statement This undoes the update statement and copies information back into the table
n
SQL> rollback; Statement processed.
321
Oracle Database Administration I 10 7
Oracle Flashbacku
Consistent view of database at past pointn
Read-only Export and query Protection against user erroru
n
n
Uh, I just deleted 1,000 rows from SPRIDEN. Can you restore it for me? UNDO_RETENTION parameter
n
Must be using AUM in order to use Flashbacku
322
Using Flashbacku u u
User needs execute on DBMS_FLASHBACK Retention time must be long enough to be useful Query as usual after enabling FlashbackCALL dbms_flashback.enable_AT_time ('25-MAR-02:08:00:00'); SELECT * FROM emp; CALL dbms_flashback_disable();
323
Dictionary Viewsu
V$rollstatn
Number of times a rollback segment has wrapped Number of times it has extended Number of times it has shrunk
n
n
u
V$rollnamen
Maps the rollback segment to its name by USN
324
Oracle Database Administration I 10 8
Data Dictionary Language (DDL) statementsu
Change the internal structure of the database They do not use rollback/UNDO segments during processing Once SQL statements are executed, they cannot be rolled back!
u
u
325
Summaryu
UNDO segments provide the user the ability to undo DML statements within the database UNDO segments also provide read-consistency within the database UNDO is a special type of segment Rollback segments are kept for backwards compatiblity
u
u
u
326
Oracle Database Administration ILesson 7 Creating and Managing Database Users
Oracle Database Administration I 10 9
Creating and Managing Database Usersu
Agendan
Create new Database Users Modify existing Database Users Monitor information about Database Users Drop Database Users Terminate user sessions
n
n
n
n
328
Creating and Managing Database Usersu
Creating users under Oraclen
Created within the database or OEM Not defined in the underlying operating system
n
u
Oracle stores internal user account information within the data dictionary in an encrypted format
329
CREATE USER SQL
330
Oracle Database Administration I 11 0
Create User Considerationsu
If you do not specify a default tablespace, the user is assigned to SYSTEM If not explicitly specified, users have a QUOTA of 0 on all tablespaces By default, the account is not locked and the password is not pre-expired
u
u
331
Default Temporary Tablespaceu
If you do not specify a temporary tablespace, temporary segments default to the SYSTEM tablespace In 9i, if you create the default temporary tablespace for everyone you do not need to worry about this To use this new feature, create it at database creation time or later It must be of type temporary
u
u
u
332
Create a Useru
Example:n
Create a user SAISUSR with a password of u_pick_it Assign a default tablespace of USERS and a quota of 100KB on the DEVELOPMENT tablespace Specify the temporary tablespace to be TEMP (Syntax is on the next slide.)
n
n
n
333
Oracle Database Administration I 11 1
Example of Creating a UserSQL> create user saisusr identified by u_pick_it 2> default tablespace USERS 3> temporary tablespace TEMP 4> quota 100K on development 5> / Statement Processed.
334
User Passwordsu
During the CREATE USER command, the assigned password echoes on the screenu u
Note that the password is stored in encrypted form The encryption algorithm is DES-128 bit
u
Oracle passwords are NOT case-sensitive
335
Password Agingu
You can use Password Managementn
Run the script utlpwmg.sql to start
u
You can setu u u u
Password attempts Grace periods History Many more!
336
Oracle Database Administration I 11 2
Object Ownershipu
As with an OS account, Oracle assigns an ownership to all database objects that you create in the databasen
This ownership is known as a user's SCHEMA
u
When a user creates an object in the database, it is created under that user's SCHEMA
337
Joe Creates a Tableu
Examplen
User joe creates a table dept within the database This table is created under joe's ownership or schema
n
SQL> create table dept 2> (deptno number(25), 3> dname varchar2(100)) / Table created.
338
Creating and Managing Database Usersu
Now, connect to the database as chris. SQL> connect chris/u_pick_it Connected.