1. Trang chủ
  2. » Công Nghệ Thông Tin

oracle slides05 fp2005 ver 1.0

51 387 0
Tài liệu đã được kiểm tra trùng lặp

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Tiêu đề PL/SQL Performance tuning Concurrency & Recovery Data transfer utilities
Trường học Infosys Technologies Ltd
Chuyên ngành PL/SQL Performance Tuning
Thể loại Lecture notes
Năm xuất bản 2005
Định dạng
Số trang 51
Dung lượng 740,5 KB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

• Performed by SMON when database is restarted• Roll forward using Redo Log to record data not present in data files • Rolls back transactions that did not commit/were explicitly rolled

Trang 1

PL/SQL Performance tuning Concurrency & Recovery

Data transfer utilities

Oracle Day 5

Trang 2

To understand PL/SQL performance tuning

To understand few tools like DBMS_TRACE used to tune the PL/SQL code

To understand the locking mechanism and types of locking in Oracle

To understand the read consistency model

To understand the concurrency schemes followed by Oracle

To understand different kinds of database failures and procedure to recover from them

To understand data transfer utilities

Trang 3

PL/SQL Performance tuning

Trang 4

• By tuning the applications, one can make sure they continue to deliver the

required response time and throughput

Trang 5

Copyright © 2005 , Infosys Technologies Ltd

ER/CORP/CRS/DB25/003 Version No 2.0

Reasons for PL/SQL Performance Problems

• Badly written SQL statements

• Poor programming practices

• Misuse of shared memory

Trang 6

Solution to Badly written SQL statements

• Analyze the execution plans and performance using EXPLAIN PLAN statement

• Rewrite the SQL statements

• For more info on SQL statements, please refer the RDBMS artifacts.

Trang 7

Copyright © 2005 , Infosys Technologies Ltd

ER/CORP/CRS/DB25/003 Version No 2.0

Solutions to Poor programming practices

Here different areas of PL/SQL code are categorized and some of the basic principles of optimizing are discussed:

• DECLARE – what is required by the code

• Hand crafting the Built-in Functions

• Inefficient Conditional Control Statements

• Check the LOOP Statements

• Implicit Datatype Conversions

• Inappropriate Declarations for Numeric Datatypes

• Unnecessary NOT NULL Constraints

Trang 8

DECLARE – what is required by the code

• After the completion of the code, search for un-used variables if any Remove them from the code

• Defer the execution till it required

BEGIN

IF criteria1 THEN DECALRE

l_chr_var1 VARCHAR2(15) :=

takes_five_miunte(… );

BEGIN use_the_defined_variable(l_chr_var1); END;

ELSE

Trang 9

Copyright © 2005 , Infosys Technologies Ltd

ER/CORP/CRS/DB25/003 Version No 2.0

Hand crafting the Built-in Functions

• Built-in functions are more efficient

• Do not hand code one’s own versions of built-in functions such as REPLACE, TRANSLATE, SUBSTR, INSTR, RPAD, and LTRIM

Trang 10

Inefficient Conditional Control Statements

• Most probable condition must be placed initially.

• Now, consider the following AND expression:

IF credit_ok(cust_id) AND (loan < 5000) THEN

END IF;

The Boolean function credit_ok is always called

• However, if one switch the operands of AND as follows

IF (loan < 5000) AND credit_ok(cust_id) THEN

END IF;

The function is called only when the expression loan < 5000 is true

Trang 11

Copyright © 2005 , Infosys Technologies Ltd

ER/CORP/CRS/DB25/003 Version No 2.0

Check the LOOP statements

• Minimize the number of iterations inside loop As soon as the code does the required job EXIT the loop

• Loop within a loop – One common place where there is possibility of

unnecessary code execution

• Make sure that there should not be statements inside the loop that can be executed outside the loop

Trang 12

Implicit Datatype Conversions

• Avoiding implicit conversions can improve performance

BEGIN vChar := 25; converted vChar := '25'; not converted

END;

Trang 13

Copyright © 2005 , Infosys Technologies Ltd

ER/CORP/CRS/DB25/003 Version No 2.0

Inappropriate Declarations for Numeric Datatypes

• When one need to declare an integer variable, use the datatype

PLS_INTEGER, which is the most efficient numeric type

Trang 14

Unnecessary NOT NULL Constraints

• Using the NOT NULL constraint incurs a performance cost

m := a + b;

IF m IS NULL THEN enforce constraint programmatically

END IF;

END;

Trang 15

Copyright © 2005 , Infosys Technologies Ltd

ER/CORP/CRS/DB25/003 Version No 2.0

Solution to Misuse of shared memory

• Sizing the shared memory pool correctly

• Make sure it is large enough to hold all frequently used packages but not so large that memory is wasted

Trang 16

Identifying PL/SQL Performance problems

• There are few tools/API provided by PL/SQL to identify the PL/SQL performance problems:

