Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                
SlideShare a Scribd company logo
ORACLE ARCHITECTURE
Overview
Presented By
Kelly Technologies
www.kellytechno.com
ORACLE TERMS
 Schema – logical collection of user’s objects
 Tablespace – logical space used for storage
 Datafile – physical file used for storage
 Extent – group of contiguous blocks
 Block – unit of physical storage
www.kellytechno.com
ORACLE
ARCHITECTURE
 database vs. instance
Parameter files*
Control files**
Data files
Redo Log files
System Global Area (SGA)
Background Processes
Disk Memory
Database Instance
* Parameter files include the init<SID>.ora and config<SID>.ora files. These
are used to set options for the database.
** Control files contain information about the db in binary form. They can be
backed up to a text file however.
www.kellytechno.com
ORACLE VS. ACCESS AND MYSQL
 Access
 One .mdb file contains all objects
 Limited roles/permissions
 MySQL
 Three files per table
 Permissions based on user, database, and host
 Oracle
 Many files
 Many roles/permissions possible
www.kellytechno.com
THE ORACLE DATA
DICTIONARY
 Collection of tables and views that show the
inner workings and structure of the db
 “static” data dictionary views
 owned by SYS
 created by catalog.sql script at db creation
 contain DDL info
 dynamic data dictionary views
 also referred to as V$ views
 based on virtual tables (X$ tables)
 provide info about the instance
www.kellytechno.com
MORE DATA DICTIONARY
Create table samples (
ID number(3) primary key,
Type varchar2(5),
Constraint type_ck check (type in (‘photo’,’swatch’))
…);
1. Samples table created in user’s schema
2. Primary key index created in user’s schema (SYS_C984620)
3. Data dictionary is also updated, with rows being inserted into
tables underlying the following data dictionary views:
User_objects
User_constraints
User_cons_columns
And lots more…
www.kellytechno.com
ORACLE ODDS AND
ENDS
 Dual table
 % - the SQL wildcard
 inserting apostrophes
 Case sensitive string matching
INSERT INTO emp (name) VALUES (‘O’’Neill);
UPDATE emp
SET ename=UPPER(ename) WHERE ename='O''Neill';
SELECT 1+1*400 FROM DUAL;
SELECT ename FROM emp WHERE ename like ‘%neil%’;
www.kellytechno.com
SYSDATE
 Sysdate returns current system date AND time
 use trunc function to remove time piece
Example:
select to_char (adate, ‘dd-mon-yy hh24:mi:ss’)
TO_CHAR(ADATE, ‘DD-MON-YY:HH24:MI:SS’)
17-feb-00 23:41:50
select adate from samples where trunc(adate)=‘17-feb-00’;
ADATE
17-FEB-00
www.kellytechno.com
ROWID
 ROWID is an internal number Oracle uses to
uniquely identify each row
 NOT a primary key! Is the actual location of a
row on a disk. Very efficient for retrieval.
 Format specifies block, row, and file (and object
in 8)
Oracle 7: BBBBBBB.RRRR.FFFFF
Oracle 8: OOOOOO.FFF.BBBBBB.RRR
 Called pseudo-column since can be selected
www.kellytechno.com
OUTER JOINS IN ORACLE
 Add (+) to table where nulls are acceptable
SELECT *
FROM emp, dept
WHERE emp.deptno(+)=dept.id;
www.kellytechno.com
ORACLE SQL FUNCTIONS
 Upper(), lower()
 Substr(), replace(), rtrim(), concat()
 Length()
 Floor(), sqrt(), min(), max(), stddev()
 Add_months(), months_between(),
last_day()
 To_date(), to_char(), to_lob()
www.kellytechno.com
MORE FUNCTIONS
 nvl()
 If NULL, return this instead…
Nvl(lastname,’Anonymous’)
 decode()
 Sort of like an If/Then statement…
Decode(gender,0,’Male’,1,’Female’,’Unknown’)
www.kellytechno.com
ORACLE ERROR MESSAGES
 Divided into groups by first three letters (e.g.
ORA or TNS)
 Number gives more information about error
 Several messages may be related to only one
problem
 oerr facility
www.kellytechno.com
CONSTRAINTS
 Primary key
 Foreign key
 Unique, not null
 Check
 Name your constraints
 User constraints, user_cons_columns
