View
241
Download
7
Category
Preview:
Citation preview
Oracle
-
DiaSoft -
2003
681.3. 06(075) 32.973.2
91
91 Oracle . . ./- .: , 2003. 672 .
ISBN 5-93772-072-5
Wrox -:
Oracle, . -
, Oracle, .
, , Oracle, . ,
Oracle . - Oracle (http://asktom.oracle.com) . , -
. , .
Oracle, . Oracle, , - .
, , -
.
32.973.2
Authorized translation from the English language edition, entitled Expert One-on-One Oracle, 1st Edition byKyte, Thomas, published by Pearson Education, Inc, publishing as Wrox Press Ltd,
Copyright 2002All rights reserved. No part of this book may be reproduced or transmitted in any form or by any means,
electronic or mechanical, including photocopying, recording or by any information storage retrieval system,without permission from Pearson Education, Inc.
Russian language edition published by DiaSoft Publishing.Copyright 2003 Wrox Press Ltd. ,
.
, , . , -
, -
.
, .
, , .
-
.
ISBN 5-93772-072-5 (.) . , 2003ISBN 1-861004-82-6 (.) Wrox Press Ltd, 2002
. , 2003 77.99.6.953..438.2.99 04.02.1999
! Oracle , , -
, , . -
. , Internet , , -
Oracle . , Oracle(http://www.oracle.com) .
Wrox :
Oracle, - . -
, Oracle, -
.
. , (Tom Kyte), - Oracle, .
, Oracle, , Oracle - . mp.databases.oracle.* Oracle Magazine, Oracle (http://asktom.oracle.com) .
, , -
Google. , - - . -
. .
, -
. , .
Expert one-on-one: Oracle, , - . .
, -
. . , -
. , -
, . .
, 1200 . , - Wrox, . , - Oracle, - . , ,
Oracle, ; .
: -
,
Wrox, . Oracle, .
Oracle, ,
. , -
, .
, ,
AskTom: http://asktom.oracle.com. - Oracle - , ,
!
. ,
OpenXS Initiative (http://openxs.net)12 2002
14 17 18 ? 18 20
20 22 23 SQL 23 24 25 26
26 27
27 27
1. Oracle 37 38 40 ( ) 44
Oracle 44 MTS 45 47
51 51 54
? 59 62 66 68 70
? 72 75
76 2. 79 80 87
88 90 94 95
8 95
96 99
100 PGA UGA 100 SGA 105
SGA 108 108 109 112 114Java- 115
117 117
120 123
, 123 131
132 / 132 133
134 3. 137 ? 138 140
140 142 143
144 145 145
146 150
151 152
152 158
159 163 . , 163
164 164
? 165 165 READ UNCOMMITTED 167 READ COMMITTED 169 REPEATABLE READ 170
170
172 SERIALIZABLE 173 175
176 4. 179 180 185 188 194 197 201 5. 205 206
? 207 ? 212 ? 214 ? 224 ? 228 230 234 / 236 240
240 / ? 241 SET TRANSACTION 241'ORA-01555: snapshot too old' 242
243 247 249
254 6. 257 257 259
259 260 PCTFREE PCTUSED 263
264 PCTFREE PCTUSED 266
INITIAL, NEXT PCTINCREASE 270 MINEXTENTS MAXEXTENTS 271 LOGGING NOLOGGING 271 INITRANS and MAXTRANS 271
, 271, 276 290
10 - 298 308
309 318
321 330 337 7. 341 Oracle 342 *- 343
348 349 *-? 351
359 ? 361
363 363 364 372
373 375
? 375 375 378 ? 380
1 380 2 380 3 380 4 380 5 382 6 384
? 385: 386:
, 389 392 8. 395 396 IMP ? 397
397 398 398 398 399 399
399
11 400
400 IMP 403
405 FILESIZE 405 407 407 ,
409 409 410 415
418 421 IMP/EXP () 423 423 428
428 428 IMP/EXP 436 ? 437 439 (NLS) 442, 444
448 9. 451 SQL*Loader 452 458
458 462 464 465 470 473 LONG RAW LONG 476 , 477
478 FIX 479 VAR 484 STR 485 486
487 498
PL/SQL 498 SQLLDR 501
SQLLDR . 508 SQLLDR 511
12 516
516TRUNCATE - 516 SQLLDR CHAR(255) 516 517
517 10. 519 520 522
522 523 525 525 526
( ) 528 ? 542
SQL_TRACE, TIMED_STATISTICS TKPROF 545 546 TKPROF 549 560
DBMS_PROFILER 572 573 StatsPack 575
StatsPack 576 V$ 595
V$EVENT_NAME 595 V$FILESTAT V$TEMPSTAT 596 V$LOCK 596 V$MYSTAT 596 V$OPEN_CURSOR 597 V$PARAMETER 599 V$SESSION 599 V$SESSION_EVENT 601 V$SESSION_LONGOPS 602 V$SESSION_WAIT 602 V$SESSTAT 602 V$SESS_IO 602 V$SQL V$SQLAREA 603 V$STATNAME 603 V$SYSSTAT 603 V$SYSTEM_EVENT 603
603 11. 607 608 611
13 611 616 618 SQL-, 618
619 OUTLINES OUTLINE_HINTS 619
_OUTLINES 619 _OUTLINE_HINTS 620
622, 622 623 ALTER SESSION 624
OUTLN 625 625 626 629
629 ALTER OUTLINE 629 DROP OUTLINE 631
OUTLN_PKG 632 OUTLN_PKG.DROP_UNUSED 633 OUTLN_PKG.DROP_BY_CAT 633 OUTLN_PKG.UPDATE_BY_CAT 633
635 635 ALTER SESSION 637 DROP USER 637 'CURSOR_SHARING = FORCE' 637 639 SYSTEM 639 OR 639 640 644
, 645 647 648
12. 1037 1038 1041
1041 1043 1043 1044 1046 1048 1051 1053
1056 1059
N 1059 1070 1077
1081 PL/SQL 1081 WHERE 1083 NULL 1083 1085
1086 13. 1089 1090 1091 1092 1098 1099
1099 1100
1101 1103
1103 1108
DBMS_OLAP 1117 1117 1119 1121
1123 1123 1124
1124
14. 1127 1128
1128 1130 1131
1134 1134 1139
1140 1148
1158 15. 1161 1162 ? 1164
, 1164, 1167 1168 1174
1174 SELECT 1178
1182 1183
1183 1185
1185/ 1186 1187 1190
1191 1192
1194 1194 PL/SQL 1194 1195 1196 1198
, 1200 1201 16. SQL 1203 SQL 1204 SQL? 1206 SQL 1208
DBMS_SQL 1208 SQL 1215 DBMS_SQL SQL 1220
1220
1225 1233
1243 1243"" 1244 1244
1245 17. interMedia 1247 1248 interMedia Text 1249
1249 1252 1252 interMedia Text Oracle 1255 1256 XML 1258
interMedia Text 1259 interMedia Text , 1262 ABOUT 1265 1266
1272 interMedia Text 1272 1273 1274 1274- 1275
1277 1277 1278
1279 1279 18. 1281 ? 1282 ? 1284 1285
extproc 1288 1288 1290
1290 extproc. 1291 SCOTT/TIGER 1292 demolib 1292 1293
1294 1295 1306
1330 1334
(LOB_IO) 1335 LOB_IO 1336 Pro* LOB_IO 1338 1342 LOB_IO 1344
1349 1356 19. Java 1359 Java? 1360 Java 1361
1366 1376
1376 1378 1381
1382ORA-29549 Java Session State Cleared 1382 1383ORA-29531 no method X in class Y 1383
1384 20. - 1387 - 1388 - 1389 1389 PL/SQL 1403
PL/SQL 1403 1414
SELECT * PL/SQL- 1415 1418 1419
- 1420 1420- 1421
1433 2 1 . 1437 1438 ? 1439
1439 1440
1441 1441
1441 1441 1442
1443 1: 1445 2: 1449
1467 1467
1468 1469
1472/ 1478
1479 1481
1482, 1482 1487 22. 1489 ? 1490 1493
1501 1502 1503 1505 23. 1507 1508 1511
1511, 1515 1518 1518
1521 1521 1522
1523 1523
1525 1528
1529 1534 - 1535
1539 1539 1542 1544 SELECT * 1546 "" 1547Java , 1549
1554 1554
. 1557 1558 1559 DBMS_ALERT DBMS_PIPE 1561
1562 1562
DBMS_ALERT 1563 1565 1566
1567 DBMS_PIPE 1568
? 1571 Internet 1573
1573 DBMS_APPLICATION_INFO 1574 1576 V$SESSION_LONGOPS 1577 1583 DBMS_JAVA 1584 LONGNAME SHORTNAME 1584 1585 SET_OUTPUT 1589 loadjava dropjava 1589 1590 1592 DBMS_JOB 1593 1597 1601 1604 1606 1608 DBMS_JOB 1609 ? 1610 substr 1611
SELECT FOR UPDATE Java 1611 1613
BLOB VARCHAR2 1614 LONG/LONG RAW 1618 1620 1623
BLOB/CLOB 1626 Web- PL/SQL 1626 1628
DBMS_L 1629 1633 DBMS_LOGMNR 1634 1636
1: 1637 2: LogMiner 1640
1646 LogMiner, 1649 PGA 1651 LogMiner 1652
Oracle 1652 1655 1658
V$LOGMNR_CONTENTS 1658 1662 DBMS_OBFUSCATION_TOOLKIT 1663- 1665 1680 1682
1682 1683 1684
1685 DBMS_OUTPUT 1686 DBMS_OUTPUT 1687 DBMS_OUTPUT 1692 1696
- 1696 DBMS_OUTPUT 1697
1703 DBMS_PROFILER 1704 1714 1715 DBMS_UTILITY 1716 COMPILE_SCHEMA 1716 ANALYZE_SCHEMA 1721
ANALYZE_SCHEMA 1722 ANALYZE_SCHEMA 1723
ANALYZE_DATABASE 1724 FORMAT_ERROR_STACK 1724 FORMAT_CALL_STACK 1726 GET_TIME 1729 GET_PARAMETER_VALUE 1730
NAME_RESOLVE 1731 NAME_TOKENIZE 1734 COMMA_TO_TABLE, TABLE_TO_COMMA 1737 DB_VERSION PORT_STRING 1739 GET_HASH_VALUE 1739 1744 UTL_FILE 1745 UTL_FILE_DIR 1746 Windows 1747 1749 Web- ? 1750 1023 1751 1752 1754 UTL_HTTP 1755 UTL_HTTP 1756 SSL UTL_HTTP 1758 UTL_HTTP 1765 UTL_HTTP 1768 1778 UTL_RAW 1779 UTL_SMTP 1782UTL_SMTP 1782 JavaMail 1787 1796 UTL_TCP 1797 SocketType 1798 1811 . , p2p.wrox.com 1813 p2p.wrox.com 1814
1814 1815
www.wrox.com 1815 Web- 1815 1816
1818
. Oracle 7.0.9 (, Oracle, 1993 ). Oracle, 5.1.5 ( DOS - 99 360 ). Oracle , -
( ). Oracle, , - Oracle. ,
("" ). , , "AskTom" Oracle Magazine, - Oracle. http://asktom.oracle.com 30 40 . ( Web , , Oracle). , , Oracle. , - Oracle.
, . -
, .
" , ...".
Oracle -.
, . -
Oracle , - , . ,
(Joel Kallman) , interMedia. AskTom - , ,
interMedia . - (David Knox) SSL , UTL_HTTP. - , . , ,
, .
, ,
. , (Tim Hoechst) (Mike Hichwa), 10 . ,
.
Oracle, - . , -
. -
- "" "".
, , .
: ", ?", , - . ,
, .
15
-
Oracle -, - Oracle. , , ,
.
, , Oracle . , ,
, ,
HTML- Java Server Pages, Enterprise Java Beans, JDBC - Oracle. ,
. , , ,
Oracle, , - Visual Basic ODBC, Java EJB JDBC Perl DBI. -; -. ,
. ,
.
18
, -
. -
( ), , . Oracle . : " Oracle"; : " - Oracle ?". , - .
, , -
Oracle., Oracle - (virtual private database). Oracle , . , , -
, , , .
,
, . ( , -
.)
? Oracle -
. Oracle, - , . -
,
(). , , SQL*Plus, - ,
, , Oracle, - ( ) .
, Oracle . , , Oracle ( - , , -
). , , - , Oracle. , ,
. -
, -
, ,
.
, :
SQL. He SQL , .
PL/SQL. , PL/SQL "" . , , -, FOR Oracle . , PL/SQL, - . . -
PL/SQL , , , , .
, -
Java. , , - , -
, .
Oracle Server Concepts Manual.
. - -
Oracle. - , Oracle8i Concepts. 800 , - Oracle, . - ( 10-20 ), . , ,
:
, ;
;
Oracle;
Oracle;
(, , ..); ;
;
;
;
;
.
. -
. , Oracle - .
.
19
20
, ( - ). - . 23 , "-", .
, (, ,, ,
). , , ., 10, 14.
:
.
( ) . , .
. -
SQL, : , , . :
,
,
() , .
,
http://www.wrox.com. .
1. Oracle. . -
-, , -
, ,
. , "
", , .
, ,
.
, -
-
. -
,
. ,
, " "
.
2. . Oracle . - UPDATE - , -
. ,
-
. -
. .
( , ), - , .
Oracle: - ( , System Global Area), ( , - ...). Oracle Oracle .
3. . - (, SQL Server, - Oracle), - Oracle .
,
Oracle, (, , ...) , ( -, - ). , - ,
Oracle , - .
4. . -; . , -
, . ,
Oracle. , - " ",
. ,
Oracle. - (COMMIT, SAVEPOINT, ROLLBACK), - ( -). , : -
.
21
5. . , , ,
, -
. ,
, COMMIT. , -
, , -
.
, , , -
, -
SQL- set transaction. - .
'ORA-01555 snapshot too old', .
6. . Oracle . (,"" ), , , -, ,
, , .
,
, .
7. . . , -
. -
,
.
, -
-, ,
, , -
. " "
" -
?" " ?".
8. . - Oracle, , Oracle - . , -
, . -
, ,
.
.
22
9. . SQLLDR
. -
,
, SQLLDR . SQLLDR , .
10. . , -
Oracle, .
, , -
, SQL_TRACE, TIMED_STATISTICS TKPROF, DBMS_PROFILER . , -
StatsPack V$, .
11. . , Oracle 8i ( ), " -", ,
SQL-. ,
"" (outlines) .
SQL 12. .
, -
SQL ( , ). - Oracle 8.1.6 . SQL, -
SQL-. , ( , - ), .
13. . "" - . -
,
.
23
24, -
, .
, ,
, ,
. ,
,
, DBMS_OLAP,
14. . -
" "
. , -
.
, .
( ) ( ).
15. . -, -
. , -
, ""
, " " -
. -
, ,
.
16. SQL. - SQL- : "" SQL - SQL. SQL- SQL-, , .
SQL : - DBMS_SQL SQL, PL/SQL. - , -
,
, - -
. .
17. interMedia. interMedia Text. - , " interMedia Text", -, , ,
.
, , -
XML. - interMedia, - , .
18. . Oracle 8.0, - , ,
PL/SQL, , Java. . .
, ,
, ,
. -
(LOB_IO), CLOB, BLOB BF1LE.
19. Java. - Java- - , PL/SQL. - ,
,
. , -
,
.
20. - . - ( Oracle 8i) - .
(, , )? , ( PL/SQL), , . ,
- ,
, - ,
.
21. . - . -
, ,
. -
-
. , -
, ,
.
, ,
, .
25
26 22. . -
Web, , ,
. , -
. , -
.
23. . Oracle 8i - -
. -
, .
, , ,
,
.
" " , -
.
. . -
, .
, ,
.
,
.
.
-. , (, SELECT), . , , , SQL*Plus, - :
tkyte@DEV816> create or replace procedure StaticEmpProc(p_job in varchar2)2 as3 begin4 for x in (select ename from emp where job = p_job)5 loop6 dbms_output.put_line(x.ename);7 end loop;8 end;9 /
Procedure created.
, SQL*PIus, .
, .
.
.
. :
;
, , File Window, ;
, , Ctrl Enter, .
,
, . , -
, ,
, feedback@wrox.com.
-
. , -
.
,
:
http://www.wrox.com/
, ,
. , -
, . , -
Web-! .
, .
, -
.
, , http://www.wrox.cora. , , ,
.
-
, , ,
, .
27
,
. :
SCOTT/TIGER;
, ;
AUTOTRACE SQL* Plus; ;
, .
SCOTT/TIGER SCOTT/TIGER -
. ,
. SCOTT - SCOTT . EMP/DEPT .
SCOTT. , . ,
, -
SCOTT, , - .
30 SCOTT, :
[ORACLE_HOME]/sqlplus/demo; demobld.sql .
demobld.sql . SQL*Plus, , SQL*Plus .
-
. .
demobld.sql -:
alter table add constraint emp_pk primary key(empno);alter table dept add constraint dept_pk primary key(deptno);alter table emp add constraint emp_fk_dept
foreign key (deptno) references dept;alter table emp add constraint emp_fk_emp foreign key(mgr) references emp;
.
, [ORACLE_HOME]/sqlplus/demo/demodrop.sql. SQL*Plus.
SQL*Plus SQL*Plus.
, , ,
, Oracle (. " " ). - , SQL*Plus , . SQL*Plus , . ,
DBMS_OUTPUT. , - SQL*Plus:
SQL> s e t server output on , . , SQL*Plus
login.sql , SQL*Plus. , SQLPATH, - .
login.sql :
define _editor=vi
set serveroutput on size 1000000
set trimspool onset long 5000set linesize 100set pagesize 9999column plan_plus_exp format a80
column global_name new_value gnameset termout offselect lower(user) || ' 8 ' ||decode(global_name, 'ORACLE8.WORLD', '8.0', 'ORA8I.WORLD','8i' , global_name) global_name from global_name;set sqlprompt '&gname>set termout on
:
DEFINE _EDITOR=vi SQL*Plus. - ( ), - Notepad emacs.
SET SERVEROUTPUT ON SIZE 1000000 DBMS_OUTPUT ( ). .
SET TRIMSPOOL ON , . , OFF, LINESIZE.
SET LONG 5000 , LONG CLOB.
SET LINESIZE 100 SQL*Plus 100 .
SET PAGESIZE 9999 PAGESIZE, , - SQL*Plus , , .
COLUMN PLAN_PLUS_EXP FORMAT A80 - EXPLAIN PLAN, AUTOTRACE. 80 ( 80 ) - .
login.sql SQL*Plus. :
column global_name new value gname
SQL*Plus , - GLOBAL_NAME, GNAME. :
select lower(user) || ' @ ' ||decode(global_name, 'ORACLE8.WORLD', '8.0', 'ORA8I.WORLD','8i', global_name) global_name from global_name;
GLOBAL_NAME, DECODE - , . -
, SQL*Plus:se t sqlprompt '&gname> '
31
32 :
tkyte@TKYTE816>
, , . ,
, login.sql, connect.sql:set termout offconnect &1Sloganset termout on
SQL*Plus login.sql . - . -
:
tkyte@TKYTE816> @connect scott/tiger,
CONNECT SCOTT/TIGER. - , , SERVEROUTPUT.
AUTOTRACE SQL*Plus -
, -
SQL, -. Oracle EXPLAIN PLAN, EXPLAIN PLAN .
EXPLAIN PLAN . "Oracte8i Designing and Tuning for Performance". SQL*Plus AUTOTRACE,
,
, EXPLAIN PLAN. - (.. SELECT, DELETE, UPDATE INSERT). . AUTOTRACE .
:
[ORACLE_HOME]/rdbms/admin; SQL*Plus SYSTEM; @utlxplan;
CREATE PUBLIC SYNONYM PLAN_TABLE FOR PLAN_TABLE; GRANT ALL ON PLAN_TABLE TO PUBLIC.
, GRANT ... PUBLIC GRANT - . PUBLIC, - SQL*Pius . - -
33 .
@UTLXPLAN , AUTOTRACE.
PLUSTRACE:
[ORACLE_HOME]/sqlplus/admin; SQL*Plus SYS; @plustrce;
GRANT PLUSTRACE TO PUBLIC.
, , PUBLIC GRANT - .
, , -
AUTOTRACE.
SET AUTOTRACE OFF AUTOTRACE . .
SET AUTOTRACE ON EXPLAIN AUTOTRACE .
SET AUTOTRACE ON STATISTICS AUTOTRACE
SQLSET AUTOTRACE ON AUTOTRACE
,
SQL.SET AUTOTRACE TRACEONLY SET AUTOTRACE ON,
.
.
. SQL*Plus .
, :
ID_PLUS_EXP PARENT_ID_PLUS_EXP .
.
PLAN_PLUS_EXP .OBJECT_NODE_PLUS_EXP
.
2 68
34 COLUMN. , PARENT_ID_PLUS_EXP, :SQL> column parent_id_plus_exp noprint
Oracle . Microsoft Windows Microsoft Visual C/C++. (nmake cl). . -
. -
include . makefile, , , ,
include . Sun Solaris ,
Sun SparcsWorks. - , make cc.
,
, PL/SQL. , - :
create or replace package body my_pkgas
g_variable varchar2(25);procedure p(p_variable in varchar2)is
l_variable varchar2(25) ;begin
null;end;
end;/
:
G_VARIABLE, , P_VARIABLE, , , , L_VARIABLE. : G_, _,
L_. PL/SQL . , :
create procedure p(ENAME in varchar2)asbegin
for x in (select * from emp where ename = ENAME) loopdbms_output.put_line(x.empno);
end loop;end;
. SQL - ename = ENAME , , . ename = P.ENAME, PL/SQL , , - .
.
,
.
.
. , -
. , , -
. , -
, ,
. ,
( ), , .
, , ( drop user _ cascade), , Java- . , 19:
tkyte@TKYTE816> create or replace and compile2 Java source named "demo"3 as4 import java.sql.SQLException;
, :
tkyte@TKYTE816> drop Java source "demo";
Java dropped.
He Java-, .
35
1
Oracle
,
Oracle , , , . - , ,
,
, :
(, - ) , ;
" ", -
-
.
, ,
" ", -
. SQL, SQL. , . , ,
, , . ,
, , :
, ;
;
38 1 ;
-
;
, , -
, -
;
SQL. ,
: ,
(), ? , : " - , ..". -
, .
, , Windows (, Windows 3.x). , UNIX, "" . - , UNIX, - (.., , - , ). , UNIX, Windows 3.x . ,
"" Windows. , ,
.
, , -
, , :
. ,
, -
. , SQL Server Oracle, -.
, . -
. -
, . . ,
, .
, Oracle. Oracle Windows UNIX OS/390. - , 18/ Windows NT. UNIX, - .
Oracle
, .
, Java , - , ,
Java Virtual Machine (JVM), . . Oracle , " ".
, , . -
,
Java . . , "
" (Oracle JVM) , -
.
, " ", -
, -
. , -
,
, . , -
Oracle, - ( !). - , -
( , , JavaVirtual Machine), .
:
, SQL; SQL, PL/SQL; PL/SQL,
Java;
Java, ;
, -
, ...
. PL/SQL , SQL. PL/SQL - , , , -
SQL - SQL. PL/SQL , , , .., -
Java. , ,
-
.
Java ( - Java
39
40 1 ). Java -, .
, , -
. , -
, -
, ,
, "",
"" "". -
: ( ).
-
. " "
: . -
. -
, . , "-
", SQL, "". : - "". ,
, , .
, -
"" .
.
, , ,
Java , . Java , ,
. , ,
. Java, , -, ; , .
,
. -
,
. , -
.
.
-
(, Java), - .
, .
Oracle
Oracle - .
.
,
, , -
.. ( ). , -
. . -
, , SQLReference. Oracle 6.0, 7.3, 6.0! , .
-
. , -
, , , ,
. , , -
.
, -
, . - ,
. : "
Oracle , , - ". , Oracle . ,
, Oracle , , . Oracle . : , -
.
, , .
, -
. , ? , , , , . -
.
, -
. Web- - HTTP , Java Server Pages (JSP).
EJB ( ), -. .
, .
. Web- JSP , EJB, , -, . , , -
. -
41
42 1 . -
:
, , ,
?
, , -
?
. ,
EJB , : ", , ". , -
. -
, -
:
;
;
, 80 90 , ;
,
.
. , -
:
select * from t for update;
.
, -
. -
. ( , , -
). TKPROF ( 10) , SQL ( - SQL). , SQL - , SQL*Plus , - .
, , ,
, -
, ,
Oracle, Informix, SQL Server, DB2 ( ). , , - SELECT FOR UPDATE. , - .
Oracle
, -
, -
, .
? , " ". , , . Oracle - SERIALIZABLE ( - , -
, ). Oracle SELECT FOR UPDATE . -
,
,
.
,
SERIALIZABLE , ( ) . - -
. , FORUPDATE, .
. -
:
SQL, ( 11);
;
;
, .
, , -
, , -
, , -
.
( - !),
.
,
EJB . , -
. , , , -
, .
: . -
, . ,
43
44 1 ? , ( , -), . , -: , , -
, .
( )
, .
, , -
( - !). , -, . .
.
Oracle, - . ,
(Multi- ThreadedServer MTS) , ( ) Oracle . , , MTS, .. - Oracle Server Concepts Manual ( - Net8 Administrators Guide).
Oracle , -
, :
Java EJB. Net8. - SQL EJB (Remote Method Invocation RMI) Internet Inter-OrbProtocol (HOP).
RMI no http://java.sun.com/products/rmi-nop/.
.
. , , Java, EJB, , . , .
, -
, , , -
Oracle " ".
Oracle
, , , , -
, ,
. EJB , Oracle (MTS), -. , -
MTS EJB . - , Oracle , .
, 45 - ( ).
.
.
. "", -
.
, , -
. ,
. -
-
Java . - Oracle ,
.
MTS 45 MTS
MTS Oracle. , MTS , . -
. -
, , MTS . 100 .
, .
,
. -
MTS - . MTS (), , - . , -
. -
, .
45
46 1 , MTS .
. , -
, , "".
100 . , 45 , ( ) . -
, "" 45 , .
, ,
.
, . , -
, ( ). - , ,
- .
" " -
, -
, ( , - ). ( , - ), MTS.
: -
, MTS. - . ,
. , -
, -
(Advanced Queues AQ).
AQ , - Oracle . ( - ) , . .
-
.
, 45- , - -
, . 45 , .
, , ( AQ ), . 45- ,
. -
Oracle
AQ, , - -. -
. , 45 , , - ,
, 45 . , -
, , -
,
, .
, -
, . "-
" , -
( ). , ,
, .
, , 45- , . -
( ) -. , AQ, .
. ,
.
.
(AQ). ( ). - -
MTS, ( - ). , , -
, . ,
. , -
MTS, , -.
, -
Oracle, " - ". , ,
.
Oracle ( ) - .
Oracle, , . . , -
123, :select * from emp where empno = 123;
47
48 1 :
select * from emp where empno = :empno;
B 123 . 456,789 .. () , . ,
( , ), , - .. , -
.
, :empno, . ,
( ), - .
, -
.
, -
, ( ) - , -
( ). , ,
. ,
,
. -
,
( . 3). - Oracle ( Oracle ) . -
, -
. -
MTS, . ,
. ,
.
.
. -
, ,
SQL- -. , .
,
,
. , .
, .
Oracle
( -), , . .
, -
, :
tkyte@TKYTE816> alter system flush shared_pool;
System altered.
"" .
, ,
SQL, , .
tkyte@TKYTE816> set timing ontkyte@TKYTE816> declare
2 type rc is ref cursor;3 l_rc rc;4 l_dummy all_objects.object_name%type;5 l_start number default dbms_utility.get_time;6 begin7 for i in 1 . . 10008 loop9 open l_rc for
10 'select object_name11 from all_objects12 where object_id - ' || i;13 fetch l_rc into l_dummy;14 close l_rc;15 end loop;16 dbms_output.put_line17 (round((dbms_utility.get_time-l_start)/100, 2) ||18 ' seconds...');19 end;20 /
14.86 seconds...
PL/SQL procedure successfully completed.
SQL ALL_OBJECTS. 1000 1, 2, 3, ... , WHERE. Pentium 300 15 ( - ).
:
tkyte@TKYTE816> declare2 type rc is ref cursor;3 l_rc rc;4 l_dummy all_objects.object_name%type;5 l_start number default dbms_utility.get_time;6 begin7 for i in 1 . . 1000
49
50 18 loop9 open l_rc for
10 'select object_name11 from all_objects12 here object_id = :x'13 using i;14 fetch l_rc into l_dummy;15 close l_re;16 end loop;17 dbms_output.put_line18 (round((dbms_utility.get_time-l_start)/100, 2) ||19 ' seconds...');20 end;21 /
1.27 seconds.. .
PL/SQL procedure successfully completed.
. -
1, 2, 3... . . -
( , !), .
SQL - . -
Java, Java, - - .
,
-.
.
10 , -, , -
..
, .
, , ,
, -
.
. , , . ,
,
, ,
. ,
-
.
Oracle
, .
. -
, -
, . ,
, -
. , -
, :
;
, ,
;
.
: ", ..." " ..."
. , , -
. -
, , , , -
, . ,
. -
- .
.
. , ,
, .
, .
. -
" " , ( ).
-
. -
, , "" " ".
, , -
.
.
, -
, .
, -
. -
.
, -
. , -
51
. -
, , , , -
. -
. -
, . -
.
, -
-. ,
; - , ; - , ; - SERIALIZABLE , ( ). - , -
, ,
.
Oracle.
Oracle . - .
Oracle . .
, , , . -
: . -
, -
.
, -
, . -
.
, -
, Oracle. , , ,
( , Oracle, , - ).
Oracle "" ,
, -
. .
-
( , ..), . -,
52 1
Oracle
. , -
, ,
( , ). , -
, . , -
:
create table resources(resource_name varchar2(25) primary key, . . . ) ;create table schedules(resource_name varchar2(25) references resources,
start_time date,end_time date);
, , , -
:
select count(*)from schedules
where resource_name = :room_nameand (start_tiroe between :new_start_time and :new_end_time
or
end_time between :new_start_time and :new_end_time)
: 0, - ; , , - . , -
, , -
. -
, - , .
,
Go . , -
, .
Oracle. . -
. , ,
( , , ). - ,
, - -
, .
- -
, ,
.
count(*), :
select * from resources where resource_name = :room_name FOR UPDATE;
, FORUPDATE , -
53
54 1 -. ( ), , -
, . ,
, ,
. , -
-
. , , . -
,
, .
FOR UPDATE . - , , -
.
,
, , -
. , -
, .
, , , ,
(, , ). , - , ,
.
-
( ), - . , ,
, , -
, Oracle. Oracle - , , -
.
99 , -. 1 . " - -".
,
.
,
Oracle Oracle - . 3 -, , Oracle :
: -
;
: , -
, .
Oracle
Oracle. - , Oracle - . , -
, .
Oracle:txyte@TKYTE816> c r e a t e table t
2 as3 select * from all_users;
Table created.
tkyte@TKYTE816> variable x refcursortkyte@TKYTE816> begin
2 open :x for select * from t;3 end;
4 /
PL/SQL procedure successfully completed.
tkyte@TKYTE816> delete from t;
18 rows deleted.
txyte@TKYTE816> commit;
Commit complete.
tkyte@TKYTE816> print x
USERNAME USER ID CREATED
SYSSYSTEMDBSNMPAURORA$ORB$UNAUTHENTICATEDORDSYSORDPLUGIMSMDSYSCTXSYS
DEMO18 rows selected.
0 04-NOV-005 04-KOV-0016 04-HOV-0024 04-NOV-0025 04-NOV-0026 04-NOV-0027 04-NOV-0030 04-NOV-OO
57 07-PEB-01
-
ALL_USERS. . - , .
, Oracle " " ; - (, - ). .
, .
55
56 1 ( ) . ,
(COMMIT) . ? - , -
, OPEN, -. ,
. ,
, .
, Oracle ; delete, - .
, , -
Oracle , - Oracle, - Oracle, .
. , -
, . -
, ( ) .
. -
:
create table accounts( account_number number primary key,
account_balance number) ; , -
( - 3):
1234
123234345456
500.00 $250,00 $400,00 $100,00 $
, -
. :
select sum(account balance) from accounts;
, 1250 $. , I, 2 3 -
Oracle
, 400 $ 123 456? 500 $ 4 1650 $, ? , , -
. , Oracle - .
"" "-
" ,
, .
. , -
,
. ( - , ), ,
. .
( , - ). " "
.
,
Oracle, . Oracle - ,
, ( - 1 4, -, , , , SELECT SUM...)- Oracle " ", - , . -
.
, Oracle , (1250 $) , , , -
? , Oracle. Oracle . - , Oracle , - , "", .
.
X Y Z. . , - . ,
Oracle "" , . , Oracle , -
.
, , .
57
,
1
Oracle
1, sum 500 $
:
2 1,
1, . 1 100 $
2, sum 750 $
4 3, sum 1150 $
5 4,
4, ( ). 4 500 $.
6 4, , .
,
1. 100 $
7 8 1250 $
6 Oracle " " , - 4. : Oracle , , , (.. ). .
: -
, -
. Oracle " -" .
SQL, SQL .
, , :
for in (select * from t)loop
58 1
Oracle
insert into t values (x.username, x.user_id, x.created);end loop ;
SELECT * FROM T - . SELECT "" , - INSERT. , : - .
INSERT , SELECT "" - ,
. 10 , - 20, 21, 23 . . ,
INSERT, , :insert into t select * from t;
INSERT "" , , -
, . -
, ,
.
-
( ), , - .
Oracle, Oracle, .
?, , .
. -
: , -
,
,
.
, ( - FOR UPDATE). , / , - Oracle. , , -
.
,
, ( ), SCHEDULES :
create index schedules_idx on schedules(resource name, start_time);
59
60 1 , - (-
INSERT, , ,
). , - RESOURCE_NAME START_TIME, , .
, ( START_TIME RESOURCE_NAME ). ,, ,
, .
Oracle, , , . Oracle, , .
, FOR UPDATE - . -
.
.
. , ,
, , " -
". , , , . -
"" .
.
Transact SQL ( - SQL Server) PL/SQL. , -, , SQL- Oracle "" . - :
declarel_soma_variable varchar2(25);
beginif (sorae_condition)then
l_some_variable : = f (...);end if;
for x in (select * from T where x = l_some_variable)loop
, X , , ,
.
, , Oracle , L_SOME_VARIABLE (
Oracle
NULL). Sybase SQL Server - (NULL) X. Sybase SQL Server Oracle. SQL , Oracle , ANSI SQL. X NULL True, False . - , :
ops$tkyte@ORA8I.WORLD> select * from dual;
D
X
ops$tkyte@ORA8I.WORLD> select * from dual where null=null;
no rows selected
ops$tkyte@ORA8I.WORLD> select * from dual where nullnull;
no rows selected
: Oracle NULL NULL. SQL Server : SQL Server Sybase NULL NULL. Oracle, Sybase, SQL Server SQL - -. -
ANSI, -. , - , . ,
SQL Server NULL, - ANSI, ( , ).
:
select *from twhere (x = l_some_variable OR (x is null and l_some_variable is NULL))
. SQL Server X. Oracle *- ( 7) - NULL. , , *- .
, , X , . , X, -, , -1. - :
select * from t where nvl(x,-l) = nvl(l_some_variable,-1)
61
62 1 :
create index t_idx on t(nvl(x,-l)) ;
. -
.
. ,
.
( NULL-) -, (, -).
-
.
, - . -
, : " ?". : "
?". : " SQL Server, Oracle". . : " , ,
Oracle". Oracle . - Oracle , :
;
;
;
SQL, .. SQL ; SQL PL/SQL -
.
, , SQL Server ( Oracle ). , Oracle. Oracle SQL Server ( Oracle). . .
SQL92, . . .
SQL92 ANSI/ISO . ANSI/ISO SQL89. (SQL) (, -
Oracle
..) . , - SQL92? , - ?
SQL92, , . .
. -
, SQL89. . - , (NationalInstitute of Standards and Technology NIST), , - SQL, . , Oracle 7.0 NIST SQL92 1993 . , - , Oracle 7.0.
. -
.
. , ( ): SQL; ;
DATE TIME;
;
;
CASE;
CAST . . ( -
): ;
BIT ; ;
FROM; CHECK; .
, -
, ..
. -
, , -
, SQL92. SQL92 , . , "" ,
63
64 1 SQL92. SQL92 , SQL92., SQL Server " -" SQL- , Oracle . SQL92. Oracle - , , SQL Server. SQL92 , .
,
. ,
.
.
,
. -
, .
, ,
.
, -
. -
. Oracle - (SEQUENCE). Informix SERIAL. Sybase SQL Server IDENTITY. -. , -
. :
,
;
.
, -
. "-
", , -
.
:
create table id_table (id_name varchar(30), id_value number);insert into id_table values ('MY_KEY', ) ;
:
update id_table set id_value = id_value + 1 where id_name = 'MY_KEY';select id_value from id_table where id_name = 'MY_KEY';
,
. -
, , -
. -
Oracle
. , -
, . UPDATE SELECT , .
-
. -
. , -
Web-. , - .
-
. Oracle (, - ) :
create table t (pk number primary key, . . . ) ;create sequence t_seq;create trigger t_trigger before insert on t for each rowbegin
select t_seq.nextval into :new.pk from dual;end;
. -
,
.
, , , ,
-
.
, -
. , -
,
. , JDBC. SQL, SELECT, INSERT, UPDATE DELETE, . SQL , ,
, . , -
, -
, . , -
, ,
. -
.
, -
,
. , , " "
. , -
. , -
, . -
65
66 1 SQL, (, , , - ), SQL, . , .
,
, . ,
,
SQL. , Oracle CONNECT BY - SQL. -. Oracle SQL, "" ( ). - , ,
. , .
, , -
. Oracle, , . (, , ), OSD- (Operating SystemDependent) . - Oracle - ,
. Oracle - Windows UNIX. - , --
; , , .
SQL, -, ,
, ,
.. 3 4, , . SQL92 - , , -
, -
. .
, .
. -
( ) -, , ,
. ,
, .
" " -
: , ,
. -
Oracle
Oracle 8i, . Oracle 8i - Oracle. , Oracle - 10 000 , - . ,
-
.
, Oracle Web-. -, 80 (URL) . -,
( ). , , Oracle -. . : " -
.
. , . -
?". : . CREATE SNAPSHOT. .
, , ,
. , , ,
. , , ,
. , . -
, .
Oracle . - , . ,
. -
, . -
7.3, 8.0, 8.1 9.0 . , . ,
, .
-
.
, ,
. " "
. , -
.
"". ,
, -
( ). , . , -
, Oracle, - ( ).
. -
. ,
67
68 1 . -
, : -
, Advanced Queues. . " ". ,
, . , ,
. ,
. -
, ,
.
, Oracle 8i -, ( ). - SQL, , . -
, -
. -
, (. 4, ). - ,
. ,
. Oracle Oracle 8i ( - ) . - , ( - 15), . , , , . -
,
. ,
. ,
. --
, .
:
, .
, , , -
. , " ", -
, .
,
. , , .
Oracle , .
: . -
- . , -
. , "".
, , - ,
, .
Oracle
, : " , -
?". ( , .) , ;, -
, .
, . -
, , -
V$SESSION, -, .
, -
. -
, -
, . ""
, :
ops$tkyte@0RA8I.W0RLD> create profile one_session limit sessions_per_user 1;Profile created.
ops$tkyte@ORA8l.WORLD> alter user scott profile one_session;User altered.
ops$tkyte@ORA8I.WORLD> alter system set resource_limit=true;System altered.
. ONE_SESSION - . -
. -
.
" " , -
. , .
" " , , -
, , -
, . , "-
" "", ,
, , -
.
, . Web-, . HTML - JSP -, CORBA-, , . CORBA- "" . ,
, -
10000, , . , ,
69
70 1 ( , - , ). , - . ,
, -
. ,
, -
. , PL/SQL Oracle iAS , -
, .
EJB, JSP EJB URL - . ,
, , , -
. , ,
4- (, , ).
.
. -
, -
...
,
, , "-
" " ". "-
", "" , -
,
. , ,
, . -
, ( ) . , , SELECT COUNT(*) FROM T . Oracle SELECT COUNT(*) . , -
,
. , -
.
. , -
. -
(, NULL=NULL) SQL . Web- -
Visual Basic, ActiveX, Web- IIS Oracle 8i. - - PL/SQL , .
Oracle
. ,
, " " :
, -
( Java);
, -
( EJB CORBA);
Web-, - ( Apache?).
, -
-
.
, , ,
, - -
"".
, ,
. -
? , - ,
, ? , ,
.
"".
. , , . -
SQL, EJB, HTTP,FTP, SMB . : ?
, , .
, , , Visual Basic, Microsoft Transaction Server (MTS). "". -
-
( ). , : , " " -
, EJB, , , - . 20 (, , --) . -, , , , -
, .
Oracle (Fine GrainedAccess Control, FGAC, 21). , -
71
72 1 , -
. -
, . -
, , , .
., . FGAC , :
, ,
;
, "-
" .
, -
. , -
, JSP, VB ODBC SQL*Plus, .
.
: ""? , VB ActiveX ( VB - Java, ActiveX EJB, ; - , )? , , - , , SSL, HTTP Net8, ODBC, JDBC, OCI . .? - , VB. , SQL-.
""
, , .
, -
. , , -
( ). , , -
.
? . , -
fast = true, , - . , 80 (- , 100 ) , .
, , .
, ,
. , Oracle 8.1.6 CURSOR_SHARING=FORCE. - . SELECT * FROM
Oracle
EMP WHERE EMPNO = 1234 SELECT * FROMEMP WHERE EMPNO = :x. - ,
, ( ) . ( ) , , -, :
ops$tkyte@ORA8I.WORLD> alter session set cursor_sharing=force;Session altered.
ops$tkyte@ORA8I.WORLD> select * from dual where dummy='X' and 1=0;select * from dual where dummy='X' and 1=0
*
ERROR at line 1:ORA-00933: SQL command not properly ended
ops$tkyte@ORA8I.WORLD> alter session set cursor_sharing=exact;Session altered.
ops$tkyte@ORA8I.WORLD> select * from dual where dummy='X' and 1=0;no rows selected
8.1.6(- X AND). - :
select * from dual where dummy=:SYS_B_0 and :SYS_B_1=:SYS_B_2;
AND :SYS_B_0. - 8.1.7, , :
select * from dual where dummy=:"SYS_B_0" and :"SYS_B_1"=:"SYS_B_2";
,
. , , -
1=0 ( ) :"SYS_B_1" =:"SYS_B_2". , ( ). , 1=0 , , - . -
(, 90 100, 10 100). 1 50. , :
select * from t where x < 50 ;
, :
select * from t where x > 100;
. CURSOR_SHARING=FORCE, - 50 100,
73
74 1, ( 99,9 WHERE x < 50).
, , , CURSOR_SHARING = FORCE - , -
, , -
, .
- , -
. 10 , SQL . , ,
. -
( -), . , , -
.
.
, ,
CURSOR_SHARING = FORCE . - . CURSOR_SHARING - , . -
.
( ) . ,
, ,
( ) . -
( ). , , -
, " "
. 2,3, ... N , . 10 ? 10 , . - , , , .
:
. , -
, /. ,
. . , -
, , -
. , -
, .
. -
.
Oracle
. -
. ,
. . -
, , -
.
, ,
, , -
. , -
. -
( , - ).
,
. , , . -
Net8, , MTS, - , , ..
.
.
.
-
, .
, -
, .
. ,
. ,
, ,
.
,
SORT_AREA_SIZE . , - ,
.
, , ,
.
.
( - ), -.
, , ,
. . -
, , ,
,
75
76 1( -).
, ,
. , .
, , ,
.
, .
, .
.
Oracle:
Oracle. He , - , , -
.
, -
, , -.
"" -
, , .
, -
. . -
.
. , -
, - -
Oracle. , , .
, -
Oracle. .
, -
. , , -
, , , .
, -
. , - Java, . -
. . .
2
Oracle , . Oracle - . , UNIX Oracle -
. UNIX -, . Windows, -, ( ). Oracle , ..
. IBM, - OS/390 zOS, Oracle OS/390, Oracle. 255 . , Oracle - OS/390 WorkLoad Manager (WLM) - Oracle , OS/390. Netware - . Oracle - , ,
, Oracle .
80 2 Oracle.
. , -
. , , , -
.
, (System Global Area SGA). SGA, PGA UGA. - SGA Java-, .
. , -
: , .
, . -
SGA, SGA . , -
SGA. . , , , . -
Oracle, - .
Oracle . " " "". Oracle , :
;
Oracle SGA.
,
. , -
. -
. -
.
? , . .
,
( , , -, ). . ; . -
Oracle (Oracle Parallel Server OPS), Oracle, - ,
.
. OracleParallel Server , - , . OPS
81 ,
.
, -
. , ,
. , ,
.
, , . , ,
. Oracle . ,
, , . -
,
. "", ,
.
, "" -
Oracle. " " , . , -
.
Oracle.
Oracle. SGA, , -
,
, SQL .. , SGA, - . UNIX -
, .
Windows malloc() , . Oracle , /- ( -
82 2 Oracle). , , -, ..
Oracle UNIX- ps ( ), .:
$ /bin/ -aef | grep ora816ora816ora816ora816ora816ora816ora816ora816ora816
2082720821208172081320819208152082520823
11111111
00000000
FebFebFebFebFebFebFebFeb
09 ?09 ?09 ?09 ?09 ?09 ?09 ?09 ?
0:000:060:570:000:450:270:000:00
ora_d000_ora816devora_smon_ora816devora_lgwr_ora816devora_pmon_ora816devora_ckpt_ora816devora_dbwO_ora816devora_s000_ora816devora_reco_ora816dev
,
Oracle. , ; , . , , -
. Oracle UNIX, ., ora_lgwr_ora816dev, ora_ckpt_ora816dev. oracle. . Windows tlist, Windows resource toolkit, - Oracle.exe. NT . ,
Oracle. tlist ( ) :
C:\Documents and Settings\Thomas Kyte\Desktop>tlist 10721072 ORACLE.EXE
: C:\oracle\DATABASE\CmdLine: c:\oracle\bin\ORACLE.EXE TKYTE816VirtualSite: 144780 KB PeakVirtualSize: 154616 KBWorkingSetSize: 69424 KB PeakNorkingSetSize: 71208 KBNumberOfThreads: 11
0 Win32startAddr:0x00000000 LastErr:0x00000000 State:Initialized5 Win32StartAddr:0x00000000 LastErr:0x00000000 State:Initialized5 Win32StartAddr:0x00000000 LastErr:0x00000000 State:Initialized5 Hin32StartAddr:0x00000000 LastErr:0x00000000 State:Initialized5 Win32stertAddr:0x00000000 LastErr:0x00000000 State:Initialized5 Win32StartAddx:0x00000000 LastErr:0x00000000 State:Initialized5 Win32StartAddr:0x00000000 LastErr:0x00000000 State:Initialized5 Win32StartAddr:0x00000000 LastErr:0x00000000 State:Initialized5 Win32StartAddr:0x00000000 LastErr:0x00000000 State:Initialized5 Win32StartAddr:0x00000000 LastErr:0x00000000 State:Initialized5 Win32StartAddr:0x00000000 LastErr:0x00000000 State:Initialized0.0.0.0 shp0x00400000 ORACLE.EXE
5.0.2163.1 shp0x77f80000 ntdll.dll0.0.0.0 shp0x60400000 oraclient8.dll
830.0.0.0 shp0x606000000.0.0.0 shp0x60800000
oracore8.dlloranls8.dll
11 , Oracle. , 12. UNIX oracle . .
Oracle . , Oracle - , :
Oracle . ,
.
. ( , - ) - , , TCP/IP. SQL-. , . UPDATE PL/SQL-. SQL-.
Oracle (multi-threadedserver MTS), UNIX. MTS Oracle " " . -
. 10000 ( , ) 10000 - MTS - , ( ) - . Oracle , . , ,
10000 , 100 1000 . MTS
84 2 , ps ( ps ora_s000_ora816dev ).
MTS , , , -
, .
,
. -
, . Oracle - ( ), . -. - -
SGA ( SGA). (-, UPDATE T SET X = +5 WHERE Y = 2). - . -
-
. MTS -:
. -
SGA (1). - (2) . , ( , ..) (3), (4) .
MTS . , , , -
: ; -? , - , .
: -
TCP/IP. , - , TCP/IP. . Oracle . , :
:\> sqlplus scott/tiger@ora816.us.oracle.com
SQL*Plus. scott/tiger , ora816.us.oracle.com TNS. TNS Transparent NetworkSubstrate ( ), "" -, Oracle (- ). TNS - Oracle, . TNSNAMES.ORA. ,
[ORACLE_HOME]\network\admin :ORA816.US.ORACXE.COM =
(DESCRIPTION =(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP) (HOST = aria.us.oracle.com)(PORT = 1521)))(CONNECT_DATA =
(ORACLE_SID = ora816))
)
Oracle - ora816.us.oracle.com : ; , , ; SID (Site IDentifier) , -, .. , ora816.us.oracle.com, - -. , -
Oracle Names , DNS, IP-. , -
, TNSNAMES.ORA., , , -
TCP/IP 1521 aria.us.oracle.com. Net8 -, . -
TNS Listener. , . , , -
, (, - IP- - , ), .
. UNIX fork() () ( UNIX fork()). . Windows - . "-
85
86 2" , .
UNIX :
MTS . , -- . -
- -
. ,
-. ,
, -
.
, .
. .
:
, Oracle . , Oracle,
. Oracle, , , -
. Oracle - :
87
, , -
, SGA -. , Oracle - .
. -
. -
, -
.
.
. ( , ).
. .
.
.
.
.
. ,
, . .
, -
. .
,
. , -
, , .
.
2
Oracle : TNSNAMES.ORA ( ) LISTENER.ORA ( Net8) SQLNET.ORA, PROTOCOL.ORA, NAMES.ORA, CMAN.ORA LDAP.ORA. ,
. ; . -
. -
Oracle Net8 Administrators Guide. - .
init - init.ora. , init.ora. , SID, tkyte816, inittkyte816.ora. - Oracle. . , ,
, .
, SID ORACLE_SID, - . SID (). UNIX - ORACLE_HOME ( , - Oracle) SGA. ORACLE_SID ORACLE_HOME , - ORACLE NOT AVAILABLE, , "" .
Windows , UNIX, SID . ORACLE_HOME - ,
.
Oracle init.ora . /. init.ora :
db_name = "tkyte816"
db_block_size = 8192
control_files = ("C:\oradata\control01.ctl", "C:\oradata\control02.ctl")
init.ora, . , ( ), .
.
,
.
88
.
. , Oracle8.1.5 plsql_load_without_compile. . 8.1.5, 8.1.6 8.1.7 ,, 199, 201 203 . -, db_block_size, ( ), , -
. , -
, Oracle8i Reference. - .
" " .
( ) , - . :
, , "" .
, "" -
Oracle . , . . ,
.
, :
, -
. -
init.ora , . ,
. ,
, :
_TRACE_FILES_PUBLIC = TRUE
, dba. , SQL_TRACE,TIMED_STATISTICS TKPROF ( , ), . -
.
-
Oracle. , .
, , -
, ,
, .
:
init$ORACLE_SID.ora ( Unix)init%ORACLE_SID%.r ( Windows)
,
$ORACLE_HOME/dbs ( Unix)%ORACLE HOME%\DATABASE ( Windows)
89
90 2 :
IFILE=' :\oracle\admin\tkyte816\pf ile\init.ora'
IFILE #include . .
init.ora . ,
. pfile= _. -
.
-
. .
, . ,
"" . -
: ( - SYSTEM), ( USER). Oracle - . , -
, , .
Oracle. . ,
, , .. -
.
. .. , -
, . , -
, , ..
, , .
. -
,
( ). , .
; , -
. 2 . .
Oracle. , . Oracle . Oracle 2 , 4 8 ( 16 32 ). , :
91
,
.
,
. .
( , ..), , , () . , ( -). . - , . -
.
Oracle . - : , , -
.
, , , -
, , , -
, . -
.
. .
, .
. ,
, . -
. -
. -
:
92 2
, USER_DATA. user_data01 user_data02. : Tl, T2 I1(, ). -, . 1 ( ). 2 - . -
, , ,
.
Oracle . .
, -
. , -
Oracle. / , .
.
, , Oracle, .
1. , .
2. , . - .
3. (TABLE, INDEX ..), . ,
, .
4. . - , ,
.
5. . - /, .
, , -
. 8.1.5 Oracle .
. .. -
( , - DEBIT CREDIT). , -
. -
, . Oracle , , -
( ) , ( ) . Oracle - , : -
.
SQL- , , . -
SQL- INSERT - SQL- . - SQL- . -
, . .
Oracle ( SQL-) - ( - "" ). -, ( ) ( - , ). , -
. 7.3 Oracle - .
. :
. -
-
. -
Oracle , , . .
, "".
-. -
Oracle , SQL-.
Oracle, 8.1.5, - . ,
, .
, Oracle7.3 ,..
. -
, .
1 . 0.
93
, .
, -
.
.
-
, , -
.
Oracle . Oracle - ,
. , ,
,
.
, , -
.
Oracle . .
.
, , . -
. ,
(UNDO) -, , . -
, - ,
,
.
, -
. , -
CREATE TEMPORARY TABLESPACE. - , ,
. ,
-
,
sort_area_size. :
tkyte@TKYTE816> create temporary tablespace temp2 tempfile 'c:\oracle\oradata\tkyte816\temp.dbf'3 size 5m4 extent management local5 uniform size 64k;
Tablespace created.
(), .
94 2
( - 64 ), , - Oracle. (init.ora) , , -
.
Oracle , - , ( db_name), , ( ) ..
( RAID-), Oracle, RAID- - . ,
, -
. , -
.
-
. , -
.
Oracle. . -
. , ,
, , -
, Oracle . ,
, ,
Oracle, , . , -
- ,
, -
,
.
, Oracle, - , -
. -
.
.
. -
, SQL-, Oracle -
95
96 2, . ,
Oracle SYS.OBJ$, .
-
. ,
NOLOGGING. , - , SQL--, Oracle, . , SYS.OBJ$, , . -
SQL- INSERT, UPDATE DELETE, .
: .
5 -, , . ,
.
Oracle - .
. Oracle 1, , - 2 . - 2, 1 ( ; , , , ):
. -
, ""
.
,
, .
Oracle " ", , - , , ""
, .
, .
. , -
, , -
-
(Database Block Writer DBWn). DBWn - , ,
.
. -
SGA Oracle. - (, ). .
/-. -
, . , -
,
SGA. - COMMIT Oracle SGA. . ,
, -
. -
, .
,
. Oracle , ,
, . ,
, -
.
DBWn. Oracle, - -
. () . Oracle , . ,
. 1, 2, Oracle . DBWn , I. DBWn , - , Oracle . - , DBWn -, (alert log) :
Thread 1 cannot allocate new log, sequence 66Checkpoint not complete
Current log# 2 seq# 65 mem# 0: C:\ORACLE\ORADATA\TKYTE816\REDO02.LOG
, -
, , ,
, . , -
97
-
DBWn . Oracle - DBWn.
. , , , -
, . ( , ) -. ,
. , ,
-
DBWn . -
. ( , ), , - , ( )., ,
,
. 100 , 1000 -. "" ,
.
. , , ,
, , .
. -
,
. -
.
, . -
. -
, ,
, . -
,
. , , .
. -
, ,
.
-
, . -
, (- ), . ,
.
98 2
Oracle NOARCHIVELOG ARCHIVELOG. , , , ARCHIVELOG. ARCHIVELOG, . NOARCHIVELOG .
, -
Oracle . - Oracle , -? . , . , -
, . , -
, -
. ARCHIVELOG, .
/, . , ,
, .
SYSTEM ( Oracle), . .
, .
ARCHIVELOG, - .
, , -
( ). . .
, ARCHIVELOG . . -
, ARCHIVELOG. " - RAID-5 " . , -
. , -
. -
, ,
, . ,
ARCHIVELOG , - . . -
. ,
, , , -
, , ,
, .
99
100 2 ARCHIVELOG.
, , -
. , .
, , Oracle: ( ) - . Oracle: , .
( -) , Oracle. - .
Oracle. .
SGA, System Global Area . , Oracle.
PGA, Process Global Area . , /.
UGA, User Global Area . , . SGA PGA. MTS, SGA, , PGA.
PGA UGA, SGA.
PGA UGA , PGA .
. -
/ . PGA malloc() ( ). PGA SGA - .
UGA , -. UGA - Oracle. MTS, UGA - , , , SGA. , -
. -
, UGA -
PGA, . , -
, UGA PGA (- PGA UGA UGA PGA).
PGA/UGA init.ora:SORT_AREA_SIZE SORT_AREA_RETAINED_SIZE. , Oracle , ,
. SORT_AREA_SIZE PGA, aSORT_AREA_RETAINED_SIZE - UGA. UGA/PGA V$ Oracle. - . -
V$ 10. V$ PGA UGA. -, , -
. , -
. ""
"":
tkyte@TKYTE816> select a.name, b.value2 from v$statname a, v$mystat b3 where a.statistic# = b.statistic#4 and a.name like '%ga %'5 /
NAME VALUE
session uga memory 67532session uga memory max 71972session pga memory 144688session pga memory max 144688
4 rows selected.
, UGA 70 , PGA 140 . : PGA UGA? , , ; . UGA PGA. 140 . MTS UGA SGA, PGA -. MTS -
. , PGA , 70 ( , PGA UGA 210 ).
101
102 , PGA/UGA :tkyte@TKYTE816> show parameter sort_area
NAME TYPE VALUE
sort_area_retained_size integer 65536sort_area_size integer 65536
tkyte@TKYTE816> set pagesize 10tkyte@TKYTE816> set pause ontkyte@TKYTE816> select * from all_objects order by 1, 2, 3, 4;
...( Control- ) ...
tkyte@TKYTE816> set pause off
tkyte@TKYTE816> select a.name, b.value2 from v$statname a, v$mystat b3 where a.statistic# = b.statistic#4 and a. name like ' %ga % '
5 /
NAME VALUE
session uga memory 67524session uga memory max 174968session pga memory 291336session pga memory max 291336
4 rows selected.
, , .
UGA SORT_AREA_RETAINED_SIZE, a PGA . Oracle ,
. , SORT_AREA_SIZE:
tkyte@TKYTE816> alter session set sort_area_size=1000000;
Session altered.
tkyte@TKYTE816> select a.name, b.value2 from v$statname a, v$mystat b3 where a.statistic# = b.statistic#4 and a.name like '%ga %'5 /
NAME VALUE
session uga memory 63288session uga memory max 174968session pga memory 291336session pga memory max 291336
2
4 rows selected.
tkyte@TKYTE816> show parameter sort_area
NAME TYPE VALUE
sort_area_retained_size integer 65536
sort_area_size integer 1000000
tkyte@TKYTE816> select * from all_objects order by 1, 2, 3, 4;
...( Control-C ) . . .
tkyte@TKYTE816> set pause off
tkyte@TKYTE816> select a.name, b.value2 from v$statname a, v$mystat b3 where a . s t a t i s t i c # = b . s t a t i s t i c #4 and a.name like "%ga %'5 /
NAME VALUE
session uga memory 67528session uga memory max 174968session pga memory 1307580session pga memory max 1307580
4 rows selected.
, PGA . 1000000, SORT_AREA_SIZE. , UGA . SORT_AREA_RETAINED_SIZE, :
tkyte@TKYTE816> alter session set sort_area_retained_size=1000000;Session altered.
tkyte@TKYTE816> select a.name, b.value2 from v$statname a, v$mystat b3 where a.statistic# = b.statistic#4 and a.name like ' %ga %'5 /
NAME VALUE
session uga memory 63288session uga memory max 174968session pga memory 1307580session pga memory max 1307580
4 rows selected.
103
104 2tkyte@TKYTE816> show parameter sort_area
TYPE VALUE
sort_area_retained_size integer 1000000sort_area_size integer 1000000
tkyte@TKYTE816> select * from all_objects order by 1, 2, 3, 4;
...( Control-C ) ...
tkyte@TKYTE816> select a.name, b.value2 from v$statname a, v$mystat b3 where a.statistic# * b.statistic#4 and a.name like '%ga %'5 /
NAME VALUE
session uga memory 66344session uga memory max 1086120session pga memory 1469192session pga memory max 1469192
4 rows selected.
, UGA - SORT_AREA_RETAINED_SIZE. 1 " ". - (- ). - -
. , PGA . , PGA "" -, malloc(). Oracle PGA, ( , , ). ( ). UGA "" ( "" PGA SGA), . PGA:
tkyte@TKYTE816> exec dbms_session.free_unused_user_memory;
PL/SQL procedure successfully completed.
tkyte@TKYTE816> select a.name, b.value2 from v$statname a, v$mystat b
. 3 where a.statistic# = b.statistic#4 and a.name like '%ga %'5 /
VALUE
session uga memory 73748session uga memory max 1086120session pga memory 183360session pga memory max 1469192
, , .
PGA Oracle, . -
, .
, malloc(), free(), realloc(),brk() sbrk() ( ).
, , PGA UGA. , PGA . , Oracle - . PGA "" , -. UGA , . UGA PGA Oracle SGA MTS. , - MTS SGA, UGA . SGA , - MTS, , SGA - , .
SGA Oracle ,
SGA, System Global Area . -, Oracle. , -
.
UNIX SGA , "" - . SGA ,
. Oracle SGA; . SGA Oracle , . , . "" SGA UNIX:
$ ipcs -mbIPC status from as of Mon Feb 19 14:48:26 EST 2001T ID KEY MODE OWNER GROUP SEGSZShared Memory:m 105 0xf223dfc8 rw-r ora816 dba 186802176
105
106 2 Windows SGA, UNIX, .
Oracle -, SGA ORACLE.EXE. - Windows (Task Manager) - , ORACLE.EXE, , -
SGA. Oracle SGA -
. "" V$, V$SGASTAT. :
tkyte@TKYTE816> compute sum of bytes on pooltkyte@TKYTE816> break on pool skip 1tkyte@TKYTE816> select pool, name, bytes
2 from v$sgastat3 order by pool, name;
POOL NAME BYTES
Java pool
sum
large pool
sum
shared pool
free memorymemory in use
free memorysession heap
Checkpoint queueKGFF heapKGK heapKQLS heapPL/SQL DIANAPL/SQL MPCODEPLS non-lib hpSYSTEM PARAMETERSState objectsVIRTUAL CIRCUITScharacter set objectdb_block_buffersdb_block_hash_bucketsdb_filesdictionary cachedistributed_transactionsdlo fib structenqueue resourcesevent statistics per sessfile * translation tablefixed allocation callbackfree memoryjoxlod: in ehe
183664642605056
20971520
607952064480
6144000
737645900175565545603642921383962096618561254649775258936408000179128370988319604180152409809417620160065572320
997396452556
107
sum
***********
sum
joxlod: in phejoxs heap initlibrary cachemessage pool freequeuemiscellaneousprocessessessionssql areatable columnstransaction branchestransactionstrigger definitrigger inform
db_block_buffersfixed_sgalog buffer
4144356
140301223115256274440000127920
211509219812368000588722792520
18322028
245760007092466560
24713484
43 rows selected.
SGA .
Java-. Java- , JVM, .
. (large pool) MTS , Parallel Execution RMAN - /.
. (shared pool) , , ,
.
"" ("Null") . . , - ( , ), - " SGA".
SGA :
SGA init.ora. JAVA_POOL_SIZE. Java-. SHARED_POOL_SIZE. ( )
.
LARGE_POOL_SIZE. .
DB_BLOCK_BUFFERS. . LOG_BUFFER. () -
.
SHARED_POOL_SIZE LOG_BUFFER, - init.ora -, SGA. , DB_BLOCK_BUFFERS , , - DB_BLOCK_BUFFERS NULL V$SGASTAT (- ). , V$SGASTAT , LARGE_POOL_SIZE.
SGA SGA SGA,
. "" Oracle - ( ""). SGA , SGA, , - . SGA ( -, ) . "-" SGA, Oracle SGA.
.
, , -
-
. -
. :
;
;
1 .
. -
6 , , -
108 2
, 2 . -
, 2 , - . -
.
, -
LOG_BUFFER init.ora, 512 (128 * ) . - , -
. , LOG_BUFFER 1 . , Windows 2000 :
SVRMGR> show parameter log_bufferNAME TYPE VALUE
log_buffer integer 1
SVRMGR> select * from v$sgastat where name = 'log_buffer';POOL NAME BYTES
log_buffer 66560
, -
init.ora, 65 . - :
tkyte@TKYTE816> s e l e c t * from v$sga where name = 'Redo Buffers ';
NAME VALUE
Redo Buffers 77824
To 76 . - , "" , -
.
SGA. - , .
Oracle , . SGA. -, . ,
(, PGA, ).
. "" -
, ( DBWn; ). "" , - Oracle 8.0 (LRU Least Recently Used). . -
109
Oracle 8i . , Oracle , , ("touch count) (hit) - . "" $. Oracle, -.
X$BH . -, " " .
. DUAL , , Oracle. :
tkyte@TKYTE816> select file_id, block_id2 from dba_extents3 where segment_name = 'DUAL' and owner = 'SYS';
FILE_ID BLOCK_ID
1 465
" "
:
sys@TKYTE816> select tcn from x$bh where file#=1 and dbablk=465;TCH
10
sys@TKYTE816> select * from dual;
D
X
sys@TKYTE816> select tch from x$bh where f i l e # = 1 and dbablk=465;
TCH
11
sys@TKYTE816> select * from dual;
D
X
sys@TKYTE816> select tch from x$bh where file# = 1 and dbablk = 465;
TCH
12
.
. , "
110 2
111" .
, "" ( DBWn). , - , " " -
, . -
Oracle. , , ,
.
Oracle 8.0 . ,
. Oracle 8.0 -. ( , , ..). ( ) -, , -". Oracle - .
. -
"" . -
:
, . , -
, KEEP. KEEP , . , ; ,
.
. RECYCLE. , KEEP. KEEP - "" . RECYCLE . "" ,
. ( " " ; , "".) - , .
RECYCLE ., SGA, :
112 2
SGA, . -
,
.
. .
, ? Oracle - "" . .
Oracle . PL/SQL- , . PL/SQL- - , -
. 1000 , . Oracle - . , -
. , ,
.
( 4 ) -.
(LRU). : -, . DBMS_SHARED_POOL .
,
. , -
,
. PL/SQL-, , - ,
-
. ,
, -
.
Oracle - . 1, - , " " , -
:
;
-
, ..
.
Oracle , , . -
,
.
, .
.
, , . -
, ,
, -
, -
.
-
SQL, . 10 - CURSOR_SHARING, , -
SQL-. 10000 20000 SQL-. - .
, -
. -
, -
SGA . , , -
, , , -
. , 9 5 - 1 SGA 1,1 . , : 0,1 , 1 , - . ,
. -
( ) , ( , 1 ). , , -
SQL- ., ,
, ( ), - . 1 100 , - .
, -
SHARED_POOL_SIZE. -:
sys@TKYTE816> select sum (bytes) from v$sgastat where pool = 'shared pool';SUM (BYTES)
183220281 row selected.
113
SHARED_POOL_SIZE:sys@TKYTE816> show parameter shared_pool_sizeNAME TYPE VALUE
shared_pool_size string 15360000SVRMGR>
, SUM(BYTES) FROM V$SGASTAT , - SHARED_POOL_SIZE. -, .
SHARED_POOL_SIZE , , SUM(BYTES). , - CONTROL_FILES , - "" 264 . , 'shared pool' V$SGASTAT SHARED_POOL_SIZE , - , .
, "" ( ), , - , ,
. Oracle 8.0, - . , ""
, , MTS. , , , ,
.
, -
.
, , .. -
.
Oracle RECYCLE KEEP . .
, RECYCLE, - KEEP: , .
""
, malloc() free() . . -
. -
, , . ,
, Oracle - .
, .
, , :
MTS UGA SGA;
114 2
, -
;
/ - RMAN.
, -
-
. UGA, , , . , UGA - . ,
SORT_AREA_RETAINED_SIZE, UGA , , ,, 4 . UGA , ,
, ,
, . -
.
. -
, . , -
, : -
Oracle "". MTS , -
. MTS , , Oracle 7.3. - , -
. -
: DBWn_IO_SLAVES PARALLEL_AUTOMATIC_TUNING. .
.
Java-Java- Oracle 8i. 8.1.5
Java- . - Java EJB (Enterprise JavaBean) , Oracle .
Java- Oracle 8.1.5 , SHOW SGA V$SGASTAT. , - JAVA_POOL_SIZE, , 20 . , SGA - 20 , .
8.1.6, , Java- V$SGASTAT, SHOW SGA. JAVA_POOL_SIZE , - Java- . Oracle 8.1.5 -
115
116 2 1 1 . Oracle 8.1.6 - 32 1 . , -- 1 .
Java- -, Oracle. Java- Java--, . ( -, ..) 4 8 .
, (, , -, Java) - Java- ; - Java-. , SGA , UGA, , , - PGA.
MTS Java- :
Java-
UGA , .
UGA , .
Java- , -
. -
Java-. Java- UGA , , ,
UGA . MTS, , -
CORBA EJB ( 1), - Java-. - , .
, MTS, Java- - .
, Oracle. , PGA (Process Global Area - ) UGA (User Global Area -) . , , - Oracle, . -
, MTS, MTS - SGA. SGA, .
, , "" -
. Java- . - ,
.
Oracle.
"".
.
Oracle, . , .
, (DBWn) (LGWR), . - : . "" -
"" , Oracle - . , , DBWn, Windows DBWn.
Oracle .
. .
. , -
.
. ,
, -
, , -
..
. , , -
, .
,
.
.
.
: -
SQL-. SELECT * FROM EMP - / Oracle - ( ). . , -
-
. " " . -
,
, , , .
-
( ). 100 UNIX-, 100 , . :
117
118 2
Oracle. (Application Program Interface API) . API "", - . -
, . -
Net8 /, Oracle / ( n- / ). Oracle -, Net8 . , , ( - two-task) . .
. , ,
, .
. -
SGA. - SGA, .
"", ,
Oracle Net8 Listener. He - , , , -
. , -
fork()/exec() UNIX IPC (Inter Process Communication), Windows, . UNIX:
ops$tkyte@ORA8I.WORLD> select a.spid dedicated_server,2 b.process clientpid3 from v$process a, v$session b4 where a.addr = b.paddr
5 and b.audsid = userenv( ' sess ion id ' )6 /
DEDICATED CLIENTPID
7055 7054
ops$tkyte@ORA8I.WORLD> !/bin/pa -lp 7055F S DID PID PPID PRI HI ADDR SZ WCHAN TTY TIME CMD8 S 30174 7055 7054 0 41 20 61ac4230 36815 639b1998 ? 0:00 oracle
ops$tkyte@ORA8I.WORLD> !/bin/pa -lp 7054F S UID PID PPID PRI N1 ADDR SZ WCHAN TTY TIME CMD8 S 12997 7054 6783 0 51 20 63eece30 1087 63eece30 pts/7 0:00 sqlplus
(PID) - ( SPID V$PROCESS , ). , PROCESS V$SESSION - , . ps , PPID (Parent Process ID ) - SQL*Plus. - SQL*Plus fork() exec().
-
. -
Net8, -, MTS Net8. ,
Net8 -. -
. -
Recommended