Presentation is loading. Please wait.

Presentation is loading. Please wait.

9 Copyright © 2007, Oracle. All rights reserved. Managing Data and Concurrency.

Similar presentations


Presentation on theme: "9 Copyright © 2007, Oracle. All rights reserved. Managing Data and Concurrency."— Presentation transcript:

1 9 Copyright © 2007, Oracle. All rights reserved. Managing Data and Concurrency

2 Copyright © 2007, Oracle. All rights reserved. 9 - 2 Objectives After completing this lesson, you should be able to: Manage data by using SQL Identify and administer PL/SQL objects Describe triggers and triggering events Monitor and resolve locking conflicts

3 Copyright © 2007, Oracle. All rights reserved. 9 - 3 Manipulating Data by Using SQL. SQL> INSERT INTO employees VALUES 2 (9999,'Bob','Builder','bob@abc.net',NULL,SYSDATE, 3 'IT_PROG',NULL,NULL,100,90); 1 row created. SQL> UPDATE employees SET SALARY=6000 2 WHERE EMPLOYEE_ID = 9999; 1 row updated. SQL> DELETE from employees 2 WHERE EMPLOYEE_ID = 9999; 1 row deleted.

4 Copyright © 2007, Oracle. All rights reserved. 9 - 4 INSERT Command Create one row at a time. Insert many rows from another table. SQL> INSERT INTO emp VALUES (9999,'Bob','Builder',100,SYSDATE, 10000); SQL>INSERT INTO emp(Select employee_id, last_name, first_name,department_id, hire_date, salary FROM HR.employees where department_id =30); 6 rows created. 1 2

5 Copyright © 2007, Oracle. All rights reserved. 9 - 5 UPDATE Command Use the UPDATE command to change zero or more rows of a table. SQL> UPDATE EMP SET SALARY= salary +500 Where emp_no =117; 1 row updated. SQL> UPDATE EMP Set dept_no= (select dept_no from emp where emp_no =117); 6 rows updated. 1 2

6 Copyright © 2007, Oracle. All rights reserved. 9 - 6 DELETE Command Use the DELETE command to remove zero or more rows from a table. SQL> DELETE FROM emp WHERE emp_no =9000; 0 rows deleted. SQL> DELETE emp; 6 rows deleted. 1 2

7 Copyright © 2007, Oracle. All rights reserved. 9 - 7 MERGE Command Use the MERGE command to perform both INSERT and UPDATE in a single command. MERGE INTO EMP a USING (Select * FROM HR.employees) b ON (a.emp_no =b. employee_id ) WHEN MATCHED THEN UPDATE SET a.salary =b.salary WHEN NOT MATCHED THEN INSERT (emp_no, last_name, first_name, dept_no, hire_date, salary) VALUES (employee_id,last_name, first_name, department_id, hire_date, salary);

8 Copyright © 2007, Oracle. All rights reserved. 9 - 8 MERGE Command Full Notes Page

9 Copyright © 2007, Oracle. All rights reserved. 9 - 9 COMMIT and ROLLBACK Commands To finish a transaction: COMMIT makes the change permanent ROLLBACK undoes the change SQL> COMMIT; Commit complete.

10 Copyright © 2007, Oracle. All rights reserved. 9 - 10 PL/SQL Oracle’s Procedural Language extension to SQL (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

11 Copyright © 2007, Oracle. All rights reserved. 9 - 11 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 Use supplied packages for administrative and database maintenance tasks

12 Copyright © 2007, Oracle. All rights reserved. 9 - 12 PL/SQL Objects There are many types of PL/SQL database objects: Package Package body Type body Procedure Function Trigger

13 Copyright © 2007, Oracle. All rights reserved. 9 - 13 Functions

14 Copyright © 2007, Oracle. All rights reserved. 9 - 14 Procedures Are used to perform specific actions Pass values in and out by using an argument list Can be called from within other programs using the CALL command

15 Copyright © 2007, Oracle. All rights reserved. 9 - 15 Packages Packages are collections of functions and procedures. Each package should consist of two objects: Package specification Package body Package specification

16 Copyright © 2007, Oracle. All rights reserved. 9 - 16 Package Specification and Body

17 Copyright © 2007, Oracle. All rights reserved. 9 - 17 Built-in Packages Oracle Database comes with several built-in PL/SQL packages that provide: –Administration and maintenance utilities –Extended functionality Use the DESCRIBE command to view subprograms. SQL>DESC DBMS_LOCK

18 Copyright © 2007, Oracle. All rights reserved. 9 - 18 Triggers

19 Copyright © 2007, Oracle. All rights reserved. 9 - 19 Triggering Events Event TypeExamples of Events DML INSERT, UPDATE, DELETE DDL CREATE, DROP, ALTER, GRANT, REVOKE, RENAME Database LOGON, LOGOFF, STARTUP, SHUTDOWN, SERVERERROR, SUSPEND

20 Copyright © 2007, Oracle. All rights reserved. 9 - 20 Locks Prevent multiple sessions from changing the same data at the same time Are automatically obtained at the lowest possible level for a given statement Do not escalate Transaction 1 SQL> UPDATE employees 2 SET salary=salary*1.1 3 WHERE employee_id=100; SQL> UPDATE employees 2 SET salary=salary+100 3 WHERE employee_id=100; Transaction 2

21 Copyright © 2007, Oracle. All rights reserved. 9 - 21 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 or ROLLBACK operation) Transaction 1 SQL> UPDATE employees 2 SET salary=salary*1.1 3 WHERE employee_id=101; SQL> UPDATE employees 2 SET salary=salary+100 3 WHERE employee_id=100; Transaction 2