CREATE TABLE test (
id NUMBER(2),
col2 VARCHAR2(2),
col3 VARCHAR2(3),
CONSTRAINT test_pk PRIMARY KEY(id),
CONSTRAINT col3_ck CHECK (col3 IN
('yes','no'))
);
www.kellytechno.com
SELECT
user_constraints.constraint_name name,
constraint_type type,
user_constraints.search_condition
FROM user_constraints, user_cons_columns
WHERE
user_constraints.table_name=user_cons_columns.table_name
AND user_constraints.constraint_name=user_cons_columns.constraint_name
AND user_constraints.owner=user_cons_columns.owner
AND user_constraints.table_name=‘TEST’;
NAME T SEARCH_CONDITION
--------------- - -------------------------
COL3_CK C col3 IN ('yes','no')
TEST_PK P
www.kellytechno.com
CONSTRAINTS
 Oracle naming of constraints is NOT intuitive!
 enabling and disabling
disable constraint constraint_name;
 the EXCEPTIONS table
 run utlexcpt.sql to create EXCEPTIONS table then
 alter SQL statement:
SQL_query EXCEPTIONS into EXCEPTIONS;
www.kellytechno.com
MORE OBJECTS
 Sequences
creating the sequence
create sequence CustomerID increment by 1
start with 1000;
selecting from the sequence
insert into customer (name, contact, ID)
values (‘TManage’,’Kristin
Chaffin’,CustomerID.NextVal);
 CurrVal is used after NextVal for related inserts
 Synonyms
provide location and owner transparency
Can be public or private
www.kellytechno.com
PL/SQL -
TRIGGERS
 Executed on insert, update, delete
 Use to enforce business logic that can’t be
coded through referential integrity or
constraints
 Types of triggers
row level (use FOR EACH ROW clause)
statement level (default)
Before and After triggers
 Referencing old and new values
www.kellytechno.com
TRIGGER EXAMPLE
SQL> desc all_triggers;
Name Null? Type
------------------------------- -------- ----
OWNER VARCHAR2(30)
TRIGGER_NAME VARCHAR2(30)
TRIGGER_TYPE VARCHAR2(16)
TRIGGERING_EVENT VARCHAR2(75)
TABLE_OWNER VARCHAR2(30)
BASE_OBJECT_TYPE VARCHAR2(16)
TABLE_NAME VARCHAR2(30)
COLUMN_NAME VARCHAR2(4000)
REFERENCING_NAMES VARCHAR2(128)
WHEN_CLAUSE VARCHAR2(4000)
STATUS VARCHAR2(8)
DESCRIPTION VARCHAR2(4000)
ACTION_TYPE VARCHAR2(11)
TRIGGER_BODY LONG
www.kellytechno.com
TRIGGER EXAMPLE (CONT.)
SQL> select trigger_name from all_triggers where owner='SCOTT';
TRIGGER_NAME
------------------------------
AFTER_INS_UPD_ON_EMP
set lines 120
col trigger_name format a20
col triggering_event format a18
col table_name format a10
col description format a26
col trigger_body format a35
select trigger_name, trigger_type, triggering_event,
table_name, status, description, trigger_body
from all_triggers
where trigger_name='AFTER_INS_UPD_ON_EMP';
www.kellytechno.com
TRIGGER EXAMPLE (CONT.)
SQL> /
TRIGGER_NAME TRIGGER_TYPE TRIGGERING_EVENT TABLE_NAME STATUS DESCRIPTION
-------------------- ---------------- ------------------ ---------- -------- -----------------------
TRIGGER_BODY
-----------------------------------
AFTER_INS_UPD_ON_EMP BEFORE EACH ROW INSERT OR UPDATE EMP ENABLED
scott.after_ins_upd_on_emp
before insert or update
on scott.emp
for each row
begin
:new.ename := upper(:new.ename);
end;
The above trigger was created with the following statement:
create or replace trigger scott.after_ins_upd_on_emp
before insert or update on scott.emp
for each row
begin
:new.ename := upper(:new.ename);
end;
www.kellytechno.com
REMEMBER THOSE
VIEWS?
 Query USER_TRIGGERS to get trigger info
 Query USER_SOURCE to get source of
procedure, function, package, or package body
 Query USER_ERRORS to get error information
(or use show errors)
col name format a15
col text format a40
select name, type, text
from user_errors
order by name, type, sequence;
 Query USER_OBJECT to get status info
www.kellytechno.com
UNDERSTANDING INDEXES
 Index overhead
impact on inserts, updates and deletes
batch inserts can be slowed by indexes - may want to
drop, then recreate
rebuilding indexes
 Use indexes when query will return less than 5%
of rows in a large table
 Determining what to index
All primary and foreign keys
Examine SQL and index heavily hit, selective columns
(columns often found in where clauses)
www.kellytechno.com
WHAT NOT TO INDEX…
PREFERABLY
 columns that are constantly updated
 columns that contain a lot of null values
 columns that have a poor distribution of data
 Examples:
 yes/no
 true/false
 male/female
