1427
Oracle для профессионалов Том Кайт торгово-издательский дом DiaSoft Москва • Санкт-Петербург • Киев 2003

Oracle для профессионалов

Embed Size (px)

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, .

    ,

    , . , -

    , ,

    , [email protected].

    -

    . , -

    .

    ,

    :

    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 . - , :

    [email protected]> select * from dual;

    D

    X

    [email protected]> select * from dual where null=null;

    no rows selected

    [email protected]> 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, -, .

    , -

    . -

    , -

    , . ""

    , :

    [email protected]> create profile one_session limit sessions_per_user 1;Profile created.

    [email protected]> alter user scott profile one_session;User altered.

    [email protected]> 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. - ,

    , ( ) . ( ) , , -, :

    [email protected]> alter session set cursor_sharing=force;Session altered.

    [email protected]> 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

    [email protected]> alter session set cursor_sharing=exact;Session altered.

    [email protected]> 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/[email protected]

  • 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:

    [email protected]> 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

    [email protected]> !/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

    [email protected]> !/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 -. -

    . -