22 Copyright © 2007, Oracle. All rights reserved. 9 - 22 Data Concurrency Time: 09:00:00 Transaction 1 UPDATE hr.employees SET salary=salary+100 WHERE employee_id=100; Transaction 2 UPDATE hr.employees SET salary=salary+100 WHERE employee_id=101; Transaction 3 UPDATE hr.employees SET salary=salary+100 WHERE employee_id=102;... Transaction x UPDATE hr.employees SET salary=salary+100 WHERE employee_id=xxx;

23 Copyright © 2007, Oracle. All rights reserved. 9 - 23 Data Concurrency Full Notes Page

24 Copyright © 2007, Oracle. All rights reserved. 9 - 24 DML Locks Each DML transaction must acquire two locks: EXCLUSIVE row lock on the row or rows being updated ROW EXCLUSIVE table-level lock on the table containing the rows SQL> UPDATE employees 2 SET salary=salary*1.1 3 WHERE employee_id= 106; 1 row updated. SQL> UPDATE employees 2 SET salary=salary*1.1 3 WHERE employee_id= 107; 1 row updated. Transaction 2Transaction 1

25 Copyright © 2007, Oracle. All rights reserved. 9 - 25 Enqueue Mechanism The enqueue mechanism keeps track of: Sessions waiting for locks Requested lock mode Order in which sessions requested the lock

26 Copyright © 2007, Oracle. All rights reserved. 9 - 26 Lock Conflicts UPDATE employees SET salary=salary+100 WHERE employee_id=100; 1 row updated. 9:00:00 UPDATE employees SET salary=salary+100 WHERE employee_id=101; 1 row updated. UPDATE employees SET COMMISION_PCT=2 WHERE employee_id=101; Session waits enqueued due to lock conflict. 9:00:05 SELECT sum(salary) FROM employees; SUM(SALARY) ----------- 692634 Session still waiting! 16:30:00 Many selects, inserts, updates, and deletes during the last 7.5 hours, but no commits or rollbacks! 1 row updated. Session continues. 16:30:01 commit; Transaction 1Transaction 2Time

27 Copyright © 2007, Oracle. All rights reserved. 9 - 27 Possible Causes of Lock Conflicts Uncommitted changes Long-running transactions Unnecessarily high locking levels

28 Copyright © 2007, Oracle. All rights reserved. 9 - 28 Detecting Lock Conflicts Select Blocking Sessions on the Performance page. Click the Session ID link to view information about the locking session, including the actual SQL statement.

29 Copyright © 2007, Oracle. All rights reserved. 9 - 29 Resolving Lock Conflicts To resolve a lock conflict: Have the session holding the lock commit or roll back Terminate the session holding the lock (in an emergency)

30 Copyright © 2007, Oracle. All rights reserved. 9 - 30 Resolving Lock Conflicts with 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

31 Copyright © 2007, Oracle. All rights reserved. 9 - 31 Deadlocks Transaction 2Transaction 1 UPDATE employees SET salary = salary x 1.1 WHERE employee_id = 1000; UPDATE employees SET salary = salary x 1.1 WHERE employee_id = 2000; ORA-00060: Deadlock detected while waiting for resource UPDATE employees SET manager = 1342 WHERE employee_id = 2000; UPDATE employees SET manager = 1342 WHERE employee_id = 1000; 9:00 9:15 9:16

32 Copyright © 2007, Oracle. All rights reserved. 9 - 32 Summary In this lesson, you should have learned how to: Manage data by using SQL Identify and administer PL/SQL objects Describe triggers and triggering events Monitor and resolve locking conflicts

33 Copyright © 2007, Oracle. All rights reserved. 9 - 33 Practice 9 Overview: Managing Data and Concurrency This practice covers the following topics: Identifying locking conflicts Resolving locking conflicts

34 Copyright © 2007, Oracle. All rights reserved. 9 - 34


Download ppt "9 Copyright © 2007, Oracle. All rights reserved. Managing Data and Concurrency."

Similar presentations


Ads by Google