Oracle 11g Institutes : kelly technologies is the best Oracle 11g Training Institutes in Hyderabad. Providing Oracle 11g training by real time faculty in Hyderabad.
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
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