www.kellytechno.com
THANK
YOU
www.kellytechno.com

More Related Content

Oracle training in hyderabad

  • 1. ORACLE ARCHITECTURE Overview Presented By Kelly Technologies www.kellytechno.com
  • 2. ORACLE TERMS  Schema – logical collection of user’s objects  Tablespace – logical space used for storage  Datafile – physical file used for storage  Extent – group of contiguous blocks  Block – unit of physical storage www.kellytechno.com
  • 3. ORACLE ARCHITECTURE  database vs. instance Parameter files* Control files** Data files Redo Log files System Global Area (SGA) Background Processes Disk Memory Database Instance * Parameter files include the init<SID>.ora and config<SID>.ora files. These are used to set options for the database. ** Control files contain information about the db in binary form. They can be backed up to a text file however. www.kellytechno.com
  • 4. ORACLE VS. ACCESS AND MYSQL  Access  One .mdb file contains all objects  Limited roles/permissions  MySQL  Three files per table  Permissions based on user, database, and host  Oracle  Many files  Many roles/permissions possible www.kellytechno.com
  • 5. THE ORACLE DATA DICTIONARY  Collection of tables and views that show the inner workings and structure of the db  “static” data dictionary views  owned by SYS  created by catalog.sql script at db creation  contain DDL info  dynamic data dictionary views  also referred to as V$ views  based on virtual tables (X$ tables)  provide info about the instance www.kellytechno.com
  • 6. MORE DATA DICTIONARY Create table samples ( ID number(3) primary key, Type varchar2(5), Constraint type_ck check (type in (‘photo’,’swatch’)) …); 1. Samples table created in user’s schema 2. Primary key index created in user’s schema (SYS_C984620) 3. Data dictionary is also updated, with rows being inserted into tables underlying the following data dictionary views: User_objects User_constraints User_cons_columns And lots more… www.kellytechno.com
  • 7. ORACLE ODDS AND ENDS  Dual table  % - the SQL wildcard  inserting apostrophes  Case sensitive string matching INSERT INTO emp (name) VALUES (‘O’’Neill); UPDATE emp SET ename=UPPER(ename) WHERE ename='O''Neill'; SELECT 1+1*400 FROM DUAL; SELECT ename FROM emp WHERE ename like ‘%neil%’; www.kellytechno.com
  • 8. SYSDATE  Sysdate returns current system date AND time  use trunc function to remove time piece Example: select to_char (adate, ‘dd-mon-yy hh24:mi:ss’) TO_CHAR(ADATE, ‘DD-MON-YY:HH24:MI:SS’) 17-feb-00 23:41:50 select adate from samples where trunc(adate)=‘17-feb-00’; ADATE 17-FEB-00 www.kellytechno.com
  • 9. ROWID  ROWID is an internal number Oracle uses to uniquely identify each row  NOT a primary key! Is the actual location of a row on a disk. Very efficient for retrieval.  Format specifies block, row, and file (and object in 8) Oracle 7: BBBBBBB.RRRR.FFFFF Oracle 8: OOOOOO.FFF.BBBBBB.RRR  Called pseudo-column since can be selected www.kellytechno.com
  • 10. OUTER JOINS IN ORACLE  Add (+) to table where nulls are acceptable SELECT * FROM emp, dept WHERE emp.deptno(+)=dept.id; www.kellytechno.com
  • 11. ORACLE SQL FUNCTIONS  Upper(), lower()  Substr(), replace(), rtrim(), concat()  Length()  Floor(), sqrt(), min(), max(), stddev()  Add_months(), months_between(), last_day()  To_date(), to_char(), to_lob() www.kellytechno.com
  • 12. MORE FUNCTIONS  nvl()  If NULL, return this instead… Nvl(lastname,’Anonymous’)  decode()  Sort of like an If/Then statement… Decode(gender,0,’Male’,1,’Female’,’Unknown’) www.kellytechno.com
  • 13. ORACLE ERROR MESSAGES  Divided into groups by first three letters (e.g. ORA or TNS)  Number gives more information about error  Several messages may be related to only one problem  oerr facility www.kellytechno.com
  • 14. CONSTRAINTS  Primary key  Foreign key  Unique, not null  Check  Name your constraints  User constraints, user_cons_columns CREATE TABLE test ( id NUMBER(2), col2 VARCHAR2(2), col3 VARCHAR2(3), CONSTRAINT test_pk PRIMARY KEY(id), CONSTRAINT col3_ck CHECK (col3 IN ('yes','no')) ); www.kellytechno.com
  • 15. SELECT user_constraints.constraint_name name, constraint_type type, user_constraints.search_condition FROM user_constraints, user_cons_columns WHERE user_constraints.table_name=user_cons_columns.table_name AND user_constraints.constraint_name=user_cons_columns.constraint_name AND user_constraints.owner=user_cons_columns.owner AND user_constraints.table_name=‘TEST’; NAME T SEARCH_CONDITION --------------- - ------------------------- COL3_CK C col3 IN ('yes','no') TEST_PK P www.kellytechno.com
  • 16. CONSTRAINTS  Oracle naming of constraints is NOT intuitive!  enabling and disabling disable constraint constraint_name;  the EXCEPTIONS table  run utlexcpt.sql to create EXCEPTIONS table then  alter SQL statement: SQL_query EXCEPTIONS into EXCEPTIONS; www.kellytechno.com
  • 17. MORE OBJECTS  Sequences creating the sequence create sequence CustomerID increment by 1 start with 1000; selecting from the sequence insert into customer (name, contact, ID) values (‘TManage’,’Kristin Chaffin’,CustomerID.NextVal);  CurrVal is used after NextVal for related inserts  Synonyms provide location and owner transparency Can be public or private www.kellytechno.com
  • 18. PL/SQL - TRIGGERS  Executed on insert, update, delete  Use to enforce business logic that can’t be coded through referential integrity or constraints  Types of triggers row level (use FOR EACH ROW clause) statement level (default) Before and After triggers  Referencing old and new values www.kellytechno.com
  • 19. TRIGGER EXAMPLE SQL> desc all_triggers; Name Null? Type ------------------------------- -------- ---- OWNER VARCHAR2(30) TRIGGER_NAME VARCHAR2(30) TRIGGER_TYPE VARCHAR2(16) TRIGGERING_EVENT VARCHAR2(75) TABLE_OWNER VARCHAR2(30) BASE_OBJECT_TYPE VARCHAR2(16) TABLE_NAME VARCHAR2(30) COLUMN_NAME VARCHAR2(4000) REFERENCING_NAMES VARCHAR2(128) WHEN_CLAUSE VARCHAR2(4000) STATUS VARCHAR2(8) DESCRIPTION VARCHAR2(4000) ACTION_TYPE VARCHAR2(11) TRIGGER_BODY LONG www.kellytechno.com
  • 20. TRIGGER EXAMPLE (CONT.) SQL> select trigger_name from all_triggers where owner='SCOTT'; TRIGGER_NAME ------------------------------ AFTER_INS_UPD_ON_EMP set lines 120 col trigger_name format a20 col triggering_event format a18 col table_name format a10 col description format a26 col trigger_body format a35 select trigger_name, trigger_type, triggering_event, table_name, status, description, trigger_body from all_triggers where trigger_name='AFTER_INS_UPD_ON_EMP'; www.kellytechno.com
  • 21. TRIGGER EXAMPLE (CONT.) SQL> / TRIGGER_NAME TRIGGER_TYPE TRIGGERING_EVENT TABLE_NAME STATUS DESCRIPTION -------------------- ---------------- ------------------ ---------- -------- ----------------------- TRIGGER_BODY ----------------------------------- AFTER_INS_UPD_ON_EMP BEFORE EACH ROW INSERT OR UPDATE EMP ENABLED scott.after_ins_upd_on_emp before insert or update on scott.emp for each row begin :new.ename := upper(:new.ename); end; The above trigger was created with the following statement: create or replace trigger scott.after_ins_upd_on_emp before insert or update on scott.emp for each row begin :new.ename := upper(:new.ename); end; www.kellytechno.com
  • 22. REMEMBER THOSE VIEWS?  Query USER_TRIGGERS to get trigger info  Query USER_SOURCE to get source of procedure, function, package, or package body  Query USER_ERRORS to get error information (or use show errors) col name format a15 col text format a40 select name, type, text from user_errors order by name, type, sequence;  Query USER_OBJECT to get status info www.kellytechno.com
  • 23. UNDERSTANDING INDEXES  Index overhead impact on inserts, updates and deletes batch inserts can be slowed by indexes - may want to drop, then recreate rebuilding indexes  Use indexes when query will return less than 5% of rows in a large table  Determining what to index All primary and foreign keys Examine SQL and index heavily hit, selective columns (columns often found in where clauses) www.kellytechno.com
  • 24. WHAT NOT TO INDEX… PREFERABLY  columns that are constantly updated  columns that contain a lot of null values  columns that have a poor distribution of data  Examples:  yes/no  true/false  male/female www.kellytechno.com

Editor's Notes

  1. What constraints do *YOU* have in your schema? @h:\..\chaffin\shared\scripts\utlexcpt.sql