– DBMS_PROFILER

– DBMS_TRACE

• One need DBA-SYS access to use these tools/API

Trang 17

Copyright © 2005 , Infosys Technologies Ltd

ER/CORP/CRS/DB25/003 Version No 2.0

DBMS_PROFILER

• The Profiler API is implemented as PL/SQL package DBMS_PROFILER

• Provides services for gathering and saving run-time statistics

• The information is stored in database tables, which one can query later

• For example, one can learn how much time was spent executing each PL/SQL line and subprogram

Trang 18

DBMS_TRACE

• The Trace API is implemented as PL/SQL package DBMS_TRACE

• Provides services for tracing execution by subprogram or exception.

• One can see the order in which subprograms get executed

• In a typical session, follow the following steps:

– Optionally, select specific subprograms for trace data collection

– Start by calling the procedure set_plsql_trace in package DBMS_TRACE – Run the application to be traced

– Stop by calling the procedure clear_plsql_trace

Trang 19

Concurrency in Oracle

Trang 20

Locking mechanism

• The smallest unit that can be locked in oracle is the row

• For each SQL statement oracle acquires the appropriate lock

automatically.

• Programmers cannot acquire locks at the row level explicitly

• The smallest unit at which programmers can explicitly acquire locks is the table

• Locks are released when transaction commits or rolls back

Oracle does not acquire locks for reading

Trang 21

Copyright © 2005 , Infosys Technologies Ltd

ER/CORP/CRS/DB25/003 Version No 2.0

Trang 22

LOCK TABLE

LOCK TABLE

LOCK TABLE <tableName> IN <mode> MODE

Trang 23

Copyright © 2005 , Infosys Technologies Ltd

ER/CORP/CRS/DB25/003 Version No 2.0

Locking Modes

 EXCLUSIVE(X)

 No other transaction can lock the table

 SHARE(S)

 Allow queries but no updates

 Other transactions can acquire S Lock on this table

 Can allow SELECT FOR UPDATE & SELECT statements

Trang 25

Copyright © 2005 , Infosys Technologies Ltd

ER/CORP/CRS/DB25/003 Version No 2.0

 ROW SHARE(=SHARE UPDATE)

 Allow concurrent access, prevent Exclusive locking by other

transactions

 SHARE ROW EXCLUSIVE(SRX)

 Allow other users to look at table but prevent sharing and updates by other transactions

Locking Modes

Trang 26

SQL Statement Mode of table lock

Select for update of RS

Lock table in rowshare mode RS

Lock table in rowx mode RX

Lock table in share mode S

Lock table in exclusive mode X

Lock table in srx mode SRX

Row locknoneXX

Trang 27

Copyright © 2005 , Infosys Technologies Ltd

ER/CORP/CRS/DB25/003 Version No 2.0

Trang 28

Read Consistency Model

• System Change Number (SCN)

– A unique number which is assigned to each transaction when it starts

• Transaction table

– An internal data structure which stores information regarding the active transactions in the system

Trang 29

Recovery in Oracle

Trang 30

Possible causes of failure

Trang 31

Copyright © 2005 , Infosys Technologies Ltd

ER/CORP/CRS/DB25/003 Version No 2.0

Process recovery

• Process recovery

– to be done when user/server process failed

– Failure detected by PMON which rolls back the transaction and release resources

– If process is a background process, generally instance cannot function correctly

Trang 32

• Performed by SMON when database is restarted

• Roll forward using Redo Log to record data not present in data files

• Rolls back transactions that did not commit/were explicitly rolled

back

• Release locks held by transactions in process at time of failure

Trang 33

Copyright © 2005 , Infosys Technologies Ltd

ER/CORP/CRS/DB25/003 Version No 2.0

Media recovery

• Initiated by DBA

• Complete Media recovery

– Restore backup data files

– Start recovery program using SQL *DBA

– Retrieve archived log files to roll forward and roll back using generated roll back segments

Trang 34

Data Transfer Utilities

Trang 35

Copyright © 2005 , Infosys Technologies Ltd

ER/CORP/CRS/DB25/003 Version No 2.0

Objectives

Export utility

Import utility

SQL Loader

Trang 36

Export & Import utilities

• Complementary utilities which allow one to write data in an ORACLE-binary format from the database into operating system files and to read data back from those

• EXPORT, IMPORT are used for the following tasks:

– backup Oracle data in operating system files

– restore tables that were dropped

– save space or reduce fragmentation in the database

– move data from one owner to another

Trang 37

Copyright © 2005 , Infosys Technologies Ltd

ER/CORP/CRS/DB25/003 Version No 2.0

Export Utility - Invoking Export

• Interactive dialogue:

Simply type exp on command prompt

• Controlled through by passing parameters:

One may pass parameters when one export data from the database

– Type the following at command prompt

C:\>exp scott/tiger file=empdept.expdat tables=(EMP,DEPT) log=empdept.log

