Professional Documents
Culture Documents
Oracle
Oracle
Oracle
Part 1
0
www.abahe.co.uk
Oracle Part1
Oracle Part1
Files Structure
Processes
Memory Structure
Database Startup
Database Startup
The Data Dictionary
1
www.abahe.co.uk
Oracle Part1
2
www.abahe.co.uk
Oracle Part1
Oracle
. oracular
.
3
www.abahe.co.uk
Oracle Part1
4
www.abahe.co.uk
Oracle Part1
Database
.
RDBMS
:
:
Process
.
Memory
.
5
www.abahe.co.uk
Oracle Part1
.
:
Oracle Server
:
.1 Processes
.2 Memory Structure
.3 Physical File Structure
Database
Instance
6
www.abahe.co.uk
Oracle Part1
Processes
+ = Oracle Instance
Database
+ = Oracle Server
:
7
www.abahe.co.uk
Oracle Part1
Dedicated Server Process
Sql .
Shared Server
10
100
.
dispatchers
(SGA)System Global Area
8
www.abahe.co.uk
Oracle Part1
Quee
:
dispatcher
.SGA
.
Client :
9
www.abahe.co.uk
Oracle Part1
Dedicated Server Process
TCP/IP
TCP/IP
.
.TNS Names
TNS
Transparent Network Substrate
Remote .Peer to peer communication
10
www.abahe.co.uk
Oracle Part1
Connect String
ora816.us.oracle.com
TNSNAMES.ORA
:
HostNmae
Port
SID
TCP/IP
11
www.abahe.co.uk
Oracle Part1
aria.us.oracle.com 1521
.TNS Listener
Listner
Listener
12
www.abahe.co.uk
Oracle Part1
13
www.abahe.co.uk
Oracle Part1
14
www.abahe.co.uk
Oracle Part1
Files Structure
Physical Files
(
.
. Data Files
Views ..procedures
.DBWR
.
Transaction
Redo Log
LGWR
ARCH
15
www.abahe.co.uk
Oracle Part1
Control File .
Log
16
www.abahe.co.uk
Oracle Part1
Physical
Structure
Parameter File
Files Data
Password file
Control File
Oracle Net
Parameter files
SGA
.
PFILE Server ) SPFILE
.(Paramater file
250 g10
30
Control File
:
17
www.abahe.co.uk
Oracle Part1
Control Files .
Multiplex
.CHKP View
SQL
TableSpaces Tables
Indexes :
18
www.abahe.co.uk
Oracle Part1
:
Data Files
.
.TableSpaces
.Views
SQL
.
.DataFiles
DataFile
.
.DataFiles
19
www.abahe.co.uk
Oracle Part1
Tablespace M100
.
Redo Log Files
New transaction
Password File
SYSDBA
SYSOPR .
20
www.abahe.co.uk
Oracle Part1
Logical
:
Segment:
Segment
Table Sgment
Index Sgments
Rollback Sgments.
Extents
Extents
.rollback Segment
1 2 .
Block
Bloack
Physical .
)2 4 8 16 32
21
www.abahe.co.uk
Oracle Part1
Extents
.
Bloch Header
o Header
Table Block .Index Block
22
www.abahe.co.uk
Oracle Part1
o Active transaction
.
o .
Table Directory
o
Table Directory
o
.
Block Overhead
.
: TableSpace
Segment
Extents .Block
Phiscal
Data Files .
23
www.abahe.co.uk
Oracle Part1
TableSpace
USER_DATA ) (2 Data
)( T1, T2,I1
) (2 T1, T2 ) (1
I1
) (4 Extents
.
24
www.abahe.co.uk
Oracle Part1
( T1) Segment ) (2
Extent .
) ( T2, I1 .
:
o .
o .
:
8.1.5
dictionarymanaged tablespace
Extents
.
. 7.3
25
www.abahe.co.uk
Oracle Part1
Temporary TableSpace
Extents
8.1.5 locally
managed tablespace
dictionary managed
TableSpace extents
Bitmap
.
Redo Log Files
Instance Failure OnLine Redo
Log .
26
www.abahe.co.uk
Oracle Part1
ONLINE Redo
.
Online Redo Log
.
:
27
www.abahe.co.uk
Oracle Part1
Switch
0Log Check
cache
buffer
Database
SGA
redo log buffe
Commit
Data files
Redo Log Buffer ONLine
28
www.abahe.co.uk
Oracle Part1
Database buffer cache
.DBWR
Transactions
) Checkpoints (CHKP
) (DBWR CHKP
. Event
.
29
www.abahe.co.uk
Oracle Part1
NOARCHIVELOG
ARCHIVELOG
.
Online Redo
Archivelog
Online Redo log
:
30
www.abahe.co.uk
Oracle Part1
Processes
) (.
Processes
Processes monitoring the functioning of the database
31
www.abahe.co.uk
Oracle Part1
Data Files
Shared Memory
) Transaction
( Log
Files
32
www.abahe.co.uk
Oracle Part1
Processes
Server Process
User Process
User Process
Server Process
33
www.abahe.co.uk
Oracle Part1
:
.User Process
User Process
PGA
.
:
Oracle Processes In Background
.
I/o
34
www.abahe.co.uk
Oracle Part1
.1 :
:
(DBWRn) Database Writer
0Data
)Checkpoint (CKPT
Control File
Data files System Change
) Number (SCN
.
Checkpoint
.
Oracle Part1
Transactions
Log Buffer
. CHKP
SCN
.
) ( ARCH
.
Alter log
System Archive
log_archive_start = true
36
www.abahe.co.uk
Oracle Part1
.2 :Monitoring Processes
) (SMON
) (PMON
ShutDown
normal
37
www.abahe.co.uk
Oracle Part1
Temporary Segments
Database
Writer Sgments
Tempory
38
www.abahe.co.uk
Oracle Part1
User Processes :
.
Locks .
.
39
www.abahe.co.uk
Oracle Part1
Memory Structure
.
:
) System Global Area (SGA :
o Database buffer cache
o Redo Log buffer
o Shared pool
o Large pool
) Program Global Areas (PGA :
Stack areas o
Data areas o
:
Oracle Part1
o : Java Pool
JVM
o Large Pool:
Session
RMAN
o : Shared Pool
....
41
www.abahe.co.uk
Oracle Part1
:SGA
JAVA_POOL_SIZE
SHARED_POOL_SIZE Shared Pool
LARGE_POOL_SIZE Large Pool
DB_BLOCK_BUFFERS
LOG_BUFFER
Fixed SGA
SGA
. .
:SGA
42
www.abahe.co.uk
Oracle Part1
!.
0LRU
Data Files
43
www.abahe.co.uk
Oracle Part1
Commit .
LOG_BUFFER
) *128 ( CPUs
:Java Pool
statistics_level TYPICAL
:Shared Pool
SGA
. .
. 1000
44
www.abahe.co.uk
Oracle Part1
SQL
PL/sql .
The data dictionary .
.
:
:
user privileges
Integrity
constraints
columns in database tables
space
allocated and used for schema objects
45
www.abahe.co.uk
Oracle Part1
SQL
.
):The Program Global Area (PGA
: Stack space
session's variables
arrays, and so on
Session
multithreaded server
SGA
46
www.abahe.co.uk
Oracle Part1
Transaction
.
Transaction
SQL
Commit
.Rollback ) /
( client /server :
.SQL*Net
SQLPLUS
.SQL*Net
47
www.abahe.co.uk
Oracle Part1
SQL
.
48
www.abahe.co.uk
Oracle Part1
Shared Pool
sql Shared SQL Area
.
SGA
Data files
.SGA
. .
Commit
Rollback
Redo
Database buffer cash
Datafiles
49
www.abahe.co.uk
50
www.abahe.co.uk
Oracle Part1
Oracle Part1
Database Startup
. :
:STARTUP NOMOUNT
51
www.abahe.co.uk
Oracle Part1
0Data Files
.
Scripts
.
Control File
:STARTUP MOUNT
archive log mode
:STARTUP OPEN
:STARTUP FORCE
52
www.abahe.co.uk
Oracle Part1
shutdown abort and then restarts the database
STARTUP RESTRICT
RESTRICTED
SESSION
53
www.abahe.co.uk
Oracle Part1
Database Startup
Connect SYSOPER or SYSDBA
:
Option
:
SHUTDOWN NORMAL
:
.
.
.
:
Shutting Down with the IMMEDIATE Option
:
.
.
Log Off
54
www.abahe.co.uk
Oracle Part1
SHUTDOWN IMMEDIATE
:
.
Committed
rolled
. back
instance
.recovery
:
Shutting Down with the TRANSACTIONAL Option
Active Transaction :
SHUTDOWN TRANSACTIONAL
:
Shutting Down with the ABORT Option
55
www.abahe.co.uk
Oracle Part1
.
.
.
:
SHUTDOWN ABORT
:
.
.
56
www.abahe.co.uk
Oracle Part1
Schema Objects
) tables, views, indexes, clusters, synonyms,
sequences, procedures, functions, packages, triggers,
and so on
user privileges
constraints
Integrity
columns
in database tables
space allocated
and used for schema objects
SQL
DDL .
57
www.abahe.co.uk
Oracle Part1
Views
SYS
SYSTEM tablespace
Online.
:
: Base Table
.
User-Accessible Views
.
.
1300 .
_ DBA _ , ALL_ , USER
58
www.abahe.co.uk
Oracle Part1
DBA_TABLES
ALL_TABLES
USER_TABLES
:
59
www.abahe.co.uk
Oracle Part1
emp
60
www.abahe.co.uk
Oracle Part1
Oracle 350
V$ :
V$VERSION
61
www.abahe.co.uk
Oracle Part1
62
www.abahe.co.uk
Oracle Part1
63
www.abahe.co.uk
Oracle Part1
.
:
64
www.abahe.co.uk
Oracle Part1
.
:
.
:
:Server Manager
.
Manager
:Enterprise
:SQL Loader
.
65
www.abahe.co.uk
Oracle Part1
:Export Manager
:Import Manager
.
:
1979
: ) (
) ( )
(.
: 1983
) (
)( .
: 1984
)( ) (
.
66
www.abahe.co.uk
Oracle Part1
: 1985
/ ) (
640
. DOS
: 1988
) ( 1991
: 1992
:
4
67
www.abahe.co.uk
Oracle Part1
i9
NT/2000/XP
" "
:
https://profile.oracle.com/jsp/reg/createUser.jsp?act=5
&src=1180588&tid=262&owner=3&nexturl=http%3A//w
ww.oracle.com/technology/software/index.html&langu
age=en
: i9
OraHome90 :
< C> or <D> or.. :\Oracle\ora90:
-:
Next
68
www.abahe.co.uk
Oracle Part1
" "
C: D:
: i9
69
www.abahe.co.uk
Oracle Part1
General Purpose
70
www.abahe.co.uk
Oracle Part1
Database file .
) (
.
.
71
www.abahe.co.uk
Oracle Part1
Next
:
Install
72
www.abahe.co.uk
Oracle Part1
CD 2 3
:
73
www.abahe.co.uk
Oracle Part1
More
74
www.abahe.co.uk
Oracle Part1
. OK
2000 Release 6.0 OR i6
i9
Start -> programs -> Oracle - Orahome90 -> Configuration and Migration Tools ->
Net Configuration Assistant
.Next Add
)( Service Name
global database ORACLE.US.COM "
.Next " name
75
www.abahe.co.uk
Oracle Part1
TCP . Next
Name
Host TCP/IP
. Port .Next
Connecting...Test successful.
Change
login :
Username: system
Password: manager
.Next
.Next
tnsnames.ora
Oracle\Ora90\network\admin :
ORANT\net80\admin
sqlnet.old :
Oracle\Ora90\network\admin -
ORANT\net80\admin -
:
Username: system
76
www.abahe.co.uk
Oracle Part1
Password: manager
Host String Or Database: developer.oracle.us.com
.
77
www.abahe.co.uk
Oracle
Part 2
0
www.abahe.co.uk
Oracle Part 2
Oracle Part 2
:
.
.....
.
1
www.abahe.co.uk
Oracle Part 2
:CREATE
USER USER
Azzam BY IDENTIFIED
.236
:GRATN
GRATNS
.
DATABASE ADMINISTRATION :
:
2
www.abahe.co.uk
Oracle Part 2
:CONNECT
:
CONNECT Azzam/236
Azzam 236
.
:
SHOW USER
:DUMMY TABLE
.DUAL
:
SELECT SYSDATE FROM DUAL
.
:CREATE TABLE
CREATE TABLE STUDENTS
DATATYPE :
3
www.abahe.co.uk
Oracle Part 2
:VARCHAR2
20 VARCHAR2 20.
:NUMBER
NUMBER4
.1234
:DATE :
CREATE TABLE table_name
(column1 datatype ,
column2 datatype ,
..
)
CONSTRAINTS
PRIMARY KEY
PRIMARY KEY.
4
www.abahe.co.uk
Oracle Part 2
:CONSTRAINT
:
Ammar 2000-03-08
Ammar 2001-03-08
) ( ..
.
(column1,
KEY
PRIMARY
CONSTRAINT constraint_name
)column2, . column_n
FOREIGN KEY
5
www.abahe.co.uk
Oracle Part 2
:
:
CONSTRAINT CONSTRAINT_NAME FOREIGN KEY (column1,
)column2, ... column_n
)REFERENCES parent_table (column1, column2, ... column_n
:
CONSTRAINT fk_column
)FOREIGN KEY (column1, column2, ... column_n
)REFERENCES parent_table (column1, column2, ... column_n
;)
: :
1 2 3 4
: :
1 2 3 4
: :
1 2 3 4
5 6 6 7
8 9 10
6
www.abahe.co.uk
Oracle Part 2
:
CREATE TABLE NATIONALITY(
NAT_NO VARCHAR2(5),
NAT_NAME VARCHAR2(20),
NAT_CRE_DATE DATE,
NAT_CRE_NAME VARCHAR2(50),
CONSTRAINT NAT_PK PRIMARY KEY(NAT_NO)
)
/
, NAT_CRE_DATE
NAT_CRE_NAME
:
CREATE TABLE DEPARTMENTS(
DPT_NO VARCHAR2(5),
DPT_NAME VARCHAR2(20),
DPT_CRE_DATE DATE,
DPT_CRE_NAME VARCHAR2(50),
CONSTRAINT DPT_NO_PK PRIMARY KEY(DPT_NO)
)
/
7
www.abahe.co.uk
Oracle Part 2
:
(CREATE TABLE EMPLOYEES
EMP_ID VARCHAR2(10),
EMP_NAME VARCHAR2(50),
EMP_BIRTH_DATE DATE,
EMP_SEX VARCHAR2(1),
NAT_NO VARCHAR2(5),
EMP_HIRE_DATE DATE,
EMP_BASIC_SALARY NUMBER(4),
EMP_ADD_EXCHANGE NUMBER(4),
DPT_NO VARCHAR2(5),
EMP_CRE_DATE DATE,
EMP_CRE_NAME VARCHAR2(20),
CONSTRAINT EMP_ID_PK PRIMARY KEY(EMP_ID),
)CONSTRAINT NAT_NO_FK FOREIGN KEY (NAT_NO
REFERENCES NATIONALITY (NAT_NO),
)CONSTRAINT DPT_NO_FK FOREIGN KEY (DPT_NO
)REFERENCES DEPARTMENTS (DPT_NO
)
/
NAT_NO
DPT_NO
. EMP_CRE_DATE
EMP_CRE_NAME
: DESCRIBE YOUR_TABLENAME
NOT NULL
8
www.abahe.co.uk
Oracle Part 2
DESC EMPLOYEES :
TYPE
VARCHAR2(10)
VARCHAR2(50)
DATE
VARCHAR2(1)
VARCHAR2(5)
DATE
NUMBER(4)
NUMBER(4)
VARCHAR2(5)
DATE
9
www.abahe.co.uk
Oracle Part 2
:
-1
5 20
2 :
PRIMARY KEY
FOREIGN KEY
3 .FOREIGN KEY
4 :
PRIMARY KEY
:
= e0001 = 10
= e0002 = 10
10
www.abahe.co.uk
Oracle Part 2
Insert Update Delete
1 :insert
insert
into
Primary key
VARCHAR2 ' 'VALUE DATE
.
:
Oracle Part 2
:
NAT_NO
NAT_NAME
NAT_CRE_DATE
NAT_CRE_NAME
INSERT INTO
NATIONALITY(NAT_NO,NAT_NAME,NAT_CRE_DATE,NAT_CRE
_NAME)
VALUES('001','SAUDI',SYSDATE,USER);
INSERT INTO
NATIONALITY(NAT_NO,NAT_NAME,NAT_CRE_DATE,NAT_CRE
_NAME)
VALUES('002','JORDAN',SYSDATE,USER);
INSERT INTO
NATIONALITY(NAT_NO,NAT_NAME,NAT_CRE_DATE,NAT_CRE
_NAME)
VALUES('003','EGYPT',SYSDATE,USER);
INSERT INTO
DEPARTMENTS(DPT_NO,DPT_NAME,DPT_CRE_NAME,DPT_CRE
_DATE)
VALUES ('DP01','EMPLOYEES',USER,SYSDATE);
INSERT INTO
DEPARTMENTS(DPT_NO,DPT_NAME,DPT_CRE_NAME,DPT_CRE
_DATE)
VALUES ('DP02','ACCOUNT',USER,SYSDATE);
INSERT INTO
DEPARTMENTS(DPT_NO,DPT_NAME,DPT_CRE_NAME,DPT_CRE
_DATE)
VALUES ('DP03','COMPUTER',USER,SYSDATE)
COMMIT;
12
www.abahe.co.uk
Oracle Part 2
2 :DELETE
:
DELETE
DELETE FROM
DELETE FROM table name
DELETE TBALE_NAME
:
.
;DELETE DEPARTMENTS
;DELETE FROM NATIONALITY
;COMMIT
.
: WHERE CONTION
AND
13
www.abahe.co.uk
Oracle Part 2
3 :UPDATE
UPDATE SET .
14
www.abahe.co.uk
Oracle Part 2
Select Statement :
Select Statement
statement select
1 SELECT:
SELECT *
FROM FROM
:
* SELECT
;>FROM <table name
:
SELECT * FROM NATIONALITY
.
2 SELECT :
*
>SELECT <column name, column name, ..., <column name
;>FROM <table name
15
www.abahe.co.uk
Oracle Part 2
:
SELECT DPT_NO,DPT_NAME FROM DEPARTMENTS
. SELECT
:WHERE CONDTION SELECT 3
WHERE CONDITION
SELECT *
FROM <table_name>
WHERE ....
:
SELECT * FROM DEPARTMENTS
WHERE DPT_NO='DP01'
DELETE INSERT UPDATE SELECT
:CREATE TABLE
:INSERT SELECT
INSERT
SELECT
.SELECT
Oracle Part 2
:UPDATE SELECT
UPDATE TABLE_NAME SET COUMN_NAME= SELECT
CLOUMN_NAME FROM TABLE_NAME WHERE ....
SELECT
17
www.abahe.co.uk
Oracle Part 2
18
www.abahe.co.uk
Oracle Part 2
functions
:
1 :
:ALIASES
.
SELECT
.SELECT :
1980-07-02
1981-07-02
SELECT
DISTINCT
.
19
www.abahe.co.uk
Oracle Part 2
:LOWER UPPER
:
SELECT LOWER('ADMIN05') FROM DUAL;
SELECT UPPER('admin05') FROM DUAL;
. DUAL
SELECT UPPER('DPT_NAME'),LOWER(DPT_NAME FROM
DEPARTMENTS
SMALL CAPITAL
capital :initcap
select initcap(cloumname or string) from table_name
select initcap('admin05') from dual;
NULL :NVL
.
SELECT NVL(CLUMONAME,YOUR_VALUE) FROM
TABLE NAME
20
www.abahe.co.uk
Oracle Part 2
:
SELECT NVL(dpt_name,'not found') from departments
select NVL(number,0) from dual
string : to char
SELECT SELECT
.DESC ASC
21
www.abahe.co.uk
Oracle Part 2
:Count
:
)SELECT COUNT(expression
FROM tables
;WHERE predicates
COUNT
.GROUP BY
COUNT GROUP BY
.
:SUM :
22
www.abahe.co.uk
Oracle Part 2
SELECT SUM(expression )
FROM tables
WHERE predicates;
DISTINCT SUM
:
SELECT SUM(DISTINCT salary) as "Total Salary"
FROM employees
WHERE salary > 25000;
.
Oracle Part 2
.MAX,MIN,SUM
GROUP BY :HAVING
GROUP BY
.
:
SELECT column1, column2, ... column_n, aggregate_function
(expression)
FROM tables
WHERE predicates
GROUP BY column1, column2, ... column_n
HAVING condition1 ... condition_n;
SUM,MAX,MIN,COUNT
24
www.abahe.co.uk
Oracle Part 2
:
:SUM
SELECT department, SUM(sales) as "Total sales"
FROM order_details
GROUP BY department
HAVING SUM(sales) > 1000;
: COUNT[/COLOR]
[COLOR=red]
SELECT department, COUNT(*) as "Number of employees"
FROM employees
WHERE salary > 25000
GROUP BY department
HAVING COUNT(*) > 10;
:MIN
SELECT department, MIN(salary) as "Lowest salary"
FROM employees
GROUP BY department
HAVING MIN(salary) = 35000;
: MAX[/COLOR]
[COLOR=red]
SELECT department, MAX(salary) as "Highest salary"
FROM employees
GROUP BY department
HAVING MAX(salary) < 50000;
25
www.abahe.co.uk
Oracle Part 2
:( ) ( ) / BETWEEN
SELECT columns
FROM tables
WHERE column1 between value1 and value2;
:
SELECT *
FROM suppliers
WHERE supplier_id between 4000 and 4500;
:( ) NOT BETWEEN
NOT
BETWEEN
SELECT *
FROM suppliers
WHERE supplier_id not between 4000 and 4500;
26
www.abahe.co.uk
Oracle Part 2
:
1 = DP04 =marketing
2 :
where condition
3
4
5 select
6 select
7 select .DP01
8 statement select
9 2006-01 01 2006
to_char
10 nvl initcap select
11 sum
12
13
:TO_DATE STRING
STRING . DATE
27
www.abahe.co.uk
Oracle Part 2
.STRING
: NLS_LANGUAGE
.
:
to_date('2003/07/09', 'yyyy/mm/dd') would return a date value of July 9,
2003.
to_date('070903', 'MMDDYY') would return a date value of July 9, 2003.
to_date('20020315', 'yyyymmdd') would return a date value of Mar 15,
2002.
:LAST_DAY
.
:
last day( date )
:
last day(to_date('2003/03/15' ,'yyyy/mm/dd')) would return Mar 31, 2003
last day(to_date('2003/02/03' ,'yyyy/mm/dd')) would return Feb 28, 2003
last day(to_date('2004/02/03' ,'yyyy/mm/dd')) would return Feb 29, 2004
: ADD_MONTHS
:
Oracle Part 2
n
:
add_months('01-Aug-03', 3) would return '01-Nov-03'
add_months('01-Aug-03', -3) would return '01-May-03'
add_months('21-Aug-03', -3) would return '21-May-03'
add_months('31-Jan-03', 1) would return '28-Feb-03'
. :NEXT_DAY
next date(date1,n)
n
29
www.abahe.co.uk
Oracle Part 2
:TRIM
both
)//( trim
.
)' trim(' tech ''tech
)' trim(' ' from ' tech 'from 'tech
)' trim(leading '0' from '000123 '' 123
)' trim(trailing '1' from 'Tech1 ''Tech
)' trim(both '1' from '123Tech111
'Tech' 23
: Ltrim .
.
) ] ltrim( string1, [ trim_string
:
'ltrim(' tech'); would return 'tech
'ltrim(' tech', ' '); would return 'tech
'ltrim('000123', '0'); would return '123
'ltrim('123123Tech', '123'); would return 'Tech
'ltrim('123123Tech123', '123'); would return 'Tech123
'ltrim('xyxzyyyTech', 'xyz'); would return 'Tech
'ltrim('6372Tech', '0123456789'); would return 'Tech
y
:Rtrim trim Ltrim
30
www.abahe.co.uk
Oracle Part 2
10 + RRR
7 3
+++++++RRR
:
31
www.abahe.co.uk
Oracle Part 2
:RPAD
.
:
Oracle Part 2
. :LENGTH
length( string1 )
:
length(NULL) would return NULL.
length('') would return NULL.
length('Tech on the Net') would return 15.
length('Tech on the Net ') would return 16.
:TRANSLATE
RTYYRT RTY
T 3 Y QW3
QW33QW Q R W
33
www.abahe.co.uk
Oracle Part 2
:
translate( string1, string_to_replace, replacement_string
(
string_to_replace
replacement_string .
:
TRANSLATE REPLACE
:
34
www.abahe.co.uk
35
www.abahe.co.uk
Oracle Part 2
Oracle Part 2
. :CONCAT
concat( string1, string2 )
||
concat('Tech on', ' the Net'); would return 'Tech on the Net'.
concat('a', 'b') would return 'ab'.
'Tech on'|| ' the Net' would return 'Tech on the Net'.
'a'|| 'b' would return 'ab'.
36
www.abahe.co.uk
Oracle Part 2
birth_date
emp_name
emp_no
20-01-1970
10
20-02-1976
Admin05 05 05
20
20-01-1960
ahmed moheme
30
20-10-1950
50dfgdr50
40
-1 5
-2 5
-3 3
-4 concat
-5 a e
-6 m
-7
-8 3 v
-9 9
-10
37
www.abahe.co.uk
Oracle Part 2
) :(Subqueries
:WHERE CONDITION -1
select * from all_tables tabs
where tabs.table_name in (select cols.table_name
from all_tab_columns cols
;)'where cols.column_name = 'SUPPLIER_ID
WHERE IN
all_tables
select .
SELECT ) (.
38
www.abahe.co.uk
Oracle Part 2
:UNION Query -2
Order By
Oracle Part 2
UNION
"company_name as "name ,select company_id
from companies
1000 < where company_id
[BY name;[/CODE ORDER
40
www.abahe.co.uk
Oracle Part 2
from tables
INTERSECT
select field1, field2, . field_n
from tables;
:
select supplier_id
from suppliers
INTERSECT
select supplier_id
from orders;
:MINUS Query
select field1, field2, . field_n
from tables
MINUS
select field1, field2, . field_n
from tables;
:
select supplier_id
from suppliers
MINUS
select supplier_id
from orders;
41
www.abahe.co.uk
Oracle Part 2
. )
(
:ALTER TABLE
:
:column(s) to a table Adding
.
:
42
www.abahe.co.uk
Oracle Part 2
.
:
Oracle Part 2
44
www.abahe.co.uk
Oracle Part 2
:
1 Union Select
2 count union
45
www.abahe.co.uk
Oracle Part 2
:
: unique constraint -1-
E01
2222 w01 E01
3333 w02
primary Key
unique
primary key
unique
primary key
.unique
:unique unique
.
46
www.abahe.co.uk
Oracle Part 2
47
www.abahe.co.uk
Oracle Part 2
: unique
:
ALTER TABLE supplier
add CONSTRAINT supplier_unique UNIQUE (supplier_id,
supplier_name);
:Constraints Check
: .
.(View )( check)
( check)
.
Oracle Part 2
:ALTER
ALTER TABLE table_name
add CONSTRAINT constraint_name CHECK (column_name
condition)
:
ALTER TABLE suppliers
add CONSTRAINT check_supplier_name
CHECK (supplier_name IN ('IBM', 'Microsoft', 'Nvidia'));
49
www.abahe.co.uk
Oracle Part 2
:CONSTRAINTS
ALTER TABLE table_name
drop CONSTRAINT constraint_name;
:
ALTER TABLE suppliers
drop CONSTRAINT check_supplier_id;
:CONSTRAINT
ALTER TABLE table_name
enable CONSTRAINT constraint_name;
:
ALTER TABLE suppliers
enable CONSTRAINT check_supplier_id;
:CONSTRAINT
ALTER TABLE table_name
disable CONSTRAINT constraint_name;
:
ALTER TABLE suppliers
disable CONSTRAINT check_supplier_id;
50
www.abahe.co.uk
Oracle Part 2
CONSTRAINT
: USER_CONSTRAINTS
CONSTRAINT
CONNECT SYSTEM/UR_PASSWORD
SELECT CONSTRAINT_NAME,CONSTRAINT_TYPE
FROM USER_CONSTRAINTS
WHERE TABLE_NAME='SUPLLIERS';
CONSTRAINT
NOVALIDATE CONSTRAINT
.VALIDATE
:NOVALIDATE
ALTER TABLE uclass MODIFY CONSTRAINT pk_uclass
DISABLE VALIDATE;
:VALIDATE
ALTER TABLE uclass ENABLE NOVALIDATE PRIMARY KEY;
51
www.abahe.co.uk
Oracle Part 2
2 PRIMARY
KEY
.
3 CONSTRAINT
52
www.abahe.co.uk
Oracle Part 2
:Function
CREATE [OR REPLACE] FUNCTION function_name
] )][ (parameter [,parameter
RETURN return_datatype
IS | AS
][declaration_section
BEGIN
executable_section
[EXCEPTION
]exception_section
;]END [function_name
] )[ ([parameter [,parameter
IN .
OUT
IN OUT
.
:RETURN return_datatype
53
www.abahe.co.uk
Oracle Part 2
IS | AS :IS
][declaration_section
.
:BEGIN
executable_section
SELECT
]:EXCEPTION
[exception_section
;[function_name] END
54
www.abahe.co.uk
Oracle Part 2
:
CREATE OR REPLACE Function FindCourse
( name_in IN varchar2 )
RETURN number
IS
cnumber number; cursor c1 is
select course_number
from courses_tbl
where course_name = name_in;
BEGIN
open c1;
fetch c1 into cnumber;
if c1%notfound then
cnumber := 9999;
end if;
close c1;
RETURN cnumber;
EXCEPTION
WHEN OTHERS THEN
raise_application_error(-20001,'An error was encountered '||SQLCODE||' -ERROR- '||SQLERRM);
END;
:( Procedure)
CREATE [OR REPLACE] PROCEDURE procedure_name
[ (parameter [,parameter]) ]
IS
[declaration_section]
BEGIN
executable_section
[EXCEPTION
exception_section]
END [procedure_name];
55
www.abahe.co.uk
Oracle Part 2
REPLACE PROCEDURE
PROCEDURE
] )[ ([parameter [,parameter
:
IN .
OUT .
IN OUT
.
/ IS :
][declaration_section
.Procedure
:BEGIN
executable section
Procedure SELECT
56
www.abahe.co.uk
Oracle Part 2
:EXCEPTION
[exception section]
END [PROCEDURE_name];
. Procedure
:
CREATE OR REPLACE Procedure UpdateCourse
( name_in IN varchar2 )
IS
cnumber number; cursor c1 is
select course_number
from courses_tbl
where course_name = name_in;
BEGIN
open c1;
fetch c1 into cnumber;
if c1%notfound then
cnumber := 9999;
end if;
insert into student_courses
( course_name,
course_number)
values ( name_in,
cnumber );
commit;
close c1;
EXCEPTION
WHEN OTHERS THEN
raise_application_error(-20001,'An error was encountered '||SQLCODE||' -ERROR- '||SQLERRM);
END;
57
www.abahe.co.uk
Oracle Part 2
:TRIGGER
TRIGGER
FUNCTION PROCEDURE
TRIGGER TRIGGERJ
58
www.abahe.co.uk
Oracle Part 2
:TYPE TRIGGER
:ON table_name
[ FOR EACH ROW ]
:
views 1
new 2
old 3
:(Triggers Insert )
Oracle Part 2
:
CREATE TABLE orders
( order_id number(5),
quantity number(4),
cost_per_item number(6,2),
total_cost number(8,2),
create_date date,
created_by varchar2(10)
);
:
CREATE OR REPLACE TRIGGER orders_before_insert
BEFORE INSERT
ON orders
FOR EACH ROW
DECLARE
v_username varchar2(10);
BEGIN --
SELECT user INTO v_username
FROM dual; -- new
:new.create_date := sysdate; --
new
INSERT
:new.created_by := v_username;
END;
60
www.abahe.co.uk
Oracle Part 2
:AFTER INSERT
CREATE or REPLACE TRIGGER trigger_name
AFTER INSERT
ON table_name
[ FOR EACH ROW ]
DECLARE
-- variable declarations
BEGIN
-- trigger code
EXCEPTION
WHEN ...
-- exception handling
END;
:
:
CREATE TABLE orders
( order_id number(5),
quantity number(4),
cost_per_item number(6,2),
total_cost number(8,2)
);
:
CREATE OR REPLACE TRIGGER orders_after_insert
AFTER INSERT
ON orders
FOR EACH ROW
DECLARE
v_username varchar2(10);
BEGIN
-- Find username of person performing the INSERT into the
table
SELECT user INTO v_username
61
www.abahe.co.uk
Oracle Part 2
62
www.abahe.co.uk
Oracle Part 2
:
ALTER TABLE table_name DISABLE ALL TRIGGERS;
:
ALTER TABLE orders DISABLE ALL TRIGGERS;
:
ALTER TRIGGER trigger_name ENABLE;
:
ALTER TRIGGER orders_before_insert ENABLE;
:
ALTER TABLE table_name ENABLE ALL TRIGGERS;
:
ALTER TABLE orders ENABLE ALL TRIGGERS;
63
www.abahe.co.uk
Oracle Part 2
:
1
2
3 SELECT
4
5
6 .SELECT
64
www.abahe.co.uk
Oracle Part 2
Views
views
.
:View
65
www.abahe.co.uk
Oracle Part 2
:
CREATE or REPLACE VIEW sup_orders AS
SELECT supplier.supplier_id, orders.quantity, orders.price
FROM supplier, orders
WHERE supplier.supplier_id = orders.supplier_id
and supplier.supplier_name = 'Microsoft';
: view
DROP VIEW view_name;
:
DROP VIEW sup_orders;
66
www.abahe.co.uk
Oracle Part 2
: Synonyms
tables, Synonyms
:
create [or replace] [public] synonym [schema .] synonym_name
for [schema .] object_name [@ dblink];
Synonyms replace or
public
.schema
table package
view materialized view
sequence java class schema object
stored procedure user-defined object
function synonym
:
create public synonym suppliers
for app.suppliers;
puplic suppliers app synonym
synonym
67
www.abahe.co.uk
Oracle Part 2
: synonym
create or replace public synonym suppliers
for app.suppliers;
:synonym
drop [public] synonym [schema .] synonym_name [force];
puplic synonym public
synonym force
.oject
:
68
www.abahe.co.uk
Oracle Part 2
ROLES
.role
:IDENTIFIED role
:BY password
role
:USING package role
: EXTERNALLY
EXTERNALLY .role
: GLOBALLY
.enterprise
69
www.abahe.co.uk
Oracle Part 2
:
role test_role
;CREATE ROLE test_role
role
CREATE ROLE test_role
;IDENTIFIED BY test123
Roles Grant Privileges (on Tables) to
role privilege
:
Select select
Insert
Update
Delete
References Constraints
Alter
Index index
:
grant privileges on object to role_name
70
www.abahe.co.uk
Oracle Part 2
:Roles
grant select, insert, update, delete on suppliers to test_role;
:Roles
grant all on suppliers to test_role;
:Roles
Revoke Privileges (on Tables) to Roles
Roles
revoke privileges on object from role_name;
:
revoke delete on suppliers from test_role;
:
revoke all on suppliers from test_role;
:roles
revoke execute on object from role_name;
:
revoke execute on Find_Value from test_role;
71
www.abahe.co.uk
Oracle Part 2
: Roles
Granting the Role to a User
:
GRANT role_name TO user_name;
:
GRANT test_role to smithj;
:The SET ROLE statement
Roles Set Role
SET ROLE
( role_name [ IDENTIFIED BY password ]
| ALL [EXCEPT role1, role2, ... ]
| NONE );
72
www.abahe.co.uk
73
www.abahe.co.uk
Oracle Part 2
74
www.abahe.co.uk
Oracle Part 2
Oracle Part 2
:
ABAHE DHID
.
...
75
www.abahe.co.uk
76
www.abahe.co.uk
Oracle Part 2