Page 5
Contents at a Glance
Introduction 1
1 Databases, DBMS Principles, and the Relational Model 9
2 Logical Database Design and Normalization 19
3 Physical Database Design, Hardware, and Related Issues 29
4 The Oracle Solution 43
5 The Oracle Instance Architecture 53
6 The Oracle Database Architecture 73
7 Exploring the Oracle Environment 93
8 SQL*Plus for Administrators 119
9 Oracle Enterprise Manager 147
10 PL/SQL Fundamentals 173
11 Using Stored Subprograms and Packages 239
12 Using Supplied Oracle Database Packages 271
13 Import/Exportv 305
14 SQL*Loader 329
15 Designer/2000 for Administrators 351
16 Oracle Web Application Server 3.0 393
17 Web Application Server Components 401
18 Installing and Configuring the Oracle Web Application Server 423
19 Oracle Networking Fundamentals 445
20 Advanced Oracle Networking 467
Page 6
21 Managing Database Storage 487
22 Identifying Heavy Resource Users 531
23 Security Management 567
24 Backup and Recovery 585
25 Integrity Management 621
26 Parallel Query Management 649
27 Parallel Server Management 661
28 Distributed Database Management 703
29 Performance Tuning Fundamentals 727
30 Application Tuning 749
31 Tuning Memory 773
32 Tuning I/O 795
A Oracle on UNIX 815
B Oracle on Windows NT 829
C New Features of Oracle8 847
D Oracle Certification Programs 863
Index 879
Page 7
Table of Contents
Introduction
Who Should Use This Book? 2
What's in This Book 2
I Principles of Database Management Systems
1 Databases, DBMS Principles, and the Relational Model 9
Understanding Databases 10
Understanding a DBMS 11
Securing Data 11
Maintaining and Enforcing Integrity 12
Understanding Transactions 12
Communicating with the Database 13
Understanding an RDBMS 13
Using the Relational Model 14
Using Codd's Twelve Rules 16
2 Logical Database Design and Normalization 19
Entity-Relationship Modeling 20
Mapping ERDs to the Relational Model 23
Understanding Normalization 23
Using a Normalization Example 24
Continuing the Normal Form 27
3 Physical Database Design, Hardware, and Related Issues 29
Understanding Application Types 30
Using Quantitative Estimates 31
Transaction Analysis 31
Sizing Analysis 32
Denormalizing 32
Understanding the Storage Hierarchy and RAID 34
Understanding RAID 35
Understanding Bottlenecks in a DBMS 36
Making Your Platform Selection 37
Operating System Integration and General Memory/CPU Recommendations 38
Physical Design Principles and General Hardware Layout Recommendations 39
4 The Oracle Solution 43
Reviewing Oracle History 44
Oracle Is a DBMS 44
Is Oracle an RDBMS? 45
Revisiting the Physical Layout 46
Sizing for Oracle 48
Oracle's Future 48
II The Oracle Database Server
5 The Oracle Instance Architecture 53
Introduction 54
Defining the Instance 54
Creating the Instance 55
Understanding the Oracle Instance 55
The System Global Area (SGA) 57
The Oracle Background Processes 60
Understanding the Anatomy of a Transaction 66
Monitoring the Instance 67
Using the Trace Files 67 Tracking Through the Operating System 67
Page 8
Using the v$ Tables to Monitor Instance Structures 68
6 The Oracle Database Architecture 73
Defining the Database 74
The SYS and SYSTEM Schemas 74
Understanding the Components of the Database 75
System Database Objects 75
User Database Objects 84
Understanding Database Segments 85
Tables 85
Indexes 86
Rollback Segments 87
Table Clusters 88Hash Clusters 88
Using the Oracle Data Dictionary 89
Internal RDBMS (X$) Tables 89
Data Dictionary Tables 90
Dynamic Performance (V$) Views 90
Data Dictionary Views 90
Other Database Objects 90
Views 90
Sequences 91
Triggers 91
Synonyms 91
Database Links 92
Packages, Procedures and Functions 92
7 Exploring the Oracle Environment 93
Creating the Oracle Environment 94
Designing an Optimal Flexible Architecture 94
Creating Top-Level Directories 94
Using Application Directories 95
Managing Database Files 96
Naming Conventions 98
Putting It All Together 99
Configuring the Oracle Environment 101
Understanding the Oracle Software Environment 101
ORACLE_HOME Sweet Home 102
The ORACLE_HOME Directories 104
Other Important Configuration Files 105
Creating Your First Database 106
Creating the Initialization Parameter File 106
Creating the Instance 106
Creating the Database 108
Running Post-Database Creation Procedures 109
Creating the Supporting Database Objects 110
Securing the Default Accounts 111
Updating the System Configuration Files 111
Exploring the Oracle Database 111
Looking at the Database 112
Looking at the Database Segments 114
Looking at Miscellaneous Database Objects 114
Exploring an Unfamiliar Environment 115
Exploring the UNIX Environment 115
Exploring the Windows NT Environment 116
III Oracle Interfaces and Utilities
8 SQL*Plus for Administrators 119
Administering SQL*Plus 120
Using SQL*Plus Environment Variables 120
Invoking/Accessing SQL*Plus 122
Editing SQL Commands 122
Entering and Editing SQL*Plus Commands 124
Using Your Operating System Editor in SQL*Plus 125
Running SQL*Plus/SQL Commands 126
Page 9
Using the SQL*Plus COPY Command 130
Using SQL to Create SQL 132
Restricting a User's Privileges in SQL*Plus 135
Disabling a SQL Command 136
Reenabling a SQL Command 137
Disabling SET ROLE 139
Disabling Roles 139
Tracing SQL Statements 139
Understanding the Execution Plan 142
Using the AUTOTRACE Feature 143
9 Oracle Enterprise Manager 147
Understanding the Enterprise Manager Architecture 148
Getting Started 150
Using the Console Functions 152
Understanding the Integrated Console Functions 153
Surfing Databases with Navigator 154
Visualizing the Database World with Map 155
Automating Administration Tasks with Job 155
Responding to Change with Event Management 157
Using the Database Administration Tools 159
Managing Instances 160
Managing Schemas 161
Managing Security 163
Managing Storage 163
Executing SQL 165
Managing Recoverability 165
Managing Data 165
Managing Software 166
Using the Performance Pack 166
Monitoring and Tracking Performance 166
Tracing Database Activity 167
Managing Tablespaces 168
Monitoring Sessions 169
Using Oracle Expert 170
Using the Enterprise Value-Added Products 172
10 PL/SQL Fundamentals 173
Understanding PL/SQL 174
Understanding the PL/SQL Engine 175
Fitting into the Client/Server Environment 175
Fitting into the Client Environment 178
Server-Side Versus Client-Side Development 178
Adding PL/SQL to Your Toolbox 179
Energize Your SQL Scripts 180
Simplifying Database Administration 180
Getting Better Information With Less Hassle 180
Designing Better Database Applications 181
Getting Started with PL/SQL 181
Understanding the Schema of Things 182
Your Basic PL/SQL Development Environment 183
Accessing the Data Dictionary 184
Language Tutorial 185
Coding Conventions 185
Special Characters 186
PL/SQL's Block Structure 187
Declaring Variables 200
Assignment 214
Looping 214
Using Cursors 217
Handling Exceptions 224
Using Subprograms 230
11 Using Stored Subprograms and Packages 239
Defining Stored Subprograms and Packages 240
Page 10
Building and Using Stored Programs 240
Calling Stored Programs from SQL 244
Calling Stored Programs from PL/SQL 247
Debugging with Show Errors 248
Checking the State of a Stored Program or Package 255
Building and Using Packages 256
Using Package Parts 257
Comparing Public and Private Declarations 260
Knowing when To Use Packages 261
Referencing Package Elements 262
Creating a Real-World Example 263
Designing the Package Header 263
Designing the Package Body 266
Designing the Procedures 269
Wrapping Up the Package 269
12 Using Supplied Oracle Database Packages 271
About the Supplied Oracle Database Packages 272Interaction Within the Server 272
Interaction Beyond the Server 272
Getting More Information from Your Server 272
Describing Supplied Packages 272
Getting Started with the Oracle-Supplied Packages 274
Locating the DBMS Packages 275
Making Sure the Packages Are Installed Correctly 276
Hands-On with the Oracle-Supplied Packages 277
Monitoring Programs with DBMS_APPLICATION_INFO 277
Recompiling Packages with DBMS_DDL 279
Formatting Output with DBMS_OUTPUT 282
Sharing Data with DBMS_PIPE 284
Altering the Session with DBMS_SESSION 287
Managing the Shared Pool with DBMS_SHARED_POOL 289
Obtaining Segment Space Information with DBMS_SPACE 290
Enabling Dynamic SQL with DBMS_SQL 293
Running a Trace with DBMS_SYSTEM 297
Using Miscellaneous Utilities in DBMS_UTILITY 299
13 Import/Export 305
Understanding the Purpose and Capabilities of Import/Export 306
Understanding Behavior 307
Controlling and Configuring Import and Export 309
Taking Walkthroughs of Import and Export Sessions 319
Identifying Behavior When a Table Exists 319
Reorganizing a Fragmented Tablespace 320
Moving Database Objects from One Schema to Another 323
Multiple Objects and Multiple Object Types 324
Identifying Behavior When Tablespaces Don't Match 325
Moving Database Objects from One Tablespace to Another 325
Using the SHOW and INDEXFILE Options 326
14 SQL*Loader 329
Running SQL*Loader 330
Components of SQL*Loader 331
The Control File 331
SQL*Loader Input Data 332
SQL*Loader Outputs 332
Control File Syntax 333
Page 11
Looking at SQL*Loader Examples 334
Example 1Loading Fixed-Length Data 337
Example 2Loading Variable-Length Data 339
Example 3Loading with Embedded Data 341
Example 4Loading with Conditional Checking 342
Example 5Loading into a Table Partition 345
Conventional and Direct Path Loading 347
Using Conventional Path Load 348
Using Direct Path Load 349
Using SQL*Loader Performance Tips 350
15 Designer/2000 for Administrators 351
Designer/2000Oracle's Popular CASE Solution 352
Systems Development Life Cycle (SDLC) 352
Upper CASE Versus Lower CASE 353
Designer/2000 Overview 353
Designer/2000 Components 354
Understanding the Repository 355
Using the Diagrammers 356
Diagramming Techniques Used by Designer/2000 357
Generators 359
Module Regeneration Strategy 362
Oracle CASE Exchange 362
Waterfall-Oriented Methodology Using Designer/2000 363
Designer/2000 Administration 365
Understanding the Repository 365
Repository Sizing 366
Protecting the Designer/2000 Repository 366
Sharing and Transferring Objects 367
Referential Integrity Using the Repository 368
Version and Change Control 369
Migrating Applications 370
Moving Primary Access Controlled (PAC) Elements 371
Placing Designer/2000 Diagrams in Documents 372
Reverse-Engineering Using Designer/2000 373
Data Administration Configuration Using Designer/2000 374
Enhancing the Performance of Designer/2000 377
Optimizing the Client Machine 377
Optimizing the Network 378
Optimizing Designer/2000 378
Optimizing the Database Server 378
Application Programming Interface 379
Using the API 379
API Views and Packages 380
API Limitations 381
Troubleshooting Designer/2000 381
Checking Common Errors 381
Using Diagnostics and Tracing 382
Tips to Efficiently Generate Developer/2000 Applications from Designer/2000 384
Designer/2000 R 2.0 Features 387
Designer/2000 and Oracle8 388
IV Oracle on the Web
16 Oracle Web Application Server 3.0 393
Introducing the Oracle Web Application Server 394
Understanding the Network Computing Architecture (NCA) 394
Understanding the Oracle Web Application Server 395
The Web Listener 397
The Web Request Broker 397
Cartridges 397
Providing Basic Services with the Oracle Web Application Server 398
Page 12
Transaction Services 399
Inter-Cartridge Exchange Services 399
Persistent Storage Services 399
Authentication Services 399
17 Web Application Server Components 401
Examining the Web Listener 402
Getting Into More Details 402
Understanding Web Listener's Architecture 403
Memory Mapping of Files 403
Directory Mapping 403
Resolving the Domain Name 403
Web Listener Configuration Parameters 404
Examining the Web Request Broker 404
WRB Messaging 405
Third-Party Implementations 405
The WRB Dispatcher 406
IPC Support 407
The WRB Execution Engine (WRBX) 407
WRB Application Program Interface 407
Examining the Web Application Server SDK 408
The WRB Logger API 408
Understanding Cartridges and ICX 410
Using the PL/SQL Agent 421
18 Installing and Configuring the Oracle Web Application
Server 423
Installing Oracle Web Application Server for Sun Solaris 424
Hardware and Software Requirements 424
Understanding Web Application Server's Latest Installation Features 425
Relinking Your Executables After Installation 425
Identifying Product Dependencies 426
Implementing Pre-Installation Tasks 426
Setting Preliminary Environment Variables 427
Setting Permission Codes for Creating Files 428
Updating Your Environment from a Startup File 428
Designing the Directory Structure 428
Installation Notes on the Web Agent 429
Inside the OWA.CFG File 431
Using the Web Administrative Server 432
Installing the Oracle Web Application Server Option 432
Configuring Web Server 433
Installing the Web Application Server Developer's Toolkit 434
Improving Performance for Multiple Web Agent Installations 435
Using the Oracle Web Application Server Administration Utility 436
Setting Up a New Web Agent Service 436
Defining Configuration Parameters for the Web Listener 438
Troubleshooting 439
Other Helpful Notes on Installation 440
Attempting to Install Oracle Web Application Server on Windows NT 441
V Oracle Networking
19 Oracle Networking Fundamentals 445
Understanding Oracle Networking Product Features 446
Understanding the Administration and Management Components 447
Page 13
Network Naming Conventions 447
Understanding the Optional Security Extensions 448
SQL*Net and Net8 Architectures 448
Networking Protocol Stacks 449
Oracle Protocol Adapters 450
Transparent Network Substrate TNS) 450
Using the Open Systems Interconnection Reference Model 451
The Foundation 451
The Interface 452
The Protocol Stack 453
The TCP/IP Protocol Stack 453
Understanding SQL*Net Operations 456
Installing and Configuring SQL*Net 456
Planning the Network Design 456
Overview of Configuration Files 457
Preparing to Install SQL*Net 458
Installing 16-Bit SQL*Net (Non-OCSM)460
Installing 32-Bit SQL*Net 461
Using The Oracle Client Software Manager (OCSM) Component 463
Installing SQL*Net Using the Oracle Client Software Manager 464
20 Advanced Oracle Networking 467
Understanding Enterprise Networking 468
Configuring SQL*Net and Net8 468
Using the Oracle Tools to Configure Oracle Networking 469
Exploring the New Net8 Parameters 470
Administering the Oracle Listener 471
Troubleshooting the Client Configuration 472
Troubleshooting the Server 474
Understanding the Oracle Names Server 475
Names Server Configuration 475
Configuring Clients to Use the Names Server 476
Configuring the Names Server for Dynamic Discovery 477
Using the Advanced Networking Option 477
Enabling Data Encryption and Checksums 478
Understanding the Multi-Threaded Server 479
Multi-Threaded Server Architecture 480
Configuring the Multi-Threaded Server 480
Administering the Multi-Threaded Server 482
Using the Oracle Connection Manager 483
Configuring Connection Multiplexing 483
Configuring Multiple Protocol Support 484
VI Managing the Oracle Database
21 Managing Database Storage 487
Administering Database Objects 488
Managing Oracle Blocks 488
Understanding PCTFREE and PCTUSED 488
Managing Table Storage 489
Managing Indexes 491
Monitoring Temporary Tablespaces and Segments 492
Understanding Database Fragmentation 492
Understanding Fragmented Tablespaces 492
Dealing with Fragmented Tablespaces 495
Understanding Object Fragmentation 496
Page 14
Managing Rollback Segments 499
Understanding Rollback Segment Operation 500
Sizing Rollback Segments 501
Avoiding Rollback Segment Contention 503
Using the OPTIMAL Parameter 504
Performing Load Tests to Obtain Rollback Estimates 505
Identifying Storage Problems 506
Exploring Tablespaces 508
Checking on Tables 511
Optimizing Cluster Storage 512
Checking Indexes 513
Watching the Growth of Rollback Segments 513
Managing Temporary Tablespace 514
Administering a Growing Database 514
Monitoring Database Storage 515
Correcting Excessive Table Growth 518
Consolidating Clusters 518
Consolidating Indexes 519
Managing Tablespace Growth 519
Understanding Space Manager521Knowing the Features of Space Manager 521
Using the Output of Space Manager 522
Configuring and Using Space Manager 525
22 Identifying Heavy Resource Users 531
Resources That Make the Difference 532
Resource: CPU 533
Taking a CPU Overview 533
Finding Heavy CPU Users 536
Resource: File I/O (Disk Access) 549
Taking an I/O Overview 550
Finding Heavy I/O Users 555
Resource: Memory 557
Process Memory Breakup 559
Taking a Memory Overview 560
Finding Heavy Memory Users 562
23 Security Management 567
User Authentication 568
Database Authentication 568
External Authentication 570
Enterprise Authentication 571
Database Privilege Management 572
Understanding Security Roles 578
Understanding Administration 578
Monitoring Database Assets 579
Auditing Logins 579
Auditing Database Actions 580
Auditing DML on Database Objects 581
Administering Auditing 581
Protecting Data Integrity 582
Hardware Security 582
Recovering Lost Data 583
Operating System Backup 583
Logical Backup 584
24 Backup and Recovery 585
Backup Strategy 586
Understanding Physical and Logical Data Loss 587
Using Logical Backups 590
Full Logical Backups 593
Logical Backups of Specific User Schemas 594
Logical Backups of Specific Tables 594
Using Cold Physical Backups 595
Command-Line_Driven Cold Physical Backups 595
Desktop-Driven Cold Backups 598
Using Hot Physical Backups 600
Understanding the Reasoning 600
Command-Line_Driven Hot Physical Backups 601
Desktop-Driven Hot Physical Backups 603
Restoring from Logical Backups 604
Page 15
Fully Restoring from a Logical Backup 607
Partial Restores with Logical Backups 608
Using Physical Recovery 609
Physically Re-creating a Database 609
Complete Recovery 611
Incomplete Recovery 614
Testing Strategies 618
25 Integrity Management 621
Introduction 622
Implementing Locks 622
Need for Locking 622
Locking Concepts 623
Analyzing v$lock 627
Case 1: A Table Locked Exclusively 628
Case 2: Session Updating a Row of an Exclusively Locked Table 629 Case 3: A Session Trying to Update an Updated Row by Another Session 630
Monitoring Locks on the System 631
Avoiding Locks: Possible Solutions 635
Implementing Locks with Latches 638
Functioning of Latches 638
Analyzing Views Related to Latches 639
Checking for Latch Contention 640
Tuning Some Important Latches 642
VII Parallel and Distributed Environments
26 Parallel Query Management 649
Introduction 650
Parallel Load 650
Parallel Recovery 651
Parallel Propagation (Replication) 651
Parallel SQL Execution 651
SQL Operations That Can Be Parallelized 653
Understanding the Degree of Parallelism 654
Determining the Degree of Parallelism 654
When Enough Query Slaves Are Not Available 656
Understanding the Query Server Processes 656
Analyzing Objects to Update Statistics 656
Understanding the 9,3,1 Algorithm 657
Understanding Parallel DML 657
Parallel Execution in OPS Environment 658
Tuning Parallel Query 659
27 Parallel Server Management 661
Understanding the Benefits of Parallel Server 662
Using Single Instance Versus Parallel Server Databases 663
Using Vendor Interfaces 664
Using the Parallel Cache Management Lock Process 664
Using Parallel Cache Management Lock Parameters 667
Parallel Server Initialization Parameters 675
Rollback Segment Considerations for Parallel Server 678
Redo Logs and Parallel Server Instances 679
Using Freelist Groups to Avoid Contention 680
Determining when Parallel Server Can Solve a Business Need 683
Designing a Parallel Database for Failover 684
Page 16
Designing a Parallel Database for Scalability 686
Application and Functional Partitioning 687
Department/Line of Business Partitioning 689
Physical Table Partitioning 690
Transaction Partitioning 691
Indexes and Scalability Considerations 691
Sequence Generators and Multiple Instances 692
Special Considerations for Parallel Server Creation 693
Monitoring and Tuning Parallel Server 695
Monitoring V$LOCK_ACTIVITY 696
Monitoring V$BH 698
Monitoring V$CACHE and V$PING 699
Tuning Strategy for Parallel Server 700
28 Distributed Database Management 703
Understanding Distributed Databases 704
Describing Each Type of Database 704
Naming Databases 705
Achieving Transparency 705
Using Oracle Security Server and Global Users 706
SQL*Net 707
Using a Distributed Database 707
Setting Up a Distributed System 708
Identifying Potential Problems with a Distributed System 712
Tuning a Distributed System 712
Using Distributed Transactions 713
Understanding Two-Phased Commit 713
Dealing with In-Doubt Transactions 714
Understanding Read-Only Snapshots 717
Setting Up a Snapshot 717
Using Snapshot Refresh Groups 719
Identifying Potential Problems with a Snapshot 719
Understanding Limitations of Snapshots 722
Tuning Snapshots 723
Using Initialization Parameters for Snapshots 724
VIII Performance Tuning
29 Performance Tuning Fundamentals 727
Revisiting Physical Design 728
Understanding Why You Tune 729
Knowing the Tuning Principles 730
Tuning Principle 1 730
Tuning Principle 2 731
Tuning Principle 3 732
Tuning Principle 4 732
Tuning Principle 5 733
Tuning Goals 734
Using the Return on Investment Strategy 735
Step 1: Do a Proper Logical Design 735
Step 2: Do a Proper Physical Design 735
Step 3: Redesign If Necessary 736
Step 4: Write Efficient Application Code 736
Step 5: Rewrite Code If Necessary 736
Step 6: Tune Database Memory Structures 736
Step 7: Tune OS Memory Structures If Necessary 736
Step 8: Tune Database I/O 737
Step 9: Tune OS I/O If Necessary 737
Step 10: Tune the Network If Necessary 737
Step 11: Tune the Client(s) If Necessary 738
Step 12: If All Else Fails, Consider More Exotic Solutions 738
Page 17
Revisiting Application Types 741
OLTP Issues 741
DSS Issues 742
Other Considerations for both OLTP and DSS 743
Understanding Benchmarks 743
Using Oracle Diagnostic Tools 745
Using SQL_TRACE and TKPROF 745
Using EXPLAIN PLAN 745
Using the V$ Dynamic Performance Views 745
Using the Server Manager Monitor 746
Using the Performance Pack of Enterprise Manager 746
Using utlbstat/utlestat and report.txt 746
Using Third-Party Products 747
30 Application Tuning 749
Motivation 750
Understanding the Optimizer 751
Ranking Access Paths 752
Analyzing Queries to Improve Efficiency 754
Specifying Optimizer Mode 755
Understanding Optimization Terms 758
SQL Trace and tkprof 759
Understanding EXPLAIN PLAN 762
Identifying Typical Problems 764
The Proper Use of Indexes 764
Dealing with Typical Problems in Application Tuning 766
Rewriting Queries 768
Using Set Operators 769
Using Boolean Conversions 769
Introducing New Index Features for Oracle8 770
Using Index Partitioning 770
Using Equi-Partitioned, Local Indexes 770
Using a Partition-Aware Optimizer 771
Using Index-Only Tables 771
Using Reverse Key Indexes 771
31 Tuning Memory 773
Introduction 774
UTLBSTAT/UTLESTAT 774
Interpreting Results 775
Reviewing the Report File 776
Tuning the Shared Pool 776
Guidelines for Improving the Performance of the Library Cache 778
MultiThreaded Server Issues 781
Tuning the Database Buffer Cache 782
Tuning Sorts 786
What Triggers Sorts? 787
Parameters for Sorts 788
Other Fine-Tuning Parameters for Sorts 790
Tuning the MultiThreaded Server (MTS) 791
Tuning Locks 792
Operating System Integration Revisited 793
32 Tuning I/O 795
Tuning Tablespaces and Datafiles 796
Partitioning Tablespaces 797
Clustering 798
Monitoring 801
Tuning Blocks and Extents 802
Using Preallocation 802
Using Oracle Striping 803
Avoiding Fragmentation 804
Tuning Rollback Segments 807
Tuning Redo Logs 808
Oracle8 New I/O Features 810
Partition-Extended Table Names 810
Direct Load Inserts 811
Page 18
Appendixes
A Oracle on UNIX 815
Solaris 816
A UNIX Primer for Oracle DBAs 816
Shells and Process Limits 816
Soft and Hard Links 817
Named Pipes and Compression 817
Temporary Directories 818
The SA and DBA Configuration on UNIX 818
Setting Up the dba Group and OPS$ Logins 819
Using the oratab File and dbstart/dbshut Scripts 819
Using the oraenv Scripts and Global Logins 820
Configuring Shared Memory and Semaphores 821
Understanding the OFA 822
Comparing Raw Disk and UFS 824
Using Additional UNIX Performance Tuning Tips 825
B Oracle on Windows NT 829
Why Choose Oracle on Windows NT? 830
Windows NT File Systems 831
FAT Features 831
NTFS Features 832
Understanding Windows NT Administration 833
Associated Windows NT Tools 833
Windows NT Services and Oracle Instances 835
Installing Oracle Server on the Windows NT Server 837
Before Installing 837
Installation Instructions 837
Before Upgrading 838
Upgrade Instructions 838
Creating an Instance on Windows NT 839
Creating INITsid.ora 839
Creating a Service 839
Tuning and Optimizing Oracle on Windows NT 841
Adjusting Windows NT Configurations 841
Storing Oracle Configurations 842
Learning from Oracle Windows NT 842
Knowing the Limitations 842
Installing Enterprise Manager 843
Accessing Large File Sizes on Windows NT 843
Exporting Directly to Tape on Windows NT 843
Trying Automation on Windows NT 843
The UTL_FILE Package 84
Supporting Oracle8 on Windows NT 845
C New Features of Oracle8 847
Changing from Oracle7 to Oracle8 848
Enhanced Database Datatypes 848
New Database Datatypes 849
Enhanced ROWID Format 850
Heterogeneous Services 850
Internal Changes to the Database Engine 850
Supporting Large Databases 851
Partitioned Tables and Indexes 851
Direct Load Insert and NOLOGGING 852
Enhanced Parallel Processing Support 853
Index Fast Full Scan 853
Supporting Object-Relational Features 853
Abstract Datatypes 854
Variable Arrays 855
Nested Tables 855
Object Views 856
Administering Oracle8 857
Enhancements to Password Administration 857
Page 19
Backup and Recovery Optimizations 857
shutdown transactional 858
Disconnect Session Post Transactional 858
Minimizing Database Fragmentation 858
New Replication Options 858
Developing Applications 858
External Procedures 858
Index-Only Tables 859
Reverse Key Indexes 859
Instead Of Triggers 860
Data Integrity Management 860
D Oracle Certification Programs 863
Benefiting from Technical Certification 864
The Oracle Certified Professional Program 864
Becoming an Oracle Certified Database Administrator 865
Describing the Program 865
Preparing for the Tests 866
The Certified Database Administrator Program 874
Description of the Program 874
Index 879
Page 20