Beruflich Dokumente
Kultur Dokumente
Kroenkes
Database Processing:
Fundamentals, Design, and Implementation
Introduction
Oracle is the worlds most popular DBMS - It is a powerful and robust DBMS that runs on many different operating systems Oracle DBMS engine available is several versions:
The Personal Edition of Oracle is available with this tex and can also be downloaded from Oracle
DAVID M. KROENKES DATABASE PROCESSING, 10th Edition 2006 Pearson Prentice Hall
10-3
Application Requirements
View Ridge application requirements:
Track customers and their artist interests Record gallery's purchases Record customers' art purchases List the artists and works that have appeared in the gallery Report how fast an artist's works have sold and at what margin Show current inventory in a Web page
DAVID M. KROENKES DATABASE PROCESSING, 10th Edition 2006 Pearson Prentice Hall 10-4
DAVID M. KROENKES DATABASE PROCESSING, 10th Edition 2006 Pearson Prentice Hall
10-5
SQL*Plus
Oracle SQL*Plus or the Oracle Enterprise Manager Console may be used to manage an Oracle database SQL*Plus is a text editor available in all Oracle Except inside quotation marks of strings, Oracle commands are case-insensitive The semicolon (;) terminates a SQL statement The right-leaning slash (/) executes SQL statement stored in Oracle buffer SQL*Plus can be used to:
Enter SQL statements Submit SQL files created by text editors, e.g., notepad, to Oracle
DAVID M. KROENKES DATABASE PROCESSING, 10th Edition 2006 Pearson Prentice Hall
10-6
SQL*Plus Buffer
SQL*Plus keeps the current statements in a multi-line buffer without executing it LIST is used to see the contents of the buffer:
LIST {line_number} is used to change the current line
Example: change/Table_Name/*/
Table_Name is replaced with *
DAVID M. KROENKES DATABASE PROCESSING, 10th Edition 2006 Pearson Prentice Hall
10-7
DAVID M. KROENKES DATABASE PROCESSING, 10th Edition 2006 Pearson Prentice Hall
10-8
DAVID M. KROENKES DATABASE PROCESSING, 10th Edition 2006 Pearson Prentice Hall
10-9
Creating Tables
Some of the SQL-92 CREATE TABLE statements we have studied need to be modified for Oracle
Oracle does not support a CASCADE UPDATE constraint Money or currency is defined in Oracle using the NUMBER data type
Oracle sequences must be used for surrogate keys The DESCRIBE or DESC command is used to view table status
DAVID M. KROENKES DATABASE PROCESSING, 10th Edition 2006 Pearson Prentice Hall
10-10
DAVID M. KROENKES DATABASE PROCESSING, 10th Edition 2006 Pearson Prentice Hall
10-11
10-12
10-13
Oracle Sequences
A sequence is an object that generates a sequential series of unique numbers:
Create Sequence CustID Increment by 1 start with 1000;
It is the best way to work with surrogate keys in Oracle Two sequence methods:
NextVal provides the next value in a sequence. CurrVal provides the current value in a sequence.
Using sequences does not guarantee valid surrogate key values because it is possible to have missing, duplicate, or wrong sequence value in the table
DAVID M. KROENKES DATABASE PROCESSING, 10th Edition 2006 Pearson Prentice Hall
10-14
Using Sequences
Creating a sequence:
CREATE SEQUENCE CustID INCREMENT BY 1 START WITH 1000;
DAVID M. KROENKES DATABASE PROCESSING, 10th Edition 2006 Pearson Prentice Hall
DAVID M. KROENKES DATABASE PROCESSING, 10th Edition 2006 Pearson Prentice Hall
10-16
11/12/2002 is the date value MM/DD/YYYY is the pattern to be used when interpreting the date
The TO_DATE function can be used with the INSERT and UPDATE statements to enter data:
INSERT INTO T1 VALUES( 100, TO_DATE ('01/05/02', 'DD/MM/YY');
DAVID M. KROENKES DATABASE PROCESSING, 10th Edition 2006 Pearson Prentice Hall
10-17
Creating Indexes
Indexes are created to:
Enforce uniqueness on columns Facilitate sorting Enable fast retrieval by column values
Good candidates for indexes are columns that are frequently used with equal conditions in WHERE clause or in a join Examples:
CREATE INDEX CustNameIdx ON CUSTOMER(Name); CREATE UNIQUE INDEX WorkUniqueIndex ON WORK(Title, Copy, ArtistID);
DAVID M. KROENKES DATABASE PROCESSING, 10th Edition 2006 Pearson Prentice Hall 10-18
DAVID M. KROENKES DATABASE PROCESSING, 10th Edition 2006 Pearson Prentice Hall
10-19
Creating Views
SQL-92 CREATE VIEW command can be used to create views in Oracle Unlike SQL-92, Oracle allows the ORDER BY clause in view definitions Oracle 9i and newer verions support the JOINON syntax Example:
CREATE VIEW CustomerInterests AS SELECT C.Name as Customer, A.Name as Artist FROM ART_CUSTOMER C JOIN CUSTOMER_ARTIST_INT I ON C.CustomerID = I.CustomerID JOIN ARTIST A ON I.ArtistID = A.ArtistID;
DAVID M. KROENKES DATABASE PROCESSING, 10th Edition 2006 Pearson Prentice Hall 10-20
10-21
Application Logic
Oracle database application can be processed using:
Programming language to invoke Oracle DBMS commands Stored procedures The SQL*Plus Start (or @) command to invoke database commands stored in .sql files Triggers
DAVID M. KROENKES DATABASE PROCESSING, 10th Edition 2006 Pearson Prentice Hall
10-22
Oracle Errors
Oracle error codes are cryptic For error explication:
http://otn.oracle.com/pls/db92/db92.error_search
DAVID M. KROENKES DATABASE PROCESSING, 10th Edition 2006 Pearson Prentice Hall
10-23
Stored Procedures
A stored procedure is a PL/SQL or Java program stored within the database Stored procedures are programs that can:
Have parameters Invoke other procedures and functions Return values Raise exceptions
A stored procedure must be compiled and stored in the database The Execute or Exec command is used to invoke a stored procedure:
Exec Customer_Insert ('Michael Bench', '203', '555-2014', 'US');
DAVID M. KROENKES DATABASE PROCESSING, 10th Edition 2006 Pearson Prentice Hall
10-24
END;
10-25
IN signifies an input parameter; OUT signifies an output parameter; IN OUT is used for parameters with both functions
DAVID M. KROENKES DATABASE PROCESSING, 10th Edition 2006 Pearson Prentice Hall
10-26
To execute:
SQL> exec Record_sale('Jack Jones', 'Chagall', 'Northwest by Night', '37/50', 70000, :vReturn); SQL> print vReturn;
success
10-27
PL/SQL Exceptions
Standard exceptions:
NO_DATA_FOUND TOO_MANY_ROWS INVALID_CURSOR
Exception block:
EXCEPTION WHEN NO_DATA_FOUND THEN DBMS_OUTPUT.PUT_LINE( 'No data found' ); v_Return := 'Exception: No data found'; ROLLBACK; WHEN TOO_MANY_ROWS THEN DBMS_OUTPUT.PUT_LINE( 'Too many rows found' ); v_Return := 'Exception: Too many rows found'; ROLLBACK; WHEN OTHERS THEN DBMS_OUTPUT.PUT_LINE( 'Exception occurred' ); DBMS_OUTPUT.PUT_LINE( 'Error code: ' || SQLCODE); DBMS_OUTPUT.PUT_LINE( SQLERRM ); v_Return := ( 'Exception: ' || SQLERRM ); ROLLBACK; END; 10-28
DAVID M. KROENKES DATABASE PROCESSING, 10th Edition 2006 Pearson Prentice Hall
User-defined Exceptions
DECLARE no_such_customer EXCEPTION; . . BEGIN SELECT count(*) INTO v_rows WHERE . . . IF v_rows < 1 THEN RAISE no_such_customer; . . EXCEPTION WHEN no_such_customer THEN DBMS_OUTPUT.PUT_LINE(No such customer in the database); ROLLBACK; WHEN OTHERS THEN . . . END
DAVID M. KROENKES DATABASE PROCESSING, 10th Edition 2006 Pearson Prentice Hall
10-29
Since DUAL has only 1 row, we can conveniently Use it to return single values: SQL> select SYSDATE from DUAL; SYSDATE --------08-APR-05 SQL> select 25000*.25 from DUAL; 25000*.25 --------6250 SQL> select CustomerID.nextVal from DUAL; NEXTVAL --------1020
10-30
Triggers
An Oracle trigger is a PL/SQL or Java procedures that is invoked when a specified database activity occurs Triggers can be used to:
Set default values Enforce a Data Constraint Update a view Enforce referential integrity action Handle exceptions
10-31
DAVID M. KROENKES DATABASE PROCESSING, 10th Edition 2006 Pearson Prentice Hall
Triggers
Trigger types:
A command trigger will be fired once per SQL command A row trigger will be fired once for every row involved in the processing of a SQL command: There are three types of triggers: BEFORE, AFTER, and INSTEAD OF
BEFORE and AFTER triggers are placed on tables while INSTEAD OF triggers are placed on views Each trigger can be fired on INSERT, UPDATE, or DELETE commands
DAVID M. KROENKES DATABASE PROCESSING, 10th Edition 2006 Pearson Prentice Hall 10-32
This is a BEFORE trigger on INSERT on the table TRANSACTION. It is will set a default value on AskingPrice. Note the FOR EACH ROW phrase; it makes this a row trigger.
DAVID M. KROENKES DATABASE PROCESSING, 10th Edition 2006 Pearson Prentice Hall
10-33
Triggers:
Enforcing a Required Child Constraint
There is a Mandatory-Mandatory relationship between WORK and TRANSACTION:
DAVID M. KROENKES DATABASE PROCESSING, 10th Edition 2006 Pearson Prentice Hall
10-34
Triggers:
Enforcing a Required Child Constraint
The hard way using two triggers this one enforces the required child:
DAVID M. KROENKES DATABASE PROCESSING, 10th Edition 2006 Pearson Prentice Hall
10-35
Triggers:
Enforcing a Required Child Constraint
The hard way using two triggers this one deletes any duplicate transaction:
(In case the application added a record to TRANSACTION, as well as the after-insert-on-WORK trigger on the previous slide.) Error: this should be an after trigger.
DAVID M. KROENKES DATABASE PROCESSING, 10th Edition 2006 Pearson Prentice Hall
10-36
Triggers:
Enforcing a Required Child Constraint
A better way - Create the Work_Trans view: CREATE VIEW SELECT FROM Work_Trans AS Title, Description, Copy, ArtistID, DateAcquired, AcquisitionPrice WORK W JOIN TRANSACTION T W.WorkID = T.WorkID;
ON
DAVID M. KROENKES DATABASE PROCESSING, 10th Edition 2006 Pearson Prentice Hall
10-37
Triggers:
Enforcing a Required Child Constraint
A better way using one trigger this one works with the Work_Trans view:
DAVID M. KROENKES DATABASE PROCESSING, 10th Edition 2006 Pearson Prentice Hall
10-38
DAVID M. KROENKES DATABASE PROCESSING, 10th Edition 2006 Pearson Prentice Hall
10-39
DAVID M. KROENKES DATABASE PROCESSING, 10th Edition 2006 Pearson Prentice Hall
10-40
10-41
10-42
The more restrictive the isolation level, the lower the throughput.
DAVID M. KROENKES DATABASE PROCESSING, 10th Edition 2006 Pearson Prentice Hall
10-44
Concurrency Control
Oracle processes database changes by maintaining a System Change Number (SCN)
SCN is a database-wide value that is incremented by Oracle when database changes are made
With SCN, SQL statements always read a consistent set of values; those that were committed at or before the time the statement was started Oracle only reads committed changes; it will never read dirty data
DAVID M. KROENKES DATABASE PROCESSING, 10th Edition 2006 Pearson Prentice Hall
10-45
DAVID M. KROENKES DATABASE PROCESSING, 10th Edition 2006 Pearson Prentice Hall
10-46
Oracle Security
Oracle security components:
An ACCOUNT is a user account A PROFILE is a set of system resource maximums that are assigned to an account A SYSTEM PRIVILEGE is the right to perform a task A ROLE consists of groups of PRIVILEGEs and other ROLEs
DAVID M. KROENKES DATABASE PROCESSING, 10th Edition 2006 Pearson Prentice Hall
10-48
A ROLE can have many SYSTEM PRIVILEGEs and it may also have a relationship to other ROLEs ROLEs simplify the administration of the database:
A set of privileges can be assigned to or removed from a ROLE just once
DAVID M. KROENKES DATABASE PROCESSING, 10th Edition 2006 Pearson Prentice Hall
10-49
Account Authentication
Accounts can be authenticated by:
Passwords The host operating system
DAVID M. KROENKES DATABASE PROCESSING, 10th Edition 2006 Pearson Prentice Hall
10-50
Control files describe the name, contents, and locations of various files used by Oracle
DAVID M. KROENKES DATABASE PROCESSING, 10th Edition 2006 Pearson Prentice Hall
10-51
The Oracle Recovery Manager (RMAN) is a utility program used to create backups and to perform recovery.
DAVID M. KROENKES DATABASE PROCESSING, 10th Edition 2006 Pearson Prentice Hall
10-52
Types of Failure
Oracle recovery techniques depend on the type of failure:
An application failure due to application logic errors An instance failure occurs when Oracle itself fails due to an operating system or computer hardware failure Oracle can recover from application and instance failure without using the archived log file A media failure occurs when Oracle is unable to write to a physical file because of a disk failure or corrupted files The database is restored from a backup
DAVID M. KROENKES DATABASE PROCESSING, 10th Edition 2006 Pearson Prentice Hall
10-53
DAVID M. KROENKES DATABASE PROCESSING, 10th Edition 2006 Pearson Prentice Hall
10-54
Oracle Misc.
Looking up errors:
http://otn.oracle.com/pls/db92/db92.error_search
SQL*Plus guide:
https://www-rohan.sdsu.edu/doc/oracle/server803/A53718_01/ch1.htm set linesize xx set pagesize xx COLUMN <columnName> FORMAT <formatType>
Printing in SQL*Plus
1. Set ServerOutput On 2. DBMS_OUTPUT.PUT_LINE( This will be printed );
10-55