• Parameterfile controlled:

One may use a parameter file where the parameters are stored

– Type the following at command prompt

C:\>exp <userid/password> parfile=<filename>

Trang 38

Import Utility - Invoking Import

• Interactive dialogue:

Simply type imp on command prompt

• Controlled through by passing parameters:

One may pass parameters when one import data

– Type the following at command prompt

C:\>imp <userid/password> tables=(table1,table2)

• Parameterfile controlled:

One may use a parameter file where the parameters are stored

– Type the following at command prompt

Trang 39

Copyright © 2005 , Infosys Technologies Ltd

ER/CORP/CRS/DB25/003 Version No 2.0

SQL * Loader

• SQL*Loader is Oracle’s utility program for loading data into an Oracle table

• SQL*Loader takes two input files – a control file and a data file – and loads the data into a single Oracle table

Trang 40

The SQL * Loader environment

Input Data File

Control File

SQL * Loader Executable

Oracle Database

Data Data

Trang 41

Copyright © 2005 , Infosys Technologies Ltd

ER/CORP/CRS/DB25/003 Version No 2.0

The SQL * Loader Control file

Key to any load process The control file provides the following information to

SQL*Loader:

• The name and location of the input data file

• The format of the records in the input data file

• The name of the table or tables to be loaded

• The correspondence between the fields in the input record and the columns in the database tables being loaded

• Selection criteria defining which records from the input file contain data to be inserted into the destination database tables

• The names and locations of the bad file and the discard file (Explained later)

Trang 42

The SQL * Loader Log file

The log file is a record of SQL*Loader's activities during a load session It contains

information such as the following:

• The names of the control file, log file, bad file, discard file, and data file

• The values of several command-line parameters

• A detailed breakdown of the fields and datatypes in the data file that was

loaded

• Error messages for records that cause errors

• Messages indicating when records have been discarded

• A summary of the load that includes the number of logical records read from the data file, the number of rows rejected because of errors, the number of rows discarded because of selection criteria, and the elapsed time of the load

Trang 43

Copyright © 2005 , Infosys Technologies Ltd

ER/CORP/CRS/DB25/003 Version No 2.0

The SQL * Loader Bad file

• Whenever SQL*Loader encounters a database error while trying to load a

record, it writes that record to a file known as the bad file.

• Common scenarios are:

– insert failing because of some type of error Integrity constraint violations

– lack of free space in a tablespace, can also cause insert operations to fail

• Bad files are mandatory

Trang 44

The SQL * Loader Discard file

• Used to hold records that do not meet selection criteria specified in the SQL*Loader control file

• Discard files are optional

Trang 45

Copyright © 2005 , Infosys Technologies Ltd

ER/CORP/CRS/DB25/003 Version No 2.0

An example on usage of SQL * Loader

• The following slides contains a short example showing how SQL*Loader is used

• For this example, we'll be loading a Unix module mark sheet (XLS) of a FP batch taken from perception server (examination server) into Oracle

Trang 46

Creating Data file

• Save your Excel spreadsheet data as a Comma-Separated-Variable (*.csv) file

• Click on the icon below to get the sample CSV file

Microsoft Office

Excel Comma Separated V

Trang 47

Copyright © 2005 , Infosys Technologies Ltd

ER/CORP/CRS/DB25/003 Version No 2.0

Creating Control file

• Using any text editor, create a file (say, e:\workarea\marksheet.ctl) containing these lines:

LOAD DATA

INFILE 'E:\workarea\marksheet.csv'

REPLACE

INTO TABLE scott.marks

FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"'

TRAILING NULLCOLS

(empid INTEGER EXTERNAL,

quiz1 INTEGER EXTERNAL,

quiz2 INTEGER EXTERNAL,

test INTEGER EXTERNAL,

total INTEGER EXTERNAL,

grade

)

Trang 48

• One can see your loaded data with your favorite:

SQL>Select * from marks;

Trang 49

Copyright © 2005 , Infosys Technologies Ltd

ER/CORP/CRS/DB25/003 Version No 2.0

Trang 50

• PL/SQL program can feel a performance hit because of so many reasons

• We have to ensure the performance with best programming practices, SQL tuning and utilizing the memory in the right way

• DBMS_PROFILER, DBMS_TRACE are two useful tools which are used by developers to isolate the performance related issues in a PL/SQL program

• The default locking in Oracle is Row Exclusive

• Programmers can acquire lock on table level as well

• Read consistency model is used to read values from database.

• Database may fail because of process, instance or media failure.

• Different kinds of database failures are recovered by different procedures- some implicitly and some explicitly by DBA

• To understand data transfer utilities

Trang 51

Copyright © 2005 , Infosys

Technologies Ltd

ER/CORP/CRS/DB25/003 Version No 2.0

Thank You!

Ngày đăng: 18/04/2014, 10:25

TỪ KHÓA LIÊN QUAN

w