of 36
8/14/2019 Less08 Data Tb
1/36
8Copyright 2005, Oracle. All rights reserved.
Managing Data
8/14/2019 Less08 Data Tb
2/36
8-2 Copyright 2005, Oracle. All rights reserved.
Objectives
After completing this lesson, you should be able to do
the following:
Manage data through the use of SQL
Identify and administer PL/SQL objects Describe triggers and triggering events
Monitor and resolve locking conflicts
8/14/2019 Less08 Data Tb
3/36
8/14/2019 Less08 Data Tb
4/36
8-4 Copyright 2005, Oracle. All rights reserved.
The INSERT Command
Create one row at a time.
Insert many rows from another table.
8/14/2019 Less08 Data Tb
5/36
8/14/2019 Less08 Data Tb
6/36
8-6 Copyright 2005, Oracle. All rights reserved.
The DELETE Command
Use the DELETE command to remove zero or morerows from a table.
8/14/2019 Less08 Data Tb
7/368-7 Copyright 2005, Oracle. All rights reserved.
TheMERGE Command
Use theMERGE command to perform both INSERT andUPDATE in a single command.
8/14/2019 Less08 Data Tb
8/368-8 Copyright 2005, Oracle. All rights reserved.
TheMERGE CommandFull Notes Page
8/14/2019 Less08 Data Tb
9/368-9 Copyright 2005, Oracle. All rights reserved.
The COMMIT and ROLLBACKCommands
These are used to finish a transaction:
COMMIT: Makes the change permanent
ROLLBACK: Undoes the change
8/14/2019 Less08 Data Tb
10/368-10 Copyright 2005, Oracle. All rights reserved.
Integrity Constraints and DML
8/14/2019 Less08 Data Tb
11/368-11 Copyright 2005, Oracle. All rights reserved.
PL/SQL
Procedural language/structured query language
(PL/SQL) is a fourth-generation programming language
(4GL). It provides:
Procedural extensions to SQL
Portability across platforms and products
Higher level of security and data integrity
protection
Support for object-oriented programming
8/14/2019 Less08 Data Tb
12/368-12 Copyright 2005, Oracle. All rights reserved.
PL/SQL
Full Notes Page
8/14/2019 Less08 Data Tb
13/368-13 Copyright 2005, Oracle. All rights reserved.
Administering PL/SQL Objects
Database administrators should be able to:
Identify problem PL/SQL objects
Recommend the appropriate use of PL/SQL
Load PL/SQL objects into the database Assist PL/SQL developers in troubleshooting
8/14/2019 Less08 Data Tb
14/368-14 Copyright 2005, Oracle. All rights reserved.
PL/SQL Objects
There are many types of PL/SQL database objects:
Package
Package body
Type body Procedure
Function
Trigger
8/14/2019 Less08 Data Tb
15/368-15 Copyright 2005, Oracle. All rights reserved.
Functions
8/14/2019 Less08 Data Tb
16/368-16 Copyright 2005, Oracle. All rights reserved.
Procedures
Procedures are used to perform a specific action.
They:
Pass values in and out by using an argument list
Are called with the CALLcommand
8/14/2019 Less08 Data Tb
17/368-17 Copyright 2005, Oracle. All rights reserved.
Packages
Packages are collections of functions and procedures.
Each package should consist of two objects:
Package specification
Package body
Package specification
8/14/2019 Less08 Data Tb
18/368-18 Copyright 2005, Oracle. All rights reserved.
Package Specification and Body
8/14/2019 Less08 Data Tb
19/368-19 Copyright 2005, Oracle. All rights reserved.
Built-in Packages
The Oracle database comes with over 350 built-inPL/SQL packages, which provide:
Administration and maintenance utilities
Extended functionality
Use the DESCRIBE
command to viewsubprograms.
8/14/2019 Less08 Data Tb
20/368-20 Copyright 2005, Oracle. All rights reserved.
Triggers
8/14/2019 Less08 Data Tb
21/368-21 Copyright 2005, Oracle. All rights reserved.
Triggering Events
Examples of EventsEvent Type
LOGON, LOGOFF, STARTUP, SHUTDOWN,
SERVERERROR
Database
CREATE, DROP, ALTER, GRANT, REVOKE,
RENAME,
DDL
INSERT, UPDATE, DELETEDML
8/14/2019 Less08 Data Tb
22/368-22 Copyright 2005, Oracle. All rights reserved.
Locks
Locks prevent multiple sessions from changing
the same data at the same time.
They are automatically obtained at the lowest
possible level for a given statement.
They do not escalate.
Transaction 1
SQL> UPDATE employees2 SET salary=salary*1.13 WHERE employee_id=100;
SQL> UPDATE employees2 SET salary=salary+1003 WHERE employee_id=100;
Transaction 2
8/14/2019 Less08 Data Tb
23/368-23 Copyright 2005, Oracle. All rights reserved.
Locking Mechanism
High level of data concurrency:
Row-level locks for inserts, updates, and deletes
No locks required for queries
Automatic queue management Locks held until the transaction ends (with the
COMMIT orROLLBACKoperation)
Transaction 1
SQL> UPDATE employees2 SET salary=salary*1.13 WHERE employee_id=101;
SQL> UPDATE employees2 SET salary=salary+1003 WHERE employee_id=100;
Transaction 2
8/14/2019 Less08 Data Tb
24/36
8/14/2019 Less08 Data Tb
25/36
8-25 Copyright 2005, Oracle. All rights reserved.
Data Concurrency
Full Notes Page
8/14/2019 Less08 Data Tb
26/36
8/14/2019 Less08 Data Tb
27/36
8-27 Copyright 2005, Oracle. All rights reserved.
Enqueue Mechanism
The enqueue mechanism keeps track of:
Sessions waiting for locks
The requested lock mode
The order in which sessions requested the lock
8/14/2019 Less08 Data Tb
28/36
8-28 Copyright 2005, Oracle. All rights reserved.
Lock Conflicts
commit;16:30:011 row updated.
Session continues.
Many selects, inserts, updates,
and deletes during the last 7.5hours, but no commits or
rollbacks!
16:30:00
Session still waiting!
SELECT sum(salary) FROMemployees;
SUM(SALARY)
-----------
692634
9:00:05UPDATE employees SETCOMMISION_PCT=2 WHERE
employee_id=101;
Session waits enqueued due to
lock conflict.
UPDATE employees SET
salary=salary+100 WHERE
employee_id=101;
1 row updated.
9:00:00UPDATE employees SET
salary=salary+100 WHERE
employee_id=100;
1 row updated.
Transaction 1 Transaction 2Time
8/14/2019 Less08 Data Tb
29/36
8-29 Copyright 2005, Oracle. All rights reserved.
Possible Causes of Lock Conflicts
Uncommitted changes
Long-running transactions
Unnecessarily high locking levels
8/14/2019 Less08 Data Tb
30/36
8-30 Copyright 2005, Oracle. All rights reserved.
Detecting Lock Conflicts
Select Blocking Sessions from the Performance page.
Click the Session ID link to view information about the
locking session, including the actual SQL statement.
8/14/2019 Less08 Data Tb
31/36
8/14/2019 Less08 Data Tb
32/36
8-32 Copyright 2005, Oracle. All rights reserved.
Resolving Lock Conflicts Using SQL
SQL statements can be used to determine the blocking
session and kill it.
SQL> alter system kill session '144,8982' immediate;
SQL> select sid, serial#, username
from v$session where sid in(select blocking_session from v$session)
Result:
1
2
8/14/2019 Less08 Data Tb
33/36
8-33 Copyright 2005, Oracle. All rights reserved.
Deadlocks
Transaction 2Transaction 1
UPDATE employees
SET salary = salary x 1.1WHERE employee_id = 1000;
UPDATE employeesSET salary = salary x 1.1WHERE employee_id = 2000;
ORA-00060:Deadlock detected whilewaiting for resource
UPDATE employees
SET manager = 1342WHERE employee_id = 2000;
UPDATE employeesSET manager = 1342WHERE employee_id = 1000;
9:00
9:15
9:16
8/14/2019 Less08 Data Tb
34/36
8-34 Copyright 2005, Oracle. All rights reserved.
Summary
In this lesson, you should have learned how to:
Manage data through the use of SQL
Identify and administer PL/SQL objects
Describe triggers and triggering events Monitor and resolve locking conflicts
8/14/2019 Less08 Data Tb
35/36
8-35 Copyright 2005, Oracle. All rights reserved.
Practice Overview:
Administering Schema Objects
This practice covers the following topics:
Identifying deadlock conflicts
Resolving deadlock conflicts
8/14/2019 Less08 Data Tb
36/36
Full Notes Page