BOOK
SUMMARY
Items Found: 335
- Chapter 1: Relational Database Systems and Oracle
- 1.1 Information Needs and Information Systems
- 1.2 Database Design
- Entities and Attributes
- Generic vs. Specific
- Redundancy.
- Consistency,Integrity,and Integrity Constraints
- Data Modeling Approach,Methods,and Techniques
- Semantics
- Information Systems Terms Review.
- 1.3 Database Management Systems
- DBMS Components
- Kernel
- Data Dictionary
- Query Languages
- DBMS Tools
- Database Applications
- DBMS Terms Review
- 1.4 Relational Database Management Systems
- 1.5 Relational Data Structures.
- Tables,Columns,and Rows
- The Information Principle
- Datatypes
- Keys
- Missing Information and Null Values
- Constraint Checking
- Predicates and Propositions
- Relational Data Structure Terms Review
- 1.6 Relational Operators
- 1.7 How Relational Is My DBMS?
- 1.8 The Oracle Software Environment
- 1.9 Case Tables
- The ERM Diagram of the Case
- Table Descriptions.
- Chapter 2: Introduction to SQL,AQL*Plus,and SQL Develop
- 2.1 Overview of SQL
- Data Definition
- Data Manipulation and Transactions
- Retrieval
- Security
- Privileges and Roles
- GRANT and REVOKE.
- 2.2 Basic SQL Concepts and Terminology
- Constants (Literals)
- Variables
- Operators,Operands,Conditions,and Expressions
- Arithmetic Operators
- The Alphanumeric Operator: Concatenation
- Comparison Operators
- Logical Operators
- Expressions
- Functions
- Database Object Naming
- Comments
- Reserved Words.
- 2.3 Introduction to SQL*Plus.
- Entering Commands
- Using the SQL Buffer
- Using an External Editor
- Using the SQL*Plus Editor
- Using SQL Buffer Line Numbers
- Using the Ellipsis
- SQL*Plus Editor Command Review
- Saving Commands
- Running SQL*Plus Scripts
- Specifying Directory Path Specifications
- Adjusting SQL*Plus Settings
- Spooling a SQL*Plus Session
- Describing Database Objects
- Executing Commands from the Operating System
- Clearing the Buffer and the Screen
- SQL*Plus Command Review
- 2.4 Introduction to SQL Developer
- Installing and Configuring SQL Developer
- Connecting to a Database
- Exploring Objects
- Run Statement
- Run Script
- Saving Commands to a Script
- Running a Script
- Chapter 3: Data Definition,Part I
- 3.1 Schemas and Users
- 3.2 Table Creation
- 3.3 Datatypes
- 3.4 Commands for Creating the Case Tables
- 3.5 The Data Dictionary
- Chapter 4: Retrieval: The Basics
- 4.1 Overview of the SELECT Command
- 4.2 The SELECT Clause
- Column Aliases
- The DISTINCT Keyword
- Column Expressions
- The DUAL Table
- Null Values in Expressions
- 4.3 The WHERE Clause
- 4.4 The ORDER BY Clause
- 4.5 AND,OR,and NOT
- The OR Operator
- The AND Operator and Operator Precedence Issues
- The NOT Operator
- 4.6 BETWEEN,IN,and LIKE
- The BETWEEN Operator
- The IN Operator
- The LIKE Operator
- 4.7 CASE Expressions
- 4.8 Subqueries.
- The Joining Condition
- When a Subquery Returns Too Many Values
- Comparison Operators in the Joining Condition
- When a Single-Row Subquery Returns More Than One Row
- 4.9 Null Values
- Null Value Display
- The Nature of Null Values
- The IS NULL Operator
- Null Values and the Equality Operator
- Null Value Pitfalls
- 4.10 Truth Tables
- 4.11 Exercises
- Chapter 5: Retrieval: Functions
- 5.1 Overview of Functions
- 5.2 Arithmetic Functions.
- 5.3 Text Functions
- 5.4 Regular Expressions
- Regular Expression Operators and Metasymbols.
- Regular Expression Function Syntax
- Influencing Matching Behavior
- REGEXP_INSTR Return Value
- REGEXP_LIKE
- REGEXP_INSTR
- REGEXP_SUBSTR
- REGEXP_REPLACE
- 5.5 Date Functions
- EXTRACT
- ROUND and TRUNC
- MONTHS_BETWEEN and ADD_MONTHS
- NEXT_DAY and LAST_DAY
- 5.6 General Functions
- GREATEST and LEAST
- NVL
- DECODE
- 5.7 Conversion Functions
- TO_NUMBER and TO_CHAR
- Conversion Function Formats
- Datatype Conversion
- CAST
- 5.8 Stored Functions.
- 5.9 Exercises
- Chapter 6: Data Manipulation
- 6.1 The INSERT Command
- Standard INSERT Commands
- INSERT Using Subqueries
- 6.2 The UPDATE Command
- 6.3 The DELETE Command
- 6.4 The MERGE Command
- 6.5 Transaction Processing
- 6.6 Locking and Read Consistency
- Locking
- Read Consistency
- Chapter 7: Data Definition,Part II
- 7.1 The CREATE TABLE Command
- 7.2 More on Datatypes
- Character Datatypes
- Comparison Semantics
- Column Data Interpretation
- Numbers Revisited
- 7.3 The ALTER TABLE and RENAME Commands
- 7.4 Constraints
- Out-of-Line Constraints
- Inline Constraints
- Constraint Definitions in the Data Dictionary
- Case Table Definitions with Constraints
- A Solution for Foreign Key References: CREATE SCHEMA
- Deferrable Constraints.
- 7.5 Indexes
- Index Creation
- Unique Indexes
- Bitmap Indexes
- Function-Based Indexes
- Index Management
- 7.6 Performance Monitoring with SQL Developer AUTOTRACE
- 7.7 Sequences
- 7.8 Synonyms
- 7.9 The CURRENT_SCHEMA Setting
- 7.10 The DROP TABLE Command
- 7.11 The TRUNCATE Command
- 7.12 The COMMENT Command
- 7.13 Exercises
- Chapter 8: Retrieval: Multiple Tables and Aggregation
- 8.1 Tuple Variables
- 8.2 Joins
- Cartesian Products
- Equijoins
- Non-equijoins
- Joins of Three or More Tables
- Self-Joins
- 8.3 The JOIN Clause
- Natural Joins
- Equijoins on Columns with the Same Name
- 8.4 Outer Joins
- Old Oracle-Specific Outer Join Syntax
- New Outer Join Syntax
- Outer Joins and Performance
- 8.5 The GROUP BY Component
- Multiple-Column Grouping
- GROUP BY and Null Values
- 8.6 Group Functions
- Group Functions and Duplicate Values
- Group Functions and Null Values
- Grouping the Results of a Join
- The COUNT(*) Function
- Valid SELECT and GROUP BY Clause Combinations
- 8.7 The HAVING Clause
- The Difference Between WHERE and HAVING
- HAVING Clauses Without Group Functions.
- A Classic SQL Mistake
- Grouping on Additional Columns
- 8.8 Advanced GROUP BY Features
- GROUP BY ROLLUP
- GROUP BY CUBE
- CUBE,ROLLUP,and Null Values
- The GROUPING Function
- The GROUPING_ID Function.
- 8.9 Partitioned Outer Joins
- 8.10 Set Operators.
- 8.11 Exercises
- Chapter 9: Retrieval: Some Advanced Features.
- 9.1 Subqueries Continued
- The ANY and ALL Operators
- Defining ANY and ALL.
- Rewriting SQL Statements Containing ANY and ALL
- Correlated Subqueries
- The EXISTS Operator
- Subqueries Following an EXISTS Operator
- EXISTS,IN,or JOIN?
- NULLS with NOT EXISTS and NOT IN
- 9.2 Subqueries in the SELECT Clause
- 9.3 Subqueries in the FROM Clause
- 9.4 The WITH Clause
- 9.5 Hierarchical Queries
- START WITH and CONNECT BY
- LEVEL,CONNECT_BY_ISCYCLE,and CONNECT_BY_ISLEAF.
- CONNECT_BY_ROOT and SYS_CONNECT_BY_PATH
- Hierarchical Query Result Sorting
- 9.6 Analytical Functions.
- Partitions
- Function Processing
- 9.7 Flashback Features
- AS OF
- VERSIONS BETWEEN.
- FLASHBACK TABLE
- 9.8 Exercises
- Chapter 10: Views
- 10.1 What Are Views?.
- 10.2 View Creation.
- Creating a View from a Query.
- Getting Information About Views from the Data Dictionary
- Replacing and Dropping Views.
- 10.3 What Can You Do with Views?.
- Simplifying Data Retrieval
- Maintaining Logical Data Independence
- Implementing Data Security
- 10.4 Data Manipulation via Views
- Updatable Join Views
- Nonupdatable Views.
- The WITH CHECK OPTION Clause.
- Disappearing Updated Rows
- Inserting Invisible Rows
- Preventing These Two Scenarios
- 10.5 Data Manipulation via Inline Views
- 10.6 Views and Performance.
- 10.7 Materialized Views
- Properties of Materialized Views.
- Query Rewrite
- 10.8 Exercises
- Chapter 11: Writing and Automating SQL*Plus Scripts
- 11.1 SQL*Plus Variables
- SQL*Plus Substitution Variables
- SQL*Plus User-Defined Variables
- Implicit SQL*Plus User-Defined Variables
- User-Friendly Prompting
- SQL*Plus System Variables
- 11.2 Bind Variables
- Bind Variable Declaration
- Bind Variables in SQL Statements
- 11.3 SQL*Plus Scripts
- Script Execution.
- Script Parameters
- SQL*Plus Commands in Scripts.
- The login.sql Script.
- 11.4 Report Generation with SQL*Plus
- The SQL*Plus COLUMN Command
- The SQL*Plus TTITLE and BTITLE Commands
- The SQL*Plus BREAK Command.
- The SQL*Plus COMPUTE Command
- The Finishing Touch: SPOOL.
- 11.5 HTML in SQL*Plus
- HTML in SQL*Plus.
- 11.6 Building SQL*Plus Scripts for Automation
- What Is a SQL*Plus Script?.
- Capturing and Using Input Parameter Values.
- Passing Data Values from One SQL Statement to Another
- Mechanism 1: The NEW_VALUE Clause
- Mechanism 2: Bind Variables
- Handling Error Conditions
- 11.7 Exercises
- Chapter 12: Object-Relational Features.
- 12.1 More Datatypes
- Collection Datatypes.
- Methods
- 12.2 Varrays.
- Creating the Array.
- Populating the Array with Values
- Querying Array Columns.
- 12.3 Nested Tables
- Creating Table Types.
- Creating the Nested Table
- Populating the Nested Table
- Querying the Nested Table
- 12.4 User-Defined Types
- Creating User-Defined Types
- Showing More Information with DESCRIBE
- 12.5 Multiset Operators
- Which SQL Multiset Operators Are Available?
- Preparing for the Examples
- Using IS NOT EMPTY and CARDINALITY.
- Using POWERMULTISET
- Using MULTISET UNION
- Converting Arrays into Nested Tables
- 12.6 Exercises
- Appendix A: The Seven Case Tables
- ERM Diagram
- Table Structure Descriptions
- Columns and Foreign Key Constraints
- Hierarchical Employees Overview
- Course Offerings Overview
BOOK
SUMMARY
Items Found: 316
- Chapter 1: Relational Database Systems and Oracle
- 1.1 Information Needs and Information Systems
- 1.2 Database Design
- Entities and Attributes
- Generic vs. Specific
- Redundancy
- Consistency,Integrity,and Integrity Constraints
- Data Modeling Approach,Methods,and Techniques
- Semantics
- Information Systems Terms Review
- 1.3 Database Management Systems
- DBMS Components
- Database Applications
- DBMS Terms Review
- 1.4 Relational Database Management Systems
- 1.5 Relational Data Structures
- Tables,Columns,and Rows
- The Information Principle
- Datatypes
- Keys
- Missing Information and Null Values
- Constraint Checking
- Predicates and Propositions
- Relational Data Structure Terms Review
- 1.6 Relational Operators
- 1.7 How Relational Is My DBMS?
- 1.8 The Oracle Software Environment
- 1.9 Case Tables
- The ERM Diagram of the Case
- Table Descriptions
- Chapter 2: Introduction to SQL and SQL Developer
- 2.1 Overview of SQL
- Data Definition
- Data Manipulation and Transactions
- Retrieval
- Security
- 2.2 Basic SQL Concepts and Terminology
- Constants (Literals)
- Variables
- Operators,Operands,Conditions,and Expressions
- Functions
- Database Object Naming
- Comments
- Reserved Words
- 2.3 Introduction to SQL Developer
- Installing and Configuring SQL Developer
- Connecting to a Database
- Exploring Objects
- Schema Browser
- Entering Commands
- Browsing table data
- Run Statement
- Run Script
- Saving Commands to a Script
- Running a Script
- Exporting Your Data
- User-Defined Reports
- Tuning Your SQL
- Writing PL/SQL
- Data Modeller
- Chapter 3: Data Definition,Part I
- 3.1 Schemas and Users
- 3.2 Table Creation
- 3.3 Datatypes
- Number Datatype
- Character Datatype
- Date Datatype
- 3.4 Commands for Creating the Case Tables
- 3.5 The Data Dictionary
- Chapter 4: Retrieval: The Basics
- 4.1 Overview of the SELECT Command
- 4.2 The SELECT Clause
- Column Aliases
- The DISTINCT Keyword
- Column Expressions
- 4.3 The WHERE Clause
- 4.4 The ORDER BY Clause
- 4.5 AND,OR,and NOT
- The OR Operator
- The AND Operator and Operator Precedence Issues
- The NOT Operator
- 4.6 BETWEEN,IN,and LIKE
- The BETWEEN Operator
- The IN Operator
- The LIKE Operator
- 4.7 CASE Expressions
- 4.8 Subqueries
- The Joining Condition
- When a Subquery Returns Too Many Values
- Comparison Operators in the Joining Condition
- When a Single-Row Subquery Returns More Than One Row
- 4.9 Null Values
- Null Value Display
- The Nature of Null Values
- The IS NULL Operator
- Null Values and the Equality Operator
- Null Value Pitfalls
- 4.10 Truth Tables
- 4.11 Exercises
- Chapter 5: Retrieval: Functions
- 5.1 Overview of Functions
- 5.2 Arithmetic Functions
- 5.3 Text Functions
- 5.4 Regular Expressions
- Regular Expression Operators and Metasymbols
- Regular Expression Function Syntax
- REGEXP_LIKE
- REGEXP_INSTR
- REGEXP_SUBSTR
- REGEXP_REPLACE
- 5.5 Date Functions
- EXTRACT
- ROUND and TRUNC
- MONTHS_BETWEEN and ADD_MONTHS
- NEXT_DAY and LAST_DAY
- 5.6 General Functions
- GREATEST and LEAST
- NVL
- DECODE
- SAMPLE Function
- 5.7 Conversion Functions
- TO_NUMBER and TO_CHAR
- Conversion Function Formats
- Datatype Conversion
- CAST
- 5.8 Stored Functions
- Function in WITH Clause of Query
- 5.9 Exercises
- Chapter 6: Data Manipulation
- 6.1 The INSERT Command
- Standard INSERT Commands
- INSERT Using Subqueries
- 6.2 The UPDATE Command
- 6.3 The DELETE Command
- 6.4 The MERGE Command
- 6.5 Transaction Processing
- 6.6 Locking and Read Consistency
- Locking
- Read Consistency
- Terms Review
- Chapter 7: Data Definition,Part II
- 7.1 The CREATE TABLE Command
- 7.2 More on Datatypes
- Character Datatypes
- Numbers Revisited
- 7.3 The ALTER TABLE and RENAME Commands
- 7.4 Constraints
- Out-of-Line Constraints
- Inline Constraints
- Constraint Definitions in the Data Dictionary
- Case Table Definitions with Constraints
- A Solution for Foreign Key References: CREATE SCHEMA
- Deferrable Constraints
- 7.5 Indexes
- Index Creation
- Index Management
- 7.6 Performance Monitoring with SQL Developer AUTOTRACE
- 7.7 Sequences
- 7.8 Synonyms
- 7.9 The CURRENT_SCHEMA Setting
- 7.10 The DROP TABLE Command
- 7.11 The TRUNCATE Command
- 7.12 The COMMENT Command
- 7.13 Exercises
- Chapter 8: Retrieval: Multiple Tables and Aggregation
- 8.1 Tuple Variables
- 8.2 Joins
- Cartesian Products
- Equijoins
- Non-equijoins
- Joins of Three or More Tables
- Self-Joins
- 8.3 The JOIN Clause
- Natural Joins
- Equijoins on Columns with the Same Name
- 8.4 Outer Joins
- Old Oracle-Specific Outer Join Syntax
- New Outer Join Syntax
- Outer Joins and Performance
- 8.5 The GROUP BY Component
- Multiple-Column Grouping
- GROUP BY and Null Values
- 8.6 Group Functions
- Group Functions and Duplicate Values
- Group Functions and Null Values
- Grouping the Results of a Join
- The COUNT(*) Function
- Valid SELECT and GROUP BY Clause Combinations
- 8.7 The HAVING Clause
- The Difference Between WHERE and HAVING
- HAVING Clauses Without Group Functions
- A Classic SQL Mistake
- Grouping on Additional Columns
- 8.8 Advanced GROUP BY Features
- GROUP BY ROLLUP
- GROUP BY CUBE
- CUBE,ROLLUP,and Null Values
- 8.9 Partitioned Outer Joins
- 8.10 Set Operators
- 8.11 Exercises
- Chapter 9: Retrieval: Some Advanced Features
- 9.1 Subqueries Continued
- The ANY and ALL Operators
- Correlated Subqueries
- The EXISTS Operator
- 9.2 Subqueries in the SELECT Clause
- 9.3 Subqueries in the FROM Clause
- 9.4 The WITH Clause
- 9.5 Hierarchical Queries
- START WITH and CONNECT BY
- LEVEL,CONNECT_BY_ISCYCLE,and CONNECT_BY_ISLEAF
- CONNECT_BY_ROOT and SYS_CONNECT_BY_PATH
- Hierarchical Query Result Sorting
- 9.6 Analytic Functions
- Partitions
- Function Processing
- 9.7 Row Limiting
- 9.8 Flashback Features
- AS OF
- VERSIONS BETWEEN
- FLASHBACK TABLE
- 9.9 Exercises
- Chapter 10: Views
- 10.1 What Are Views?
- 10.2 View Creation
- Creating a View from a Query
- Getting Information about Views from the Data Dictionary
- Replacing and Dropping Views
- 10.3 What Can You Do with Views?
- Simplifying Data Retrieval
- Maintaining Logical Data Independence
- Implementing Data Security
- 10.4 Data Manipulation via Views
- Updatable Join Views
- Nonupdatable Views
- The WITH CHECK OPTION Clause
- 10.5 Data Manipulation via Inline Views
- 10.6 Views and Performance
- 10.7 Materialized Views
- Properties of Materialized Views
- Query Rewrite
- 10.8 Global Temporary Table
- 10.9 Invisible Columns
- 10.10 Exercises
- Chapter 11: SQL*Plus Basics and Scripting
- 11.1 Introduction to SQL*Plus
- Using the SQL Buffer
- Using an External Editor
- Using the SQL*Plus Editor
- Saving Commands
- Running SQL*Plus Scripts
- Specifying Directory Path Specifications
- Adjusting SQL*Plus Settings
- Spooling a SQL*Plus Session
- Describing Database Objects
- Executing Commands from the Operating System
- Clearing the Buffer and the Screen
- SQL*Plus Command Review
- 11.2 SQL*Plus Variables
- SQL*Plus Substitution Variables
- SQL*Plus User-Defined Variables
- SQL*Plus System Variables
- 11.3 Bind Variables
- Bind Variable Declaration
- Bind Variables in SQL Statements
- 11.4 SQL*Plus Scripts
- Script Execution
- Script Parameters
- SQL*Plus Commands in Scripts
- The login.sql Script
- 11.5 Report Generation with SQL*Plus
- The SQL*Plus COLUMN Command
- The SQL*Plus TTITLE and BTITLE Commands
- The SQL*Plus BREAK Command
- The SQL*Plus COMPUTE Command
- The Finishing Touch: SPOOL
- 11.6 HTML in SQL*Plus
- HTML in SQL*Plus
- 11.7 Building SQL*Plus Scripts for Automation
- What Is a SQL*Plus Script?
- Capturing and Using Input Parameter Values
- Passing Data Values from One SQL Statement to Another
- Handling Error Conditions
- SQL*Plus Error Logging
- 11.8 Exercises
- Chapter 12: Object-Relational Features
- 12.1 More Datatypes
- Collection Datatypes
- Methods
- 12.2 Varrays
- Creating the Array
- Populating the Array with Values
- Querying Array Columns
- 12.3 Nested Tables
- Creating Table Types
- Creating the Nested Table
- Populating the Nested Table
- Querying the Nested Table
- 12.4 User-Defined Types
- Creating User-Defined Types
- Showing More Information with DESCRIBE
- 12.5 Multiset Operators
- Which SQL Multiset Operators Are Available?
- Preparing for the Examples
- Using IS NOT EMPTY and CARDINALITY
- Using POWERMULTISET
- Using MULTISET UNION
- Converting Arrays into Nested Tables
- 12.6 Exercises
- Appendix A: The Seven Case Tables
- ERM Diagram
- Table Structure Descriptions
- Columns and Foreign Key Constraints
- Hierarchical Employees Overview
- Course Offerings Overview
- Appendix B: Answers to the Exercises
BOOK
SUMMARY
Items Found: 277
- Chapter 1: Introduction to Cloud Computing and the Application Project
- 1.1 An Introduction to Cloud Computing
- 1.2 Public vs. Private Cloud
- 1.3 What Is Accounting?
- 1.4 Accounting System
- 1.5 General Ledger
- 1.6 The Cloud Accountant General Ledger Project
- 1.7 Development Environment
- 1.8 Application Segments
- Chapter 2: Application Navigation
- 2.1 Create the Main Application Menu
- 2.2 Modify/Add Navigation Bar Entries
- Chapter 3: Companies
- 3.1 Create Application Tables
- 3.2 Create Pages for Company Setup
- Chapter 4: Fiscal Year
- 4.1 Create List of Values
- 4.2 Create Page and Parameters Region
- 4.3 Create a Fiscal Year Grid
- 4.4 Add Items to Hold Months/Dates
- 4.5 Create Buttons to Generate,Save,and Remove a Fiscal Year
- 4.6 Generate Fiscal Year Process
- 4.7 Save Fiscal Year Process
- 4.8 Delete Fiscal Year Process
- 4.9 Fetch Fiscal Year Dynamic Action
- 4.10 Create Validation: Check Transaction
- 4.11 Create Branch
- 4.12 Dynamic Actions to Hide Buttons
- 4.13 Test Your Work
- Chapter 5: Voucher Types
- 5.1 Create List of Values
- 5.2 Create Pages for Voucher Types Setup
- 5.2.1 Convert Text Item to Radio Group
- 5.3 Create Validation: Check Transaction
- 5.4 Test Your Work
- Chapter 6: Application Segments
- 6.1 Create LOVs
- 6.2 Create Segments Setup Pages
- 6.3 Modify Segments Form
- 6.4 Add Tree View Region
- 6.5 Create Buttons
- 6.6 Create Validations
- 6.7 Create Branch
- 6.8 Test Your Work
- Chapter 7: User Groups
- 7.1 Page and Parameters Region
- 7.2 Buttons
- 7.3 New Group Process
- 7.4 Delete Group Button
- 7.5 Delete Group Process
- 7.6 Group Privileges Region
- 7.7 Tree Region
- 7.8 Add Classic Report Region
- 7.9 Dynamic Action to Refresh Region
- 7.10 Add Button and a Process to Allow/Revoke Segment Access
- Right
- 7.11 Test Your Work
- Chapter 8: Create Users
- 8.1 Create Pages
- 8.2 Create/Modify Items
- 8.3 Create a Process to Set Company,Year,and Month
- 8.4 Test Your Work
- Chapter 9: Reset Password
- 9.1 Add Custom Functions
- 9.2 Create Page
- 9.3 Check User ID and Match Password Validations
- 9.4 Update Password Process
- 9.5 Change Authentication Scheme
- Chapter 10: Switch Company,Year,and Month
- 10.1 Create Page
- 10.2 Add Button
- 10.3 Add Validations
- 10.4 Update User Profile Process
- 10.5 Display Company,Year,and Month
- Chapter 11: Cost Centers
- 11.1 Create Pages
- 11.2 Delete Processes
- 11.3 Modify Delete Button
- 11.4 Add Button
- 11.5 Modify Page Items
- 11.6 Add Dynamic Action: Evaluate Level
- 11.7 Validation: Check Level
- 11.8 Validation: Check Parent Level
- 11.9 Validation: Check Child Level
- 11.10 Validation: Check in Transaction
- 11.11 Validation: Disallow Code Modification
- 11.12 Process: Save Record
- 11.13 Process: Delete Record
- 11.14 Add Button: Refresh
- 11.15 Test Your Work
- Chapter 12: Chart of Accounts
- 12.1 Create Three Lists of Values
- 12.2 Copy Pages
- 12.3 Modify the Report Page (Page 15)
- 12.4 Modify the Form Page (Page 16)
- 12.5 Modify/Create Dynamic Actions
- 12.6 Modify Validations
- 12.7 Create Validation: Check Account Type
- 12.8 Modify Processes
- 12.9 Create a Highlight Rule
- 12.10 Test Your Work
- Chapter 13: Copy Chart of Accounts
- 13.1 Create Page
- 13.2 Add Button
- 13.3 Add Validations
- 13.4 Copy COA Process
- 13.5 Test Your Work
- Chapter 14: Enter Vouchers
- 14.1 Create List of Values
- 14.2 Create Pages
- 14.3 Modify the Master Page (Page 42)
- 14.4 Add Items (Page 42)
- 14.5 Modify Button (Page 42)
- 14.6 Modify the Detail Page (Page 43)
- 14.7 Add/Modify Items
- 14.8 Modify Validations on Page 43
- 14.9 Add Validations to Page 43
- 14.10 Modify Process
- 14.11 Create Process
- 14.12 Control Buttons
- 14.13 Test Your Work
- Chapter 15: Search Transactions
- 15.1 Create Page and Parameters Region
- 15.2 Create an Interactive Report Region
- 15.3 Add a Dynamic Action
- 15.4 Test Your Work
- Chapter 16: Vouchers Verification
- 16.1 Create Page and Parameters Region
- 16.2 Create Interactive Report Region
- 16.3 Create Verification Page
- 16.4 Modify,Delete,and Create Page Buttons
- 16.5 Modify Page-Rendering Process
- 16.6 Delete Validations
- 16.7 Delete Processes
- 16.8 Add Processes
- 16.9 Handle Branches
- 16.10 Test Your Work
- Chapter 17: Vouchers Report
- 17.1 Create a List of Values
- 17.2 Create the Parameters Form
- 17.3 Create Report Query
- 17.4 Download and Install BI Publisher Desktop
- 17.5 Create Report Template in Microsoft Word
- 17.6 Template Formatting
- 17.7 Create the Report Layout
- 17.8 Attach the Report Layout to Report Query
- 17.9 Send the Print Request
- 17.10 Create Validation
- 17.11 Test Your Work
- Chapter 18: Ledger Report
- 18.1 Create Page and Parameters Form
- 18.2 Create an Interactive Report Region
- 18.3 Formatting Ledger Report
- 18.4 Get Ledger Report in PDF
- 18.5 Drill Down to Source Voucher
- 18.5.1 Create Link in Interactive Report
- 18.5.2 Create Voucher Page
- 18.6 Test Your Work
- Chapter 19: Trial Balance Report
- 19.1 Trial Balance Report Table
- 19.2 Create a List of Values
- 19.3 Create Page and Parameters Form
- 19.4 Create the Interactive Report Region
- 19.5 Create a Process to Generate Trial Balance
- 19.6 Formatting the Trial Balance Report
- 19.7 Print the Selected Level
- 19.7.1 Create Process
- 19.8 Eliminate Zero Balances
- 19.8.1 Create a Process
- 19.9 Create a Validation
- 19.10 Get the Trial Balance Report in PDF
- 19.10.1 Template Formatting
- 19.11 Drill Down to the Ledger Report
- 19.12 Test Your Work
- Chapter 20: Opening Bank Transactions
- 20.1 Create Page
- 20.2 Modify Region Source Query
- 20.3 Handling Default Validations
- 20.4 Add Validation
- 20.5 Test Your Work
- Chapter 21: Bank Reconciliation
- 21.1 Create Page and Parameters Form
- 21.2 Display Outstanding Opening Transactions
- 21.3 Modify Reconcile Opening Form
- 21.4 Current Transactions Region
- 21.4.1 Create a Button and a Process
- 21.5 Test Your Work
- Chapter 22: Bank Reconciliation Report
- 22.1 The Bank Reconciliation Report Table
- 22.2 Create the Parameters Form
- 22.3 Create the Interactive Report
- 22.4 Create the Reconciliation Report Generation Process
- 22.5 Format the Reconciliation Report
- 22.6 Generate the PDF Report
- 22.7 Test Your Work
- Chapter 23: Month Closure
- 23.1 Create Page and Page Items
- 23.2 Show Unverified Vouchers
- 23.3 Add Validation
- 23.4 Close Month Process
- 23.5 Hide Buttons
- Chapter 24: Year-End Processes
- 24.1 Enter Opening Balances
- 24.2 Temporary Year-End (TYE)
- 24.3 Create the Page and Page Items
- 24.4 Create a Validation
- 24.5 Generate the Fiscal Year Process
- 24.6 A Process to Generate a Closing Entry
- 24.7 Test Your Work
- 24.8 Permanent Year End (PYE)
- 24.9 Create the Page and Page Items
- 24.10 Create the Validations
- 24.11 A Process to Close the Year Permanently
- 24.12 Test Your Work
- Chapter 25: Budget Allocation
- 25.1 Budget Allocation Table
- 25.2 Create the Page and Parameters Form
- 25.3 Create a Tabular Form
- 25.4 Budget Processes
- 25.5 Test Your Work
- Chapter 26: Budget Report
- 26.1 Budget Report Table
- 26.2 Create Page and Parameters Form
- 26.3 Create Computations
- 26.4 Create Interactive Report
- 26.5 Budget Report Generation Process
- 26.6 Generate PDF Report
- 26.7 Test Your Work
- Chapter 27: Set Up Accounts for Financial Statements
- 27.1 Accounts Table for the Financial Statements
- 27.2 Create a List of Values
- 27.3 Create Page and Page Items
- 27.4 Create a Tabular Form
- 27.5 Create Validations
- 27.6 Create Process
- 27.7 Test Your Work
- Chapter 28: Financial Statements
- 28.1 Financial Statements Table
- 28.2 Create Page and Page Items
- 28.3 Create Interactive Report and Buttons
- 28.4 Create Computations
- 28.5 Create On-Demand Processes
- 28.6 Create Branches
- 28.7 Create Page for Financial Statements Notes
- 28.8 Create Column Link
- 28.9 Generate PDF Report
- 28.10 Enter Vouchers
- 28.11 Test Your Work
- Chapter 29: Executive Dashboard
- 29.1 Dashboard Table
- 29.2 Copy Components to the Home Page
- 29.3 Create Regions
- 29.4 Create Chart Subregion
- 29.5 Create a Hidden Item
- 29.6 Copy Chart Regions
- 29.7 Test Your Work
- Chapter 30: Application Feedback
- 30.1 Application Feedback Table
- 30.2 Create Feedback Input Form
- 30.3 Create Feedback Report Page
- 30.4 Test Your Work
- Chapter 31: Mobile Version
- 31.1 Create an Interface for a Mobile Application
- 31.2 Region and Page Items
- 31.3 Copy Computations and Branches
- 31.4 Add Entries to Mobile Navigation Menu
- 31.5 Create Profit and Loss Statement Report
- 31.6 Create Other Mobile Report Pages
- 31.7 Test Your Work
- Chapter 32: Application Security
- 32.1 Authorization Schemes for the Main Menu
- 32.2 Test Menu Authorization
- 32.3 Authorization Schemes for Application Pages
- 32.4 Test Page Authorization
- 32.5 Authorization Schemes for Buttons
- 32.6 Test Buttons Authorization
- 32.8 Conclusion
BOOK
SUMMARY
Items Found: 505
- Chapter 1: Introduction to Database Systems
- 1.1 Defi nitions and Rationale
- 1.2 Objectives of a Database System
- 1.2.1 Primary and Secondary Objectives
- 1.2.2 Clarifi cation on Data Independence
- 1.3 Advantages of a Database System
- 1.4 Approaches to Database Design
- 1.4.1 Conventional Files
- 1.4.2 Database Approach
- 1.5 Desirable Features of a DBS
- 1.6 Database Development Life Cycle
- 1.8 Review Questions
- 1.9 References and/or Recommended Readings
- Chapter 2: The Database System Environment
- 2.1 Levels of Architecture.
- 2.1.1 External Level
- 2.1.2 Conceptual Level
- 2.1.3 Internal Level
- 2.2 Inter-Level Mappings.
- 2.3 Database Personnel
- 2.3.1 Database Administrator and Data Architect
- 2.3.2 Tools Expert
- 2.3.3 Application Programmer
- 2.3.4 User Liaison Specialist
- 2.3.5 Network and Infrastructure Specialist
- 2.4 The Database Management System
- 2.5 Components of DBMS Suite
- 2.5.1 The DBMS Engine
- 2.5.2 Data Defi nition Subsystem
- 2.5.3 The User Interface Subsystem
- 2.5.4 Application Development Subsystem
- 2.5.5 Data Administration Subsystem
- 2.5.6 Data Dictionary Subsystem
- 2.5.7 Data Communications Manager
- 2.5.8 Utilities Subsystem
- 2.6 Front-End and Back-End Perspectives
- 2.7 Database System Architecture
- 2.8 Database Management System Classifi cations
- 2.8.1 Classifi cation Based on Data Models
- 2.8.2 Classifi cation Based on Number of Users
- 2.8.3 Classifi cation Based on Site Confi guration
- 2.8.4 Classifi cation Based on Database Purpose
- 2.10 Review Questions
- 2.11 References and/or Recommended Readings
- Part B: The Relational Database Model
- Chapter 3: The Relational Model
- 3.1 Basic Concepts
- 3.2 Domains
- 3.3 Relations
- 3.3.1 Properties of a Relation
- 3.3.2 Kinds of Relations
- 3.4 Relational Database System
- 3.5 Identifying Relationships
- 3.6 Representing Relationships
- 3.6.1 The Entity-Relationship Model
- 3.6.2 The Object-Relationship Model
- 3.6.4 Multiplicity of Relationships
- 3.7 Implementing Relationships
- 3.8 Innovation: Relation-Attributes List and Relationship List
- 3.9 Database Naming Convention
- 3.11 Review Questions
- 3.12 References and/or Recommended Readings
- Chapter 4: Integrity Rules and Normalization
- 4.1 Fundamental Integrity Rules
- 4.2 Foreign Key Concept
- 4.3 Rationale for Normalization
- 4.4 Functional Dependence and Non-Loss Decomposition
- 4.4.1 Functional Dependence
- 4.4.2 Non-Loss Decomposition
- 4.5 First Normal Form
- 4.5.1 Problems with Relations in 1NF Only
- 4.6 Second Normal Form
- 4.6.1 Problems with Relations in 2NF Only
- 4.7 Third Normal Form
- 4.7.1 Problems with Relations in 3NF Only
- 4.8 Boyce-Codd Normal Form
- 4.9 Fourth Normal Form
- 4.9.1 Multi-Valued Dependency
- 4.9.2 Fagin’s Theorem
- 4.9.3 The Zoo Revisited
- 4.10 Fifth Normal Form
- 4.10.1 Defi nition of Join Dependency
- 4.10.2 Fagin´s Theorem
- 4.11 An Example
- 4.12 Other Normal Forms
- 4.12.1 The Domain-Key Normal Form
- 4.12.2 The Sixth Normal Form
- 4.14 Review Questions
- 4.15 References and/or Recommended Readings
- Chapter 5: Database Modeling and Design
- 5.1 The Database Model and Database Design
- 5.1.1 The Database Model
- 5.1.2 Database Design.
- 5.2 The E-R Model Revisited
- 5.3 Database Design via the E-R Model
- 5.4 The Extended Relational Model
- 5.4.1 Entity Classifi cations
- 5.4.2 Surrogates
- 5.4.3 E-Relations and P-Relations
- 5.4.4 Integrity Rules
- 5.5 Database Design via the XR Model
- 5.5.1 Determining the Kernel Entities
- 5.5.2 Determining the Characteristic Entities
- 5.5.3 Determining the Designative Entities
- 5.5.4 Determining the Associations
- 5.5.5 Determining Entity Subtypes and Super-types
- 5.5.6 Determining Component Entities
- 5.5.7 Determining Additional Properties
- 5.5.8 Additional Applications of the XR Model
- 5.6 The UML Model
- 5.7 Database Design via the UML Model
- 5.8 Innovation: The Object/Entity Specifi cation Grid
- 5.9 Database Design via Normalization Theory
- 5.9.1 Example: Mountaineering Problem
- 5.9.2 Determining Candidate Keys and then Normalizing
- 5.10 Database Model and Design Tools
- 5.12 Review Questions
- 5.13 References and/or Recommended Readings
- Chapter 6: Database User Interface Design
- 6.1 Overview
- 6.2 Deciding on the User Interface
- 6.3 Steps in the User Interface Design
- 6.3.1 Menu or Graphical User Interface
- 6.3.2 Command-Based User Interface
- 6.4 User Interface Development and Implementation
- 6.6 Review Questions
- 6.7 References and/or Recommend Readings
- Chapter 7: Relational Algebra
- 7.1 Overview
- 7.2 Basic Operations of Relational Algebra
- 7.2.1 Primary and Secondary Operations
- 7.2.2 Codd´s Original Classifi cation of Operations.
- 7.2.3 Nested Operations
- 7.3 Syntax of Relational Algebra
- 7.3.1 Select Statement
- 7.3.2 Projection Statement
- 7.3.3 Natural Join Statement
- 7.3.4 Cartesian Product
- 7.3.5 Theta-Join
- 7.3.6 Inner and Outer Joins
- 7.3.7 Union,Intersection,and Difference Statements
- 7.3.8 Division Statement
- 7.4 Aliases,Renaming,and the Relational Assignment
- 7.4.1 The Alias Operation
- 7.4.2 The Assignment Operation
- 7.4.3 The Rename Operation
- 7.5 Other Operators
- 7.7 Review Questions
- 7.8 References and/or Recommended Readings
- Chapter 8: Relational Calculus
- 8.1 Overview
- 8.2 Calculus Notations and Illustrations
- 8.3 Quantifi ers,Free and Bound Variables
- 8.3.1 Well-Formed Formula
- 8.3.2 Free and Bound Variables
- 8.4 Substitution Rule and Standardization Rules
- 8.5 Introductory Query Optimization
- 8.6 Domain-Oriented Relational Calculus
- 8.8 Review Questions
- 8.9 References and/or Recommended Readings
- Chapter 9: Refl ective Look at the Relational Database Model
- 9.1 The Relational Model Summarized
- 9.2 Ramifi cations of the Relational Model
- 9.2.1 Codd’s Early Benchmark
- 9.2.2 Revised Defi nition of a Relational System
- 9.2.3 Far-Reaching Consequences
- 9.4 Review Questions
- 9.5 References
- Part C: The Structured Query Language
- Chapter 10: Overview of SQL
- 10.1 Important Facts
- 10.1.1 Commonly Used DDL Statements
- 10.1.2 Commonly Used DML and DCL Statements
- 10.1.3 Syntax Convention
- 10.2 Advantages of SQL
- 10.4 Review Questions
- 10.5 Recommended Readings
- Chapter 11: SQL Data Defi nition Statements
- 11.1 Overview of Oracle’s SQL Environment
- 11.2 Basic Concepts in a Typical Oracle Database Environment
- 11.3 Database Creation
- 11.4 Database Management
- 11.5 Tablespace Creation
- 11.6 Tablespace Management
- 11.7 Table Creation
- 11.8 Dropping or Modifying a Table
- 11.9 Working with Indexes
- 11.10 Working with Sequences
- 11.10.1 Creating and Using Sequences
- 11.10.2 Altering and Dropping Sequences
- 11.11 Working with Synonyms
- 11.13 Review Questions
- 11.14 References and/or Recommended Readings
- Chapter 12: SQL Data Manipulation Statements
- 12.1 Insertion of Data
- 12.2 Update Operations
- 12.3 Deletion of Data
- 12.4 Commit and Rollback Operations
- 12.5 Basic Syntax for Queries
- 12.6 Simple Queries
- 12.7 Queries Involving Multiple Tables
- 12.7.1 The Traditional Method
- 12.7.2 The ANSI Method
- 12.8 Queries Involving the Use of Functions
- 12.8.1 Row Functions
- 12.8.2 Date Functions
- 12.8.3 Data Conversion Functions
- 12.8.4 Programmer-Defi ned Functions
- 12.8.5 Aggregation Functions
- 12.8.6 Analytic Functions
- 12.9 Queries Using the LIKE and BETWEEN Operators
- 12.10 Nested Queries
- 12.10.1 Nested Queries Involving Use of the IN Operator
- 12.10.2 Nested Queries Involving use of ANY or ALL Operator
- 12.10.3 Nested Queries Using the Existential Quantifi er
- 12.11 Queries Involving Set Operations
- 12.12 Queries with Runtime Variables
- 12.13 Queries Involving SQL*Plus Format Commands
- 12.14 Embedded SQL
- 12.15 Dynamic Queries
- 12.17 Review Questions
- 12.18 References and/or Recommended Readings
- Chapter 13: Logical Views and System Security
- 13.1 Traditional Logical Views
- 13.1.1 View Creation
- 13.1.2 View Modifi cation and Removal
- 13.1.3 Usefulness and Manipulation of Logical Views
- 13.2 System Security
- 13.2.1 Access to the System
- 13.2.2 Access to the System Resources
- 13.2.3 Access to the System Data
- 13.3 Materialized Views
- 13.3.1 Creating a Materialized View
- 13.3.2 Altering or Dropping a Materialized View
- 13.5 Review Questions
- 13.6 References and/or Recommended Readings
- Chapter 14: The System Catalog
- 14.1 Introduction
- 14.2 Three Important Catalog Tables
- 14.2.1 The User_Tables View
- 14.2.2 The User_Tab_Columns View
- 14.2.3 The User_Indexes View
- 14.3 Other Important Catalog Tables
- 14.4 Querying the System Catalog
- 14.5 Updating the System Catalog
- 14.7 Review Questions
- 14.8 References and/or Recommended Readings
- Chapter 15: Some Limitations of SQL
- 15.1 Programming Limitations
- 15.2 Limitations on Views
- 15.2.1 Restriction on Use of the Order-By Clause for Earlier Versions of SQL
- 15.2.2 Restriction on Data Manipulation for Views involving UNION,INTERSECT,or JOIN
- 15.2.3 Restriction on the Use of Aggregation Functions for Earlier Versions of SQL
- 15.3 Stringent Enforcement of Referential Integrity
- 15.4 Limitations on Calculated Columns
- 15.5 If-Then Limitation
- 15.7 Review Questions
- 15.8 Recommended Readings
- Part D: Advanced Topics
- Chapter 16: Database Administration
- 16.1 Database Installation,Creation,and Confi guration
- 16.2 Database Security
- 16.3 Database Management
- 16.4 Database Backup and Recovery
- 16.4.1 Oracle Backups: Basic Concept
- 16.4.2 Oracle Recovery: Basic Concept
- 16.4.3 Types of Failures
- 16.4.4 Database Backups
- 16.4.5 Basic Recovery Steps
- 16.4.6 Oracle’s Backup and Recovery Solutions
- 16.5 Database Tuning
- 16.5.1 Tuning Goals
- 16.5.2 Tuning Methodology
- 16.6 Database Removal
- 16.8 Review Questions
- 16.9 References and/or Recommended Readings
- Chapter 17: Distributed Database Systems
- 17.1 Preliminaries
- 17.2 Advantages of Distributed Database Systems
- 17.3 12 Rules for Distributed Database Systems
- 17.4 Challenges to Distributed Database Systems
- 17.4.1 Query Optimization
- 17.4.2 Catalog Management
- 17.4.3 Update Propagation
- 17.4.4 Concurrency
- 17.4.5 Transaction Management
- 17.5 Database Gateways
- 17.6 The Future of Distributed Database Systems
- 17.6.1 Object Technology
- 17.6.2 Electronic Communication Systems
- 17.6.3 Cloud Technology
- 17.6.4 Big Data
- 17.8 Review Questions
- 17.9 References and/or Recommended Readings
- Chapter 18: Object Databases
- 18.1 Overview
- 18.2 Overview of Object-Oriented Database Management Systems
- 18.3 Challenges for Object-Oriented Database Management Systems
- 18.4 Hybrid Approach
- 18.6 Review Questions
- 18.7 References and/or Recommended Readings
- Chapter 19: Data Warehousing
- 19.1 Overview
- 19.1.1 Defi nitions
- 19.1.2 Acquiring a Data Warehouse
- 19.2 Rationale for Data Warehousing
- 19.3 Characteristics of a Data Warehouse
- 19.3.1 Defi nitive Features
- 19.3.2 Nature of Data Stored
- 19.3.3 Processing Requirements
- 19.3.4 12 Rules for Data Warehousing
- 19.4 Data Warehouse Architecture
- 19.4.1 Basic Data Warehouse Architecture
- 19.4.2 Data Warehouse Architecture with a Staging Area
- 19.4.3 Data Warehouse Architecture with a Staging Area and Data Marts
- 19.5 Extraction,Transformation,and Loading
- 19.5.1 What Happens During the ETL Process
- 19.5.2 ETL Tools
- 19.5.3 Daily Operations and Expansion of the Data Warehouse
- 19.7 Review Questions
- 19.8 References and/or Recommended Readings
- Chapter 20: Web-Accessible Databases
- 20.1 Introduction
- 20.2 Web-Accessible Database Architecture
- 20.3 Supporting Technologies
- 20.4 Implementation with Selected DBMS Suites
- 20.4.1 Implementation via Oracle
- 20.4.2 Implementation via DB2
- 20.4.3 Implementation via MySQL
- 20.5 Generic Implementation via Front-End and Back-End Tools
- 20.6 Challenges and Opportunities
- 20.6.1 Cloud Computing and Big Data
- 20.6.2 Cybersecurity
- 20.8 Review Questions
- 20.9 References and/or Recommended Readings
- Chapter 21: Using Database Systems to Anchor Management
- Support Systems
- 21.1 Overview of Management Support Systems
- 21.2 Building System Security Through Database Design
- 21.3 Case Study: Dynamic Menu Interface Designer
- 21.3.1 Database Requirements of the DMID
- 21.3.2 Overview of the DMID’s User Interface Requirements
- 21.3.3 Management of System Constraints via the DMID
- 21.3.4 Access to System Resources
- 21.3.5 Usefulness and Applicability of the DMID
- 21.4 Selected MSS Project Ideas
- 21.4.1 Electoral Management System
- 21.4.2 Health Information Management System
- 21.4.3 Strategic Education Management System
- 21.4.4 Flight Information Management System
- 21.4.5 Financial Information Management System
- 21.4.6 Disease Recognition System
- 21.4.7 Cognitive Leadership Analysis System
- 21.4.8 Financial Status Assessment System
- 21.4.9 College/University Administrative Information System
- 21.6 Review Questions
- 21.7 References and/or Recommended Readings
- Part E: Overview of Selected DBMS Suites
- Chapter 22: Overview of Oracle
- 22.1 Introduction
- 22.2 Main Components of the Oracle Suite
- 22.2.1 Oracle Server
- 22.2.2 Oracle PL/SQL and SQL*Plus
- 22.2.3 Oracle Developer Suite
- 22.2.4 Oracle Enterprise Manager Database Control and SQL Developer
- 22.2.5 Oracle Enterprise Manager Grid Control
- 22.2.6 Oracle Database Confi guration Assistant
- 22.2.7 Oracle Warehouse Builder
- 22.3 Shortcomings of Oracle
- 22.5 Review Questions
- 22.6 References and/or Recommended Readings
- Chapter 23: Overview of DB2
- 23.1 Introduction
- 23.2 Main Components of the DB2 Suite
- 23.2.1 DB2 Universal Database Core
- 23.2.2 Command Line Processor Plus (CLPPlus)
- 23.2.3 IBM InfoSphere Information Server
- 23.2.4 IBM Data Studio
- 23.2.5 IBM InfoSphere Warehouse
- 23.3 Shortcomings of DB2
- 23.5 Review Questions
- 23.6 References and/or Recommended Readings
- Chapter 24: Overview of MySQL
- 24.1 Introduction to MySQL
- 24.2 Main Features of MySQL
- 24.3 Main Components of MySQL
- 24.4 Alternate Storage Engines
- 24.5 Shortcomings of MySQL
- 24.5.1 Limitations on Logical Views
- 24.5.2 Limitations on Subqueries
- 24.5.3 Limitation on Server-Side Cursors
- 24.5.4 Other Limitations
- 24.7 Review Questions
- 24.8 References and/or Recommended Readings
- Chapter 25: Overview of Microsoft SQL Server
- 25.1 Introduction
- 25.1.1 Brief History
- 25.1.2 Operating Environment
- 25.1.3 Microsoft SQL Server Editions
- 25.2 Main Features of Microsoft SQL Server
- 25.3 Main Components of Microsoft SQL Server Suite
- 25.3.1 Server Components
- 25.3.2 Management Tools
- 25.3.3 Development Tools
- 25.3.4 Client Connectivity
- 25.3.5 Code Samples
- 25.4 Shortcomings of Microsoft SQL Server
- 25.6 Review Questions
- 25.7 References and/or Recommended Readings
- Part F: Appendices.
- Appendix A1: Review of Trees
- A1.1 Introduction to Trees
- A1.2 Binary Trees
- A1.2.1 Overview of Binary Trees
- A1.2.2 Representation of Binary Trees
- A1.2.3 Application of Binary Trees
- A1.2.4 Operations on Binary Trees
- A1.2.5 Implementation of Binary Trees
- A1.2.6 Binary Tree Traversals
- A1.2.7 Using Binary Trees to Evaluate Expressions
- A1.3 Threaded Binary Trees
- A1.4 Binary Search Trees
- A1.5 Height-Balanced Trees
- A1.6 Heaps
- A1.6.1 Building the Heap
- A1.6.2 Processing the Heap (Heap-Sort)
- A1.7 M-Way Search Trees and B-Trees
- A1.7.1 Defi nition of B-Tree
- A1.7.2 Implementation of the B-tree
- A1.9 References and/or Recommended Readings
- Appendix A2: Review of Hashing
- A2.1 Introduction
- A2.2 Hash Functions
- A2.2.1 Absolute Addressing
- A2.2.2 Direct Table Lookup
- A2.2.3 Division-Remainder
- A2.2.4 Mid-Square
- A2.2.5 Folding
- A2.2.6 Truncation
- A2.2.7 Treating Alphanumeric Key Values
- A2.3 Collision Resolution
- A2.3.1 Linear Probing
- A2.3.2 Synonym Chaining
- A2.3.3 Rehashing
- A2.4 Hashing in Java
- A2.6 References and/or Recommended Readings
- Appendix A3: Review of Information-Gathering Techniques
- A3.1 Rationale for Information Gathering
- A3.2 Interviewing
- A3.2.1 Steps in Planning the Interview
- A3.2.2 Basic Guidelines for Interviews
- A3.3 Questionnaires and Surveys
- A3.3.1 Guidelines for Questionnaires
- A3.3.2 Using Scales in Questionnaires
- A3.3.3 Administering the Questionnaire
- A3.4 Sampling
- A3.4.1 Probability Sampling Techniques
- A3.4.2 Non-Probability Sampling Techniques
- A3.4.3 Sample Calculations
- A3.5 Observation and Document Review
- A3.6 Prototyping
- A3.7 Brainstorming
- A3.8 Object Identifi cation
- A3.8.1 The Descriptive Narrative Approach
- A3.8.2 The Rule-of-Thumb Approach
- A3.10 References and/or Recommended Readings
- Appendix A4: BNF Syntax for Selected SQL Statements
- A4.1 Database Management
- A4.1.1 Syntax for Create-Database Statement
- A4.1.2 Syntax for Alter-Database Statement
- A4.2 Tablespace Management
- A4.2.1 Syntax for Create-Tablespace Statement
- A4.2.2 Syntax for Alter-Tablespace Statement
- A4.3 Tables Management
- A4.3.1 Syntax for Create-Table Statement
- A4.3.2 Syntax for Alter-Table Statement
- A4.4 Index Management
- A4.4.1 Syntax for Create-Index Statement
- A4.4.2 Syntax for Alter-Index Statement
- A4.5 Data Insertion,Update,and Deletion
- A4.5.1 Abridged Syntax for the Insert Statement
- A4.5.2 Abridged Syntax for the Update Statement
- A4.5.3 Syntax for Delete Statement and Truncate Statement
- A4.6 Transaction Management
- A4.7 Building Queries
- A4.7.1 Abridged Syntax for the Select Statement
- A4.7.2 Modifi ed From-Clause for ANSI Join
- A4.7.3 Some Commonly Used Row Functions
- A4.7.4 Some Commonly Used Date Manipulation Functions
- A4.7.5 Some Commonly Used Data Conversion Functions
- A4.7.6 Some Valid Date and Numeric Formats
- A4.7.7 Commonly Used Aggregation Functions
- A4.7.8 Syntax for Using Analytic Functions
- A4.7.9 Syntax for Nested Queries
- A4.8 Managing Logical Views
- A4.8.1 Creating the Logical View
- A4.8.2 Altering or Dropping the Logical View
- A4.9 Managing System Security
- A4.9.1 Syntax for Create-Profi le Statement
- A4.9.2 Syntax for Altering or Dropping a Profi le
- A4.9.3 Syntax for Creating User Account(s)
- A4.9.4 Syntax for Altering or Dropping User Account(s)
- A4.9.5 Syntax for Creating,Altering,or Dropping Role(s)
- A4.9.6 Syntax for Granting or Revoking Privilege(s)
- Appendix A5: Sample Exercises and Examination Questions
BOOK
SUMMARY
Items Found: 737
- Part 1 Background 1
- Chapter 1 Introduction to Databases 3
- 1.1 Introduction 4
- 1.2 Traditional File-Based Systems 7
- 1.2.1 File-Based Approach 7
- 1.2.2 Limitations of the File-Based Approach 12
- 1.3 Database Approach 14
- 1.3.1 The Database 15
- 1.3.2 The Database Management System (DBMS) 16
- 1.3.3 (Database) Application Programs 17
- 1.3.4 Components of the DBMS Environment 18
- 1.3.5 Database Design: The Paradigm Shift 21
- 1.4 Roles in the Database Environment 21
- 1.4.1 Data and Database Administrators 22
- 1.4.2 Database Designers 22
- 1.4.3 Application Developers 23
- 1.4.4 End-Users 23
- 1.5 History of Database Management Systems 24
- 1.6 Advantages and Disadvantages of DBMSs 26
- Chapter 2 Database Environment 33
- 2.1 The Three-Level ANSI-SPARC Architecture 34
- 2.1.1 External Level 35
- 2.1.2 Conceptual Level 36
- 2.1.3 Internal Level 36
- 2.1.4 Schemas,Mappings,and Instances 37
- 2.1.5 Data Independence 38
- 2.2 Database Languages 39
- 2.2.1 The Data Definition Language (DDL) 40
- 2.2.2 The Data Manipulation Language (DML) 40
- 2.2.3 Fourth-Generation Languages (4GLs) 42
- 2.3 Data Models and Conceptual Modeling 43
- 2.3.1 Object-Based Data Models 44
- 2.3.2 Record-Based Data Models 45
- 2.3.3 Physical Data Models 47
- 2.3.4 Conceptual Modeling 47
- 2.4 Functions of a DBMS 48
- 2.5 Components of a DBMS 53
- 2.6 Multi-User DBMS Architectures 56
- 2.6.1Teleprocessing 56
- 2.6.2 File-Server Architectures 56
- 2.6.3 Traditional Two-Tier Client–Server Architecture 57
- 2.6.4 Three-Tier Client–Server Architecture 60
- 2.6.5 Transaction Processing Monitors 62
- Part 2 The Relational Model and Languages 67
- Chapter 3 The Relational Model 69
- 3.1 Brief History of the Relational Model 70
- 3.2 Terminology 71
- 3.2.1 Relational Data Structure 72
- 3.2.2 Mathematical Relations 75
- 3.2.3 Database Relations 76
- 3.2.4 Properties of Relations 77
- 3.2.5 Relational Keys 78
- 3.2.6 Representing Relational Database Schemas 79
- 3.3 Integrity Constraints 81
- 3.3.1 Nulls 81
- 3.3.2 Entity Integrity 82
- 3.3.3 Referential Integrity 83
- 3.3.4 General Constraints 83
- 3.4 Views 83
- 3.4.1 Terminology 84
- 3.4.2 Purpose of Views 84
- 3.4.3 Updating Views 85
- Chapter 4 Relational Algebra and Relational Calculus 88
- 4.1 The Relational Algebra 89
- 4.1.1 Unary Operations 89
- 4.1.2 Set Operations 92
- 4.1.3 Join Operations 95
- 4.1.4 Division Operation 99
- 4.1.5 Aggregation and Grouping Operations 100
- 4.2 The Relational Calculus 103
- 4.2.1 Tuple Relational Calculus 103
- 4.2.2 Domain Relational Calculus 107
- 4.3 Other Languages 109
- Chapter 5 SQL: Data Manipulation 112
- 5.1 Introduction to SQL 113
- 5.1.1 Objectives of SQL 113
- 5.1.2 History of SQL 114
- 5.1.3 Importance of SQL 116
- 5.1.4Terminology 116
- 5.2 Writing SQL Commands 116
- 5.3 Data Manipulation 117
- 5.3.1 Simple Queries 118
- 5.3.2 Sorting Results (ORDER BY Clause) 127
- 5.3.3 Using the SQL Aggregate Functions 129
- 5.3.4 Grouping Results (GROUP BY Clause) 131
- 5.3.5Subqueries 134
- 5.3.6 ANY and ALL 138
- 5.3.7 Multi-Table Queries 139
- 5.3.8 EXISTS and NOT EXISTS 146
- 5.3.9 Combining Result Tables (UNION,INTERSECT,EXCEPT) 147
- 5.3.10 Database Updates 149
- Chapter 6 SQL: Data Definition 157
- 6.1 The ISO SQL Data Types 158
- 6.1.1 SQL Identifiers 158
- 6.1.2 SQL Scalar Data Types 159
- 6.1.3 Exact Numeric Data 160
- 6.2 Integrity Enhancement Feature 164
- 6.2.1 Required Data 164
- 6.2.2 Domain Constraints 164
- 6.2.3 Entity Integrity 166
- 6.2.4 Referential Integrity 166
- 6.2.5 General Constraints 167
- 6.3 Data Definition 168
- 6.3.1 Creating a Database 168
- 6.3.2 Creating a Table (CREATE TABLE) 169
- 6.3.3 Changing a Table Definition (ALTER TABLE) 173
- 6.3.4 Removing a Table (DROP TABLE) 174
- 6.3.5 Creating an Index (CREATE INDEX) 175
- 6.3.6 Removing an Index (DROP INDEX) 176
- 6.4 Views 176
- 6.4.1 Creating a View (CREATE VIEW) 177
- 6.4.2 Removing a View (DROP VIEW) 179
- 6.4.3 View Resolution 180
- 6.4.4 Restrictions on Views 181
- 6.4.5 View Updatability 181
- 6.4.6 WITH CHECK OPTION 183
- 6.4.7 Advantages and Disadvantages of Views 184
- 6.4.8 View Materialization 186
- 6.5 Transactions 187
- 6.5.1 Immediate and Deferred Integrity Constraints 189
- 6.6 Discretionary Access Control 189
- 6.6.1 Granting Privileges to Other Users (GRANT) 191
- 6.6.2 Revoking Privileges from Users (REVOKE) 192
- Chapter 7 Query-By-Example 198
- 7.1 Introduction to Microsoft Office Access Queries 199
- 7.2 Building Select Queries Using QBE 201
- 7.2.1 Specifying Criteria 202
- 7.2.2 Creating Multi-Table Queries 204
- 7.2.3 Calculating Totals 207
- 7.3 Using Advanced Queries 208
- 7.3.1 Parameter Query 208
- 7.3.2 Crosstab Query 209
- 7.3.3 Find Duplicates Query 212
- 7.3.4 Find Unmatched Query 214
- 7.3.5 Autolookup Query 215
- 7.4 Changing the Content of Tables Using Action Queries 215
- 7.4.1 Make-Table Action Query 215
- 7.4.2 Delete Action Query 217
- 7.4.3 Update Action Query 217
- 7.4.4 Append Action Query 221
- Chapter 8 Commercial RDBMSs: Office Access and Oracle 225
- 8.1 Microsoft Office Access 2003 226
- 8.1.1Objects 226
- 8.1.2 Microsoft Office Access Architecture 227
- 8.1.3 Table Definition 228
- 8.1.4 Relationships and Referential Integrity Definition 233
- 8.1.5 General Constraint Definition 234
- 8.1.6Forms 236
- 8.1.7Reports 238
- 8.1.8Macros 239
- 8.1.9 Object Dependencies 242
- 8.2 Oracle9i 242
- 8.2.1 Objects 244
- 8.2.2 Oracle Architecture 245
- 8.2.3 Table Definition 252
- 8.2.4 General Constraint Definition 255
- 8.2.5 PL/SQL 255
- 8.2.6 Subprograms,Stored Procedures,Functions,and Packages 261
- 8.2.7 Triggers 263
- 8.2.8 Oracle Internet Developer Suite 267
- 8.2.9 Other Oracle Functionality 271
- 8.2.10 Oracle10g 271
- Part 3 Database Analysis and Design Techniques 279
- Chapter 9 Database Planning,Design,and Administration 281
- 9.1 The Information Systems Lifecycle 282
- 9.2 The Database System Development Lifecycle 283
- 9.3 Database Planning 285
- 9.4 System Definition 286
- 9.4.1 User Views 287
- 9.5 Requirements Collection and Analysis 288
- 9.5.1 Centralized Approach 289
- 9.5.2 View Integration Approach 289
- 9.6 Database Design 291
- 9.6.1 Approaches to Database Design 291
- 9.6.2 Data Modeling 292
- 9.6.3 Phases of Database Design 293
- 9.7 DBMS Selection 295
- 9.7.1 Selecting the DBMS 296
- 9.8 Application Design 299
- 9.8.1 Transaction Design 300
- 9.8.2 User Interface Design Guidelines 301
- 9.9 Prototyping 303
- 9.10 Implementation 304
- 9.11 Data Conversion and Loading 305
- 9.12 Testing 305
- 9.13 Operational Maintenance 306
- 9.14 CASE Tools 307
- 9.15 Data Administration and Database Administration 309
- 9.15.1 Data Administration 309
- 9.15.2 Database Administration 309
- 9.15.3 Comparison of Data and Database Administration 311
- Chapter 10 Fact-Finding Techniques 314
- 10.1 When Are Fact-Finding Techniques Used? 315
- 10.2 What Facts Are Collected? 316
- 10.3 Fact-Finding Techniques 317
- 10.3.1 Examining Documentation 317
- 10.3.2Interviewing 317
- 10.3.3 Observing the Enterprise in Operation 319
- 10.3.4Research 319
- 10.3.5Questionnaires 320
- 10.4 Using Fact-Finding Techniques – A Worked Example 321
- 10.4.1 The DreamHome Case Study – An Overview 321
- 10.4.2 The DreamHome Case Study – Database Planning 326
- 10.4.3 The DreamHome Case Study – System Definition 331
- 10.4.4 The DreamHome Case Study – Requirements Collection and Analysis 332
- 10.4.5 The DreamHome Case Study – Database Design 340
- Chapter 11 Entity–Relationship Modeling 342
- 11.1 Entity Types 343
- 11.2 Relationship Types 346
- 11.2.1 Degree of Relationship Type 347
- 11.2.2 Recursive Relationship 349
- 11.3 Attributes 350
- 11.3.1 Simple and Composite Attributes 351
- 11.3.2 Single-Valued and Multi-Valued Attributes 351
- 11.3.3 Derived Attributes 352
- 11.3.4Keys 352
- 11.4 Strong and Weak Entity Types 354
- 11.5 Attributes on Relationships 355
- 11.6 Structural Constraints 356
- 11.6.1 One-to-One (1:1) Relationships 357
- 11.6.2 One-to-Many (1:*) Relationships 358
- 11.6.3 Many-to-Many (*:*) Relationships 359
- 11.6.4 Multiplicity for Complex Relationships 361
- 11.6.5 Cardinality and Participation Constraints 362
- 11.7 Problems with ER Models 364
- 11.7.1 Fan Traps 364
- 11.7.2 Chasm Traps 365
- Chapter 12 Enhanced Entity–Relationship Modeling 371
- 12.1 Specialization/Generalization 372
- 12.1.1 Superclasses and Subclasses 372
- 12.1.2 Superclass/Subclass Relationships 373
- 12.1.3 Attribute Inheritance 374
- 12.1.4 Specialization Process 374
- 12.1.5 Generalization Process 375
- 12.1.6 Constraints on Specialization/Generalization 378
- 12.1.7 Worked Example of using Specialization/Generalization to Model the Branch View of DreamHome Case Study 379
- 12.2 Aggregation 383
- 12.3 Composition 384
- Chapter 13 Normalization 387
- 13.1 The Purpose of Normalization 388
- 13.2 How Normalization Supports Database Design 389
- 13.3 Data Redundancy and Update Anomalies 390
- 13.3.1 Insertion Anomalies 391
- 13.3.2 Deletion Anomalies 392
- 13.3.3 Modification Anomalies 392
- 13.4 Functional Dependencies 392
- 13.4.1 Characteristics of Functional Dependencies 393
- 13.4.2 Identifying Functional Dependencies 397
- 13.4.3 Identifying the Primary Key for a Relation using Functional Dependencies 399
- 13.5 The Process of Normalization 401
- 13.6 First Normal Form (1NF) 403
- 13.7 Second Normal Form (2NF) 407
- 13.8 Third Normal Form (3NF) 408
- 13.9 General Definitions of 2NF and 3NF 411
- Chapter 14 Advanced Normalization 415
- 14.1 More on Functional Dependencies 416
- 14.1.1 Inference Rules for Functional Dependencies 416
- 14.1.2 Minimal Sets of Functional Dependencies 418
- 14.2 Boyce–Codd Normal Form (BCNF) 419
- 14.2.1 Definition of Boyce–Codd Normal Form 419
- 14.3 Review of Normalization up to BCNF 422
- 14.4 Fourth Normal Form (4NF) 428
- 14.4.1 Multi-Valued Dependency 428
- 14.4.2 Definition of Fourth Normal Form 430
- 14.5 Fifth Normal Form (5NF) 430
- 14.5.1 Lossless-Join Dependency 430
- 14.5.2 Definition of Fifth Normal Form 431
- Part 4 Methodology 435
- Chapter 15 Methodology – Conceptual Database Design 437
- 15.1 Introduction to the Database Design Methodology 438
- 15.1.1 What is a Design Methodology? 438
- 15.1.2 Conceptual,Logical,and Physical Database Design 439
- 15.1.3 Critical Success Factors in Database Design 440
- 15.2 Overview of the Database Design Methodology 440
- 15.3 Conceptual Database Design Methodology 442
- Step 1 Build Conceptual Data Model 442
- Chapter 16 Methodology – Logical Database Design for the Relational Model 461
- 16.1 Logical Database Design Methodology for the Relational Model 462
- Step 2 Build and Validate Logical Data Model 462
- Chapter 17 Methodology – Physical Database Design for Relational Databases 494
- 17.1 Comparison of Logical and Physical Database Design 495
- 17.2 Overview of Physical Database Design Methodology 496
- 17.3 The Physical Database Design Methodology for Relational Databases 497
- Step 3 Translate Logical Data Model for Target DBMS 497
- Step 4 Design File Organizations and Indexes 501
- Step 5 Design User Views 515
- Step 6 Design Security Mechanisms 516
- Chapter 18 Methodology – Monitoring and Tuning the Operational System 519
- 18.1 Denormalizing and Introducing Controlled Redundancy 519
- Step 7 Consider the Introduction of Controlled Redundancy 519
- 18.2 Monitoring the System to Improve Performance 532
- Step 8 Monitor and Tune the Operational System 532
- Part 5 Selected Database Issues 539
- Chapter 19 Security 541
- 19.1 Database Security 542
- 19.1.1Threats 543
- 19.2 Countermeasures – Computer-Based Controls 545
- 19.2.1 Authorization 546
- 19.2.2 Access Controls 547
- 19.2.3 Views 550
- 19.2.4 Backup and Recovery 550
- 19.2.5 Integrity 551
- 19.2.6 Encryption 551
- 19.2.7 RAID (Redundant Array of Independent Disks) 552
- 19.3 Security in Microsoft Office Access DBMS 555
- 19.4 Security in Oracle DBMS 558
- 19.5 DBMSs and Web Security 562
- 19.5.1 Proxy Servers 563
- 19.5.2 Firewalls 563
- 19.5.3 Message Digest Algorithms and Digital Signatures 564
- 19.5.4 Digital Certificates 564
- 19.5.5 Kerberos 565
- 19.5.6 Secure Sockets Layer and Secure HTTP 565
- 19.5.7 Secure Electronic Transactions and Secure Transaction Technology 566
- 19.5.8 Java Security 566
- 19.5.9 ActiveX Security 569
- Chapter 20 Transaction Management 572
- 20.1 Transaction Support 573
- 20.1.1 Properties of Transactions 575
- 20.1.2 Database Architecture 576
- 20.2 Concurrency Control 577
- 20.2.1 The Need for Concurrency Control 577
- 20.2.2 Serializability and Recoverability 580
- 20.2.3 Locking Methods 587
- 20.2.4 Deadlock 594
- 20.2.5 Timestamping Methods 597
- 20.2.6 Multiversion Timestamp Ordering 600
- 20.2.7 Optimistic Techniques 601
- 20.2.8 Granularity of Data Items 602
- 20.3 Database Recovery 605
- 20.3.1 The Need for Recovery 606
- 20.3.2 Transactions and Recovery 607
- 20.3.3 Recovery Facilities 609
- 20.3.4 Recovery Techniques 612
- 20.3.5 Recovery in a Distributed DBMS 615
- 20.4 Advanced Transaction Models 615
- 20.4.1 Nested Transaction Model 616
- 20.4.2 Sagas 618
- 20.4.3 Multilevel Transaction Model 619
- 20.4.4 Dynamic Restructuring 620
- 20.4.5 Workflow Models 621
- 20.5 Concurrency Control and Recovery in Oracle 622
- 20.5.1 Oracle’s Isolation Levels 623
- 20.5.2 Multiversion Read Consistency 623
- 20.5.3 Deadlock Detection 625
- 20.5.4 Backup and Recovery 625
- Chapter 21 Query Processing 630
- 21.1 Overview of Query Processing 631
- 21.2 Query Decomposition 635
- 21.3 Heuristical Approach to Query Optimization 639
- 21.3.1 Transformation Rules for the Relational Algebra Operations 640
- 21.3.2 Heuristical Processing Strategies 645
- 21.4 Cost Estimation for the Relational Algebra Operations 646
- 21.4.1 Database Statistics 646
- 21.4.2 Selection Operation 647
- 21.4.3 Join Operation 654
- 21.4.4 Projection Operation 662
- 21.4.5 The Relational Algebra Set Operations 664
- 21.5 Enumeration of Alternative Execution Strategies 665
- 21.5.1 Pipelining 665
- 21.5.2 Linear Trees 666
- 21.5.3 Physical Operators and Execution Strategies 667
- 21.5.4 Reducing the Search Space 668
- 21.5.5 Enumerating Left-Deep Trees 669
- 21.5.6 Semantic Query Optimization 671
- 21.5.7 Alternative Approaches to Query Optimization 672
- 21.5.8 Distributed Query Optimization 672
- 21.6 Query Optimization in Oracle 673
- 21.6.1 Rule-Based and Cost-Based Optimization 673
- 21.6.2 Histograms 677
- 21.6.3 Viewing the Execution Plan 678
- Part 6 Distributed DBMSs and Replication 685
- Chapter 22 Distributed DBMSs – Concepts and Design 687
- 22.1 Introduction 688
- 22.1.1 Concepts 689
- 22.1.2 Advantages and Disadvantages of DDBMSs 693
- 22.1.3 Homogeneous and Heterogeneous DDBMSs 697
- 22.2 Overview of Networking 699
- 22.3 Functions and Architectures of a DDBMS 703
- 22.3.1 Functions of a DDBMS 703
- 22.3.2 Reference Architecture for a DDBMS 704
- 22.3.3 Reference Architecture for a Federated MDBS 705
- 22.3.4 Component Architecture for a DDBMS 706
- 22.4 Distributed Relational Database Design 708
- 22.4.1 Data Allocation 709
- 22.4.2 Fragmentation 710
- 22.5 Transparencies in a DDBMS 719
- 22.5.1 Distribution Transparency 719
- 22.5.2 Transaction Transparency 722
- 22.5.3 Performance Transparency 725
- 22.5.4 DBMS Transparency 728
- 22.6 Date’s Twelve Rules for a DDBMS 729
- Chapter 23 Distributed DBMSs – Advanced Concepts 734
- 23.1 Distributed Transaction Management 735
- 23.2 Distributed Concurrency Control 736
- 23.2.1 Objectives 736
- 23.2.2 Distributed Serializability 737
- 23.2.3 Locking Protocols 738
- 23.2.4 Timestamp Protocols 740
- 23.3 Distributed Deadlock Management 741
- 23.4 Distributed Database Recovery 744
- 23.4.1 Failures in a Distributed Environment 744
- 23.4.2 How Failures Affect Recovery 745
- 23.4.3 Two-Phase Commit (2PC) 746
- 23.4.4 Three-Phase Commit (3PC) 752
- 23.4.5 Network Partitioning 756
- 23.5 The X/Open Distributed Transaction Processing Model 758
- 23.6 Distributed Query Optimization 761
- 23.6.1 Data Localization 762
- 23.6.2 Distributed Joins 766
- 23.6.3 Global Optimization 767
- 23.7 Distribution in Oracle 772
- 23.7.1 Oracle’s DDBMS Functionality 772
- Chapter 24 Replication and Mobile Databases 780
- 24.1 Introduction to Database Replication 781
- 24.2 Benefits of Database Replication 781
- 24.3 Applications of Replication 783
- 24.4 Basic Components of Database Replication 783
- 24.5 Database Replication Environments 784
- 24.5.1 Synchronous Versus Asynchronous Replication 784
- 24.5.2 Data Ownership 784
- 24.6 Replication Servers 788
- 24.6.1 Replication Server Functionality 788
- 24.6.2 Implementation Issues 789
- 24.7 Introduction to Mobile Databases 792
- 24.7.1 Mobile DBMSs 794
- 24.8 Oracle Replication 794
- 24.8.1 Oracle’s Replication Functionality 794
- Part 7 Object DBMSs 801
- Chapter 25 Introduction to Object DBMSs 803
- 25.1 Advanced Database Applications 804
- 25.2 Weaknesses of RDBMSs 809
- 25.3 Object-Oriented Concepts 814
- 25.3.1 Abstraction,Encapsulation,and Information Hiding 814
- 25.3.2 Objects and Attributes 815
- 25.3.3 Object Identity 816
- 25.3.4 Methods and Messages 818
- 25.3.5 Classes 819
- 25.3.6 Subclasses,Superclasses,and Inheritance 820
- 25.3.7 Overriding and Overloading 822
- 25.3.8 Polymorphism and Dynamic Binding 823
- 25.3.9 Complex Objects 824
- 25.4 Storing Objects in a Relational Database 825
- 25.4.1 Mapping Classes to Relations 826
- 25.4.2 Accessing Objects in the Relational Database 827
- 25.5 Next-Generation Database Systems 828
- 25.6 Object-Oriented Database Design 830
- 25.6.1 Comparison of Object-Oriented Data Modeling and Conceptual Data Modeling 830
- 25.6.2 Relationships and Referential Integrity 831
- 25.6.3 Behavioral Design 834
- 25.7 Object-Oriented Analysis and Design with UML 836
- 25.7.1 UML Diagrams 837
- 25.7.2 Usage of UML in the Methodology for Database Design 842
- Chapter 26 Object-Oriented DBMSs – Concepts 847
- 26.1 Introduction to Object-Oriented Data Models and OODBMSs 849
- 26.1.1 Definition of Object-Oriented DBMSs 849
- 26.1.2 Functional Data Models 850
- 26.1.3 Persistent Programming Languages 854
- 26.1.4 The Object-Oriented Database System Manifesto 857
- 26.1.5 Alternative Strategies for Developing an OODBMS 859
- 26.2 OODBMS Perspectives 860
- 26.2.1 Pointer Swizzling Techniques 862
- 26.2.2 Accessing an Object 865
- 26.3 Persistence 867
- 26.3.1 Persistence Schemes 868
- 26.3.2 Orthogonal Persistence 869
- 26.4 Issues in OODBMSs 871
- 26.4.1 Transactions 871
- 26.4.2 Versions 872
- 26.4.3 Schema Evolution 873
- 26.4.4 Architecture 876
- 26.4.5 Benchmarking 878
- 26.5 Advantages and Disadvantages of OODBMSs 881
- 26.5.1 Advantages 881
- 26.5.2 Disadvantages 883
- Chapter 27 Object-Oriented DBMSs – Standards and Systems 888
- 27.1 Object Management Group 889
- 27.1.1 Background 889
- 27.1.2 The Common Object Request Broker Architecture 891
- 27.1.3 Other OMG Specifications 894
- 27.1.4 Model-Driven Architecture 897
- 27.2 Object Data Standard ODMG 3.0,1999 897
- 27.2.1 Object Data Management Group 897
- 27.2.2 The Object Model 900
- 27.2.3 The Object Definition Language 908
- 27.2.4 The Object Query Language 911
- 27.2.5 Other Parts of the ODMG Standard 917
- 27.2.6 Mapping the Conceptual Design to a Logical (Object-Oriented) Design 920
- 27.3 ObjectStore 921
- 27.3.1 Architecture 921
- 27.3.2 Building an ObjectStore Application 924
- 27.3.3 Data Definition in ObjectStore 926
- 27.3.4 Data Manipulation in ObjectStore 929
- Chapter 28 Object-Relational DBMSs 935
- 28.1 Introduction to Object-Relational Database Systems 936
- 28.2 The Third-Generation Database Manifestos 939
- 28.2.1 The Third-Generation Database System Manifesto 940
- 28.2.2 The Third Manifesto 940
- 28.3 Postgres – An Early ORDBMS 943
- 28.3.1 Objectives of Postgres 943
- 28.3.2 Abstract Data Types 943
- 28.3.3 Relations and Inheritance 944
- 28.3.4 Object Identity 946
- 28.4 SQL:1999 and SQL:2003 946
- 28.4.1 Row Types 947
- 28.4.2 User-Defined Types 948
- 28.4.3 Subtypes and Supertypes 951
- 28.4.4 User-Defined Routines 953
- 28.4.5 Polymorphism 955
- 28.4.6 Reference Types and Object Identity 956
- 28.4.7 Creating Tables 957
- 28.4.8 Querying Data 960
- 28.4.9 Collection Types 961
- 28.4.10 Typed Views 965
- 28.4.11 Persistent Stored Modules 966
- 28.4.12 Triggers 967
- 28.4.13 Large Objects 971
- 28.4.14 Recursion 972
- 28.5 Query Processing and Optimization 974
- 28.5.1 New Index Types 977
- 28.6 Object-Oriented Extensions in Oracle 978
- 28.6.1 User-Defined Data Types 978
- 28.6.2 Manipulating Object Tables 984
- 28.6.3 Object Views 985
- 28.6.4 Privileges 986
- 28.7 Comparison of ORDBMS and OODBMS 986
- Part 8 Web and DBMSs 991
- Chapter 29 Web Technology and DBMSs 993
- 29.1 Introduction to the Internet and Web 994
- 29.1.1 Intranets and Extranets 996
- 29.1.2 e-Commerce and e-Business 997
- 29.2 The Web 998
- 29.2.1 HyperText Transfer Protocol 999
- 29.2.2 HyperText Markup Language 1001
- 29.2.3 Uniform Resource Locators 1002
- 29.2.4 Static and Dynamic Web Pages 1004
- 29.2.5 Web Services 1004
- 29.2.6 Requirements for Web–DBMS Integration 1005
- 29.2.7 Advantages and Disadvantages of the Web–DBMS Approach 1006
- 29.2.8 Approaches to Integrating the Web and DBMSs 1011
- 29.3 Scripting Languages 1011
- 29.3.1 JavaScript and JScript 1012
- 29.3.2 VBScript 1012
- 29.3.3 Perl and PHP 1013
- 29.4 Common Gateway Interface 1014
- 29.4.1 Passing Information to a CGI Script 1016
- 29.4.2 Advantages and Disadvantages of CGI 1018
- 29.5 HTTP Cookies 1019
- 29.6 Extending the Web Server 1020
- 29.6.1 Comparison of CGI and API 1021
- 29.7 Java 1021
- 29.7.1 JDBC 1025
- 29.7.2 SQLJ 1030
- 29.7.3 Comparison of JDBC and SQLJ 1030
- 29.7.4 Container-Managed Persistence (CMP) 1031
- 29.7.5 Java Data Objects (JDO) 1035
- 29.7.6 Java Servlets 1040
- 29.7.7 JavaServer Pages 1041
- 29.7.8 Java Web Services 1042
- 29.8 Microsoft’s Web Platform 1043
- 29.8.1 Universal Data Access 1045
- 29.8.2 Active Server Pages and ActiveX Data Objects 1046
- 29.8.3 Remote Data Services 1049
- 29.8.4 Comparison of ASP and JSP 1049
- 29.8.5 Microsoft .NET 1050
- 29.8.6 Microsoft Web Services 1054
- 29.8.7 Microsoft Office Access and Web Page Generation 1054
- 29.9 Oracle Internet Platform 1055
- 29.9.1 Oracle Application Server (OracleAS) 1056
- Chapter 30 Semistructured Data and XML 1065
- 30.1 Semistructured Data 1066
- 30.1.1 Object Exchange Model (OEM) 1068
- 30.1.2 Lore and Lorel 1069
- 30.2 Introduction to XML 1073
- 30.2.1 Overview of XML 1076
- 30.2.2 Document Type Definitions (DTDs) 1078
- 30.3 XML-Related Technologies 1082
- 30.3.1 DOM and SAX Interfaces 1082
- 30.3.2 Namespaces 1083
- 30.3.3 XSL and XSLT 1084
- 30.3.4 XPath (XML Path Language) 1085
- 30.3.5 XPointer (XML Pointer Language) 1085
- 30.3.6 XLink (XML Linking Language) 1086
- 30.3.7 XHTML 1087
- 30.3.8 Simple Object Access Protocol (SOAP) 1087
- 30.3.9 Web Services Description Language (WSDL) 1088
- 30.3.10 Universal Discovery,Description and Integration (UDDI) 1088
- 30.4 XML Schema 1091
- 30.4.1 Resource Description Framework (RDF) 1098
- 30.5 XML Query Languages 1100
- 30.5.1 Extending Lore and Lorel to Handle XML 1100
- 30.5.2 XML Query Working Group 1101
- 30.5.3 XQuery – A Query Language for XML 1103
- 30.5.4 XML Information Set 1114
- 30.5.5 XQuery 1.0 and XPath 2.0 Data Model 1115
- 30.5.6 Formal Semantics 1121
- 30.6 XML and Databases 1128
- 30.6.1 Storing XML in Databases 1129
- 30.6.2 XML and SQL 1132
- 30.6.3 Native XML Databases 1137
- 30.7 XML in Oracle 1139
- Part 9 Business Intelligence 1147
- Chapter 31 Data Warehousing Concepts 1149
- 31.1 Introduction to Data Warehousing 1150
- 31.1.1 The Evolution of Data Warehousing 1150
- 31.1.2 Data Warehousing Concepts 1151
- 31.1.3 Benefits of Data Warehousing 1152
- 31.1.4 Comparison of OLTP Systems and Data Warehousing 1153
- 31.1.5 Problems of Data Warehousing 1154
- 31.2 Data Warehouse Architecture 1156
- 31.2.1 Operational Data 1156
- 31.2.2 Operational Data Store 1157
- 31.2.3 Load Manager 1158
- 31.2.4 Warehouse Manager 1158
- 31.2.5 Query Manager 1158
- 31.2.6 Detailed Data 1159
- 31.2.7 Lightly and Highly Summarized Data 1159
- 31.2.8 Archive/Backup Data 1159
- 31.2.9 Metadata 1159
- 31.2.10 End-User Access Tools 1160
- 31.3 Data Warehouse Data Flows 1161
- 31.3.1 Inflow 1162
- 31.3.2 Upflow 1163
- 31.3.3 Downflow 1164
- 31.3.4 Outflow 1164
- 31.3.5 Metaflow 1165
- 31.4 Data Warehousing Tools and Technologies 1165
- 31.4.1 Extraction,Cleansing,and Transformation Tools 1165
- 31.4.2 Data Warehouse DBMS 1166
- 31.4.3 Data Warehouse Metadata 1169
- 31.4.4 Administration and Management Tools 1171
- 31.5 Data Marts 1171
- 31.5.1 Reasons for Creating a Data Mart 1173
- 31.5.2 Data Marts Issues 1173
- 31.6 Data Warehousing Using Oracle 1175
- 31.6.1 Oracle9i 1175
- Chapter 32 Data Warehousing Design 1181
- 32.1 Designing a Data Warehouse Database 1182
- 32.2 Dimensionality Modeling 1183
- 32.2.1 Comparison of DM and ER models 1186
- 32.3 Database Design Methodology for Data Warehouses 1187
- 32.4 Criteria for Assessing the Dimensionality of a Data Warehouse 1195
- 32.5 Data Warehousing Design Using Oracle 1196
- 32.5.1 Oracle Warehouse Builder Components 1197
- 32.5.2 Using Oracle Warehouse Builder 1198
- Review Questions 1203
- Exercises 1203
- Chapter 33 OLAP 1204
- 33.1 Online Analytical Processing 1205
- 33.1.1 OLAP Benchmarks 1206
- 33.2 OLAP Applications 1206
- 33.2.1 OLAP Benefits 1208
- 33.3 Representation of Multi-Dimensional Data 1209
- 33.4 OLAP Tools 1211
- 33.4.1 Codd’s Rules for OLAP Tools 1211
- 33.4.2 Categories of OLAP Tools 1214
- 33.5 OLAP Extensions to the SQL Standard 1217
- 33.5.1 Extended Grouping Capabilities 1218
- 33.5.2 Elememtary OLAP Operators 1222
- 33.6 Oracle OLAP 1224
- 33.6.1 Oracle OLAP Environment 1225
- 33.6.2 Platform for Business Intelligence Applications 1225
- 33.6.3 Oracle9i Database 1226
- 33.6.4 Oracle OLAP 1228
- 33.6.5 Performance 1229
- 33.6.6 System Management 1229
- 33.6.7 System Requirements 1230
- Chapter 34 Data Mining 1232
- 34.1 Data Mining 1233
- 34.2 Data Mining Techniques 1233
- 34.2.1 Predictive Modeling 1235
- 34.2.2 Database Segmentation 1236
- 34.2.3 Link Analysis 1237
- 34.2.4 Deviation Detection 1238
- 34.3 The Data Mining Process 1239
- 34.3.1 The CRISP-DM Model 1239
- 34.4 Data Mining Tools 1241
- 34.5 Data Mining and Data Warehousing 1242
- 34.6 Oracle Data Mining (ODM) 1242
- 34.6.1 Data Mining Capabilities 1242
- 34.6.2 Enabling Data Mining Applications 1243
- 34.6.3 Predictions and Insights 1243
- 34.6.4 Oracle Data Mining Environment 1243
- A Users’ Requirements Specification for DreamHome Case Study 1249
- A.1 Branch User Views of DreamHome 1249
- A.1.1 Data Requirements 1249
- A.1.2 Transaction Requirements (Sample) 1251
- A.2 Staff User Views of DreamHome 1252
- A.2.1 Data Requirements 1252
- A.2.2 Transaction Requirements (Sample) 1253
- B Other Case Studies 1255
- B.1 The University Accommodation Office Case Study 1255
- B.1.1 Data Requirements 1255
- B.1.2 Query Transactions (Sample) 1257
- B.2 The EasyDrive School of Motoring Case Study 1258
- B.2.1 Data Requirements 1258
- B.2.2 Query Transactions (Sample) 1259
- B.3 The Wellmeadows Hospital Case Study 1260
- B.3.1 Data Requirements 1260
- B.3.2 Transaction Requirements (Sample) 1266
- C File Organizations and Indexes (extended version on the Web site) 1268
- C.1 Basic Concepts 1269
- C.2 Unordered Files 1270
- C.3 Ordered Files 1271
- C.4 Hash Files 1272
- C.4.1 Dynamic Hashing 1275
- C.4.2 Limitations of Hashing 1276
- C.5 Indexes 1277
- C.5.1 Types of Index 1277
- C.5.2 Indexed Sequential Files 1278
- C.5.3 Secondary Indexes 1279
- C.5.4 Multilevel Indexes 1280
- C.5.5 B+-trees 1280
- C.5.6 Bitmap Indexes 1283
- C.5.7 Join Indexes 1284
- C.6 Clustered and Non-Clustered Tables 1286
- C.6.1 Indexed Clusters 1286
- C.6.2 Hash Clusters 1287
- C.7 Guidelines for Selecting File Organizations 1288
- D When is a DBMS Relational? 1293
- E Programmatic SQL (extended version on the Web site) 1298
- E.1 Embedded SQL 1299
- E.1.1 Simple Embedded SQL Statements 1299
- E.1.2 SQL Communications Area 1301
- E.1.3 Host Language Variables 1303
- E.1.4 Retrieving Data Using Embedded SQL and Cursors 1304
- E.1.5 Using Cursors to Modify Data 1310
- E.1.6 ISO Standard for Embedded SQL 1311
- E.2 Dynamic SQL 1312
- E.3 The Open Database Connectivity (ODBC) Standard 1313
- E.3.1 The ODBC Architecture 1314
- E.3.2 ODBC Conformance Levels 1315
- F Alternative ER Modeling Notations 1320
- F.1 ER Modeling Using the Chen Notation 1320
- F.2 ER Modeling Using the Crow’s Feet Notation 1320
- H Estimating Disk space Requirements On Web site
- I Sample Web Scripts On Web site
BOOK
SUMMARY
Items Found: 316
- CHAPTER 1: DROWNING IN DATA,DYING OF THIRST FOR KNOWLEDGE 1
- Data Deluge and Informational Overload 2
- Database Management Systems (DBMSs) 2
- Storage Capacity 2
- Number of Users 2
- Security 2
- Performance 3
- Scalability 3
- Costs 3
- Recording Data 3
- Oral Records 3
- Pictures 4
- Written Records 4
- Printed Word 4
- All of the Above 4
- Analog versus Digital Data 4
- To Store or Not to Store? 5
- Relational Database Management Systems 6
- IBM DB2 LUW 6
- Oracle 7
- Microsoft SQL Server 7
- Microsoft Access 7
- PostgreSQL 8
- MySQL 8
- HSQLDB and OpenOffi ce BASE 9
- What Is SQL? 9
- The SQL Standard 10
- Dialects of SQL 10
- Not the Only Game in Town 11
- Let There Be Database! 11
- Creating a Table 13
- Getting the Data In: INSERT Statement 14
- Give Me the World: SELECT Statement 16
- Good Riddance: the DELETE Statement 22
- I Can Fix That: the UPDATE Statement 25
- CHAPTER 2: BREAKING AND ENTERING: STRUCTURED INFORMATION 29
- A Really Brief Introduction to Data Modeling 29
- Conceptual Modeling 30
- Logical Modeling 30
- Physical Modeling 31
- Why Can’t Everything Be Text? 31
- Character Data 32
- Fixed Length and Variable Strings 32
- Binary Strings 34
- Character versus Special Files 35
- Numeric Data 36
- Exact Numbers 36
- Approximate Numbers 38
- Literals for the Number 39
- Once Upon a Time: Date and Time Data Types 40
- Binary Data 42
- It’s a Bird,It’s a Plane,It’s … a NULL! 43
- Much Ado About Nothing 43
- None of the Above: More Data Types 46
- BOOLEAN 46
- BIT 46
- XML Data Type 46
- DDL,DML,and DQL: Components of SQL 47
- Refactoring Database TABLE 47
- DROP TABLE 48
- CREATE TABLE 48
- ALTER TABLE 49
- Populating a Table with Diff erent Data Types 52
- Implicit and Explicit Data Conversion 53
- SELECT Statement Revisited 55
- Selecting Literals,Functions,and Calculated Columns 55
- Setting Vertical Limits 56
- Alias: What’s in a Name? 56
- Setting Horizontal Limits 58
- DISTINCT 58
- Get Organized: Marching Orders 59
- ORDER BY 59
- ASC and DESC 60
- TOP and LIMIT 60
- INSERT,UPDATE,and DELETE Revisited 61
- INSERT 61
- SELECT INTO 63
- UPDATE 63
- DELETE 65
- TRUNCATE That Table! 66
- SQL Operators: Agents of Change 67
- Arithmetic and String Concatenation Operators 67
- Comparison Operators 68
- Logical Operators 69
- ALL 70
- ANY | SOME 70
- BETWEEN AND 70
- IN 71
- EXISTS 72
- LIKE 72
- AND 74
- NOT 75
- OR 75
- Assignment Operator 76
- Bitwise Operators 76
- Operator Precedence 77
- CHAPTER 3: A THING YOU CAN RELATE TO — DESIGNING A RELATIONAL DATABASE 79
- Entities and Attributes Revisited 80
- Keys to the Kingdom: Primary and Foreign 81
- Relationship Patterns 83
- Domain Integrity 87
- Am I Normal? Basics of Relational Database Design 89
- Specifying Constraints 92
- Selecting a Flavor For Your Data Model 93
- Data Warehouses and Data Marts 93
- Star and Snowfl ake Schemas 94
- What Could and Does Go Wrong 94
- Working with Multiple Tables 95
- JOIN Syntax 95
- UNION Operator 96
- Dynamic SQL 97
- Ultimate Flexibility,Potential Problems 99
- CHAPTER 4: OVERCOMING THE LIMITATIONS OF SQL 103
- In Numbers,Strength 104
- Building Character 107
- “X” Marks the Spot: Finding the Position of a Character in a String 112
- CHARINDEX 113
- CHAR 113
- SUBSTRING 114
- LENGTH 114
- TRIM,LTRIM,and RTRIM 116
- Date and Time Functions 117
- What Time Is It? 117
- Date Arithmetic 118
- A Glimpse of Aggregate Functions 121
- Conversion Functions 123
- Conversion Between Diff erent Data Types 125
- Conversion Between Diff erent Character Sets 125
- Miscellaneous Functions 126
- Making the CASE 127
- SQL Procedural Extensions 129
- Happy Parsing: Stored Procedures 131
- User-Defi ned Functions (UDFs) 132
- Why Use Procedural Extensions? 134
- Performance and Network Traffi c 134
- Database Security 134
- Code Reusability 135
- CHAPTER 5: GROUPING AND AGGREGATION 137
- Aggregate SQL Functions Revisited 137
- AVG() 137
- COUNT() 139
- MAX() 140
- MIN() 141
- SUM() 142
- Eliminating Duplicate Data 143
- GROUP BY: Where Your Data Belongs 144
- GROUP BY with HAVING Clause 148
- ORDER BY Clause: Sorting Query Output 149
- CHAPTER 6: WHEN ONE IS NOT ENOUGH:
- A QUERY WITHIN A QUERY 155
- What You Don’t Know Might Help You 155
- Subquery in the WHERE Clause 155
- EXISTS Operator 156
- ANY Operator 157
- ALL Operator 157
- Subquery in the SELECT List 158
- Subquery in the FROM Clause 160
- Subquery in the HAVING Clause 161
- Subqueries with INSERT 163
- Subqueries with UPDATE 165
- Subqueries with DELETE 166
- Correlated Query 167
- How Deep the Rabbit Hole Goes: Nesting Subqueries 169
- A Subquery or a JOIN? 170
- CHAPTER 7: YOU BROKE IT, YOU FIX IT: COMBINING DATA SETS 173
- Joins Revisited 173
- INNER JOIN 175
- N-way INNER JOIN 179
- LEFT OUTER JOIN 182
- RIGHT OUTER JOIN 184
- FULL JOIN 185
- Self JOIN: Looking Inside for an Answer 186
- CROSS JOIN (aka Cartesian Product) 187
- State of the UNION 189
- A Point of VIEW 193
- CREATE VIEW 194
- ALTER VIEW 198
- DROP VIEW 198
- Updatable VIEW 198
- WITH CHECK OPTION 200
- Hierarchical Views 201
- Benefi ts and Drawbacks 202
- But Wait, There’s More! 203
- INTERSECT 203
- EXCEPT and MINUS 204
- CHAPTER 8: WHAT ELSE IS THERE,AND WHY? 207
- An INDEX for All Seasons 207
- UNIQUE Index 209
- CLUSTERED Index 209
- An INDEX Destroyed 211
- TABLE Revisited 211
- VIEW Revisited 214
- By Any Other Name: Aliases and Synonyms 214
- Auto-Incremented Values 216
- Identity Columns 217
- Microsoft SQL Server 218
- IBM DB2 220
- PostgreSQL 221
- MySQL 221
- Microsoft Access 222
- OpenOffi ce BASE with HSQLDB 222
- Who Am I: Finding One’s IDENTITY 223
- Sequences 224
- Comparing Identity Columns and Sequences 227
- Triggers 228
- One Happy Family: Working in Heterogeneous Environments 229
- CHAPTER 9: OPTIMIZING PERFORMANCE 231
- Database Performance 231
- Performance Benchmarks 231
- Order of Optimization 233
- Hardware Optimization 234
- Operating System Tune-up 234
- Optimizing RDBMSs 234
- Optimizing Database/Schema 234
- Application Optimization 236
- SQL Optimization 237
- RDBMS-Specifi c Optimization 243
- Oracle 10/11g 244
- IBM DB2 LUW 9.7 244
- Microsoft SQL Server 2008 245
- PostgreSQL 245
- MySQL 246
- Desktop RDBMSs 247
- Microsoft Access 247
- OpenOffi ce BASE with HSQLDB Backend 248
- Your DBA Is Your Friend 249
- CHAPTER 10: MULTIUSER ENVIRONMENT 251
- Sessions 251
- Orphaned Sessions 254
- Transactions 254
- Understanding Locks 262
- SQL Security 264
- Basic Security Mechanisms 265
- Defi ning a Database User 266
- Managing Security with Privileges 268
- Operating System Security Integration 272
- INFORMATION_SCHEMA and SQL System Catalogs 279
- Oracle Data Dictionary 281
- IBM DB2 LUW System Catalogs 282
- Microsoft SQL Server 2008 System Catalog 283
- CHAPTER 11: WORKING WITH UNSTRUCTURED AND SEMISTRUCTURED DATA 287
- SQL and XML 287
- A Brief Introduction to XML 289
- Formatted XML 290
- DTD and Schema 290
- Document Type Defi nition (DTD) 291
- XML Schema Defi nition (XSD) 291
- Namespaces 292
- XML as a DataSource 294
- Accessing XML Documents in an Application 294
- XML Path Language: XPath 294
- XML Query Language: XQuery 294
- Encoding XML 294
- Presenting XML Documents 296
- XSL and XSLT 296
- XML and RDBMSs 296
- Implementation Details 299
- Oracle 11g XML DB 302
- IBM DB 9.7 pureXML 307
- Microsoft SQL Server 311
- PostgreSQL 9.0 316
- MySQL 5.5 317
- XML for RDBMS: Best Practices 318
- All Bits Considered 320
- What Would Google Do? 320
- Getting Binary Data In and Out of the RDBMS Table 323
- Best Practices for Binary Data 325
- SQL and Text Documents 326
- CHAPTER 12: NOT BY SQL ALONE 329
- The Future Is Cloudy 329
- Key/Value Pair 331
- What in the World Is Hadoop? 334
- Google’s BigTable,Base,and Fusion Tables 334
- Amazon SimpleDB 336
- MongoDB 337
- Microsoft SQL Azure 338
- SQL and Business Intelligence 339
- OLAP Rules 340
- ROLAP,MOLAP,and HOLAP 341
- Oracle 11g 342
- IBM DB2 342
- Microsoft SQL Server 343
- XML for Analysis (XMLA) 344
- Elementary,My Dear Watson! 344
- Column-Oriented DBMS 345
- Object Databases 346
- Object-Oriented Programming (OOP) Paradigm 346
- Objects and Classes 346
- Object-Relational Mapping Frameworks 349
- Hibernate/NHibernate 350
- Microsoft LINQ and Entity Framework 350
- APPENDIX A: INSTALLING THE LIBRARY DATABASE 353
- Oracle 10g XE 354
- Installing Library Sample Database with SQL*Plus 354
- Installing with Oracle Web Interface 356
- IBM DB2 9.7 Express-C 360
- IBM Command Editor 360
- IBM Command Window 362
- Microsoft SQL Server 2008 Express 363
- SQL Server Management Studio Express 363
- PostgreSQL 9.0 365
- Installing with pgAdmin III 366
- MySQL 5.1 369
- Installing with the MySQL CommandA-Line Utility 370
- Microsoft Access 2007/2010 371
- OpenOffi ce BASE 3.2 372
- APPENDIX B: INSTALLING RDBMSS SOFTWARE 375
- APPENDIX C: ACCESSING RDBMSS 377
- Oracle 377
- IBM DB2 377
- Microsoft SQL Server 2008 377
- MySQL 378
- PostgreSQL 378
- Microsoft Access 2007/2010 378
- Open Offi ce BASE with HSQLDB 378
- APPENDIX D: ACCESSING RDBMSS WITH THE SQUIRREL UNIVERSAL SQL CLIENT 379
BOOK
SUMMARY
Items Found: 893
- Part I Monitoring and Managing Targets
- Enterprise Monitoring
- Monitoring Overview
- Comprehensive Out of Box Monitoring
- Monitoring: Basics
- Metric Thresholds: Determining When a Monitored Condition is an Issue
- Metric Baselines: Determining Valid Metric Thresholds
- Advanced Threshold Management
- Events: Defining What Conditions are of Interest
- Corrective Actions: Resolving Issues Automatically
- Metric Extensions: Customizing Monitoring
- Blackouts
- Monitoring: Advanced Setup
- Monitoring Templates
- Administration Groups and Template Collections
- Customizing Alert Messages
- Notifications
- Customizing Notifications
- Managing Events,Incidents,and Problems
- Incident Manager
- Incident Rules and Rule Sets
- Connectors
- Accessing Monitoring Information
- Discovering,Promoting,and Adding Targets
- About Discovering,Promoting,and Adding Targets
- About Discovering,Promoting,and Monitoring Hosts and Targets
- What are Targets and Managed Targets?
- What is Discovery?
- What is Promotion?
- What is Monitoring?
- Discovery and Monitoring in Enterprise Manager Lifecycle
- Discovery and Monitoring Process
- Discovering and Promoting All Target Types
- Discovering and Promoting All Target Types Using the Autodiscovery Process
- Meeting the Prerequisites
- Discovering and Adding All Target Types Using the Guided Discovery Process
- Step : Identifying Unmanaged Hosts
- Step : Converting Unmanaged Hosts to Managed Hosts
- Step : Adding Targets
- Discovering and Adding All Target Types By Specifying Target Monitoring Properties
- Step : Indentifying Unmanaged Hosts
- Retrieving Deleted Targets
- Retrieving Deleted Target Types
- Retrieving Deleted Host and Corresponding Management Agent Targets
- Discovering and Promoting Oracle Homes
- Discovering,Promoting,and Adding Database Targets
- Discovering Container Database and Pluggable Database Targets
- Discovering and Promoting CDB and PDB Targets Using Autodiscovery
- Discovering and Adding CDB and PDB Targets Using the Guided Discovery Process
- Discovering and Adding CDB and PDB Targets By Specifying Target Monitoring Properties
- Discovering Cluster Database Targets
- Discovering and Promoting Cluster Database Targets Using Autodiscovery
- Discovering and Adding Cluster Database Targets Using the Guided Discovery
- Process
- Discovering and Adding Cluster Database Targets By Specifying Target
- Monitoring Properties
- Discovering Single Instance Database Targets
- Discovering and Promoting Single Instance Database Targets Using
- Autodiscovery
- Discovering and Adding Single Instance Database Targets Using Guided
- Discovery Process
- Discovering and Adding Single Instance Database Targets By Specifying Target
- Discovering Cluster Targets
- Discovering and Promoting Cluster Targets Using Autodiscovery
- Discovering and Adding Cluster Targets Using the Guided Discovery Process
- Discovering and Adding Cluster Targets By Specifying Target Monitoring Properties
- Discovering Single Instance High Availability Service Targets
- Discovering and Promoting Single Instance High Availability Service Targets Using Autodiscovery
- Discovering and Adding Single Instance High Availability Service Targets Using the Guided Discovery Process
- Discovering and Adding Single Instance High Availability Service Targets By Specifying Target Monitoring Properties
- Discovering Cluster Automatic Storage Management Targets
- Discovering and Promoting Cluster ASM Targets Using Autodiscovery
- Discovering and Adding Cluster ASM Targets Using the Guided Discovery Process
- Discovering and Adding Cluster ASM Targets By Specifying Target Monitoring Properties
- Enabling Autodiscovery of Database Targets
- Discovering,Promoting,and Adding Middleware Targets
- Discovering Weblogic x or x Domains
- Discovering and Promoting Weblogic Domains Using Autodiscovery
- Discovering and Adding WebLogic x or x Domains Using the Guided Discovery Process
- Adding Multiple WebLogic Domains Using EM CLI
- Discovering New or Modified Domain Members
- Enabling Automatic Discovery of New Domain Members
- Manually Checking for New or Modified Domain Members
- Discovering a Standalone Oracle HTTP Server
- Discovering a Standalone Oracle HTTP Server Using the Guided Discovery Process
- Discovering Exalytics Targets
- Discovering and Adding Exalytics System Targets Using the Guided Discovery Process
- Removing Middleware Targets
- Using Incident Management
- Management Concepts
- Event Management
- Incident Management
- Working with Incidents
- Incident Composed of a Single Event
- Incident Composed of Multiple Events
- How are Incidents Created?
- Problem Management
- Rule Sets
- Out of Box Rule Sets
- Rule Set Types
- Rules
- Views
- Summing Up
- Setting Up Your Incident Management Environment
- Setting Up Your Monitoring Infrastructure
- Rule Set Development
- Setting Up Administrators and Privileges
- Monitoring Privileges
- Setting Up Rule Sets
- Creating a Rule Set
- Creating a Rule to Create an Incident
- Creating a Rule to Manage Escalation of Incidents
- Creating a Rule to Escalate a Problem
- Testing Rule Sets
- Subscribing to Receive Email from a Rule
- Receiving Email for Private Rules
- Finding What Needs to be Worked On
- Searching for Incidents
- Setting Up Custom Views
- Sharing/Unsharing Custom Views
- Responding and Working on a Simple Incident
- Responding to and Managing Multiple Incidents,Events and Problems in Bulk
- Searching My Oracle Support Knowledge
- Open Service Request (Problems only)
- Suppressing Incidents and Problems
- Managing Workload Distribution of Incidents
- Reviewing Events on a Periodic Basis
- Creating an Incident Manually
- Advanced Topics
- Automatic Diagnostic Repository (ADR): Incident Flood Control
- Working with ADR Diagnostic Incidents Using Incident Manager
- Incident Flood Control
- Defining Custom Incident Statuses
- Creating a New Resolution State
- Modifying an Existing Resolution State
- Clearing Stateless Alerts for Metric Alert Event Types
- Automatically Clearing Manually Clearable Events
- User reported Events
- Format
- Options
- Examples
- Additional Rule Applications
- Setting Up a Rule to Send Different Notifications for Different Severity States of an Event
- Creating a Rule to Notify Different Administrators Based on the Event Type
- Creating a Rule to Create a Ticket for Incidents
- Creating a Rule to Send SNMP Traps to Third Party Systems
- Event Prioritization
- Root Cause Analysis (RCA) and Target Down Events
- How RCA Works
- Leveraging RCA Results in Incident Rule Sets
- Leveraging RCA Results in Incident Manager
- Leveraging RCA Results in the System Dashboard
- Creating a Rule to Update Incident Priority for Non symptom Events
- Creating Incidents On Non symptom Events
- Introducing a Time Delay
- Moving from Enterprise Manager /g to c
- Monitoring: Common Tasks
- Setting Up an Email Gateway
- Sending Email for Metric Alerts
- Sending SNMP Traps for Metric Alerts
- Sending Events to an Event Connector
- Sending Email to Different Email Addresses for Different Periods of the Day
- Using Notifications
- Setting Up Notifications
- Setting Up a Mail Server for Notifications
- Setting Up E mail for Yourself
- Defining E mail Addresses
- Setting Up a Notification Schedule
- Subscribe to Receive E mail for Incident Rules
- Setting Up E mail for Other Administrators
- E mail Customization
- E mail Customization Reference
- Setting Up Repeat Notifications
- Extending Notification Beyond E mail
- Sending Notifications Using OS Commands and Scripts
- Script Examples
- Migrating pre c OS Command Scripts
- Migrating Metric Alert Event Types
- Migrating Target Availability Event Types
- Migrating Job Status Change Event Types
- Migrating Corrective Action Related OS Scripts
- Notification Type Mapping
- Sending Notifications Using PL/SQL Procedures
- Defining a PL/SQL based Notification Method
- Migrating Pre c PL/SQL Advanced Notification Methods
- Mapping for MGMT_NOTIFY_SEVERITY
- Mapping for MGMT_NOTIFY_JOB
- Mapping for MGMT_NOTIFY_CORRECTIVE_ACTION
- Sending SNMP Traps to Third Party Systems
- SNMP Version Versus SNMP Version
- Working with SNMP V Trap Notification Methods
- Configuring the OMS to Send SNMP Trap Notifications
- Creating/Editing an SNMP V Trap Notification Method
- Editing a User Security Model Entry
- Viewing Available SNMP V Trap Notification Methods
- Deleting an SNMP V Trap Notification Method
- Creating an SNMP V Trap
- SNMP Traps: Moving from Previous Enterprise Manager Releases to c
- Management Information Base (MIB)
- About MIBs
- MIB Definition
- Reading the MIB Variable Descriptions
- Variable Name
- Passing Corrective Action Status Change Information
- Passing Corrective Action Execution Status to an OS Command or Script
- Passing Corrective Action Execution Status to a PLSQL Procedure
- Passing Job Execution Status Information
- Passing Job Execution Status to a PL/SQL Procedure
- Passing Job Execution Status to an OS Command or Script
- Passing User Defined Target Properties to Notification Methods
- Notification Reference
- EMOMS Properties
- Passing Event,Incident,Problem Information to an OS Command or Script
- Environment Variables Common to Event,Incident and Problem
- Event Notification Specific Environment Variables
- Environment Variables Specific to Event Types
- Environment Variables Specific to Incident Notifications
- Environment Variables Specific to Problem Notifications
- Environment Variables Common to Incident and Problem Notifications
- Passing Information to a PL/SQL Procedure
- Notification Payload Elements Specific to Event Types
- Troubleshooting Notifications
- General Setup
- Notification System Errors
- Notification System Trace Messages
- E mail Errors
- OS Command Errors
- SNMP Trap Errors
- PL/SQL Errors
- Using Blackouts
- Working with Blackouts
- Creating a Blackout
- Editing a Blackout
- Viewing Blackouts
- Viewing Blackouts on Targets Monitored by a Specific Management Agent
- Viewing Blackouts from Target Home Pages
- Viewing Blackouts from Groups and Systems Target Administration Pages
- Purging Blackouts that have Ended
- Controlling Blackouts Using the Command Line Utility
- About Blackouts Best Effort
- When to Use Blackout Best Effort
- Managing Groups
- Introduction to Groups
- Overview of Groups
- Overview of Privilege Propagating Groups
- Overview of Dynamic Groups
- Overview of Administration Groups
- Choosing Which Type of Group To Use
- Creating and Editing Groups
- Creating Dynamic Groups
- Adding Members to Privilege Propagating Groups
- Converting Conventional Groups to Privilege Propagating Groups
- Viewing and Managing Groups
- Overview of Group Charts
- Overview of Group Members
- Viewing Group Status History
- About the System Dashboard
- Using Out of Box Reports
- Using Administration Groups
- What is an Administration Group?
- Developing an Administration Group
- Planning
- Implementing Administration Groups and Template Collections
- Creating the Administration Group Hierarchy
- Accessing the Administration Group Home Page
- Defining the Hierarchy
- Defining Template Collections
- Associating Template Collections with Administration Groups
- Changing the Administration Group Hierarchy
- Adding a New Hierarchy Level
- Removing a Hierarchy Level
- Merging Administration Groups
- Removing Administration Groups
- Using Monitoring Templates
- About Monitoring Templates
- Definition of a Monitoring Template
- Default Templates (Auto Apply Templates)
- Viewing a List of Monitoring Templates
- Creating a Monitoring Template
- Editing a Monitoring Template
- Applying Monitoring Templates to Targets
- Applying a Monitoring Template
- Monitoring Template Application Options
- Apply Options
- Metrics with Key Value Settings
- Comparing Monitoring Templates with Targets
- When is a metric between a template and a target considered different ?
- Comparing Metric Settings Using Information Publisher
- Exporting and Importing Monitoring Templates
- Upgrading Enterprise Manager: Comparing Monitoring Templates
- Changing the Monitoring Template Apply History Retention Period
- Using Metric Extensions
- What are Metric Extensions?
- Metric Extension Lifecycle
- Working with Metric Extensions
- Administrator Privilege Requirements
- Granting Create Metric Extension Privilege
- Managing Administrator Privileges
- Managing Administrator Access to Metric Extensions
- Granting Full/Edit Privileges on a Metric Extension
- Revoking Access Privileges on a Metric Extension
- Transferring Metric Extension Ownership
- Creating a New Metric Extension
- Creating a New Metric Extension (Create Like)
- Editing a Metric Extension
- Creating the Next Version of an Existing Metric Extension
- Importing a Metric Extension
- Exporting a Metric Extension
- Deleting a Metric Extension
- Deploying Metric Extensions to a Group of Targets
- Creating an Incident Rule to Send Email from Metric Extensions
- Updating Older Versions of Metric Extensions Already deployed to a Group of Targets
- Creating Repository side Metric Extensions
- Adapters
- OS Command Adapter Single Column
- OS Command Adapter Multiple Values
- OS Command Adapter Multiple Columns
- SQL Adapter
- SNMP (Simple Network Management Protocol) Adapter
- JMX Adapter
- Converting User defined Metrics to Metric Extensions
- Overview
- Commands
- Metric Extension Command Line Verbs
- Accessing the Advanced Threshold Management Page
- Adaptive Thresholds
- Registering Adaptive Threshold Metrics
- Standard Registration Method
- Quick Configuration Method
- Configuring Adaptive Thresholds
- Determining whether Adaptive Thresholds are Correct
- Testing Adaptive Metric Thresholds
- Deregistering Adaptive Threshold Metrics
- Setting Adaptive Thresholds using Monitoring Templates
- Time based Static Thresholds
- Registering Time based Static Thresholds
- Deregistering Time based Static Thresholds
- Determining What is a Valid Metric Threshold
- Utilizing the Job System and Corrective Actions
- Job System Purpose and Overview
- What Are Job Executions and Job Runs?
- Job Executions
- Job Runs
- Operations on Job Executions and Job Runs
- Preliminary Considerations
- Administrator Roles
- Creating Scripts
- Sharing Job Responsibilities
- Submitting Jobs for Groups
- Creating Jobs
- Selecting a Job Type
- Creating an OS Command Job
- Specifying a Single Operation
- Specifying a Script
- Access Level Rules
- Creating a SQL Script Job
- Specifying Targets
- Specifying Options for the Parameters Page
- Specifying Host and Database Credentials
- Returning Error Codes from SQL Script Jobs
- Creating a Multi task Job
- Job Capabilities
- Specifying Targets for a Multi task Job
- Adding Tasks to the Job
- Viewing and Analyzing Job Status
- Generating Job Event Criteria
- Enabling Events For Job Status,Status Severity,and Targetless Jobs
- Adding Targets To Generate Events For Job Status
- Creating Event Rules For Job Status Change
- Creating Job Status Change Event Rules For Jobs
- Creating Job Status Change Event Rules For Targets
- Using Diagnostic Tools
- Enabling Job Logging
- Viewing Job Logging
- Debugging a Failed Job
- Checking for Incidents Related to a Failed Job
- Packaging an Incident Generated by a Job Step
- Viewing Remote Log Files
- Diagnosing Problems with Cloud Control Management Tools
- Health Overview
- Repository Home Page
- Management Services and Repository: All Metrics
- OMS and Repository: Diagnostic Metrics
- OMS and Repository: Charts
- Management Servers and Job Activity Details Pages
- Job System Reports
- Creating Corrective Actions
- Providing Credentials
- Creating Corrective Actions for Metrics
- Creating a Library Corrective Action
- Specifying Access to Corrective Actions
- Defining or Modifying Access
- Setting Up Notifications for Corrective Actions
- Providing Agent side Response Actions
- Specifying Commands and Scripts
- Using Target Properties in Commands
- Using Advanced Capabilities
- Viewing the Details of a Corrective Action Execution
- Part II Administering Cloud Control
- Maintaining Enterprise Manager
- Overview: Managing the Manager
- Viewing Enterprise Manager Topology and Charts
- Determining Enterprise Manager Page Performance
- Repository
- Repository Tab
- Metrics Tab
- Schema Tab
- Controlling and Configuring Management Agents
- Manage Cloud Control Agents Page
- Agent Home Page
- Controlling a Single Agent
- Configuring Single Management Agents
- Controlling Multiple Management Agents
- Configuring Multiple Agents
- Upgrading Multiple Management Agents
- Management Servers
- Maintaining and Troubleshooting the Management Repository
- Management Repository Deployment Guidelines
- Management Repository Data Retention Policies
- Management Repository Default Aggregation and Purging Policies
- Management Repository Default Aggregation and Purging Policies for Other Management Data
- Modifying the Default Aggregation and Purging Policies
- How to Modify the Retention Period of Job History
- DBMS_SCHEDULER Troubleshooting
- Dropping and Recreating the Management Repository
- Dropping the Management Repository
- Recreating the Management Repository
- Using a Connect Descriptor to Identify the Management Repository Database
- Troubleshooting Management Repository Creation Errors
- Package Body Does Not Exist Error While Creating the Management Repository
- Server Connection Hung Error While Creating the Management Repository
- General Troubleshooting Techniques for Creating the Management Repository
- Cross Platform Enterprise Manager Repository Migration
- Common Prerequisites
- Methodologies
- Cross Platform Transportable Database
- Migration Using Physical Standby
- Post Migration Verification
- Updating Cloud Control
- Using Self Update
- What Can Be Updated?
- Setting Up Self Update
- Setting Up Enterprise Manager Self Update Mode
- Assigning Self Update Privileges to Users
- Setting Up the Software Library
- Setting My Oracle Support Preferred Credentials
- Registering the Proxy Details for My Oracle Support
- Setting Up the EM CLI Utility (Optional)
- Applying an Update
- Applying an Update in Online Mode
- Applying an Update in Offline Mode
- Accessing Informational Updates
- Acquiring or Updating Management Agent Software
- Configuring a Software Library
- Overview of Software Library
- Users,Roles,and Privileges
- What’s New in Software Library
- Performing Software Library Tasks Using EM CLI Verbs or in Graphical Mode
- Software Library Storage
- Upload File Locations
- Referenced File Location
- Prerequisites for Configuring Software Library
- Configuring Software Library Storage Location
- Configuring an OMS Shared Filesystem Location
- Configuring an OMS Agent Filesystem Location
- Configuring a Referenced File Location
- Configuring Software Library on a Multi OMS System
- Using Software Library Entities
- Tasks Performed Using the Software Library Home Page
- Organizing Entities
- Creating Entities
- Creating Generic Components
- Creating Directives
- Customizing Entities
- Managing Entities
- Accessing Software Library Home Page
- Accessing Software Library Administration Page
- Granting or Revoking Privileges
- Moving Entities
- Changing Entity Maturity
- Adding Notes to Entities
- Adding Attachments to Entities
- Viewing,Editing,and Deleting Entities
- Purging Deleted Entities
- Searching Entities
- Exporting Entities
- Importing Entities
- Staging Files Associated With an Entity
- Maintaining Software Library
- Periodic Maintenance Tasks
- Re Importing Oracle Owned Entity Files
- Removing (and Migrating) Software Library Storage Location
- Removing a Referenced Storage Location
- Deactivating and Activating a Storage Location
- Scheduling Purge Job
- Backing Up Software Library
- Managing Plug Ins
- Getting Started
- Introduction to Plug ins
- Enterprise Manager c Extensibility Paradigm
- Plug Ins
- Plug Ins Deployed by Default
- Plug In Releases
- Roles Required to Manage Plug Ins
- Workflow of Plug In Deployment
- Introduction to Plug In Manager
- Accessing Plug In Manager
- Performing Operations Using Plug In Manager
- Knowing Your Plug Ins
- Customizing Your View
- Customizing Displayed Plug Ins
- Customizing Displayed Columns
- Checking the Availability of Plug Ins
- Viewing Information about Plug Ins
- Differentiating Plug In Releases from Enterprise Manager Platform Releases
- Identifying Plug In ID
- Viewing Targets and Operating Systems Certified for Deployed Plug Ins
- Viewing Plug In Dependencies
- Verifying Deployed Plug Ins
- Downloading,Deploying,and Upgrading Plug Ins
- Downloading Plug Ins
- Downloading Plug Ins in Online Mode
- Downloading Plug Ins in Offline Mode
- Importing Catalog Archives
- Importing Plug In Archives
- Deploying Plug Ins to Oracle Management Service (Reduce OMS Restart time and Downtime)
- Tracking the Deployment Status of Plug Ins on Oracle Management Service
- Upgrading Plug Ins Deployed to Oracle Management Service
- Upgrading Across Plug In Versions Deployed to Oracle Management Service
- Upgrading Across Plug In Revisions Within a Plug In Version Deployed to Oracle
- Management Service
- Deploying Plug Ins on Oracle Management Agent
- Tracking the Deployment Status of Plug Ins on Oracle Management Agent
- Upgrading Plug Ins Deployed to Oracle Management Agent
- Undeploying Plug Ins
- Undeploying Plug Ins from Oracle Management Service
- Undeploying Plug Ins from Oracle Management Agent
- Advanced Operations with Plug Ins
- Re deploying Plug Ins on Oracle Management Agent
- Deploying Plug In Patches While Deploying or Upgrading Management Agent
- (Create Custom Plug In Update)
- Creating Custom Plug In Update Using EMCLI
- Creating Custom Plug In Update Using EDK
- Troubleshooting
- Understanding Plug In Homes
- Troubleshooting OMS Plug In Deployment and Upgrade Issues
- Troubleshooting OMS Plug In Deployment Issues
- Rollback and Resume OMS Plug In Upgrade
- Troubleshooting Management Agent Plug In Deployment and Upgrade Issues
- Troubleshooting Management Agent Plug In Deployment Issues
- Troubleshooting Management Agent Plug In Upgrade Issues
- Patching Oracle Management Service and the Repository
- OPatch Automation
- Supported OMS Configurations and OPatchauto Patchability
- OUI Inventory Configurations
- Supported Patch Format
- Supported Patching Methodologies
- Required OPatchauto Parameters
- Creating a Property File
- Prerequisites for Running OPatchauto
- Using OPatchauto
- My Oracle Support: Searching for Patches
- Running opatchauto apply
- Running opatchauto rollback
- Running opatchauto lspatches
- Running opatchauto version
- Patching a Standby OMS System
- OPatchauto Command Syntax
- Apply
- Rollback
- lspatches
- version
- checkApplicable
- saveConfigurationSnapshot
- Standby OMS Patching
- OPatchauto Troubleshooting Architecture
- OPatchauto Log Management Architecture
- Logs for Oracle Support
- OPatchauto: Cases Analysis,Error Codes,and Remedies/Suggestions
- OPatchauto: External Utilities Error Codes
- Special Error Cases for OPatchauto OMS Automation
- Multi OMS Execution for UNIX based Systems
- Features in OPatchauto Release and Above
- Resume capability in Single OMS Configuration
- Resume Capability in Multi OMS Configuration
- Patching Oracle Management Agents
- Automated Management Agent Patching Using Patch Plans (Recommended)
- Advantages of Automated Management Agent Patching
- Accessing the Patches and Updates Page
- Viewing Patch Recommendations
- Searching for Patches
- Searching for Patches On My Oracle Support
- Searching for Patches in Software Library
- Applying Management Agent Patches
- Verifying the Applied Management Agent Patches
- Management Agent Patching Errors
- Oracle Home Credentials Are Not Set
- Management Agent Target Is Down
- Patch Conflicts Are Detected
- User Is Not a Super User
- Patch Is Not Staged or Found
- Manual Management Agent Patching
- Personalizing Cloud Control
- Personalizing a Cloud Control Page
- Customizing a Region
- Setting Your Homepage
- Starting and Stopping Enterprise Manager Components
- Controlling the Oracle Management Agent
- Starting,Stopping,and Checking the Status of the Management Agent on UNIX
- Starting and Stopping the Management Agent on Windows
- Checking the Status of the Management Agent on Windows
- Troubleshooting Management Agent Startup Errors
- Management Agent starts up but is not ready
- Management Agent fails to start due to time zone mismatch between agent and OMS
- Management Agent fails to start due to possible port conflict
- Management Agent fails to start due to failure of securing or unsecuring
- Controlling the Oracle Management Service
- Controlling the Management Service on UNIX
- Controlling the Management Service on Windows
- Troubleshooting Oracle Management Service Startup Errors
- Setting Java Memory Arguments for Oracle Management Service
- Controlling JVMD and ADP Engines
- Controlling JVMD Engines
- Controlling ADP Engines
- Guidelines for Starting Multiple Enterprise Manager Components on a Single Host
- Starting and Stopping Oracle Enterprise Manager c Cloud Control
- Starting Cloud Control and All Its Components
- Stopping Cloud Control and All Its Components
- Additional Management Agent Commands
- Uploading and Reloading Data to the Management Repository
- Specifying New Target Monitoring Credentials
- Listing the Targets on a Managed Host
- Changing the Management Agent Time Zone
- Reevaluating Metric Collections
- Enterprise Manager Command Line Utility Commands
- Executing EMCTL Commands
- EMCTL Commands for OMS
- EMCTL Commands for Management Agent
- EMTCL Security Commands
- EMCTL Secure Commands
- Security diagnostic commands
- EMCTL EM Key Commands
- Configuring Authentication
- Configuring OSSO Authentication
- Configuring OAM Authentication
- Configuring LDAP (OID and AD) Authentication
- Configuring Repository Authentication (Default Authentication)
- EMCTL HAConfig Commands
- EMCTL Resync Commands
- EMCTL Connector Command
- EMCTL Patch Repository Commands
- EMCTL Commands for Windows NT
- EMCTL Partool Commands
- EMCTL Plug in Commands
- Syncing with OPSS Policy Store
- Using emctllog File to Troubleshoot
- Locating and Configuring Enterprise Manager Log Files
- Managing Log Files
- Viewing Log Files and Their Messages
- Restricting Access to the View Log Messages Menu Item and Functionality
- Searching Log Files
- Searching Log Files: Basic Searches
- Searching Log Files: Advanced Searches
- Downloading Log Files
- Managing Saved Searches
- Saving Searches
- Retrieving Saved Searches
- Locating Management Agent Log and Trace Files
- About the Management Agent Log and Trace Files
- Structure of Agent Log Files
- Locating the Management Agent Log and Trace Files
- Setting Oracle Management Agent Log Levels
- Modifying the Default Logging Level
- Setting gcagentlog
- Setting gcagent_errorlog
- Setting the Log Level for Individual Classes and Packages
- Setting gcagent_mdulog
- Setting the TRACE Level
- Locating and Configuring Oracle Management Service Log and Trace Files
- About the Oracle Management Service Log and Trace Files
- Locating Oracle Management Service Log and Trace Files
- Controlling the Size and Number of Oracle Management Service Log and Trace Files
- Controlling the Contents of the Oracle Management Service Trace File
- Controlling the Oracle WebLogic Server and Oracle HTTP Server Log Files
- Monitoring Log Files
- About Log Viewer
- Overview of WebLogic Server and Application Deployment Log File Monitoring
- Enabling Log File Monitoring
- Configuring Log File Monitoring
- Viewing Alerts from Log File Monitoring
- Configuring Log Archive Locations
- Configuring and Using Services
- Introduction to Services
- Defining Services in Enterprise Manager
- Creating a Service
- Creating a Generic Service Test Based
- Creating a Generic Service System Based
- Creating an Aggregate Service
- Monitoring a Service
- Viewing the Generic / Aggregate Service Home Page
- Viewing the Performance / Incidents Page
- Viewing the SLA Dashboard
- Viewing the Service Topology
- Sub Services
- Configuring a Service
- Availability Definition (Generic and Aggregate Service)
- Root Cause Analysis Configuration
- Getting the Most From Root Cause Analysis
- System Association
- Monitoring Settings
- Service Tests and Beacons
- Defining Additional Service Tests
- Deploying and Using Beacons
- Configuring the Beacons
- Creating an ATS Service Test Using OATS Load Script
- Performance Metrics
- Rule Based Target List
- Static Based Target List
- Usage Metrics
- Using the Transaction Recorder
- Setting Up and Using Service Level Agreements
- Actionable Item Rules for SLAs
- Creating a Service Level Objective
- Lifecycle of an SLA
- Viewing the Status of SLAs for a Service
- Defining Custom SLA Business Calendars
- Using the Services Dashboard
- Viewing the All Dashboards Page
- Viewing the Dashboard Details Page
- Customizing and Personalizing the Dashboard
- Viewing the Dashboard Service Details Page
- Using the Test Repository
- Viewing the Test Repository
- Editing an ATS Script
- Configuring Service Levels
- Defining Service Level Rules
- Viewing Service Level Details
- Configuring a Service Using the Command Line Interface
- Troubleshooting Service Tests
- Verifying and Troubleshooting Forms Transactions
- Troubleshooting Forms Transaction Playback
- Troubleshooting Forms Transaction Recording
- Verifying and Troubleshooting Web Transactions
- Introducing Enterprise Manager Support for SNMP
- Benefits of SNMP Support
- About the SNMP Management Station
- How Enterprise Manager Supports SNMP
- Sending SNMP Trap Notifications
- About the Management Information Base (MIB)
- Monitoring External Devices Using SNMP
- About SNMP Receivelets
- About SNMP Fetchlets
- About Metric Extensions
- Part III Security
- Configuring Security
- Part IV Generating Reports
- Using Information Publisher
- About Information Publisher
- Out of Box Report Definitions
- Custom Reports
- Creating Custom Reports
- Report Parameters
- Report Elements
- Scheduling Reports
- Flexible Schedules
- Storing and Purging Report Copies
- E mailing Reports
- Sharing Reports
- Creating Usage Tracking Reports
- Usage Tracking Reports
- Collecting Data for Database Usage Tracking
- Setting Database Usage Tracking Credentials
- Enabling/Disabling the Metric Collection using Monitoring Templates
- Enabling/Disabling the Metric Collection using the Command Line Interface
- Setting up EM CLI login
- Enabling/disabling the metric collection
- Using EM CLI to list all the database targets
- Using SQL to verify collection status
- Creating a Database Usage Tracking Report
- Generating Database Usage Tracking Report
- Configuring Business Intelligence Publisher (BI Publisher)
- Running Usage Tracking Reports:
- Host Usage Tracking Reports
- Host Usage Tracking Details Report
- Part V Accessing Enterprise Manager via Mobile Devices
- Remote Access To Enterprise Manager
- Reviewing System Requirements
- Performing Initial Setup
- Connecting the First Time
- Encountering the Login Screen
- Managing Settings
- Using Cloud Control Mobile in Incident Manager
- Working in Cloud Control Mobile
- Viewing Incidents and Problems
- Changing Views
- Performing Actions
- Learning Tips and Tricks
- Connecting to Enterprise Manager Desktop Version
- Part VI Configuring Enterprise Manager for High Availability
- A oraEMNGEvent A
- A oraEMNGEventIndex A
- A oraEMNGEventNotifType A
- A oraEMNGEventMessage A
- A oraEMNGEventMessageURL A
- A oraEMNGEventSeverity A
- A oraEMNGEventSeverityCode A
- A oraEMNGEventRepeatCount A
- A oraEMNGEventActionMsg A
- A oraEMNGEventOccurrenceTime A
- A oraEMNGEventReportedTime A
- A oraEMNGEventCategories A
- A oraEMNGEventCategoryCodes A
- A oraEMNGEventType A
- A oraEMNGEventName A
- A oraEMNGAssocIncidentId A
- A oraEMNGAssocIncidentOwner A
- A oraEMNGAssocIncidentAcked A
- A oraEMNGAssocIncidentStatus A
- A oraEMNGAssocIncidentPriority A
- A oraEMNGAssocIncidentEscLevel A
- A oraEMNGEventTargetName A
- A oraEMNGEventTargetNameURL A
- A oraEMNGEventTargetType A
- A oraEMNGEventHostName A
- A oraEMNGEventTargetOwner A
- A oraEMNGEventTgtLifeCycleStatus A
- A oraEMNGEventTargetVersion A
- A oraEMNGEventUserDefinedTgtProp A
- A oraEMNGEventSourceObjName A
- A oraEMNGEventSourceObjNameURL A
- A oraEMNGEventSourceObjType A
- A oraEMNGEventSourceObjSubType A
- A oraEMNGEventSourceObjOwner A
- A oraEMNGEventCAJobName A
- A oraEMNGEventCAJobStatus A
- A oraEMNGEventCAJobOwner A
- A oraEMNGEventCAJobStepOutput A
- A oraEMNGEventCAJobType A
- A oraEMNGEventRuleSetName A
- A oraEMNGEventRuleName A
- A oraEMNGEventRuleOwner A
- A oraEMNGEventSequenceId A
- A oraEMNGEventRCADetails A
- A oraEMNGEventContextAttrs A
- A oraEMNGEventUserComments A
- A oraEMNGEventUpdates A
- A oraEMNGEventTypeAttr( ) A
- A oraEMAlertTable A
- A oraEMAlertTargetName A
- A oraEMAlertTargetType A
- A oraEMAlertHostName A
- A oraEMAlertMetricName A
- A oraEMAlertKeyName A
- A oraEMAlertKeyValue A
- A oraEMAlertTimeStamp A
- A oraEMAlertSeverity A
- A oraEMAlertMessage A
- A oraEMAlertRuleName A
- A oraEMAlertRuleOwner A
- A oraEMAlertMetricValue A
- A oraEMAlertContext A
- A oraEMAlertCycleGuid A
- A oraEMAlertRepeatCount A
- A oraEMAlertUDTargetProperties A
- A oraEMAlertAck A
- A oraEMAlertAckBy A
- A oraEMAlertNotifType A
- A oraEMAlertViolationGuid A
- A oraEMJobAlertTable A
- A oraEMJobAlertJobName A
- A oraEMJobAlertJobOwner A
- A oraEMJobAlertJobType A
- A oraEMJobAlertJobStatus A
- A oraEMJobAlertTargets A
- A oraEMJobAlertTimeStamp A
- A oraEMJobAlertRuleName A
- A oraEMJobAlertRuleOwner A
- A oraEMJobAlertMetricName A
- A oraEMJobAlertMetricValue A
- A oraEMJobAlertContext A
- A oraEMJobAlertKeyName A
- A oraEMJobAlertKeyValue A
- A oraEMJobAlertSeverity A
- A oraEMJobAlertJobId A
- A oraEMJobAlertJobExecId A
- B MIB Definition B
- C Pre c Enterprise Manager Metric Alerts C
- C Pre C Target Availability Alerts C
- C Pre C Corrective Action Results for Metric Alerts C
- C Corrective Action Results for Target Availability C
- C Job Status Change C
- D Target Availability State Changes D
- D Target Status: Real time Updates D
BOOK
SUMMARY
Items Found: 418
- Chapter 1: Introduction
- Requirements
- For Windows and UNIX/Linux Users.
- Background
- How to Use This Book.
- Organization of This Book
- Java Objects and Oracle Database Structures
- Chapter Review.
- Chapter 2: Oracle Database Security
- Finding a Test Oracle Database.
- Working from an Existing Oracle Database
- Oracle Users and Schemas.
- SQL*Plus,SQL Developer,JDeveloper,or TOAD.
- Organization of the Next Few Sections
- Working as the SYS User
- System Privileges
- Roles
- Security Administrator User
- Security Administrator Role
- The Audit Trail
- The Data Dictionary
- Working as the Security Administrator
- Acquire secadm_role from a SQL*Plus Local Connection
- Toggle Between Roles.
- Create an Application Security User
- Create an Application User
- Create the HR View Role
- Audit Changes to Security Administrator Procedures
- Audit Failed Attempts to Access HR Data
- Working as the HR Schema User
- Sensitive Data in the HR Sample Schema.
- Public View of Employees.
- Sensitive View of EMPLOYEES
- Test Application User Access
- Audit Trail Logs for the Sensitive View
- Regarding Synonyms.
- Chapter 3: Secure Java Development Concepts
- Java Development Kit
- Oracle Java Database Connectivity
- JAR File Directory Separator.
- Java Packages
- Development at Command Prompt
- Environment
- Beginning Java Syntax
- Byte Code Compilation and the Java Virtual Machine
- Java Code and Syntax Concepts
- Methods
- Values
- Members
- Objects
- Classes and Null
- Garbage Collection
- Primitives.
- Strings
- Static Modifier and the main() Method
- Public and Private Modifiers.
- Exceptions
- Exception Handling Syntax
- Exception Handling Approaches
- Java Virtual Machine Sandbox
- Chapter 4: Java Stored Procedures
- Java Stored Procedure Example
- Acquiring the Privilege to Load a Java Stored Procedure
- Loading Java in the Oracle Database
- Handling Exceptions in a Java Stored Procedure.
- Calling Oracle Database from Java
- Method Syntax in Java Stored Procedures
- Calling Java from Oracle Database
- Installing and Testing the Example Code
- Review The Roster of Participants
- Cleaning Up
- The Oracle Java Virtual Machine
- Oracle JVM Based on Java SE 1.5
- A Separate JVM for Each Oracle Session
- Oracle JVM Sandbox.
- Auto-Commit Disabled in the Oracle JVM
- Chapter 5: Public Key Encryption
- Generate Keys on the Client
- RSA Public Key Cryptography
- Java Code to Generate and Use RSA Keys.
- Creating a Set of Keys
- Hand the Public Key Across the Network
- Serialize Objects
- Building the Public Key from Artifacts.
- Generating the RSA Cipher
- Using the RSA Cipher.
- Getting RSA Public Key Artifacts
- Using Static Methods and Private Constructor
- Instantiating a Connection Member from a Static Initializer
- Using One Code for Both Client and Server
- Testing on the Client
- Writing the main() Method
- Running the Code
- Key Exchange
- Creating a Function to Encrypt Data with Public Key
- Creating a Procedure to get SYSDATE in Encrypted Form
- Loading OracleJavaSecure Java into Oracle Database
- Encrypting Data with Public Key
- Use Stacked Calls
- Decrypting Data with Private Key
- Testing on Client and Server.
- Using IN and OUT Parameters in an OracleCallableStatement
- Handle Errors Reported by Oracle Database
- Decrypting at the Client
- Running Our Code Again.
- Observing the Results
- Removing the Demonstration Oracle Structures
- Chapter 6: Secret Password Encryption
- Approach
- Java Code for Secret Password Encryption.
- Sharing the Artifacts of a Secret Password Key.
- Initializing Static Class Members
- Evaluating the Java 1.5 Password-Based Encryption Bug
- Coding an Automatic Upgrade: Negotiated Algorithm
- Generating the Password Key
- Encrypting with the Public RSA Key
- Returning Secret Password Key Artifacts to the Client
- Encrypting Data with Our Secret Password.
- Oracle Structures for Secret Password Encryption
- Package to Get Secret Password Artifacts and Encrypted Data
- Application Security Package Specification
- Application Security Package Body: Functions
- Application Security Package Body: Procedures
- Java Methods for Secret Password Decryption
- Decrypting Data Using the Secret Password Key.
- Decrypting the DES Passphrase using RSA Private Key.
- Ancillary Methods for Array Conversion
- Method Used to Show Actual Algorithm.
- Testing DES Encryption on the Client Only
- Observing the Results.
- Coding to Test Client/Server Secret Password Encryption
- Setting the Code to Test Server as well as Client.
- Consider the Server Portion of the main() Method
- Getting the DES Secret Password from Oracle.
- Seeing the Negotiated Algorithm for Password-Based Encryption
- Calling Oracle Database to get Encrypted Data.
- Testing Oracle Database Encrypt and Local Decrypt Data
- Sending Encrypted Data to Oracle.
- Testing Our Secure Client/Server Data Transmission.
- Chapter 7: Data Encryption in Transit
- Security Administrator Activities
- Granting More System Privileges to the Application Security User.
- Permitting Users to Execute Packages in Other Schemas
- Application Security User Activities.
- Creating a Table for Error Logging
- Creating a Table for Managing Our Error Log Table
- Creating an Error Log Management Procedure
- Creating a Trigger to Maintain the Error Log Table
- Testing the Trigger
- Updating the Application Security Package
- Creating an Error Logging Procedure
- Executing Package Specification and Body.
- Methods for Using and Testing Encryption in Transit
- Method to Build the Secret Password Key
- Temporary Method to Reset All Keys
- Loading Updated OracleJavaSecure Class into Oracle
- Security Structures for the HR User
- Exploring Privileges That Enable HR Tasks
- Creating the HR Security Package.
- Selecting Sensitive Data Columns from EMPLOYEES
- Selecting All Data as a Single Sensitive String
- Selecting Sensitive Data for an Employee ID
- Revising Procedure to Get Shared Passphrase
- Updating Sensitive Data Columns in EMPLOYEES
- Avoiding SQL Injection.
- Demonstrating Failure to SQL Inject in Stored Procedure
- Executing the HR Package Specification and Body
- Inserting an EMPLOYEES Record: Update a Sequence
- Demonstrations and Tests of Encrypted Data Exchange
- Some Preliminary Steps
- Selecting Encrypted Data from EMPLOYEES
- Selecting All Columns in Encrypted String
- Sending Encrypted Data to Oracle Database for Insert/Update
- Selecting a Single Row from EMPLOYEES
- Selecting EMPLOYEES Data by Last Name: Try SQL Injection
- Selecting EMPLOYEES Data by RAW: Try SQL Injection.
- Testing Encryption Failure with New Client Keys
- Testing Failure with New Oracle Connection.
- Some Closing Remarks
- Executing the Demonstrations and Tests
- Demonstrating Scenarios
- Querying Employees to See Updates
- Packaging Template to Implement Encryption
- Template for Oracle Application Security Structures
- Template for Java Calls to Application Security
- Java Archive for Use by Applications
- Don’t Stop Now.
- Chapter 8: Single Sign-On
- Another Layer of Authentication?
- Who Is Logged-In on the Client?
- Find a Better Source of OS User Identity
- Use NTSystem or UnixSystem to Get Identity
- Do Cross-Platform-Specific Coding with Reflection
- Assure More Stringent OS Identity
- Access Oracle Database as Our Identified User
- Examine the Oracle SSO Options for Programmers.
- Set a Client Identifier
- Prepare to Access HR Data
- Update p_check_hrview_access Procedure,Non-Proxy Sessions
- Assure Client Identifier and OS_USER
- Audit Activity with Client Identifier Set
- Proxy Sessions.
- Create Individual Person Users in Oracle
- Proxy from Users IDENTIFIED EXTERNALLY.
- Establish a Proxy Session
- Update p_check_hrview_access Procedure,Proxy Sessions
- Audit Proxy Sessions
- Using Connection Pools
- Proxy Connections from an OCI Connection Pool
- Proxy Sessions from a Thin Client Connection Pool
- Universal Connection Pool
- Application Use of Oracle SSO
- Our Example Application Oracle SSO.
- Updates to OracleJavaSecure
- A Code Template to Give Developers.
- Chapter 9: Two-Factor Authentication.
- Get Oracle Database to Send E-Mail.
- Installing UTL_MAIL
- Granting Access to UTL_MAIL
- Testing Sending E-Mail.
- Getting Oracle Database to Browse Web Pages
- Delegating Java Policy to Security Administrator.
- Permitting Application Security User to Read Web Pages.
- The Two-Factor Authentication Process
- Security Considerations for Two-Factor Distribution Avenues
- Security Issues with Two-Factor Delivery to E-Mail.
- Security Issues with Two-Factor Delivery to Pagers
- Security Issues with Two-Factor Delivery to Cell Phones
- Preferred Two-Factor Delivery
- Oracle Structures Supporting Two-Factor Authentication.
- Creating the SMS Carrier Host Table
- Creating a Table of Employee Mobile Numbers
- Accessing HR Tables from Application Security Procedures.
- Create the Two-Factor Codes Cache Table
- Testing Cache Aging
- Verifying Current Cached Two-Factor Pass Code
- Sending Two-Factor Pass Codes
- Updating the Secure Application Role,HRVIEW_ROLE Procedure
- Update OracleJavaSecurity.java for Two-Factor Authentication
- Setting Some Company-Specific Addresses
- Compile Two-Factor Delivery Route Codes: Binary Math
- Exploring a Method to Distribute the Two-Factor Codes
- Distributing the Code to SMS
- Distributing the Code to Pager URL
- Distributing the Code to E-Mail
- Testing Two-Factor Authentication
- Updating OracleJavaSecure Java in Oracle.
- Editing the Test Code
- Planning to Pass the Two-Factor Code as an Argument to Main
- Planning to Acquire the Secure Application Role
- Running the Tests and Observing the Results
- Chapter 10: Application Authorization
- Secure Application Role Procedure for Multiple Applications
- Rebuild Two-Factor Cache Table for Multiple Applications.
- Update Two-Factor Code Functions to Use Application ID
- Move Test for SSO to Separate Function.
- Add an Oracle Package for Use Only by Application Security
- Add Helper Function to Get APP_ROLE
- Replace Procedure for hrview_role Access with Dynamic Procedure
- Rewrite and Refactor Method to Distribute Two-Factor Code
- Procedure to get Employee Addresses for Two-Factor Code Delivery
- Stored Procedure to Update Two-Factor Code Cache
- Changes to the Method to Distribute Two-Factor Codes.
- Update to Two-Factor Distribution Formats
- Application Authorization Overview.
- User for Application Authorization
- A New Profile with Limits and Unlimited
- Application Verification User
- The Application Verification Logon Trigger.
- Application Verification Logon Procedure.
- Get Off Function.
- Function to Find Database User.
- Proxy Through Application Verification and Other Proxies
- Auditing Application Verification
- Structures for Application Authorization.
- More Space for Application Security
- Application Connection Registry Table
- A Set of Connection Strings for an Application.
- An Inner Class to Represent the Application
- Implement an Inner Class in OracleJavaSecure.
- Deserialization and Version UID
- Set Application Context
- Format the User-Input Two-Factor Code
- Save Connection Strings from the Client Perspective
- Method to Put Connection Strings in the List for an Application
- Client Call to Store List of Connection Strings on Oracle
- Save Connection Strings from the Server Perspective
- Function to Call Java to Decrypt the List of Connection Strings
- Method to Store List of Connection Strings for Application.
- Oracle Procedures to Get Entries from the Application Registry
- Get an Application Connection String: The Java Client Side.
- Get an Oracle Connection from the List for an Application
- Get List of Connection Strings from Oracle Database to Client App
- Establish a Connection for Application Verification Processes
- Get a List of Application Connection Strings: The Server Side
- Test Application Authentication,Phase 1
- Get New Structures into Oracle
- Review Steps of Testing
- Set the Application Context
- Call to Get Application Connections
- Send List of Connection Strings to Oracle Database for Storage
- Get a Unique Connection for Use in This Application
- Use or Lose Initial Application Verification Connection
- Get an Application Connection and the Associated Secure Application Role
- Get Encrypted Data with the Application Connection
- Add More Application Connection Strings
- Testing a Second Application
- Objects We Have Never Seen
- Place Stub Class on Oracle.
- Get Application Authentication Connection and Role.
- Test Application Authentication,Phase 2
- Store the Connection Strings in Oracle.
- Get an Application Connection with Role
- See the Proxy Connection.
- Get Encrypted Data from Oracle
- Chapter 11: Enhancing Security
- Hide the APPVER Connection String
- Get It from a Second Source/Server
- Get It from a Native Call: JNI
- Get It from an Encrypted Java Class
- Get It from an Encrypted String
- Get It from an Encoded String
- Create an Oracle Client Wallet
- Install the Oracle Client
- Create the Wallet
- Use the Wallet from SQL*Plus
- Use the Wallet from Java.
- Administer Wallet Security
- Trace Oracle Client Code
- Logging Oracle Thin Client Trace Data
- Encrypt Data Stored on Oracle Database.
- DBMS_CRYPTO Package
- Passwords and Keys
- Encryption at Rest Key Store
- Functions to Encrypt/Decrypt Data at Rest
- Wrap Utility
- Changes to setDecryptConns()/getCryptConns().
- Manage Connection Strings for Applications.
- Create an Application Administrative User
- Create an Administrative Role for Application Verification.
- Delete Connection Strings
- Copy Connection Strings from Previous Version of Application
- Add Other Authentication Credentials.
- Update Application Security Structures.
- Authenticate on a Separate Oracle Instance
- Create a New Oracle Database Instance
- Create a New Oracle Service
- Write the Create Database Command
- Create and Configure the Database
- Create a Database Link to the ORCL Instance
- Revoke PUBLIC Grant on Sensitive Data Dictionary Views
- Create the Remaining Structures for Application Authorization
- Create Java Structures
- Remove Application Verification from the ORCL Instance
- Test Enhanced Security
- Encode the APPVER User Password for APVER Instance.
- Edit the Application Passwords to Be Used
- Run Main to Test.
- Run Main to Copy Connection Strings to New Version
- Test from a Different Application,TestOracleJavaSecure
- Compile and Run as Administrative User,OSADMIN
- Run as Non-Administrative User,OSUSER
- Chapter 12: Administration of Security
- A Security Administration Interface
- Application Login Screen
- The Application Inner Class
- Center Method
- Login Screen Constructors
- The Wait While Processing Modal Dialog.
- Background Processing Thread.
- The Continue Button
- The Login Screen Closes
- Security Administration Menu
- Add/Modify User Functional Screen
- Instantiate the AddUser Screen.
- Initialize the Data Selection Components
- Select an Existing Employee
- Create a New Employee
- Save Data for the Employee
- User Administration Screen
- Create the OJSAAdm User
- Enable the OJSAAdm User Across a Database Link
- Select an Existing User
- Save Updates to the Administrative Privileges
- Revoke User Access to Run Applications
- Application Assignment Screen
- Initializing the Data Selection Components.
- Selecting an Available Proxy in the Table
- Selecting a User from the List
- Adding a Proxy to the User’s List
- Removing a Proxy from the User’s List
- Saving Updates to the User’s Proxies.
- Application Registration Screen
- The Application Verification Administrator Role.
- The Create App Class Button.
- Tables of Specific Application Administrators and Application to Class Registry
- Security Table Access Analysis
- The Register Application Button
- Application Selection Screen.
- Initializing the List of Applications.
- Selecting the Manage Selected Application Button.
- Connection String Editor.
- Initializing the List of Connection Strings.
- Selecting an Existing Connection String.
- Updating a Connection String in the List
- Saving the List of Connection Strings to the Database
- Connection String Copy Screen
- Limiting Certain Administrators to Certain Applications
- Virtual Private Database
- Adding a Dynamic Where Clause to Procedures
- Adding a Dynamic Where Clause to a View.
- Scripts Execution and Code Compilation.
- Final Updates to OracleJavaSecure
- Single Oracle Instance Code
- Bootstrap OJSAdmin.
- Appendix A: List of Methods from OracleJavaSecure Class
- Appendix B: Oracle Procedures,Functions and Triggers for Oracle and Java
- Security
BOOK
SUMMARY
Items Found: 293
- Chapter 1: Overview of Oracle RAC
- High Availability and Scalability
- What Is High Availability?
- Database Scalability
- Oracle RAC
- Database Clustering Architecture
- RAC Architecture
- Hardware Requirements for RAC
- RAC Components
- Oracle RAC: Cache Fusion
- RAC Background Processes
- Achieving the Benefits of Oracle RAC
- High AvailabilityAgainst Unplanned Downtime
- High Availability Against Planned Downtime
- Oracle RAC One Node to Achieve HA
- RAC Scalability
- Consolidating Database Services with Oracle RAC
- Considerations for Deploying RAC
- Cost of Ownership
- High Availability Considerations
- Scalability Considerations
- RAC or Not
- Chapter 2: Clusterware Stack Management and Troubleshooting
- Clusterware 12cR1 and Its Components
- Storage Components of Oracle Clusterware
- Clusterware Software Stack
- Clusterware Startup Sequence
- ASM and Clusterware: Which One is Started First?
- Clusterware Management
- Clusterware Management Tools and Utilities
- Start Up and Stop Clusterware
- Managing Oracle Clusterware
- Managing OCR and the Voting Disk
- Managing CRS Resources
- Adding and Removing Cluster Nodes
- Troubleshooting common Clusterware Stack Start-Up Failures
- Diagnose,Debug,Trace Clusterware and RAC Issues
- Debugging Clusterware Components and Resources
- Grid Infrastructure Component Directory Structure
- Oracle Clusterware Troubleshooting - Tools and Utilities
- CHM
- Chapter 3: RAC Operational Practices
- Workload Management
- Services
- Service Metrics
- Load Balancing Goals
- Runtime Failover
- Service in Second Network
- Guidelines for Services
- SCAN and SCAN Listeners
- SCAN Listener in Second Network (12c)
- Guidelines for SCAN Listeners
- Global Database Services (12c)
- Failover in RAC
- TAF
- Fast Connection Failover
- WebLogic Active GridLink
- Transaction Guard (12c)
- Application Continuity (12c)
- Policy-Managed Databases
- Temporary Tablespaces
- Massive Data Changes
- Performance Metrics Collection
- Parameter File Management
- Password File Management
- Managing Databases and Instances
- Managing VIPs,Listeners
- Miscellaneous Topics
- Process Priority
- Memory Starvation
- SGA size
- Filesystem Caching
- Chapter 4: New Features in RAC 12c
- Oracle Flex Clusters
- Oracle Flex Cluster Architecture
- Scalability and Availability of Flex Clusters
- Configuring Flex Clusters
- Flex ASM Architecture
- Oracle Flex ASM Architecture
- Flex ASM and Flex Clusters
- Configuring Flex ASM
- ASM Clients and Relocating
- New ASM Storage Limits
- Replacing ASM Disk in Disk Group
- Scrubbing ASM Disk Groups and Files
- Reading Data Evenly in ASM Disk Group
- Measure and Tune Rebalance Operation
- What-If Command Evaluation
- PDBs on Oracle RAC
- PDB Architecture Overview
- 12cR1: Miscellaneous New Features for RAC
- Public Networks for RAC: IPv6 Support Added
- Global Data Services
- Online Resource Attribute Modification
- RAC 12cR1: Policy-Based Management and Administration
- ASM Disk Group: Shared ASM Password File
- Valid Node Checking: Restricting Service Registration
- 12cR1: Shared GNS
- RAC 12cR1: Restricting Service Registration
- Oracle ASM,ACFS,and ADVM: Improvements and New Features
- NFS High Availability
- 12cR1: CHM Enhancements
- Windows: Support for Oracle Home User
- OUI: Enhancements and Improvements
- 12cR1: Installations/Upgrades—Running Scripts Automatically
- 12cR1: Introducing Application Continuity
- Transaction Idempotence and Java Transaction Guard
- Deprecated and Desupported Features
- Chapter 5: Storage and ASM Practices
- Storage Architecture and Configuration for Oracle RAC
- Storage Architecture and I/O for RAC
- RAID Configuration
- Storage Protocols
- Multipath Device Configuration
- Set Ownership of the Devices
- ASM
- ASM Instance
- ASM Storage Structure
- Manage ASM Using SQL Command and V$ASM Views
- Store OCR and Voting Disk in ASM
- Choose ASM for OCR and Voting Disk at GI Installation
- Move OCR and Voting Disk Files to a New ASM Diskgroup
- ACFS
- Create ACFS
- Create ACFS for Oracle RAC Home with ASMCA
- Chapter 6: Application Design Issues
- Localized Inserts
- Excessive TRUNCATE or DROP Statements
- Sequence Cache
- Freelists and ASSM
- Excessive Commits
- Long Pending Transactions
- Localized Access
- Small Table Updates
- Index Design
- Inefficient Execution Plan
- Excessive Parallel Scans
- Full Table Scans
- Application Affinity
- Pipes
- Application Change Deployment
- Chapter 7: Managing and Optimizing a Complex RAC Environment
- Shared vs. Non-Shared Oracle Homes
- Server Pools
- Types of Server Pools
- System-Defined Server Pools
- User-Defined Server Pools
- Creating and Managing Server Pools
- Planning and Designing RAC Databases
- Instance Caging
- Small- vs. Large-Scale Cluster Setups
- Split-Brain Scenarios and How to Avoid Them
- Understanding,Debugging,and Preventing Node Evictions
- Node Evictions—Synopsis and Overview
- Extended Distance (Stretch) Clusters—Synopsis,Overview,and Best Practices
- Extended Distance (Stretch) Clusters: Setup/Configuration Best Practices
- Setup and Configuration—Learning the New Way of Things
- OUI
- Oracle Enterprise Manager Cloud Control 12c
- RAC Installation and Setup—Considerations and Tips for OS Families:
- Linux,Solaris,and Windows
- RAC Database Performance Tuning: A Quick n’ Easy Approach
- The 3 A’s of Performance Tuning
- Chapter 8: Backup and Recovery in RAC
- RMAN Synopsis
- Media Management Layer
- Online Backup and Recovery Prerequisites
- Non-RAC vs. RAC Database
- Shared Location for Redo and Archive Logs
- Snapshot Control File Configuration
- Multiple Channels Configuration for RAC
- Parallelism in RAC
- Instance/Crash Recovery in RAC
- Real-World Examples
- Manage RMAN with OEM Cloud Control 12c
- OCR recovery
- Chapter 9: Network Practices
- Types of Network
- Network Layers
- Protocols
- VIPs
- Subnetting
- Cluster Interconnect
- Jumbo Frames
- Load Balancing and Failover
- Kernel Parameters
- Network Measurement Tools
- GC Lost Block Issue
- Configuring Network for Oracle RAC and Clusterware
- Establishing IP Address and Name Resolution
- Network Specification in Grid Infrastructure Installation
- Network Configuration in Clusterware
- Network Failover
- Second Network
- Chapter 10: RAC Database Optimization
- Introduction to Cache Fusion
- Cache Fusion Processing
- GRD
- BL Resources and Locks
- Performance Analysis
- Analysis of the Receiving Side
- RAC Wait Events
- GC Current Block 2-Way/3-Way
- GC CR Block 2-Way/3-Way
- GC CR Grant 2-Way/Gc Current Grant 2-Way
- GC CR Block Busy/GC Current Block Busy
- GC CR Block Congested/GC Current Block Congested
- Placeholder Wait Events
- Sending-Side Analysis
- Block Types Served
- GCS Log Flush Sync
- Defending LMS Process
- GC Buffer Busy Acquire/Release
- Unique Indexes
- Table Blocks
- DRM
- Overview of DRM Processing
- DRM Stages
- GRD Freeze
- Parameters
- Changes in 12c
- DRM and Undo
- Troubleshooting DRM
- AWR Reports and ADDM
- ASH Reports
- Chapter 11: Locks and Deadlocks
- Resources and Locks
- SGA Memory Allocation
- Resource Types
- Lock Modes
- Lock-Related Views
- Pluggable Databases (12c)
- Troubleshooting Locking Contention
- Enqueue Contention
- TX Enqueue Contention
- TM Enqueue Contention
- HW Enqueue Contention
- DFS Lock Handle
- SV Resources
- CI Resources
- Library Cache Locks/Pins
- Troubleshooting Library Cache Lock Contention
- Enqueue Statistics
- v$wait_chains
- Hanganalyze
- Deadlocks
- LMD Trace File Analysis
- Chapter 12: Parallel Query in RAC
- Overview
- PX Execution in RAC
- Placement of PX Servers
- Measuring PX Traffic
- PX and Cache Fusion
- PEMS
- Parallelism Features and RAC
- Debugging PX Execution
- Index Creation in RAC
- Parallel DML in RAC
- Concurrent Union Processing (12c)
- Partition-Wise Join
- Chapter 13: Clusterware and Database Upgrades
- Configuration
- Pre-Upgrade Checklist
- Initiating an Oracle Clusterware Upgrade
- The Importance of the Rootupgrade.sh Script
- Post-Upgrade Tasks
- Clusterware Downgrade
- Database Upgrade
- Deploying Manual Database Upgrade
- Post-Database Upgrade Steps
- Database Upgrade Using the DBUA
- DBUA Advantages
- Database Downgrade
- Chapter 14: RAC One Node
- The Big Picture
- Upgrading to 11.2.0.2 or Higher
- Deploying RAC One Node Binaries
- Deploying a RAC One Node Database
- Satisfying Prerequisites
- Initiating DBCA’s Creation Process
- Parameters Specific to RAC One Node
- Managing RAC One Node Database
- Verifying Configuration Details
- Verifying the Online Relocation Status
- Stop and Start the Database
- Performing Online Database Relocation
- Handling Unplanned Node and Cluster Reboots
- Converting Between RAC One Node and Standard RAC
- Scaling Up to Standard RAC
- Scaling Down to RAC One Node
- Managing RAC One Node with Cloud Control 12c
- Database Relocation with Cloud Control 12c
- Third-Party Cold Failover vs. RAC One Node
BOOK
SUMMARY
Items Found: 1017
- Part I: Getting Started in Fedora and RHEL
- Chapter 1: An Overview of Fedora and Red Hat Enterprise Linux 3
- Introducing Fedora 10 and Red Hat Enterprise Linux 4
- What Is Linux? 5
- Linux’s Roots in UNIX 6
- What Is an Operating System? 7
- Common Linux Features 8
- Primary Advantages of Linux 10
- What Are Red Hat Enterprise Linux and Fedora? 11
- Red Hat forms the Fedora Project 11
- Red Hat shifts to Red Hat Enterprise Linux 14
- Choosing between Fedora and Enterprise 14
- Why Choose Fedora or Red Hat Enterprise Linux? 15
- New Features in Fedora 10 17
- Better Printing 17
- FirstAidKit 18
- OpenOffice.org 3 18
- Faster Boot Times 18
- K Desktop Environment (KDE) 4 18
- PackageKit Software Management 18
- Firefox 3 Web browser 19
- Preupgrade 19
- Ext4 file systems 19
- Encrypted file systems 19
- Identity management with freeIPA 19
- NetworkManager 20
- Getting custom Fedora spins 20
- Creating your own spins 21
- Firewall Configuration 21
- The Culture of Free Software 21
- Summary 22
- Chapter 2: Installing Fedora 23
- Understanding Fedora Installation Media 24
- Using the Fedora 10 Live CD 24
- Quick Installation 26
- Detailed Installation Instructions 28
- Installing Fedora 10 28
- Choosing an installation method 29
- Install or upgrade? 29
- From DVD, network, or hard disk? 31
- Choosing computer hardware 32
- Installing Fedora on a Laptop 33
- Preparing for installation using the live CD 34
- Display hardware information 34
- Test your hardware 36
- Beginning the installation 37
- Choosing Different Install Modes 39
- Running Fedora Firstboot 44
- Enabling Authentication 45
- Going forward after installation 46
- Special Installation Procedures 47
- Alternatives for starting installation 47
- Booting installation from hard disk 47
- Booting installation from a USB device 49
- Booting installation using PXE 49
- Installing from other media 50
- Beginning installation 50
- Setting up an HTTP, FTP, or NFS install server 51
- Starting a VNC install 53
- Performing a kickstart installation 54
- Creating the kickstart file 54
- Installing the kickstart file 59
- Booting a kickstart installation 59
- Special Installation Topics 60
- Setting up to dual-boot Linux and Windows 60
- Resizing your Windows partitions 60
- Using Windows partitions from Linux 64
- Partitioning your disks 66
- Partitioning with Disk Setup during installation 67
- Partitioning with fdisk 70
- Tips for creating partitions 72
- Using the GRUB boot loader 74
- Temporarily changing boot options 75
- Permanently changing boot options 77
- Adding a new GRUB boot image 78
- Troubleshooting Installation 79
- Spinning Your Own Fedora Install or Live Media 81
- Summary 82
- Chapter 3: Getting Started with the Desktop 83
- Logging in to Fedora or RHEL 84
- Why Do I Need a User Login? 86
- Getting Familiar with the Desktop 86
- Touring your desktop 87
- Tips for configuring your desktop 94
- Using the GNOME Desktop 95
- Using the Metacity window manager 97
- Using the GNOME panels 99
- Use the Applications and System menus 100
- Adding an applet 101
- Adding another panel 102
- Adding an application launcher 102
- Adding a drawer 103
- Changing panel properties 103
- Using the Nautilus file manager 104
- Changing GNOME preferences 107
- Managing removable media 108
- Trying other GNOME applications 109
- Taking notes with Tomboy 109
- Checking Your Network from GNOME 110
- Switching to another user 110
- Exiting GNOME 111
- Setting Up an Online Desktop 112
- Switching Desktop Environments 115
- Using the KDE Desktop 116
- New Features in KDE 4.1 116
- Starting with KDE 117
- KDE desktop basics 118
- Getting around the desktop 119
- Managing files with Dolphin and Konqueror File Managers 120
- Working with files 122
- Searching for files with Dolphin and kfind 123
- Creating new files and folders 124
- Using the Konqueror browser features 125
- Configuring Konqueror and Dolphin options 126
- Managing windows 128
- Using the taskbar 129
- Moving windows 129
- Resizing windows 129
- Pinning windows on top or bottom 130
- Using virtual desktops 130
- Configuring the desktop 130
- Adding widgets 131
- Adding widgets to the panel 132
- Adding widgets to the desktop 132
- Running 3D Accelerated Desktop Effects 132
- Using the Xfce Desktop Environment 135
- Troubleshooting Your Desktop 136
- GUI doesn’t work at start-up 137
- What Happens During Desktop Startup? 137
- Tuning your video card and monitor 138
- Running the Display Settings window 138
- Understanding the xorg.conf file 139
- Configuring video cards for gaming 140
- Getting more information 140
- Summary 141
- Chapter 4: Using Linux Commands 143
- The Shell Interface 143
- Checking your login session 144
- Checking directories and permissions 145
- Checking system activity 147
- Exiting the shell 148
- Understanding the Shell 148
- Using the Shell in Linux 149
- Locating commands 150
- Getting Help with Using the Shell 151
- Rerunning commands 153
- Command-line editing 153
- Command-line completion 155
- Command-line recall 156
- Connecting and expanding commands 158
- Piping commands 158
- Sequential commands 159
- Background commands 159
- Expanding commands 159
- Expanding arithmetic expressions 160
- Expanding variables 160
- Using shell environment variables 160
- Common shell environment variables 161
- Setting your own environment variables 162
- Managing background and foreground processes 164
- Starting background processes 164
- Moving commands to the foreground and background 165
- Configuring your shell 166
- Setting your prompt 167
- Adding environment variables 168
- Adding aliases 169
- Working with the Linux File System 169
- Linux File Systems Versus Windows-Based File Systems 171
- Creating files and directories 172
- Identifying Directories 173
- Using metacharacters and operators 173
- Using file-matching metacharacters 173
- Using file-redirection metacharacters 175
- Understanding file permissions 175
- Moving, copying, and deleting files 177
- Using the vi Text Editor 178
- Starting with vi 178
- Exploring Other Text Editors 179
- Moving around the file 181
- Searching for text 182
- Using numbers with commands 183
- Summary 183
- Part II: Using Fedora and RHEL
- Chapter 5: Accessing and Running Applications 187
- Getting and Installing Software Packages 188
- Downloading and installing applications with yum 190
- Configuring yum (/etc/yum.conf) 191
- Adding yum repositories (/etc/yum.repos.d/) 192
- Running yum to download and install RPMs 194
- Using yum to install packages locally 195
- Using yum for listing packages 196
- Using yum-utils package 197
- Getting Fedora and RHEL software updates 197
- Getting alerted to available updates 198
- Getting manual updates with yum 198
- Managing RPM Packages 199
- Using the PackageKit Add/Remove window 199
- Using the rpm command 200
- Verifying rpm package integrity 201
- Installing with rpm 202
- Upgrading packages with rpm 205
- Freshening packages with rpm 205
- Removing packages with rpm 206
- Querying packages with rpm 207
- Verifying installed packages with rpm 210
- Using Software in Different Formats 211
- Understanding software package names and formats 211
- Using Binary RPMs versus Building from Source 212
- Using different archive and document formats 213
- Building and installing from source code 215
- Installing software in SRPM format 216
- Installing software in tar.gz or tar.bz2 formats 216
- Using Fedora or RHEL to Run Applications 218
- Finding common desktop applications in Linux 219
- Investigating your desktop 221
- Starting applications from a menu 222
- Starting applications from a Run Application window 222
- Starting applications from a Terminal window 223
- Running remote X applications 225
- Traditional method to run remote X applications 225
- Launching a remote X application 226
- Using SSH to run remote X applications 228
- Running Microsoft Windows, DOS, and Macintosh Applications 229
- Running DOS applications 231
- Using mtools 231
- Using DOSBox 233
- Running Microsoft Windows applications in Linux 233
- Running Windows Applications in WINE 235
- Assigning drive letters 236
- Installing applications in WINE 237
- Launching applications 237
- Tuning and configuring WINE 237
- Finding more Windows applications for WINE 238
- Running Applications in Virtual Environments 239
- Running applications virtually with Xen 239
- Before installing Xen 240
- Installing Xen 240
- Installing a guest operating system 241
- Running applications virtually with KVM and QEMU 244
- Summary 245
- Chapter 6: Publishing with Fedora and RHEL 247
- Desktop Publishing in Linux 248
- Using Text Editors and Notepads 248
- Using Word Processors 248
- Using OpenOffice.org 249
- Other Word Processors 252
- Using Traditional Linux Publishing Tools 255
- Creating Documents in Groff or LaTeX 256
- Text processing with Groff 256
- Formatting and printing documents with Groff 257
- Creating a man page with Groff 258
- Text processing with TeX/LaTeX 259
- Creating and formatting a LaTeX document 260
- Converting documents 261
- Creating DocBook documents 263
- Understanding SGML and XML 263
- Understanding DocBook 263
- Creating DocBook documents 264
- Converting DocBook documents 266
- Displaying PDF Files with Adobe Acrobat Reader 266
- Doing Page Layout with Scribus 268
- Working with Graphics 270
- Manipulating images with GIMP 270
- Taking screen captures 271
- Creating vector graphic images with Inkscape 272
- Using Scanners Driven by SANE 274
- Web Publishing 275
- Summary 276
- Chapter 7: Gaming in Fedora and RHEL 277
- Jumping into Linux Gaming 278
- Basic Linux Gaming Information 280
- Where to get information on Linux gaming 280
- Choosing a video card for gaming 281
- Running Open Source Linux Games 283
- GNOME games 284
- KDE games 284
- Adding more games from Fedora repository 286
- Chess games 289
- Freeciv 290
- Extreme Tuxracer 295
- Commercial Linux Games 296
- Getting Started with commercial games in Linux 297
- Playing commercial Linux games 297
- id Software Games 298
- Quake III Arena 298
- Return to Castle Wolfenstein 299
- Gaming with Cedega 300
- Loki Software game demos 302
- Civilization: Call to Power 303
- Myth II: Soulblighter 304
- Heretic II 305
- Neverwinter Nights 305
- Summary 305
- Chapter 8: Music, Video, and Images in Linux 307
- Understanding Multimedia and Legal Issues in Linux 307
- Extending Freedom to Codecs 308
- Listening to Music in Linux 309
- Configuring a sound card 311
- Sound card features 311
- Detecting your sound card driver 313
- Adjusting sound levels 314
- Setting your sound card to record 317
- Choosing audio players 317
- Automatically playing CDs 318
- Troubleshooting Your CD-ROM 319
- Playing and managing music with Rhythmbox 319
- Playing music with XMMS Audio Player 322
- Using the Equalizer 324
- Using the Playlist Editor 325
- Using ogg123, mpg321, and play command-line players 326
- Using MIDI audio players 326
- Converting audio files with SoX 327
- Extracting and encoding music 329
- Extracting music CDs with Sound Juicer 330
- Extracting and encoding music CDs from commands 331
- Creating your own music CDs 332
- Creating audio CDs with cdrecord 332
- Creating audio and data CDs with K3b 333
- Creating CD labels with cdlabelgen 336
- Viewing TV and Webcams 337
- Watching TV with TVtime 337
- Getting a supported TV card 337
- Starting Tvtime 339
- Selecting channels in TVtime 339
- Video conferencing and VOIP with Ekiga 340
- Getting a supported Webcam 340
- Running Ekiga 342
- Taking Webcam videos and snapshots with Cheese 343
- Playing Video 344
- Examining laws affecting video and Linux 345
- Understanding video content types 346
- Converting Video to Theora 347
- Watching video with Xine 347
- Using Xine 349
- Creating playlists with Xine 350
- Xine tips 350
- Using Totem movie player 352
- Using a Digital Camera 353
- Displaying images in gThumb 353
- Using your camera as a storage device 355
- Summary 356
- Chapter 9: Using the Internet and the Web 357
- Overview of Internet Applications and Commands 357
- Browsing the Web 360
- Understanding Web browsing 361
- Uniform Resource Locators 361
- Web pages 363
- Browsing the Web with Firefox 365
- Setting up Firefox 369
- Setting Navigator preferences 369
- Extending Firefox 371
- Changing Firefox themes 375
- Securing Firefox 375
- Tips for using Firefox 376
- Using text-based Web browsers 377
- Communicating with E-mail 378
- E-mail basics 380
- Using Evolution e-mail 381
- Setting Evolution preferences 382
- Receiving, composing, and sending e-mail 383
- Thunderbird mail client 384
- Text-based mail programs 385
- Mail readers and managers 386
- Mutt mail reader 386
- Pine mail reader 386
- Mail reader 387
- Participating in Newsgroups 387
- Instant Messaging with Pidgin 388
- Sharing Files with BitTorrent 389
- Using Remote Login, Copy, and Execution 390
- Using telnet for remote login 391
- Copying files with FTP 392
- Using the ftp command 392
- Using the ncftp command 395
- Using the gFTP window 397
- Getting files with wget 399
- Downloading a single file 399
- Downloading a file with user name and password 400
- Downloading a whole Web site 400
- Continuing a download 401
- Using ssh for remote login/remote execution 402
- Using scp for remote file copy 402
- Using the “r” commands: rlogin, rcp, and rsh 403
- Summary 403
- Part III: Administering Fedora and RHEL
- Chapter 10: Understanding System Administration 407
- Using the root user account 408
- Becoming Super User (The su Command) 408
- Learning about Administrative GUI Tools, Commands, Configuration Files, and Log Files . 410
- Using graphical administration tools 410
- Becoming Super User in X 411
- Administrative commands 415
- Administrative configuration files 416
- Administrative log files 420
- Using other administrative logins 420
- Understanding administrative logins 421
- Using sudo for assigning administrative privilege 421
- Administering Your Linux System 423
- Configuring Hardware 423
- Checking your hardware 424
- Managing Hardware with HAL 424
- Reconfiguring hardware with kudzu 425
- Configuring modules 426
- Listing loaded modules 427
- Loading modules 428
- Removing modules 428
- Managing File Systems and Disk Space 429
- Mounting file systems 432
- Supported file systems 432
- Using the fstab file to define mountable file systems 435
- Using the mount command to mount file systems 437
- Using the umount command to unmount a file system 439
- Using the mkfs command to create a file system 440
- Adding a hard disk 441
- Using RAID disks 443
- Checking system space 446
- Checking Disk Space with Disk Usage Analyzer 446
- Displaying system space with df 446
- Checking disk usage with du 447
- Finding disk consumption with find 448
- Monitoring System Performance 448
- Watch computer usage with System Monitor 448
- Monitoring CPU usage with top 450
- Monitoring power usage on laptop computers 450
- Using the Power Manager applet 451
- Using apm to enter suspend mode 452
- Using acpi_listen to monitor ACPI events 452
- Fixing Your System with the FirstAidKit 453
- Choosing Software Alternatives 453
- Selecting Java alternatives 453
- Selecting mail and printing alternatives 454
- Using mail alternatives 455
- Using Security Enhanced Linux 455
- Understanding Security Enhanced Linux 456
- Types and roles in SELinux 456
- Users in SELinux 457
- Policies in SELinux 457
- Tools in SELinux 458
- Using SELinux in Fedora and RHEL 458
- Getting SELinux 459
- Checking whether SELinux is on 459
- Checking SELinux status 460
- Learning More about SELinux 462
- Summary 462
- Chapter 11: Setting Up and Supporting Users 463
- Creating User Accounts 463
- Adding users with useradd 464
- Adding users with User Manager 468
- Setting User Defaults 471
- Supplying initial login scripts 473
- Supplying initial .bashrc and .bash_profile files 474
- Supplying an initial .tcshrc file 475
- Configuring system-wide shell options 475
- Configuring system-wide bash options 475
- Configuring system-wide tcsh options 476
- Setting system profiles 476
- Adding user accounts to servers 477
- Creating Portable Desktops 478
- Providing Support to Users 479
- Creating a technical support mailbox 480
- Resetting a user’s password 480
- Modifying Accounts 481
- Modifying user accounts with usermod 481
- Modifying user accounts with User Manager 483
- Deleting User Accounts 484
- Deleting user accounts with userdel 484
- Deleting user accounts with User Manager 486
- Checking Disk Quotas 486
- Using quota to check disk usage 486
- Editing the /etc/fstab file 487
- Creating quota files 487
- Creating a quota startup script 488
- Turn on the quota startup script 489
- Creating quota rules 489
- Updating quota settings 490
- Checking quotas 490
- Using du to check disk use 491
- Removing temp files automatically 491
- Sending Mail to All Users 492
- Summary 493
- Chapter 12: Automating System Tasks 495
- Understanding Shell Scripts 495
- Executing and debugging shell scripts 496
- Understanding shell variables 497
- Special shell variables 498
- Parameter expansion in bash 498
- Performing arithmetic in shell scripts 500
- Using programming constructs in shell scripts 500
- The “if…then” statements 500
- The case command 503
- The “for .do” loop 504
- The “while .do” and “until .do” loops 505
- Some useful external programs 506
- The general regular expression parser (grep) 506
- Remove sections of lines of text (cut) 506
- Translate or delete characters (tr) 506
- The Stream Editor (sed) 507
- Trying some simple shell scripts 507
- A simple telephone list 508
- A simple backup script 509
- System Initialization 509
- Starting init 510
- The inittab file 510
- System Startup and Shutdown 514
- Starting run-level scripts 515
- Understanding run-level scripts 515
- Understanding what startup scripts do 518
- Changing run-level script behavior 520
- Reorganizing or removing run-level scripts 521
- Adding run-level scripts 523
- Managing xinetd services 524
- Manipulating run levels 525
- Determining the current run level 525
- Changing to a shutdown run level 526
- Scheduling System Tasks 526
- Using at.allow and at.deny 526
- Specifying when jobs are run 526
- Submitting scheduled jobs 527
- Viewing scheduled jobs 528
- Deleting scheduled jobs 528
- Using the batch command 529
- Using the cron facility 529
- Modifying scheduled tasks with crontab 531
- Understanding cron files 532
- Summary 533
- Chapter 13: Backing Up and Restoring Files 535
- Making a Simple Backup Archive 536
- Doing a Simple Backup with rsync 537
- Backing up files locally 538
- Backing up files remotely 539
- Choosing Backup Tools 540
- Selecting a Backup Strategy 541
- Full backup 541
- Incremental backup 541
- Disk mirroring 541
- Network backup 542
- Selecting a Backup Medium 542
- Magnetic tape 543
- Using ftape tools for magnetic tape 544
- Testing the magnetic tape drive 545
- Writable CD drives 545
- Getting cdrecord for writable CDs 545
- Writing to CDs 545
- Writable DVD drives 549
- Writing CD or DVDs with growisofs 551
- Backing Up to a Hard Drive 551
- Backing Up Files with dump 552
- Creating a backup with dump 553
- Understanding dump levels 555
- Automating Backups with cron 556
- Restoring Backed-Up Files 558
- Restoring an entire file system 559
- Recovering individual files 560
- Configuring Amanda for Network Backups 562
- Creating Amanda directories 563
- Creating the amanda.conf file 564
- Creating a disklist file 566
- Adding Amanda network services 566
- On the amanda server 567
- On each amanda client 567
- Performing an Amanda backup 567
- Using the pax Archiving Tool 568
- Summary 571
- Chapter 14: Computer Security Issues 573
- Linux Security Checklist 573
- Using Password Protection 576
- Choosing good passwords 577
- Using a shadow password file 577
- Breaking encrypted passwords 578
- Checking for the shadow password file 578
- Securing Linux with iptables Firewalls 580
- Using the Firewall Configuration window 580
- Configuring an iptables firewall 582
- Turning on iptables 582
- Creating iptables firewall rules 584
- Understanding iptables 590
- Enhancing your iptables firewall 593
- Controlling Access to Services with TCP Wrappers 594
- Checking Log Files 597
- Understanding the rsyslogd service 597
- Redirecting logs to a loghost with rsyslogd 597
- Understanding the messages logfile 600
- Tracking log messages with logwatch 601
- Using the Secure Shell Package 602
- Starting the SSH service 602
- Using the ssh, sftp, and scp commands 603
- Using ssh, scp, and sftp without passwords 604
- Securing Linux Servers 606
- Understanding attack techniques 606
- Protecting against denial-of-service attacks 607
- Mailbombing 607
- Spam relaying 609
- Smurf amplification attack 609
- Protecting against distributed DOS attacks 610
- Protecting against intrusion attacks 614
- Evaluating access to network services 615
- Disabling network services 616
- Securing servers with SELinux 617
- Protecting Web servers with certificates and encryption 618
- Symmetric cryptography 618
- Public-key cryptography 619
- Secure Sockets Layer 619
- Exporting Encryption Technology 627
- Managing Identities with freeIPA 627
- Setting up the freeIPA Server 628
- Setting up freeIPA Clients 629
- Summary 629
- Part IV: Fedora and RHEL Network and Server Setup
- Chapter 15: Setting Up a Local Area Network 633
- Connecting to the Network with NetworkManager 633
- Connecting to a wireless network 635
- Connecting to a wired network 636
- Setting up a virtual private network connection 637
- Understanding Local Area Networks 638
- Planning, getting, and setting up LAN hardware 639
- LAN topologies 639
- LAN equipment 641
- LAN equipment setup 643
- Configuring TCP/IP for your LAN 643
- Identifying other computers (hosts and DNS) 646
- Adding Windows computers to your LAN 648
- Setting Up a Wireless LAN 650
- Understanding wireless networks 651
- Choosing wireless hardware 652
- Selecting wireless LAN cards 653
- Selecting antennas 655
- Getting wireless drivers 657
- Installing wireless Linux software 660
- Configuring the wireless LAN 660
- Configuring the wireless interface 661
- Wireless Security 665
- Activating the wireless interfaces 666
- Checking your wireless connection 666
- Testing distances 666
- Setting wireless extensions 666
- Understanding Internet Protocol Addresses 668
- IP address classes 669
- Understanding netmasks 669
- Classless Inter-Domain Routing 670
- Getting IP addresses 671
- Troubleshooting Your LAN 672
- Did Linux find your Ethernet driver at boot time? 672
- Can you reach another computer on the LAN? 673
- Is your Ethernet connection up? 674
- Troubleshooting a wireless LAN 675
- Checking wireless settings 676
- Checking TCP/IP 678
- Adapting to poor reception 678
- Use debugging tools 679
- Watching LAN traffic with Wireshark 679
- Starting Wireshark 679
- Capturing Ethernet data 681
- Interpreting captured Ethernet data 682
- Using Wireshark Filters 683
- Summary 684
- Chapter 16: Connecting to the Internet 685
- Understanding How the Internet Is Structured 685
- Internet domains 688
- Hostnames and IP addresses 689
- Routing 690
- Proxies 691
- Using Dial-Up Connections to the Internet 691
- Getting information 691
- Setting up dial-up PPP 692
- Creating a dial-up connection with the Network Configuration window 693
- Launching your PPP connection 695
- Launching your PPP connection on demand 696
- Checking your PPP connection 697
- Checking that your modem was detected 697
- Checking that your PPP interface is working 698
- Checking the default route 698
- Checking that the name servers are set 699
- Checking the chap-secrets or pap-secrets file 699
- Looking at the ifcfg file 700
- Running debugging 702
- Connecting Your LAN to the Internet 703
- Setting Up Linux as a Router 704
- Configuring the Linux router 705
- Selecting IP addresses 705
- Enable forwarding and masquerading 705
- Configuring network clients 707
- Configuring a Virtual Private Network Connection 709
- Understanding IPsec 709
- Using IPsec protocols 710
- Using IPsec in Fedora or RHEL 711
- Configuring an OpenVPN Server 712
- Decisions before configuring OpenVPN 712
- Create a public key infrastructure 713
- Create OpenVPN server configuration 715
- Create OpenVPN client configuration 716
- Setting Up Linux as a Proxy Server 717
- Starting the squid daemon 718
- Using a simple squid.conf file 720
- Modifying the Squid configuration file 722
- Configuring access control in squid.conf 722
- Configuring caching in squid.conf 724
- Configuring port numbers in squid.conf 725
- Debugging Squid 726
- Checking the squid.conf file 726
- Checking Squid log files 726
- Using the top command 727
- Setting Up Proxy Clients 727
- Configuring Firefox to use a proxy 728
- Configuring other browsers to use a proxy 729
- Summary 729
- Chapter 17: Setting Up a Print Server 731
- Common UNIX Printing Service 731
- Setting Up Printers 732
- Choosing a Printer 733
- Using the Printer configuration window 733
- Configuring local printers 734
- Configuring remote printers 739
- Using Web-based CUPS administration 742
- Configuring the CUPS server (cupsd.conf) 745
- Configuring CUPS printer options 746
- Using Printing Commands 748
- Using lpr to print 748
- Listing status with lpc 749
- Removing print jobs with lprm 749
- Configuring Print Servers 750
- Configuring a shared CUPS printer 750
- Configuring a shared Samba printer 751
- Understanding smb.conf for printing 751
- Summary 752
- Chapter 18: Setting Up a File Server 753
- Goals of Setting Up a File Server 753
- Setting Up an NFS File Server 754
- Sharing NFS file systems 756
- Using the NFS Server Configuration window 756
- Configuring the /etc/exports file 759
- Exporting the shared file systems 762
- Starting the nfsd daemons 763
- Using NFS file systems 763
- Manually mounting an NFS file system 763
- Automatically mounting an NFS file system 765
- Using autofs to mount NFS file systems on demand 767
- Unmounting NFS file systems 769
- Other cool things to do with NFS 769
- Setting Up a Samba File Server 770
- Getting and installing Samba 771
- Configuring a simple Samba server 772
- Configuring Samba with SWAT 776
- Turning on SWAT 776
- Starting with SWAT 776
- Creating global Samba settings in SWAT 777
- Assigning Guest Accounts 780
- Configuring shared directories with SWAT 783
- Checking your Samba setup with SWAT 784
- Working with Samba files and commands 784
- Editing the smb.conf file 785
- Adding Samba users 786
- Starting the Samba service 787
- Testing your Samba permissions 787
- Checking the status of shared directories 787
- Setting up Samba clients 788
- Using Samba shared directories from Linux 788
- Using Samba shared directories from Windows 790
- Troubleshooting your Samba server 791
- Basic networking in place? 791
- Samba service running? 791
- Firewall open? 792
- User passwords working? 793
- Summary 793
- Chapter 19: Setting Up a Mail Server 795
- Introducing SMTP and sendmail 796
- Installing and Running sendmail 796
- Other Mail Servers for Fedora or Red Hat Linux 797
- Starting sendmail 798
- Other programs 798
- Logging performed by sendmail 799
- Configuring sendmail 800
- Getting a domain name 801
- Configuring basic sendmail settings (sendmail.mc) 801
- Defining outgoing mail access 805
- Configuring virtual servers 807
- Configuring virtual users 808
- Adding user accounts 809
- Starting sendmail and generating database files 810
- Redirecting mail 811
- The .forward file 811
- The aliases file 811
- Introducing Postfix 813
- Stopping Spam with SpamAssassin 814
- Using SpamAssassin 815
- Setting up SpamAssassin on your mail server 815
- Setting e-mail readers to filter spam 817
- Getting Mail from the Server (POP3 or IMAPv4) 818
- Accessing mailboxes in Linux 818
- Configuring IMAPv4 and POP3 with dovecot 819
- Getting Mail from Your Browser with SquirrelMail 820
- Administering a Mailing List with mailman 821
- Summary 825
- Chapter 20: Setting Up an FTP Server 827
- Understanding FTP Servers 828
- Attributes of FTP servers 828
- FTP user types 829
- Using the Very Secure FTP Server 829
- Quick-starting vsFTPd 830
- Configuring vsFTPd 831
- User accounts 831
- Setting FTP access 832
- Adding message files 835
- Logging vsFTPd activities 835
- Setting timeouts 836
- Navigating a vsFTPd site 836
- Setting up vsFTPd behind a firewall 836
- Getting More Information about FTP Servers 837
- Summary 837
- Chapter 21: Setting Up a Web Server 839
- Introduction to Web Servers 840
- The Apache Web server 840
- Other Web servers available for Fedora and RHEL 841
- Quickstarting the Apache Web Server 842
- Configuring the Apache Server 844
- Configuring the Web server (httpd.conf) 845
- Setting the global environment 846
- Setting the number of server processes 848
- Binding to specific addresses 851
- Selecting modules in httpd.conf 851
- Including module-specific configuration files 856
- Choosing the server’s user and group 856
- Setting the main server’s configuration 857
- Identifying user directories 860
- Setting default index files for directories 862
- Defining indexing 869
- Defining encoding and language 872
- Choosing character sets 873
- Adding MIME types and handlers 874
- Defining actions and headers 874
- Customizing error responses 875
- Setting responses to browsers 877
- Enabling proxy and caching services 877
- Configuring virtual hosting 879
- Configuring modules and related services (/etc/httpd/conf.d/*.conf) 881
- Starting and Stopping the Server 882
- Monitoring Server Activities 884
- Displaying server information 885
- Displaying server status 885
- Further security of server-info and server-status 887
- Logging errors 887
- Logging hits 888
- Analyzing Web-server traffic 888
- Statistics Packages Available for Fedora and RHEL 890
- Summary 890
- Chapter 22: Setting Up an LDAP Address Book Server 891
- Understanding LDAP 892
- Defining information in schemas 893
- Understanding OIDs 894
- Structuring your LDAP directories 894
- Setting Up the OpenLDAP Server 895
- Installing OpenLDAP packages 895
- Configuring the OpenLDAP server (slapd.conf) 895
- Creating an Encrypted Password 897
- Starting the OpenLDAP service 898
- Setting Up the Address Book 898
- More Ways to Configure LDAP 904
- Accessing an LDAP Address Book from Thunderbird 905
- Summary 907
- Chapter 23: Setting Up a DHCP Boot Server 909
- Using Dynamic Host Configuration Protocol 909
- Setting Up a DHCP Server 910
- Opening your firewall and SELinux for DHCP 911
- Configuring the /etc/dhcpd.conf file 911
- Expanding the dhcpd.conf file 912
- Adding options 914
- Starting the DHCP server 918
- Setting Up a DHCP Client 919
- Summary 920
- Chapter 24: Setting Up a MySQL Database Server 921
- Finding MySQL Packages 922
- Getting More MySQL Packages 923
- Configuring the MySQL Server 924
- Using mysql user/group accounts 924
- Adding administrative users 925
- Setting MySQL options 925
- Creating the my.cnf configuration file 926
- Choosing options 927
- Checking options 929
- Using sample my.cnf files 930
- Starting the MySQL Server 931
- Checking That MySQL Server Is Working 932
- Working with MySQL Databases 933
- Starting the mysql command 933
- Creating a database with mysql 935
- Adding data to a MySQL database table 936
- Manually entering data 936
- Loading data from a file 938
- Understanding MySQL Tables 939
- Displaying MySQL Databases 945
- Displaying all or selected records 945
- Displaying selected columns 946
- Sorting data 947
- Making Changes to Tables and Records 947
- Altering the structure of MySQL tables 948
- Updating and deleting MySQL records 948
- Adding and Removing User Access 949
- Adding users and granting access 949
- Revoking access 950
- Backing Up Databases 951
- Checking and Fixing Databases 951
- Summary 953
- Chapter 25: Making Servers Public with DNS 955
- Determining Goals for Your Server 956
- Using a hosting service 956
- Connecting a Public Server 957
- Choosing an ISP 957
- Checking Terms of Service 957
- Getting static IP addresses 958
- Choosing a connection speed 959
- Getting a domain name 960
- Checking domain name availability 960
- Reserving a domain name 961
- Configuring Your Public Server 962
- Configuring networking 962
- Configuring servers 963
- Managing security 964
- Opening your firewall 964
- Enabling SELinux 965
- Checking logs and system files 965
- Keeping up with updates 966
- Setting Up a Domain Name System Server 966
- Understanding DNS 967
- Understanding authoritative zones 968
- Understanding DNS risks 968
- Understanding BIND 969
- DNS name server example 970
- Quick-starting a DNS server 972
- Identifying your DNS servers 973
- Creating DNS configuration files (named.conf and var/named) 973
- Starting the named (DNS) daemon 980
- Checking that DNS is working 980
- Getting More Information about BIND 982
- Summary 982
- Chapter 26: Integrating Fedora with Apple Macs 983
- Looking Inside Mac OS X 984
- Using Network Services from Mac OS X 985
- Using AppleTalk (netatalk) from Mac OS X 986
- Using AppleTalk from Mac OS 8 or OS 9 988
- Using Mac, Windows, and Linux servers (Samba) 988
- Sharing X applications 990
- Configuring an AppleTalk Server in Linux 991
- Before you start using netatalk 991
- Setting up the netatalk server 992
- Starting netatalk 993
- Open firewall ports 995
- Defining general AppleTalk server settings 995
- Defining specific AppleTalk servers settings 996
- Setting up users 996
- Sharing netatalk volumes 996
- Securing netatalk volumes 998
- User-level security 998
- Host-level security 999
- File- and directory-level security 999
- Printer Sharing 1003
- Troubleshooting netatalk 1004
- Accessing NFS Servers from the Mac 1005
- Connecting to NFS from the Connect to Server window 1005
- Connecting to NFS from the command line 1007
- Installing Fedora on an Intel-based Mac 1008
- Before installing Fedora on your Mac 1008
- Installing Fedora 1009
- Summary 1010
- Appendix A: About the Media 1011
- Fedora Source Code 1012
- Appendix B: Running Network Services 1013
- Checklist for Running Networking Services 1013
- Networking Service Daemons 1015
- The xinetd super-server 1015
- The init.d start-up scripts 1016
- Choosing Alternatives 1017
- Referencing Network Services 1018
- Web server 1018
- File servers 1019
- FTP servers 1019
- Samba server 1019
- Netatalk server 1020
- Login servers 1020
- E-mail servers 1021
- News server 1021
- Print servers 1022
- Network administration servers 1022
- Network Time Protocol server 1022
- Portmap server 1022
- SWAT 1022
- Arpwatch server 1023
- Simple Network Management Protocol server 1023
- Information servers 1023
- Network Information System servers 1024
- Dynamic Host Configuration Protocol server 1024
- Lightweight Directory Access Protocol server 1024
- Domain Name System server 1025
- Reverse Address Resolution Protocol server 1025
- Database services 1025
- User services 1025
- Remote execution servers 1025
- Talk server 1026
- Finger server 1026
- Remote user identification 1027
- Write-to-All server 1027
- Security services 1027
- System logging 1027
- Virtual private network servers 1027
- Proxy/caching server 1028
- Appendix C: Red Hat Enterprise Linux 5 Features 1033
- What’s in RHEL 5? 1033
- What’s New in RHEL 5.2? 1036
- Choosing an RHEL System 1036
- Getting RHEL Evaluation Subscriptions 1037
- Hardware Compatibility and Commercial Software 1037
- Training and Certification 1038
- Documentation and Support 1039
- Managing RHEL Systems 1039
- Using Red Hat Network 1039
- Using RHEL for high-performance computing clusters 1041
- Using RHEL Global File System 1041
- More Information on RHEL 1042
- Index 1043
BOOK
SUMMARY
Items Found: 423
- MySQL’s Logical Architecture 1
- Connection Management and Security 2
- Optimization and Execution 3
- Concurrency Control 3
- Read/Write Locks 4
- Lock Granularity 4
- Transactions 6
- Isolation Levels 7
- Deadlocks 9
- Transaction Logging 10
- Transactions in MySQL 10
- Multiversion Concurrency Control 12
- MySQL’s Storage Engines 13
- The InnoDB Engine 15
- The MyISAM Engine 17
- Other Built-in MySQL Engines 19
- Third-Party Storage Engines 21
- Selecting the Right Engine 24
- Table Conversions 28
- A MySQL Timeline 29
- MySQL’s Development Model 33
- 2. Benchmarking MySQL 35
- Why Benchmark? 35
- Benchmarking Strategies 37
- What to Measure 38
- Benchmarking Tactics 40
- Designing and Planning a Benchmark 41
- How Long Should the Benchmark Last? 42
- Capturing System Performance and Status 44
- Getting Accurate Results 45
- Running the Benchmark and Analyzing Results 47
- The Importance of Plotting 49
- Benchmarking Tools 50
- Full-Stack Tools 51
- Single-Component Tools 51
- Benchmarking Examples 54
- http_load 54
- MySQL Benchmark Suite 55
- sysbench 56
- dbt2 TPC-C on the Database Test Suite 61
- Percona’s TPCC-MySQL Tool 64
- 3. Profiling Server Performance 69
- Introduction to Performance Optimization 69
- Optimization Through Profiling 72
- Interpreting the Profile 74
- Profiling Your Application 75
- Instrumenting PHP Applications 77
- Profiling MySQL Queries 80
- Profiling a Server’s Workload 80
- Profiling a Single Query 84
- Using the Profile for Optimization 91
- Diagnosing Intermittent Problems 92
- Single-Query Versus Server-Wide Problems 93
- Capturing Diagnostic Data 97
- A Case Study in Diagnostics 102
- Other Profiling Tools 110
- Using the USER_STATISTICS Tables 110
- Using strace 111
- 4. Optimizing Schema and Data Types 115
- Choosing Optimal Data Types 115
- Whole Numbers 117
- Real Numbers 118
- String Types 119
- Date and Time Types 125
- Bit-Packed Data Types 127
- Choosing Identifiers 129
- Special Types of Data 131
- Schema Design Gotchas in MySQL 131
- Normalization and Denormalization 133
- Pros and Cons of a Normalized Schema 134
- Pros and Cons of a Denormalized Schema 135
- A Mixture of Normalized and Denormalized 136
- Cache and Summary Tables 136
- Materialized Views 138
- Counter Tables 139
- Speeding Up ALTER TABLE 141
- Modifying Only the .frm File 142
- Building MyISAM Indexes Quickly 143
- 5. Indexing for High Performance 147
- Indexing Basics 147
- Types of Indexes 148
- Benefits of Indexes 158
- Indexing Strategies for High Performance 159
- Isolating the Column 159
- Prefix Indexes and Index Selectivity 160
- Multicolumn Indexes 163
- Choosing a Good Column Order 165
- Clustered Indexes 168
- Covering Indexes 177
- Using Index Scans for Sorts 182
- Packed (Prefix-Compressed) Indexes 184
- Redundant and Duplicate Indexes 185
- Unused Indexes 187
- Indexes and Locking 188
- An Indexing Case Study 189
- Supporting Many Kinds of Filtering 190
- Avoiding Multiple Range Conditions 192
- Optimizing Sorts 193
- Index and Table Maintenance 194
- Finding and Repairing Table Corruption 194
- Updating Index Statistics 195
- Reducing Index and Data Fragmentation 197
- 6. Query Performance Optimization 201
- Why Are Queries Slow? 201
- Slow Query Basics: Optimize Data Access 202
- Are You Asking the Database for Data You Don’t Need? 202
- Is MySQL Examining Too Much Data? 204
- Ways to Restructure Queries 207
- Complex Queries Versus Many Queries 207
- Chopping Up a Query 208
- Join Decomposition 209
- Query Execution Basics 210
- The MySQL Client/Server Protocol 210
- The Query Cache 214
- The Query Optimization Process 214
- The Query Execution Engine 228
- Returning Results to the Client 228
- Limitations of the MySQL Query Optimizer 229
- Correlated Subqueries 229
- UNION Limitations 233
- Index Merge Optimizations 234
- Equality Propagation 234
- Parallel Execution 234
- Hash Joins 234
- Loose Index Scans 235
- MIN() and MAX() 237
- SELECT and UPDATE on the Same Table 237
- Query Optimizer Hints 238
- Optimizing Specific Types of Queries 241
- Optimizing COUNT() Queries 241
- Optimizing JOIN Queries 244
- Optimizing Subqueries 244
- Optimizing GROUP BY and DISTINCT 244
- Optimizing LIMIT and OFFSET 246
- Optimizing SQL_CALC_FOUND_ROWS 248
- Optimizing UNION 248
- Static Query Analysis 249
- Using User-Defined Variables 249
- Case Studies 256
- Building a Queue Table in MySQL 256
- Computing the Distance Between Points 258
- Using User-Defined Functions 262
- 7. Advanced MySQL Features 265
- Partitioned Tables 265
- How Partitioning Works 266
- Types of Partitioning 267
- How to Use Partitioning 268
- What Can Go Wrong 270
- Optimizing Queries 272
- Merge Tables 273
- Views 276
- Updatable Views 278
- Performance Implications of Views 279
- Limitations of Views 280
- Foreign Key Constraints 281
- Storing Code Inside MySQL 282
- Stored Procedures and Functions 284
- Triggers 286
- Events 288
- Preserving Comments in Stored Code 289
- Cursors 290
- Prepared Statements 291
- Prepared Statement Optimization 292
- The SQL Interface to Prepared Statements 293
- Limitations of Prepared Statements 294
- User-Defined Functions 295
- Plugins 297
- Character Sets and Collations 298
- How MySQL Uses Character Sets 298
- Choosing a Character Set and Collation 301
- How Character Sets and Collations Affect Queries 302
- Full-Text Searching 305
- Natural-Language Full-Text Searches 306
- Boolean Full-Text Searches 308
- Full-Text Changes in MySQL 5.1 310
- Full-Text Tradeoffs and Workarounds 310
- Full-Text Configuration and Optimization 312
- Distributed (XA) Transactions 313
- Internal XA Transactions 314
- External XA Transactions 315
- The MySQL Query Cache 315
- How MySQL Checks for a Cache Hit 316
- How the Cache Uses Memory 318
- When the Query Cache Is Helpful 320
- How to Configure and Maintain the Query Cache 323
- InnoDB and the Query Cache 326
- General Query Cache Optimizations 327
- Alternatives to the Query Cache 328
- 8. Optimizing Server Settings . 331
- How MySQL’s Configuration Works 332
- Syntax,Scope,and Dynamism 333
- Side Effects of Setting Variables 335
- Getting Started 337
- Iterative Optimization by Benchmarking 338
- What Not to Do 340
- Creating a MySQL Configuration File 342
- Inspecting MySQL Server Status Variables 346
- Configuring Memory Usage 347
- How Much Memory Can MySQL Use? 347
- Per-Connection Memory Needs 348
- Reserving Memory for the Operating System 349
- Allocating Memory for Caches 349
- The InnoDB Buffer Pool 350
- The MyISAM Key Caches 351
- The Thread Cache 353
- The Table Cache 354
- The InnoDB Data Dictionary 356
- Configuring MySQL’s I/O Behavior 356
- InnoDB I/O Configuration 357
- MyISAM I/O Configuration 369
- Configuring MySQL Concurrency 371
- InnoDB Concurrency Configuration 372
- MyISAM Concurrency Configuration 373
- Workload-Based Configuration 375
- Optimizing for BLOB and TEXT Workloads 375
- Optimizing for Filesorts 377
- Completing the Basic Configuration 378
- Safety and Sanity Settings 380
- Advanced InnoDB Settings 383
- 9. Operating System and Hardware Optimization 387
- What Limits MySQL’s Performance? 387
- How to Select CPUs for MySQL 388
- Which Is Better: Fast CPUs or Many CPUs? 388
- CPU Architecture 390
- Scaling to Many CPUs and Cores 391
- Balancing Memory and Disk Resources 393
- Random Versus Sequential I/O 394
- Caching,Reads,and Writes 395
- What’s Your Working Set? 395
- Finding an Effective Memory-to-Disk Ratio 397
- Choosing Hard Disks 398
- Solid-State Storage 400
- An Overview of Flash Memory 401
- Flash Technologies 402
- Benchmarking Flash Storage 403
- Solid-State Drives (SSDs) 404
- PCIe Storage Devices 406
- Other Types of Solid-State Storage 407
- When Should You Use Flash? 407
- Using Flashcache 408
- Optimizing MySQL for Solid-State Storage 410
- Choosing Hardware for a Replica 414
- RAID Performance Optimization 415
- RAID Failure,Recovery,and Monitoring 417
- Balancing Hardware RAID and Software RAID 418
- RAID Configuration and Caching 419
- Storage Area Networks and Network-Attached Storage 422
- SAN Benchmarks 423
- Using a SAN over NFS or SMB 424
- MySQL Performance on a SAN 424
- Should You Use a SAN? 425
- Using Multiple Disk Volumes 427
- Network Configuration 429
- Choosing an Operating System 431
- Choosing a Filesystem 432
- Choosing a Disk Queue Scheduler 434
- Threading 435
- Swapping 436
- Operating System Status 438
- How to Read vmstat Output 438
- How to Read iostat Output 440
- Other Helpful Tools 441
- A CPU-Bound Machine 442
- An I/O-Bound Machine 443
- A Swapping Machine 444
- An Idle Machine 444
- 10. Replication 447
- Replication Overview 447
- Problems Solved by Replication 448
- How Replication Works 449
- Setting Up Replication 451
- Creating Replication Accounts 451
- Configuring the Master and Replica 452
- Starting the Replica 453
- Initializing a Replica from Another Server 456
- Recommended Replication Configuration 458
- Replication Under the Hood 460
- Statement-Based Replication 460
- Row-Based Replication 460
- Statement-Based or Row-Based: Which Is Better? 461
- Replication Files 463
- Sending Replication Events to Other Replicas 465
- Replication Filters 466
- Replication Topologies 468
- Master and Multiple Replicas 468
- Master-Master in Active-Active Mode 469
- Master-Master in Active-Passive Mode 471
- Master-Master with Replicas 473
- Ring Replication 473
- Master,Distribution Master,and Replicas 474
- Tree or Pyramid 476
- Custom Replication Solutions 477
- Replication and Capacity Planning 482
- Why Replication Doesn’t Help Scale Writes 483
- When Will Replicas Begin to Lag? 484
- Plan to Underutilize 485
- Replication Administration and Maintenance 485
- Monitoring Replication 485
- Measuring Replication Lag 486
- Determining Whether Replicas Are Consistent with the Master 487
- Resyncing a Replica from the Master 488
- Changing Masters 489
- Switching Roles in a Master-Master Configuration 494
- Replication Problems and Solutions 495
- Errors Caused by Data Corruption or Loss 495
- Using Nontransactional Tables 498
- Mixing Transactional and Nontransactional Tables 498
- Nondeterministic Statements 499
- Different Storage Engines on the Master and Replica 500
- Data Changes on the Replica 500
- Nonunique Server IDs 500
- Undefined Server IDs 501
- Dependencies on Nonreplicated Data 501
- Missing Temporary Tables 502
- Not Replicating All Updates 503
- Lock Contention Caused by InnoDB Locking Selects 503
- Writing to Both Masters in Master-Master Replication 505
- Excessive Replication Lag 507
- Oversized Packets from the Master 511
- Limited Replication Bandwidth 511
- No Disk Space 511
- Replication Limitations 512
- How Fast Is Replication? 512
- Advanced Features in MySQL Replication 514
- Other Replication Technologies 516
- 11. Scaling MySQL 521
- What Is Scalability? 521
- A Formal Definition 523
- Scaling MySQL 527
- Planning for Scalability 527
- Buying Time Before Scaling 528
- Scaling Up 529
- Scaling Out 531
- Scaling by Consolidation 547
- Scaling by Clustering 548
- Scaling Back 552
- Load Balancing 555
- Connecting Directly 556
- Introducing a Middleman 560
- Load Balancing with a Master and Multiple Replicas 564
- 12. High Availability 567
- What Is High Availability? 567
- What Causes Downtime? 568
- Achieving High Availability 569
- Improving Mean Time Between Failures 570
- Improving Mean Time to Recovery 571
- Avoiding Single Points of Failure 572
- Shared Storage or Replicated Disk 573
- Synchronous MySQL Replication 576
- Replication-Based Redundancy 580
- Failover and Failback 581
- Promoting a Replica or Switching Roles 583
- Virtual IP Addresses or IP Takeover 583
- Middleman Solutions 584
- Handling Failover in the Application 585
- 13. MySQL in the Cloud 589
- Benefits,Drawbacks,and Myths of the Cloud 590
- The Economics of MySQL in the Cloud 592
- MySQL Scaling and HA in the Cloud 593
- The Four Fundamental Resources 594
- MySQL Performance in Cloud Hosting 595
- Benchmarks for MySQL in the Cloud 598
- MySQL Database as a Service (DBaaS) 600
- Amazon RDS 600
- Other DBaaS Solutions 602
- 14. Application-Level Optimization 605
- Common Problems 605
- Web Server Issues 608
- Finding the Optimal Concurrency 609
- Caching 611
- Caching Below the Application 611
- Application-Level Caching 612
- Cache Control Policies 614
- Cache Object Hierarchies 616
- Pregenerating Content 617
- The Cache as an Infrastructure Component 617
- Using HandlerSocket and memcached Access 618
- Extending MySQL 618
- Alternatives to MySQL 619
- 15. Backup and Recovery 621
- Why Backups? 622
- Defining Recovery Requirements 623
- Designing a MySQL Backup Solution 624
- Online or Offline Backups? 625
- Logical or Raw Backups? 627
- What to Back Up 629
- Storage Engines and Consistency 632
- Replication 634
- Managing and Backing Up Binary Logs 634
- The Binary Log Format 635
- Purging Old Binary Logs Safely 636
- Backing Up Data 637
- Making a Logical Backup 637
- Filesystem Snapshots 640
- Recovering from a Backup 647
- Restoring Raw Files 648
- Restoring Logical Backups 649
- Point-in-Time Recovery 652
- More Advanced Recovery Techniques 653
- InnoDB Crash Recovery 655
- Backup and Recovery Tools 658
- MySQL Enterprise Backup 658
- Percona XtraBackup 658
- mylvmbackup 659
- Zmanda Recovery Manager 659
- mydumper 659
- mysqldump 660
- Scripting Backups 661
- 16. Tools for MySQL Users 665
- Interface Tools 665
- Command-Line Utilities 666
- SQL Utilities 667
- Monitoring Tools 667
- Open Source Monitoring Tools 668
- Commercial Monitoring Systems 670
- Command-Line Monitoring with Innotop 672
- A. Forks and Variants of MySQL 679
- B. MySQL Server Status . 685
- C. Transferring Large Files 715
- D. Using EXPLAIN 719
- E. Debugging Locks 735
- F. Using Sphinx with MySQL 745
BOOK
SUMMARY
Items Found: 703
- The Worlds of Database Systems
- The Evolution of Database Systems
- Early Database Management Systems
- Relational Database Systems
- Smaller and Smaller Systems
- Bigger and Bigger Systems
- Client-Server and Multi-Tier Architectures
- Multimedia Data
- Information Integration
- Overview of a Database Management System
- Data-Definition Language Commands
- Overview of Query Processing
- Storage and Buffer Management
- Transaction Processing
- The Query Processor
- Outline of Database-System Studies
- Database Design
- Database Programming
- Database System Implementatioll
- Information Integration Overview
- References for Chapter
- The Entity-Relationship Data Model
- Elements of the E/R SIodel
- Entity Sets
- Attributes
- Relationships
- Entity-Relationship Diagrams
- Instances of an E/R Diagram
- Siultiplicity of Binary E/R Relationships
- llultivay Relationships
- Roles in Relationships
- Attributes on Relationships
- Converting Multiway Relationships to Binary
- Subclasses in the E/R,bfodel
- Exercises for Section
- Design Principles
- Faithfulness
- Avoiding Redundancy
- Simplicity Counts
- Choosing the Right Relationships
- Picking the Right Kind of Element
- The Modeling of Constraints
- Classification of Constraints
- Keys in the E/R Model
- Representing Keys in the E/R Model
- Single-Value Constraints
- Referential Integrity '
- Referential Integrity in E/R Diagrams
- Other Kinds of Constraints
- WeakEntity Sets
- Causes of Weak Entity Sets
- Requirements for Weak Entity Sets
- Weak Entity Set Notation
- The Relational Data Model
- Basics of the Relational Model
- Schemas
- Tuples
- Domains
- Equivalent Representations of a Relation
- Relation Instances
- From E/R Diagrams to Relational Designs
- Fro~nE ntity Sets to Relations
- From E/R Relationships to Relations
- Combining Relations
- Handling Weak Entity Sets
- Converting Subclass Structures to Relations
- E/R-Style Conversion
- An Object-Oriented Approach
- Using Null Values to Combine Relations
- Comparison of Approaches
- Functional Dependencies
- Definition of Functional Dependency
- Keys of Relations
- Superkeys
- Discovering Keys for Relations
- Rules About Functional Dependencies
- The Splitting/Combi~~inRgu le
- Trivial Functional Dependencies
- Computing the Closure of Attributes
- Why the Closure Algorithm Works
- The Transitive Rule
- Closing Sets of Functional Dependencies
- Projecting Functional Dependencies
- Design of Relational Database Schemas
- Anomalies
- Decomposing Relations
- Boyce-Codd Normal Form
- Decomposition into BCNF
- Recovering Information from a Decomposition
- Third Sormal Form
- Iultivalued Dependencies
- Attribute Independence and Its Consequent Redundancy
- Definition of Xfultivalued Dependencies
- Reasoning About hlultivalued Dependencies
- Fourth Sormal Form
- Decomposition into Fourth Normal Form
- Relationships Among Xormal Forms
- Other Data Models
- Review of Object-Oriented Concepts
- The Type System
- Classes and Objects
- Object Identity
- Methods
- Class Hierarchies
- Introduction to ODL
- Object-Oriented Design
- Class Declarations
- Attributes in ODL
- Relationships in ODL
- Inverse Relationships
- hfultiplicity of Relationships
- Methods in ODL
- Types in ODL
- Additional ODL Concepts
- Multiway Relationships in ODL
- Subclasses in ODL
- Multiple Inheritance in ODL
- Extents
- Declaring Keys in ODL
- From ODL Designs to Relational Designs
- Froni ODL Attributes to Relational Attributes
- Nonatomic Attributes in Classes
- Representing Set-Valued Attributes
- Representing Other Type Constructors
- Representing ODL Relationships
- What If There Is No Key?
- The Object-Relational Model
- From Relations to Object-Relations
- Nested Relations
- References
- Object-Oriented Versus Object-Relational
- From ODL Designs to Object-Relational Designs
- Semistructured Data
- Motivation for the Semistructured-Data Model
- Semistructured Data Representation
- Information Integration Via Semistructured Data
- XML and Its Data Model
- Semantic Tags
- Well-Formed Xi L
- Document Type Definitions
- Using a DTD
- -ttribute Lists
- Relational Algebra
- An Example Database Schema
- An Algebra of Relational Operations
- Basics of Relational Algebra
- Set Operations on Relations
- Projection
- Selection
- Cartesian Product
- Natural Joins
- Theta-Joins
- Combining Operations to Form Queries
- Renaming
- Dependent and Independent Operations
- A Linear Notation for Algebraic Expressions
- Relational Operations on Bags
- Why Bags?
- Union,Intersection,and Difference of Bags
- Projection of Bags
- Selection on Bags
- Product of Bags
- Joins of Bags
- Extended Operators of Relational Algebra
- Duplicate Elimination
- Aggregation Operators
- Grouping
- The Grouping Operator
- Extending the Projection Operator
- The Sorting Operator
- Outerjoins
- Constraints on Relations
- Relational Algebra as a Constraint Language
- Referential Integrity Constraillts
- Additional Constraint Examples
- The Database Language SQL
- Simple Queries in SQL
- Projection in SQL
- Selection in SQL
- Comparison of Strings
- Dates and Times
- Null Values and Comparisons Involving NULL
- The Truth-Value UNKNOWN
- Ordering the Output
- Queries Involving More Than One Relation
- Products and Joins in SQL
- Disambiguating Attributes
- Tuple Variables
- Interpreting Multirelation Queries
- Union,Intersection,and Difference of Queries
- Subqueries
- Subqucries that Produce Scalar Values
- Conditions Involving Relations
- Conditions Involving Tuples
- Correlated Subqueries
- Subqueries in FROM Clauses
- SQL Join Expressions
- Xatural Joins
- Fn-Relation Operations
- Eliminating Duplicates
- Duplicates in Unions,Intersections,and Differences
- Grouping and Aggregation in SQL
- HAVING Clauses
- Database hlodifications
- Insertion
- Deletion
- Updates
- Exercises for Section G
- Defining a Relation Schema in SQL
- Data Types
- Simple Table Declarations
- Modifying Relation Schemas
- Default Values
- Indexes
- Introduction to Selection of Indexes
- View Definitions
- Declaring Views
- Querying Views
- Renaming Attributes
- Modifying Views
- Interpreting Queries Involving Views
- Constraints and Triggers
- Keys andForeign Keys
- Declaring Primary Keys
- Keys Declared ?VithUNIQUE
- Enforcing Key Constraints
- Declaring Foreign-Key Constraints
- Maintaining Referential Integrity
- Deferring the Checking of Constraints
- Constraints on Attributes and Tuples
- Kot-Null Constraints
- Attribute-Based CHECK Constraints
- Tuple-Based CHECK Constraints
- ?Iodification of Constraints
- Giving Names to Constraints
- Altering Constraints on Tables
- Schema-Level Constraints and Triggers
- Assertions
- Event-Condition- Action Rules
- Triggers in SQL
- Instead-Of Triggers
- System Aspects of SQL
- SQL in a Programming Environment
- The Impedance Mismatch Problem
- The SQL/Host Language Interface
- The DECLARE Section
- Using Shared Variables
- Single-Row Select Statements
- Cursors
- Modifications by Cursor
- Protecting Against Concurrent Updates
- Scrolling Cursors
- Dynamic SQL
- Procedures Stored in the Schema
- Creating PSM Functions and Procedures
- Some Simple Statement Forms in PSM
- Branching Statements
- Queries in PSM
- Loops in PSM
- For-Loops
- Exceptions in PSM
- Using PSM Functions and Procedures
- The SQL Environment
- Environments
- Catalogs
- Clients and Servers in the SQL Environment
- Connections
- Sessions
- Modules
- Using a Call-Level Interface
- Introduction to SQL/CLI
- Processing Statements
- Fetching Data F'rom a Query Result
- Passing Parameters to Queries
- Java Database Connectivity
- Introduction to JDBC
- Creating Statements in JDBC
- Cursor Operations in JDBC
- Parameter Passing
- Transactions in SQL
- Serializability
- Atomicity
- Transactions
- Read-only Transactions
- Dirty Reads
- Other Isolation Levels
- Security and User Authorization in SQL
- Privileges
- Creating Privileges
- The Privilege-Checking Process
- Granting Privileges
- Grant Diagrams
- Revoking Privileges
- Object-Orientation in Query Languages
- Introduction to OQL
- An Object-Oriented Movie Example
- Path Expressions
- Select-From-Where Expressions in OQL
- Modifying the Type of the Result
- Complex Output Types
- Additional Forms of OQL Expressions
- Quantifier Expressions
- Aggregation Expressions
- Group-By Expressions
- Union,Intersection,and Difference
- Object Assignment and Creation in OQL
- Assigning -alues to Host-Language biables
- Extracting Elements of Collections
- Obtaining Each Member of a Collection
- Constants in OQL
- Creating Sew Objects
- User-Defined Types in SQL
- Defining Types in SQL
- XIethods in User-Defined Types
- Declaring Relations with a UDT
- Operations on Object-Relational Data
- Following References
- Accessing Attributes of Tuples with a UDT
- Generator and Mutator Functions
- Ordering Relationships on UDT's
- Logical Query Languages
- A Logic for Relations
- Predicates and Atoms
- Arithmetic Atoms
- Datalog Rules and Queries
- Meaning of Datalog Rules
- Extensional and Intensional Predicates
- Datalog Rules Applied to Bags
- Fkom Ilelational Algebra to Datalog
- Intersection
- Union
- Difference
- Product
- Joins
- Simulating Alultiple Operations with Datalog
- Recursive Programming in Datalog
- Recursive Rules
- Evaluating Recursive Datalog Rules
- Negation in Recursive Rules
- Recursion in SQL
- Defining IDB Relations in SQL
- Stratified Negation
- Problematic Expressions in Recursive SQL
- Data Storage
- The Database System
- hlegatron Implenlentation Details
- How LIegatron Executes Queries
- What's Wrong With hiegatron ?
- The Memory Hierarchy
- Cache
- Main Alernory
- irtualM emory
- Secondary Storage
- Tertiary Storage
- Volatile and Nonvolatile Storage
- Disks
- ivlechanics of Disks
- The Disk Controller
- Disk Storage Characteristics
- Disk Access Characteristics
- Writing Blocks
- Modifying Blocks
- Using Secondary Storage Effectively
- The If Model of Computation
- Sorting Data in Secondary Storage
- Merge-Sort
- Two-Phase,Multiway 'ferge-Sort
- AIultiway Merging of Larger Relations
- Accelerating Access to Secondary Storage
- Organizing Data by Cylinders
- Using llultiple Disks
- Mirroring Disks
- Disk Scheduling and the Elevator Algorithm
- Prefetching and Large-Scale Buffering
- Disk Failures
- Intermittent Failures
- Checksums
- Stable Storage
- Error-Handling Capabilities of Stable Storage
- Recorery from Disk Crashes
- The Failure Model for Disks
- llirroring as a Redundancy Technique
- Parity Blocks
- An Improvement: RAID
- Coping With Multiple Disk Crashes
- Representing Data Elements
- Data Elements and Fields
- Representing Relational Database Elements
- Representing Objects
- Records
- Building Fixed-Length Records
- Record Headers
- Packing Fixed-Length Records into Blocks
- Representing Block and Record Addresses
- Client-Server Systems
- Logical and Structured Addresses
- Pointer Swizzling
- Returning Blocks to Disk
- Pinned Records and Blocks
- Variable-Length Data and Records
- Records With Variable-Length Fields
- Records With Repeating Fields
- Variable-Format Records
- Records That Do Not Fit in a Block
- BLOBS
- Record Modifications
- Update
- Index Structures
- Indexes on Sequential Files
- Sequential Files
- Dense Indexes :
- Sparse Indexes
- Multiple Levels of Index
- Indexes With Duplicate Search Keys
- Managing Indexes During Data llodifications
- Secondary Indexes
- Design of Secondary Indexes
- pplications of Secondary Indexes
- Indirection in Secondary Indexes
- Document Retrieval and Inverted Indexes
- B-Trees
- The Structure of B-trees
- Applications of B-trees
- Lookup in B-Trees
- Range Queries
- Insertion Into B-Trees
- Deletion From B-Trees
- Efficiency of B-Trees
- Hash Tables
- Secondary-Storage Hash Tables
- Insertion Into a Hash Table
- Hash-Table Deletion
- Efficiencyo f Hash Table Indexes
- Extensible Hash Tables
- Insertion Into Extensible Hash Tables
- Linear Hash Tables
- Insertion Into Linear Hash Tables
- Multidimensional and Bitmap Indexes
- applications Xeeding klultiple Dimensio
- Geographic Information Systems
- Data Cubes
- Ilultidimensional Queries in SQL
- Executing Range Queries Using Conventional Indexes
- Executing Nearest-Xeighbor Queries Using Conventional
- Other Limitations of Conventional Indexes
- Overview of llultidimensional Index Structures
- Hash-Like Structures for lIultidimensiona Data
- Grid Files
- Lookup in a Grid File
- Insertion Into Grid Files
- Performance of Grid Files
- Partitioned Hash Functions
- Comparison of Grid Files and Partitioned Hashing
- Tree-Like Structures for AIultidimensional Data
- Multiple-Key Indexes
- Performance of Multiple-Key Indexes
- kd-Trees
- Operations on kd-Trees
- dapting kd-Trees to Secondary Storage
- Quad Trees
- R-Trees
- Operations on R-trees
- Bitmap Indexes
- Motivation for Bitmap Indexes
- Compressed Bitmaps
- Operating on Run-Length-Encoded Bit-Vectors
- Managing Bitmap Indexes
- Query Execution
- Introduction to Physical-Query-Plan Operators
- Scanning Tables
- Sorting While Scanning Tables
- The Model of Computation for Physical Operators
- Parameters for Measuring Costs
- I/O Cost for Scan Operators
- Iterators for Implementation of Physical Operators
- One-Pass Algorithms for Database Operations
- One-Pass Algorithms for Tuple-at-a-Time Operations
- One-Pass Algorithms for Unary,Full-Relation Operations
- One-Pass Algorithms for Binary Operations
- Nested-I,oop Joins
- Tuple-Based Nested-Loop Join
- An Iterator for Tuple-Based Nested-Loop Join
- A Block-Based Nested-Loop Join Algorithm
- Analysis of Nested-Loop Join
- Two-Pass Algorithms Based on Sorting
- Duplicate Elimination Using Sorting
- Grouping and -Aggregation Using Sorting
- A Sort-Based Union lgorithm
- Sort-Based Intersection and Difference
- A Simple Sort-Based Join Algorithm
- Analysis of Simple Sort-Join
- A More Efficient Sort-Based Join
- Two-Pass Algorithms Based on Hashing
- Partitioning Relations by Hashing
- A Hash-Based Algorithm for Duplicate Elimination
- Hash-Based Grouping and Aggregation
- Hash-Based Union,Intersection,and Difference
- The Hash-Join Algorithm
- Saving Some Disk I/Os
- Index-Based Algorithms
- Clustering and Nonclustering Indexes
- Index-Based Selection
- Joining by Using an Index
- Joins Using a Sorted Index
- Buffer Management
- Buffer Itanagement Architecture
- Buffer Management Strategies
- The Relationship Between Physical Operator Selection
- and Buffer Management
- Algorithms Using More Than Two Passes
- Multipass Sort-Based Algorithms
- Performance of lfultipass,Sort-Based Algorithms
- Multipass Hash-Based Algorithms
- Performance of Multipass Hash-Based Algorithms
- Parallel Algorithms for Relational Operations
- SIodels of Parallelism
- Tuple-at-a-Time Operations in Parallel
- Parallel Algorithms for Full-Relation Operations
- Performance of Parallel Algorithms
- The Query Compiler
- Parsing '
- Syntax Analysis and Parse Trees
- A Grammar for a Simple Subset of SQL
- The Preprocessor
- Algebraic Laws for Improving Query Plans
- Ordering of Physical Operations
- Commutative and Associative Laws
- Laws Involving Selection
- Pushing Selections
- Laws Involving Projection
- Laws About Joins and Products
- Coping With System Failures
- Laws Involving Duplicate Elimination
- Issues and Models for Resilient Operation
- Laws Involving Grouping and Aggregation
- Failure Modes Exercises for Section
- More About Transactions
- From Parse Bees to Logical Query Plans
- Correct Execution of Transactions
- Conversion to Relational Algebra
- The Primitive Operations of Transactions
- Removing Subqueries From Conditions
- Improving the Logical Query Plan
- Grouping Associative/Commutative Operators
- Undo Logging
- Log Records
- Estimating the Cost of Operations
- The Undo-Logging Rules
- Estimating Sizes of Intermediate Relations
- Recovery Using Undo Logging
- Estimating the Size of a Projection
- Checkpointing
- Estimating the Size of a Selection
- Nonquiescent Checkpointing
- Estimating the Size of a Join
- Natural Joins With Multiple Join Attributes
- Redo Logging
- Joins of Many Relations
- The Redo-Logging Rule
- Estimating Sizes for Other Operations
- Recovery With Redo Logging
- Checkpointing a Redo Log
- Introduction to Cost-Based Plan Selection
- Recovery With a Checkpointed Redo Log
- Obtaining Estimates for Size Parameters
- Computation of Statistics
- Undo/RedoLogging
- Heuristics for Reducing the Cost of Logical Query Plans
- The Undo/Redo Rules
- Approaches to Enumerating Physical Plans
- Recovery With Undo/Redo Logging
- Choosing an Order for Joins
- Checkpointing an Undo/Redo Log
- Significance of Left and Right Join Arguments
- Join Trees
- Protecting Against Media Failures
- Left-Deep Join Trees
- The Archive
- Dynamic Programming to Select a Join Order and Grouping
- Nonquiescent Archiving
- Dynamic Programming With More Detailed Cost Functions
- Recovery Using an Archive and Log
- A Greedy Algorithm for Selecting a Join Order
- Con~pletingt he Physical-Query-Plan
- Choosing a Selection Method
- Choosing a Join Method
- Concur rency Control
- Pipelining Versus Materialization
- Serial and Serializable Schedules
- Pipelining Unary Operations
- Schedules
- Pipelining Binary Operations
- Serial Schedules
- Notation for Physical Query Plans
- Serializable Schedules
- The Effect of Transaction Semantics
- A Notation for Transactions and Schedules
- Conflict-Seridiability
- Conflicts
- Precedence Graphs and a Test for Conflict-Serializability
- Why the Precedence-Graph Test Works
- Enforcing Serializability by Locks
- Locks
- The Locking Scheduler
- Two-Phase Locking
- Why Two-Phase Locking Works
- Locking Systems With Several Lock hlodes
- Shared and Exclusive Locks
- Compatibility Matrices
- Upgrading Locks
- Update Locks
- Increment Locks -
- An Architecture for a Locking Scheduler
- A Scheduler That Inserts Lock Actions
- The Lock Table
- hianaging Hierarchies of Database Elements
- Locks With Multiple Granularity
- Warning Locks
- Phantoms and Handling Insertions Correctly
- The Tree Protocol
- Motivation for Tree-Based Locking
- Rules for Access to Tree-Structured Data
- Why the Tree Protocol Works
- Concurrency Control by Timestanips
- Timestamps
- Physically Cnrealizable Behaviors
- Problems Kith Dirty Data
- The Rules for Timestamp-Based Scheduling
- Xfultiversion Timestamps
- Timestamps and Locking
- Concurrency Control by Validation
- Architecture of a Validation-Based Scheduler
- The Validation Rules
- Comparison of Three Concurrency-Control
- More About Transaction Management
- Serializability and Recoverability
- The Dirty-Data Problem
- Cascading Rollback
- Recoverable Schedules
- Schedules That Avoid Cascading Rollback
- JIanaging Rollbacks Using Locking
- Group Commit
- Logical Logging
- Recovery From Logical Logs
- View Serializability
- View Equivalence
- Polygraphs and the Test for View-Serializability
- Testing for View-Serializability
- Resolving Deadlocks
- Deadlock Detection by Timeout
- The IVaits-For Graph
- Deadlock Prevention by Ordering Elements
- Detecting Deadlocks by Timestamps
- Comparison of Deadlock-Alanagenient Methods
- Esercises for Section
- Distributed Databases
- Distribution of Data
- Distributed Transactions
- Data Replication
- Distributed Query Optimization
- Distributed Commit
- Supporting Distributed dtomicity
- Two-Phase Commit
- Recovery of Distributed Transactions
- Distributed Locking
- Centralized Lock Systems
- A Cost Model for Distributed Locking Algorithms
- Locking Replicated Elements
- Primary-Copy Locking
- Global Locks From Local Locks
- Long-Duration Pansactions
- Problems of Long Transactions
- Sagas
- Compensating Transactions
- Why Compensating Transactions Work
- Information Tntegration
- Modes of Information Integration
- Problems of Information Integration
- Federated Database Systems
- Data Warehouses
- Mediators ii
- Wrappers in Mediator-Based Systems
- Templates for Query Patterns
- Wrapper Generators
- Filters
- Other Operations at the Wrapper
- Capability-Based Optimization in Mediators
- The Problem of Limited Source Capabilities
- A Notation for Describing Source Capabilities
- Capability-Based Query-Plan Selection
- Adding Cost-Based Optimization
- On-Line Analytic Processing
- OLAP Applications
- fultidimensional View of OLAP Data
- Star Schemas
- Slicing and Dicing
- The Cube Operator
- Cube Implementation by Materialized Views
- The Lattice of Views
- Data Mining s
- Data-Mining Applications
- Finding Frequent Sets of Items
- The --Priori Algorithm
BOOK
SUMMARY
Items Found: 274
- Summary 422
- Detecting and Resolving Lock Conflicts 419
- Maximizing Data Concurrency 417
- Understanding Locks and Transactions 416
- Monitoring Locking and Resolving Lock Conflicts 416
- Monitoring,Configuring,and Administering Undo 407
- Using Undo Data 405
- Understanding Undo Segments 403
- Leveraging Undo Management 402
- Chapter 8 Managing Consistency and Concurrency 401
- Answers to Review Questions 399
- Review Questions 395
- Exam Essentials 394
- Summary 393
- Specifying Control File Options 390
- Specifying SQL*Loader Command-Line Parameters 389
- Loading Data with SQL*Loader 388
- Monitoring the Progress of a Data Pump Job 388
- Using Data Pump to Import Data 381
- Using Data Pump to Export Data 375
- Data Pump Overview 374
- Creating Directory Objects 374
- Configuring PL/SQL for Better Performance 373
- Using and Administering PL/SQL Programs 371
- Working with Triggering Events and Managing Triggers 367
- Working with Packages 365
- Working with Procedures 365
- Working with Functions 363
- Identifying PL/SQL Objects 363
- Statements 362
- DELETE
- Using
- Statements 361
- UPDATE
- Statements 358
- INSERT
- Manipulating Data through SQL 358
- Chapter 7 Managing Data with SQL,PL/SQL,and Utilities 357
- Answers to Review Questions 355
- Review Questions 351
- Exam Essentials 349
- Summary 349
- Managing Fine-Grained Auditing 346
- Purging the Audit Trail 345
- Managing Object Auditing 344
- Managing Privilege Auditing 343
- Managing Statement Auditing 338
- Auditing Database Activity 336
- Implementing Standard Password Security Features 334
- Managing Default User Accounts 333
- Applying the Principle of Least Privilege 331
- Assigning Resource Limits with a Profile 328
- Assigning Tablespace Quotas 328
- Controlling Resource Usage by Users 327
- Role Privileges 324
- Granting System Privileges 318
- Granting Object Privileges 314
- Granting and Revoking Privileges 314
- Removing a User from the Database 314
- Assigning a Profile to a User 313
- Assigning a Temporary Tablespace 312
- Assigning a Default Tablespace 312
- Configuring Authentication 310
- Creating and Managing User Accounts 310
- Chapter 6 User Administration and Security 309
- Answers to Review Questions 306
- Review Questions 302
- Exam Essentials 301
- Summary 300
- Determining Whether You Have Enough Shared Servers 299
- Measuring How Long Users Are Waiting for Dispatchers 298
- Determining Whether You Have Enough Dispatchers 297
- Sizing the Large Pool 296
- Configuring the Large Pool 296
- Tuning the Shared Server Option 295
- Shared Server Environment 294
- Requesting a Dedicated Connection in a
- Using Dynamic Performance Views for Shared Server 289
- Connections Using the Listener Utility 288
- Displaying Information about Shared Server
- Managing Shared Server 288
- Configuring Shared Server Using Enterprise Manager 285
- Configuring Shared Server at Database Creation 283
- Defining the Shared Server Parameters 277
- Configuring the Oracle Shared Server 276
- Server Environment 276
- The Role of the Listener in an Oracle Shared
- Shared Server 274
- PGA and SGA Changes When Using Oracle
- Oracle Shared Server Infrastructure 274
- Advantages and Disadvantages of Shared Server 273
- Dedicated Server versus Shared Server 271
- An Overview of Oracle Shared Server 270
- Chapter 5 Oracle Shared Server 269
- Answers to Review Questions 267
- Review Questions 263
- Exam Essentials 260
- Summary 259
- Troubleshooting Client-Side Connection Problems 254
- The Localnaming Method 246
- The Oracle Easy Connect Naming Method 244
- The Hostnaming Method 239
- Client-Side Names Resolution Options 238
- Configuring Oracle Net for the Client 238
- Oracle Net Logging and Tracing on the Server 233
- Troubleshooting Server-Side Connection Problems 227
- Additional Configurations When Using Multiple Listeners 225
- Dynamically Registering Services 224
- Managing Oracle Listeners 203
- Understanding the Oracle Listener 199
- Configuring Oracle Net on the Server 198
- Accessibility 197
- Security 196
- Scalability 194
- Manageability 193
- Connectivity 192
- An Overview of Oracle Net Features 191
- N-Tier Architecture 190
- Two-Tier Architecture 190
- Single-Tier Architecture 189
- Network Configurations 189
- Network Responsibilities for the DBA 188
- Interfacing Existing Systems with New Systems 188
- Network Security Issues 187
- Network Complexity Issues 186
- Network Design Considerations 186
- Chapter 4 Oracle Net Services 185
- Answers to Review Questions 182
- Review Questions 178
- Exam Essentials 176
- Summary 176
- Working with Sequences 175
- Working with Views 174
- Working with Indexes 172
- Working with Constraints 165
- Creating Tables 158
- Specifying Datatypes 152
- Working with Schema Objects 152
- Managing Datafiles 151
- Obtaining Tablespace Information 145
- Creating and Maintaining Tablespaces 138
- Identifying Default Tablespaces 137
- Managing Tablespaces 136
- Identifying Segments,Extents,and Data Blocks 136
- Chapter 3 Database Storage and Schema Objects 135
- Answers to Review Questions 133
- Review Questions 129
- Exam Essentials 127
- Summary 125
- Monitoring the Database Alert Log 122
- Shutting Down Oracle Using SQL*Plus 122
- Shutting Down Oracle Using EM Database Control 118
- Database 117
- Shutting Down an Oracle 10 g
- Database Startup 111
- Oracle 10 g
- Starting Up and Shutting Down an Oracle Database 111
- Managing Parameter Initialization Files 109
- Managing Database Templates Using DBCA 107
- Deleting an Oracle Database Using DBCA 106
- Configuring an Oracle Database Using DBCA 106
- Creating an Oracle Database Using the DBCA 84
- Using the Oracle Database Configuration Assistant 84
- Using SQL*Plus 80
- Accessing a Database Using the Database Control 80
- Starting and Stopping the Oracle Management Agent 78
- The Oracle Enterprise Management Framework 76
- Chapter 2 Creating and Controlling a Database 75
- Answers to Review Questions 72
- Review Questions 68
- Exam Essentials 66
- Summary 65
- Using the Oracle Universal Installer 56
- Plan Your Install 49
- Review the System Requirements 48
- Review the Documentation 48
- Installing Oracle 10g 48
- The Oracle Database 38
- The Oracle Instance 28
- User Processes 26
- The Oracle Architecture 25
- Interacting with Segments 19
- Other Segment Types 17
- Relationships and Constraints 11
- Rows,Columns,Tables,and Databases 7
- Relational Database Concepts 6
- Oracle Services 5
- Oracle Collaboration Suite 5
- Oracle Applications 11i 5
- Oracle Developer Suite 4
- Oracle Application Server 10g 4
- Oracle 10g 3
- The Oracle Product Family 2
- Components and Architecture 1
- Chapter 1 Oracle Database 10g
- Index 605
- Glossary 87
- Implementing Database Recovery 543
- Chapter 11
- Implementing Database Backups 499
- Chapter 10
- Performance Monitoring 431
- Proactive Database Maintenance and
- Chapter 9
- Managing Consistency and Concurrency 401
- Chapter 8
- Managing Data With SQL,PL/SQL,and Utilities 357
- Chapter 7
- User Administration and Security 309
- Chapter 6
- Oracle Shared Server 269
- Chapter 5
- Oracle Net Services 185
- Chapter 4
- Database Storage and Schema Objects 135
- Chapter 3
- Creating and Controlling a Database 75
- Chapter 2
- Chapter 1
- Oracle Database 10g
- Exam Essentials 423
- Review Questions 424
- Answers to Review Questions 429
- Chapter 9 Proactive Database Maintenance and
- Proactive Database Maintenance 432
- Automatic Workload Repository 432
- Automatic Database Diagnostic Monitoring 435
- ADDM Diagnostic Advisors 445
- ADDM Alerts 463
- Performance Monitoring 471
- Sources of Tuning Information 471
- Storing Database Statistics in the Data Dictionary 480
- Important Performance Metrics 485
- Summary 489
- Exam Essentials 491
- Review Questions 492
- Answers to Review Questions 497
- Chapter 10 Implementing Database Backups 499
- Understanding and Configuring Recovery Components 501
- Control Files 501
- Understanding Checkpoints 505
- Redo Log Files 506
- Archived Redo Log Files 514
- The Flash Recovery Area 518
- Performing Backups 521
- Understanding Backup Terminology 521
- Backing Up the Control File 522
- Using RMAN to Create Backups 525
- Managing Backups 530
- Catalog Maintenance 530
- Monitoring the Flash Recovery Area 531
- Automating Backups 532
- Summary 534
- Exam Essentials 534
- Review Questions 536
- Answers to Review Questions 540
- Chapter 11 Implementing Database Recovery 543
- Understanding Database Failure Types 544
- Statement Failures 545
- User Process Failures 545
- Network Failures 546
- User Error Failures 546
- Instance Failures 547
- Media Failures 547
- Performing Recovery Operations 548
- Understanding Instance Startup 548
- Keeping an Instance from Failing 550
- Recovering from Instance Failure 550
- Tuning Instance Recovery 551
- Recovering from User Errors 552
- Recovering from Loss of a Control File 564
- Recovering from Loss of a Redo Log File 566
- Recovering from Loss of a System-Critical Datafile 569
- Recovering from Loss of a Non–System-Critical Datafile 573
BOOK
SUMMARY
Items Found: 293
- Chapter 1 Advanced Class Design 1
- Chapter 2 Design Patterns and Principles 47
- Chapter 3 Generics and Collections 103
- Chapter 4 Functional Programming 171
- Chapter 5 Dates,Strings,and Localization 233
- Chapter 6 Exceptions and Assertions 283
- Chapter 7 Concurrency 325
- Chapter 8 IO 405
- Chapter 9 NIO.2 453
- Chapter 10 JDBC 505
- Appendix A Answers to Review Questions 547
- Appendix B Study Tips 575
- Appendix C Upgrading from Java 6 or Earlier 595
- Index 649
- Reviewing OCA Concepts 2
- Access Modifiers 2
- Overloading and Overriding 4
- Abstract Classes 5
- Static and Final 6
- Imports 6
- Using instanceof 7
- Understanding Virtual Method Invocation 9
- Annotating Overridden Methods 11
- Coding equals,hashCode,and toString 13
- toString 13
- equals 15
- hashCode 18
- Working with Enums 20
- Using Enums in Switch Statements 21
- Adding Constructors,Fields,and Methods 22
- Creating Nested Classes 24
- Member Inner Classes 25
- Local Inner Classes 27
- Anonymous Inner Classes 29
- Static Nested Classes 31
- Summary 33
- Exam Essentials 34
- Review Questions 36
- Designing an Interface 48
- Purpose of an Interface 51
- Introducing Functional Programming 52
- Defining a Functional Interface 53
- Implementing Functional Interfaces with Lambdas 55
- Applying the Predicate Interface 60
- Implementing Polymorphism 61
- Distinguishing between an Object and a Reference 63
- Casting Object References 64
- Understanding Design Principles 66
- Encapsulating Data 66
- Creating JavaBeans 69
- Applying the Is?a Relationship 71
- Applying the Has?a Relationship 73
- Composing Objects 74
- Working with Design Patterns 75
- Applying the Singleton Pattern 76
- Creating Immutable Objects 82
- Using the Builder Pattern 86
- Creating Objects with the Factory Pattern 89
- Summary 93
- Exam Essentials 93
- Review Questions 95
- Reviewing OCA Collections 104
- Array and ArrayList 104
- Searching and Sorting 105
- Wrapper Classes and Autoboxing 106
- The Diamond Operator 107
- Working with Generics 108
- Generic Classes 109
- Generic Interfaces 112
- Generic Methods 114
- Interacting with Legacy Code 114
- Bounds 117
- Putting It All Together 122
- Using Lists,Sets,Maps,and Queues 124
- Common Collections Methods 125
- Using the List Interface 127
- Using the Set Interface 132
- Using the Queue Interface 134
- Map 138
- Comparing Collection Types 140
- Comparator vs. Comparable 143
- Comparable 143
- Comparator 146
- Searching and Sorting 150
- Additions in Java 8 152
- Using Method References 152
- Removing Conditionally 154
- Updating All Elements 155
- Looping through a Collection 155
- Using New Java 8 Map APIs 155
- Summary 159
- Exam Essentials 161
- Review Questions 162
- Using Variables in Lambdas 172
- Working with Built-In Functional Interfaces 173
- Implementing Supplier 174
- Implementing Consumer and BiConsumer 175
- Implementing Predicate and BiPredicate 177
- Implementing Function and BiFunction 178
- Implementing UnaryOperator and BinaryOperator 180
- Checking Functional Interfaces 181
- Returning an Optional 182
- Using Streams 185
- Creating Stream Sources 188
- Using Common Terminal Operations 189
- Using Common Intermediate Operations 196
- Putting Together the Pipeline 200
- Printing a Stream 204
- Working with Primitives 205
- Creating Primitive Streams 205
- Using Optional with Primitive Streams 208
- Summarizing Statistics 210
- Learning the Functional Interfaces for Primitives 210
- Working with Advanced Stream Pipeline Concepts 213
- Linking Streams to the Underlying Data 213
- Chaining Optionals 214
- Collecting Results 217
- Summary 223
- Exam Essentials 224
- Review Questions 226
- Working with Dates and Times 234
- Creating Dates and Times 235
- Manipulating Dates and Times 241
- Working with Periods 244
- Working with Durations 247
- Accounting for Daylight Savings Time 251
- Reviewing the String class 253
- Adding Internationalization
- and Localization 255
- Picking a Locale 256
- Using a Resource Bundle 258
- Formatting Numbers 267
- Formatting Dates and Times 270
- Summary 273
- Exam Essentials 274
- Review Questions 276
- Reviewing Exceptions 284
- Exceptions Terminology 284
- Categories of Exceptions 285
- Exceptions on the OCP 286
- Try Statement 288
- Throw vs. Throws 289
- Creating Custom Exceptions 289
- Using Multi-catch 291
- Using Try-With-Resources 296
- Try-With-Resources Basics 298
- AutoCloseable 300
- Suppressed Exceptions 302
- Putting It Together 305
- Rethrowing Exceptions 305
- Working with Assertions 308
- The assert Statement 308
- Enabling Assertions 309
- Using Assertions 310
- Summary 314
- Exam Essentials 315
- Review Questions 316
- Introducing Threads 327
- Distinguishing Thread Types 328
- Understanding Thread Concurrency 328
- Introducing Runnable 330
- Creating a Thread 331
- Polling with Sleep 334
- Creating Threads with the ExecutorService 335
- Introducing the Single-Thread Executor 335
- Shutting Down a Thread Executor 337
- Submitting Tasks 338
- Waiting for Results 340
- Scheduling Tasks 345
- Increasing Concurrency with Pools 348
- Synchronizing Data Access 350
- Protecting Data with Atomic Classes 352
- Improving Access with Synchronized Blocks 354
- Synchronizing Methods 356
- Understanding the Cost of Synchronization 357
- Using Concurrent Collections 358
- Introducing Concurrent Collections 358
- Understanding Memory Consistency Errors 359
- Working with Concurrent Classes 360
- Obtaining Synchronized Collections 365
- Working with Parallel Streams 366
- Creating Parallel Streams 366
- Processing Tasks in Parallel 367
- Processing Parallel Reductions 372
- Managing Concurrent Processes 377
- Creating a CyclicBarrier 377
- Applying the Fork/Join Framework 381
- Identifying Threading Problems 387
- Understanding Liveness 387
- Managing Race Conditions 391
- Summary 392
- Exam Essentials 393
- Review Questions 394
- Understanding Files and Directories 406
- Conceptualizing the File System 406
- Introducing the File Class 407
- Introducing Streams 411
- Stream Fundamentals 411
- Stream Nomenclature 412
- Common Stream Operations 418
- Working with Streams 420
- The FileInputStream and FileOutputStream Classes 420
- The FileReader and FileWriter classes 424
- The ObjectInputStream and ObjectOutputStream Classes 426
- The PrintStream and PrintWriter Classes 432
- Review of Stream Classes 435
- Interacting with Users 437
- The Old Way 437
- The New Way 438
- Summary 442
- Exam Essentials 443
- Review Questions 445
- Introducing NIO.2 454
- Introducing Path 455
- Creating Paths 456
- Interacting with Paths and Files 460
- Providing Optional Arguments 461
- Using Path Objects 462
- Interacting with Files 471
- Understanding File Attributes 478
- Discovering Basic File Attributes 478
- Improving Access with Views 483
- Presenting the New Stream Methods 487
- Conceptualizing Directory Walking 487
- Walking a Directory 488
- Searching a Directory 490
- Comparing Legacy File and NIO.2 Methods 494
- Summary 495
- Exam Essentials 495
- Review Questions 497
- Introducing Relational Databases and SQL 507
- Identifying the Structure of a Relational Database 508
- Writing Basic SQL Statements 510
- Introducing the Interfaces of JDBC 511
- Connecting to a Database 513
- Building a JDBC URL 513
- Getting a Database Connection 515
- Obtaining a Statement 518
- Choosing a ResultSet Type 519
- Choosing a ResultSet Concurrency Mode 520
- Executing a Statement 520
- Getting Data from a ResultSet 524
- Reading a ResultSet 524
- Getting Data for a Column 526
- Scrolling ResultSet 529
- Closing Database Resources 533
- Dealing with Exceptions 535
- Summary 536
- Exam Essentials 537
- Review Questions 539
- Chapter 1: Advanced Class Design 548
- Chapter 2: Design Patterns and Principles 550
- Chapter 3: Generics and Collections 553
- Chapter 4: Functional Programming 556
- Chapter 5: Dates,Strings,and Localization 558
- Chapter 6: Exceptions and Assertions 560
- Chapter 7: Concurrency 561
- Chapter 8: IO 565
- Chapter 9: NIO.2 568
- Chapter 10: JDBC 571
- Studying for the Test 576
- Creating a Study Plan 576
- Comparing Previous Exams 578
- Creating and Running Sample Applications 579
- Taking the Test 582
- Understanding the Question 582
- Taking Advantage of the Exam Software 587
- Using the Provided Writing Material 587
- Choosing the Best Answer 590
- Optimizing Your Time 591
- Getting a Good Night’s Rest 593
- Enhancing the Java Language 596
- Using the Diamond Operator 596
- Creating Literals 597
- Making Decisions with Switch 598
- Formatting and Parsing 603
- Using DecimalFormat Flags 603
- Using DateFormat 603
- Formatting 604
- Parsing 605
- Custom Date Formats 606
- Applying Locks 607
- Understanding the Lock Framework 607
- Using a ReentrantLock 610
- Understanding Read/Write Locks 614
- Using a ReentrantReadWriteLock 615
- Working with Directories 617
- Traversing Directories 618
- Monitoring a Directory for Changes 625
- Summary 633
- Exam Essentials 633
- Review Questions 635
- Answers to Practice Test 645
BOOK
SUMMARY
Items Found: 318
- Preface 1
- Chapter 1: Overview of PL/SQL Programming Concepts 9
- PL/SQL—the procedural aspect 10
- My irst PL/SQL program 11
- PL/SQL development environments 13
- SQL Developer 13
- SQL Developer—the history 15
- Creating a connection 15
- SQL Worksheet 16
- Executing a SQL statement 18
- Calling a SQL script from SQL Developer 19
- Creating and executing an anonymous PL/SQL block 21
- Debugging the PL/SQL code 21
- Editing and saving the scripts 23
- SQL*Plus 24
- Executing a SQL statement in SQL*Plus 26
- Executing an anonymous PL/SQL block 26
- Procedures 27
- Executing a procedure 28
- Functions 29
- Function—execution methods 31
- Restrictions on calling functions from SQL expressions 32
- PL/SQL packages 33
- Cursors—an overview 35
- Cursor execution cycle 35
- Cursor attributes 36
- Cursor FOR loop 38
- Exception handling in PL/SQL 39
- System-deined exceptions 39
- User-deined exceptions 41
- The RAISE_APPLICATION_ERROR procedure 43
- Exception propagation 46
- Managing database dependencies 48
- Displaying the direct and indirect dependencies 49
- Dependency metadata 50
- Dependency issues and enhancements 50
- Reviewing Oracle-supplied packages 51
- Summary 52
- Practice exercise 52
- Chapter 2: Designing PL/SQL Code 55
- Understanding cursor structures 55
- Cursor execution cycle 56
- Cursor design considerations 57
- Cursor design—guidelines 58
- Cursor attributes 59
- Implicit cursors 60
- Explicit cursors 62
- Cursor variables 66
- Ref cursor types—strong and weak 69
- SYS_REFCURSOR 69
- Processing a cursor variable 70
- Cursor variables as arguments 71
- Cursor variables—restrictions 73
- Subtypes 74
- Subtype classiication 75
- Oracles predeined subtypes 75
- User-deined subtypes 76
- Type compatibility with subtypes 77
- Summary 78
- Practice exercise 78
- Chapter 3: Using Collections 81
- Collections—an overview 82
- Categorization 83
- Selecting an appropriate collection type 84
- Associative arrays 84
- Nested tables 88
- Nested table collection type as the database object 90
- DML operations on nested table columns 91
- A nested table collection type in PL/SQL 93
- Additional features of a nested table 94
- Varray 98
- Varray in PL/SQL 99
- Varray as a database collection type 100
- DML operations on varray type columns 100
- Collections—a comparative study 103
- Common characteristics of collection types 103
- Nested table versus associative arrays 104
- Nested table versus varrays 105
- PL/SQL collection methods 105
- EXISTS 105
- COUNT 106
- LIMIT 107
- FIRST and LAST 108
- PRIOR and NEXT 109
- EXTEND 109
- TRIM 111
- DELETE 112
- Manipulating collection elements 113
- Collection initialization 115
- Summary 117
- Practice exercise 117
- Chapter 4: Using Advanced Interface Methods 121
- Understanding external routines 122
- Architecture of external routines 122
- Oracle Net Coniguration 125
- TNSNAMES.ora 125
- LISTENER.ora 126
- Oracle Net Coniguration veriication 129
- Beneits of external procedures 130
- Executing external C programs from PL/SQL 131
- Executing C program through external procedure—development steps 131
- Executing Java programs from PL/SQL 136
- Calling a Java class method from PL/SQL 137
- Uploading a Java class into the database—development steps 137
- The loadjava utility—an illustration 137
- Creating packages for Java class methods 140
- Summary 141
- Practice exercise 141
- Chapter 5: Implementing VPD with Fine Grained Access Control 145
- Fine Grained Access Control 146
- Overview 146
- Virtual Private Database—the alias 147
- How FGAC or VPD works? 147
- Salient features of VPD 148
- VPD implementation—outline and components 149
- Application context 150
- Policy function deinition and implementation of row-level security 153
- Associating a policy using the DBMS_RLS package 155
- VPD implementation—demonstrations 156
- Assignment 1—implementing VPD using simple security policy 157
- Assignment 2—implementing VPD using an application context 159
- VPD policy metadata 163
- Policy utilities—refresh and drop 164
- Summary 165
- Practice exercise 165
- Chapter 6: Working with Large Objects 169
- Introduction to the LOB data types 170
- Internal LOB 171
- External LOB 171
- Understanding the LOB data types 172
- LOB value and LOB locators 172
- BLOB or CLOB! 172
- BFILE 173
- Temporary LOBs 173
- Creating LOB data types 173
- Directories 173
- Creating LOB data type columns in a table 175
- Managing LOB data types 177
- Managing internal LOBs 178
- Securing and managing BFILEs 178
- The DBMS_LOB package—overview 179
- Security model 179
- DBMS_LOB constants 180
- DBMS_LOB data types 180
- DBMS_LOB subprograms 181
- Rules and regulations 182
- Working with the CLOB, BLOB, and BFILE data types 183
- Initializing LOB data type columns 184
- Inserting data into a LOB column 185
- Populating a LOB data type using an external ile 185
- Selecting LOB data 189
- Modifying the LOB data 190
- Delete LOB data 192
- Miscellaneous LOB notes 192
- LOB column states 193
- Locking a row containing LOB 193
- Opening and closing LOBs 193
- Accessing LOBs 193
- LOB restrictions 194
- Migrating from LONG to LOB 194
- Using temporary LOBs 196
- Temporary LOB operations 196
- Managing temporary LOBs 197
- Validating, creating, and freeing a temporary LOB 198
- Summary 200
- Practice exercise 200
- Chapter 7: Using SecureFile LOBs 205
- Introduction to SecureFiles 206
- SecureFile LOB—an overview 207
- Architectural enhancements in SecureFiles 208
- SecureFile LOB features 210
- Working with SecureFiles 211
- SecureFile metadata 213
- Enabling advanced features in SecureFiles 214
- Deduplication 214
- Compression 215
- Encryption 216
- Migration from BasicFiles to SecureFiles 220
- Online Redeinition method 221
- Summary 224
- Practice exercise 225
- Chapter 8: Compiling and Tuning to Improve Performance 227
- Native and interpreted compilation techniques 228
- Real native compilation 229
- Selecting the appropriate compilation mode 230
- When to choose interpreted compilation mode? 230
- When to choose native compilation mode? 231
- Setting the compilation mode 231
- Querying the compilation settings 232
- Compiling a program unit for a native or interpreted compilation 233
- Compiling the database for PL/SQL native compilation (NCOMP) 235
- Tuning PL/SQL code 238
- Comparing SQL and PL/SQL 239
- Avoiding implicit data type conversion 239
- Understanding the NOT NULL constraint 241
- Using the PLS_INTEGER data type for arithmetic operations 243
- Using a SIMPLE_INTEGER data type 245
- Modularizing the PL/SQL code 246
- Using bulk binding 248
- Using SAVE_EXCEPTIONS 252
- Rephrasing the conditional control statements 254
- Conditions with an OR logical operator 254
- Conditions with an AND logical operator 254
- Enabling intra unit inlining 255
- PLSQL_OPTIMIZE_LEVEL—the Oracle initialization parameter 256
- Case 1—PLSQL_OPTIMIZE_LEVEL = 0 256
- Case 2—PLSQL_OPTIMIZE_LEVEL = 1 258
- Case 3—PLSQL_OPTIMIZE_LEVEL = 2 259
- Case 4—PLSQL_OPTIMIZE_LEVEL = 3 260
- PRAGMA INLINE 262
- Summary 265
- Practice exercise 265
- Chapter 9: Caching to Improve Performance 269
- Introduction to result cache 270
- Server-side result cache 271
- SQL query result cache 272
- PL/SQL function result cache 272
- OCI client results cache 273
- Coniguring the database for the server result cache 273
- The DBMS_RESULT_CACHE package 276
- Implementing the result cache in SQL 277
- Manual result cache 277
- Automatic result cache 279
- Result cache metadata 281
- Query result cache dependencies 283
- Cache memory statistics 283
- Invalidation of SQL result cache 284
- Displaying the result cache memory report 286
- Read consistency of the SQL result cache 287
- Limitation of SQL result cache 287
- Implementing result cache in PL/SQL 288
- The RESULT_CACHE clause 288
- Cross-session availability of cached results 292
- Invalidation of PL/SQL result cache 292
- Limitations of PL/SQL function result cache 294
- Argument and return type restrictions 294
- Function structural restrictions 294
- Summary 295
- Practice exercise 295
- Chapter 10: Analyzing PL/SQL Code 299
- Track coding information 299
- [DBA | ALL | USER]_ARGUMENTS 301
- [DBA | ALL | USER]_OBJECTS 304
- [DBA | ALL | USER]_SOURCE 306
- [DBA | ALL | USER]_PROCEDURES 307
- [DBA | ALL | USER]_DEPENDENCIES 308
- Using SQL Developer to ind coding information 310
- The DBMS_DESCRIBE package 313
- DBMS_UTILITY.FORMAT_CALL_STACK 316
- Tracking propagating exceptions in PL/SQL code 318
- Determining identiier types and usages 319
- The PL/Scope tool 320
- The PL/Scope identiier collection 320
- The PL/Scope report 322
- Illustration 322
- Applications of the PL/Scope report 325
- The DBMS_METADATA package 326
- DBMS_METADATA data types and subprograms 327
- Parameter requirements 330
- The DBMS_METADATA transformation parameters and ilters 330
- Working with DBMS_METADATA—illustrations 332
- Case 1—retrieve the metadata of a single object 332
- Case 2—retrieve the object dependencies on the F_GET_LOC function 335
- Case 3—retrieve system grants on the ORADEV schema 335
- Case 4—retrieve objects of function type in the ORADEV schema 336
- Summary 337
- Practice exercise 337
- Chapter 11: Proiling and Tracing PL/SQL Code 339
- Tracing the PL/SQL programs 340
- The DBMS_TRACE package 341
- Installing DBMS_TRACE 341
- DBMS_TRACE subprograms 341
- The PLSQL_DEBUG parameter and the DEBUG option 343
- Viewing the PL/SQL trace information 344
- Demonstrating the PL/SQL tracing 347
- Proiling the PL/SQL programs 350
- Oracle hierarchical proiler—the DBMS_HPROF package 351
- View proiler information 352
- Demonstrating the proiling of a PL/SQL program 352
- The plshprof utility 357
- Sample reports 359
- Summary 361
- Practice exercise 361
- Chapter 12: Safeguarding PL/SQL Code against SQL
- Injection Attacks 365
- SQL injection—an introduction 366
- SQL injection—an overview 366
- Types of SQL injection attacks 369
- Preventing SQL injection attacks 369
- Immunizing SQL injection attacks 370
- Reducing the attacks surface 370
- Controlling user privileges 371
- Invokers and deiners rights 371
- Avoiding dynamic SQL 375
- Bind arguments 378
- Sanitizing inputs using DBMS_ASSERT 379
- The DBMS_ASSERT package 380
- Testing the code for SQL injection laws 386
- Test strategy 386
- Reviewing the code 386
- Static code analysis 387
- Fuzz tools 387
- Generating test cases 387
- Summary 388
- Practice exercise 388
- Appendix: Answers to Practice Questions 391
- Chapter 1, Overview of PL/SQL Programming Concepts 391
- Chapter 2, Designing PL/SQL Code 392
- Chapter 3, Using Collections 393
- Chapter 4, Using Advanced Interface Methods 394
- Chapter 5, Implementing VPD with Fine Grained Access Control 395
- Chapter 6, Working with Large Objects 396
- Chapter 7, Using SecureFile LOBs 397
- Chapter 8, Compiling and Tuning to Improve Performance 398
- Chapter 9, Caching to Improve Performance 400
- Chapter 10, Analyzing PL/SQL Code 401
- Chapter 11, Proiling and Tracing PL/SQL Code 401
- Chapter 12, Safeguarding PL/SQL Code against SQL Injection Attacks 402
BOOK
SUMMARY
Items Found: 160
- Chapter 1 Introduction 1
- In This Chapter 1
- 1.1 Introduction 1
- 1.2 A Basic Business Need 2
- 1.3 What Is Business Intelligence? 3
- 1.4 Why BI? 4
- 1.5 Enabling a Competitive Advantage 4
- 1.6 BI and Reporting Categories 6
- 1.6.1 Operational Reporting 7
- 1.6.2 Analytical BI 8
- 1.6.3 Operational BI 10
- 1.7 Summary 13
- Chapter 2 Why Oracle Essbase Now 15
- In This Chapter 15
- 2.1 Introduction 15
- 2.2 OBIEE and Essbase: History and Importance 16
- 2.3 Why Essbase Now: From History to Historical,
- Analytical, and Beyond 19
- 2.4 Summary 20
- Chapter 3 Oracle Essbase and Oracle BI: Successful
- Players and Products 21
- In This Chapter 21
- 3.1 Introduction 21
- 3.2 The Primary Vendors: Inventors and Presenters 22
- 3.3 The Primary Products and Tools Set: Inclusions
- and Exclusions 23
- 3.3.1 Oracle Exalytics 23
- 3.3.2 Oracle Essbase 24
- 3.3.3 Oracle BI Publisher 25
- 3.3.4 Oracle BI Foundation Suite 25
- 3.3.5 Oracle BI Enterprise Edition (OBIEE) 27
- 3.3.6 Oracle BI Mobile 29
- 3.3.7 Oracle BI Applications 30
- 3.3.8 Oracle BI for Big Data 31
- 3.4 The Primary Users: Evaluators, Investors,
- Implementers and Eventual Benefiters 32
- 3.5 Summary 36
- 3.6 References 36
- Chapter 4 Analysis, Evaluation, and Selection 37
- In This Chapter 37
- 4.1 Introduction 37
- 4.2 Essential Criteria for Requirements Analysis of
- Oracle Essbase and OBIEE as a Comprehensive
- BI Solution 38
- 4.2.1 Business Processes—Discovery and Definition 38
- 4.2.2 Information Integration 39
- 4.2.3 Information Dissemination, Transformation,
- and Visualization 40
- 4.2.4 User Interaction 41
- 4.2.5 Information Customization 41
- 4.2.6 Information in Action: BI, Advanced
- Analytics, and Beyond BI (Competitive,
- Social, and Cloud-Based Intelligence) 42
- 4.2.7 Information and Big Data 42
- 4.3 Key and Critical Deciding Factors in Selecting
- Such a Solution 43
- 4.4 The Final Pick is a Customer-Centric Solution:
- Key Indicator Checklist 44
- 4.5 Summary 46
- 4.6 References 46
- Chapter 5 Data Integration, Implementation, and
- Customization Using Essbase 47
- In This Chapter 47
- 5.1 Introduction 47
- 5.2 Building an Integrated Approach for Data 48
- 5.2.1 Recommendations 49
- 5.3 Implementation Specifics of Data, from Data
- Source to Data Analytics 51
- 5.4 Semantic Integration between OBIEE and
- Essbase, Using OBIEE as a Data Source for
- Oracle Essbase 52
- 5.4.1 Recommendations 53
- 5.4.2 Implementation Specifics 55
- 5.4.3 Using OBIEE 12c for Essbase 12c 56
- 5.5 Extending and Customizing Essbase 57
- 5.5.1 Extending Essbase Cubes 57
- 5.5.2 Analytics That Can Be Applied to
- Custom Implementations 59
- 5.5.3 Best Practices and Additional
- Customization Scenarios 60
- 5.6 Summary 62
- 5.7 References 63
- x Oracle Business Intelligence and Essbase Solutions Guide
- Chapter 6 Using Essbase for Analytical BI 65
- In This Chapter 65
- 6.1 Introduction 65
- 6.2 What Kind of Analytics Are Good for Essbase
- Cubes? 66
- 6.2.1 Recommendations 68
- 6.3 Implementation Specifics of Using Analytical BI
- Using Essbase 68
- 6.3.1 Using Essbase for Analytical BI 69
- 6.3.2 Using BSO Cubes for Analytical BI 71
- 6.3.3 Using ASO Cubes for Analytical BI 73
- 6.4 Summary 73
- 6.5 References 75
- Chapter 7 Using OBIEE for Operational BI 77
- In This Chapter 77
- 7.1 Introduction 77
- 7.2 Don’t Let Your Tool Wag Your Data 78
- 7.3 Categories for Business Intelligence and Reporting 80
- 7.4 What Is Operational Business Intelligence? 82
- 7.4.1 The Ultimate Goal: Insight to Interaction 83
- 7.5 Delivering Operational BI 84
- 7.5.1 Operational BI and OBIEE 85
- 7.5.2 Updating the Enterprise Data Warehouse
- for Operational BI 87
- 7.6 The Operational Data Store Option 91
- 7.7 Summary 94
- Chapter 8 Using OBIEE for Self-Service BI 97
- In This Chapter 97
- 8.1 Introduction 97
- 8.2 In Search of Self-Service BI 98
- 8.3 Enter OBIEE as a Solution 99
- 8.4 OBIEE for Self-Service BI 101
- 8.5 Big Data and Self-Service BI 103
- 8.5.1 OBIEE12c and Big Data 104
- 8.6 Summary 105
- Chapter 9 Best Practices for Solution Implementation
- and Customization 107
- In This Chapter 107
- 9.1 Introduction 107
- 9.2 Establishing a Data Foundation Based on a
- Logical Model 108
- 9.3 Extending the Logical Data Model for
- Implementation and Customization 110
- 9.3.1 Using the Logical Model To Extend
- Essbase Cubes 111
- 9.3.2 Building Analytics That Can Be Applied
- to Custom Implementations 112
- 9.3.3 Best Practices and Additional
- Customization Scenarios 114
- 9.4 The Logical Model as a Scalable Best Practice
- Solution 116
- 9.5 Summary 117
- Chapter 10 Use Case Scenarios 119
- In This Chapter 119
- 10.1 Introduction 119
- 10.2 The Challenge 120
- 10.3 The Resolution 123
- 10.4 Summary 124
- Chapter 11 The Prize for the Price: A Win–Win or Not 125
- In This Chapter 125
- 11.1 Introduction 125
- 11.2 The True Value of Expertise 126
- 11.3 Data-Driven Development 126
- 11.4 A 360-Degree View of a Holistic Solution 127
- 11.5 Summary 128
- Appendix A: Oracle Big Data and the Cloud for Analytics 131
- A.1 Using the Cloud To Unleash the Potential of
- Big Data 131
- A.2 Oracle’s Role in Cloud Services and Big Data 132
- A.3 Beyond BI 133
- References 133
- Appendix B: Slides from Data Warehouse Architectures 135
- B.1 Overview of the Corporate Information Factory
- and Dimensional Modeling 135
- B.2 Slides from OBIEE 12c Presentation 144
- Appendix C: Oracle® Data Sheets 155
- Index 167
BOOK
SUMMARY
Items Found: 536
- Preface 1
- Chapter 1: Understanding the Oracle BI 11g Architecture 9
- Looking backward and looking forward 9
- Let's look at the big picture 10
- What is Oracle Fusion Middleware? 11
- An application server by any other name 12
- A database repository – for what? 12
- Overall components 13
- Java components 14
- System components 15
- WebLogic Server 17
- A few software nuances 17
- WebLogic Domain 18
- WebLogic Administration Server 18
- WebLogic Managed Server 19
- WebLogic Node Manager 20
- System tools controlled by WebLogic 21
- Oracle Process Management and Notification system 22
- Security 23
- Backwards compatibility 24
- Managing by application roles 25
- Security providers 25
- Identity Store 25
- Credential Store 25
- Policy Store 26
- System requirements 27
- Client Tools 27
- Multiuser Development Environment 28
- Certification matrix 30
- Scaling out Oracle BI 11g 30
- Preconfiguration run down 31
- Shared storage 31
- Clustering 31
- Vertical expansion versus horizontal expansion 32
- Oracle BI Server (system component) Cluster Controller 32
- Failover and high availability 33
- Enterprise deployment guide 33
- Directory folder structure 34
- Log files (diagnostics) 34
- Configuration files 35
- A review – what I should now know! 36
- Additional research suggestions 36
- Summary 37
- Chapter 2: Installing the Metadata Repository 39
- Repository Creation Utility (RCU) 39
- What is the metadata store? 40
- Technical metadata 40
- Business metadata 40
- Process metadata 41
- Oracle Metadata Services (MDS) 41
- Repository schemas 42
- Non-repository metadata 43
- Downloading the software 43
- Running the RCU 44
- Setting up your database 45
- Oracle 45
- MS SQL Server 46
- Preparing for your installation 47
- Linux 47
- 64 bit Linux 48
- Standard installation steps 48
- Adding repositories 60
- Customizing your installation 61
- Other common changes 63
- Schema installations 65
- Oracle CREATE USER Script 66
- Silent installation 66
- Example creation 68
- Useful scripts 69
- Usage tracking script 69
- A review – what I should now know! 71
- Summary 71
- Chapter 3: Installing on Windows Server 2008 73
- Installation media 73
- System requirements 75
- Installation 77
- A review – what I should now know! 91
- Summary 92
- Chapter 4: Installation Options 93
- Oracle BI on its own server 93
- High availability and failover planning 94
- Simple versus Software Only Installation 95
- Software Only Install 95
- Installing your own JDK 95
- Simple Install 96
- Silent installation 96
- Custom static ports 97
- Creating your own staticports.ini file 98
- Installing Oracle BI 11g on *Nix 100
- Listening on port 80 100
- Ensuring IIS web server Role Services are installed 102
- Getting the WebLogic Server Proxy IIS plugins 103
- Creating and configuring an IIS Website 104
- Enabling compression in IIS 7.x 107
- Automate starting and stopping 108
- Leveraging the WebLogic Server Windows Service installer command 109
- Creating start-up and shutdown scripts 111
- Creating desktop shortcuts 113
- Creating boot.properties files 114
- Ancillary application integration awareness 115
- Recommendations for further learning 116
- A review – what I should now know! 116
- Summary 117
- Chapter 5: Understanding the Systems Management Tools 119
- Let's talk about management tools 119
- WebLogic Server Administration Control 120
- First access and checkpoint 121
- Servers 122
- Clusters 122
- Machines, IP address, or DNS 123
- Data sources or JDBC connections 124
- Security realms 126
- WebLogic Server is its own application 128
- Using WLST 129
- Enterprise Manager Fusion Middleware Control 131
- Getting around in EM 132
- BI Foundation Domain dashboard 132
- Coreapplication 133
- The Overview tab 134
- The Availability tab 134
- The Capacity Management tab 134
- The Diagnostics tab 135
- The Security tab 136
- The Deployment tab 136
- Managing Oracle BI 11g artifacts 137
- Creating a new Presentation Catalog 138
- Deploying an existing Presentation Catalog 140
- Deploying an RPD 140
- Starting/stopping system components 142
- Checking the logs 143
- Creating the Tennis users, roles, and associations 144
- Creating users and groups in WLS 145
- Assigning users to groups 146
- Creating and assigning application roles 147
- Configuring an LDAP identity provider in WLS 149
- Setting up the identity provider 150
- Establishing Fusion Middleware Control security linkage 153
- Restarting the WebLogic Server and Managed Server 156
- Assigning the LDAP Service Account Role Privileges 158
- JMS modules for BI Publisher communication 160
- Refreshing Presentation Catalog GUIDs – sync it up! 160
- JMX, MBeans, and Java 163
- Migrating FMW Security to other environments 163
- FMW core security files 163
- Project Amelia 164
- Downloading Project Amelia 164
- Getting the FMW Security file 165
- Running the script and generating the WLST script 165
- Migrating the security script and running it on the target server 166
- FMW Security Import/Export utility 166
- Using the Security Realm Migration utility 167
- Using the migrateSecurityStore function via WLST 168
- Oracle BI Publisher system management 169
- Monitoring system performance 169
- Have a backup plan! 170
- Recommendations for further learning 170
- A review – what I should now know! 171
- Summary 171
- Chapter 6: Upgrading the RPD and Web Catalog to 11g 173
- Upgrading an RPD and Web Catalog 173
- Upgrade Assistant 175
- Verification 183
- Upgrading BI Scheduler 184
- Manual migration 188
- Consistency check 188
- Security 189
- Regression testing 190
- Unit test 190
- Full regression testing 191
- User Acceptance testing 191
- A review – what I should now know! 192
- Summary 193
- Chapter 7: Reporting Databases 195
- Theories and models 196
- Reporting databases 197
- Relational modeling 198
- Dimensional modelling 198
- Why is database theory important? 200
- Designing your database – objectives, rules, and goals 201
- Objectives 202
- Rules 202
- Rule 1 – complete dimensions 203
- Rule 2 – build generic tables 204
- Rule 3 – partition large tables 204
- Rule 4 – prudent indexing 204
- Rule 5 – aggregate everything 205
- Rule 6 – constant analysis of usage and accuracy 205
- Rule 7 – manage statistics 205
- Rule 8 – understand the granularity 206
- Goals 206
- Goal 1 – keep it simple 207
- Goal 2 – minimize type 2 slowly changing dimensions 207
- Goal 3 – use data, not functions 207
- Goal 4 – minimize joins 207
- Goal 5 – reduce snowflaking 207
- Goal 6 – make it flexible 208
- Design summary 208
- Creating a warehouse 208
- Source system assessment 208
- Warehouse design 211
- Warehouse tables 211
- Populate and tune 214
- Monitor and maintain 214
- Some definitions 215
- A review – what I should now know! 216
- Summary 216
- Chapter 8: Developing a BI Repository 217
- Prerequisites 218
- Repository architecture 218
- Physical layer 218
- Business layer 218
- Presentation layer 219
- Physical layer 219
- Creating an RPD and importing metadata 219
- Elements of the physical layer 225
- Database object 226
- Connection pools 228
- Physical catalog and schemas 230
- Physical tables 230
- Physical join 232
- Consistency check 235
- Table aliases and naming conventions 236
- Business layer 238
- Business model 238
- Logical tables 239
- Logical table sources 242
- Logical columns 243
- Logical joins 246
- Dimension hierarchies 249
- Presentation layer 255
- Subject areas 256
- Best practices in the presentation layer 258
- Aliases 260
- Implicit fact 260
- Calculated measures 262
- Logical column calculation 262
- Expression Builder 264
- Physical column calculation 266
- Time series measures 268
- Level based measure 271
- Federated and fragmented content 273
- Vertical federation – aggregation or level based 273
- Horizontal federation 274
- Fragmentation 274
- Fragmentation example – content based 274
- Variables and initialization blocks 279
- A review – what I should now know! 286
- Additional research suggestions 287
- Summary 287
- Chapter 9: Features of the Presentation Catalog 289
- Integrated tools 290
- Analysis 290
- Dashboards 291
- Published reporting 291
- Actionable Intelligence 291
- Performance management 292
- Marketing 292
- Mapping 293
- Administration 293
- Briefing books 293
- Search 294
- Help 294
- Office integration 294
- The Home screen 294
- Common links 295
- Existing object links 295
- Create objects 296
- Browse catalog 296
- Helpful links 296
- Administration 296
- Groups and users 297
- Privileges 298
- Full privileges list 300
- Session management 300
- Maintenance and troubleshooting 303
- Issue SQL 303
- The Presentation Catalog 304
- Structure of the Presentation Catalog 304
- Hidden items 306
- File management 306
- XML files 306
- Object copying 306
- Multiple personal dashboards 307
- Catalog deployments 307
- Securing catalog objects 307
- Permission inheritance 309
- Practical steps to object security 309
- A review – what I should now know! 310
- Summary 310
- Chapter 10: Creating Dashboards and Analysis 311
- Analysis versus Reporting 311
- Creating an Analysis 312
- Analysis Editor 314
- Criteria Tab 314
- The Results tab 316
- Filters 317
- Selection Steps 320
- Saving an Analysis 324
- Basic table formatting 325
- Bins 328
- Pivot Tables 332
- Graphs 337
- Sectioned views 338
- View prompts and section sliders 340
- Conditional Formatting 342
- Building Dashboards 346
- Creating a dashboard 346
- Dashboard builder 347
- Editing a dashboard 350
- Adding a page 351
- Report Links 354
- Dashboard Prompt 356
- Presentation variable 361
- Protected and "is prompted" filters 363
- Repository/Session variable 364
- Some advanced options 366
- Column Selector 366
- View Selector 368
- Master-detail linking 371
- Hierarchical columns 374
- Security 376
- Object security 377
- Data security 379
- Design – best practices 385
- Additional research suggestions 386
- A review – what I should now know! 387
- Summary 387
- Chapter 11: Agents and the Action Framework 389
- Agents 390
- Actions 399
- BI navigation 399
- Web navigation and passing a parameter 402
- Conditionality 404
- Note on invoke actions 408
- A review – what I should now know! 409
- Additional research suggestions 410
- Summary 410
- Chapter 12: Developing Reports Using BI Publisher 411
- Don't miss the installation integration checkpoint! 412
- Where BI Publisher excels? 413
- What's all this XML talk? 413
- Yes, BI Publisher is now Published Reporting 414
- Oracle BI Foundation versus Oracle BI Publisher 415
- New features and enhancements 416
- Improved Oracle BI 11g look and feel 416
- Interactive Viewer 416
- Dynamic upload and source from MS Excel spreadsheets 417
- Leveraging LDAP user attributes in queries 417
- Sharing a Presentation Catalog with Oracle BI 11g 417
- Data Model Editor 417
- Leverage view objects – Application Development Framework 418
- Report design basics, terminology, and locations 418
- Report design components 418
- Data model 418
- Layout 419
- Properties 419
- Translations 419
- Where to administrate BI Publisher 419
- Default embedded BI Publisher configurations 420
- Where to build a data model 420
- Where to add a data source connection 420
- What is a JNDI data source? 421
- Let's get publishing 422
- Administration management of BI Publisher 422
- Accessing the BI Publisher Administration page 422
- Verifying application roles 423
- Creating the Tennis data source JDBC connection 424
- Creating a File (XLS) data source 425
- Verifying application role data source privileges 426
- Setting up a data model 426
- Creating a new Presentation Catalog folder 427
- Creating a new data model 428
- Creating a SQL query data set 429
- Adjusting data set display names 432
- Creating a parameter 433
- Creating a list of values 434
- Connecting the parameter to the list of values 435
- Getting the sample data 436
- Creating a BI Publisher report using Layout Editor 438
- Auditing and monitoring BI Publisher 441
- Modifying a few configuration files 442
- Connecting to the Audit Framework 443
- Enabling Audit Policy in the Fusion Middleware Control
- Enterprise Manager 443
- Viewing the auditing log file 444
- BI Publisher nuances 445
- Timeout issues 445
- Connecting to Oracle BI server data sources 445
- BI Publisher Application Programming Interface (API) 446
- BI Publisher Scheduler 446
- High availability 446
- A review – what I should now know! 447
- Additional research suggestions 447
- Summary 448
- Chapter 13: Customizing the Style of Dashboards 449
- What's the idea? 449
- Multiple skins and styles in one environment 450
- A strategy for something seemingly simple 451
- Involve the Marketing department 451
- Don't boil the ocean 451
- Speed to implementation 452
- Build a focus group 452
- General knowledge and tools 453
- Third-party tools 454
- Oracle JDeveloper skinning tool 454
- BI Consulting Group Identity product 454
- Hands-on – go time! 455
- Overview 455
- Let's talk about tools and assumptions 457
- Locating existing styles and skins 457
- Developing/designing a new look and feel 458
- Getting analyticsRes deployed 459
- Good artists copy, great artists steal 462
- Modifying instanceconfig.xml 464
- Modifying skins and styles 465
- Changing the banner color 466
- Changing the global header menu link's color 466
- Changing the header separator bar 466
- Changing the header brand name 467
- Changing the Login page background 467
- Restarting Presentation services 467
- Restarting Presentation services from the command line 468
- Restarting Presentation services from Enterprise Manager 469
- Viewing the results 470
- Configuring a custom message 470
- Refreshing metadata files and custom messages 472
- Wrap it up! 473
- Advanced learning topics 473
- Firebug 474
- NetBeans IDE 474
- Formatting CSS (prettify) 474
- NQ_SESSION.SKIN and NQ_SESSION.STYLE session variables 474
- AnalyticsRes Application Caveat 475
- A review – what I should now know! 475
- Summary 475
- Chapter 14: Improving the Performance 477
- What is poor performance? 477
- Where can I improve the performance? 478
- Hardware 479
- Database 481
- BI Server 482
- More performance tips 484
- The use of cache 484
- Setting up the cache 485
- Web servers on top 487
- Domain setup 487
- A review – what I should now know! 487
- Summary 488
- Chapter 15: Using the BI Admin Change Management Utilities 489
- Problems with multiple developers 489
- Merges 490
- Three-way merge 490
- Two-way merger 494
- Multi-User development 494
- Online development 495
- Advantages and disadvantages 498
- Multi-User development 498
- Advantages and disadvantages 506
- A review – what I should now know! 507
- Additional research suggestions 507
- Summary 507
- Chapter 16: Usage Tracking 509
- What is usage tracking? 509
- System setup 510
- Setting up the database table 510
- Additional data 511
- Setting up the BI Server repository 512
- Updating the BI Server's configuration file 513
- Analyzing the usage 516
- Usage measures 516
- A review – what I should now know! 519
- Summary 519
- Chapter 17: Oracle Essbase and OLAP Integration 521
- A bit about OLAP 521
- Competition 522
- MOLAP, ROLAP, HOLAP, XOLAP 522
- Essbase's entrenched past 523
- Oracle Essbase Studio 524
- Oracle BI SampleApp v107+ – VM image 524
- Getting started – let's get set up 525
- Prepping the VM image 525
- Starting the virtual machine image 526
- Starting up Essbase 526
- Starting up Essbase Administration Services (EAS) 527
- Prepping Essbase 528
- Creating the base Essbase application and database 528
- Migrating the Essbase files 531
- Validating the Outline 531
- Loading data into the cube 532
- Anything needed to prep the Oracle BI Server? 533
- Modeling Essbase into Oracle BI 534
- A bit of Essbase to Oracle BI knowledge 534
- Importing Essbase as a data source 535
- A few OLAP adjustments before modeling 536
- Flattening the Measure dimension 537
- Getting the UDAs 538
- Dimension and hierarchy types 538
- Getting a quick win 540
- Incremental importing of Essbase metadata 541
- Federation of data 543
- Oracle BI/EPM roadmap 543
- Workspace integration 544
- Software license combo 544
- A review – what I should now know! 544
- Additional research suggestions 544
- Summary 545
- Appendix A: Programs and Definitions 547
- Stress testing 548
- XML – a better approach 553
- biserverxmlgen 553
- biserverxmlexec 554
- biserverxmlcli 555
- Working example using XML 556
- More repository management 558
- Admin tool 559
- A review – what I should now know! 561
- Summary 562
- Appendix B: Useful Resources: Join the Oracle BI Movement 563
- This book's resources 563
- OBI11gBook.com forums 563
- Author blogs 564
- Other Oracle BI practitioner blogs 564
- Oracle development team blogs 564
- Oracle BI user groups 565
- Oracle Development Tools Users'Group (ODTUG) 565
- Oracle Applications Users'Group (OAUG) 565
- Independent Oracle User Groups (IOUG) 566
- International Oracle Users'Group Community (IOUC) 566
- Conferences 566
- Oracle Open World (OOW) 566
- COLLABORATE 567
- KScope 567
- RittmanMead BI Forum 567
- Join the movement 568
- Further reading 568
- Summary 569
BOOK
SUMMARY
Items Found: 331
- Preface 1
- Chapter 1: Getting Started 7
- What is Data Guard? 7
- Standby database 8
- Physical standby database 9
- Logical standby database 10
- Snapshot standby database 10
- Oracle Data Guard evolution 11
- Version 7.3 – stone age 11
- Version 8i – first age 11
- Version 9i – middle age 12
- Version 10g – new age 12
- Version 11g – modern age 13
- Oracle Data Guard architecture 14
- Data Guard services 15
- Redo transport services 15
- Apply services 18
- Time for action – monitoring Redo Apply 19
- SQL Apply (logical standby databases) 23
- Role transitions 23
- Switchover 24
- Failover 24
- User interfaces for administering Data Guard 25
- SQL*Plus 25
- DGMGRL 25
- Enterprise Manager 25
- Time for action – using interfaces to monitor Data Guard 26
- Data Guard background processes 29
- Other replication solutions and Data Guard 30
- Storage-based replication solutions 30
- GoldenGate and Streams 31
- Summary 34
- Chapter 2: Configuring the Oracle Data Guard Physical Standby Database 35
- Preconfiguration for Data Guard 35
- Data loss consideration 36
- Network bandwidth consideration 37
- Preparing the primary database 37
- Archive log mode 37
- Time for action – enabling the archive log mode 38
- Force logging 39
- Time for action – enabling force logging 40
- Standby redo logs 40
- Time for action – configuring standby redo logs on primary 41
- Fast recovery area (FRA) 42
- Time for action – enabling FRA 43
- Understanding initialization parameters 44
- DB_NAME 44
- DB_UNIQUE_NAME 44
- LOG_ARCHIVE_CONFIG 45
- LOG_ARCHIVE_MAX_PROCESSES 46
- LOG_ARCHIVE_DEST_n 46
- LOCATION and SERVICE 47
- VALID_FOR 47
- SYNC and ASYNC 48
- AFFIRM and NOAFFIRM 49
- COMPRESSION 49
- MAX_CONNECTIONS 49
- MAX_FAILURE 50
- REOPEN 50
- NET_TIMEOUT 51
- DELAY 51
- LOG_ARCHIVE_DEST_STATE_n 52
- Creating the physical standby database 53
- Standby database related initialization parameters 53
- FAL_SERVER 53
- STANDBY_FILE_MANAGEMENT 54
- DB_FILE_NAME_CONVERT 54
- LOG_FILE_NAME_CONVERT 55
- The physical standby database instance 55
- Time for action – starting the physical standby instance and making it ready
- for the RMAN duplicate 55
- Using RMAN duplicate to create physical standby databases 61
- Time for action – running an RMAN duplicate 62
- Post-installation steps 65
- Verifying the standby database configuration 65
- Time for action – verifying the standby database configuration 65
- Managing Redo Apply 67
- Time for action – starting, stopping, and monitoring MRP 67
- Verifying synchronization between the primary and standby databases 71
- Time for action – verifying synchronization between the primary and
- standby databases 72
- Time for action – testing real-time apply 74
- Summary 77
- Chapter 3: Configuring Oracle Data Guard Logical Standby Database 79
- Logical standby database characteristics 79
- Not everything must be duplicated 80
- Use for reporting at all times 80
- Independent standby database objects 80
- Protecting writes on replicated standby tables 81
- Limitation for specific data types and objects 81
- High availability and disaster recovery considerations 82
- Preparation for the configuration 82
- Time for action – checking for the unsupported data types 83
- Time for action – searching for and fixing any table row uniqueness problem 85
- Creating a logical standby database 87
- Time for action – making a physical standby database environment ready
- for conversion 88
- Time for action – converting a physical standby database into a logical
- standby database 90
- Verifying the logical standby database 94
- Time for action – checking the redo transport service status 94
- Time for action – checking the SQL Apply service status 96
- Customization and management in a logical standby database 98
- Selective replication in a logical standby database 98
- Time for action – working with skip rules on a logical standby database 98
- Data base Guard settings for the logical standby database 103
- Time for action – changing the Database Guard setting 104
- Disabling database guard for a session 105
- Creating objects on the logical standby database 106
- Creating and re-creating tables 106
- Creating scheduler jobs 106
- Creating materialized views 107
- Time for action – creating objects on the logical standby database 107
- Automatic deletion of archived logs 111
- Deletion of the foreign archived logs 111
- Deletion of the local archived logs 113
- Summary 113
- Chapter 4: Oracle Data Guard Broker 115
- Introduction to Data Guard broker 115
- Data Guard broker features and benefits 117
- Centralized and simple management 117
- Cloud Control integration 117
- Oracle Data Guard and RAC 117
- Role transition with Data Guard broker 118
- Data Guard fast-start failover 118
- Recommendation 118
- Data Guard broker components 119
- Oracle Data Guard broker server-side components 119
- Data Guard Monitor process (DMON) 120
- Configuration file 121
- Oracle Data Guard broker client-side components 121
- DGMGRL utility 121
- Enterprise Manager Cloud Control client 121
- Implementation of Oracle Data Guard broker 122
- Time for action – initial setup of Data Guard broker 122
- Time for action – connecting to Data Guard broker 125
- Time for action – basic monitoring with Data Guard broker 127
- Management with Data Guard broker 131
- Enabling and disabling broker configuration 131
- Time for action – disabling broker configuration 131
- Enabling and disabling a standby database 132
- Time for action – disabling and enabling database 133
- Changing configuration and database properties using broker 134
- Time for action – changing the database name 135
- Changing the state of the database 137
- Troubleshooting Data Guard broker 138
- Data Guard tracing 139
- Most Common Data Guard broker issues 139
- ORA-16797: database is not using a server parameter file 139
- ORA-10458:standby database requires recovery 140
- ORA-16737:the redo transport service for standby database "string"
- has an error 141
- ORA-16715:redo transport-related property string of standby
- database "string" is inconsistent 142
- ORA-12514:TNS:listener does not currently know of service requested
- in connect descriptor 143
- Current listener description 143
- Oracle Data Guard fast-start failover 144
- Time for action – configuring fast-start failover 146
- Troubleshooting observer configuration 149
- Script to stop and start observer 151
- Summary 151
- Chapter 5: Data Guard Protection Modes 153
- The Maximum Protection mode 154
- The Maximum Performance mode 155
- The Maximum Availability mode 155
- Choosing the correct mode for your requirements 156
- Changing Data Guard protection mode 157
- Time for action – changing the protection mode with SQL*Plus 157
- Time for action – changing the protection mode with Data Guard broker 163
- Time for action – changing the protection mode with Enterprise Manager
- Cloud Control 165
- Summary 172
- Chapter 6: Data Guard Role Transitions 173
- Role transition considerations 173
- Switchover 174
- Performing switchover with a physical standby database using SQL*Plus 176
- Time for action – preliminary tests before performing switchover 176
- Time for action – switchover with a physical standby using SQL*Plus 179
- Performing switchover with a physical standby database using broker 184
- Time for action – switchover with a physical standby using broker 184
- Performing switchover with a physical standby database using
- EM Cloud Control 185
- Time for action – switchover with a physical standby using EM Cloud Control 186
- Performing switchover with a logical standby database using SQL*Plus 187
- Time for action – switchover with a logical standby database using SQL*Plus 188
- Performing switchover with a logical standby database using broker 192
- Time for action – switchover with a logical standby using broker 192
- Failover 194
- Performing failover with a physical standby database 195
- Time for action – failover with a physical standby database using SQL*Plus 196
- Performing failover with a logical standby database 199
- Time for action – failover with a logical standby using broker 199
- Summary 201
- Chapter 7: Active Data Guard, Snapshot Standby, and
- Advanced Techniques 203
- Oracle Active Data Guard 204
- Why Active Data Guard? 204
- Oracle Data Guard license 207
- Enabling Active Data Guard 208
- Time for action – enabling Active Data Guard if Redo Apply is running
- using SQL *PLUS 208
- Time for action – enabling Active Data Guard if the standby database is
- shut down 209
- Time for action – enabling Active Data Guard using broker 210
- Monitoring Active Data Guard 212
- From primary 212
- From standby 213
- Active Data Guard with applications 213
- Active Data Guard with PeopleSoft 214
- Time for action – Active Data Guard with PeopleSoft 215
- Active Data Guard with EBS 216
- Active Data Guard with TopLink 217
- Active Data Guard with Oracle BI 218
- Active Data Guard with SAP 218
- Active Data Guard features 219
- EXPDP from standby database using NETWORK_LINK (ADG) 219
- Time for action – exporting a database backup from Active Data Guard 219
- Time for action – using the ASH report from the standby database 220
- Using a snapshot standby database 223
- Time for action – converting to a snapshot standby database 223
- Time for action – converting to a physical standby database 225
- Cascade standby databases 227
- Limitations with cascade standby database 228
- Time for action – cascade standby database 228
- Advanced compression in Data Guard 231
- Time for action – enabling advanced compression 231
- Preparation of standby on a cross-platform Data Guard 233
- Time for action – creating a cross-platform Data Guard setup 234
- Data Guard tuning and wait events 237
- Network tuning 237
- Redo transport and apply tuning 238
- Data Guard wait events 240
- Summary 241
- Chapter 8: Integrating Data Guard with the Complete Oracle Environment 243
- The Oracle Enterprise Manager Cloud Control integration 243
- Time for action – adding the Data Guard configuration into Cloud Control 244
- Cloud Control Data Guard administration home page 250
- Modifying the Data Guard configuration 251
- Time for action – enabling/disabling fast-start failover 254
- Monitoring Data Guard performance 258
- Using Incident Manager to monitor Data Guard 259
- Time for action – setting the threshold and creating an incident for
- estimated failover time metric 261
- RMAN integration 264
- Integration requirements and best practices 264
- Physical standby requirement 264
- RMAN Catalog requirement 264
- Using a different DB_UNIQUE_NAME 265
- General RMAN best practices 265
- RMAN settings for the Data Guard environment 265
- Registering primary database in the catalog 266
- Configuring RMAN settings for primary database: 266
- Configuring RMAN settings for standby database 268
- Checking the RMAN configuration 268
- Time for action – recovering a primary database using a standby
- database disk backup 270
- Using block change tracking with Data Guard 272
- RAC integration 273
- A RAC primary database with a single instance standby database 274
- A RAC primary database with a RAC standby database 275
- Summary 275
- Chapter 9: Data Guard Configuration Patching 277
- What is patch and what are patch types? 277
- Interim patch 278
- CPU/SPU patches 278
- PSU patches 278
- Patch set 278
- Patching on Data Guard 279
- Best practices of patching 279
- Upgrading OPatch 279
- Performing prerequisite checks of patch 280
- How to clean up patch history? 281
- Patching on Data Guard configuration 282
- How to apply an interim/bug patch on logical standby? 282
- Time for action – applying a patch on logical standby 283
- How to apply a PSU patch on physical standby database using broker? 287
- Time for action – applying PSU on a physical standby database 288
- How to apply patch set on physical standby (11.2.0.1 to 11.2.0.3)? 296
- Time for action – patch set upgrade of physical standby 296
- Summary 304
- Chapter 10: Common Data Guard Issues 305
- Recreating the standby control file 306
- Time for action – recreating the standby control file 307
- Dealing with redo transport authentication problems 311
- Time for action – changing the SYS password in a Data Guard environment 311
- Time for action – changing the redo transport user 313
- Dealing with UNNAMED datafiles 315
- Time for action – resolving UNNAMED datafile errors 315
- Closing a gap with an RMAN incremental backup 317
- Time for action – closing a gap with an RMAN incremental backup 318
- Fixing NOLOGGING changes on the standby database 322
- Time for action – fixing NOLOGGING changes on a standby database with
- incremental datafile backups 323
- Time for action – fixing NOLOGGING changes in the standby database with
- incremental database backups 325
- Turning on Data Guard tracing 326
- Gathering diagnostic data 328
- Alert log and trace files 328
- Time for action – monitoring the database alert log using ADRCI 330
- Data Guard broker logs 334
- Dynamic performance views 335
- Summary 338
- Chapter 11: Data Guard Best Practices 339
- Configuring a connection failover 339
- Transparent Application Failover (TAF) 340
- Configuring the client-side TAF 341
- Configuring the server-side TAF 341
- Fast Connection Failover (FCF) 344
- Time for action – configuring FCF for JDBC connections 344
- Fast Application Notification (FAN) 346
- The archived log deletion policy on the standby database 347
- Time for action – the recommended configuration for archived log
- maintenance on a standby database 347
- Using flashback on a standby database 348
- Time for action – using flashback on a standby database 349
- Database rolling upgrade using the transient logical standby database 355
- Time for action – performing a rolling upgrade using the transient
- logical standby database 355
- Corruption detection, prevention, and automatic repair with Oracle Data Guard 366
- DB_BLOCK_CHECKSUM 367
- DB_BLOCK_CHECKING 368
- DB_LOST_WRITE_PROTECT 369
- Automatic block media repair 369
- Summary 370
- Pop Quiz Answers 371
- Chapter 1, Getting Started 371
- Chapter 5, Data Guard Protection Modes 371
- Chapter 9, Data Guard Configuration Patching 372
- Chapter 10, Common Data Guard Issues 372
- Index 373
BOOK
SUMMARY
Items Found: 327
- PART I
- Critical Database Concepts
- 1 Oracle Database 10g Architecture Options 3
- Databases and Instances 5
- Inside the Database 5
- Choosing Architectures and Options 9
- 2 Installing Oracle Database 10g and Creating a Database 11
- Overview of Licensing and Installation Options 13
- 3 Upgrading to Oracle Database 10g 27
- Choosing an Upgrade Method 29
- Before Upgrading 30
- Using the Database Upgrade Assistant 30
- Performing a Manual Direct Upgrade 31
- Using Export and Import 34
- Using the Data-Copying Method 35
- After Upgrading 36
- 4 Planning Oracle Applications—Approaches, Risks, and Standards 37
- The Cooperative Approach 39
- Everyone Has “Data” 40
- The Familiar Language of Oracle 41
- Some Common, Everyday Examples 45
- What Are the Risks? 47
- The Importance of the New Vision 48
- How to Reduce the Confusion 50
- Capitalization in Names and Data 57
- Normalizing Names 58
- Good Design Has a Human Touch 58
- Understanding the Data 62
- Toward Object Name Normalization 65
- Intelligent Keys and Column Values 68
- The Commandments 68
- PART II
- SQL and SQL*Plus
- 5 The Basic Parts of Speech in SQL 73
- Style 75
- Creating the NEWSPAPER Table 76
- Using SQL to Select Data from Tables 76
- select, from, where, and order by 80
- Logic and Value 82
- Another Use for where: Subqueries 91
- Combining Tables 95
- Creating a View 97
- 6 Basic SQL*Plus Reports and Commands 101
- Building a Simple Report 104
- Other Features 114
- Checking the SQL*Plus Environment 120
- Building Blocks 122
- 7 Getting Text Information and Changing It 123
- Datatypes 124
- What Is a String? 124
- Notation 126
- Concatenation ( || ) 127
- How to Cut and Paste Strings 128
- Using order by and where with String Functions 145
- Review 148
- 8 Searching for Regular Expressions 149
- Search Strings 150
- REGEXP_SUBSTR 154
- 9 Playing the Numbers 163
- The Three Classes of Number Functions 164
- Notation 164
- Single-Value Functions 168
- Aggregate Functions 175
- List Functions 182
- Finding Rows with MAX or MIN 183
- Precedence and Parentheses 185
- Review 186
- 10 Dates: Then, Now, and the Difference 189
- Date Arithmetic 190
- ROUND and TRUNC in Date Calculations 199
- TO_DATE and TO_CHAR Formatting 200
- Dates in where Clauses 211
- Dealing with Multiple Centuries 212
- Using the EXTRACT Function 213
- Using the TIMESTAMP Datatypes 214
- 11 Conversion and Transformation Functions 217
- Elementary Conversion Functions 220
- Specialized Conversion Functions 225
- Transformation Functions 226
- Review 228
- 12 Grouping Things Together 229
- The Use of group by and having 230
- Views of Groups 234
- The Power of Views of Groups 236
- More Grouping Possibilities 241
- 13 When One Query Depends upon Another 243
- Advanced Subqueries 244
- Outer Joins 249
- Natural and Inner Joins 255
- UNION, INTERSECT, and MINUS 256
- 14 Some Complex Possibilities 261
- Complex Groupings 262
- Using Temporary Tables 263
- Using ROLLUP, GROUPING, and CUBE 264
- Family Trees and connect by 268
- 15 Changing Data: insert, update, merge, and delete 279
- insert 280
- rollback, commit, and autocommit 283
- Multitable Inserts 285
- delete 289
- update 291
- Using the merge Command 293
- 16 DECODE and CASE: if, then, and else in SQL 297
- if, then, else 298
- Replacing Values via DECODE 301
- DECODE Within DECODE 302
- Greater Than and Less Than in DECODE 305
- Using CASE 307
- 17 Creating and Managing Tables, Views, Indexes, Clusters, and Sequences 311
- Creating a Table 312
- Dropping Tables 320
- Altering Tables 321
- Creating a Table from a Table 326
- Creating an Index-Organized Table 327
- Using Partitioned Tables 328
- Creating a View 333
- Indexes 336
- Clusters 342
- Sequences 344
- 18 Basic Oracle Security 345
- Users, Roles, and Privileges 346
- What Users Can Grant 353
- Granting Limited Resources 367
- PART III
- Beyond the Basics
- 19 Advanced Security—Virtual Private Databases 371
- Initial Configuration 372
- Create an Application Context 373
- Create a Logon Trigger 375
- Create a Security Policy 376
- Apply the Security Policy to Tables 377
- Test VPD 378
- How to Implement Column-Level VPD 379
- How to Disable VPD 380
- How to Use Policy Groups 381
- 20 Working with Tablespaces 383
- Tablespaces and the Structure of the Database 384
- Planning Your Tablespace Usage 389
- 21 Using SQL*Loader to Load Data 391
- The Control File 392
- Starting the Load 394
- Control File Syntax Notes 398
- Managing Data Loads 400
- Tuning Data Loads 402
- Additional Features 404
- 22 Using Data Pump Export and Import 405
- Creating a Directory 406
- Data Pump Export Options 406
- Starting a Data Pump Export Job 409
- Data Pump Import Options 413
- Starting a Data Pump Import Job 416
- 23 Accessing Remote Data 423
- Database Links 424
- Using Synonyms for Location Transparency 431
- Using the User Pseudo-Column in Views 432
- Dynamic Links: Using the SQL*Plus copy Command 434
- Connecting to a Remote Database 435
- 24 Using Materialized Views 437
- Functionality 438
- Required System Privileges 438
- Required Table Privileges 439
- Read-Only vs. Updatable 439
- create materialized view Syntax 440
- Using Materialized Views to Alter Query Execution Paths 445
- Using DBMS_ADVISOR 447
- Refreshing Materialized Views 449
- create materialized view log Syntax 455
- Altering Materialized Views and Logs 456
- Dropping Materialized Views and Logs 457
- 25 Using Oracle Text for Text Searches 459
- Adding Text to the Database 460
- Text Queries and Text Indexes 461
- Index Sets 474
- 26 Using External Tables 477
- Accessing the External Data 478
- Creating an External Table 479
- Altering External Tables 489
- Limitations, Benefits, and Potential Uses of External Tables 490
- 27 Using Flashback Queries 493
- Time-Based Flashback Example 494
- Saving the Data 496
- SCN-Based Flashback Example 497
- What If the Flashback Query Fails? 499
- What SCN Is Associated with Each Row? 499
- Flashback Version Queries 500
- Planning for Flashbacks 502
- 28 Flashback—Tables and Databases 503
- The flashback table Command 504
- The flashback database Command 507
- 29 An Introduction to PL/SQL 513
- PL/SQL Overview 514
- Declarations Section 514
- Executable Commands Section 518
- Exception Handling Section 531
- 30 Triggers 535
- Required System Privileges 536
- Required Table Privileges 536
- Types of Triggers 537
- Trigger Syntax 538
- Enabling and Disabling Triggers 548
- Replacing Triggers 549
- Dropping Triggers 550
- 31 Procedures, Functions, and Packages 555
- Required System Privileges 556
- Required Table Privileges 558
- Procedures vs. Functions 558
- Procedures vs. Packages 558
- create procedure Syntax 559
- create function Syntax 561
- create package Syntax 568
- Viewing Source Code for Procedural Objects 572
- Compiling Procedures, Functions, and Packages 572
- Replacing Procedures, Functions, and Packages 573
- Dropping Procedures, Functions, and Packages 573
- 32 Using Native Dynamic SQL and DBMS_SQL 575
- Using EXECUTE IMMEDIATE 576
- Using Bind Variables 578
- Using DBMS_SQL 579
- PART V
- Object-Relational Databases
- 33 Implementing Types, Object Views, and Methods 587
- Working with Abstract Datatypes 588
- Implementing Object Views 593
- Methods 599
- 34 Collectors (Nested Tables and Varying Arrays) 603
- Varying Arrays 604
- Nested Tables 610
- Additional Functions for Nested Tables and Varying Arrays 615
- Management Issues for Nested Tables and Varying Arrays 615
- 35 Using Large Objects 619
- Available Datatypes 620
- Specifying Storage for LOB Data 621
- Manipulating and Selecting LOB Values 623
- Row Objects vs. Column Objects 648
- Object Tables and OIDs 648
- Object Views with REFs 656
- Object PL/SQL 661
- Objects in the Database 662
- 37 An Introduction to Java 667
- Java vs. PL/SQL: An Overview 668
- Getting Started 669
- Declarations 669
- Executable Commands 670
- Classes 679
- 38 JDBC Programming 685
- Getting Started 686
- Using the JDBC Classes 688
- 39 Java Stored Procedures 697
- Loading the Class into the Database 700
- How to Access the Class 702
- PART VII
- Clustered Oracle—The Grid
- 40 Oracle Real Application Clusters 709
- Preinstallation Steps 710
- Installing RAC 710
- Starting and Stopping RAC Instances 714
- Transparent Application Failover 716
- Adding Nodes and Instances to the Cluster 717
- Managing the Cluster Registry and Services 718
- 41 Grid Architecture and Management 719
- Hardware and Operating System Configuration Issues 720
- Adding Servers to the Grid 723
- Sharing Data Across the Grid 724
- Managing the Grid 724
- Launching OEM 726
- 36 Advanced Object-Oriented Concepts 647
- A Note About Nomenclature 732
- New Views Introduced in Oracle Database 10g 733
- New Columns Introduced in Oracle Database 10g 738
- The Road Maps: DICTIONARY (DICT) and DICT_COLUMNS 745
- Things You Select From: Tables (and Columns), Views, Synonyms, and Sequences 746
- Recycle Bin—USER_RECYCLEBIN and DBA_RECYCLEBIN 755
- Constraints and Comments 755
- Abstract Datatypes, ORDBMS-Related Structures, and LOBs 764
- Database Links and Materialized Views 767
- Triggers, Procedures, Functions, and Packages 770
- Dimensions 773
- Space Allocation and Usage, Including Partitions and Subpartitions 774
- Users and Privileges 780
- Roles 782
- Auditing 783
- Miscellaneous 785
- Monitoring: The V$ Dynamic Performance Tables 785
- 43 The Hitchhiker’s Guide to Tuning Applications and SQL 791
- New Tuning Features in Oracle Database 10g 792
- Tuning—Best Practices 794
- Generating and Reading Explain Plans 803
- Major Operations Within Explain Plans 808
- Implementing Stored Outlines 831
- Review 833
- 44 Case Studies in Tuning 835
- Case Study 1: Waits, Waits, and More Waits 836
- Case Study 2: Application-Killing Queries 839
- Case Study 3: Long-Running Batch Jobs 841
- 45 The Hitchhiker’s Guide to Oracle Application Server 10g 845
- What Is Oracle Application Server 10g? 847
- Communication Services 854
- Content Management Services 859
- Business Logic Services 859
- Presentation Services 861
- Business Intelligence Services 863
- Portal Services 865
- Web Services 866
- Developer Toolkits 867
- Persistence Layer Services 872
- Caching Services 874
- System Services 876
- Development Tools 878
- 42 The Hitchhiker’s Guide to the Oracle10g Data Dictionary 731
- Starting and Stopping the Database 887
- Sizing and Managing Memory Areas 888
- Allocating and Managing Space for the Objects 891
- Monitoring an Undo Tablespace 900
- Automating Storage Management 901
- Segment Space Management 902
- Transporting Tablespaces 903
- Performing Backups 904
- Where to Go from Here 919
- 47 The Hitchhiker’s Guide to XML in Oracle 921
- Document Type Definitions, Elements, and Attributes 922
- XML Schema 926
- Using XSU to Select, Insert, Update, and Delete XML Values 928
- Using XMLType 934
- Other Features 936
- Alphabetical Reference 937
- 46 The Hitchhiker’s Guide to Database Administration 885
- Creating a Database 886
BOOK
SUMMARY
Items Found: 260
- Chapter 1: When to Step Away from the Keyboard 9
- Protecting and defending 9
- Choosing your tools 11
- Graphic-based, command-line Oracle tools and usage 12
- Staying away from dinosaurs 14
- Insisting on help 14
- What does a DBA do all day? 15
- Prioritizing tasks—daily, weekly, monthly, quarterly, or yearly 16
- SLAs: Why isn't the database down anymore? 18
- Avoiding major blunders 19
- Summary 21
- Chapter 2: Maintaining Oracle Standards 23
- Adapting to constant change 23
- Database concepts 24
- Multiple ORACLE_HOME(s) 24
- Keeping the environment clean 25
- Oracle's Optimal Flexible Architecture (OFA) 26
- 11g differences in the OFA standard 27
- XWINDOWS and GUI displays 28
- Automating day-to-day tasks 28
- DBMS_SCHEDULER 29
- OS cron utility executing a scheduled task on a Unix server 30
- OEM Console plus the Intelligent Agent 31
- 11g Diagnosability Framework 32
- Advisors and checkers 33
- Missing temp file resolution 34
- Environmental variables and scripting 39
- Guidelines for scripting 40
- Separating the configuration file 40
- Separating the variable part of the script into its own configuration file 44
- Don't hardcode values; reference a configuration file and password file at runtime 45
- Putting variables at the top of the script with curly braces 47
- Moving functions to a centralized file to be reused 47
- Validating the use of the script 48
- Using SQL to generate code 48
- Helpful Unix commands 51
- Reducing operating system differences with common tools 52
- Configuration management, release management, and change control 53
- Configuration management 53
- Using OCM in disconnected mode with masking 54
- Mass deployment utility 55
- Release management 56
- DBA issues with patching 58
- Applying a patch without integrating MOS with OCM 60
- Using the new patch plan functionality with OCM installed and uploaded to MOS 60
- Change control 61
- Where, when, and who to call for help 62
- My Oracle Support 63
- Documentation library 64
- Summary 67
- Chapter 3: Tracking the Bits and Bytes 69
- Dump block 70
- Demonstration of data travel path 73
- Location of trace files 74
- Running dump block SQL statements 75
- Identifying files and blocks 78
- Tracking the SCN through trace files 80
- Oracle's RDBMS Log Miner utility 84
- Turn on archivelog mode 86
- Add supplemental logging 89
- Identification key logging 89
- Table-level supplemental logging 89
- Flash(back) Recovery Area (FRA) 90
- Automatic Undo Management (AUM) 92
- Identifying data in undo segments by flashing back to timestamp 92
- When to use Log Miner 94
- Identifying the data needed to restore 95
- SCN, timestamp, or log sequence number 95
- Pseudo column ORA_ROWSCN 96
- Flashback Transaction Query and Backout 96
- Enabling flashback logs 97
- Flashback Table 98
- Flashback Transaction Query with pseudo columns 100
- Flashback Transaction Backout 100
- Using strings to remove binary components 101
- Summary 103
- Chapter 4: Achieving Maximum Uptime 105
- Maximum Availability Architecture (MAA) 106
- Downtime—planned or unplanned 107
- MAA with commodity hardware: Case study 109
- Optimizing Oracle Database High Availability 111
- To archive or not to archive, you pick the mode 112
- Multiple archive destinations 113
- Moving the archive destination in an emergency 114
- Using a different disk device or disk mount 114
- Monitoring all hard drive space and Archivelog space 114
- Database compatibility parameter with spfile, pfile management 115
- Dealing with storage—RAID, SAME, ASM, and OMF 118
- RAID—Redundant Arrays of Inexpensive Disks 119
- SAME—Stripe and Mirror Everything 119
- ASM—Automatic Storage Management 120
- Mirrored files—control files and online redo logs 122
- Autoextending data files 124
- Auditing, log files, and max dump file size 125
- What is currently being audited? 126
- Auditing Session Activity 128
- Other logs to monitor 130
- Data dictionary healthcheck 131
- SQL*Net hardening, tuning, and troubleshooting 132
- Troubleshooting 135
- What can go wrong? 136
- Grid Control High Availability and Disaster Recovery 137
- Recommended installation for GC 10.2.0.5+ 138
- Why should I install a separate database? 139
- Cookbook for silent install and configuring later 139
- Migrating GC repositories 142
- Transportable tablespace migrations 142
- Keeping the repository highly available 143
- Repository backups, restores, or imports 144
- MAA—repository on a physical standby database 145
- OMS and agents' high availability 146
- Cloning Management agents 146
- GC at a very large site 147
- Summary 148
- Chapter 5: Data Guard and Flashback 149
- Physical, snapshot, and logical standbys 151
- Physical standby database 152
- Snapshot standby database 152
- Logical standby database 153
- Commodity hardware and mixed environments 154
- What is Data Guard broker? 155
- What controls the Data Guard broker? 155
- Which tool is best? 156
- Start with the default configuration—maximum performance 158
- Utilizing multiple standby sites 159
- Protection modes and real-time apply 160
- Maximum performance (default) 161
- Maximum performance recommendations 161
- Maximum availability 163
- Maximum availability recommendations 163
- Maximum protection and recommendations 164
- Database states 164
- Manual failover with physical standby 165
- Manual failover with DGMGRL 167
- Flashback and guaranteed restore points 167
- Possible testing/recovery scenarios for Flashback and Data Guard 168
- Lost-write detection using a physical standby database 169
- Corruption, patch reversal, upgrades, or testing scenarios 170
- Reinstate failed primary scenario 173
- Troubleshooting the logical standby 174
- Options for resolving errors that stop the SQL Apply process 176
- How to skip a single transaction 177
- Active Data Guard and RMAN 178
- Other Data Guard notes and features 179
- Summary 180
- Chapter 6: Extended RMAN 183
- Recovery goals determine backup configuration 184
- Backup types and the default configuration 186
- Backup incremental levels 186
- Full backup 187
- Logical backup 188
- Oracle's suggested backup: What is missing? 188
- Controlfiles—an important part of backup and recovery 191
- How often should backups occur? 191
- Default configuration details 192
- Oracle's recommended backup strategy 196
- Issues with incremental merge backups 196
- Restore and recovery comparison 197
- Recommendations for Incremental Merge backup 197
- Calculating the FRA disk space needed 198
- Catalog versus controlfile RMAN recordkeeping and retention policies 199
- RMAN stored script and substitution variables 199
- Retention policies: Recovery window or redundancy? 201
- Not needed (OBSOLETE) versus not found (EXPIRED) 202
- What if I want to keep certain backups? 204
- Corruption detection 204
- Physical corruption 204
- Logical corruption 206
- Commands and utilities that detect corruption 206
- Which utility should be used? 208
- What should I do if corruption is detected? 209
- Data Recovery Adviser 210
- What does RMAN backup, restore, and recover? 212
- Possible interruptions to the recovery process 214
- What doesn't RMAN backup, restore, and recover? 214
- Online redo: Key to consistency 215
- User-managed backups 217
- What do I do before starting a restore and recovery? 218
- Find the most recent controlfile backup 220
- Simplified recovery through resetlogs 225
- RMAN cloning and standbys—physical, snapshot, or logical 226
- Clones, DBIDs, and incarnations 227
- Creating a cloned database 227
- Post-cloning tasks 229
- Creating a standby database 229
- Physical standby 230
- Scheduled maintenance/cataloging of archivelogs 231
- Rolling forward a standby using incremental 231
- Rolling incremental for monthly updates to data warehouses 232
- The DBMS_BACKUP_RESTORE package 232
- Summary 232
- Chapter 7: Migrating to 11g: A Step-Ordered Approach 235
- Oracle net services 238
- Client compatibility (SQL*Net, JDBC, ODBC) 239
- RMAN binary, virtual/catalog, and database 240
- Grid Control—database repository and agents 241
- ASM, CFS, and RDBMS within an Oracle Grid infrastructure 242
- Recommended order of migration 243
- Installation of major versions, maintenance releases, and patches 244
- Release installation 245
- PatchSet installation—cloned ORACLE_HOME 246
- Database upgrade methods 248
- How long does the database upgrade take? 249
- Database Upgrade Assistant (DBUA) 250
- RMAN 251
- Using RMAN as part of a manual upgrade process 251
- Downgrading with RMAN 256
- Transportable Tablespaces (TTS) 257
- Preparatory steps for TTS migrations 257
- Using TTS for upgrades 259
- TTS cookbook 259
- Recreating an unrecoverable database with TTS 261
- Using TTS to add skipped read-only tablespaces during duplication 261
- Using TTS to merge two ASM databases into one 262
- Sharing read-only tablespaces between different databases with TTS 264
- Cross-platform migrations with a transportable database 267
- Physical and/or snapshot standbys 268
- Failing back to original version 269
- Transient logical standby: Rolling upgrades with minimal downtime 270
- Export/import or data pump migration 272
- Character set selection—UTF8 278
- Post-11g upgrade tasks 280
- Summary 282
- Chapter 8: 11g Tuning Tools 283
- Hardware load testing and forecasting 284
- Orion—Oracle I/O numbers calibration tool 287
- Calibrate I/O 289
- jMeter 290
- Monitoring hidden or underlying problems 290
- Proactive monitoring 291
- Automatic Diagnostic Database Monitor (ADDM) 292
- Automatic Workload Repository 295
- Active Session History (ASH) 296
- SQL Advisors 297
- STATSPACK 298
- Reactive diagnostic and tracing tools 299
- Bind peeking and Adaptive Cursor Sharing 300
- Gathering statistics 301
- Comparing statistics 304
- Restoring statistics history 304
- Knowing what needs to be tuned 305
- Tuning a single query 306
- SQL Plan Management (SPM) 307
- SQL Management Base 308
- Tracing and diagnostic events 308
- What is an event ? 308
- When should I set an event? 309
- What are the different event levels? 309
- Specific Trace events for performance problems 309
- Interpreting the resulting Event Trace file 310
- Upgrading the Optimizer 311
- Capturing and backing up execution plans and statistics 312
- SQL Tuning Sets 312
- Stored Outlines 313
- Capturing and backing up Optimizer Statistics 313
- Upgrade the database to 11g 315
- Capturing new execution plans and new statistics 318
- Evolving or verifying new plans that execute better than the 10g versions 318
- Summary 319
- Index 321
BOOK
SUMMARY
Items Found: 597
- Contents at a Glance
- PART I
- Getting Started with RMAN in Oracle Database 12c
- 1 Quick-Start Guide for RMAN and Oracle Database 12c
- 2 Oracle Database 12c Backup and Recovery Architecture Tour
- 3 Introduction to the RMAN Architecture
- 4 Oracle Database 12c Multitenant
- PART II
- RMAN Configuration, Backup, and Recovery Essentials
- 5 RMAN Setup and Configuration
- 6 The RMAN Recovery Catalog
- 7 RMAN Backups
- 8 RMAN Restore and Recovery
- 9 Advanced RMAN Recovery Topics
- 10 Duplication: Cloning the Target Database
- RMAN Maintenance and Administration
- 11 Maintaining RMAN
- 12 Monitoring and Reporting in RMAN
- 13 Performance Tuning RMAN Backup and Recovery Operations
- 14 Using Oracle Cloud Control for Backup and Recovery
- RMAN in a Highly Available Architecture
- 15 RMAN Best Practices
- 16 Surviving User Errors: Flashback Technologies
- 17 RMAN and Data Guard
- 18 RMAN and Real Application Clusters
- 19 Zero Data Loss Recovery Appliance: Evolution of RMAN to Enterprise-wide
- Database Protection Solution
- 20 RMAN in the Workplace: Case Studies
- PART V
- RMAN Media Management
- 21 Media Management Considerations
- 22 Oracle Secure Backup
- 23 Backing Up to Amazon Web Services Using the Oracle Secure Backup Cloud
- Module
- 24 Enhancing RMAN with Veritas NetBackup for Oracle
- 25 Configuring HP Data Protector for Oracle
- 26 RMAN and Tivoli Storage Manager
- 27 RMAN and CommVault Simpana
- PART VI
- Appendixes
- A RMAN Scripting Examples
- B Setting Up an RMAN Test Environment
- Index
- Acknowledgments
- Introduction
- Preliminary Steps
- Configuring the Database for RMAN Operations
- Determine Where the FRA Should Be Located and Create It
- Log Into the Database and Configure It to Use the FRA
- Put the Database in ARCHIVELOG Mode
- Backing Up the Database
- Restoring the Database
- Summary
- What This Book Is About
- I’m Already an RMAN Expert—Why Do I Need This Book or This Chapter?
- Let’s Kick Off the Tour
- Backup and Recovery Essentials
- High Availability
- Backup and Recovery
- A Few Oracle Terms to Know
- Oracle Database Architecture in the Pre-Multitenant Age
- The Oracle Processes
- Oracle Memory and RMAN
- The Oracle Database
- More About the Oracle Redo Logs
- ARCHIVELOG Mode vs. NOARCHIVELOG Mode
- Oracle Logical Structures
- The Combined Picture
- Startup and Shutdown of the Database
- More Oracle Database Internals
- Controlling the Database Software
- Oracle Backup and Recovery Primer
- Logical Backup and Recovery
- Oracle Physical Backup and Recovery
- Backing Up Other Oracle Components
- Server-Managed Recovery
- The RMAN Utility
- RMAN and Database Privileges
- The Network Topology of RMAN Backups
- RMAN and Scale
- RMAN and Shared Servers
- Running RMAN Locally from the Target Database’s ORACLE_HOME
- The Database Control File
- Record Reuse in the Control File
- The Snapshot Control File
- Rebuilding the Control File
- The RMAN Server Processes
- RMAN Channel Processes
- The SYS Packages Used by RMAN
- SYS.DBMS_RCVMAN
- SYS.DBMS_BACKUP_RESTORE
- Backing Up the Data Block
- The Data Block Backup Overview
- The Benefits of Block-Level Backups
- RMAN in Memory
- Input Memory Buffers
- RMAN Memory Utilization: PGA vs. SGA
- The Recovery Catalog
- The Auxiliary Database
- Compatibility Issues
- The RMAN General Compatibility Rules
- The RMAN Process: From Start to Finish
- The Fast Recovery Area
- Introducing Oracle Multitenant
- The CDB
- Pluggable Databases
- How Does Oracle Multitenant Impact RMAN Backup and Recovery?
- Administering Container Databases
- Starting and Stopping the CDB
- Common Users
- The Pluggable Database
- The PDB Name
- Creating a PDB
- PDB Users
- Connecting to a PDB
- Asking for Directions: Determining Which PDB You Are In
- Architecture of a Pluggable Database
- PDB Constraints
- PDB Performance
- PDB Resource Management
- CDBs and PDBs and the Data Dictionary
- The Multitenant Database Data Dictionary
- PDB Administration
- Other CDB-Related Topics
- Dropping a CDB
- Dropping a PDB
- PDB Cloning and Plugging and Unplugging PDBs
- Configuring Your Database to Run in ARCHIVELOG Mode
- ARCHIVELOG Destination Directories
- Should You Use the FRA?
- Switching Between ARCHIVELOG Modes
- If You Created Your Database with the Oracle Database Configuration
- Assistant
- RMAN Workshop: Put the Database in ARCHIVELOG Mode
- The Oracle Database Fault Diagnosability Infrastructure
- The ADR and Related Fault Diagnosability Infrastructure Components
- Configuring the Fault Diagnosability Infrastructure
- The RMAN Command Line
- Connecting via the RMAN Command Line
- Exiting the RMAN Client
- Setting Up the Database User
- RMAN Workshop: Create the Target Database RMAN Backup Account
- Setting Up Database Security
- Setting the CONTROL_FILE_RECORD_KEEP_TIME Parameter
- Configuring RMAN Default Settings
- Introducing the configure Command
- Configuring Various RMAN Default Settings
- Examples of Using the configure Command
- If You Are Using Shared Servers
- Summary of RMAN Configuration Tasks
- Other Backup and Recovery Setup and Configuration Considerations
- What Is the Recovery Catalog?
- Creating the Recovery Catalog Owning Schema in a Nonmultitenant
- Database
- RMAN Workshop: Create the Recovery Catalog User Account
- Creating the Recovery Catalog–Owning Schema in a Multitenant
- Creating the Recovery Catalog Schema Objects
- RMAN Workshop: Create the Recovery Catalog
- RMAN Workshop: Register Your Database in the Recovery Catalog
- Utilizing an RMAN Virtual Private Catalog
- RMAN Workshop: Create a Virtual Private Catalog for Oracle 12.1.0.1
- and Earlier Databases
- Merging Multiple Recovery Catalogs
- RMAN Workshop: Merge Two Recovery Catalogs
- RMAN Stored Scripts
- Creating Stored Scripts
- Querying the Recovery Catalog for Stored Script Information
- Changing Stored Scripts
- Deleting Stored Scripts
- Using Stored Scripts
- Printing Stored Scripts
- RMAN Workshop: Using RMAN Stored Scripts
- Recovery Catalog Maintenance
- Unregistering a Database in RMAN
- Database Migration/Upgrade Issues
- Manually Resetting the Database Incarnation (reset catalog)
- Manually Resynchronizing the Recovery Catalog (resync catalog)
- Purging Recovery Catalog Records
- Backing Up the Recovery Catalog
- Recovery Catalog Views
- The Purpose of the Recovery Catalog Views and the Database Data
- Dictionary Views
- The Recovery Catalog Base Tables, Views, and Database Data
- Examples of Using the Recovery Catalog Base Tables and Views
- Catalog Views Intended for Use by Oracle Enterprise Manager
- Using the RMAN Backup Command
- The Backup Command
- The Backup Command, Channels, and Performance
- RMAN Backup Command Options
- Backing Up to a Specific Device Type
- Controlling Attributes of Backup Sets and Backup Set Pieces
- Multisection Backups
- RMAN Compression
- Tags
- Restore Points
- The duration Command: Putting Limits on Backups
- Archival Backups
- Overriding the Configure Exclude Command
- Skipping Offline, Inaccessible, or Read-Only Datafiles
- Override Backup Optimization
- Backing Up Datafiles Based on Their Last Backup Time
- Checking for Logical Corruption during a Backup
- Making Copies of Backups on Your RMAN Copier
- Capturing the Elusive Control File
- Using the RMAN Set Command
- Offline RMAN Database Backups
- Offline Backups Using Configured Settings
- RMAN Workshop: Perform an Offline Backup
- Breaking Down the Workshop Output
- Offline Backups without Using Configured Defaults
- Online RMAN Database Backups
- Online Database Backups
- RMAN Workshop: Perform an Online Backup
- Variations on a Theme: Other Types of RMAN Online Backups
- Tablespace Backups
- Datafile Backups
- Archived Redo Log Backups
- Control File and Parameter File Backups
- Backup Set Backups
- Fast Recovery Area Backups
- Copies
- Image Copies
- Database, Tablespace, and Datafile Image Copies
- Control File Copies
- ARCHIVELOG Image Copies
- Incremental RMAN Backups
- The Block Change Tracking File
- The Base Backup
- Differential vs. Cumulative Incremental Backups
- Incrementally Updated Backups
- RMAN Workshop: Perform an Incremental Backup
- Getting Started
- RMAN Workshop: Get Your Database Backed Up!
- RMAN Best Practices Introduced in This Chapter
- RMAN Restore and Recovery Basics
- Types of Oracle Database Recoveries
- About Restoring Multitenant Databases
- Preparing for an RMAN Restore
- Staging RMAN Backup Set Pieces for Restores
- Restoring the SPFILE
- RMAN Workshop: Recover Your SPFILE
- Restoring the Control File
- RMAN Workshop: Recover Your Control File
- Restore and Recover the Database in NOARCHIVELOG Mode
- Preparing for the Restore
- Restoring to a Different Location
- RMAN Workshop: Recover Your NOARCHIVELOG Mode Database
- Database Recoveries in ARCHIVELOG Mode
- Point-of-Failure Database Recoveries
- RMAN Workshop: Complete Recovery of Your ARCHIVELOG Mode
- Tablespace Recoveries
- Datafile Recoveries
- What If I Use Incremental Backups?
- Recovering from Online Redo Log Loss
- Loss of an Inactive Online Redo Log Group Member
- Loss of an Inactive Online Redo Log Group
- Loss of an Active but Not Current Online Redo Log Group
- Loss of the Current Online Redo Log Group
- The Data Recovery Advisor
- Using the Data Recovery Advisor Through RMAN
- Data Recovery Advisor Data Dictionary Views
- Recovery of Pluggable Databases
- Recovering the Root Container
- Recovering the Seed Container
- Recovering PDBs
- Incomplete Database Recoveries on Non-CDB and Entire CDB Databases
- What Is an Incomplete Recovery?
- Incomplete Recovery: How Does It Work?
- Establishing a Point to Recover To
- Time-Based Recoveries
- SCN-Based Recoveries
- Change-Based Recoveries
- Restore Point–Based Recoveries
- Performing Incomplete Recoveries of Pluggable Databases (PDB)
- About PDB Point-in-Time Recoveries
- Restrictions and Requirements Associated with PDB Point-in-time
- Recoveries
- PDB Time-Based Recovery
- PDB SCN-Based Recovery
- PDB Change-Based Recovery
- Recovering Based on a Restore Point
- Other RMAN Recovery Topics
- Read-Only Tablespace Recovery Considerations
- Archived Redo Log Restores
- Datafile Copy Restores
- Recovering Corrupted Data Blocks
- Recovering to a Previous Incarnation
- Table and Partition Point-in-Time Recovery
- Prerequisites for Restoring and Recovering Database Tables and
- Partitions
- Restrictions on Restoring and Recovering Database Tables and
- Options to Consider when Restoring Tables and Partitions
- How RMAN Implements the Restore and Recovery of Tables and
- Restoring Tables and Partitions from PDBs
- Using RMAN to Restore and Recover a Database Table: An Example
- Tablespace Point-in-Time Recovery
- Preparing for the TSPITR
- Performing the Actual TSPITR
- Customized Automated TSPITR with an Automatic Instance
- RMAN Duplication: A Primer
- Why Use RMAN Duplication?
- Different Types of RMAN Duplication
- The Duplication Architecture
- Duplication: Location Considerations
- Duplication to the Same Server: An Overview
- Duplication to the Same Server, Different ORACLE_HOME
- Duplication to a Remote Server: An Overview
- Duplication and the Network
- RMAN Workshop: Build a Password File
- Duplication to the Same Server
- RMAN Workshop: Duplication to the Same Server Using Disk Backups
- Using Tape Backups
- Duplication to a Remote Server
- RMAN Workshop: Duplication to a Remote Server Using Disk Backups
- Using Tape Backups for Remote Server Duplication
- Targetless Duplication in 12c
- Incomplete Duplication: Using the DBNEWID Utility
- New RMAN Cloning Features for 12c
- Using Compression
- Duplicating Large Tablespaces
- RMAN Maintenance
- Crosschecking RMAN Backups
- RMAN Workshop: Using the Crosscheck Command
- Verifying Your Backups
- The Restore…Preview Command
- Using the Restore…Validate and Check Logical Commands
- Using the validate Command
- Backup Retention Policies
- Archive Log Retention Policies
- The Change Command
- RMAN Workshop: Using the Change Command
- The Delete Command
- RMAN Workshop: Using the Delete Command
- Cataloging Other Backups in RMAN
- When You Just Can’t Take It Anymore
- The RMAN List Command
- Listing Incarnations
- Listing Backups
- Listing Image Copies
- Listing Restore Points
- Listing the DB_UNIQUE_NAME
- The RMAN Report Command
- Reporting on Datafiles that Have Not Been Backed Up Recently
- Reporting on Backup Redundancy or Recovery Window
- Reporting on Unrecoverable Operations on Datafiles
- Reporting on the Database Schema
- Reporting on Obsolete Backups
- Data Dictionary Views for Reporting
- Before You Tune RMAN
- RMAN Performance: What Can Be Achieved?
- Have the Right Hardware in Place
- Use the Correct Backup Strategy
- Tune the Database
- Tuning RMAN
- Tuning RMAN Settings
- Tuning the MML Layer
- Identifying Database-Related RMAN Issues
- Tracing RMAN Sessions
- EM12c Architecture
- Oracle Management Repository
- Oracle Management Service
- Oracle Management Agents
- The Cloud Control Console
- Plug-Ins
- Installing and Configuring Enterprise Manager Cloud Control 12c for Database
- Backups
- Installing an Enterprise Manager Agent
- Discovering Targets
- Configuring Backup and Recovery Settings with EM12c
- Backing Up a Database with EM12c
- Schedule Oracle-Suggested Backup
- Schedule Customized Backup
- Backing Up Multiple Databases at Once
- Managing Backups
- Backup Reports
- Using EM12c for Recovery
- Performing Recovery
- Data Protection
- Enterprise Architecture
- Disaster Recovery
- Data Governance and Security
- Monitoring and Scheduling
- Best Practices
- Service-Level Agreements
- Standards and Processes
- RMAN Best Practices
- Prepared for the Inevitable: Flashback Technology
- Flashback and the Undo Segment: A Love Story
- Flashback Query
- Flashback Versions Query
- Flashback Table
- Performing the Flashback Table Operation from SQL
- Flashback Table with Oracle Enterprise Manager
- Flashback Transaction
- Flashback Drop
- The Recycle Bin
- Flashback Database
- Flashback Logs
- Flashback Retention Target
- RMAN Workshop: Configure for Flashback Database
- Flashback Database: Tuning and Tweaking
- Flashback Data Archive (Total Recall)
- Types of Standby Databases
- Physical Standby Database
- Logical Standby Database
- Using RMAN to Create Standby Databases
- Preparing to Create a Standby Database
- Establishing a Naming Convention
- Putting the Database in ARCHIVELOG Mode and Forced Logging
- Mode
- Setting Database Parameters
- Creating the Auxiliary Database Password File
- Configuring the Oracle Network
- Preparing and Starting the Auxiliary Instance
- Starting RMAN
- Creating the Standby Database
- After the Standby Is Created
- RMAN Workshop: Create a Standby Database Using RMAN
- Taking Backups from the Standby Database
- Other RMAN and Data Guard Topics
- Restoring a Lost Datafile, Tablespace, or Database from a Standby
- Database with RMAN
- Resynchronizing the Standby Database
- Archive Log Backups from the Standby Database
- Real Application Clusters: Unique Backup Challenges
- Archive Log Backups
- RAC Recovery Challenges
- Restore Operations
- Media Management Considerations During a Restore
- Recovery Considerations After a Restore
- Advanced RMAN/RAC Topics
- Duplication to a Single-Node System
- RMAN Workshop: Duplicating a RAC Database to a Single-Node
- The Single-Node Standby Database
- RMAN Workshop: Creating a Single-Node Standby Database from a
- RAC Database
- Backing Up the Multinode RAC Database
- The Zero Data Loss Recovery Appliance: An Overview
- Architecture
- Protected Databases
- Delta Push
- Delta Store
- Replication
- Autonomous Tape Archival
- Backup Validation
- Protection Policy
- Cooperative Space Management
- Monitoring and Administration
- Scale-out Hardware
- Before the Recovery
- What Is the Exact Nature of the Failure?
- What Recovery Options Are Available?
- Might Oracle Support Be Needed?
- Who Can Act as a Second Pair of Eyes During Recovery?
- Recovery Case Studies
- Case #1: Recovering from Complete Database Loss
- (NOARCHIVELOG Mode) with a Recovery Catalog
- Case #2: Recovering from Complete Database Loss
- (NOARCHIVELOG Mode) Without a Recovery Catalog
- Case #3: Recovering from Complete Database Loss (ARCHIVELOG
- Mode) Without a Recovery Catalog
- Case #4: Recovering from Complete Database Loss (ARCHIVELOG
- Mode) with a Recovery Catalog
- Case #5: Recovering from the Loss of the SYSTEM Tablespace
- Case #6: Recovering Online from the Loss of a Datafile or Tablespace
- Case #7: Recovering from Loss of an Unarchived Online Redo Log
- Case #8: Recovering Through resetlogs
- Case #9: Completing a Failed Duplication Manually
- Case #10: Using RMAN Duplication to Create a Historical Subset of
- the Target Database
- Case #11: Recovering from a Lost Datafile (ARCHIVELOG Mode)
- Using an Image Copy in the Fast Recovery Area
- Case #12: Recovering from Running the Production Datafile Out of the
- Fast Recovery Area
- Case #13: Using Flashback Database and Media Recovery to Pinpoint
- the Exact Moment to Open the Database with resetlogs
- Tape Backups in a Disk Backup World
- RMAN and the Media Manager: An Overview
- The Media Manager Catalog
- The Media Manager: Other Software Components
- Media Management Library
- RMAN Workshop: Test Tape Channels with the Oracle Default SBT
- Interface
- Interfacing with the MML
- The SBT API
- Back Up to Tape: From Start to Finish
- Restore from Tape: From Start to Finish
- Using sbttest and loadsbt.exe
- Media Management Errors
- Features of Oracle Secure Backup
- Oracle Secure Backup and Recovery Manager
- Differences Between OSB and OSB Express
- Backup Encryption
- Fast Database Backup Compression
- Oracle Secure Backup Cloud Module
- Oracle Secure Backup Interfaces
- Oracle Secure Backup Components
- Oracle Secure Backup Daemons
- Host Access Modes
- Administrative Data
- Oracle Secure Backup Users and Classes
- Operating System Accounts
- NDMP Hosts
- Oracle Secure Backup Rights and Classes
- Installing and Configuring Oracle Secure Backup
- RMAN Workshop: Install and Configure Oracle Secure Backup
- Oracle Database and File System Data Backup Using Oracle Secure Backup
- RMAN Workshop: Schedule Oracle Database and File System Data
- Oracle Database Backup Using Oracle Secure Backup Cloud Module
- RMAN Workshop: Installing OSB Cloud Module and Using It for OSB
- Conventional Backups: Assumptions and Limitations
- The Oracle Secure Backup Cloud Module
- What Is Cloud Computing?
- Oracle and the Amazon Cloud
- Elastic Compute Cloud (EC2) and Elastic Block Store (EBS)
- Simple Storage Service (S3): Oracle’s Cloud Backup Solution
- RMAN Backup to S3: The Oracle Secure Backup Cloud Module
- S3 Backup over the Internet or from Amazon EC2
- Oracle Cloud Backup Advantages
- RMAN Workshop: Deploying RMAN Backups to Amazon S3
- Performing Backups by Using the OSB Cloud Module
- To Persistently Store S3 as the Default SBT Channel
- To Specify the OSB Cloud Module Each Time You Allocate a Channel
- Listing RMAN Backups and Backup Sets Stored on S3
- Optimizing Backups and Recoveries over the Internet Using the OSB
- Cloud Module and Amazon S3
- Example with Multiple Channels and Compressed Backup Sets
- Licensing Considerations
- Key Features
- Necessary Components
- Storage/Media Device Configuration
- NetBackup Installation
- Pre-Installation Tasks for NetBackup for Oracle Agent
- NetBackup for Oracle Agent Installation Steps
- How to Link Oracle to NetBackup Media Manager
- Automatic Link Method
- Manual Link Method
- Configuring NetBackup Policies
- Adding New Policies
- Defining Schedules
- Defining a Backup Selection
- Defining Policy Clients
- Managing Expired Backup Images
- Delete Expired Backups Using NetBackup Repository
- Delete Expired Backups Using RMAN
- RMAN Sample Scripts
- Troubleshooting
- Use NetBackup Logs
- Determine Which Library Is in Use
- Security Best Practices
- Cost Justification
- Integration of Oracle and Data Protector
- Support Matrix
- Integration Components
- Integration Restrictions
- RMAN Workshop: Integration Configuration
- RMAN Backup Configuration on Data Protector
- RMAN WORKSHOP: Backup Configuration
- Editing the RMAN Script
- Running an RMAN Backup
- Backup Methods
- Backup Procedure
- Restoring Oracle Using the Data Protector GUI
- Restoring Oracle Database Objects
- Oracle RMAN Metadata and Data Protector Media Management Database
- Synchronization
- Overview of Tivoli Storage Manager
- TSM Server System Objects
- TSM Client
- RMAN Workshop: Configuring TDPO for Oracle
- Performing an RMAN Backup Using TDPO
- Default Channels
- Deleting Database Backups
- Troubleshooting Common Backup Scenarios
- Additional Troubleshooting
- Simpana Overview
- Installation
- Data Retention
- Schedule Policies
- CommVault Oracle iDA: What Is It?
- Configure an Oracle Instance
- Configure the Subclient
- Initiate a Backup
- Restore
- Advanced Configurations
- RMAN Interface
- RMAN Scripts for Windows
- Creating a Windows Script to Schedule Backups
- Scheduling the Backup
- RMAN Scripts for Unix
- The Test Box
- Match Your Production Environment
- Go Cheap—At a Price
- The Oracle Configuration
- Multiple Homes
- Creating Databases
- The RMAN Configuration
BOOK
SUMMARY
Items Found: 711
- 1 Introduction to Oracle Database 12c R1 & R2 New Features (DBA and Developer)
- 2 Basic Index Principles (Beginner Developer and Beginner DBA)
- 3 Pluggable Databases, Disk Implementation Methodology, and ASM (DBA)
- 4 Tuning the Database with Initialization Parameters (DBA)
- 5 Tuning with Enterprise Manager Cloud Control (DBA and Developer)
- 6 Using EXPLAIN, TRACE, and SQL Plan Management (Developer and DBA)
- 7 Basic Hint Syntax (Developer and DBA)
- 8 Query Tuning (Developer and Beginner DBA)
- 9 Table Joins and Other Advanced Tuning (Advanced DBA and Developer)
- 10 Using PL/SQL to Enhance Performance (Developer and DBA)
- 11 Oracle Cloud, Exadata, Tuning RAC, and Using Parallel Features
- 12 The V$ Views (Developer and DBA)
- 13 The X$ Tables and Internals Topics (Advanced DBA)
- 14 Using Statspack and the AWR Report to Tune Waits, Latches, and Mutexes
- 15 Performing a Quick System Review (DBA)
- 16 Monitor the System Using Unix Utilities (DBA)
- A Key Initialization Parameters (DBA)
- B The V$ Views (DBA and Developer)
- C The X$ Tables (DBA)
- Index
- Acknowledgments
- Introduction
- Oracle Database 12cR1 (12.1.0.1)
- Increased Size Limit to 32K for VARCHAR2 and NVARCHAR2
- Partial Indexes
- Invisible Columns
- Multiple Indexes on the Same Column List
- Fetch First x Rows
- Pluggable Databases (PDBs)
- Oracle Database Cloud Service (Database as a Service)
- PDB Level: MEMORY_LIMIT and MEMORY_MINIMUM (12cR2)
- Change Compression at Import Time
- Adaptive Query Optimization
- PGA_AGGREGATE_LIMIT
- Concurrent Execution for UNION/UNION ALL
- Invoker Rights Function Can Be Results Cached
- New DBMS_UTILITY.EXPAND_SQL_TEXT
- Default for Columns Based on Sequence
- Multiple SSD Devices for Smart Flash Cache
- Concurrent Cost-Based Optimizer Statistics Gathering
- Enhanced System Statistics
- Resource Manager for Runaway Queries
- Automatic Data Optimization (ADO)
- Global Index Maintenance: Drop and Truncate Partition Operations
- ASM Disk Scrubbing
- Online Capability Improvements
- Data Guard Improvements
- RMAN Improvements
- Oracle Database 12cR1 (12.1.0.2)
- In-Memory Database
- Advanced Index Compression
- Automatic Big Table Caching
- FDA Support for Container Databases
- Full Database Caching
- JSON Support
- FIPS 140 Parameter for Encryption
- PDB Subset Cloning
- Rapid Home Provisioning—Creating “Gold Images”
- Oracle Database 12cR2 (12.2)
- Application Development
- Enhanced Features to Reduce Costs and Issues for Migration to Oracle
- Availability
- Big Data
- Compression and Archiving
- Oracle RAC and Grid Infrastructure
- Security
- New Background Processes in 12c
- Exadata—New with Exadata X6!
- Version Comparison Chart
- New Features Review
- References
- Basic Index Concepts
- Invisible Indexes
- Multiple Types of Indexes on the Same Column(s)
- Concatenated Indexes
- Suppressing Indexes
- Using the NOT EQUALOperators: <>, !=
- Using IS NULLor IS NOT NULL
- Using LIKE
- Using Functions
- Comparing Mismatched Data Types
- Selectivity
- The Clustering Factor
- The Binary Height
- Additional Details Concerning BLEVELand Index Height
- Using Histograms
- Fast Full Scans
- Skip-Scans
- Types of Indexes
- B-Tree Indexes
- Bitmap Indexes
- Hash Indexes
- Index-Organized Tables
- Reverse Key Indexes
- Function-Based Indexes
- Partitioned Indexes
- New 12cR2 Features for Partitioned Indexes
- Bitmap Join Indexes
- Fast Index Rebuilding
- Rebuilding Indexes Online
- Tips Review
- Pluggable Databases (New in Oracle 12c)
- CDB or PDB Created Objects
- Creating a PDB: Many Ways to Do It
- Great Pluggable Database Commands
- ALTER SYSTEM While in a PDB and Other Nice Commands
- Using In-Memory (IM) with Pluggable Databases
- Other 12cR2 Features with Pluggable Databases
- Subset Standby (New in Oracle 12cR2)
- Disk Arrays
- Use Disk Arrays to Improve Performance and Availability
- How Many Disks Do You Need?
- What Are Some of the RAID Levels Available?
- The Newer RAID 5
- Solid-State Disks
- ASM Storage Management (Striping/Mirroring)
- Setup and Maintenance of the Traditional Filesystem
- What Is the Cost?
- Storing Data and Index Files in Separate Locations
- Avoiding I/O Disk Contention
- The 12c Heat Map and Automatic Data Optimization (ADO)
- 12c I/O Performance Tracking Views (Outliers)
- Oracle Bigfile Tablespaces
- ASM Introduction
- Communication Across IT Roles
- ASM Instances
- ASM Initialization Parameters
- ASM Installation in 12c
- Srvctl Enhancements
- ASM Rebalance Enhancements
- ASM Fast Mirror Resync
- ASM Filter Driver
- ASM and Privileges
- ASM and Multipathing
- Bigfile and ASM
- Avoiding Disk Contention by Using Partitions
- Getting More Information About Partitions
- Other Types of Partitioning
- Partitioned Indexes (Local)
- Other Partitioning Options
- Index Partitioning
- Exporting Partitions
- Eliminating Fragmentation (Only If Needed—Careful!)
- Using the Correct Extent Size
- Avoiding Chaining by Setting PCTFREE Correctly
- Using Automatic Segment Space Management (ASSM)
- Increasing the Log File Size and LOG_CHECKPOINT_INTERVALfor Speed
- Determining If Redo Log File Size Is a Problem
- Determining the Size of Your Log Files and Checkpoint Interval
- Other Helpful Redo Log Commands
- Storing Multiple Control Files on Different Disks and Controllers
- Other Disk I/O Precautions and Tips
- Issues to Consider in the Planning Stages
- When Upgrading to Oracle Database 12c
- Using SEC_CASE_SENSITIVE_LOGON
- Crucial Memory Initialization Parameters for Performance
- PDB Level: MEMORY_LIMIT and MEMORY_MINIMUM
- In-Memory Database (INMEMORY_SIZE)
- Changing the Initialization Parameters Without a Restart
- Modifying an Initialization Parameter at the PDB Level
- Insight into the Initialization Parameters from Oracle Utilities
- Viewing the Initialization Parameters with Enterprise Manager
- Increasing Performance by Tuning the DB_CACHE_SIZE
- Using V$DB_CACHE_ADVICE in Tuning DB_CACHE_SIZE
- Monitoring the V$SQLAREA View to Find Bad Queries
- Setting DB_BLOCK_SIZE to Reflect the Size of Your Data Reads
- Setting SGA_MAX_SIZE to 25 to 50 Percent of the Size Allocated to Main Memory
- Tuning the SHARED_POOL_SIZE for Optimal Performance
- Using Stored Procedures for Optimal Use of the Shared SQLArea
- Setting the SHARED_POOL_SIZE High Enough to Fully Use the DB_CACHE_SIZE
- Keeping the Data Dictionary Cache Objects Cached
- Keeping the Library Cache Reload Ratio at 0 and the Hit Ratio Above 95 Percent
- Using Available Memory to Determine If the SHARED_POOL_SIZE Is Set Correctly
- Using the X$KSMSP Table to Get a Detailed Look at the Shared Pool
- Points to Remember About Cache Size
- Waits Related to Initialization Parameters
- Using Oracle Multiple Buffer Pools
- Pools Related to DB_CACHE_SIZE and Allocating Memory for Data
- Modifying the LRU Algorithm
- Pools Related to SHARED_POOL_SIZE and Allocating Memory for Statements
- Tuning PGA_AGGREGATE_TARGET and PGA_AGGREGATE_LIMIT
- Modifying the Size of Your SGA to Avoid Paging and Swapping
- Understanding the Oracle Optimizer
- How Optimization Looks at the Data
- Creating Enough Dispatchers
- Have Enough Open Cursors (OPEN_CURSORS)
- Don’t Let Your DDLStatements Fail (DDL_LOCK_TIMEOUT)
- Two Important Exadata Initialization Parameters (Exadata Only)
- Top 25 Initialization Parameters
- Initialization Parameters over the Years
- Finding Undocumented Initialization Parameters
- Understanding the Typical Server
- Modeling a Typical Server
- Sizing the Oracle Applications Database
- Oracle Enterprise Manager Basics and Accessing OEM via Oracle Cloud
- Starting with All Targets and Other Groupings
- Monitoring and Tuning Using the OEM Performance Menu
- Performance Tab: Top Activity
- Performance Tab: SQL| SQLPerformance Analyzer
- Performance Tab: Real-Time ADDM
- Performance Tab: SQL| Access Advisor
- Performance Tab: Manage Optimizer Statistics
- Performance Tab: AWR | AWR Administration
- Performance Tab: ASH Analytics
- Monitoring and Tuning Using the OEM Administration Menu
- Database Administration Tab: Storage|Tablespaces
- Database Administration Tab: In-Memory Central and Initialization Parameters
- Database Administration Tab: All Initialization Parameters
- Database Administration Tab: Resource Manager (Consumer Groups)
- Monitoring and Tuning Using the OEM Database or Cluster Database Menu
- Database Tab: Job Activity
- Cluster Database Tab: Configuration|Database Topology
- Monitoring the Hosts
- Monitoring the Application Servers and Web Applications
- Real Application Testing (Database Replay)
- Summary
- The Oracle SQLTRACE Utility
- Simple Steps for SQLTRACE with a Simple Query
- The Sections of a TRACE Output
- Digging into the TKPROF Output
- Using DBMS_MONITOR
- Setting Trace Based on Session ID and Serial Number
- Setting Trace Based on Client Identifier
- Setting Trace for the Service Name/Module Name/Action Name
- Enabled Tracing Views
- TRCSESS Multiple Trace Files into One File
- Using EXPLAIN PLAN Alone
- An Additional EXPLAIN Example for a Simple Query
- EXPLAIN PLAN—Read It Top to Bottom or Bottom to Top?
- Tracing/Explaining Problem Queries in Developer Products
- Important Columns in the PLAN_TABLE Table
- Using DBMS_XPLAN
- Initialization Parameters for Undocumented TRACE
- Using Stored Outlines
- Dropping Stored Outlines
- Using SQLPlan Management (SPM) and SPM Example
- SPM Terms
- Using SPM
- Using Fixed SQLPlan Baselines
- Dropping a Plan
- Converting from Stored Outlines to SQLPlan Management
- Adaptive Plans (12c New Feature) and SPM
- Top Hints Used
- Use Hints Sparingly
- Fix the Design First
- Available Hints and Groupings
- Execution Path
- Access Methods
- Query Transformation Hints
- Join Operations
- Parallel Execution
- Other Hints
- Specifying a Hint
- Specifying Multiple Hints
- When Using an Alias, Hint the Alias, Not the Table
- The Hints
- The Oracle Demo Sample HR Schema
- The FIRST_ROWS Hint
- The ALL_ROWS Hint
- The FULLHint
- The INDEX Hint
- The NO_INDEX Hint
- The INDEX_JOIN Hint
- The INDEX_COMBINE Hint
- The INDEX_ASC Hint
- The INDEX_DESC Hint
- The INDEX_FFS Hint
- The ORDERED Hint
- The LEADING Hint
- The NO_EXPAND Hint
- The DRIVING_SITE Hint
- The USE_MERGE Hint
- The USE_NLHint
- The USE_HASH Hint
- The QB_NAME Hint
- The PUSH_SUBQ Hint
- The PARALLELHint
- The NO_PARALLELHint
- The PARALLEL_INDEX Hint
- The APPEND Hint
- The NOAPPEND Hint
- The CACHE Hint
- The NOCACHE Hint
- The RESULT_CACHE Hint
- The CURSOR_SHARING_EXACT Hint
- The INMEMORY and NO_INMEMORY and Other IM Hints
- The USE_INVISIBLE_INDEXES Hint
- The CONTAINERS Hint
- The WITH_PLSQLHint
- Some Miscellaneous Hints and Notes
- Undocumented Hints
- Using Hints with Views
- Notes on Hints and Stored Outlines (or SQLPlan Baselines)
- Why Isn’t My Hint Working?
- Hints at a Glance
- Which Queries Do I Tune? Querying V$SQLAREA and V$SQLViews
- Selecting from the V$SQLAREA View to Find the Worst Queries
- Selecting from the V$SQLView to Find the Worst Queries
- Oracle 12c Views for Locating Resource-Intensive Sessions and Queries
- Selecting from V$SESSMETRIC to Find Current Resource-Intensive Sessions
- Viewing Available AWR Snapshots
- Selecting from the DBA_HIST_SQLSTAT View to Find the Worst Queries
- When Should I Use an Index?
- Selecting Query Text from the DBA_HIST_SQLTEXT View
- Selecting Query EXPLAIN PLAN from the DBA_HIST_SQL_PLAN View
- What If I Forget the Index?
- Creating an Index
- Invisible Index
- Checking the Index on a Table
- Is the Column Properly Indexed?
- What If I Create a Bad Index?
- Exercising Caution When Dropping an Index
- Indexing the Columns Used in the SELECT and WHERE
- Using the Fast Full Scan
- Making the Query “Magically” Faster
- Caching a Table in Memory
- Using the Result Cache
- Choosing Among Multiple Indexes (Use the Most Selective)
- The Index Merge
- Indexes That Can Get Suppressed
- Virtual Columns
- The “Curious” OR
- Using the EXISTS Function and the Nested Subquery
- That Table Is Actually a View!
- SQLand Grand Unified Theory
- Tuning Changes in Oracle Database 12c
- Oracle 12c Adaptive Query Optimization
- Adaptive Statistics
- Oracle 12c Changes in Statistics Gathering and Two New Histograms
- Oracle 12c Changes in SQLPlan Management
- Oracle Automatic SQLTuning
- Ensuring the Tuning User Has Access to the APIs
- Creating the Tuning Task
- Making Sure the Task Can Be Seen in the Advisor Log
- Executing the SQLTuning Task
- Checking Status of the Tuning Task
- Displaying the SQLTuning Advisor Report
- Reviewing the Report Output
- Tuning SQLStatements Automatically Using SQLTuning Advisor
- Enabling Automatic SQLTuning Advisor
- Configuring Automatic SQLTuning Advisor
- Viewing Automatic SQLTuning Results
- Using SQLPerformance Analyzer (SPA)
- Database Replay (capture/replay)
- Set Up Source Database for Database Replay Capture
- Prepare to Capture Workload
- Capture the Workload
- Prepare the Workload for Replay
- Process the Workload for Replay
- Prepare to Replay the Workload
- Execute the Workload Replay
- SQLPerformance Analyzer
- Create a SQLTuning Set
- Create an Analysis Task
- Execute Analysis Task
- Query SQLPerformance Analyzer Advisor Tasks
- Cancel an Executing SQLPerformance Analyzer Analysis Task
- Remove SQLPerformance Analyzer Analysis Task
- Determine Active SQLTuning Sets
- Remove SQLTuning Set
- Drop SQLTuning Set
- Join Methods
- NESTED LOOPS Joins
- SORT-MERGE Joins
- CLUSTER Joins
- HASH Joins
- INDEX-MERGE Joins
- Table Join Initialization Parameters
- SORT-MERGE and HASH Join Parameters
- A Two-Table Join: Equal-Sized Tables (Cost-Based)
- A Two-Table INDEXED Join: Equal-Sized Tables (Cost-Based)
- Forcing a Specific Join Method
- Eliminating Join Records (Candidate Rows) in Multitable Joins
- A Two-Table Join Between a Large and Small Table
- Three-Table Joins: Not as Much Fun
- Bitmap Join Index
- Best Uses for the Bitmap Join Index
- Third-Party Product Tuning
- Example 1
- Example 2
- Example 3
- Tuning Distributed Queries
- When You Have Everything Tuned
- Miscellaneous Tuning Snippets
- External Tables
- Snapshot Too Old: Developer Coding Issue
- Set Event to Dump Every Wait
- 14 Hours to 30 Seconds with the EXISTS Operator
- Tuning at the Block Level (Advanced)
- Key Sections of a Block Dump
- A Brief Look at an Index Block Dump
- Tuning Using Simple Mathematical Techniques
- Traditional Mathematical Analysis
- Seven-Step Methodology
- Deriving Performance Equations
- Pattern Interpretation
- Mathematical Techniques Conclusions
- Leverage the PL/SQLFunction Result Cache to Improve Performance (Improved in 12c)
- Define PL/SQLSubprograms in a SQLStatement (New in 12c)
- Reference Sequences Directly in PL/SQLExpressions
- Identity Columns (New in 12c)
- Max Size Increase to 32K for VARCHAR2, NVARCHAR2, and RAW Data Types (New in 12c)
- Allow Binding PL/SQL-Only Data Types to SQLStatements (New in 12c)
- Use Named Parameters in SQLFunction Calls
- Simplify Loops with the CONTINUE Statement
- Leverage Compile-Time Warnings to Catch Programming Mistakes (Improved in 12c)
- Increase Performance with Native Compilation
- Maximize Performance with the Optimizing Compiler
- Use DBMS_APPLICATION_INFO for Real-Time Monitoring
- Log Timing Information in a Database Table
- Reduce PL/SQLProgram Unit Iterations and Iteration Time
- Use ROWID for Iterative Processing
- Standardize on Data Types, IF Statement Order, and PLS_INTEGER
- Ensure the Same Data Types in Comparison Operations
- Order IF Conditions Based on the Frequency of the Condition
- Use the PLS_INTEGER PL/SQLData Type for Integer Operations
- Reduce the Calls to SYSDATE
- Reduce the Use of the MOD Function
- Improve Shared Pool Use by Pinning PL/SQLObjects
- Pinning (Caching) PL/SQLObject Statements into Memory
- Pinning All Packages
- Identify PL/SQLObjects That Need to Be Pinned
- Use and Modify DBMS_SHARED_POOL.SIZES
- Find Large Objects
- Get Detailed Object Information from DBA_OBJECT_SIZE
- Get Contiguous Space Currently in the Shared Pool
- Find Invalid Objects
- Find Disabled Triggers
- Use PL/SQLAssociative Arrays for Fast Reference Table Lookups
- Find and Tune the SQLWhen Objects Are Used
- Consider Time Component When Working with DATE Data Types
- Use PL/SQLto Tune PL/SQL
- Understand the Implications of PL/SQLObject Location
- Use Rollback Segments to Open Large Cursors
- Active Transaction Management: Process Large Quantities of Data
- Use Temporary Database Tables for Increased Performance
- Limit the Use of Dynamic SQL
- Use Pipelined Table Functions to Build Complex Result Sets
- Leave Those Debugging Commands Alone!
- The “Look and Feel”: Just for the Beginners
- PL/SQLExample
- Create a Procedure Example
- Execute the Procedure from PL/SQLExample
- Create a Function Example
- Execute the GET_CUST_NAME Function from SQLExample
- Create a Package Example
- Database Trigger Example Using PL/SQL
- The March to the Cloud (Past and Present)
- The Oracle Cloud
- Exadata Database Machine
- Exadata Terminology and the Basics
- Exadata Statistics
- Exadata Storage Expansion Rack Briefly
- Smart Scans
- Flash Cache
- Storage Indexes
- Hybrid Columnar Compression
- I/O Resource Management
- Use All Oracle Security Advantages with Exadata
- Best Practices
- Summary: Exadata = Paradigm Shift!
- Oracle Database Appliance (ODA)
- SuperCluster Using the M7 SPARC Chip
- Other Oracle Hardware to Consider
- Oracle Big Data Appliance X6-2
- ZFS Storage Servers
- StorageTek Modular Library System
- Parallel Databases
- Real Application Clusters (RAC)
- Oracle RAC Architecture
- Internal Workings of the Oracle RAC System
- RAC Performance Tuning Overview
- RAC Cluster Interconnect Performance
- Finding RAC Wait Events—Sessions Waiting
- RAC Wait Events and Interconnect Statistics
- Cluster Interconnect Tuning—Hardware Tier
- Basic Concepts of Parallel Operations
- Parallel DMLand DDLStatements and Operations
- Managing Parallel Server Resources and Parallel Statement Queuing
- Parallelism and Partitions
- Inter- and Intra-operation Parallelization
- Examples of Using Inter- and Intra-operations (PARALLELand NO_PARALLELHints)
- Creating Table and Index Examples Using Parallel Operations
- Monitoring Parallel Operations via the V$ Views
- Using EXPLAIN PLAN and AUTOTRACE on Parallel Operations
- Using the SET AUTOTRACE ON/OFF Command
- Tuning Parallel Execution and the Initialization Parameters
- Parallel Loading
- Optimizing Parallel Operations in RAC
- Objectives of Parallel Operations
- RAC Parallel Usage Models
- Parallel Initialization Parameters
- V$ Views for Viewing Parallel Statistics
- Create Table As
- Parallel Index Builds
- Performance Considerations and Summary
- Other Parallel Notes
- Oracle Documentation Is Online
- Creating and Granting Access to V$ Views
- Obtaining a Count and Listing of All V$ Views
- Getting a Listing for the X$ Scripts That Make Up the V$ Views
- Examining the Underlying Objects That Make Up the DBA_ Views
- Using Helpful V$ Scripts
- Basic Database Information
- Basic Automatic Workload Repository (AWR) Information
- Basic Licensing Information
- Database Options Installed in Your Database
- Summary of Memory Allocated (V$SGA)
- Querying V$IM_SEGMENTS After Setting the INMEMORY_SIZE
- Automatic Memory Management and MEMORY_TARGET
- Detailed Memory Allocated (V$SGASTAT)
- Detailed Memory Allocated (V$SGASTAT) for a PDB vs. Root CDB
- Finding spfile.ora/init.ora Settings in V$PARAMETER
- Modifying an Initialization Parameter at PDB Level
- Determining If Data Is in Memory (V$SYSSTAT & V$SYSMETRIC)
- Determining Memory for the Data Dictionary (V$ROWCACHE)
- Determining Memory for the Shared SQLand PL/SQL(V$LIBRARYCACHE)
- Querying V$CONTAINERS and V$PDBS for Container Information
- Querying V$CONTAINERS When Using Pluggable Databases
- Querying V$PDBS for Pluggable Database Information
- Identifying PL/SQLObjects That Need to Be Kept (Pinned)
- Finding Problem Queries by Monitoring V$SESSION_LONGOPS
- Finding Problem Queries by Querying V$SQLAREA
- Finding Out What Users Are Doing and Which Resources They Are Using
- Finding Out Which Objects a User Is Accessing
- Getting Detailed User Information
- Using Indexes
- Identifying Locking Issues
- Killing the Problem Session
- Finding Users with Multiple Sessions
- Querying for Current Profiles
- Finding Disk I/O Issues
- Checking for Privileges and Roles
- Wait Events V$ Views
- Some of the Major V$ View Categories
- Introducing the X$ Tables
- Misconceptions About the X$ Tables
- Granting Access to View the X$ Tables
- Creating V$ Views and X$ Tables in 12c
- The X$ Tables Comprising the V$ Views
- Obtaining a List of All the X$ Tables in 12c
- Obtaining a List of All the X$ Indexes in 12c
- Using Hints with X$ Tables and Indexes
- Monitoring Space Allocations in the Shared Pool
- Creating Queries to Monitor the Shared Pool
- ORA-04031 Errors
- Large Allocations Causing Contention
- Shared Pool Fragmentation
- Low Free Memory in Shared and Java Pools
- Library Cache Memory Use
- High Number of Hard Parses
- Mutex/Latch Waits and/or Sleeps
- Miscellaneous X$ Table Notes
- Obtaining Information About Redo Log Files
- Setting Initialization Parameters
- Case 1
- Case 2
- Case 3
- Case 4
- Case 5
- Exploring Buffer Cache/Data Block Details
- Buffer Statuses
- Segments Occupying Block Buffers
- Hot Data Blocks and the Causes of Latch Contention and Wait Events
- Obtaining Database- and Instance-Specific Information
- Effective X$ Table Use and Strategy
- Oracle Internals Topics
- Traces
- DBMS_TRACE Package
- Events
- Dumps
- ORADEBUG
- trcsess Utility
- Reading the Trace File
- Wait Information and Response Time
- Recursive Calls
- Module Info
- Commit
- Unmap
- Bind Variables
- Errors
- Some Common X$ Table Groups
- Some Common X$ Table and Non-V$ Fixed View Associations
- Common X$ Table Joins
- X$ Table Naming Conventions (My Favorite Section of This Book!)
- X$ Table Naming Conventions with CON_ID, and INMEMORY
- Future Version Impact in 12cR2
- What’s New in 12cR2 (12.2) Statspack and the AWR Report
- Installing Statspack
- Security of the PERFSTAT Account
- Post-Installation
- Gathering Statistics
- Running the Statistics Report
- The Automatic Workload Repository (AWR) and the AWR Report
- Manually Managing the AWR
- AWR Automated Snapshots
- AWR Snapshot Reports
- Run the AWR Report in Oracle Enterprise Manager Cloud Control
- Interpreting the Statspack and AWR Report Output
- The Header Information and Cache Sizes
- The Load Profile
- Instance Efficiency
- Shared Pool Statistics
- Top Wait Events
- Oracle Bugs
- The Life of an Oracle Shadow Process
- Top SQLStatements
- Instance Activity Statistics
- Tablespace and File I/O Statistics
- Segment Statistics
- Additional Memory Statistics
- UNDO Statistics
- Latch and Mutex Statistics
- Tuning and Viewing at the Block Level (Advanced)
- Dictionary and Library Cache Statistics
- SGA Memory Statistics
- Nondefault Initialization Parameters
- Top 15 Things to Look for in AWR Report and Statspack Output
- Managing the Statspack Data
- Upgrading Statspack
- Deinstalling Statspack
- Quick Notes on the New ADDM Report
- Scripts in 12cR2
- Total Performance Index (TPI)
- Education Performance Index (EPI)
- System Performance Index (SPI)
- Memory Performance Index (MPI)
- Top 25 “Memory Abuser” Statements Tuned
- Top 10 “Memory Abusers” as a Percent of All Statements
- Buffer Cache Hit Ratio
- Dictionary Cache Hit Ratio
- Library Cache Hit Ratio
- PGA Memory Sort Ratio
- Percentage of Data Buffers Still Free
- Using the Result Cache Effectively
- Pinning/Caching Objects
- Disk Performance Index (DPI)
- Top 25 “Disk-Read Abuser” Statements Tuned
- Top 10 Disk-Read Abusers as Percentage of All Statements
- Tables/Indexes Separated or Using ASM
- Mission-Critical Table Management
- Key Oracle Files Separated
- Automatic Undo Management
- Using Pluggable Databases Effectively
- Overall System Review Example
- Rating System
- Example System Review Rating Categories
- Items Requiring Immediate Action
- Other Items Requiring Action
- System Information List
- Memory-Related Values
- Disk-Related Values
- CPU-Related Values
- Backup- and Recovery-Related Information
- Naming Conventions and/or Standards and Security Information Questions
- DBA Knowledge Rating
- Other Items to Consider in Your TPI and System Review
- Unix/Linux Utilities
- Using the sar Command to Monitor CPU Usage
- sar –u (Check for CPU Bogged Down)
- The sar –d Command (Find I/O Problems)
- The sar –b Command (Check the Buffer Cache)
- The sar –q Command (Check the Run Queue and Swap Queue Lengths)
- Using the sar and vmstat Commands to Monitor Paging/Swapping
- Using sar –p to Report Paging Activities
- Using sar –w to Report Swapping and Switching Activities
- Using sar –r to Report Free Memory and Free Swap
- Using sar –g to Report Paging Activities
- Using sar –wpgr to Report on Memory Resources
- Finding the Worst User on the System Using the top Command
- Monitoring Tools
- Using the uptime Command to Monitor CPU Load
- Using the mpstat Command to Identify CPU Bottlenecks
- Combining ps with Selected V$ Views
- CPU/Memory Monitoring Tool (Task Manager) on Windows
- Using the iostat Command to Identify Disk I/O Bottlenecks
- Using iostat –d for Disk Drives sd15, sd16, sd17, and sd18
- Using iostat –D
- Using iostat –x
- Combining iostat –x with Logic in a Shell Script
- Using the ipcs Command to Determine Shared Memory
- Using the vmstat Command to Monitor System Load
- Monitoring Disk Free Space
- The df Command
- The du Command
- Monitoring Network Performance with netstat
- Modifying the Configuration Information File
- Other Factors That Affect Performance
- Other Sources to Improve Performance
- Obsoleted/Desupported Initialization Parameters
- Deprecated Initialization Parameters
- Top 20 Initialization Parameters Not to Forget
- Top 13 Undocumented Initialization Parameters (As I See It)
- Bonus 11 Undocumented Initialization Parameters
- Listing of Documented Initialization Parameters (V$PARAMETER)
- Listing of Undocumented Initialization Parameters (X$KSPPI/X$KSPPCV)
- Additional Oracle Applications Notes
- Concurrent Managers
- Applications—Finding Module-Specific Patches
- Diagnostics Data Collection: EBS Analyzers
- Web Server Tuning
- Timeouts
- Database Initialization Parameter Sizing
- Top 10 Reasons Not to Write a Book
- Creation of V$ and GV$ Views and X$ Tables
- A List of Oracle 12c (12.2.0.0.1) GV$ Views
- A List of Oracle 12c (12.2.0.0.1) V$ Views
- Oracle 12c Scripts for the X$ Tables Used to Create the V$ Views
- Oracle 12cR2 X$ Tables Ordered by Name
- Oracle 12cR2 X$ Indexes
- Oracle 12cR2 V$ Views Cross-Referenced to the X$ Tables
BOOK
SUMMARY
Items Found: 337
- PART I
- Essential Database Security
- 1 Security for Today’s World 3
- The Security Landscape 4
- Base Assumptions 4
- Database Security Today 5
- Evolving Security Technologies 6
- Security Motivators 8
- Sensitive Data Categorization 9
- Principles 10
- Summary 11
- 2 Essential Elements of User Security 13
- Understanding Identification and Authentication 14
- Identification Methods 15
- Authentication 17
- Understanding Database Account Types 18
- Database Account Types in Oracle Database 12c
- Multitenant Architecture 21
- Privileged Database Account Management in Oracle Database 12c 22
- Administrative Privileges for Separation of Duty 22
- Methods for Privileged Database Account Management 24
- Account Management in Multitenant Oracle Database 12c 33
- Creating Common Database Accounts 34
- Managing Accounts in a Pluggable Database 34
- Managing Database Account Passwords and Profiles 39
- Managing Passwords for Local Database Accounts 40
- Managing Database Account Profiles 42
- Summary 51
- 3 Connection Pools and Enterprise Users 53
- External Identification and Authentication Challenges 54
- Connection Challenges 54
- Performance 55
- Connection Pools 55
- Security Risks 56
- External Identification and Authentication in Oracle Database 12c 56
- Oracle Proxy Authentication 57
- Oracle Enterprise User Security 63
- Oracle Kerberos Authentication 90
- Oracle RADIUS Authentication 91
- Summary 91
- 4 Foundational Elements for a Secure Database 93
- Access Control, Authorization, and Privilege 94
- Access Control 94
- Authorization 94
- Privilege 94
- Object Privileges 99
- Column Privileges 100
- Synonyms 102
- System and Object Privileges Together 105
- Privilege Conveyance and Retraction 106
- Roles 109
- Role and Privilege Immediacy 111
- Roles and Container Databases 112
- Public and Default Database Roles 113
- Role Hierarchies 115
- Object Privileges Through Roles and PL/SQL 115
- Selective Privilege Enablement 117
- Selective Privilege Use Cases 120
- Password-Protected Roles 122
- Password-Protected Role Example 123
- Password-Protected Roles and Proxy Authentication 124
- Challenges to Securing the Password 124
- Secure Application Roles 125
- Secure Application Role Example 126
- Global Roles and Enterprise Roles 130
- Creating and Assigning Global and Enterprise Roles 131
- Combining Standard and Global Roles 134
- Using Roles Wisely 135
- Too Many Roles 135
- Naming 135
- Dependencies 135
- Summary 136
- 5 Foundational Elements of Database Application Security 137
- Application Context 138
- Default Application Context (USERENV) 140
- Auditing with USERENV 141
- Database Session-Based Application Context 143
- Creating a Database Session-Based Application Context 144
- Setting Context Attributes and Values 145
- Applying the Application Context to Security 149
- Secure Use 153
- Common Mistakes 153
- Global Application Context 156
- GAC Uses 156
- GAC Example 156
- Global Context Memory Usage 161
- External and Initialized Globally 161
- Using Views in Security 163
- Views for Column- and Cell-Level Security 164
- Views for Row-Level Security 171
- Definer’s vs. Invoker’s Privileges/Rights for PL/SQL 175
- Definer’s Rights Invocation on PL/SQL Programs 175
- Invoker’s Rights Invocation for PL/SQL 177
- Definer’s vs. Invoker’s Privileges/Rights on Java Stored Procedures 180
- Java Stored Procedure and Definer’s Rights 180
- Java Stored Procedure and Invoker’s Rights 182
- Code-Based Security 183
- Granting Roles and Privileges to PL/SQL 183
- Entitlement Analytics 184
- Profile Application Use 185
- Privilege Reduction 187
- Oracle Enterprise Manager Cloud Control (OEMCC) 12c 188
- Sharing Application Code 191
- Managing Common Application Code with Pluggable Databases 192
- Managing Common Application Code with Database Links 192
- Summary 193
- 6 Real Application Security 195
- Account Management in Oracle RAS 197
- Configuring DLAU Accounts 197
- Configuring Simple Application User Accounts 201
- Oracle RAS Roles 202
- Integration of Standard Database Roles with Oracle RAS Roles 202
- Role Management Procedures in Package XS_PRINCIPAL 204
- Out-of-the-Box Roles in Oracle RAS 205
- Lightweight Sessions in Oracle RAS 206
- Setting Privileges for Direct Login Application User Accounts 207
- Lightweight Session Management in Java 208
- Namespaces in Oracle RAS 212
- Server-Side Event Handling and Namespaces in Oracle RAS 217
- Session Performance in Oracle RAS 223
- Privilege Management and Data Security in Oracle RAS 224
- Security Classes, Application Privileges, and ACLs 226
- Data Security Policies 229
- Protecting Namespaces with ACLs 234
- Auditing in Oracle RAS 236
- Default Audit Policies for Oracle RAS 236
- Reporting on Audit Events and Audit Policies in RAS 237
- Validating Policies and Tracing in Oracle RAS 237
- Validating Policy Components 237
- Tracing Sessions and Data Security Policies 238
- Summary 240
- PART II
- Advanced Database Security
- 7 Controlled Data Access with Virtual Private Database 243
- Introduction to Virtual Private Database 244
- How VPD Works 244
- Benefits 245
- VPD Components 246
- Types of Control 246
- How to Use VPD 247
- Which Type of VPD Is Right for Me? 247
- Row-Level Security 248
- Table Fire with Row Filter 248
- Column Fire with Row Filter 255
- VPD and INSERT Statements 258
- VPD and INDEX Statements 260
- Column-Level Security 260
- Column Fire with Column Filter 260
- VPD Exemptions 263
- Audit EXEMPT ACCESS POLICY Privilege 263
- Verify EXEMPT ACCESS POLICY Privilege 264
- Verify Audit Trail 265
- Debugging and Troubleshooting VPD Policies 265
- Invalid Policy Functions 265
- Verifying and Validating Predicates 269
- VPD Performance 273
- Application Context and Logon Trigger 273
- Bind Variables 275
- VPD Caching 275
- Summary 286
- 8 Essential Elements of Sensitive Data Control 287
- Sensitive Data Protection Challenges 288
- Oracle Database 12c Transparent Sensitive Data Protection 289
- Discover Sensitive Information with Enterprise Manager 290
- Configuring a TSDP Administrator 296
- Defining Sensitive Information Types 296
- Mapping Sensitive Information Types to Columns 297
- Creating Sensitive Information Policies 297
- Mapping Sensitive Information Policies to Sensitive Types 299
- Enabling Sensitive Information Redaction 299
- Redacting Sensitive Information in the Database Audit Trail 301
- Summary 302
- 9 Access Controls with Oracle Label Security 305
- About Oracle Label Security 306
- History 306
- OLS Functional Overview 306
- OLS vs. VPD 306
- Label-Based Access Control 307
- OLS Label Types 310
- OLS Installation 311
- Installing OLS 311
- Register and Enable OLS in the Root Container 314
- Register and Enable OLS in a Pluggable Database 315
- Administering OLS 316
- OLS Role LBAC_DBA 316
- OLS Example 318
- Create a Policy 318
- Create Label Components 319
- Create OLS Labels 325
- Apply OLS Policy to a Table 332
- Authorize OLS Access 334
- Insert Data Using OLS Functions 336
- Querying Data from an OLS Protected Table 339
- OLS and the Connection Pool 340
- x Oracle Database 12c Security
- Auditing OLS Privileges and Use 341
- Trusted Stored Procedures 343
- Integrating OLS and Oracle Internet Directory 344
- Performance with OLS 344
- Summary 344
- 10 Oracle Database Vault: Securing for the Compliance Regulations,
- Cybersecurity, and Insider Threats 345
- History of Privileged Accounts 346
- SYS as SYSDBA (Super User 0) 347
- Security Should Haves 347
- Multifactored Security 347
- Conditional Security 348
- DBV Components 348
- Factors 349
- Rules 350
- Realms 351
- Command Rules 351
- DBV Secure Application Roles 352
- Configuring and Enabling DBV 352
- DBV Administration Using Common Accounts 352
- DBV Administration Using Delegated Accounts 354
- Manually Configuring DBV in a PDB 355
- Managing DBV Configuration 357
- DBV Administration PL/SQL Package and Configuration Views 357
- DBV Security Policies in Action 360
- Installed DBV Roles 360
- SoD with Roles, Realms, and Command Rules 362
- Default Audit Policies 367
- General Database Maintenance and Operations Authorizations 368
- Creating Custom DBV Policies 368
- Summary 387
- 11 Oracle Transparent Data Encryption: Securing for the
- Compliance Regulations, Cybersecurity, and Insider Threats 389
- Encryption 101 390
- Goal of Encryption 390
- The Basics 391
- Encryption Choices 391
- The Algorithm and the Key 392
- Encrypting Data Stored in the Database 394
- Where the Data “Rests” 395
- Protecting the Data 396
- Applied Example 398
- Encrypting in the Database 398
- The Transparent Data Encryption Solution 399
- Key Management Facilities 400
- Key Management Roles 401
- Creating Keystores and a Master Key in the Root Container 402
- Creating Master Keys in Pluggable Databases 406
- Creating an Encrypted Column in a New Table 407
- Determining TDE Encrypted Columns 411
- Encrypting an Existing Column 412
- Caveats to Column-Level TDE 413
- Tablespace Encryption 414
- TDE and Oracle Database Tools Interoperability 415
- Performance 416
- Advanced Encryption Protection Support 418
- Configuring FIPS 140-2 Support 418
- Summary 419
- PART III
- Security and Auditing for the Cloud
- 12 Audit for Accountability 423
- The Security Cycle 424
- Auditing for Accountability 425
- Auditing Provides the Feedback Loop 425
- Auditing Is Not Overhead 425
- Audit Methods 425
- Infrastructure and Application Server Logs 425
- Application Auditing 426
- Trigger Auditing 427
- Database Auditing 428
- Enabling Auditing in the Database 429
- Audit Destination for Standard Auditing and FGA 429
- Enable Oracle Unified Auditing in Oracle Database 12c 430
- Who Conducts the Audit Policy and Audit Reporting? 432
- Audit Administrator Role 432
- Audit Reporting Role 433
- What Should be Audited? Creating the Audit Policy 434
- Best Practices for Audit Polices 435
- OUA Audit Policy Configuration 437
- Traditional Audit Policy Configuration 448
- Fine-Grained Auditing 453
- Enabling FGA 453
- Acting on the Audit 454
- Audit Storage, Audit Retention, and Reporting 455
- Oracle Audit Vault 455
- Audit Trail Retention Under OUA 456
- Audit Trail Retention Under Traditional Auditing 458
- Reporting on Database History 459
- Summary 460
- 13 An Applied Approach to Multitenancy and Cloud Security 461
- System Baseline and Configuration 462
- Facility and Infrastructure Security 462
- Personnel Security 464
- Configuration Management 465
- Equipment 465
- Secure Virtualization 466
- Operating System 467
- Jobs, Users, Groups/Roles, and Privileges 468
- Oracle Database 12c Multitenancy and Cloud Computing 471
- Cloud Computing 472
- Oracle 12c Software Installation 472
- Security-Related Installation Prerequisites and Installation Options 472
- Choosing the Number of Oracle Homes 473
- Securing the Oracle Home 473
- Are You Still Secure? 474
- Securing the Listener 474
- Managing Passwords 474
- Secure Database Initialization Parameters 475
- Installing and Securing Your Application 475
- Sensitive Data Discovery 475
- Account Management 476
- Privilege Management 477
- Least Privilege 477
- Data Access Controls 478
- Protecting Your Company Intellectual Property 478
- Database Firewall 479
- Data Encryption 480
- Network Data Encryption and Integrity 480
- Encryption of Data at Rest 481
- Encryption of Backup Data 482
- Auditing 484
- Oracle Auditing 484
- Oracle Audit Vault 485
- Audit Life Cycle Management 485
- Locking Down Your System 488
- Standards for Lockdown 488
- Secure Patching 490
- Monitoring and Alerting 492
- Monitoring Audit Events 492
- System Monitoring Using OEMCC 492
- Availability, Backup and Recovery, and Continuity of Operations 494
- Availability 495
- Backup and Recovery 496
- Summary 496
- A Sample Preparation Scripts 499
- Sample Pluggable Databases 500
- SALES Pluggable Database 500
- Human Resources (HR) Pluggable Database 500
- Sample Security Manager Account Creation 501
- Root Container 501
- Pluggable Databases 503
- Index 505
BOOK
SUMMARY
Items Found: 490
- Preface 1
- Chapter 1: Basic Database Security 7
- Introduction 7
- Creating a password profile 8
- Getting ready 8
- How to do it… 8
- How it works… 9
- There's more… 9
- See also 10
- Creating password-authenticated users 10
- Getting ready 10
- How to do it… 11
- How it works… 11
- There's more… 12
- How to create a user using EM Express 12
- See also 16
- Changing a user's password 16
- Getting ready 17
- How to do it… 17
- How it works… 18
- There's more… 18
- See also 18
- Creating a user with the same credentials on another database 19
- Getting ready 19
- How to do it… 19
- How it works… 20
- There's more… 20
- See also 21
- Locking a user account 21
- Getting ready 21
- How to do it… 22
- How it works… 22
- See also 23
- Expiring a user's password 23
- Getting ready 24
- How to do it… 24
- How it works… 24
- See also 24
- Creating and using OS-authenticated users 25
- Getting ready 25
- How to do it… 25
- How it works… 26
- There's more… 26
- Creating and using proxy users 27
- Getting ready 27
- How to do it… 27
- How it works… 28
- There's more… 29
- Creating and using database roles 30
- Getting ready 30
- How to do it… 30
- How it works… 31
- There's more… 32
- See also 33
- The sysbackup privilege – how, when, and why span /should
- /spanspanyou/span use it? 33
- Getting ready 33
- How to do it… 33
- Database authentication 33
- OS authentication 35
- How it works… 35
- There's more… 38
- See also 38
- The syskm privilege – how, when, and why span /should
- /spanspanyou/span use it? 38
- Getting ready 39
- How to do it… 39
- Database authentication 39
- OS authentication 40
- How it works… 40
- There's more… 41
- See also 41
- The sysdg privilege – how, when, and why span /should
- /spanspanyou/span use it? 41
- Getting ready 41
- How to do it… 42
- Database authentication 42
- OS authentication 42
- How it works… 43
- There's more… 44
- See also 44
- Chapter 2: Security Considerations in Multitenant Environment 45
- Introduction 45
- Creating a common user 47
- Getting ready 48
- How to do it… 48
- How it works… 48
- Rules/guidelines for creating and managing common users 49
- There's more… 49
- How to create a common user using OEM 12c 49
- Creating a local user 52
- Getting ready 52
- How to do it… 52
- How it works… 52
- Rules/guidelines for creating and managing local users 53
- There's more… 53
- How to create a local user using OEM 12c 53
- Creating a common role 54
- Getting ready 55
- How to do it… 55
- How it works… 55
- There's more… 56
- How to create a common role using OEM 12c 57
- Creating a local role 58
- Getting ready 58
- How to do it… 59
- How it works… 59
- There's more… 60
- How to create a local role using OEM 12c 60
- Granting privileges and roles commonly 60
- Getting ready 60
- How to do it… 61
- How it works… 62
- Granting privileges and roles locally 65
- Getting ready 66
- How to do it… 66
- How it works… 67
- Effects of plugging/unplugging operations on users, roles, and
- privileges 67
- Getting ready 68
- How to do it… 68
- How it works… 69
- Chapter 3: PL/SQL Security 71
- Introduction 71
- Creating and using definer's rights procedures 72
- Getting ready 72
- How to do it… 72
- How it works… 74
- Creating and using invoker's right procedures 74
- Getting ready 74
- How to do it… 75
- How it works… 76
- There's more… 77
- Using span /code-based access control/span 82
- Getting ready 82
- How to do it… 82
- How it works… 84
- There's more… 84
- Restricting access to program units by using span /accessible by/span 86
- Getting ready 86
- How to do it… 86
- How it works… 88
- Chapter 4: Virtual Private Database 89
- Introduction 89
- Creating different policy functions 92
- Getting ready 92
- How to do it… 93
- How it works… 97
- There's more… 98
- See also 99
- Creating Oracle Virtual Private Database row-level policies 99
- Getting ready 99
- How to do it… 100
- There's more… 102
- See also 102
- Creating column-level policies 103
- Getting ready 103
- How to do it… 103
- How it works… 106
- Creating a driving context 106
- Getting ready 106
- How to do it… 107
- Creating policy groups 107
- Getting ready 107
- How to do it… 108
- Setting context as a driving context 108
- Getting ready 108
- How to do it… 109
- Adding policy to a group 109
- Getting ready 109
- How to do it… 110
- Exempting users from VPD policies 114
- Getting ready 114
- How to do it… 115
- Chapter 5: Data Redaction 116
- Introduction 116
- Creating a redaction policy when using full redaction 119
- Getting ready 119
- How to do it… 119
- How it works… 122
- There's more… 124
- How to change the default value 125
- See also 127
- Creating a redaction policy when using partial redaction 128
- How to do it… 128
- How it works… 131
- There's more… 133
- Creating a redaction policy when using random redaction 133
- Getting ready 133
- How to do it… 134
- How it works… 136
- Creating a redaction policy when using regular expression redaction 137
- Getting ready 137
- How to do it… 137
- How it works… 140
- Using Oracle Enterprise Manager Cloud Control 12c to manage
- redaction policies 140
- Getting ready 140
- How to do it… 140
- Changing the function parameters for a specified column 150
- Getting ready 151
- How to do it… 151
- Add a column to the redaction policy 152
- Getting ready 152
- How to do it… 153
- How it works… 154
- See also 154
- Enabling, disabling, and dropping redaction policy 154
- Getting ready 154
- How to do it… 155
- See also 160
- Exempting users from data redaction policies 161
- Getting ready 161
- How to do it… 161
- How it works… 162
- Chapter 6: Transparent Sensitive Data Protection 163
- Introduction 163
- Creating a sensitive type 164
- Getting ready 165
- How to do it… 165
- How it works… 165
- There's more… 166
- Determining sensitive columns 166
- Getting ready 166
- How to do it… 167
- How it works… 168
- Creating transparent sensitive data protection policy 168
- Getting ready 169
- How to do it… 169
- How it works… 169
- See also 169
- Associating transparent sensitive data protection policy with sensitive
- type 170
- Getting ready 170
- How to do it… 170
- There's more… 171
- See also 171
- Enabling, disabling, and dropping policy 171
- Getting ready 171
- How to do it… 171
- How it works… 176
- There's more… 176
- Altering transparent sensitive data protection policy 177
- Getting ready 177
- How to do it… 177
- How it works… 179
- See also 180
- Chapter 7: Privilege Analysis 181
- Introduction 181
- Creating database analysis policy 183
- Getting ready 183
- How to do it… 183
- How it works… 184
- There's more… 184
- See also 186
- Creating role analysis policy 187
- Getting ready 187
- How to do it… 187
- There's more… 188
- See also 189
- Creating context analysis policy 189
- Getting ready 189
- How to do it… 190
- There's more… 190
- See also 193
- Creating combined analysis policy 193
- Getting ready 193
- How to do it… 194
- There's more… 194
- See also 196
- Starting and stopping privilege analysis 196
- Getting ready 196
- How to do it… 197
- How it works… 199
- There's more… 200
- Reporting on used system privileges 204
- Getting ready 205
- How to do it… 205
- There's more… 206
- Reporting on used object privileges 207
- Getting ready 207
- How to do it… 207
- There's more… 208
- Reporting on unused system privileges 209
- Getting ready 209
- How to do it… 209
- There's more… 210
- Reporting on unused object privileges 210
- Getting ready 210
- How to do it… 210
- There's more… 211
- How to revoke unused privileges 212
- How to do it… 212
- There's more… 215
- Dropping the analysis 216
- Getting ready 216
- How to do it… 216
- There's more… 217
- Chapter 8: Transparent Data Encryption 218
- Introduction 218
- Configuring keystore location in sqlnet.ora 221
- How to do it… 222
- Creating and opening the keystore 222
- Getting ready 223
- How to do it… 223
- How it works… 224
- There's more… 224
- Setting master encryption key in software keystore 225
- Getting ready 225
- How to do it… 225
- There's more… 226
- See also 226
- Column encryption – adding new encrypted column to table 227
- Getting ready 227
- How to do it… 227
- Column encryption – creating new table that has encrypted column(s) 228
- Getting ready 228
- How to do it… 228
- Using salt and MAC 230
- Getting ready 230
- How to do it… 230
- How it works… 231
- There's more… 231
- Column encryption – encrypting existing column 233
- Getting ready 233
- How to do it… 233
- There's more… 234
- Auto-login keystore 235
- Getting ready 235
- How to do it… 235
- How it works… 236
- Encrypting tablespace 236
- Getting ready 236
- How to do it… 236
- How it works… 237
- There's more… 238
- Rekeying 238
- Getting ready 238
- How to do it… 238
- How it works… 239
- Backup and Recovery 240
- How to do it… 240
- There's more… 241
- Chapter 9: Database Vault 242
- Introduction 242
- Registering Database Vault 243
- Getting ready 243
- How to do it… 244
- How it works… 245
- There's more… 245
- See also 246
- Preventing users from exercising system privileges on schema
- objects 246
- Getting ready 246
- How to do it… 247
- There's more… 254
- See also 256
- Securing roles 256
- Getting ready 256
- How to do it… 256
- There's more… 260
- See also 261
- Preventing users from executing specific command on specific object 262
- How to do it… 262
- How it works… 263
- Creating a rule set 264
- Getting ready 264
- How to do it… 264
- There's more… 267
- Creating a secure application role 268
- How to do it… 268
- There's more… 270
- See also 272
- Using Database Vault to implement that administrators cannot view
- data 272
- How to do it… 272
- There's more… 275
- Running Oracle Database Vault reports 277
- How to do it… 278
- Disabling Database Vault 280
- How to do it… 280
- Re-enabling Database Vault 281
- How to do it… 282
- Chapter 10: Unified Auditing 284
- Introduction 284
- Enabling Unified Auditing mode 286
- Getting ready 286
- How to do it… 286
- How it works… 287
- Predefined unified audit policies 288
- There's more… 289
- See also 289
- Configuring whether loss of audit data is acceptable 289
- Getting ready 290
- How to do it… 290
- How it works… 291
- Which roles do you need to have to be able to create audit policies
- and to view audit data? 291
- Getting ready 291
- How to do it… 291
- How it works… 292
- There's more… 293
- Auditing RMAN operations 295
- Getting ready 295
- How to do it… 295
- How it works… 297
- See also 297
- Auditing Data Pump operations 298
- Getting ready 298
- How to do it… 298
- See also 299
- Auditing Database Vault operations 299
- Getting ready 299
- How to do it… 299
- How it works… 300
- There's more… 300
- See also 300
- Creating audit policies to audit privileges, actions and roles under
- specified conditions 301
- Getting ready 301
- How to do it… 301
- How it works… 302
- See also 303
- Enabling audit policy 303
- Getting ready 303
- How to do it… 304
- How it works… 304
- Finding information about audit policies and audited data 305
- Getting ready 305
- How to do it… 305
- Auditing application contexts 307
- Getting ready 307
- How to do it… 307
- How it works… 308
- There's more… 308
- See also 309
- Purging audit trail 309
- Getting ready 309
- How to do it… 309
- How it works… 310
- There's more… 310
- Disabling and dropping audit policies 310
- Getting ready 310
- How to do it… 310
- How it works… 311
- See also 311
- Chapter 11: Additional Topics 312
- Introduction 312
- Exporting data using Oracle Data Pump in Oracle Database Vault
- environment 312
- Getting ready 313
- How to do it… 314
- How it works… 316
- There's more… 317
- See also 317
- Creating factors in Oracle Database Vault 317
- Getting ready 318
- How to do it… 319
- How it works… 332
- There's more… 333
- See also 334
- Using TDE in a multitenant environment 334
- Getting ready 335
- How to do it… 335
- How it works… 342
- See also 342
- Chapter 12: Appendix – Application Contexts 343
- Introduction 343
- Exploring and using built-in contexts 344
- Getting ready 344
- How to do it… 345
- How it works… 346
- There's more… 347
- See also 347
- Creating an application context 348
- Getting ready 348
- How to do it… 348
- How it works… 349
- Setting application context attributes 349
- Getting ready 349
- How to do it… 349
- How it works… 351
- There's more… 351
- See also 351
- Using an application context 351
- Getting ready 352
- How to do it… 352
- How it works… 353
- See also 353
- Index 354
BOOK
SUMMARY
Items Found: 251
- Introduction
- Chapter 1 Relational Database Concepts 1
- Are Spreadsheets Like Databases? 2
- Relational Databases 3
- Tables, Rows, and Columns 4
- Primary Keys, Datatypes, and Foreign Keys 4
- Data Modeling 6
- Object-Relational Databases 8
- Abstraction 9
- Methods and Encapsulation 9
- Inheritance 9
- Object-Relational Support 10
- Terms to Know 10
- Review Questions 11
- Chapter 2 SQL*Plus and iSQL*Plus Basics 13
- Some SQL Formalities 14
- Tools for Running SQL 14
- SQL*Plus 14
- iSQL*Plus 17
- SQL*Plus Worksheet 20
- Third-Party Tools 21
- ODBC/JDBC 21
- OCI 23
- The Ubiquitous SELECT Statement 23
- Column Specification 24
- Column Renaming 26
- Duplicate Removal 27
- Expressions 28
- DML for Making Changes 29
- The UPDATE Statement 29
- The INSERT Statement 31
- The DELETE Statement 32
- The MERGE Statement 33
- DDL for Handling Database Objects 34
- The CREATE Statement 34
- The ALTER Statement 36
- The DROP Statement 37
- The RENAME Statement 37
- The TRUNCATE Statement 38
- DCL for Handling Privileges 39
- The GRANT Statement 39
- The REVOKE Statement 40
- Terms to Know 40
- Review Questions 41
- Chapter 3 Oracle Database Functions 43
- Query Basics 44
- The DUAL Table 44
- NULLs: What, When, Why, and How. 46
- String Literals and Concatenating Strings 47
- Numeric Literals 48
- Operators and Operator Precedence 48
- Built-In Single-Row Functions 49
- String Functions 50
- Numeric Functions 53
- Date Functions 56
- Conversion Functions 58
- General Functions 61
- User-Defined Functions 63
- Terms to Know 66
- Review Questions 67
- Chapter 4 Restricting, Sorting, and Grouping Data 69
- The WHERE Clause 70
- Comparison Conditions 71
- AND, OR, and NOT 72
- BETWEEN, IN, and LIKE 75
- IS NULL and IS NOT NULL 79
- The ORDER BY Clause 81
- Group Functions and the GROUP BY Clause 83
- Group Functions 84
- The GROUP BY Clause 85
- Using NVL with Group Functions 87
- The HAVING Clause 88
- Terms to Know 90
- Review Questions 91
- Chapter 5 Using Multiple Tables 93
- Join Syntax: Out with the Old and In with the New (SQL:1999) 94
- Equijoins 94
- Pre-Oracle 9i Equijoin Syntax 94
- Oracle 9i Equijoin Syntax 97
- Non-equijoins 101
- Pre-Oracle 9i Non-equijoin Syntax 101
- Oracle 9i Non-equijoin Syntax 102
- Outer Joins 103
- Pre-Oracle 9i Outer Join Syntax 103
- Oracle 9iOuter Join Syntax 107
- Self-Joins 110
- Pre-Oracle 9i Self-Join Syntax 110
- Oracle 9i Self-Join Syntax 111
- Cartesian Products: The Black Sheep of the Family 112
- Pre-Oracle 9i Cartesian Product Syntax 112
- Oracle 9i Cartesian Product Syntax 113
- Terms to Know 114
- Review Questions 115
- Chapter 6 Advanced SQL Queries 117
- Subqueries 118
- Single-Row Subqueries 118
- Multiple-Row Subqueries 119
- Correlated Subqueries 121
- Multiple-Column Subqueries 123
- Set Operators 124
- UNION and UNION ALL 124
- INTERSECT. 129
- MINUS. 130
- ROLLUP and CUBE 133
- ROLLUP. 134
- CUBE. 135
- Terms to Know 137
- Review Questions 138
- Chapter 7 Logical Consistency 139
- Constraints 140
- NOT NULL. 140
- CHECK. 142
- UNIQUE. 144
- PRIMARY KEY. 145
- FOREIGN KEY. 147
- Transaction Processing 150
- The COMMIT Statement 151
- The ROLLBACK Statement 152
- The SAVEPOINT Statement 152
- Terms to Know 153
- Review Questions 154
- Chapter 8 Installing Oracle and Creating a Database 155
- Oracle Components Overview 156
- Logical Storage Structures 156
- Physical Storage Structures 158
- Oracle Memory Structures 160
- Background Processes 162
- Installing Oracle Software 163
- Using the Oracle Universal Installer 163
- Using the Oracle Enterprise Manager Tools 167
- Creating an Oracle Database 169
- Disk and Memory Requirements 169
- Using the Database Configuration Assistant 169
- Terms to Know 179
- Review Questions 180
- Chapter 9 Reporting Techniques 181
- iSQL*Plus Configuration 182
- Interface Configuration 184
- Script Formatting and System Variables 184
- Change Password 189
- Report Formatting 190
- Headers and Footers 191
- Column Formatting 194
- BREAK Processing 195
- Summary Operations (Totals) 196
- Substitution Variables 198
- Saving and Running Scripts 201
- Terms to Know 204
- Review Questions 205
- Chapter 10 Creating and Maintaining Database Objects 207
- Creating Tables 208
- Relational Tables 208
- Create Table As Select (CTAS) 209
- External Tables 211
- Temporary Tables 214
- Creating Indexes 215
- Creating and Using Views 216
- User-Defined Views 216
- Data Dictionary Views 218
- Dynamic Performance Views 222
- Creating Sequences and Synonyms 223
- Sequences 223
- Synonyms 225
- Terms to Know 226
- Review Questions 227
- Chapter 11 Users and Security 229
- Creating User Accounts 230
- Assigning Passwords 230
- Creating and Assigning Profiles 231
- Assigning Default Tablespaces and Quotas 232
- Granting and Revoking Privileges 234
- System Privileges 234
- Object Privileges 236
- Creating and Assigning Roles 238
- Auditing 240
- Statement Auditing 240
- Object Auditing 242
- Terms to Know 243
- Review Questions 244
- Chapter 12 Making Things Run Fast (Enough) 245
- Oracle’s Tuning Methodology 246
- Indexes 247
- When to Create Indexes 247
- Index Types 247
- Creating, Dropping, and Maintaining Indexes 250
- Monitoring Indexes 252
- Data Dictionary Index Information 254
- Data Design Tuning 255
- Partitioned Tables 255
- Materialized Views 258
- SQL Application Tuning 259
- Top SQL Tool 260
- Explain Plan Graphical Tool 262
- The Oracle Optimizer 264
- Memory Tuning 267
- Terms to Know 270
- Review Questions 271
- Chapter 13 Saving Your Stuff (Backups) 273
- Database Failures 274
- User Backup and Recovery Methods 274
- Export and Import for Users 275
- Flashback Query 280
- DBA Backup and Recovery Methods 282
- Export and Import for DBAs 282
- Cold Backups 287
- Hot Backups 287
- Log Miner 289
- Recovery Manager 290
- Terms to Know 292
- Review Questions 293
- Chapter 14 Troubleshooting 295
- The Alert Log File 296
- Locating the Alert Log File 296
- Viewing the Alert Log File 296
- Maintaining the Alert Log File 297
- Event Notification 298
- Oracle 9i OEM Event Manager 299
- Oracle 10g Advisory Framework 302
- System Trace Files 303
- User Trace Files 305
- Enabling Tracing 305
- Locating the User Trace Files 306
- Converting the Trace File 309
- Terms to Know 310
- Review Questions 311
- Appendix A Answers to Review Questions 313
- Chapter 1 313
- Chapter 2 314
- Chapter 3 315
- Chapter 4 316
- Chapter 5 317
- Chapter 6 318
- Chapter 7 319
- Chapter 8 320
- Chapter 9 321
- Chapter 10 322
- Chapter 11 323
- Chapter 12 324
- Chapter 13 325
- Chapter 14 326
- Appendix B Common Database Platforms 327
- Enterprise Databases 327
- Oracle 327
- IBM DB2/UDB 327
- Sybase 328
- Microsoft SQL Server 328
- Personal and Freeware Databases 328
- Microsoft Access 328
- MySQL 329
- Glossary 331
- Index 339
BOOK
SUMMARY
Items Found: 292
- PART I
- Planning a Smooth Migration
- 1 Overview of Migration, Transformation, and Upgrade Methodologies 3
- 2 Choosing the Right Migration Method 9
- 3 Migration/Transformation/Upgrade Methodologies 29
- PART II
- Cross-Platform Migration
- 4 Oracle Data Guard 53
- 5 Using Recovery Manager (RMAN) for Cross-Platform Migration 73
- 6 Transporting Tablespaces and Databases 119
- PART III
- Migration with Enhancement/Upgrade
- 7 Migrating Oracle Databases with Export/Import 161
- 8 Zero or Minimal Downtime Migrations with Oracle GoldenGate 181
- 9 Cross-Platform Transportable Tablespace Migration Utilities 205
- 10 Migrating to New Storage Platforms Using ASM 229
- PART IV
- Optimized Upgrades/Migration
- 11 Database Upgrade Assistant 249
- 12 Migrating from Microsoft SQL Server to Oracle 283
- 13 Moving to Oracle Database 12c 299
- 14 Moving to Oracle Engineered Systems 361
- 15 Migrating to Oracle in the Cloud 399
- PART V
- Best Practices and Tips
- 16 In Summary: Recommendations, Reminders, and Best Practices 415
- Index 425
- Database Upgrade Methodologies 4
- Data Migration Methodologies 5
- Migration with Transformation Methodologies 7
- Future Migration, Transformation, and Upgrade Techniques 7
- Summary 8
- Evaluating Your Environment 10
- Migration Goals 11
- Downtime Requirements 12
- Transformation Goals 12
- Migration Methods Review 13
- Resources 18
- Budget 20
- Additional Considerations 21
- Making Your Decision 23
- How Downtime Affects Your Choice of Method 23
- How Versions Affect Your Choice of Method 24
- How Architecture Affects Your Choice of Method 24
- How Database Transformation Affects Your Choice of Method 25
- Decision Summary 26
- Hybrid Solutions 27
- GoldenGate Migration Example 27
- Summary 28
- Planning the Migration Process 30
- Determining the “Window of Inopportunity” 30
- Application Workload Categorization 31
- Capturing Your Migration/Transformation/Upgrade Plan:
- The Master Checklist 34
- Milestones 34
- Tasks, Responsibilities, and Actions 35
- Timelines and Expected Task Timings 35
- Fallback Plans 35
- Expected Results 36
- Testing Your Chosen Migration/Transformation/Upgrade Path 37
- Building a Migration Plan 37
- Migration Steps 39
- Resource Allocation 41
- Milestones 42
- Quality Assurance 43
- Change Requests 43
- User Acceptance Testing 43
- Production Cutover 44
- Planning the Cutover to Production 45
- Database Verification 45
- Ensuring the Database’s Data Integrity 46
- Application Server Migration 47
- Evaluating Application Performance 47
- Summary 49
- Data Guard Overview 54
- What Is Data Guard? 54
- How Does Data Guard Work? 54
- Data Guard Components 57
- Data Guard Modes 58
- Data Guard Broker 59
- Requirements for Migrating with Data Guard 59
- Configuring Data Guard 61
- Set Up the Primary and Standby in Preparation of Data Guard 61
- Modify init.ora Parameters on the Primary 66
- Create the Standby System 68
- Duplicate the Database to the Standby 68
- Configure the Data Guard Broker 70
- Test and Validate 71
- Migrating with Data Guard 71
- Summary 72
- RMAN: Intrinsic Benefits 74
- Reliability 74
- Processing Efficiency 75
- Security 76
- RMAN Backup, Restore, and Recovery Techniques 77
- Fundamental Changes 77
- Fast Recovery Area 78
- Elements of Oracle’s Recommended Backup Strategy 80
- Advanced RMAN Features 88
- RMAN Enhancements in Oracle 11g: Multi-Piece Backup Sets 88
- RMAN Enhancements in Oracle 12c 89
- Migrating Between ASM and Other File Systems 90
- Non-ASM to ASM Migration: Complete Migration 90
- Non-ASM to ASM Migration: Phased Migration 111
- Monitoring RMAN Performance During Database Migration 116
- Summary 118
- Migrating Between Operating Systems 120
- TTS Migration vs TDB Migration: Variables to Consider 121
- Cross-Platform Migration: The Triumvirate 123
- Overcoming Endian Boundaries 124
- Transporting Tablespace Sets: The Basics 126
- TTS Operations: Prerequisites 127
- TTS: Performing the Migration Operation 130
- TTS: Advanced Techniques 135
- Create Transportable Tablespace Set as of Specific SCN 136
- Transport Datafiles and Metadata from Source Platform
- to Destination Platform 142
- Perform Endian Conversion at Destination 143
- Import Source Tablespace Metadata via Data Pump 143
- Switch Transported Tablespaces to READ WRITE Mode at Destination 144
- Revert Selected Tablespaces to READ WRITE Mode
- on Source Database 144
- TDB: Transporting Entire Databases 144
- TDB: Advantages and Drawbacks 144
- TDB: A Practical Example 145
- Summary 157
- Introduction to Export/Import 162
- Overview of Migrating a Database with Export/Import 163
- Transformations and Export/Import 164
- Using Export/Import for Backup and Recovery
- and Data Movement 165
- Types of Exports 165
- Using Export/Import to Migrate Metadata 166
- Using Legacy Export/Import to Migrate Oracle Databases 167
- Exporting Metadata with Legacy Export/Import 167
- Exporting with Legacy Export/Import 168
- Importing with Legacy Export/Import 170
- Legacy Export/Import Summary 172
- Using Data Pump Export/Import to Migrate Oracle Databases 172
- Data Pump Export/Import Directory Objects 173
- Exporting Metadata with Data Pump Export/Import 174
- Exporting with Data Pump 174
- Importing with Data Pump Import 176
- Data Pump Export/Import Summary 178
- Point-in-Time Export Using FLASHBACK_SCN 178
- Summary 179
- Introduction to Oracle GoldenGate 182
- Uses of Oracle GoldenGate 182
- How Does GoldenGate Work? 182
- GoldenGate Components 183
- GoldenGate Workflow 184
- Planning a Migration with GoldenGate 184
- Migrating a Database with GoldenGate 185
- Set Up GoldenGate 185
- Configure and Validate the Database 189
- Enable GoldenGate Replication 191
- Activate a Physical Standby for GoldenGate Export/Import 195
- Sync Target with Source 198
- Monitor Until Cutover 199
- GoldenGate Cutover Procedure 200
- GoldenGate Cleanup (Optional) 202
- Summary 203
- XTTS Migration Phases 206
- XTTS Migration Scenario 207
- Phase One: Migration Preparations 208
- Phase Two: Initial Migration, Method A: RMAN 212
- Phase Two: Initial Migration, Method B: DBMS_FILE_TRANSFER 216
- Phase Three: Incremental Synchronization 219
- Phase Four: Final Synchronization and Migration 223
- Summary 228
- ASM Overview 230
- ASM Configuration 231
- crsctl 231
- srvctl 232
- OEM Cloud Control 12c 232
- SQL Statements 232
- asmcmd 234
- Storage System Overview 235
- SAN Storage 236
- NAS Storage 236
- Migration Process Using ASM 237
- Add New Storage to the System 237
- Add Storage to the ASM Disk Group(s) 241
- Remove Old Disks from ASM Disk Group(s) 244
- Validate 245
- Remove Old Storage from the System 245
- Best Practices, Tips, and Techniques 246
- Summary 246
- Upgrade vs Migration 250
- Upgrading the Grid Infrastructure 251
- Installing the New Database Software 262
- Using the Database Upgrade Assistant to Plan an Upgrade 263
- Running the Pre-Upgrade Script 263
- Running the Database Upgrade Utility Scripts 268
- Using the Database Upgrade Assistant to Perform an Upgrade 273
- Summary 281
- Introduction to Oracle GoldenGate 284
- Uses of Oracle GoldenGate 284
- How Does GoldenGate Work? 284
- GoldenGate Components 285
- GoldenGate Workflow 286
- Planning a SQL Server Migration with GoldenGate 287
- Oracle GoldenGate for SQL Server Database Profile Script 287
- Migrating a Database with GoldenGate 288
- Set Up GoldenGate on MS SQL Server and Oracle 11g 289
- Configure and Validate the Database 291
- Enable Replication from SQL Server to Oracle 11g 291
- Perform the Initial Migration from MS SQL Server to Oracle 294
- Sync Target with Source 295
- Monitor Until Cutover 296
- Perform Pre-Cutover Validation 296
- GoldenGate Cutover Procedure 296
- GoldenGate Cleanup (Optional) 297
- Summary 297
- Oracle Database 12c: A Brave New World 300
- Container and Pluggable Databases: A Primer 301
- Common vs Local Database Files 304
- Common vs Local Tablespaces and Datafiles 306
- Common vs Local Users and Objects 308
- CDB Security: Local vs Common Privileges and Roles 309
- CDB Data Dictionary and Dynamic Views 310
- Directly Upgrading a Pre-12c Database to a 12c CDB 312
- Creating an Empty Container Database 312
- ”Upgrating” a Pre-12c Database to a 12c PDB: Mixed-Mode Methods 325
- Upgrading via Oracle GoldenGate 327
- Conversion via Cross-Platform Transportable Tablespace 328
- Conversion via Transportable Tablespace Sets,
- Cross-Platform Transport, or Full Transportable Export 329
- PDB Cloning Methods 331
- Scenario 1: Cloning a New Empty PDB from PDB$SEED and Transferring Data Into It 333
- Scenario 2: Cloning a New PDB from an Existing PDB 340
- Scenario 3: Unplugging and Replugging an Existing PDB 343
- Scenario 4: Plugging In an Existing Non-CDB as a New PDB 351
- Summary 360
- Engineered Systems: Not Our Father’s Mainframe 362
- Why Engineered Systems? 362
- A Brief Survey of Oracle Engineered Systems 363
- Moving to Exadata DBM 371
- Exadata: Rules of Thumb 371
- I/O Resource Manager 375
- Migrating Databases to an Exadata Environment 380
- Logical Migration Methods 380
- Physical Migration Methods 383
- Handling External Data Efficiently for Exadata:
- Oracle Database File System 389
- Oracle DBFS: A Practical Example 390
- Summary 398
- Cloud Computing: What Is It? 400
- Public Cloud 401
- Private Cloud 402
- Hybrid Cloud 402
- Oracle VM 402
- Oracle Cloud Offerings 403
- Why Use Cloud Computing? 403
- Considerations for Migrating to Cloud Computing 404
- Cloud Security 404
- Support and SLA 404
- Network Performance and SLA 405
- Application Customizations 405
- The Real Cost of Cloud Computing 405
- Data Access 406
- Data Migration 406
- Oracle VM and Cloud Computing 407
- Benefits of Running Oracle Databases on Oracle VM 408
- Migration Options for Cloud Computing 408
- Planning the Migration 409
- Application Migration 411
- Data Synchronization (Replication) 411
- Summary 412
- Planning a Smooth Migration 416
- Migration Methodologies 416
- Choosing the Right Migration Path 416
- Migration/Transformation/Upgrade Methodology 417
- Cross-Platform Migration 417
- Data Guard 418
- Migration Using Recovery Manager 418
- Cross-Platform Tablespace Migration Utilities 418
- Migration with Enhancement/Upgrade 419
- Export/Import 419
- Zero or Minimal Downtime Migrations with Oracle GoldenGate 419
- Cross-Platform Tablespace Migration with Incremental Backups 420
- Migrating to New Storage Platforms Using ASM 420
- Optimized Upgrades/Migration 421
- Database Upgrade Assistant 421
- Migrating from Microsoft SQL Server to Oracle 421
- Moving to Oracle Database 12c 421
- Moving to Oracle Engineered Systems 422
- Migrating to Oracle in the Cloud and Recommendations,
- Reminders, and Best Practices 422
- Migrating to the Oracle in the Cloud 423
- Summary of Best Practices 423
- A Final Word… 423
BOOK
SUMMARY
Items Found: 1010
- Part 1 Oracle DBA Fundamentals 36
- Part 2 Oracle Database Net Services 238
- Part 3 Oracle Database Backup and Recovery 247
- Part 4 Oracle Database Security 311
- Part 5 Oracle Database Performance Tuning 340
- Part 6 Oracle Automatic Storage Management (ASM) 396
- Part 7 Oracle Real Application Cluster 410
- Part 8 Oracle RAC One Node 529
- Part 9 Oracle Warehousing 551
- Part 10 Oracle Database Utilities 556
- Part 11 Miscellaneous Oracle Database Topics 582
- Part 12 PL/SQL Samples 596
- Part 13 Appendixes 674
- Page 4 Oracle DBA Code Examples
- DBA: Best Practices 37
- DBA: Best Practice Guidelines for Standalone and RAC Databases 37
- Oracle Database Installation Consideration 38
- Estimating Disk and Memoery Requirements 38
- Optimal Flexible Architecture 38
- Oracle Products Installed with the 11.1 Release 39
- Installing Oracle 10g R2 on Enterprise Linux 4 40
- Installation Environment 40
- Required Software 40
- Used Hardware 40
- Installation Plan 40
- 1. Preinstallation tasks 40
- 2. Oracle Database 10g Software Installation 44
- 3. Apply Patchset 3 (10.2.0.4) for Clusterware and Database Software 44
- 4. Configure Listeners 45
- 5. Create Database 45
- 6. Postinstallation Tasks 45
- Installing Oracle 11g R2 on Enterprise Linux 5 47
- Installation Environment 47
- Required Software 47
- Used Hardware 47
- Installation Plan 47
- 1. Preinstallation tasks 47
- 2. Oracle Database 11g Software Installation 53
- 3. Apply Patchset 53
- 4. Configure Listeners 53
- 5. Create Database 53
- 6. Postinstallation Tasks 53
- Page 5 Oracle DBA Code Examples
- Installing Oracle 11g R2 on Enterprise Linux 5.5 with ASM 54
- Installation Environment 54
- Required Software 54
- Used Hardware 54
- Installation Plan 54
- 1. Preinstallation tasks 55
- 2. Oracle Grid Infrastructure installation 60
- 3. Oracle Grid Infrastructure Patching 61
- 4. Oracle Database 11g R2 Software Installation 61
- 5. Oracle Database 11g R2 Software Patching 62
- 6. Install EM Agent in cluster nodes (if required) 62
- 7. ASM Diskgroups Creation 62
- 8. Database Creation 62
- 9. Postinstallation tasks 62
- 10. General Useful Postinstallation Tasks in Linux 62
- Managing Oracle Database Instance 64
- Product Release Number 64
- Oracle Database Release Number Format 64
- Obtaining License Information 64
- Managing the Instance Architecture 64
- Obtaining Information about the Instance Processes 64
- Obtaining Information about the SGA 65
- Clearing the Buffer Cache 65
- Database Administration Authentication 65
- Using Operating System Authentication 65
- Using Password File Authentication 66
- Identifying Users SYSDBA or SYSOPER Users 66
- Data Dictionary and Dynamic Performance Views 66
- Data Dictionary Creation 66
- Startup and Shutdown 66
- Startup Levels 66
- Shutdown Levels 66
- Autostart of Database in Windows 66
- Automatically Starting Databases in Unix 66
- Page 6 Oracle DBA Code Examples
- Quiescing a Database 71
- Suspending a Database 71
- Dropping a Database 71
- Initialization Files 71
- Managing Initialization Files 71
- Managing Parameters in SPFILE 72
- Alert and Trace Files 72
- Monitoring Alert and Trace Files 72
- Managing Oracle Database Physical Structure 74
- Managing Control Files 74
- Obtaining Control File information 74
- Creating Additional Copies, Renaming, and Relocating Control Files 74
- Creating New Control Files 74
- Backing Up Control Files 75
- Manage the Size of Control Files 75
- Multiplexing the Control File 76
- Maintaining Online Redo Log Files 76
- Forcing Log Switches and Checkpoints 76
- Adding Online Redo Log File Groups 76
- Adding Online Redo Log File Members 76
- Dropping Online Redo Log File Groups 76
- Dropping Online Redo Log File Members 76
- Relocating and Renaming Redo Log Members 76
- Verifying Blocks in Redo Log Files 77
- Clearing a Redo Log File 77
- Viewing Redo Log Information 77
- Managing Archived Redo Logs 77
- Obtaining Information about Archive Log 77
- Changing the Database Archiving Mode 78
- Specifying Archive Destinations and their Options 78
- Specifying the Minimum Number of Successful Destinations 79
- Controlling Archiving to a Destination 79
- Controlling Trace Output Generated by the Archivelog Process 79
- Managing Tablespaces 79
- Obtaining Tablespace Information 79
- Page 7 Oracle DBA Code Examples
- Creating a Locally Managed Tablespace 83
- Specifying Segment Space Management 83
- Adding Space to Tablespace 83
- Specifying Nonstandard Block Sizes for Tablespaces 83
- Using Bigfile Tablespace (BFT) 83
- Using Temporary Tablespace 84
- Renaming a Tempfile 84
- Shrinking Temporary Tablespace 84
- Using Default Temporary Tablespace 85
- Using Temporary Tablespace Groups 85
- Suppressing Redo Generation for a Tablespace 85
- Controlling Tablespaces Availability 85
- Using Read-Only Tablespaces 85
- Renaming Tablespaces 85
- Default Permanent Tabelspace 85
- Dropping Tablespaces 86
- Managing the SYSAUX Tablespace 86
- Diagnosing and Repairing Locally Managed Tablespace Problems 86
- Verifying the Integrity of Segments Created in ASSM Tablespaces. 86
- Checking Consistency of Segment Extent Map with Tablespace File Bitmaps 87
- Verifying the Integrity of ASSM Tablespaces 88
- Marking the Segment Corrupt or Valid 89
- Dropping a Corrupted Segment 89
- Dumping a Segment Header and Bitmap Blocks 90
- Marking a DBA Range in Bitmap as Free or Used 90
- Rebuilding the Appropriate Bitmap 91
- Rebuilding Quotas for Given Tablespace 91
- Migrating from a Dictionary-Managed to a Locally Managed Tablespace 91
- Fixing the State of the Segments in A Tablespace 91
- Scenario 1: Fixing Bitmap When Allocated Blocks are Marked Free (No Overlap) 91
- Scenario 2: Dropping a Corrupted Segment 92
- Scenario 3: Fixing Bitmap Where Overlap is Reported 92
- Scenario 4: Correcting Media Corruption of Bitmap Blocks 92
- Transporting Tablespaces Between Databases 92
- Managing Alert Thresholds 94
- Getting the Current Threshold Setting 94
- Setting Tablespace Alert Thresholds 95
- Restoring a Tablespace to Database Default Thresholds 96
- Page 8 Oracle DBA Code Examples
- Modifying Database Default Thresholds 97
- Viewing Alerts 97
- Managing Datafiles and Tempfiles 98
- Creating Datafiles 98
- Enabling and Disabling Automatic Extension for a Datafile 98
- Manually Resizing a Datafile 98
- Bringing Datafiles Online or Taking Offline in ARCHIVELOG Mode 98
- Taking Datafiles Offline in NOARCHIVELOG Mode 98
- Renaming and Relocating Datafiles in a Single Tablespace 99
- Dropping Datafiles 99
- Copying a File on a Local File System 99
- Transferring a File to a Different Database 100
- Dumping a Data Block 100
- Managing Undo Tablespaces 101
- Obtaining Information on Undo 101
- Enabling Automatic Undo Management 102
- Creating an Undo Tablespace 102
- Setting Startup Undo Tablespace 102
- Tuning Undo Retention 102
- Using Undo Advisor 103
- Setting the Undo Retention Period 103
- Enabling Retention Guarantee 103
- Dropping an Undo Tablespace 103
- To Drop a Corrupt UNDO Tablespace 104
- Using Oracle Managed Files (OMF) 104
- Managing Schema Objects 106
- Chaching Small Tables in Memory 106
- Creating Virtual Columns 106
- Creating Partitioned Tables 106
- Partition Maintenance Operations 111
- Setting Deferred Segment Creation 112
- Creating Multiple Tables and Views in a Single Operation 112
- Collecting Object Statistics 113
- Collecting Index Statistics 113
- Collecting Table Statistics 113
- Page 9 Oracle DBA Code Examples
- Collecting Schema Statistics 114
- Validating Tables, Indexes, Clusters, and Materialized Views 115
- Listing Chained and Migrated Rows of Tables and Clusters 115
- Truncating Tables or Clusters 116
- Enabling and Disabling Triggers 116
- Managing Integrity Constraints 116
- Setting Constraint States and Deferability 116
- Modifying, Renaming, or Dropping Existing Integrity Constraints 117
- Reporting Constraint Exceptions 117
- Obtaining Information on Constraints 118
- Renaming Schema Objects 118
- Managing Object Dependencies 118
- Manually Recompiling Views Procedures and Packages 118
- Switching to a Different Schema 118
- Using DBMS METADATA to Display Information About Schema Objects 118
- Specifying Storage Parameters at Object Creation 118
- Managing Resumable Space Allocation 119
- Enabling Resumable Space Allocation 119
- Detecting Suspended Statements 119
- Obtaining Information about Suspended Statements 121
- Reclaiming Wasted Space 121
- Displaying Information About Space Usage for Schema Objects 121
- Segment Advisor 124
- Shrinking Database Segments Online 126
- Deallocating Unused Space 126
- Capacity Planning for Database Objects 127
- Estimating the Space Use of a Table 127
- Obtaining Object Growth Trends 128
- Using the SQL Access Advisor 129
- Estimating the Space Use of a Table 129
- Managing Tables 134
- Obtaining Information about Tables 134
- Creating Tables with some Options 134
- Page 10 Oracle DBA Code Examples
- DML Error Logging 135
- Enabling Direct-Path INSERT 135
- Automatically Collecting Statistics on Tables 136
- Altering Tables 136
- Performing Online Redefinition with DBMS REDEFINITION 137
- Redefining a Table 137
- Redefining a Single Partition 139
- Migrating BasicFile LOBs to SecureFiles 140
- Using Flashback Drop and Managing the Recycle Bin 141
- Managing Index-Organized Tables 141
- Managing External Tables 142
- Managing Indexes 145
- Using Indexes 145
- Using Bitmap Join Indexes (BJI) 146
- Partitioned Indexes 147
- Managing Materialized Views 148
- Obtaining Information about Materialized Views 148
- Monitoring the Progress of a Materialized View Refresh 148
- Materialized View Typical Refresh Errors 152
- Using Materialized Views 152
- Using Query Rewriting 155
- ReWrite Hints 157
- Using EXPLAIN MVIEW Procedure: Viewing Materialized View Capabilities 157
- Using DBMS ADVISOR.TUNE MVIEW 157
- Registering a User-defined Table as Materialized View 158
- Managing Clusters and Hash Clusters 159
- Managing Views, Sequences, and Synonyms 161
- Managing Transactions 162
- Implementing Oracle’s Concurrency Control 162
- Oracle Isolaction Levels 162
- Oracle Lock Types 162
- Page 11 Oracle DBA Code Examples
- Identifying Blocking Sessions 163
- Using Autonomous Transaction 163
- Managing Long Transactions with Workspace Manager 164
- Repairing Corrupted Data 172
- Options for Repairing Data Block Corruption 172
- Detecting Corruptions Methods 172
- Using dbv (DBVerify) Utility 172
- Setting the Initialization Parameters for Detecting Corruption 172
- Verifying Block Integrity in Real Time: DB BLOCK CHECKING 172
- Verifying Block Integrity in Real Time: DB BLOCK CHECKSUM 173
- Detecting lost write: DB LOST WRITE PROTECT 173
- Settubg the DB ULTRA SAFE Parameter (In Oracle 11g) 173
- Using ANALYZE Command 173
- Using EXP to Detect Corruption 173
- Using DBMS REPAIR 174
- DBMS REPAIR Limitations and Restrictions 174
- Evaluate the Costs and Benefits of Using DBMS REPAIR 174
- Detect and Report Corruptions using DBMS REPAIR 175
- Managing Automated Database Maintenance Tasks 177
- Predefined Automated Maintenance Tasks 177
- Predefined Maintenance Windows 177
- Obtaining Information about Predefined Maintenance Tasks 177
- Enabling and Disabling Maintenance Tasks 178
- Configuring Maintenance Windows 178
- Managing Resources 180
- Obtaining Information on Database Resource Manager 191
- Monitoring Oracle Database Resource Manager 193
- Using Oracle Scheduler 195
- Using Jobs 195
- Using Programs 202
- Page 12 Oracle DBA Code Examples
- Using Schedules 203
- Using Job Classes 204
- Using Windows 205
- Using Window Groups 206
- Monitoring Job State with Email Notifications 207
- Using File Watchers 209
- Using Events Raised by the Scheduler 212
- Using Events Raised by an Application (Events-Based Jobs) 214
- Using Chains 217
- Allocating Resources Among Jobs 221
- Administering Oracle Scheduler 221
- Configuring Oracle Scheduler 221
- Monitoring and Managing the Scheduler 222
- Enabling, Using and Disabling Remote External Jobs 223
- Import/Export and the Scheduler 225
- Scheduler Privileges 225
- Scheduler Data Dictionary Views 225
- Using the UTL FILE Package 226
- Data Loading and Transforming Tools 228
- Using Database Links 229
- Managing Diagnostic Data 230
- Setting the Automatic Diagnostic Repository Directory 230
- Using adrci Tool 230
- General usage of adrci 230
- Using adrci to Package Incidents 231
- Managing Database Health Monitor 231
- Managing Data Recovery Advisor 233
- Using SQL Test Case Builder 233
- Patching Oracle Products 235
- Using Oracle Opatch 235
- Page 13 Oracle DBA Code Examples
- Connectivity Naming Methods 239
- The Local Naming Method 239
- The Easy Connect Naming Method 239
- The External Naming Method 239
- The Directory Naming Method 240
- Database Resident Connection Pooling (DRCP) 240
- Oracle and Java Database Connectivity 242
- Establishing Database Connectivity 242
- Miscellaneous Connectivity Options 244
- Setting the Default Connect String 244
- Installing the Instant Client 244
- Setting Listener Options 244
- Setting Access Controls 244
- Changing Windows Hostname 245
- Backup Guidelines 248
- Causes of Unplanned Down Time 248
- Causes of Planned Down Time 248
- Oracle’s Solution to Down Time 249
- Minimizing Unplanned Downtime Guidelines 249
- SLA Sample 250
- Planning a Backup Strategy Guidelines 250
- Examples of Backup Schedules for a Database 251
- User-Managed Backups 252
- Obtaining Database File Information 252
- Making Whole Closed Database Backups 252
- Making a Whole Open Backup 252
- Page 14 Oracle DBA Code Examples
- Making Tablespace Backups 253
- Obtaining Backup Status Information 253
- Checking Datafiles Taken as Backup 253
- Handling Crash Before User-Manged Backup Ends 253
- Backing up Control File 254
- Backing Up Initialization Files 254
- User-Managed Complete Recovery 255
- User-Managed Recovery in NOARCHIVELOG Mode 255
- User-Managed Recovery in NOARCHIVELOG Mode Without Redo Log File 255
- User-Managed Complete Recovery in ARCHIVELOG Mode 255
- Re-Creating Lost Datafiles Without Backup 256
- User-Managed Incomplete Recovery 257
- Common Situations Requiring Incomplete Recovery 257
- User-Managed Incomplete Recovery Steps 257
- Recovering from Lost Control File by Re-Creating the Control File 257
- Flash Recovery Area 261
- Obtaining Information on Flash Recovery Area 261
- Configuring Flash Recovery Area 261
- Backing Up the Flash Recovery Area 261
- Moving the Flash Recovery Area 262
- Recovery Manager (RMAN) 263
- Using A Media Management Layer (MML) with RMAN 263
- Obtaining Information about and related to RMAN using Dictionary Views 263
- Starting RMAN 265
- Using rlwrap Utility with RMAN in Unix-Based Systems 266
- Configuring the RMAN Environment 266
- RMAN Channel Commands 267
- Duration in days of RMAN information in Control File 268
- Monitoring RMAN Jobs 268
- Page 15 Oracle DBA Code Examples
- Using RMAN BACKUP Command 268
- Backing Up Control File and SPFile 269
- Backing Up Archived RedLogs 269
- Backup in NOARCHIVELOG Mode 270
- Encrypting RMAN Backups 270
- Using Compression in RMAN Backups 270
- Using Multiplexed Backup Sets 270
- Using Parallelization of Backup Sets 270
- Using Duplexed Backup Sets (Backupset Copies) 271
- Making Image Copies 271
- Validating Backup 272
- Incremental Backup 272
- Tags for Backups and Image Copies 272
- Creating Archival Backups 272
- Monitoring RMAN Backups 273
- RMAN Complete Recovery 273
- Validating Backup Files 273
- Previewing Backup Files Required by a Restore 274
- Identifying Datafiles Requiring Recovery 274
- Performing Complete Recovery 274
- Restoring whole Database from RMAN Backups On a Different Node 275
- Restoring whole Database from RMAN Backups from A 32 bit to 64 bit 278
- RMAN Incomplete Recovery 278
- Simplified Recovery Through Resetlogs 279
- Recovering from Lost Control File using RMAN 279
- Block Media Recovery (BMR) 280
- Trial Recovery 280
- Handling Specific Errors During Recovery 280
- Configuring Instance Crash Recovery Time (MTTR) 282
- Working with the Data Recovery Advisor in RMAN 282
- RMAN Maintenance 282
- Cross Checking Backups and Copies 282
- Page 16 Oracle DBA Code Examples
- Deleting Backups and Copies 283
- Changing the Availability of RMAN Backups and Copies 283
- Exempting a Backup or Copy from the Retention Policy 283
- The CATALOG Command 284
- The CHANGE … UNCATALOG Command 284
- RMAN Catalog 284
- Creating a Recovery Catalog 284
- RMAN Catalog Reporting 285
- Upgrading a Recovery Catalog 285
- Importing Recovery Catalogs 285
- Moving a Recovery Catalog 286
- Dropping a Recovery Catalog 286
- Virtual Private Catalogs 286
- Using RMAN Scripts 287
- Duplicating (Cloning) a Database 289
- Database Duplication (Cloning) Methods 289
- Database Duplication Techniques 289
- Database Duplication Prerequisites 289
- Duplicating an Active Database using RMAN 289
- Duplicating a Database without Recovery Catalog or Target Connection 291
- Manually Duplicating a Database 293
- Using Oracle Flashback Technology 297
- Flashback Options 298
- Preparing Your Database for Flashback 299
- Using Row Level Flashback Options 300
- Flashback Query 300
- Flashback Versions Query 300
- Flashback Transaction Query 301
- Flashback Transaction (Backout) 301
- Using Table Level Flashback Options 303
- Page 17 Oracle DBA Code Examples
- Flashback Table 303
- Flashback Drop 303
- Flashback Data Archive 304
- Using Flashback Database 308
- When to use Flashback Database 308
- Flashback Database Considerations 308
- Using Flashback Database 308
- Restore Points 309
- Oracle Database Security Management 312
- Security Guidelines 313
- Managing Users 315
- Database Authentication 317
- Managin Passwords 317
- External (OS) Authentication 317
- Proxy Authentication 318
- Logging In As a Different User 318
- Killing User Sessions from OS 318
- Controlling Database Access 320
- System and Object Privileges 320
- Invoker Rights and Definer Rights 320
- Roles 320
- Users, Roles, and Privileges Views 321
- Fine-Grained Data Access (Virtual Private Database VPD) 322
- Auditing Database 325
- Standard Auditing 325
- Customizing Database Auditing with Triggers 326
- Page 18 Oracle DBA Code Examples
- Auditing the Database Using System Trigger 328
- Using Fine Grained Auditing 331
- Using Data Encryption 334
- Oracle Transparent Data Encryption (TDE) 334
- Tablespace Encryption 335
- Fine-Grained Access Control for UTL * Packages 337
- Creating ACL 337
- Access Control Lists Maintenance 338
- Query Your Access Control List 339
- Managing Performance Statistics 341
- Managing OS Statistics 341
- Managing Database Statistics 345
- System and Session Statistics 345
- Time Model Statistics 346
- Wait Events 347
- Active Session History (ASH) 349
- Segment Statistics 351
- Handling Important Oracle Wait Events 351
- List of Idle Waits Events 353
- Using Performance Monitor Tool in Windows 355
- Using OS Watcher for Windows 355
- Optimizing Performance in Windows Server 357
- Optimizing Performance in Windows Server 2003 357
- Tuning the Database Instance 358
- Tuning the Shared Pool 358
- Tuning the Buffer Cache 359
- Tuning PGA 361
- Dumping the PGA 361
- Page 19 Oracle DBA Code Examples
- Using Server Result Cache 362
- Obtaining Information about Object Locks 364
- Handling a Hanging Database 365
- Accurately Measuring Process Size 365
- Managing Automatic Workload Repository (AWR) 367
- Managing Automated Maintenance Tasks 369
- Using Automatic Database Diagnostic Monitor (ADDM) 369
- Using Automatic SQL Tuning Advisor 371
- Implementing Automatic Memory Management 374
- Configuring DB nK CACHE SIZE 376
- Managing Optimizer Operations 377
- Setting the Optimizer Mode 377
- Defining Access Paths and Joins for the Query Optimizer 377
- Gathering Optimizer Statistics 381
- Gathering Object Statistics 381
- Gathering System Statistics 382
- Changing Statistics Preferences 382
- Managing Pending and Published Statistics 383
- Managing Extended Statistics 384
- MultiColumn Statistics 384
- Expression Statistics 385
- A Simple Approach to Tuning SQL Statements 386
- Using Application Tracing Tools 387
- Using the SQL Trace Facility and TKPROF 387
- Using the Event 10046 to Trace SQL Code 387
- Tracing End to End Application 388
- Enabling and Disabling Statistic Gathering for End to End Tracing 389
- Page 20 Oracle DBA Code Examples
- Writing Efficient SQL 391
- Improving SQL Processing Techniques 394
- Using SQL Tuning Advisor 395
- Managing Oracle ASM 397
- Obtaining Information about ASM Instance 397
- Creating an ASM Instance 397
- Managing Disk Groups and Disks in ASM 398
- Fundementals of Managing Disk Groups and Disks 398
- Managing Disk Groups Attributes 399
- Monitoring Long-Running Operations 401
- Migrating a Database to ASM 402
- Moving a Tablespace to ASM 402
- Accessing an ASM instance from DB Console 403
- Managing ASM Files 404
- Using ASMCMD Utility 405
- Using SYSASM Privilege and OSASM Group 407
- Manually Upgrading Oracle AS from 10g to 11g 408
- Verifying Manually ASM Device 408
- Oracle RAC Possible Installation Configurations 411
- Installing Oracle 10g R2 RAC on Enterprise Linux 4 412
- Installation Environment 412
- Required Software 412
- Used Hardware 412
- Installation Plan 412
- 1. Preinstallation tasks 413
- 2. Oracle Clusterware installation 420
- Page 21 Oracle DBA Code Examples
- 3. Oracle Database 10g Software Installation 424
- 4. Apply Patchset 3 (10.2.0.4) for Clusterware and Database Software 425
- 5. Install EM Agent in cluster nodes (if required) 426
- 6. Configure Listeners 426
- 7. Perform ASM installation 427
- 8. Perform cluster database creation 427
- 9. Postinstallation tasks 429
- 10. Useful Postinstallation Tasks 430
- Installing Oracle 11g R2 RAC on Enterprise Linux 5 431
- Main Changes in Oracle 11g Release 2 RAC 431
- Installation Environment 431
- Required Software 431
- Used Hardware 431
- Installation Plan 432
- 1. Preinstallation tasks 433
- 2. Oracle Grid Infrastructure installation 440
- 3. Oracle Grid Infrastructure Patching 442
- 4. Oracle Database 11g R2 Software Installation 442
- 5. Oracle Database 11g R2 Software Patching 443
- 6. Install EM Agent in cluster nodes (if required) 443
- 7. ASM Diskgroups Creation 443
- 8. RAC Database Creation 444
- 9. Postinstallation tasks 445
- 10. General Useful Postinstallation Tasks in Linux 446
- Installing Oracle 10g R2 RAC on Windows 447
- Installation Methods 447
- Installation Environment 447
- Required Software 447
- Used Virtual Hardware 447
- Installation Plan 448
- 1. Preinstallation tasks 448
- 2. Oracle Clusterware installation 450
- 3. Apply Patch Set 3 (10.2.0.4) on Clusterware software 452
- 4. Oracle ASM 10g Software Installation 453
- Page 22 Oracle DBA Code Examples
- 5. Apply Patchset 3 (10.2.0.4) on ASM Software 454
- 6. Install EM Agent in cluster nodes (if required) 454
- 7. Configure Listeners 454
- 8. Create ASM Instance 455
- 9. Install Oracle RAC Database Home Software 456
- 10. Apply Patchset 3 (10.2.0.4) on Oracle RAC Software Home 457
- 11. Perform cluster database creation 457
- 12. Useful Postinstallation Steps 459
- Cleaning Up Clusterware Installation on Windows 460
- Single Instance to RAC Conversion 462
- The Tools to Convert a Single Instance DB to RAC 462
- Conversion Prerequisites for Oracle 10g R2 462
- Using rconfig Utitlity 462
- Using DBCA 463
- Administering RAC Database 465
- Administering Oracle Clusterware Components 466
- Managing Cluserware Daemons and Processes 466
- Displaying Clusterware Processes 466
- Starting, Stopping, Enabling and Disabling crs Stack 466
- CSS Parameters 466
- Administering Voting Disks in RAC 466
- Multiplexing Voting Disks 466
- Dynamically Adding and Removing Voting Disks after Installing RAC 467
- Backing up Voting Disks 467
- Recovering Voting Disks 467
- Administering the Oracle Cluster Registry (OCR) 467
- Replacing the OCR 468
- Adding and Removing the OCR 468
- Repairing the OCR 468
- Making Physical Backups of the OCR 468
- Recovering the OCR using the Physical Backups 469
- Making Logical Backups of the OCR (Exporting) 469
- Making Logical Backups of the OCR (Importing) 469
- Page 23 Oracle DBA Code Examples
- Diagnosing OCR Problems with the OCRDUMP and OCRCHECK Utilities 470
- Administering Storage 471
- Datafile Access in Real Application Clusters 471
- Redo Log File Storage in Real Application Clusters 471
- Automatic Undo Management in Real Application Clusters 471
- Administering ASM Instances with SRVCTL in RAC 472
- Administering Cluster Databases 473
- Displaying Current Instance in SQL*Plus Prompt 473
- Starting and Stopping Instances and RAC Databases 473
- Starting Up and Shutting Down with SQL*Plus 473
- Intermittent Windows Shutdown Issue in RAC Environments 473
- Starting Up and Shutting Down with SRVCTL 473
- Customizing How Oracle Clusterware Manages RAC Databases 474
- Switching Between the Database Automatic and Manual Policies 474
- Customizing Resource Parameters (like AUTO START) 474
- Handling Initialization Parameter Files in RAC 475
- Setting Server Parameter File Parameter Values for Real Application Clusters 475
- Parameters Used in RAC Databases 475
- Parameters that Must Have Identical Settings on All Instances 475
- Parameters That Must Have Unique Settings on All Instances 476
- Parameters that Should Have Identical Settings on All Instances 476
- ASM Instance Initialization Parameters and RAC 476
- Dropping a RAC Database 476
- Workload Management in RAC 477
- Types of Workload Distribution 477
- Connection Load Balancing 477
- Client-Side Load Balancing and Failover 477
- Server-Side Load Balancing 477
- Fast Application Notification (FAN) 478
- Using Fast Application Notification Callouts 478
- Configuring the Server-Side ONS 480
- Administering Load Balancing Advisory 480
- Page 24 Oracle DBA Code Examples
- Monitoring Load Balancing Advisory 481
- Transparent Application Failover (TAF) 482
- TAF Basic Configuration without FAN (From Client Side) 482
- TAF Basic Configuration with FAN (Server-Side) 482
- TAF Preconnect Configuration 482
- Verifying TAF Configuration 483
- Enabling Distributed Transaction Processing for Services 483
- Administering Services 484
- Service Attributes 484
- Administering Services with DBCA 484
- Administering Services with PL/SQL 484
- Administering Services with SRVCTL 486
- Controlling the Preferred and Available Instances 486
- Using Services with Client Applications 487
- Services and the Scheduler 487
- Measuring Performance by Service Using the AWR 488
- Service Thresholds and Alerts 490
- Service Performance Views 491
- Restricted Session and Services 491
- Configuring Recovery Manager and Archiving 492
- Backup Possible Distributions in RAC 492
- RMAN Restore Scenarios for Real Application Clusters 492
- Cluster File System Restore Scheme 492
- Non-Cluster File System Restore Scheme 492
- RMAN and Oracle Net in Real Application Clusters 492
- Connecting to Specific Node 492
- Instance Recovery in Real Application Clusters 493
- Single Node Failure in Real Application Clusters 493
- Multiple-Node Failures in Real Application Clusters 493
- Configuring the RMAN Snapshot Control File Location 493
- Configuring the RMAN Control File and SPFILE Autobackup Feature 493
- Page 25 Oracle DBA Code Examples
- Configuring Channels for RMAN in Real Application Clusters 493
- Configuring Channels to use Automatic Workload Balancing 493
- Configuring Channels to Use a Specific Instance 493
- Node Affinity Awareness of Fast Connections 494
- Archived Redo Log File Conventions in RAC 494
- Archive Redo Log Configuration Scenarios 494
- Automatic Storage Management and CFS Archiving Scheme 494
- Non-Cluster File System Local Archiving Scheme 494
- Changing the Archiving Mode in Real Application Clusters 495
- Deleting Archived Redo Logs after a Successful Backup 495
- Monitoring the Archiver Processes 495
- Log Archive Dest 1 Set To Default Even When DB Recovery File Dest Is Set
- (Bug 6373164) 495
- Media Recovery in Real Application Clusters 497
- Parallel Recovery in Real Application Clusters 497
- Using a Flash Recovery Area in RAC 497
- Managing Backup and Recovery 498
- Administrative Options 499
- Using Enterprise Manager Grid Control to Discover Nodes and Instances 499
- Additional Information About SQL*Plus in RAC 499
- How SQL*Plus Commands Affect Instances 499
- Displaying Running Instances 499
- Displaying Connect Identifier 499
- Quiescing RAC Databases 500
- Quiesced State and Cold Backups 500
- Transparent Data Encryption and Wallets in RAC 500
- Administering System and Network Interfaces with oifcfg 500
- Defining Network Interfaces with oifcfg 500
- Syntax and Commands for the oifcfg Command-Line Tool 500
- Changing Public or Interconnect IP Subnet Configuration 501
- Changing VIP Addresses 501
- Adding Nodes and Instances on UNIX-Based Systems 503
- Page 26 Oracle DBA Code Examples
- Adding Nodes to a RAC Environment 503
- Cloning Oracle Clusterware and RAC Software in Grid Environments 503
- Quick-Start Node and Instance Addition Procedures 504
- Adding an Oracle Clusterware Home to a New Node 504
- Adding an Oracle Home with RAC to a New Node 505
- Detailed Node and Instance Addition Procedure 505
- Step 1: Connecting New Nodes to the Cluster 505
- Step 2: Extending Clusterware and Oracle Software to New Nodes 505
- Step 3: Preparing Storage on New Nodes 505
- Step 4: Adding Nodes at the Oracle RAC Database Layer 506
- Step 5: Adding Database Instances to New Nodes 506
- Deleting Nodes and Instances on UNIX-Based Systems 507
- Option 1: Quick-Start Node and Instance Deletion Procedures 507
- Deleting an Oracle Home with RAC from an Existing Node 507
- Deleting an Oracle Clusterware Home from an Existing Node 508
- Option 2: Detailed Node and Instance Deletion Procedure 509
- Step 1: Deleting DB Instances from Real Application Clusters Databases 509
- Using Enterprise Manager to Delete Database Instances from Existing Nodes 509
- Using DBCA in Interactive Mode to Delete Database Instances from Existing Nodes 509
- Using DBCA in Silent Mode to Delete Instance from Existing Nodes 510
- Step 2: Deleting Nodes from Real Application Clusters Databases 510
- ASM Instance Clean-Up Procedures for Node Deletion 511
- Adding and Deleting Nodes and Instances on Windows-Based
- Systems 512
- Cloning Oracle Clusterware and RAC Software in Grid Environments 513
- Quick-Start Node and Database Instance Addition and Deletion Procedures 513
- Adding an Oracle Clusterware Home to a New Node 513
- Adding an Oracle Home with RAC to a New Node 513
- Deleting an Oracle Home with RAC from an Existing Node 513
- Deleting an Oracle Clusterware Home from an Existing Node 513
- Detailed Node and Database Instance Addition and Deletion Procedures 513
- Overview of Node Addition Procedures 513
- Page 27 Oracle DBA Code Examples
- Step 1: Connecting New Nodes to the Cluster 513
- Making Physical Connections 513
- Installing the Operating System 513
- Verifying the Installation with the Cluster Verification Utility 513
- Checking the Installation 513
- Step 2: Extending Oracle Software to New Nodes at the Oracle Clusterware 513
- Step 3: Preparing Storage on New Nodes 513
- Raw Device Storage Preparation for New Nodes 513
- Step 4: Adding Nodes at the Oracle RAC Database Layer 513
- Step 5: Adding Database Instances to New Nodes 513
- Using Enterprise Manager to Add Database Instances to New Nodes 513
- Using DBCA in Interactive Mode to Add Database Instances to New Nodes 513
- Using DBCA in Silent Mode to Add Database Instances to New Nodes 513
- Connecting to iSQL*Plus after Adding a Node 513
- Adding Nodes that Already Have Clusterware and Oracle Software to a Cluster 514
- Overview of Node Deletion Procedures 514
- Step 1: Deleting Instances from Real Application Clusters Databases 514
- Using Enterprise Manager to Delete Database Instances from Existing Nodes 514
- Using DBCA in Interactive Mode to Delete Database Instances from Existing Nodes 514
- Using DBCA in Silent Mode to Delete Instance from Existing Nodes 514
- Step 2: Deleting Nodes from Real Application Clusters Databases 514
- Step 3: ASM Instance Clean-Up Procedures for Node Deletion 514
- Monitoring Performance 515
- RAC Common Tuning Tips 515
- Instance Recovery and RAC 515
- Global Cache Wait Events 515
- Monitoring Performance in Enterprise Manager 516
- Using the Cluster Database Performance Page 516
- Using the Cluster Database Instance Performance Page 516
- Using the Cluster Performance Page 517
- Using the Cluster Interconnects Page 517
- Making Applications Highly Available Using Oracle Clusterware 518
- Making an Application Highly Available Examples 518
- Page 28 Oracle DBA Code Examples
- Example1: Making an Application Highly Available 518
- Example2: Making an Application Highly Available 520
- Managing Automatic Oracle Clusterware Resource Operations for Action Scripts 522
- Displaying Clusterware Application and Application Resource Status Information 522
- Unregistering Applications and Application Resources 523
- RAC Troubleshooting 524
- Diagnosing the Oracle Clusterware High Availability Components 524
- Debugging Recommnedation 524
- Clusterware Log Files and the Unified Log Directory Structure 524
- Dynamic Debugging 524
- Component Level Debugging 524
- Oracle Clusterware Shutdown and Startup 525
- Enabling and Disabling Oracle Clusterware Daemons 525
- Diagnostics Collection Script 525
- The Oracle Clusterware Alerts 525
- Resource Debugging 525
- Checking the Health of the Clusterware 525
- Troubleshooting the Oracle Cluster Registry 525
- Troubleshooting Hostname Changes and CSS 525
- Enabling Additional Tracing for Real Application Clusters High Availability 526
- Diagnosing Oracle Real Application Clusters Components 526
- Where to Find Files for Analyzing Errors 526
- Using Instance-Specific Alert Files in Real Application Clusters 526
- Enabling Tracing for Java-Based Tools and Utilities in Real Application Clusters 526
- Resolving Pending Shutdown Issues 526
- Using the Cluster Verification Utility 526
- Cluster Verify Locations 526
- Cluster Verify Stages 526
- Cluster Verify Components 527
- CVU Component Verification Examples 527
- Understanding CVU Commands, Help, Output, and Nodelist Shortcuts 528
- Performing Various CVU Tests 528
- Known Issues for the Cluster Verification Utility 528
- Installing Oracle 11g R2 RAC One Node on Linux 5 530
- Page 29 Oracle DBA Code Examples
- Installation Environment 530
- Required Software 530
- Used Hardware 530
- Installation Plan 531
- 1. Preinstallation tasks 532
- 2. Oracle Grid Infrastructure installation 539
- 3. Oracle Grid Infrastructure Patching 542
- 4. Checking Oracle Grid Infrastructure Status 542
- 5. Oracle Database 11g R2 Software Installation 542
- 6. Oracle Database 11g R2 Software Patching 543
- 7. Install EM Agent in cluster nodes (if required) 544
- 8. ASM Diskgroups Creation 544
- 9. RAC Database Creation 545
- 10. Initialize the Database to RAC One Node (11.2.0.1 Only) 547
- 11. Postinstallation tasks 548
- 12. General Useful Postinstallation Tasks in Linux 548
- Instance Relocation using Omotion (11.2.0.1) 549
- Instance Relocation using Omotion (11.2.0.2) 550
- Oracle Warehouse Builder (OWB) 552
- Oracle Warehouse Builder Architecture 552
- Starting and Stoping the Service 552
- Configuring the Repository and Workspaces 552
- Steps of Using Warehouse Builder 553
- Mapping Operators 554
- Using SQL*Plus 557
- Using SQL*Plus Command-Line Options 557
- Starting SQL*Plus Session 557
- Controlling User Privileges in SQL*Plus 557
- Page 30 Oracle DBA Code Examples
- Setting the SQL*Plus Environment with the SET Command 558
- Setting SQL*Plus Preferances 558
- Logging SQL*Plus Errors 559
- Key SQL*Plus "Working" Commands 559
- Creating Command Files in SQL*Plus 559
- Copying Tables with the COPY Command 559
- Creating Web Pages Using SQL*Plus 560
- Using SQL to Generate SQL 560
- Enabling AUTOTRACE for a User 560
- Using rlwrap Utility with SQL*Plus in Unix-Based Systems 561
- Escaping Special Characters 561
- Using SQL*Loader Utility 563
- Invoking SQL*Loader 563
- Using SQL*Loader Control File 563
- Loading Excel File into a Table using SQL*Loader 569
- Loading Large Fields into a Table 569
- Using Direct Load Options 570
- Data Pump Export and Import 571
- Data Pump Components 571
- Data Pump Export Interfaces 571
- Export Modes Parameters 571
- Required Rrivileges 571
- Invoking Export Data Pump Examples 571
- Export Filtering Parameters 572
- Export Remapping Parameters 572
- Sampling Export Data 573
- Export Encryption Parameters 573
- Export Estimating Parameters 573
- Export Network Link Parameter 573
- Export PARALELL Parameter 574
- Page 31 Oracle DBA Code Examples
- Import Modes Parameters 574
- File- and Directory-Related Parameters 574
- Using TABLE EXISTS ACTION Parameter 574
- Import Filtering Parameters 574
- Import Remapping Parameters 574
- Ignoring Nondeferred Constraints 575
- Import Network Link Parameter 575
- Import Flashback Parameters 575
- Import PARALELL Parameter 576
- Monitoring a Data Pump Jobs 576
- LogMiner 577
- Types of Supplemental Logging 577
- Levels of Supplemental Logging 577
- Disabling Database-Level Supplemental Logging 577
- LogMiner Dictionary Options 578
- Redo Log File Options 578
- OPTIONS possible values in DBMS LOGMNR.START LOGMNR: 578
- Obtaining LogMiner Operational Information 578
- Examples of Using LogMiner 579
- Without Sepecifying the Redo Files 579
- Wit Sepecifying the Redo Files 580
- Managing Oracle Database Control 583
- Configuring and Using the Database Control 583
- Implementing EM Database Control Auto Startup 583
- Dropping and Recreating the Management Repository 584
- Installing Oracle 10g R5 (10.2) Enterprise Manager Grid Control for
- Linux x86 585
- Installation Environment 585
- Page 32 Oracle DBA Code Examples
- Required Software 585
- Used Hardware 585
- Installation Steps 585
- Remote Diagnostic Agent (RDA) 593
- Using Remote Diagnostic Agent (RDA) 593
- Connect Oracle to SQL Server 594
- Configuring and Using the Database Control 594
- PL/SQL Basics 597
- PL/SQL Data Types 597
- Controlling Compile-Time Displayed Warnings 598
- Catching Returned Errors 599
- Hiding Code 599
- Controlling Program Flow 599
- Using Cursors 602
- Using Records 606
- Using Table Functions 608
- Using Collections 610
- Using VARRAYS 610
- Using Nested Tables 613
- Using Associative Arrays 614
- Using Collection API 616
- Handling Errors 621
- Predefined Exceptions 621
- Using User-Defined Exceptions 621
- Using RAISE APPLICATION ERROR 622
- Page 33 Oracle DBA Code Examples
- Autonomous Transactions 624
- Some Stored Subprobrams Concepts 625
- Serially Reusable Packages 625
- Stored Subprograms and Roles 626
- Invoker’s vs. Definer’s Rights 626
- Pinning an Programunit in the Shared Pool 627
- Using Triggers 628
- Restrictions on Triggers 628
- Using DML Triggers 628
- Using Instead-of Triggers 629
- Using System Triggers 630
- Handling Mutating Tables in Triggers 634
- Dropping and Disabling Triggers 635
- Using Dynamic SQL 636
- Working with Native Dynamic SQL 636
- Using DBMS SQL 639
- Calling Java from PL/SQL 648
- Configuring Oracle Database to Use External Routines 649
- Using Large Objects (LOBs) 652
- Creating LOB 652
- Using SQL with Internal LOBs 652
- Using LOBs in PL/SQL 653
- Performance Considerations 662
- Using Returning Clause 662
- Using CONTEXT Index 663
- Migrating from LONGs to LOBs 664
- PL/SQL Performance Tuning Tips 665
- Use PL/SQL Profiler 665
- Page 34 Oracle DBA Code Examples
- Use BULK COLLECT Clause 666
- Set PLSQL OPTIMIZE LEVEL and Subprogram Inlining 670
- Using Bind variables in Dynamic SQL 671
- Use NOCOPY Keyword 672
- Use Associative arrays 672
- Use Server Result Cache 672
- PL/SQL Miscellaneous Topics 673
- Accessing V$ Views from PL/SQL 673
- Program Units and Scripts Used in the Document 675
- Return Parameter Value for Normal User 675
- Applying Random Load on Database Sample 1 676
- Setup 676
- Using the Load Generator Scripts 682
- Applying Random Load on Database Sample 2 683
- Setup 683
- Using the Load Generator Scripts 691
- SQL Usage Samples 693
- Merge Command 693
- Multitable Inserts 693
- Parallel Insert 694
- Deleting Duplicate Rows in a Table 694
- Adding a Primary Key to a Table and then Filling it 694
- More DBA Scripts 696
- Compare Table Sizes in Two Databases 696
- Using Linux for Oracle 697
- Verifying the Kernel 697
- Checking for a Tainted Kernel 697
- Page 35 Oracle DBA Code Examples
- Supported Hardware 697
- Using Oracle Relink Utility 697
- Certified and Supported File Systems 698
- Enterprise Linux Runlevels 698
- Using /etc/oratab File and dbstart Utility 698
- Automating Jobs 699
- Using cron 699
- Using anacron 700
- Using at command 700
- Using batch command 701
- Task Scheduler 701
- Configuring Linux Memory for Oracle 701
- Using Linux Performance Monitoring Tools 701
- About Linux Tools 702
- Using Linux Tools 702
- Checking Some General Guideline on Truning Oracle in Linux 703
- Troubleshooting Oracle Database in Linux 704
- Using OS Watcher (OSW) 704
- Using OS Watcher Graphs(OSWg) 706
- Using the On-Board Monitor (LTOM) 706
BOOK
SUMMARY
Items Found: 430
- A. What is New in This Book for Oracle Database 12c
- Chapter 1: Introducing Oracle
- Chapter 2: Oracle Architecture
- Chapter 3: Installing and Running Oracle
- Chapter 4: Data Structures
- Chapter 5: Managing Oracle
- Chapter 6: Oracle Security, Auditing, and Compliance
- Chapter 7: Oracle Performance
- Chapter 8: Oracle Multiuser Concurrency
- Chapter 9: Oracle and Transaction Processing
- Chapter 10: Oracle Data Warehousing and Business Intelligence
- Chapter 11: Oracle and High Availability
- Chapter 12: Oracle and Hardware Architecture
- Chapter 13: Oracle Distributed Databases and Distributed Data
- Chapter 14: Oracle Extended Datatypes
- Chapter 15: Oracle and the Cloud
- B. Additional Resources
- Web Sites
- 1. Introducing Oracle
- The Evolution of the Relational Database
- Relational Basics
- How Oracle Grew
- The Oracle Database Family
- Summary of Oracle Database Features
- Database Application Development Features
- Database Programming
- SQL
- PL/SQL
- Java
- Oracle and Web Services
- Large objects
- Object-oriented programming
- Third-generation languages (3GLs)
- Database drivers
- The Oracle Call Interface
- National Language Support
- Database Extensibility
- Oracle Multimedia
- Oracle Spatial and Graph Option
- XML DB
- Database Connection Features
- Oracle Net Services
- Oracle Internet Directory
- Oracle Connection Manager
- The Role of Oracle Fusion Middleware
- Oracle WebLogic Server
- Oracle Tuxedo
- Data Integration Tools
- Business Intelligence Tools
- WebCenter
- Identity Management
- Distributed Database Features
- Distributed Queries and Transactions
- Heterogeneous Services
- Data Movement Features
- Transportable Tablespaces
- Advanced Queuing and Oracle Streams
- Database Performance Features
- Database Parallelization
- Data Warehousing
- Bitmap indexes
- Star query optimization
- Materialized views
- Analytic functions
- OLAP Option
- Advanced Analytics Option
- Managing the Oracle Database
- Oracle Enterprise Manager 12c
- Real Application Testing Option
- Pluggable Databases
- Storage Management
- High Availability
- Flashback
- Recovery Manager
- Oracle Secure Backup
- Data Guard
- Fail Safe
- Oracle Real Application Clusters
- Database Security Features
- Advanced Security Option
- Label Security Option
- Database Vault Option
- Audit Vault and Database Firewall Option
- Oracle Database Development Tools
- Oracle SQL Developer
- Oracle Application Express
- Other Oracle Databases
- Oracle MySQL
- Berkeley DB & Oracle NoSQL Database
- Oracle TimesTen
- Cloudera Distribution of Hadoop
- 2. Oracle Architecture
- Databases and Instances
- Oracle Database Structures
- Schemas
- Tablespaces
- Files of a database
- Implementation
- PDBs and Oracle features
- Database Initialization
- Deploying Physical Components
- Control Files
- Datafiles
- Datafile structure
- Extents and segments
- Redo Logfiles
- Multiplexing redo logfiles
- How Oracle uses the redo logs
- Naming conventions for redo logs
- Archived redo logs
- ARCHIVELOG mode and automatic archiving
- Instance Memory and Processes
- Memory Structures for an Instance
- Database buffer cache
- Shared pool
- Redo log buffer
- Other pools in the SGA
- Automatic PGA management
- Background Processes for an Instance
- Configuration, Engineered Systems, and the Cloud
- The Data Dictionary
- 3. Installing and Running Oracle
- Installing Oracle
- Optimal Flexible Architecture
- Supporting Multiple Oracle Versions on a Machine
- Upgrading an Oracle Database
- Creating a Database
- Planning the Database
- The Value of Estimating
- Tools for Creating Databases
- Oracle Net Services and Oracle Net
- Resolving Oracle Net Service Names
- Global Data Services
- Oracle Net Manager
- Oracle Connection Pooling
- Auto-Discovery and Agents
- Oracle Net Configuration Files
- Starting Up the Database
- Shutting Down the Database
- Accessing a Database
- Server Processes and Clients
- Server process
- Client process
- Application Servers and Web Servers As Clients
- Oracle Net and Establishing Network Connections
- The Shared Server/Multi-Threaded Server
- Session memory for shared server processes versus dedicated server processes
- Data dictionary information about the shared server
- Database Resident Connection Pooling
- Oracle in the Cloud
- Oracle at Work
- Oracle and Transactions
- A Transaction, Step by Step
- 4. Oracle Data Structures
- Datatypes
- Character Datatypes
- Numeric Datatype
- Date Datatype
- Temporal validity
- Other Datatypes
- Type Conversion
- Concatenation and Comparisons
- NULLs
- Basic Data Structures
- Tables
- Editions
- Views
- Indexes
- B*-tree indexes
- Reverse key indexes
- Function-based indexes
- Invisible indexes
- Storage indexes
- Partitioning
- Additional Data Structures
- Sequences
- Synonyms
- Clusters
- Hash Clusters
- Extended Logic for Data
- Rules Manager
- The Expression Filter
- Data Design
- Constraints
- Triggers
- Query Optimization
- Rule-Based Optimization
- Cost-Based Optimization
- How statistics are used
- Influencing the cost-based optimizer
- Specifying an Optimizer Mode
- Newer database releases and the cost-based optimizer
- Saving the Optimization
- Comparing Optimizations
- Performance and Optimization
- SQL Translation
- Understanding the Execution Plan
- SQL Advisors
- Data Dictionary Tables
- 5. Managing Oracle
- Manageability Features
- Database Advisors
- Automatic Storage Management
- Oracle Enterprise Manager
- Enterprise Manager Architecture
- Oracle Enterprise Manager Consoles
- EM Express
- Backup and Recovery
- Types of Backup and Recovery Options
- Information Lifecycle Management
- ILM in Oracle Database 12c
- Working with Oracle Support
- Reporting Problems
- Automated Patching
- 6. Oracle Security, Auditing, and Compliance
- Security
- Usernames, Privileges, Groups, and Roles
- Security Privileges
- Special Roles: DBA, SYSDBA, and SYSOPER
- Policies
- Restricting Data-Specific Access
- View-based security
- Fine-grained access control
- Security and Application Roles and Privileges
- Distributed Database and Multitier Security
- Distributed security management
- Multitier security
- Encryption
- Data Redaction
- Secure Backup
- Auditing
- Compliance
- Oracle Database Vault Option
- Oracle Audit Vault Server
- Flashback Data Archive
- Transparent Sensitive Data Protection
- 7. Oracle Performance
- Oracle and Resource Usage
- Oracle and Disk I/O Resources
- I/O Planning Principles for an Oracle Database
- Volume managers
- Storage subsystems
- Oracles engineered systems and storage
- Oracle and Parallelism
- Block-Range Parallelism
- Parallelism for Tables and Partitions of Tables
- What Can Be Parallelized?
- Degree of parallelism
- Self-tuning adaptive parallelism
- Partition-Based Parallelism
- Parallelism for partitions and subpartitions of a table
- Fast full-index scans for nonpartitioned tables
- Parallel insert for nonpartitioned and partitioned tables
- Oracle and Memory Resources
- How Oracle Uses the System Global Area
- Automatic sizing for the SGA
- The database buffer cache
- The shared pool
- The redo log buffer
- Query results caching
- How Oracle Uses the Program Global Area
- Memory for SQL statements
- Memory for sorting within the PGA
- Oracle and CPU Resources
- Performance Tuning Basics
- Defining Performance and Performance Problems
- Monitoring and Tuning the Oracle Database for Performance
- Using the Oracle Database Resource Manager
- Additional Monitoring and Tuning Available for Oracle Exadata
- A Final Note on Performance Tuning
- 8. Oracle Multiuser Concurrency
- Basics of Concurrent Access
- Transactions
- Locks
- Concurrency and Contention
- Integrity Problems
- Serialization
- Oracle and Concurrent User Access
- Oracle Isolation Levels
- Oracle Concurrency Features
- How Oracle Handles Locking
- A Simple Write Operation
- A Conflicting Write Operation
- A Read Operation
- Concurrent Access and Performance
- Workspaces
- Workspace Implementation
- Workspace Operations
- Workspace Enhancements
- 9. Oracle and Transaction Processing
- OLTP Basics
- What Is a Transaction?
- What Does OLTP Mean?
- General characteristics
- Online and batch transaction processing
- OLTP Versus Business Intelligence
- Transactions and High Availability
- Oracle OLTP Heritage
- Architectures for OLTP
- Traditional Two-Tier Client/Server
- Stored Procedures
- Three-Tier Systems
- Application Servers and Web Servers
- The Grid
- OLTP and the Cloud
- Oracle Features for OLTP
- General Concurrency and Performance
- Scalability
- Multi-Threaded Server/shared server
- Database Resource Manager
- Real Application Clusters
- Exadata and OLTP
- 10. Oracle Data Warehousing and Business Intelligence
- Data Warehousing Basics
- The Evolution of Data Warehousing and Business Intelligence
- A Topology for Business Intelligence
- Data Marts
- The Operational Data Store and Enterprise Warehouse
- OLTP Systems and Business Intelligence
- Big Data and the Data Warehouse
- Data Warehouse Design
- Bitmap Indexes and Parallelism
- Optimization Provided by the Exadata Storage Server Software
- Dimensional Data and Hierarchies in the Database
- Summary Tables
- Analytics and Statistics in the Database
- Basic Analytic and Statistical Functions
- Other SQL Extensions
- Other Datatypes and Big Data
- Loading Data into the Data Warehouse
- Managing the Data Warehouse
- Oracle Business Intelligence Foundation Suite
- Business Intelligence Applications
- Data Discovery and Oracle Endeca Information Discovery
- Oracle Exalytics
- The Metadata Challenge
- Putting It All Together
- A Complete Analytics Infrastructure
- Best Practices
- Common Misconceptions
- Effective Strategy
- 11. Oracle and High Availability
- What Is High Availability?
- Measuring High Availability
- The System Stack and Availability
- Server Hardware, Storage, and Database Instance Failure
- What Is Instance Recovery?
- Phases of Instance Recovery
- Protecting Against System Failure
- Component Redundancy
- Disk Redundancy
- Site and Computer Server Failover
- Oracle Data Guard and Site Failures
- Oracle Active Data Guard and Zero Data Loss
- Oracle GoldenGate and Replication
- Real Application Clusters and Instance Failures
- Oracle Transparent Application Failover
- How TAF works
- TAF and various Oracle configurations
- Oracle Application Continuity
- Recovering from Failures and Data Corruption
- Developing a Backup-and-Recovery Strategy
- Taking Oracle Backups
- Using Backups to Recover
- Read-Only Tablespaces and Backups
- Old-Fashioned Data Redundancy
- Point-in-Time Recovery
- Planned Downtime
- 12. Oracle and Hardware Architecture
- System Basics
- Symmetric Multiprocessing Systems and Nodes
- Clustered Solutions, Grid Computing, and the Cloud
- Disk and Storage Technology
- Oracle Engineered Systems
- Oracle Exadata Database Machine
- Oracle Exalogic
- Oracle SuperCluster
- Oracle Database Appliance
- Other Engineered Systems
- Choosing and Defining the Right Platform
- Sizing and Planning for Growth
- Maximum Availability Architecture Considerations
- Justifying an Oracle Engineered System
- 13. Oracle Distributed Databases and Distributed Data
- Accessing Distributed Databases
- Distributed Data Across Multiple Oracle Databases
- Access to and from Non-Oracle Databases
- Two-Phase Commit
- Replication and Data Transport
- Replication Basics
- History of Oracle Replication Offerings
- Oracle GoldenGate
- Data Transport Using Database Features
- 14. Oracle Extended Datatypes
- Object-Oriented Development
- Object-Relational Features
- Objects in Oracle
- Other extensibility features
- Java Role and Web Services
- JavaBeans
- Extensibility Features and Options
- Oracle Text
- The Extensibility Architecture Framework
- 15. Oracle and the Cloud
- Cloud Definitions
- Common Characteristics
- Cloud Levels
- Is the Cloud New?
- Multitenancy
- Stateless
- Use Cases for Cloud Computing
- Oracle Database in the Cloud
- Oracle as a DBaaS
- Oracle as a PaaS
- Consumer and Provider
- Oracle Database Cloud Service
- History of Application Express
- Architecture
- Database Cloud architecture
- Access architecture
- Security and architecture
- APEX architecture
- Development with the Database Cloud Service
- APEX application development
- SQL Workshop
- Packaged applications
- RESTful Web Services
- Portability with the Database Cloud Service
- SQL Developer and the Database Cloud
- Implementing Provider Clouds
BOOK
SUMMARY
Items Found: 341
- 1 Introducing Oracle 1
- The Evolution of the Relational Database 3
- Relational Basics 4
- How Oracle Grew 5
- The Oracle Database Family 7
- Summary of Oracle Database Features 9
- Database Application Development Features 10
- Database Programming 10
- Database Extensibility 13
- Database Connection Features 14
- Oracle Net Services 14
- Oracle Internet Directory 14
- Oracle Connection Manager 14
- The Role of Oracle Fusion Middleware 15
- Oracle’s WebLogic Server 16
- Oracle Tuxedo 18
- Data Integration Tools 18
- Business Intelligence Tools 19
- WebCenter 19
- Identity Management 20
- Distributed Database Features 20
- Distributed Queries and Transactions 21
- Heterogeneous Services 21
- Data Movement Features 22
- Transportable Tablespaces 22
- Advanced Queuing and Oracle Streams 22
- Database Performance Features 23
- Database Parallelization 23
- Data Warehousing 23
- Managing the Oracle Database 25
- Oracle Enterprise Manager 12c 26
- Real Application Testing Option 27
- Pluggable Databases 27
- Storage Management 28
- High Availability 28
- Database Security Features 32
- Advanced Security Option 32
- Label Security Option 32
- Database Vault Option 33
- Audit Vault and Database Firewall Option 33
- Oracle Database Development Tools 33
- Oracle SQL Developer 34
- Oracle Application Express 34
- Other Oracle Databases 35
- Oracle MySQL 35
- Berkeley DB & Oracle NoSQL Database 36
- Oracle TimesTen 37
- Cloudera Distribution of Hadoop 37
- 2 Oracle Architecture 39
- Databases and Instances 39
- Oracle Database Structures 40
- Pluggable Databases 44
- Database Initialization 45
- Deploying Physical Components 46
- Control Files 46
- Datafiles 48
- Redo Logfiles 50
- Instance Memory and Processes 56
- Memory Structures for an Instance 58
- Background Processes for an Instance 60
- Configuration, Engineered Systems, and the Cloud 62
- The Data Dictionary 63
- 3 Installing and Running Oracle 65
- Installing Oracle 65
- Optimal Flexible Architecture 67
- Supporting Multiple Oracle Versions on a Machine 67
- Upgrading an Oracle Database 67
- Creating a Database 68
- Planning the Database 68
- The Value of Estimating 70
- Tools for Creating Databases 70
- Oracle Net Services and Oracle Net 72
- Resolving Oracle Net Service Names 73
- Global Data Services 74
- Oracle Net Manager 74
- Oracle Connection Pooling 75
- Auto-Discovery and Agents 75
- Oracle Net Configuration Files 76
- Starting Up the Database 77
- Shutting Down the Database 78
- Accessing a Database 79
- Server Processes and Clients 79
- Application Servers and Web Servers As Clients 80
- Oracle Net and Establishing Network Connections 81
- The Shared Server/Multi-Threaded Server 82
- Database Resident Connection Pooling 86
- Oracle in the Cloud 86
- Oracle at Work 87
- Oracle and Transactions 87
- Flashback 89
- A Transaction, Step by Step 90
- 4 Oracle Data Structures 93
- Datatypes 93
- Character Datatypes 94
- Numeric Datatype 95
- Date Datatype 96
- Other Datatypes 97
- Type Conversion 99
- Concatenation and Comparisons 100
- NULLs 101
- Basic Data Structures 102
- Tables 102
- Views 103
- Indexes 104
- Partitioning 109
- Additional Data Structures 111
- Sequences 111
- Synonyms 111
- Clusters 112
- Hash Clusters 113
- Extended Logic for Data 113
- Rules Manager 114
- The Expression Filter 114
- Data Design 115
- Constraints 118
- Triggers 120
- Query Optimization 122
- Rule-Based Optimization 123
- Cost-Based Optimization 124
- Specifying an Optimizer Mode 128
- Saving the Optimization 131
- Comparing Optimizations 131
- Performance and Optimization 132
- SQL Translation 132
- Understanding the Execution Plan 132
- SQL Advisors 134
- Data Dictionary Tables 134
- 5 Managing Oracle 137
- Manageability Features 139
- Database Advisors 140
- Automatic Storage Management 142
- Oracle Enterprise Manager 142
- Enterprise Manager Architecture 145
- Oracle Enterprise Manager Consoles 148
- EM Express 151
- Backup and Recovery 151
- Types of Backup and Recovery Options 152
- Oracle Secure Backup 154
- Information Lifecycle Management 154
- ILM in Oracle Database 12c 155
- Working with Oracle Support 155
- Reporting Problems 156
- Automated Patching 157
- 6 Oracle Security, Auditing, and Compliance 159
- Security 159
- Usernames, Privileges, Groups, and Roles 160
- Identity Management 161
- Security Privileges 161
- Special Roles: DBA, SYSDBA, and SYSOPER 162
- Policies 164
- Restricting Data-Specific Access 164
- Label Security Option 166
- Security and Application Roles and Privileges 166
- Distributed Database and Multitier Security 167
- Advanced Security Option 169
- Encryption 170
- Data Redaction 170
- Secure Backup 170
- Auditing 171
- Compliance 172
- Oracle Database Vault Option 173
- Oracle Audit Vault Server 174
- Flashback Data Archive 175
- Transparent Sensitive Data Protection 175
- 7 Oracle Performance 177
- Oracle and Resource Usage 178
- Oracle and Disk I/O Resources 179
- I/O Planning Principles for an Oracle Database 179
- Oracle and Parallelism 184
- Block-Range Parallelism 185
- Parallelism for Tables and Partitions of Tables 186
- What Can Be Parallelized? 187
- Partition-Based Parallelism 190
- Oracle and Memory Resources 191
- How Oracle Uses the System Global Area 191
- How Oracle Uses the Program Global Area 194
- Oracle and CPU Resources 196
- Performance Tuning Basics 198
- Defining Performance and Performance Problems 199
- Monitoring and Tuning the Oracle Database for Performance 199
- Using the Oracle Database Resource Manager 202
- Additional Monitoring and Tuning Available for Oracle Exadata 203
- A Final Note on Performance Tuning 204
- 8 Oracle Multiuser Concurrency 205
- Basics of Concurrent Access 206
- Transactions 206
- Locks 207
- Concurrency and Contention 208
- Integrity Problems 208
- Serialization 209
- Oracle and Concurrent User Access 209
- Oracle’s Isolation Levels 210
- Oracle Concurrency Features 211
- How Oracle Handles Locking 213
- A Simple Write Operation 213
- A Conflicting Write Operation 214
- A Read Operation 215
- Concurrent Access and Performance 217
- Workspaces 218
- Workspace Implementation 218
- Workspace Operations 219
- Workspace Enhancements 219
- 9 Oracle and Transaction Processing 221
- OLTP Basics 221
- What Is a Transaction? 222
- What Does OLTP Mean? 222
- OLTP Versus Business Intelligence 224
- Transactions and High Availability 225
- Oracle’s OLTP Heritage 225
- Architectures for OLTP 227
- Traditional Two-Tier Client/Server 227
- Stored Procedures 228
- Three-Tier Systems 228
- Application Servers and Web Servers 230
- The Grid 231
- OLTP and the Cloud 232
- Oracle Features for OLTP 232
- General Concurrency and Performance 232
- Scalability 234
- Real Application Clusters 237
- Exadata and OLTP 239
- High Availability 240
- 10 Oracle Data Warehousing and Business Intelligence 243
- Data Warehousing Basics 244
- The Evolution of Data Warehousing and Business Intelligence 245
- A Topology for Business Intelligence 246
- Data Marts 247
- The Operational Data Store and Enterprise Warehouse 248
- OLTP Systems and Business Intelligence 249
- Big Data and the Data Warehouse 249
- Data Warehouse Design 250
- Query Optimization 252
- Bitmap Indexes and Parallelism 253
- Optimization Provided by the Exadata Storage Server Software 255
- Dimensional Data and Hierarchies in the Database 256
- Summary Tables 256
- Materialized Views 257
- OLAP Option 257
- Analytics and Statistics in the Database 258
- Basic Analytic and Statistical Functions 258
- Other SQL Extensions 259
- Advanced Analytics Option 260
- Other Datatypes and Big Data 262
- Loading Data into the Data Warehouse 263
- Managing the Data Warehouse 265
- Business Intelligence Tools 267
- Oracle Business Intelligence Foundation Suite 267
- Business Intelligence Applications 269
- Data Discovery and Oracle Endeca Information Discovery 270
- Oracle Exalytics 271
- The Metadata Challenge 271
- Putting It All Together 272
- A Complete Analytics Infrastructure 272
- Best Practices 273
- Common Misconceptions 274
- Effective Strategy 275
- 11 Oracle and High Availability 277
- What Is High Availability? 278
- Measuring High Availability 278
- The System Stack and Availability 280
- Server Hardware, Storage, and Database Instance Failure 281
- What Is Instance Recovery? 282
- Phases of Instance Recovery 283
- Protecting Against System Failure 284
- Component Redundancy 284
- Disk Redundancy 285
- Automatic Storage Management 287
- Site and Computer Server Failover 288
- Oracle Data Guard and Site Failures 289
- Oracle Active Data Guard and Zero Data Loss 291
- Oracle GoldenGate and Replication 291
- Real Application Clusters and Instance Failures 293
- Oracle Transparent Application Failover 296
- Oracle Application Continuity 298
- Recovering from Failures and Data Corruption 299
- Developing a Backup-and-Recovery Strategy 299
- Taking Oracle Backups 300
- Using Backups to Recover 300
- Recovery Manager 302
- Read-Only Tablespaces and Backups 304
- Old-Fashioned Data Redundancy 304
- Point-in-Time Recovery 305
- Flashback 305
- Planned Downtime 307
- 12 Oracle and Hardware Architecture 309
- System Basics 310
- Symmetric Multiprocessing Systems and Nodes 311
- Clustered Solutions, Grid Computing, and the Cloud 313
- Disk and Storage Technology 316
- Oracle’s Engineered Systems 317
- Oracle Exadata Database Machine 317
- Oracle Exalogic 320
- Oracle SuperCluster 321
- Oracle Database Appliance 322
- Other Engineered Systems 322
- Choosing and Defining the Right Platform 323
- Sizing and Planning for Growth 323
- Maximum Availability Architecture Considerations 324
- Justifying an Oracle Engineered System 325
- 13 Oracle Distributed Databases and Distributed Data 327
- Accessing Distributed Databases 328
- Distributed Data Across Multiple Oracle Databases 328
- Access to and from Non-Oracle Databases 329
- Two-Phase Commit 330
- Oracle Tuxedo 331
- Replication and Data Transport 333
- Replication Basics 333
- History of Oracle Replication Offerings 334
- Oracle GoldenGate 335
- Global Data Services 336
- Data Transport Using Database Features 337
- 14 Oracle Extended Datatypes 339
- Object-Oriented Development 340
- Object-Relational Features 340
- Java’s Role and Web Services 343
- JavaBeans 344
- Extensibility Features and Options 345
- Oracle Multimedia 345
- Oracle Text 346
- XML DB 346
- Oracle Spatial and Graph Option 347
- The Extensibility Architecture Framework 350
- 15 Oracle and the Cloud 351
- Cloud Definitions 351
- Common Characteristics 352
- Cloud Levels 353
- Is the Cloud New? 354
- Use Cases for Cloud Computing 356
- Oracle Database in the Cloud 357
- Oracle as a DBaaS 357
- Oracle as a PaaS 357
- Consumer and Provider 358
- Oracle Database Cloud Service 358
- History of Application Express 360
- Architecture 361
- Development with the Database Cloud Service 364
- SQL Developer and the Database Cloud 369
- Implementing Provider Clouds 369
- A What’s New in This Book for Oracle Database 12c 371
- B Additional Resources 379
- Index 389
BOOK
SUMMARY
Items Found: 202
- CHAPTER 1 PL/SQL Concepts 1
- LAB 1.1 PL/SQL in Client/Server Architecture 2
- 1.1.1 Use PL/SQL Anonymous Blocks 8
- 1.1.2 Understand How PL/SQL Gets Executed 10
- LAB 1.2 PL/SQL in SQL*Plus 12
- 1.2.1 Use Substitution Variables 16
- 1.2.2 Use the DBMS_OUTPUT.PUT_LINE Statement 17
- Chapter 1 Try It Yourself 19
- CHAPTER 2 General Programming Language
- Fundamentals 21
- LAB 2.1 PL/SQL Programming Fundamentals 22
- 2.1.1 Make Use of PL/SQL Language Components 23
- 2.1.2 Make Use of PL/SQL Variables 24
- 2.1.3 Handle PL/SQL Reserved Words 26
- 2.1.4 Make Use of Identifiers in PL/SQL 27
- 2.1.5 Make Use of Anchored Datatypes 28
- 2.1.6 Declare and Initialize Variables 31
- 2.1.7 Understand the Scope of a Block, Nested Blocks, and Labels 34
- Chapter 2 Try It Yourself 37
- CHAPTER 3 SQL in PL/SQL 39
- LAB 3.1 Making Use of DML in PL/SQL 40
- 3.1.1 Use the Select INTO Syntax for Variable Initialization 41
- 3.1.2 Use DML in a PL/SQL Block 42
- 3.1.3 Make Use of a Sequence in a PL/SQL Block 44
- LAB 3.2 Making Use of SAVEPOINT 45
- 3.2.1 Make Use of COMMIT, ROLLBACK, and SAVEPOINT
- in a PL/SQL Block 48
- Chapter 3 Try It Yourself 51
- CHAPTER 4 Conditional Control: IF Statements 53
- LAB 4.1 IF Statements 54
- 4.1.1 Use the IF-THEN Statement 58
- 4.1.2 Use the IF-THEN-ELSE Statement 62
- LAB 4.2 ELSIF Statements 65
- 4.2.1 Use the ELSIF Statement 69
- LAB 4.3 Nested IF Statements 74
- 4.3.1 Use Nested IF Statements 76
- Chapter 4 Try It Yourself 80
- CHAPTER 5 Conditional Control: CASE Statements 81
- LAB 5.1 CASE Statements 82
- 5.1.1 Use the CASE Statement 89
- 5.1.2 Use the Searched CASE Statement 91
- LAB 5.2 CASE Expressions 96
- 5.2.1 Use the CASE Expression 100
- LAB 5.3 NULLIF and COALESCE Functions 103
- 5.3.1 The NULLIF Function 107
- 5.3.2 Use the COALESCE Function 109
- Chapter 5 Try It Yourself 112
- CHAPTER 6 Iterative Control: Part I 113
- LAB 6.1 Simple Loops 114
- 6.1.1 Use Simple Loops with EXIT Conditions 118
- 6.1.2 Use Simple Loops with EXIT WHEN Conditions 120
- LAB 6.2 WHILE Loops 124
- 6.2.1 Use WHILE Loops 128
- LAB 6.3 Numeric FOR Loops 132
- 6.3.1 Use Numeric FOR Loops with the IN Option 137
- 6.3.2 Use Numeric FOR Loops with the REVERSE Option 139
- Chapter 6 Try It Yourself 142
- CHAPTER 7 Iterative Control: Part II 143
- LAB 7.1 The CONTINUE Statement 144
- 7.1.1 Use the CONTINUE Statement 146
- 7.1.2 Use the CONTINUE WHEN Condition 152
- LAB 7.2 Nested Loops 154
- 7.2.1 Use Nested Loops 157
- Chapter 7 Try It Yourself 161
- CHAPTER 8 Error Handling and Built-in Exceptions 163
- LAB 8.1 Handling Errors 164
- 8.1.1 Understand the Importance of Error Handling 167
- LAB 8.2 Built-in Exceptions 169
- 8.2.1 Use Built-in Exceptions 174
- Chapter 8 Try It Yourself 178
- CHAPTER 9 Exceptions 179
- LAB 9.1 Exception Scope 180
- 9.1.1 Understand the Scope of an Exception 183
- LAB 9.2 User-Defined Exceptions 188
- 9.2.1 Use User-Defined Exceptions 193
- LAB 9.3 Exception Propagation 197
- 9.3.1 Understand How Exceptions Propagate 203
- 9.3.2 Reraise Exceptions 206
- Chapter 9 Try It Yourself 209
- CHAPTER 10 Exceptions: Advanced Concepts 211
- LAB 10.1 RAISE_APPLICATION_ERROR 212
- 10.1.1 Use RAISE_APPLICATION_ERROR 215
- LAB 10.2 EXCEPTION_INIT Pragma 217
- 10.2.1 USE the EXCEPTION_INIT Pragma 219
- LAB 10.3 SQLCODE and SQLERRM 222
- 10.3.1 Use SQLCODE and SQLERRM 225
- Chapter 10 Try It Yourself 227
- CHAPTER 11 Introduction to Cursors 229
- LAB 11.1 Cursor Manipulation 230
- 11.1.1 Make Use of Record Types 234
- 11.1.2 Process an Explicit Cursor 235
- 11.1.3 Make Use of Cursor Attributes 240
- 11.1.4 Put It All Together 242
- LAB 11.2 Using Cursor FOR Loops and Nested Cursors 246
- 11.2.1 Use a Cursor FOR Loop 247
- 11.2.2 Process Nested Cursors 247
- Chapter 11 Try It Yourself 252
- CHAPTER 12 Advanced Cursors 253
- LAB 12.1 Using Parameters with Cursors and Complex Nested Cursors 254
- 12.1.1 Use Parameters in a Cursor 255
- 12.1.2 Use Complex Nested Cursors 255
- LAB 12.2 FOR UPDATE and WHERE CURRENT Cursors 258
- 12.2.1 For UPDATE and WHERE CURRENT Cursors 258
- CHAPTER 13 Triggers 263
- LAB 13.1 What Triggers Are 264
- 13.1.1 Understand What a Trigger Is 272
- 13.1.2 Use BEFORE and AFTER Triggers 274
- LAB 13.2 Types of Triggers 277
- 13.2.1 Use Row and Statement Triggers 283
- 13.2.2 Use INSTEAD OF Triggers 285
- Chaper 13 Try It Yourself 290
- CHAPTER 14 Compound Triggers 291
- LAB 14.1 Mutating Table Issues 292
- 14.1.1 Understand Mutating Tables 296
- LAB 14.2 Compound Triggers 300
- 14.2.1 Understand Compound Triggers 306
- Chapter 14 Try It Yourself 313
- CHAPTER 15 Collections 315
- LAB 15.1 PL/SQL Tables 316
- 15.1.1 Use Associative Arrays 326
- 15.1.2 Use Nested Tables 330
- LAB 15.2 Varrays 334
- 15.2.1 Use Varrays 338
- LAB 15.3 Multilevel Collections 342
- 15.3.1 Use Multilevel Collections 344
- Chapter 15 Try It Yourself 348
- CHAPTER 16 Records 349
- LAB 16.1 Record Types 350
- 16.1.1 Use Table-Based and Cursor-Based Records 358
- 16.1.2 Use User-Defined Records 362
- LAB 16.2 Nested Records 367
- 16.2.1 Use Nested Records 369
- LAB 16.3 Collections of Records 373
- 16.3.1 Use Collections of Records 374
- Chapter 16 Try It Yourself 378
- CHAPTER 17 Native Dynamic SQL 379
- LAB 17.1 EXECUTE IMMEDIATE Statements 380
- 17.1.1 Use the EXECUTE IMMEDIATE Statement 387
- LAB 17.2 OPEN-FOR, FETCH, and CLOSE Statements 392
- 17.2.1 Use OPEN-FOR, FETCH, and CLOSE Statements 395
- Chapter 17 Try It Yourself 401
- CHAPTER 18 Bulk SQL 403
- LAB 18.1 The FORALL Statement 404
- 18.1.1 Use the FORALL Statement 413
- LAB 18.2 The BULK COLLECT Clause 422
- 18.2.1 Use the BULK COLLECT Statement 428
- Chapter 18 Try It Yourself 437
- CHAPTER 19 Procedures 439
- LAB 19.1 Creating Procedures 441
- 19.1.1 Create Procedures 441
- 19.1.2 Query the Data Dictionary for Information on Procedures 443
- LAB 19.2 Passing Parameters into and out of Procedures 444
- 19.2.1 Use IN and OUT Parameters with Procedures 445
- Chapter 19 Try It Yourself 447
- Part 1 447
- Part 2 447
- CHAPTER 20 Functions 449
- LAB 20.1 Creating and Using Functions 450
- 20.1.1 Create Stored Functions 451
- 20.1.2 Make Use of Functions 452
- 20.1.3 Invoke Functions in SQL Statements 453
- 20.1.4 Write Complex Functions 454
- Chapter 20 Try It Yourself 455
- CHAPTER 21 Packages 457
- LAB 21.1 The Benefits of Using Packages 458
- 21.1.1 Create Package Specifications 460
- 21.1.2 Create Package Bodies 462
- 21.1.3 Call Stored Packages 464
- 21.1.4 Create Private Objects 465
- 21.1.5 Create Package Variables and Cursors 469
- LAB 21.2 Cursor Variables 471
- 21.2.1 Make Use of Cursor Variables 475
- LAB 21.3 Extending the Package 480
- 21.3.1 Extend the Package 480
- Chapter 21 Try It Yourself 493
- CHAPTER 22 Stored Code 495
- LAB 22.1 Gathering Information About Stored Code 496
- 22.1.1 Get Stored Code Information from the Data Dictionary 496
- 22.1.2 Enforce the Purity Level with the RESTRICT_REFERENCES Pragma 500
- 22.1.3 Overload Modules 506
- Chapter 22 Try It Yourself 512
- CHAPTER 23 Object Types in Oracle 513
- LAB 23.1 Object Types 514
- 23.1.1 Use Object Types 522
- 23.1.2 Use Object Types with Collections 526
- LAB 23.2 Object Type Methods 531
- 23.2.1 Use Object Type Methods 544
- Chapter 23 Try It Yourself 554
- CHAPTER 24 Oracle Supplied Packages 555
- LAB 24.1 Making Use of Oracle Supplied Packages to Profile PL/SQL, Access Files, and Schedule Jobs 556
- 24.1.1 Access Files with UTL_FILE 563
- 24.1.2 Schedule Jobs with DBMS_JOB 563
- 24.1.3 Submit Jobs 564
- LAB 24.2 Making Use of Oracle-Supplied Packages to Generate an Explain Plan and Create HTML Pages 568
- 24.2.1 Generate an Explain Plan with DBMS_XPLAN 572
- LAB 24.3 Creating Web Pages with the Oracle Web Toolkit 578
- 24.3.1 Create an HTML Page with the Oracle Web Toolkit 594
- APPENDIX A PL/SQL Formatting Guide 597
- APPENDIX B Student Database Schema 601
- APPENDIX C ANSI SQL Standards 607
- APPENDIX D Answers to the Try It Yourself Sections 613
- INDEX 705
BOOK
SUMMARY
Items Found: 237
- Preface
- Acknowledgments
- About the Authors
- Introduction to PL/SQL New Features in Oracle 12c
- Invoker’s Rights Functions Can Be Result-Cached
- More PL/SQL-Only Data Types Can Cross the PL/SQL-to-SQL Interface
- Clause
- ACCESSIBLE BY Clause
- FETCH FIRST Clause
- Roles Can Be Granted to PL/SQL Packages and Stand-Alone Subprograms
- More Data Types Have the Same Maximum Size in SQL and PL/SQL
- Database Triggers on Pluggable Databases
- LIBRARY Can Be Defined as a DIRECTORY Object and with a
- CREDENTIAL Clause
- Implicit Statement Results
- BEQUEATH CURRENT_USER Views
- INHERIT PRIVILEGES and INHERIT ANY PRIVILEGES Privileges
- Invisible Columns
- Objects, Not Types, Are Editioned or Noneditioned
- PL/SQL Functions That Run Faster in SQL
- Predefined Inquiry Directives $$PLSQL_UNIT_OWNER and
- $$PLSQL_UNIT_TYPE
- Compilation Parameter PLSQL_DEBUG Is Deprecated
- Chapter 1 PL/SQL Concepts
- Lab 1.1: PL/SQL Architecture
- PL/SQL Architecture
- PL/SQL Block Structure
- How PL/SQL Gets Executed
- Lab 1.2: PL/SQL Development Environment
- Getting Started with SQL Developer
- Getting Started with SQL*Plus
- Executing PL/SQL Scripts
- Lab 1.3: PL/SQL: The Basics
- DBMS_OUTPUT.PUT_LINE Statement
- Substitution Variable Feature
- Summary
- Chapter 2 PL/SQL Language Fundamentals
- Lab 2.1: PL/SQL Programming Fundamentals
- PL/SQL Language Components
- PL/SQL Variables
- PL/SQL Reserved Words
- Identifiers in PL/SQL
- Anchored Data Types
- Declare and Initialize Variables
- Scope of a Block, Nested Blocks, and Labels
- Chapter 3 SQL in PL/SQL
- Lab 3.1: DML Statements in PL/SQL
- Initialize Variables with SELECT INTO
- Using the SELECT INTO Syntax for Variable Initialization
- Using DML in a PL/SQL Block
- Using a Sequence in a PL/SQL Block
- Lab 3.2: Transaction Control in PL/SQL
- Using COMMIT, ROLLBACK, and SAVEPOINT
- Putting Together DML and Transaction Control
- Chapter 4 Conditional Control: IF Statements
- Lab 4.1: IF Statements
- IF-THEN Statements
- IF-THEN-ELSE Statement
- Lab 4.2: ELSIF Statements
- Lab 4.3: Nested IF Statements
- Chapter 5 Conditional Control: CASE Statements
- Lab 5.1: CASE Statements
- CASE Statements
- Searched CASE Statements
- Lab 5.2: CASE Expressions
- Lab 5.3: NULLIF and COALESCE Functions
- NULLIF Function
- COALESCE Function
- Chapter 6 Iterative Control: Part I
- Lab 6.1: Simple Loops
- EXIT Statement
- EXIT WHEN Statement
- Lab 6.2: WHILE Loops
- Using WHILE Loops
- Premature Termination of the WHILE Loop
- Lab 6.3: Numeric FOR Loops
- Using the IN Option in the Loop
- Using the REVERSE Option in the Loop
- Premature Termination of the Numeric FOR Loop
- Chapter 7 Iterative Control: Part II
- Lab 7.1: CONTINUE Statement
- Using CONTINUE Statement
- CONTINUE WHEN Statement
- Lab 7.2: Nested Loops
- Using Nested Loops
- Using Loop Labels
- Chapter 8 Error Handling and Built-in Exceptions
- Lab 8.1: Handling Errors
- Lab 8.2: Built-in Exceptions
- Chapter 9 Exceptions
- Lab 9.1: Exception Scope
- Lab 9.2: User-Defined Exceptions
- Lab 9.3: Exception Propagation
- Re-raising Exceptions
- Chapter 10 Exceptions: Advanced Concepts
- Lab 10.1: RAISE_APPLICATION_ERROR
- Lab 10.2: EXCEPTION_INIT Pragma
- Lab 10.3: SQLCODE and SQLERRM
- Chapter 11 Introduction to Cursors
- Lab 11.1: Types of Cursors
- Making Use of an Implicit Cursor
- Making Use of an Explicit Cursor
- Lab 11.2: Cursor Loop
- Processing an Explicit Cursor
- Making Use of a User-Defined Record
- Making Use of Cursor Attributes
- Lab 11.3: Cursor FOR LOOPs
- Making Use of Cursor FOR LOOPs
- Lab 11.4: Nested Cursors
- Processing Nested Cursors
- Chapter 12 Advanced Cursors
- Lab 12.1: Parameterized Cursors
- Cursors with Parameters
- Lab 12.2: Complex Nested Cursors
- Lab 12.3: FOR UPDATE and WHERE CURRENT Cursors
- FOR UPDATE Cursor
- FOR UPDATE OF in a Cursor
- WHERE CURRENT OF in a Cursor
- Chapter 13 Triggers
- Lab 13.1: What Triggers Are
- Database Trigger
- BEFORE Triggers
- AFTER Triggers
- Autonomous Transaction
- Lab 13.2: Types of Triggers
- Row and Statement Triggers
- INSTEAD OF Triggers
- Chapter 14 Mutating Tables and Compound Triggers
- Lab 14.1: Mutating Tables
- What Is a Mutating Table?
- Resolving Mutating Table Issues
- Lab 14.2: Compound Triggers
- What Is a Compound Trigger?
- Resolving Mutating Table Issues with Compound Triggers
- Chapter 15 Collections
- Lab 15.1: PL/SQL Tables
- Associative Arrays
- Nested Tables
- Collection Methods
- Lab 15.2: Varrays
- Lab 15.3: Multilevel Collections
- Chapter 16 Records
- Lab 16.1: Record Types
- Table-Based and Cursor-Based Records
- User-Defined Records
- Record Compatibility
- Lab 16.2: Nested Records
- Lab 16.3: Collections of Records
- Chapter 17 Native Dynamic SQL
- Lab 17.1: EXECUTE IMMEDIATE Statements
- Using the EXECUTE IMMEDIATE Statement
- How to Avoid Common ORA Errors When Using EXECUTE
- IMMEDIATE
- Lab 17.2: OPEN-FOR, FETCH, and CLOSE Statements
- Opening Cursor
- Fetching from a Cursor
- Closing a Cursor
- Chapter 18 Bulk SQL
- Lab 18.1: FORALL Statements
- Using FORALL Statements
- SAVE EXCEPTIONS Option
- INDICES OF Option
- VALUES OF Option
- Lab 18.2: The BULK COLLECT Clause
- Lab 18.3: Binding Collections in SQL Statements
- Binding Collections with EXECUTE IMMEDIATE Statements
- Binding Collections with OPEN-FOR, FETCH, and CLOSE Statements
- Chapter 19 Procedures
- Benefits of Modular Code
- Block Structure
- Anonymous Blocks
- Lab 19.1: Creating Procedures
- Putting Procedure Creation Syntax into Practice
- Querying the Data Dictionary for Information on Procedures
- Lab 19.2: Passing Parameters IN and OUT of Procedures
- Using IN and OUT Parameters with Procedures
- Chapter 20 Functions
- Lab 20.1: Creating Functions
- Creating Stored Functions
- Making Use of Functions
- Lab 20.2: Using Functions in SQL Statements
- Invoking Functions in SQL Statements
- Writing Complex Functions
- Lab 20.3: Optimizing Function Execution in SQL
- Defining a Function Using the WITH Clause
- Creating a Function with the UDF Pragma
- Chapter 21 Packages
- Lab 21.1: Creating Packages
- Creating Package Specifications
- Creating Package Bodies
- Calling Stored Packages
- Creating Private Objects
- Lab 21.2: Cursor Variables
- Lab 21.3: Extending the Package
- Extending the Package with Additional Procedures
- Lab 21.4: Package Instantiation and Initialization
- Creating Package Variables During Initialization
- Lab 21.5: SERIALLY_REUSABLE Packages
- Using the SERIALLY_REUSABLE Pragma
- Chapter 22 Stored Code
- Lab 22.1: Gathering Information about Stored Code
- Getting Stored Code Information from the Data Dictionary
- Overloading Modules
- Chapter 23 Object Types in Oracle
- Lab 23.1: Object Types
- Creating Object Types
- Using Object Types with Collections
- Lab 23.2: Object Type Methods
- Constructor Methods
- Member Methods
- Static Methods
- Comparing Objects
- Chapter 24 Oracle-Supplied Packages
- Lab 24.1: Extending Functionality with Oracle-Supplied Packages
- Accessing Files within PL/SQL with UTL_FILE
- Scheduling Jobs with DBMS_JOB
- Generating an Explain Plan with DBMS_XPLAN
- Generating Implicit Statement Results with DBMS_SQL
- Lab 24.2: Error Reporting with Oracle-Supplied Packages
- Using the DBMS_UTILITY Package for Error Reporting
- Using the UTL_CALL_STACK Package for Error Reporting
- Chapter 25 Optimizing PL/SQL
- Lab 25.1: PL/SQL Tuning Tools
- PL/SQL Profiler API
- Trace API
- PL/SQL Hierarchical Profiler
- Lab 25.2: PL/SQL Optimization Levels
- Lab 25.3: Subprogram Inlining
- Appendix A PL/SQL Formatting Guide
- Case
- White Space
- Naming Conventions
- Comments
- Other Suggestions
- Appendix B Student Database Schema
- Table and Column Descriptions
- Index
BOOK
SUMMARY
Items Found: 761
- Part I. Programming in PL/SQL
- 1. Introduction to PL/SQL 3
- What Is PL/SQL? 3
- The Origins of PL/SQL 4
- The Early Years of PL/SQL 4
- Improved Application Portability 5
- Improved Execution Authority and Transaction Integrity 5
- Humble Beginnings, Steady Improvement 6
- So This Is PL/SQL 7
- Integration with SQL 7
- Control and Conditional Logic 8
- When Things Go Wrong 9
- About PL/SQL Versions 11
- Oracle Database 12c New PL/SQL Features 12
- Resources for PL/SQL Developers 14
- The O’Reilly PL/SQL Series 15
- PL/SQL on the Internet 16
- Some Words of Advice 17
- Don’t Be in Such a Hurry! 17
- Don’t Be Afraid to Ask for Help 18
- Take a Creative, Even Radical Approach 19
- 2. Creating and Running PL/SQL Code 21
- Navigating the Database 21
- Creating and Editing Source Code 22
- SQL*Plus 23
- v
- Starting Up SQL*Plus 24
- Running a SQL Statement 26
- Running a PL/SQL Program 27
- Running a Script 29
- What Is the “Current Directory”? 30
- Other SQL*Plus Tasks 31
- Error Handling in SQL*Plus 36
- Why You Will Love and Hate SQL*Plus 36
- Performing Essential PL/SQL Tasks 37
- Creating a Stored Program 37
- Executing a Stored Program 41
- Showing Stored Programs 41
- Managing Grants and Synonyms for Stored Programs 42
- Dropping a Stored Program 43
- Hiding the Source Code of a Stored Program 44
- Editing Environments for PL/SQL 44
- Calling PL/SQL from Other Languages 45
- C: Using Oracle’s Precompiler (Pro*C) 46
- Java: Using JDBC 47
- Perl: Using Perl DBI and DBD::Oracle 48
- PHP: Using Oracle Extensions 49
- PL/SQL Server Pages 51
- And Where Else? 51
- 3. Language Fundamentals 53
- PL/SQL Block Structure 53
- Anonymous Blocks 55
- Named Blocks 57
- Nested Blocks 57
- Scope 58
- Qualify All References to Variables and Columns in SQL Statements 59
- Visibility 62
- The PL/SQL Character Set 65
- Identifiers 67
- Reserved Words 68
- Whitespace and Keywords 70
- Literals 70
- NULLs 71
- Embedding Single Quotes Inside a Literal String 72
- Numeric Literals 73
- Boolean Literals 74
- The Semicolon Delimiter 74
- Comments 75
- Single-Line Comment Syntax 75
- Multiline Comment Syntax 76
- The PRAGMA Keyword 76
- Labels 77
- Part II. PL/SQL Program Structure
- 4. Conditional and Sequential Control 83
- IF Statements 83
- The IF-THEN Combination 84
- The IF-THEN-ELSE Combination 86
- The IF-THEN-ELSIF Combination 87
- Avoiding IF Syntax Gotchas 89
- Nested IF Statements 90
- Short-Circuit Evaluation 91
- CASE Statements and Expressions 93
- Simple CASE Statements 93
- Searched CASE Statements 95
- Nested CASE Statements 98
- CASE Expressions 98
- The GOTO Statement 100
- The NULL Statement 101
- Improving Program Readability 101
- Using NULL After a Label 102
- 5. Iterative Processing with Loops 105
- Loop Basics 105
- Examples of Different Loops 106
- Structure of PL/SQL Loops 107
- The Simple Loop 108
- Terminating a Simple Loop: EXIT and EXIT WHEN 109
- Emulating a REPEAT UNTIL Loop 110
- The Intentionally Infinite Loop 111
- The WHILE Loop 112
- The Numeric FOR Loop 114
- Rules for Numeric FOR Loops 114
- Examples of Numeric FOR Loops 115
- Handling Nontrivial Increments 116
- The Cursor FOR Loop 117
- Example of Cursor FOR Loops 118
- Loop Labels 119
- The CONTINUE Statement 120
- Tips for Iterative Processing 123
- Use Understandable Names for Loop Indexes 123
- The Proper Way to Say Goodbye 124
- Obtaining Information About FOR Loop Execution 126
- SQL Statement as Loop 126
- 6. Exception Handlers 129
- Exception-Handling Concepts and Terminology 129
- Defining Exceptions 132
- Declaring Named Exceptions 132
- Associating Exception Names with Error Codes 133
- About Named System Exceptions 136
- Scope of an Exception 139
- Raising Exceptions 140
- The RAISE Statement 140
- Using RAISE_APPLICATION_ERROR 141
- Handling Exceptions 143
- Built-in Error Functions 144
- Combining Multiple Exceptions in a Single Handler 149
- Unhandled Exceptions 149
- Propagation of Unhandled Exceptions 150
- Continuing Past Exceptions 153
- Writing WHEN OTHERS Handling Code 155
- Building an Effective Error Management Architecture 157
- Decide on Your Error Management Strategy 158
- Standardize Handling of Different Types of Exceptions 159
- Organize Use of Application-Specific Error Codes 162
- Use Standardized Error Management Programs 163
- Work with Your Own Exception “Objects” 165
- Create Standard Templates for Common Error Handling 167
- Making the Most of PL/SQL Error Management 169
- Part III. PL/SQL Program Data
- 7. Working with Program Data 173
- Naming Your Program Data 173
- Overview of PL/SQL Datatypes 175
- Character Data 176
- Numbers 177
- Dates, Timestamps, and Intervals 178
- Booleans 178
- Binary Data 179
- ROWIDs 179
- REF CURSORs 179
- Internet Datatypes 180
- “Any” Datatypes 180
- User-Defined Datatypes 181
- Declaring Program Data 181
- Declaring a Variable 181
- Declaring Constants 182
- The NOT NULL Clause 183
- Anchored Declarations 183
- Anchoring to Cursors and Tables 185
- Benefits of Anchored Declarations 186
- Anchoring to NOT NULL Datatypes 188
- Programmer-Defined Subtypes 188
- Conversion Between Datatypes 189
- Implicit Data Conversion 189
- Explicit Datatype Conversion 192
- 8. Strings 199
- String Datatypes 199
- The VARCHAR2 Datatype 200
- The CHAR Datatype 201
- String Subtypes 202
- Working with Strings 203
- Specifying String Constants 203
- Using Nonprintable Characters 205
- Concatenating Strings 206
- Dealing with Case 207
- Traditional Searching, Extracting, and Replacing 210
- Padding 213
- Trimming 215
- Regular Expression Searching, Extracting, and Replacing 216
- Working with Empty Strings 227
- Mixing CHAR and VARCHAR2 Values 229
- String Function Quick Reference 231
- 9. Numbers 241
- Numeric Datatypes 241
- The NUMBER Type 242
- The PLS_INTEGER Type 247
- The BINARY_INTEGER Type 248
- The SIMPLE_INTEGER Type 249
- The BINARY_FLOAT and BINARY_DOUBLE Types 251
- The SIMPLE_FLOAT and SIMPLE_DOUBLE Types 256
- Numeric Subtypes 256
- Number Conversions 257
- The TO_NUMBER Function 258
- The TO_CHAR Function 261
- The CAST Function 267
- Implicit Conversions 268
- Numeric Operators 270
- Numeric Functions 271
- Rounding and Truncation Functions 271
- Trigonometric Functions 272
- Numeric Function Quick Reference 272
- 10. Dates and Timestamps 277
- Datetime Datatypes 278
- Declaring Datetime Variables 280
- Choosing a Datetime Datatype 281
- Getting the Current Date and Time 282
- Interval Datatypes 284
- Declaring INTERVAL Variables 286
- When to Use INTERVALs 287
- Datetime Conversions 289
- From Strings to Datetimes 289
- From Datetimes to Strings 292
- Working with Time Zones 295
- Requiring a Format Mask to Match Exactly 298
- Easing Up on Exact Matches 299
- Interpreting Two-Digit Years in a Sliding Window 299
- Converting Time Zones to Character Strings 301
- Padding Output with Fill Mode 302
- Date and Timestamp Literals 302
- Interval Conversions 304
- Converting from Numbers to Intervals 304
- Converting Strings to Intervals 305
- Formatting Intervals for Display 306
- Interval Literals 307
- CAST and EXTRACT 308
- The CAST Function 308
- The EXTRACT Function 310
- Datetime Arithmetic 311
- Date Arithmetic with Intervals and Datetimes 311
- Date Arithmetic with DATE Datatypes 312
- Computing the Interval Between Two Datetimes 313
- Mixing DATEs and TIMESTAMPs 316
- Adding and Subtracting Intervals 317
- Multiplying and Dividing Intervals 317
- Using Unconstrained INTERVAL Types 318
- Date/Time Function Quick Reference 319
- 11. Records 323
- Records in PL/SQL 323
- Benefits of Using Records 324
- Declaring Records 326
- Programmer-Defined Records 327
- Working with Records 330
- Comparing Records 337
- Trigger Pseudorecords 338
- 12. Collections 341
- Collections Overview 342
- Collections Concepts and Terminology 343
- Types of Collections 345
- Collection Examples 345
- Where You Can Use Collections 349
- Choosing a Collection Type 354
- Collection Methods (Built-ins) 356
- The COUNT Method 357
- The DELETE Method 358
- The EXISTS Method 359
- The EXTEND Method 360
- The FIRST and LAST Methods 361
- The LIMIT Method 362
- The PRIOR and NEXT Methods 362
- The TRIM Method 363
- Working with Collections 365
- Declaring Collection Types 365
- Declaring and Initializing Collection Variables 369
- Populating Collections with Data 374
- Accessing Data Inside a Collection 379
- Using String-Indexed Collections 380
- Collections of Complex Datatypes 385
- Multilevel Collections 389
- Working with Collections in SQL 398
- Nested Table Multiset Operations 406
- Testing Equality and Membership of Nested Tables 408
- Checking for Membership of an Element in a Nested Table 409
- Performing High-Level Set Operations 409
- Handling Duplicates in a Nested Table 411
- Maintaining Schema-Level Collections 412
- Necessary Privileges 412
- Collections and the Data Dictionary 413
- 13. Miscellaneous Datatypes 415
- The BOOLEAN Datatype 415
- The RAW Datatype 417
- The UROWID and ROWID Datatypes 417
- Getting ROWIDs 418
- Using ROWIDs 419
- The LOB Datatypes 420
- Working with LOBs 422
- Understanding LOB Locators 423
- Empty Versus NULL LOBs 425
- Writing into a LOB 427
- Reading from a LOB 430
- BFILEs Are Different 431
- SecureFiles Versus BasicFiles 436
- Temporary LOBs 439
- Native LOB Operations 442
- LOB Conversion Functions 447
- Predefined Object Types 447
- The XMLType Type 448
- The URI Types 451
- The Any Types 453
- Part IV. SQL in PL/SQL
- 14. DML and Transaction Management 461
- DML in PL/SQL 462
- A Quick Introduction to DML 462
- Cursor Attributes for DML Operations 466
- RETURNING Information from DML Statements 467
- DML and Exception Handling 468
- DML and Records 470
- Transaction Management 473
- The COMMIT Statement 474
- The ROLLBACK Statement 474
- The SAVEPOINT Statement 475
- The SET TRANSACTION Statement 476
- The LOCK TABLE Statement 476
- Autonomous Transactions 477
- Defining Autonomous Transactions 478
- Rules and Restrictions on Autonomous Transactions 479
- Transaction Visibility 480
- When to Use Autonomous Transactions 481
- Building an Autonomous Logging Mechanism 482
- 15. Data Retrieval 485
- Cursor Basics 486
- Some Data Retrieval Terms 487
- Typical Query Operations 488
- Introduction to Cursor Attributes 489
- Referencing PL/SQL Variables in a Cursor 492
- Choosing Between Explicit and Implicit Cursors 493
- Working with Implicit Cursors 494
- Implicit Cursor Examples 495
- Error Handling with Implicit Cursors 496
- Implicit SQL Cursor Attributes 498
- Working with Explicit Cursors 500
- Declaring Explicit Cursors 501
- Opening Explicit Cursors 504
- Fetching from Explicit Cursors 505
- Column Aliases in Explicit Cursors 507
- Closing Explicit Cursors 508
- Explicit Cursor Attributes 510
- Cursor Parameters 512
- SELECT...FOR UPDATE 515
- Releasing Locks with COMMIT 516
- The WHERE CURRENT OF Clause 518
- Cursor Variables and REF CURSORs 519
- Why Use Cursor Variables? 520
- Similarities to Static Cursors 521
- Declaring REF CURSOR Types 521
- Declaring Cursor Variables 522
- Opening Cursor Variables 523
- Fetching from Cursor Variables 524
- Rules for Cursor Variables 527
- Passing Cursor Variables as Arguments 530
- Cursor Variable Restrictions 532
- Cursor Expressions 533
- Using Cursor Expressions 534
- Restrictions on Cursor Expressions 536
- 16. Dynamic SQL and Dynamic PL/SQL 537
- NDS Statements 538
- The EXECUTE IMMEDIATE Statement 538
- The OPEN FOR Statement 543
- About the Four Dynamic SQL Methods 548
- Binding Variables 550
- Argument Modes 551
- Duplicate Placeholders 553
- Passing NULL Values 554
- Working with Objects and Collections 555
- Dynamic PL/SQL 557
- Build Dynamic PL/SQL Blocks 558
- Replace Repetitive Code with Dynamic Blocks 560
- Recommendations for NDS 561
- Use Invoker Rights for Shared Programs 561
- Anticipate and Handle Dynamic Errors 562
- Use Binding Rather than Concatenation 564
- Minimize the Dangers of Code Injection 566
- When to Use DBMS_SQL 569
- Obtain Information About Query Columns 569
- Meeting Method 4 Dynamic SQL Requirements 571
- Minimizing Parsing of Dynamic Cursors 578
- Oracle Database 11g New Dynamic SQL Features 579
- Enhanced Security for DBMS_SQL 584
- Part V. PL/SQL Application Construction
- 17. Procedures, Functions, and Parameters 591
- Modular Code 592
- Procedures 593
- Calling a Procedure 596
- The Procedure Header 596
- The Procedure Body 596
- The END Label 597
- The RETURN Statement 597
- Functions 597
- Structure of a Function 598
- The RETURN Datatype 601
- The END Label 602
- Calling a Function 603
- Functions Without Parameters 604
- The Function Header 604
- The Function Body 605
- The RETURN Statement 605
- Parameters 607
- Defining Parameters 608
- Actual and Formal Parameters 608
- Parameter Modes 609
- Explicit Association of Actual and Formal Parameters in PL/SQL 613
- The NOCOPY Parameter Mode Qualifier 617
- Default Values 618
- Local or Nested Modules 619
- Benefits of Local Modularization 620
- Scope of Local Modules 623
- Sprucing Up Your Code with Nested Subprograms 623
- Subprogram Overloading 624
- Benefits of Overloading 625
- Restrictions on Overloading 628
- Overloading with Numeric Types 629
- Forward Declarations 630
- Advanced Topics 631
- Calling Your Function from Inside SQL 631
- Table Functions 637
- Deterministic Functions 647
- Implicit Cursor Results (Oracle Database 12c) 649
- Go Forth and Modularize! 650
- 18. Packages 651
- Why Packages? 651
- Demonstrating the Power of the Package 652
- Some Package-Related Concepts 655
- Diagramming Privacy 657
- Rules for Building Packages 658
- The Package Specification 658
- The Package Body 660
- Initializing Packages 662
- Rules for Calling Packaged Elements 666
- Working with Package Data 667
- Global Within a Single Oracle Session 668
- Global Public Data 669
- Packaged Cursors 669
- Serializable Packages 674
- When to Use Packages 677
- Encapsulate Data Access 677
- Avoid Hardcoding Literals 680
- Improve Usability of Built-in Features 683
- Group Together Logically Related Functionality 683
- Cache Static Session Data 684
- Packages and Object Types 685
- 19. Triggers 687
- DML Triggers 688
- DML Trigger Concepts 689
- Creating a DML Trigger 691
- DML Trigger Example: No Cheating Allowed! 696
- Multiple Triggers of the Same Type 702
- Who Follows Whom 703
- Mutating Table Errors 705
- Compound Triggers: Putting It All in One Place 706
- DDL Triggers 710
- Creating a DDL Trigger 710
- Available Events 713
- Available Attributes 713
- Working with Events and Attributes 715
- Dropping the Undroppable 718
- The INSTEAD OF CREATE Trigger 719
- Database Event Triggers 720
- Creating a Database Event Trigger 721
- The STARTUP Trigger 722
- The SHUTDOWN Trigger 723
- The LOGON Trigger 723
- The LOGOFF Trigger 723
- The SERVERERROR Trigger 724
- INSTEAD OF Triggers 728
- Creating an INSTEAD OF Trigger 728
- The INSTEAD OF INSERT Trigger 730
- The INSTEAD OF UPDATE Trigger 732
- The INSTEAD OF DELETE Trigger 733
- Populating the Tables 733
- INSTEAD OF Triggers on Nested Tables 734
- AFTER SUSPEND Triggers 736
- Setting Up for the AFTER SUSPEND Trigger 736
- Looking at the Actual Trigger 738
- The ORA_SPACE_ERROR_INFO Function 739
- The DBMS_RESUMABLE Package 740
- Trapped Multiple Times 742
- To Fix or Not to Fix? 743
- Maintaining Triggers 743
- Disabling, Enabling, and Dropping Triggers 743
- Creating Disabled Triggers 744
- Viewing Triggers 745
- Checking the Validity of Triggers 746
- 20. Managing PL/SQL Code 749
- Managing Code in the Database 750
- Overview of Data Dictionary Views 751
- Display Information About Stored Objects 753
- Display and Search Source Code 753
- Use Program Size to Determine Pinning Requirements 755
- Obtain Properties of Stored Code 756
- Analyze and Modify Trigger State Through Views 757
- Analyze Argument Information 758
- Analyze Identifier Usage (Oracle Database 11g’s PL/Scope) 759
- Managing Dependencies and Recompiling Code 762
- Analyzing Dependencies with Data Dictionary Views 763
- Fine-Grained Dependency (Oracle Database 11g) 767
- Remote Dependencies 769
- Limitations of Oracle’s Remote Invocation Model 772
- Recompiling Invalid Program Units 773
- Compile-Time Warnings 777
- A Quick Example 777
- Enabling Compile-Time Warnings 778
- Some Handy Warnings 780
- Testing PL/SQL Programs 788
- Typical, Tawdry Testing Techniques 789
- General Advice for Testing PL/SQL Code 793
- Automated Testing Options for PL/SQL 794
- Tracing PL/SQL Execution 795
- DBMS_UTILITY.FORMAT_CALL_STACK 796
- UTL_CALL_STACK (Oracle Database 12c) 798
- DBMS_APPLICATION_INFO 801
- Tracing with opp_trace 803
- The DBMS_TRACE Facility 804
- Debugging PL/SQL Programs 808
- The Wrong Way to Debug 809
- Debugging Tips and Strategies 811
- Using Whitelisting to Control Access to Program Units 816
- Protecting Stored Code 818
- Restrictions on and Limitations of Wrapping 818
- Using the Wrap Executable 819
- Dynamic Wrapping with DBMS_DDL 819
- Guidelines for Working with Wrapped Code 821
- Introduction to Edition-Based Redefinition (Oracle Database 11g Release 2) 821
- 21. Optimizing PL/SQL Performance 825
- Tools to Assist in Optimization 827
- Analyzing Memory Usage 827
- Identifying Bottlenecks in PL/SQL Code 827
- Calculating Elapsed Time 833
- Choosing the Fastest Program 834
- Avoiding Infinite Loops 836
- Performance-Related Warnings 837
- The Optimizing Compiler 838
- Insights on How the Optimizer Works 840
- Runtime Optimization of Fetch Loops 843
- Data Caching Techniques 844
- Package-Based Caching 845
- Deterministic Function Caching 850
- THe Function Result Cache (Oracle Database 11g) 852
- Caching Summary 868
- Bulk Processing for Repeated SQL Statement Execution 869
- High-Speed Querying with BULK COLLECT 870
- High-Speed DML with FORALL 877
- Improving Performance with Pipelined Table Functions 888
- Replacing Row-Based Inserts with Pipelined Function-Based Loads 889
- Tuning Merge Operations with Pipelined Functions 896
- Asynchronous Data Unloading with Parallel Pipelined Functions 898
- Performance Implications of Partitioning and Streaming Clauses in Parallel
- Pipelined Functions 902
- Pipelined Functions and the Cost-Based Optimizer 903
- Tuning Complex Data Loads with Pipelined Functions 909
- A Final Word on Pipelined Functions 916
- Specialized Optimization Techniques 917
- Using the NOCOPY Parameter Mode Hint 917
- Using the Right Datatype 921
- Optimizing Function Performance in SQL (12.1 and higher) 922
- Stepping Back for the Big Picture on Performance 923
- 22. I/O and PL/SQL 925
- Displaying Information 925
- Enabling DBMS_OUTPUT 926
- Write Lines to the Buffer 926
- Read the Contents of the Buffer 927
- Reading and Writing Files 929
- The UTL_FILE_DIR Parameter 929
- Working with Oracle Directories 931
- Open Files 932
- Is the File Already Open? 934
- Close Files 934
- Read from Files 935
- Write to Files 938
- Copy Files 941
- Delete Files 942
- Rename and Move Files 943
- Retrieve File Attributes 943
- Sending Email 944
- Oracle Prerequisites 945
- Configuring Network Security 946
- Send a Short (32,767 Bytes or Less) Plain-Text Message 947
- Include “Friendly” Names in Email Addresses 948
- Send a Plain-Text Message of Arbitrary Length 950
- Send a Message with a Short (32,767 Bytes or Less) Attachment 951
- Send a Small File (32,767 Bytes or Less) as an Attachment 953
- Attach a File of Arbitrary Size 953
- Working with Web-Based Data (HTTP) 956
- Retrieve a Web Page in “Pieces” 956
- Retrieve a Web Page into a LOB 958
- Authenticate Using HTTP Username/Password 959
- Retrieve an SSL-Encrypted Web Page (via HTTPS) 960
- Submit Data to a Web Page via GET or POST 961
- Disable Cookies or Make Cookies Persistent 965
- Retrieve Data from an FTP Server 966
- Use a Proxy Server 966
- Other Types of I/O Available in PL/SQL 967
- Database Pipes, Queues, and Alerts 967
- TCP Sockets 968
- Oracle’s Built-in Web Server 968
- Part VI. Advanced PL/SQL Topics
- 23. Application Security and PL/SQL 971
- Security Overview 971
- Encryption 973
- Key Length 974
- Algorithms 975
- Padding and Chaining 977
- The DBMS_CRYPTO Package 977
- Encrypting Data 979
- Encrypting LOBs 982
- SecureFiles 982
- Decrypting Data 983
- Performing Key Generation 984
- Performing Key Management 985
- Cryptographic Hashing 991
- Using Message Authentication Codes 993
- Using Transparent Data Encryption 994
- Transparent Tablespace Encryption 997
- Row-Level Security 999
- Why Learn About RLS? 1002
- A Simple RLS Example 1003
- Static Versus Dynamic Policies 1007
- Using Column-Sensitive RLS 1012
- RLS Debugging 1015
- Application Contexts 1019
- Using Application Contexts 1020
- Security in Contexts 1022
- Contexts as Predicates in RLS 1022
- Identifying Nondatabase Users 1026
- Fine-Grained Auditing 1028
- Why Learn About FGA? 1029
- A Simple FGA Example 1030
- Access How Many Columns? 1032
- Checking the Audit Trail 1033
- Using Bind Variables 1035
- Using Handler Modules 1036
- 24. PL/SQL Architecture 1039
- DIANA 1039
- How Oracle Executes PL/SQL Code 1040
- An Example 1041
- Compiler Limits 1044
- The Default Packages of PL/SQL 1045
- Execution Authority Models 1048
- The Definer Rights Model 1049
- The Invoker Rights Model 1054
- Combining Rights Models 1056
- Granting Roles to PL/SQL Program Units (Oracle Database 12c) 1057
- “Who Invoked Me?” Functions (Oracle Database 12c) 1060
- BEQUEATH CURRENT_USER for Views (Oracle Database 12c) 1061
- Constraining Invoker Rights Privileges (Oracle Database 12c) 1063
- Conditional Compilation 1064
- Examples of Conditional Compilation 1065
- The Inquiry Directive 1066
- The $IF Directive 1070
- The $ERROR Directive 1072
- Synchronizing Code with Packaged Constants 1072
- Program-Specific Settings with Inquiry Directives 1073
- Working with Postprocessed Code 1074
- PL/SQL and Database Instance Memory 1076
- The SGA, PGA, and UGA 1076
- Cursors, Memory, and More 1077
- Tips on Reducing Memory Use 1079
- What to Do If You Run Out of Memory 1090
- Native Compilation 1093
- When to Run in Interpreted Mode 1094
- When to Go Native 1094
- Native Compilation and Database Release 1094
- What You Need to Know 1095
- 25. Globalization and Localization in PL/SQL 1097
- Overview and Terminology 1099
- Unicode Primer 1100
- National Character Set Datatypes 1102
- Character Encoding 1102
- Globalization Support Parameters 1104
- Unicode Functions 1105
- Character Semantics 1111
- String Sort Order 1115
- Binary Sort 1116
- Monolingual Sort 1117
- Multilingual Sort 1119
- Multilingual Information Retrieval 1120
- IR and PL/SQL 1123
- Date/Time 1126
- Timestamp Datatypes 1126
- Date/Time Formatting 1127
- Currency Conversion 1131
- Globalization Development Kit for PL/SQL 1133
- UTL_118N Utility Package 1133
- UTL_LMS Error-Handling Package 1136
- GDK Implementation Options 1137
- 26. Object-Oriented Aspects of PL/SQL 1141
- Introduction to Oracle’s Object Features 1142
- Object Types by Example 1144
- Creating a Base Type 1144
- Creating a Subtype 1146
- Methods 1147
- Invoking Supertype Methods in Oracle Database 11g and Later 1152
- Storing, Retrieving, and Using Persistent Objects 1154
- Evolution and Creation 1162
- Back to Pointers? 1164
- Generic Data: The ANY Types 1171
- I Can Do It Myself 1176
- Comparing Objects 1179
- Object Views 1184
- A Sample Relational System 1186
- Object View with a Collection Attribute 1188
- Object Subview 1191
- Object View with Inverse Relationship 1192
- INSTEAD OF Triggers 1193
- Differences Between Object Views and Object Tables 1196
- Maintaining Object Types and Object Views 1197
- Data Dictionary 1197
- Privileges 1199
- Concluding Thoughts from a (Mostly) Relational Developer 1201
- 27. Calling Java from PL/SQL 1205
- Oracle and Java 1205
- Getting Ready to Use Java in Oracle 1207
- Installing Java 1207
- Building and Compiling Your Java Code 1208
- Setting Permissions for Java Development and Execution 1209
- A Simple Demonstration 1212
- Finding the Java Functionality 1212
- Building a Custom Java Class 1213
- Compiling and Loading into Oracle 1215
- Building a PL/SQL Wrapper 1217
- Deleting Files from PL/SQL 1217
- Using loadjava 1218
- Using dropjava 1221
- Managing Java in the Database 1221
- The Java Namespace in Oracle 1221
- Examining Loaded Java Elements 1222
- Using DBMS_JAVA 1223
- LONGNAME: Converting Java Long Names 1223
- GET_, SET_, and RESET_COMPILER_OPTION: Getting and Setting (a Few) Compiler Options 1224
- SET_OUTPUT: Enabling Output from Java 1225
- EXPORT_SOURCE, EXPORT_RESOURCE, and EXPORT_CLASS:
- Exporting Schema Objects 1226
- Publishing and Using Java in PL/SQL 1228
- Call Specs 1228
- Some Rules for Call Specs 1229
- Mapping Datatypes 1230
- Calling a Java Method in SQL 1232
- Exception Handling with Java 1232
- Extending File I/O Capabilities 1236
- Other Examples 1240
- 28. External Procedures 1243
- Introduction to External Procedures 1244
- Example: Invoking an Operating System Command 1244
- Architecture of External Procedures 1246
- Oracle Net Configuration 1248
- Specifying the Listener Configuration 1248
- Security Characteristics of the Configuration 1251
- Setting Up Multithreaded Mode 1252
- Creating an Oracle Library 1254
- Writing the Call Specification 1256
- The Call Spec: Overall Syntax 1257
- Parameter Mapping: The Example Revisited 1258
- Parameter Mapping: The Full Story 1260
- More Syntax: The PARAMETERS Clause 1262
- PARAMETERS Properties 1263
- Raising an Exception from the Called C Program 1266
- Nondefault Agents 1269
- Maintaining External Procedures 1272
- Dropping Libraries 1272
- Data Dictionary 1272
- Rules and Warnings 1273
- A. Regular Expression Metacharacters and Function Parameters 1275
- B. Number Format Models 1281
- C. Date Format Models 1285
- Index 1291
BOOK
SUMMARY
Items Found: 219
- 1-1. Creating a Block of Code 1
- 1-2. Executing a Block of Code in SQL*Plus 2
- 1-3. Storing Code in a Script 3
- 1-4. Executing a Stored Script 4
- 1-5. Accepting User Input from the Keyboard 5
- 1-6. Displaying Results in SQL*Plus 7
- 1-7. Commenting Your Code 8
- 1-8. Referencing a Block of Code 9
- 1-9. Referring to Variables from Nested Blocks 10
- 1-10. Ignoring Substitution Variables 12
- 1-11. Changing the Substitution Variable Character 13
- 1-12. Creating a Variable to Match a Database Column Type 14
- Chapter 2: Essential SQL 15
- 2-1. Retrieving a Single Row from the Database 15
- 2-2. Qualifying Column and Variable Names 18
- 2-3. Declaring Variable Types That Match Column Types 20
- 2-4. Returning Queried Data into a PL/SQL Record 21
- 2-5. Creating Your Own Records to Receive Query Results 22
- 2-6. Looping Through Rows from a Query 24
- 2-7. Obtaining Environment and Session Information 25
- 2-8. Formatting Query Results 29
- 2-9. Updating Rows Returned by a Query 31
- 2-10. Updating Rows Returned by a Cursor 33
- 2-11. Deleting Rows Returned by a Cursor 34
- 2-12. Performing a Transaction 35
- 2-13. Ensuring That Multiple Queries “See” the Same Data 37
- 2-14. Executing One Transaction from Within Another 38
- 2-15. Finding and Removing Duplicate Table Rows 40
- Chapter 3: Looping and Logic 43
- 3-1. Choosing When to Execute Code 43
- 3-2. Choosing Between Two Mutually Exclusive Conditions 44
- 3-3. Evaluating Multiple Mutually Exclusive Conditions 45
- 3-4. Driving from an Expression Having Multiple Outcomes 48
- 3-5. Looping Until a Specified Condition Is Met 49
- 3-6. Iterating Cursor Results Until All Rows Have Been Returned 51
- 3-7. Iterating Until a Condition Evaluates to FALSE 52
- 3-8. Bypassing the Current Loop Iteration 53
- 3-9. Iterating a Fixed Number of Times 55
- 3-10. Iterating Backward Through a Range 56
- 3-11. Iterating in Increments Other Than One 57
- 3-12. Stepping Through a Loop Based on Odd-Numbered Increments. 58
- 3-13. Exiting an Outer Loop Prematurely. 59
- 3-14. Jumping to a Designated Location in Code. 60
- Chapter 4: Functions, Packages, and Procedures . 63
- 4-1. Creating a Stored Function. 63
- 4-2. Executing a Stored Function from a Query. 67
- 4-3. Optimizing a Function That Will Always Return the Same Result for a
- Given Input 68
- 4-4. Creating a Stored Procedure. 69
- 4-5. Executing a Stored Procedure 71
- 4-6. Creating Functions Within a Procedure or Code Block 73
- 4-7. Passing Parameters by Name 74
- 4-8. Setting Default Parameter Values 75
- 4-9. Collecting Related Routines into a Single Unit 76
- 4-10. Writing Initialization Code for a Package 79
- 4-11. Granting the Ability to Create and Execute Stored Programs 80
- 4-12. Executing Packaged Procedures and Functions 81
- 4-13. Creating a Public Name for a Stored Program 82
- 4-14. Executing Package Programs in Sequence 83
- 4-15. Implementing a Failure Flag 85
- 4-16. Forcing Data Access to Go Through Packages 87
- 4-17. Executing Stored Code Under Your Own Privilege Set 88
- 4-18. Accepting Multiple Parameter Sets in One Function 89
- 4-19. Listing the Functions, Procedures, and Packages in a Schema 90
- 4-20. Viewing Source Code for Stored Programs 91
- Chapter 5: Triggers 93
- 5-1. Automatically Generating Column Values 93
- 5-2. Keeping Related Values in Sync 95
- 5-3. Responding to an Update of a Specific Table Column 97
- 5-4. Making a View Updatable 98
- 5-5. Altering the Functionality of Applications 101
- 5-6. Validating Input Data 103
- 5-7. Scrubbing Input Data 104
- 5-8. Replacing a Column’s Value 105
- 5-9. Triggering on a System Event 107
- 5-10. Triggering on a Schema-Related Event 109
- 5-11. Firing Two Triggers on the Same Event 111
- 5-12. Creating a Trigger That Fires on Multiple Events 113
- 5-13. Creating a Trigger in a Disabled State 115
- Chapter 6: Type Conversion 119
- 6-1. Converting a String to a Number 119
- 6-2. Converting a String to a Date 121
- 6-3. Converting a Number to a String 123
- 6-4. Converting a Date to a String 124
- 6-5. Converting Strings to Timestamps 127
- 6-6. Writing ANSI-Compliant Conversions 129
- 6-7. Implicitly Converting Between PLS_INTEGER and NUMBER 131
- Chapter 7: Numbers, Strings, and Dates 133
- 7-1. Concatenating Strings 133
- 7-2. Adding Some Number of Days to a Date 134
- 7-3. Adding a Number of Months to a Date 135
- 7-4. Adding Years to a Date 137
- 7-5. Determining the Interval Between Two Dates 138
- 7-6. Adding Hours, Minutes, Seconds, or Days to a Given Date 140
- 7-7. Returning the First Day of a Given Month 142
- 7-8. Returning the Last Day of a Given Month 143
- 7-9. Rounding a Number 144
- 7-10. Rounding a Datetime Value 145
- 7-11. Tracking Time to a Millisecond 146
- 7-12. Associating a Time Zone with a Date and Time 147
- 7-13. Finding a Pattern Within a String 148
- 7-14. Determining the Position of a Pattern Within a String 150
- 7-15. Finding and Replacing Text Within a String 151
- Chapter 8: Dynamic SQL 155
- 8-1. Executing a Single Row Query That Is Unknown at Compile Time 155
- 8-2. Executing a Multiple Row Query That Is Unknown at Compile Time 159
- 8-3. Writing a Dynamic INSERT Statement 161
- 8-4. Writing a Dynamic Update Statement 165
- 8-5. Writing a Dynamic Delete Statement 169
- 8-6. Returning Data from a Dynamic Query into a Record 170
- 8-7. Executing a Dynamic Block of PL/SQL 172
- 8-8. Creating a Table at Runtime 174
- 8-9. Altering a Table at Runtime 175
- 8-10. Finding All Tables That Include a Specific Column Value 176
- 8-11 Storing Dynamic SQL in Large Objects. 179
- 8-12. Passing NULL Values to Dynamic SQL. 181
- 8-13. Switching Between DBMS_SQL and Native Dynamic SQL. 182
- 8-14. Guarding Against SQL Injection Attacks. 185
- Chapter 9: Exceptions. 187
- 9-1. Trapping an Exception. 187
- 9-2. Catching Unknown Exceptions. 192
- 9-3. Creating and Raising Named Programmer-Defined Exceptions 194
- 9-4. Determining Which Error Occurred Inside the OTHERS Handler 197
- 9-5. Raising User-Defined Exceptions Without an Exception Handler 200
- 9-6. Redirecting Control After an Exception Is Raised 202
- 9-7. Raising Exceptions and Continuing Processing 204
- 9-8. Associating Error Numbers with Exceptions That Have No Name 206
- 9-9. Tracing an Exception to Its Origin 207
- 9-10. Displaying PL/SQL Compiler Warnings 211
- Chapter 10: PL/SQL Collections and Records 215
- 10-1. Creating and Accessing a VARRAY 215
- 10-2. Creating and Accessing an Indexed Table 216
- 10-3. Creating Simple Records 217
- 10-4. Creating and Accessing Record Collections 218
- 10-5. Creating and Accessing Hash Array Collections 219
- 10-6. Creating and Accessing Complex Collections 220
- 10-7. Passing a Collection As a Parameter 223
- 10-8. Returning a Collection As a Parameter 224
- 10-9. Counting the Members in a Collection 226
- 10-10. Deleting a Record from a Collection 227
- 10-11. Checking Whether an Element Exists 228
- 10-12. Increasing the Size of a Collection 229
- 10-13. Navigating Collections 230
- 10-14. Trimming a Collection 232
- Chapter 11: Automating Routine Tasks 233
- 11-1. Scheduling Recurring Jobs 233
- 11-2. E-mailing Output from a Scheduled Job 234
- 11-3. Using E-mail for Job Status Notification 235
- 11-4. Refreshing a Materialized View on a Timed Interval 236
- 11-5. Synchronizing Data with a Remote Data Source 238
- 11-6. Scheduling a Job Chain 240
- Chapter 12: Oracle SQL Developer 247
- 12-1. Creating Standard and Privileged Database Connections 247
- 12-2. Obtaining Information About Tables 249
- 12-3. Enabling Output to Be Displayed 251
- 12-4. Writing and Executing PL/SQL 253
- 12-5. Creating and Executing a Script 256
- 12-6. Accepting User Input for Substitution Variables 258
- 12-7. Saving Pieces of Code for Quick Access 259
- 12-8. Creating a Function 261
- 12-9. Creating a Stored Procedure 265
- 12-10. Creating a Package Header and Body 268
- 12-11. Creating a Trigger 272
- 12-12. Debugging Stored Code 276
- 12-13. Compiling Code Within the Navigator 278
- Chapter 13: Analyzing and Improving Performance 281
- 13-1. Installing DBMS_PROFILER 281
- 13-2. Identifying Bottlenecks 283
- 13-3. Speeding Up Read/Write Loops 285
- 13-4. Passing Large or Complex Collections as OUT Parameters 287
- 13-5. Optimizing Computationally Intensive Code 288
- 13-6. Improving Initial Execution Running Time 290
- Chapter 14: Using PL/SQL on the Web 291
- 14-1. Running a PL/SQL Procedure on the Web 291
- 14-2. Creating a Common Set of HTML Page Generation Procedures 292
- 14-3 Creating an Input Form 295
- 14-4. Creating a Web–based Report Using PL/SQL Procedures 299
- 14-5. Displaying Data from Tables 302
- 14-6. Creating a Web Form Dropdown List from a Database Query 303
- 14-7. Creating a Sortable Web Report 305
- 14-8. Passing Data Between Web Pages 308
- 14-9. Viewing Errors for Debugging Web Apps 310
- 14-10. Generating JavaScript via PL/SQL 311
- 14-11. Generating XML Output 314
- 14-12. Creating an Input Form with AJAX 315
- Chapter 15: Java in the Database 319
- 15-1. Creating a Java Database Class 319
- 15-2. Loading a Java Database Class into a Database 321
- 15-3. Loading a Compiled Java Class Into the Database 323
- 15-4. Exposing a Java Class As a Stored Procedure . 325
- 15-5. Executing a Java Stored Procedure . 325
- 15-6. Calling a Java Stored Procedure from PL/SQL . 326
- 15-7. Passing Parameters Between PL/SQL and Java . 328
- 15-8. Creating and Calling a Java Database Function. 330
- 15-9. Creating a Java Database Trigger . 332
- 15-10. Passing Data Objects from PL/SQL to Java. 334
- 15-11. Embedding a Java Class Into a PL/SQL Package 336
- 15-12. Loading Java Libraries Into the Database 338
- 15-13. Removing a Java Class 340
- 15-14. Retrieving Database Metadata with Java 341
- 15-15. Querying the Database to Help Resolve Java Compilation Issues 343
- Chapter 16: Accessing PL/SQL from JDBC, HTTP, Groovy, and Jython 345
- 16-1. Accessing a PL/SQL Stored Procedure via JDBC 345
- 16-2. Accessing a PL/SQL Stored Function from JDBC 348
- 16-3. Accessing PL/SQL Web Procedures with HTTP 350
- 16-4. Accessing PL/SQL from Jython 355
- 16-5. Accessing PL/SQL from Groovy 358
- Chapter 17: Unit Testing With utPLSQL 361
- 17-1. Testing Stored PL/SQL Code Without Unit Tests 361
- 17-2. Installing the utPLSQL Unit Testing Framework 363
- 17-3. Building a utPLSQL Test Package 365
- 17-4. Writing a utPLSQL Unit Test Procedure 367
- 17-5. Running a utPLSQL Test 369
- 17-6. Building a utPLSQL Test Suite 373
- 17-7. Running a utPLSQL Test Suite 374
- 17-8. Reconfiguring utPLSQL Parameters 381
- 17-9. Redirecting upPLSQL Test Results to a File 384
- 17-10. Automating Unit Tests for PL/SQL and Java Stored Procedures Using Ant 385
- Index 391
BOOK
SUMMARY
Items Found: 126
- Chapter 1. SQL and Data
- What Is SQL?
- Why Learn SQL?
- An Introduction to Databases
- Lab 1.1. The Relational Database
- Lab 1.2. Data Normalization and Table Relationships
- Lab 1.3. The STUDENT Schema Diagram
- Chapter 2. SQL: The Basics
- Lab 2.1. The SQL Execution Environment
- Lab 2.2. The Anatomy of a SELECT Statement
- Lab 2.3. An Introduction to SQL*Plus
- Chapter 3. The WHERE and ORDER BY Clauses
- Lab 3.1. The WHERE Clause
- Lab 3.2. The ORDER BY Clause
- Chapter 4. Character, Number, and Miscellaneous Functions
- Data Types
- Reading Syntax Diagrams
- Lab 4.1. Character Functions
- Lab 4.2. Number Functions
- Lab 4.3. Miscellaneous Single-Row Functions
- Chapter 5. Date and Conversion Functions
- Lab 5.1. Applying Oracle’s Date Format Models
- Lab 5.2. Performing Date and Time Math
- Lab 5.3. Understanding the TIMESTAMP and TIME ZONE Data Types
- Lab 5.4. Performing Calculations with the Interval Data Types
- Lab 5.5. Converting from One Data Type to Another
- Chapter 6. Aggregate Functions, GROUP BY, and HAVING Clauses
- Lab 6.1. Aggregate Functions
- Lab 6.2. The GROUP BY and HAVING Clauses
- Chapter 7. Equijoins
- Lab 7.1. The Two-Table Join
- Lab 7.2. Joining Three or More Tables
- Chapter 8. Subqueries
- Lab 8.1. Simple Subqueries
- Lab 8.2. Correlated Subqueries
- Lab 8.3. Inline Views and Scalar Subquery Expressions
- Lab 8.4. ANY, SOME, and ALL Operators in Subqueries
- Oracle SQL By Example - 4th Ed
- Chapter 9. Set Operators
- Lab 9.1. The Power of UNION and UNION ALL
- Lab 9.2. The MINUS and INTERSECT Set Operators
- Chapter 10. Complex Joins
- Lab 10.1. Outer Joins
- Lab 10.2. Self-Joins
- Chapter 11. Insert, Update, and Delete
- Lab 11.1. Creating Data and Transaction Control
- Lab 11.2. Updating and Deleting Data
- Lab 11.3. The SQL Developer Data Tab
- Chapter 12. Create, Alter, and Drop Tables
- Lab 12.1. Creating and Dropping Tables
- Lab 12.2. Altering Tables and Manipulating Constraints
- Chapter 13. Indexes, Sequences, and Views
- Lab 13.1. Indexes
- Lab 13.2. Sequences
- Lab 13.3. Views
- Chapter 14. The Data Dictionary, Scripting, and Reporting
- Lab 14.1. The Oracle Data Dictionary Views
- Lab 14.2. Scripting and Reporting
- Chapter 15. Security
- Lab 15.1. Users, Privileges, Roles, and Synonyms
- Chapter 16. Regular Expressions and Hierarchical Queries
- Lab 16.1. Regular Expressions
- Lab 16.2. Hierarchical Queries
- Chapter 17. Exploring Data Warehousing Features
- Lab 17.1. Advanced SQL Concepts, Analytical Functions, and the WITH Clause
- Lab 17.2. ROLLUP and CUBE Operators
- Chapter 18. SQL Optimization
- Lab 18.1. The Oracle Optimizer and Writing Effective SQL Statements
- Appendix A. Answers to Quiz Questions
- Chapter 1
- Chapter 2
- Chapter 3
- Chapter 4
- Chapter 5
- Chapter 6
- Chapter 7
- Chapter 8
- Chapter 9
- Chapter 10
- Chapter 11
- Chapter 12
- Chapter 13
- Chapter 14
- Chapter 15
- Chapter 16
- Chapter 17
- Chapter 18
- Appendix B. SQL Formatting Guide
- Case
- Formatting SQL Code
- SQL Developer
- Appendix C. SQL*Plus Command Reference
- SQL*Plus Commands Supported in SQL Developer
- SQL*Plus Commands
- Predefined SQL*Plus Variables
- The LOGIN.SQL and GLOGIN.SQL Files
- Formatting Output in SQL*Plus
- Editing in SQL*Plus
- SQL*Plus Line Editor Editing Commands
- Using the SQL*Plus Line Editor to Save and Retrieve Files
- Command Scripts in SQL*Plus
- Appendix D. STUDENT Database Schema
- Appendix E. Table and Column Descriptions
- Appendix F. Additional Example Tables
- Chapter 4: Character, Number, and Miscellaneous Functions
- Chapter 5: Date and Conversion Functions
- Chapter 10: Complex Joins
- Chapter 11: Insert, Update, and Delete
- Chapter 16: Regular Expressions and Hierarchical Queries
- Chapter 17: Exploring Data Warehousing Features
- Appendix G. Navigating the Oracle Documentation
- Where Do You Find the Oracle Documentation?
- Navigating the Library
- Jump-Starting Your Search
- Oracle Documentation Titles
- Error Messages
- Reading Oracle Syntax Diagrams
- Appendix H. Resources
- Useful Oracle-Related Web Sites
- Alternative SQL Execution Tools
- Database Design Software
- User Groups
- Oracle-Related Publications
- Academic Resources
- Books
- Appendix I. Oracle Data Types
BOOK
SUMMARY
Items Found: 406
- 13 Unusual Query Types 285
- 12.4.7 Other Uses for Subqueries 282
- 12.4.6 Inline Views 281
- 12.4.5 Nested Subqueries 280
- 12.4.4 Regular versus Correlated Subqueries 279
- 12.4.3 Multiple-Column Subqueries 276
- 12.4.2 Multiple-Row Subqueries 272
- 12.4.1 Single-Row Subqueries 270
- 12.4 Demonstrating Subqueries 270
- 12.3 Comparison Conditions and Subqueries 269
- 12.2 Where Can Subqueries Be Used? 269
- 12.1 Types of Subqueries 267
- 12 Subqueries 267
- 11.5.3 Using the SPREADSHEET (MODEL) Clause 262
- 11.5.2 SPREADSHEET (MODEL) Clause Functions 261
- 11.5.1 SPREADSHEET (MODEL) Clause Syntax 261
- 11.5 The SPREADSHEET (MODEL) Clause 260
- 11.4.3.3 The GROUPING SETS Clause 258
- 11.4.3.2 The CUBE Clause 257
- 11.4.3.1 The ROLLUP Clause 256
- 11.4.3 Extending the GROUP BY Clause Further 255
- 11.4.2 Filtering Grouped Results with the Having Clause 253
- 11.4.1 Grouping Rows 250
- 11.4 Using the GROUP BY Clause 249
- 11.3.2 Selecting DISTINCT or ALL in Group Functions 246
- 11.3.1 Group Functions and Null Values 245
- 11.3 Special Grouping Function Behavior 245
- 11.2.2.1 The OVER Clause 242
- 11.2.2 Enhancing Grouping Functions for Analysis 241
- 11.2.1.5 Grouping Functions 240
- 11.2.1.4 Ranking Functions 240
- 11.2.1.3 Statistical Distribution Functions 240
- 11.2.1.2 Statistical Function Calculators 238
- 11.2.1.1 Simple Summary Functions 238
- 11.2.1 Aggregate Functions 237
- 11.2 Types of Group Functions 237
- 11.1 GROUP BY Clause Syntax 235
- 11 Grouping and Summarizing Data 235
- 10.3.6 Mutable and Complex Joins 230
- 10.3.5 Equi-Joins, Anti-Joins, and Range Joins 230
- 10.3.4.2 Hierarchical (Fishhook) Self-Join 228
- 10.3.4.1 Grouping Self-Join 226
- 10.3.4 Self-Join 225
- 10.3.3.3 Full Outer Join 224
- 10.3.3.2 Right Outer Join 223
- 10.3.3.1 Left Outer Join 218
- 10.3.3 Outer Join 217
- 10.3.2.2 The ON clause 215
- 10.3.2.1 The USING clause 213
- 10.3.2 Natural or Inner Join 212
- 10.3.1 Cross-Join or Cartesian Product 210
- 10.3 Examining Different Types of Joins 210
- 10.2 Types of Joins 207
- 10.1.2 ANSI Format 206
- 10.1.1 Oracle’s Proprietary Format 206
- 10.1 Join Formats 206
- 10 Joining Tables 205
- 9.3 Combining Functions 196
- 9.2.5 Miscellaneous Functions 194
- 9.2.4.2 Date Conversion Function Formats 191
- 9.2.4.1 Number Conversion Function Formats 190
- 9.2.4 Datatype Conversion Functions 190
- 9.2.3 Date Functions 186
- 9.2.2.1 Binary Floating-Point Number Functions 185
- 9.2.2 Number Functions 182
- 9.2.1 String Functions 180
- 9.2 Single-Row Functions 176
- 9.1 Types of Functions 176
- 9 Single-Row Functions 175
- 8.4.4 Customizing iSQL*Plus Display 172
- 8.4.3 Troubleshooting iSQL*Plus 171
- 8.4.2 iSQL*Plus versus SQL*Plus 171
- 8.4.1 Embedding Scripts in HTML 168
- 8.4 Using iSQL*Plus 165
- 8.3.2 Lines, Pages, and Breaks 160
- 8.3.1.1 Formatting Dates 158
- 8.3.1 Column Formatting and Headings 154
- 8.3 Formatting Query Output in SQL*Plus 153
- 8.2 Using Scripts and Variables 148
- 8.1 Environmental Settings 137
- 8 Using SQL*Plus 137
- 7.4 Pseudocolumns 134
- 7.3 Conditions 131
- 7.2.7 User-Defined Operators 131
- 7.2.6 Multiset Operators 129
- 7.2.5 Set Operators 129
- 7.2.4 Hierarchical Query Operators 128
- 7.2.3 The Concatenation Operator 128
- 7.2.2 Logical Operators 126
- 7.2.1 Arithmetic Operators 125
- 7.2 Operators 124
- 7.1 Precedence 124
- 7 Operators, Conditions, and Pseudocolumns 123
- 6.3.2 Sorting by Expression 119
- 6.3.1 Sorting by Position 117
- 6.3 Sorting Methods 117
- 6.2 Sorting and Null Values 113
- 6.1.1 Some Simple ORDER BY Clause Examples 111
- 6.1 ORDER BY Clause Syntax 109
- 6 Sorting Rows 109
- 5.4 Top-N Queries 105
- 5.3 Logical Operators in the WHERE Clause 105
- 5.2 WHERE Clause Expression Conditions 101
- 5.1.1 Some Simple WHERE Clause Examples 98
- 5.1 WHERE Clause Syntax 97
- 5 Filtering Rows 97
- 4.3.6 Using Pseudocolumns 94
- 4.3.5 Null Values 93
- 4.3.4 Using DISTINCT 92
- 4.3.3 Arithmetic Operations 91
- 4.3.2 Using Functions 90
- 4.3.1 The DUAL Table 89
- 4.3 Other Aspects of the SELECT Statement 88
- 4.2.9 Composite Queries 88
- 4.2.8 Hierarchical Query 86
- 4.2.7 Table or View Creation Query 85
- 4.2.6 Subquery 85
- 4.2.5 Join Query 84
- 4.2.4 Grouping or Aggregated Query 83
- 4.2.3 Sorted Query 83
- 4.2.2 Filtered Query 82
- 4.2.1 Simple Query 82
- 4.2 Types of SELECT Queries 81
- 4.1.3 Some Simple Example SELECT Statements 76
- 4.1.2 Syntax Conventions 74
- 4.1.1 Uses of the SELECT Statement 73
- 4.1 The Basic SELECT Statement 73
- 4 The SELECT Statement 73
- 3.5.5 Clustering and Oracle RAC 70
- 3.5.4 Standby Databases 69
- 3.5.3 Replication 68
- 3.5.2 Partitioning 67
- 3.5.1 Oracle Managed Files 67
- 3.5 Enhancing the Physical Architecture 67
- 3.4 Database Startup and Shutdown 65
- 3.3.4 Temporary Sort Space 64
- 3.3.3 Rollback and Undo 62
- 3.3.2 Controlfiles, Logging, and Archiving 61
- 3.3.1 Datafiles, Tablespaces, and Objects 60
- 3.3 Oracle Database Physical Architecture 60
- 3.2 The Oracle Instance 58
- 3.1 The Basic Concepts 51
- 3 Oracle Database Architecture 51
- 2.2.2 New PL/SQL Features in Oracle Database 9i 48
- 2.2.1 Oracle SQL Improvements in Oracle Database 9i 47
- 2.2 New Features in Oracle Database 9i 46
- 2.1.5 Database Object Improvements in Oracle 10g 46
- Database 10g 45
- 2.1.4 Some Utility Improvements in Oracle
- 2.1.3 XML Improvements in Oracle Database 10g 45
- 2.1.2.1 Java Improvements in Oracle Database 10g 45
- 2.1.2 PL/SQL Improvements in Oracle Database 10g 44
- 2.1.1 Oracle SQL Improvements in Oracle Database 10g 39
- 2.1 New Features in Oracle Database 10g 39
- 2 New Features of Oracle SQL 39
- 1.7.1 The MUSIC Schema Sales Data Warehouse 36
- 1.7 The MUSIC Schema 34
- 1.6.4 iSQL*Plus 31
- 1.6.3 SQL*Plus Worksheet 28
- 1.6.2 SQL*Plus in Windows Mode 24
- 1.6.1 SQL*Plus in Command-Line Mode 19
- 1.6 SQL Tools 19
- 1.5 Syntax Conventions Used in This Book 17
- 1.4 Software Useful for Reading this Book 16
- 1.3.2.1 ANSI Standards and Oracle 15
- 1.3.2 What Is Oracle SQL? 15
- 1.3.1 The Humble Origins of SQL 14
- 1.3 Structured Query Language (SQL) 14
- 1.2.3 Different Forms of the Relational Data Model 13
- 1.2.2 Denormalization 11
- 1.2.1.1 Referential Integrity 10
- 1.2.1 Normalization 8
- 1.2 The Basics of Relational Data Modeling 8
- 1.1.3 The Evolution of Oracle Database 6
- 1.1.2 The History of Relational Databases 5
- 1.1.1 The Evolution of Database Modeling 1
- 1.1 A Little History 1
- 1 Introduction to Oracle SQL 1
- vii
- Index 627
- Appendix C 625
- Appendix B 623
- Appendix A 569
- 24 Basic PL/SQL 531
- 23 Security 503
- 22 Sequences and Synonyms 489
- 21 Indexes and Clusters 471
- 20 Constraints 447
- 19 Views 425
- 18 Tables 383
- 17 XML in Oracle 357
- 16 Datatypes and Collections 339
- 15 Data Manipulation Language (DML) 315
- 14 Expressions 301
- 13.1 Composite Queries 285
- 13.1.1 Set Operators 285
- 13.1.2 Using Composite Queries 286
- 13.2 Hierarchical Queries 289
- 13.2.1 Hierarchical Query Operators 290
- 13.2.2 Hierarchical Query Pseudocolumns 290
- 13.2.3 Using Hierarchical Queries 290
- 13.3 Flashback and Versions Queries 292
- 13.3.1 Flashback Query Syntax 293
- 13.3.2 Versions Query Pseudocolumns 294
- 13.3.3 Using Flashback Queries 294
- 13.4 Parallel Queries 297
- 14.1 Types of Expressions 302
- 14.2 Regular Expressions 305
- 14.2.1 Regular Expression Functions 305
- 14.2.2 Regular Expression Patterns 306
- 14.2.3 Using Regular Expressions 307
- 14.3 Oracle Expression Filter 309
- 15.1 What Is DML? 315
- 15.2 Transaction Control 317
- 15.2.1 Locks 318
- 15.2.2 The SET TRANSACTION Command 319
- 15.2.3 The SAVEPOINT Command 322
- 15.3 Adding Data (INSERT) 324
- 15.3.1 Inserting One Row 325
- 15.3.2 Inserting with a Subquery 326
- 15.3.3 The Multiple-Table INSERT Command 327
- 15.4 Changing Data (UPDATE) 330
- 15.4.1 Updating One Row 331
- 15.4.2 Updating Many Rows 331
- 15.5 Deleting Data (DELETE) 334
- 15.5.1 Deleting One Row 334
- 15.5.2 Deleting Many Rows 334
- 15.5.3 Deleting All Rows 336
- 15.6 Merging New and Old Data (MERGE) 336
- 15.6.1 How To Use MERGE 337
- 16.1 Simple Datatypes 339
- 16.2 Complex and Object Datatypes 342
- 16.2.1 Binary Object Datatypes 342
- 16.2.2 Reference Pointer Datatypes 343
- 16.2.2.1 Using the REF Datatype 344
- 16.2.2.2 Using the BFILE Datatype 345
- 16.2.3 User-Defined Datatypes 347
- 16.2.4 Object Collection Datatypes 348
- 16.2.4.1 Using VARRAY Collections 349
- 16.2.4.2 Using Nested Table Collections 350
- 16.2.5 Object Collection Functions 352
- 16.2.6 Metadata Views 354
- 16.3 Special Datatypes 355
- 17.1 What Is XML? 357
- 17.1.1 What Is XSL? 360
- 17.2 Using XML in Oracle 360
- 17.2.1 Creating XML Documents 361
- 17.2.1.1 The XMLType Datatype 361
- 17.2.1.2 Generating XML from Tables 362
- The SQL/XML Standard 363
- The SYS_XMLGEN Function 372
- 17.2.2 XML and the Database 373
- 17.2.2.1 New XML Documents 373
- 17.2.2.2 Retrieving from XML Documents 374
- 17.2.2.3 Changing and Removing XML Document Content 378
- 17.3 Metadata Views 380
- 18.1 What Is a Table? 383
- 18.1.1 Types of Tables 383
- 18.1.2 Methods of Creating Tables 384
- 18.1.2.1 Scripted Method 385
- 18.1.2.2 CREATE TABLE AS Subquery 386
- 18.1.2.3 Tools 386
- 18.2 CREATE TABLE Syntax 387
- 18.3 Creating Different Table Types 388
- 18.3.1 Creating Relational Tables 388
- 18.3.2 Creating Object Tables 390
- 18.3.3 Creating Temporary Tables 393
- 18.3.4 Creating Index-Organized Tables (IOTs) 397
- 18.3.5 Creating External Tables 398
- 18.3.6 Creating Partitioned Tables 402
- 18.3.6.1 What Are the Types of Partitions? 402
- Partition Indexing 402
- 18.3.6.2 CREATE TABLE Partition Syntax 403
- CREATE TABLE Range Partition Syntax 403
- CREATE TABLE List Partition Syntax 403
- CREATE TABLE Hash Partition Syntax 404
- CREATE TABLE Range-Hash Partition Syntax 405
- CREATE TABLE Range-List Partition Syntax 405
- 18.4 Changing Table Structure 407
- 18.4.1 Adding, Modifying, and Removing Columns 408
- 18.4.2 Rebuilding a Table 412
- 18.4.3 Renaming a Table 413
- 18.5 Dropping a Table 414
- 18.5.1 Truncating Instead of Dropping Tables 415
- 18.6 Adding Comments to Tables 416
- 18.6.1 Adding Comments to Schema Objects 416
- 18.6.2 Scripting and SQL Code Comments 419
- 18.7 The Recycle Bin 420
- 18.8 Metadata Views 421
- 19.1 What Is a View? 425
- 19.2 Types and Uses of Views 426
- 19.3 CREATE VIEW Syntax 427
- 19.3.1 Creating Simple Views 428
- 19.3.2 Creating Constraint Views 429
- 19.3.3 Creating Complex Views 430
- 19.3.3.1 Views with Joins 430
- 19.3.3.2 Inline Subquery Views 432
- 19.4 Changing and Dropping Views 433
- 19.5 Working with Views 435
- 19.5.1 Querying a View 435
- 19.5.2 Views and DML Commands 437
- 19.5.2.1 DML and Views with Joins 440
- 19.6 Metadata Views 441
- 19.7 Data Dictionary Views (Metadata) 442
- 20.1 What Are Constraints? 448
- 20.1.1 Types and Uses of Constraints 448
- 20.2 Managing Constraints 449
- 20.2.1 CREATE TABLE Syntax 450
- 20.2.1.1 Primary Key and Unique Constraints 451
- 20.2.1.2 Foreign Key Constraints 452
- Out-of-Line Primary and Foreign Keys 453
- 20.2.1.3 Check Constraints 456
- 20.2.1.4 REF Constraints 459
- 20.2.2 CREATE VIEW Syntax 460
- 20.3 Adding, Modifying, and Dropping Constraints 460
- 20.3.1 ALTER TABLE Syntax 460
- 20.3.2 ALTER VIEW Syntax 461
- 20.3.3 Working with Constraints and ALTER TABLE 461
- 20.3.3.1 Adding a Constraint to an Existing Table 462
- 20.3.3.2 Modifying Constraints on Existing Tables 463
- 20.3.3.3 Constraint States 463
- 20.3.4 Renaming a Constraint 464
- 20.3.5 Dropping Constraints 465
- 20.3.5.1 Dropping Constraints with CASCADE 466
- 20.4 Metadata Views 469
- 21.1 Indexes 471
- 21.1.1 What Is an Index? 471
- 21.1.2 Types of Indexes 474
- 21.1.2.1 Index Attributes 476
- 21.1.3 Creating Indexes 477
- 21.1.4 Changing and Dropping Indexes 482
- 21.1.5 More Indexing Refinements 483
- 21.2 Clusters 484
- 21.2.1 What is a Cluster? 484
- 21.2.2 Types of Clusters 485
- 21.2.3 Creating Clusters 485
- 21.3 Metadata Views 487
- 22.1 Sequences 489
- 22.1.1 Creating Sequences 490
- 22.1.2 Changing and Dropping Sequences 493
- 22.1.3 Using Sequences 494
- 22.1.3.1 Using the CURRVAL and NEXTVAL Pseudocolumns 495
- 22.1.3.2 Using Sequences in an INSERT Statement 496
- 22.1.3.3 Other Uses of Sequences 497
- 22.2 Synonyms 498
- 22.2.1 Creating Public Synonyms 499
- 22.2.2 Creating Private Synonyms 500
- 22.2.3 Using Synonyms 500
- 22.3 Metadata Views 501
- 23.1 Users 503
- 23.1.1 Users Provided by Oracle 504
- 23.1.2 Creating Users 505
- 23.1.3 Modifying User Passwords 508
- 23.1.4 Dropping Users 510
- 23.2 Privileges 511
- 23.2.1 Granting Privileges 511
- 23.2.2 Revoking Privileges 518
- 23.2.2.1 Revoked System Privileges DO NOT Cascade 520
- 23.2.2.2 Revoked Object Privileges DO Cascade 521
- 23.3 Grouping Privileges Using Roles 522
- 23.3.1 Creating and Altering Roles 523
- 23.3.2 Granting and Revoking Privileges on Roles 524
- 23.3.3 Setting User Roles 527
- 23.3.4 Dropping Roles 529
- 23.4 Metadata Views 530
- 24.1 What is PL/SQL? 531
- 24.2 Why Is PL/SQL a Programming Language? 532
- 24.2.1 Blocks and Exception Trapping 533
- 24.2.2 Procedures, Functions, Triggers, and Packages 534
- 24.2.2.1 Using Named Procedures 535
- 24.2.2.2 Using Functions 535
- 24.2.2.3 Using Triggers 537
- 24.2.2.4 Using Packages 539
- 24.3 Variables and Datatypes in PL/SQL 541
- 24.4 Retrieving Data in PL/SQL 543
- 24.4.1 Explicit Cursors 543
- 24.4.2 Implicit Cursors 544
- 24.4.2.1 The Internal SQL Implicit Cursor 545
- 24.4.2.2 Single-Row SELECT Implicit Cursor 547
- 24.4.2.3 Cursor FOR Loop Implicit Cursor 547
- 24.5 Changing Data in PL/SQL 549
- 24.6 Dynamic SQL 550
- 24.6.1 Building Cursors Dynamically 552
- 24.7 Control Structures 553
- 24.7.1 Selection 554
- 24.7.1.1 The IF Statement 554
- 24.7.1.2 The CASE Statement 556
- CASE Statement Search Condition 557
- CASE Statement Selector and Expression 558
- 24.7.2 Iteration or Repetition 560
- 24.7.2.1 The FOR Loop 561
- 24.7.2.2 The WHILE Loop 564
- 24.7.2.3 The LOOP .END LOOP Construct 564
- 24.7.2.4 The FORALL Command 565
- 24.7.3 Sequence Controls 565
- 24.7.3.1 The GOTO Statement 566
- 24.7.3.2 The NULL Command 566
- 24.8 Objects and Methods 567
- 24.9 Oracle-Provided Packages 567
- 24.10 Metadata Views 568
- Appendix A
- Schema Scripting 569
- Appendix B
- Utility Scripts 623
- Appendix C
- Sources of Information 625
BOOK
SUMMARY
Items Found: 570
- 13.3.4 Windows 2000 Installation Failures 405
- 13.3.3 Windows 0x101 Bluescreens with SMP Enabled (IPI Timeout) 405
- 13.3.2 Windows Bluescreens After Changing VM Configuration 404
- 13.3.1 No USB 3.0 Support in Windows 7 Guests 404
- 13.3 Windows Guests 404
- 13.2.7 GUI: 2D Video Acceleration Option is Grayed Out 404
- 13.2.6 Poor Performance Caused by Host Power Management 403
- 13.2.5 Inaccurate Windows CPU Usage Reporting 403
- 13.2.4 Frequency Scaling Effect on CPU Usage 403
- 13.2.3 Performance Variation with Frequency Boosting 403
- 13.2.2 Responding to Guest IDE/SATA Flush Requests 402
- 13.2.1 Guest Shows IDE/SATA Errors for File-Based Images on Slow Host File System 402
- 13.2 General Troubleshooting 402
- 13.1.5 VM Core Format 401
- 13.1.4 The Built-In VM Debugger 399
- 13.1.3 Using the VBoxBugReport Command to Collect Debug Information Automatically 398
- 13.1.2 Collecting Debugging Information 398
- 13.1.1 Categorizing and Isolating Problems 397
- 13.1 Procedures and Tools 397
- 13 Troubleshooting 397
- 12 Oracle VM VirtualBox Programming Interfaces 396
- 11.6 Nested Paging and VPIDs 395
- 11.5 Paravirtualization Providers 394
- 11.4 Details About Hardware Virtualization 394
- 11.3 Hardware Virtualization 393
- 11.2 Oracle VM VirtualBox Executables and Components 391
- 11.1.4 Oracle VM VirtualBox XML Files 390
- 11.1.3 Summary of Configuration Data Locations 390
- 11.1.2 Global Settings 390
- 11.1.1 The Machine Folder 389
- 11.1 Where Oracle VM VirtualBox Stores its Files 389
- 11 Technical Background 389
- 10.36 VISO file format / RTIsoMaker 382
- 10.35.1 Known Issues 382
- 10.35 VBoxSVC running in Windows Session 0 382
- 10.34 Nested Virtualization 381
- 10.33 Using Hyper-V with Oracle VM VirtualBox 381
- 10.32.2 Security Considerations 381
- 10.32.1 Setting up USB/IP Support on a Linux System 380
- 10.32 Accessing USB devices Exposed Over the Network with USB/IP 380
- 10.31 PC Speaker Passthrough 379
- 10.30.1 Hyper-V Debug Options 376
- 10.30 Paravirtualized Debugging 376
- 10.29.4 Decrypting Encrypted Images 376
- 10.29.3 Starting a VM with Encrypted Images 375
- 10.29.2 Encrypting Disk Images 375
- 10.29.1 Limitations of Disk Encryption 375
- 10.29 Encryption of Disk Images 374
- 10.28 Configuring the Heartbeat Service 374
- 10.27 Capturing USB Traffic for Selected Devices 374
- 10.26 Support for Keyboard Indicator Synchronization 373
- 10.25 Passing Through SSE4.1/SSE4.2 Instructions 373
- 10.24 Handling of Host Power Management Events 372
- 10.23 Oracle VM VirtualBox Expert Storage Management 372
- 10.22.4 Decrypting Encrypted VMs 372
- 10.22.3 Opening the Encrypted VM 372
- 10.22.2 Encrypting a VM 371
- 10.22.1 Limitations of VM Encryption 371
- 10.22 Encryption of VMs 371
- 10.21.4 Windows: Starting the Autostart Service 370
- 10.21.3 macOS: Starting the Autostart Service With launchd 369
- 10.21.2 Oracle Solaris: Starting the Autostart Service With SMF 369
- 10.21.1 Linux: Starting the Autostart Service With init 368
- 10.21 Starting Virtual Machines During System Boot 368
- 10.20 Other Extension Packs 368
- 10.19.5 Oracle Solaris: Starting the Watchdog Service With SMF 367
- 10.19.4 Linux: Starting the Watchdog Service With init 367
- 10.19.3 More Information 366
- 10.19.2 Host Isolation Detection 366
- 10.19.1 Memory Ballooning Control 365
- 10.19 Oracle VM VirtualBox Watchdog 364
- 10.18.3 macOS: Starting the Web Service With launchd 364
- 10.18.2 Oracle Solaris: Starting the Web Service With SMF 364
- 10.18.1 Linux: Starting the Web Service With init 363
- 10.18 Starting the Oracle VM VirtualBox Web Service Automatically 363
- 10.17.13Removing Certain Modes of Networking From the GUI 362
- 10.17.12Requesting Legacy Full-Screen Mode 362
- 10.17.11Configuring Automatic Mouse Capturing 362
- 10.17.10Action for Handling a Guru Meditation 361
- 10.17.9 Default Action when Terminating the VM 361
- 10.17.8 Action when Terminating the VM 360
- 10.17.7 Host Key Customization 360
- 10.17.6 Configure VM Window Visual Modes 359
- 10.17.5 Configure VM Window Status Bar Entries 358
- 10.17.4 Configure VM Window Menu Entries 353
- 10.17.3 Configure VM Selector Menu Entries 353
- 10.17.2 VM Selector Customization 352
- 10.17.1 Customizing VirtualBox Manager 352
- 10.17 Locking Down VirtualBox Manager 352
- 10.16 Oracle VM VirtualBox and Oracle Solaris Kernel Zones 351
- 10.15 Configuring the Oracle VM VirtualBox CoreDumper on Oracle Solaris Hosts 350
- 10.14 Configuring Multiple Host-Only Network Interfaces on Oracle Solaris Hosts 350
- 10.13 Oracle VM VirtualBox VNIC Templates for VLANs on Oracle Solaris 11 Hosts 349
- 10.12 Installing the Alternate Bridged Networking Driver on Oracle Solaris 11 Hosts 348
- 10.11.4 Disabling the Guest Additions Time Synchronization 348
- 10.11.3 Tuning the Guest Additions Time Synchronization Parameters 348
- 10.11.2 Accelerate or Slow Down the Guest Clock 347
- 10.11.1 Configuring the Guest Time Stamp Counter (TSC) to Reflect Guest Execution 347
- 10.11 Fine Tuning Timers and Time Synchronization 347
- 10.10 Configuring Custom ACPI Tables 347
- 10.9 Configuring the BIOS DMI Information 345
- 10.8.7 Configuring Aliasing of the NAT Engine 345
- 10.8.6 Using the Host’s Resolver as a DNS Proxy in NAT Mode 344
- 10.8.5 Enabling DNS Proxy in NAT Mode 344
- 10.8.4 Binding NAT Sockets to a Specific Interface 343
- 10.8.3 Tuning TCP/IP Buffers for NAT 343
- 10.8.2 Configuring the Boot Server (Next Server) of a NAT Network Interface 343
- 10.8.1 Configuring the Address of a NAT Network Interface 343
- 10.8 Fine Tuning the Oracle VM VirtualBox NAT Engine 343
- 10.7.3 Access iSCSI Targets Using Internal Networking 342
- 10.7.2 Configuring the Hard Disk Vendor Product Data (VPD) 341
- 10.7.1 Using a Raw Host Hard Disk From a Guest 339
- 10.7 Advanced Storage Configuration 339
- 10.6.2 Configuring the Maximum Resolution of Guests When Using the Graphical Frontend 339
- 10.6.1 Custom VESA Resolutions 338
- 10.6 Advanced Display Configuration 338
- 10.5.4 Linux and Oracle Solaris Hosts 338
- 10.5.3 macOS Hosts 338
- 10.5.2 Windows Hosts 338
- 10.5.1 Using a Host Webcam in the Guest 337
- 10.5 Webcam Passthrough 337
- 10.4 CPU Hot-Plugging 336
- 10.3.2 Guest Graphics and Mouse Driver Setup in Depth 335
- 10.3.1 Manual Setup of Selected Guest Services on Linux 335
- 10.3 Advanced Configuration for Linux and Oracle Solaris Guests 335
- 10.2.1 Automated Windows System Preparation 334
- 10.2 Advanced Configuration for Windows Guests 334
- 10.1.2 Automated Linux and UNIX Guest Logins 331
- 10.1.1 Automated Windows Guest Logins 330
- 10.1 Automated Guest Logins 330
- 10 Advanced Topics 330
- 9.55 vboximg-mount 325
- 9.54 VBoxManage modifynvram 323
- 9.53 VBoxManage updatecheck 322
- 9.52 VBoxManage extpack 320
- 9.51 VBoxManage usbdevsource 320
- 9.50 VBoxManage dhcpserver 309
- 9.49 VBoxManage hostonlynet 308
- 9.48 VBoxManage hostonlyif 307
- 9.47 VBoxManage natnetwork 303
- 9.46 VBoxManage metrics 300
- 9.45 VBoxManage debugvm 293
- 9.44 VBoxManage guestcontrol 282
- 9.43 VBoxManage guestproperty 279
- 9.42 VBoxManage sharedfolder 278
- 9.41 VBoxManage usbfilter 275
- 9.40 VBoxManage setproperty 273
- 9.39 VBoxManage getextradata 272
- 9.38 VBoxManage setextradata 271
- 9.37 VBoxManage mediumio 270
- 9.36 VBoxManage convertfromraw 268
- 9.35 VBoxManage checkmediumpwd 267
- 9.34 VBoxManage encryptmedium 266
- 9.33 VBoxManage mediumproperty 264
- 9.32 VBoxManage clonemedium 263
- 9.31 VBoxManage modifymedium 261
- 9.30 VBoxManage createmedium 259
- 9.29 VBoxManage showmediuminfo 258
- 9.28 VBoxManage bandwidthctl 256
- 9.27 VBoxManage storagectl 255
- 9.26 VBoxManage storageattach 250
- 9.25 VBoxManage closemedium 250
- 9.24 VBoxManage snapshot 246
- 9.23 VBoxManage adoptstate 246
- 9.22 VBoxManage discardstate 245
- 9.21 VBoxManage unattended 242
- 9.20 VBoxManage controlvm 225
- 9.19 VBoxManage startvm 223
- 9.18 VBoxManage signova 222
- 9.17 VBoxManage export 219
- 9.16 VBoxManage import 214
- 9.15 VBoxManage cloudprofile 213
- 9.14 VBoxManage cloud 206
- 9.13 VBoxManage encryptvm 204
- 9.12 VBoxManage movevm 204
- 9.11 VBoxManage clonevm 201
- 9.10 VBoxManage modifyvm 179
- 9.9 VBoxManage createvm 177
- 9.8 VBoxManage unregistervm 177
- 9.7 VBoxManage registervm 176
- 9.6 VBoxManage showvminfo 174
- 9.5 VBoxManage list 168
- 9.4 VBoxManage 166
- 9.3 General Options 166
- 9.2 Commands Overview 154
- 9.1 Introduction 153
- 9 VBoxManage 153
- 8.3 VBoxHeadless 151
- 8.2 Teleporting 150
- 8.1.10 VRDP Customization 149
- 8.1.9 VRDP Video Redirection 149
- 8.1.8 Multiple Remote Monitors 149
- 8.1.7 Multiple Connections to the VRDP Server 148
- 8.1.6 RDP Encryption 147
- 8.1.5 RDP Authentication 146
- 8.1.4 Remote USB 146
- 8.1.3 Step by Step: Creating a Virtual Machine on a Headless Server 144
- 8.1.2 VBoxHeadless, the Remote Desktop Server 143
- 8.1.1 Common Third-Party RDP Viewers 142
- 8.1 Remote Display (VRDP Support) 142
- 8 Remote Virtual Machines 142
- 7.13 Improving Network Performance 140
- 7.12 Limiting Bandwidth for Network Input/Output 139
- 7.11.3 Cloud Networks Tab 139
- 7.11.2 NAT Networks Tab 138
- 7.11.1 Host-Only Networks Tab 138
- 7.11 Network Manager 138
- 7.10 Cloud Networks 138
- 7.9 VDE Networking 137
- 7.8 UDP Tunnel Networking 136
- 7.7 Host-Only Networking 135
- 7.6 Internal Networking 134
- 7.5 Bridged Networking 133
- 7.4 Network Address Translation Service 131
- 7.3.3 NAT Limitations 131
- 7.3.2 PXE Booting with NAT 130
- 7.3.1 Configuring Port Forwarding with NAT 130
- 7.3 Network Address Translation (NAT) 129
- 7.2 Introduction to Networking Modes 128
- 7.1 Virtual Networking Hardware 127
- 7 Virtual Networking 127
- 6.11.2 Mounting a Virtual Disk Image 126
- 6.11.1 Viewing Detailed Information About a Virtual Disk Image 125
- 6.11 vboximg-mount: A Utility for FUSE Mounting a Virtual Disk Image 124
- 6.10 iSCSI Servers 124
- 6.9 CD/DVD Support 123
- 6.8 Limiting Bandwidth for Disk Images 122
- 6.7 Host Input/Output Caching 122
- 6.6 Cloning Disk Images 121
- 6.5 Differencing Images 119
- 6.4 Special Image Write Modes 118
- 6.3.3 Creating a Virtual Floppy Disk Image 117
- 6.3.2 Creating a Virtual Optical Disk Image 117
- 6.3.1 Creating a Virtual Hard Disk Image 116
- 6.3 The Virtual Media Manager 114
- 6.2 Disk Image Files (VDI, VMDK, VHD, HDD) 113
- 6.1 Hard Disk Controllers 110
- 6 Virtual Storage 110
- 5.11.1 X11/Wayland Desktop Environments 109
- 5.11 Controlling Virtual Monitor Topology 109
- 5.10.2 Page Fusion 108
- 5.10.1 Memory Ballooning 107
- 5.10 Memory Overcommitment 107
- 5.9 Guest Control of Applications 107
- 5.8.1 Using the Guest Control File Manager 106
- 5.8 Guest Control File Manager 105
- 5.7.1 Using Guest Properties to Wait on VM Events 105
- 5.7 Guest Properties 103
- 5.6 Seamless Windows 102
- 5.5.2 Hardware 2D Video Acceleration for Windows Guests 102
- 5.5.1 Hardware 3D Acceleration (OpenGL and Direct3D 8/9) 101
- 5.5 Hardware-Accelerated Graphics 101
- 5.4.2 Known Limitations 101
- 5.4.1 Supported Formats 100
- 5.4 Drag and Drop 99
- 5.3.2 Automatic Mounting 98
- 5.3.1 Manual Mounting 97
- 5.3 Shared Folders 96
- 5.2.4 Guest Additions for OS/2 96
- 5.2.3 Guest Additions for Oracle Solaris 95
- 5.2.2 Guest Additions for Linux 92
- 5.2.1 Guest Additions for Windows 89
- 5.2 Installing and Maintaining Guest Additions 89
- 5.1 Introduction to Guest Additions 88
- 5 Guest Additions 88
- 4.14.2 Specifying Boot Arguments 87
- 4.14.1 Video Modes in EFI 85
- 4.14 Alternative Firmware (EFI) 84
- 4.13 User Interface 84
- 4.12 Shared Folders 84
- 4.11.2 Implementation Notes for Windows and Linux Hosts 83
- 4.11.1 USB Settings 82
- 4.11 USB Support 82
- 4.10 Serial Ports 80
- 4.9 Network Settings 80
- 4.8 Audio Settings 80
- 4.7 Storage Settings 78
- 4.6.3 Recording Tab 77
- 4.6.2 Remote Display Tab 77
- 4.6.1 Screen Tab 76
- 4.6 Display Settings 76
- 4.5.3 Acceleration Tab 76
- 4.5.2 Processor Tab 75
- 4.5.1 Motherboard Tab 73
- 4.5 System Settings 73
- 4.4.4 Disk Encryption Tab 73
- 4.4.3 Description Tab 73
- 4.4.2 Advanced Tab 72
- 4.4.1 Basic Tab 72
- 4.4 General Settings 72
- 4.3 Emulated Hardware 71
- 4.2.1 Using VBoxManage Commands for Unattended Guest Installation 70
- 4.2 Unattended Guest Installation 69
- 4.1.2 64-bit Guests 69
- 4.1.1 Mac OS X Guests 68
- 4.1 Supported Guest Operating Systems 67
- 4 Configuring Virtual Machines 67
- 3.5.1 The Extension Pack Manager 65
- 3.5 Installing an Extension Pack 65
- 3.4.6 Configuring a Zone for Running Oracle VM VirtualBox 65
- 3.4.5 Unattended Installation 64
- 3.4.4 Uninstallation 64
- 3.4.3 Starting Oracle VM VirtualBox on Oracle Solaris 64
- 3.4.2 The vboxuser Group 64
- 3.4.1 Performing the Installation 63
- 3.4 Installing on Oracle Solaris Hosts 63
- 3.3.5 Starting Oracle VM VirtualBox on Linux 63
- 3.3.4 The vboxusers Group 63
- 3.3.3 Performing the Installation 59
- 3.3.2 The Oracle VM VirtualBox Kernel Modules 58
- 3.3.1 Prerequisites 58
- 3.3 Installing on Linux Hosts 58
- 3.2.3 Unattended Installation 58
- 3.2.2 Uninstallation 58
- 3.2.1 Performing the Installation 57
- 3.2 Installing on macOS Hosts 57
- 3.1.5 Public Properties 57
- 3.1.4 Unattended Installation 57
- 3.1.3 Uninstallation 57
- 3.1.2 Performing the Installation 55
- 3.1.1 Prerequisites 55
- 3.1 Installing on Windows Hosts 55
- 3 Installation Details 55
- 2.21 The Log Viewer 52
- 2.20.2 Session Information Dialog 51
- 2.20.1 VM Activity Overview 51
- 2.20 Monitoring of Virtual Machines 50
- 2.19.2 Creating a Custom Keyboard Layout 50
- 2.19.1 Using the Soft Keyboard 49
- 2.19 Soft Keyboard 49
- 2.18 Alternative Front-Ends 48
- 2.17 Preferences 47
- 2.16.11 Using VBoxManage Commands With Oracle Cloud Infrastructure 46
- 2.16.10 Using a Cloud Network 46
- 2.16.9 Importing an Instance from Oracle Cloud Infrastructure 45
- 2.16.8 Exporting an Appliance to Oracle Cloud Infrastructure 42
- 2.16.7 Using Cloud Virtual Machines 38
- 2.16.6 Using Oracle VM VirtualBox With Oracle Cloud Infrastructure 37
- 2.16.5 Using the Cloud Profile Manager 35
- 2.16.4 Creating a Cloud Profile 34
- 2.16.3 Uploading the Public Key to Oracle Cloud Infrastructure 34
- 2.16.2 Creating an API Signing Key Pair 33
- 2.16.1 Preparing for Oracle Cloud Infrastructure Integration 33
- 2.16 Integrating with Oracle Cloud Infrastructure 32
- 2.15.3 Exporting an Appliance in OVF Format 32
- 2.15.2 Importing an Appliance in OVF Format 31
- 2.15.1 About the OVF Format 30
- 2.15 Importing and Exporting Virtual Machines 30
- 2.14 Cloning Virtual Machines 28
- 2.13 Removing and Moving Virtual Machines 27
- 2.12 Virtual Machine Configuration 27
- 2.11.2 Snapshot Contents 26
- 2.11.1 Taking, Restoring, and Deleting Snapshots 25
- 2.11 Snapshots 24
- 2.10 Using VM Groups 23
- 2.9.6 Saving the State of the Machine 22
- 2.9.5 Resizing the Machine’s Window 21
- 2.9.4 Changing Removable Media 21
- 2.9.3 Typing Special Characters 20
- 2.9.2 Capturing and Releasing Keyboard and Mouse 19
- 2.9.1 Starting a New VM for the First Time 19
- 2.9 Running Your Virtual Machine 19
- 2.8.6 Some Examples of Unattended Installation 18
- 2.8.5 Create Virtual Machine Wizard: Summary 18
- 2.8.4 Create Virtual Machine Wizard: Virtual Hard Disk 17
- 2.8.3 Create Virtual Machine Wizard: Hardware 16
- 2.8.2 (Optional) Create Virtual Machine Wizard: Unattended Guest OS Install 15
- 2.8.1 Create Virtual Machine Wizard: Name and Operating System 14
- 2.8 Creating Your First Virtual Machine 13
- 2.7.5 About VirtualBox Manager Wizards 13
- 2.7.4 Help Viewer 12
- 2.7.3 VirtualBox Manager Tools 10
- 2.7.2 The Details Pane 9
- 2.7.1 The Machine List 8
- 2.7 VirtualBox Manager 7
- 2.6 Starting Oracle VM VirtualBox 7
- 2.5 Installing Oracle VM VirtualBox and Extension Packs 6
- 2.4.1 Host CPU Requirements 6
- 2.4 Supported Host Operating Systems 5
- 2.3 Features Overview 3
- 2.2 Some Terminology 2
- 2.1 Why is Virtualization Useful? 2
- 2 First Steps 1
- 1 Preface 1
- 13.3.5 How to Record Bluescreen Information from Windows Guests 405
- 13.3.6 No Networking in Windows Vista Guests 405
- 13.3.7 Windows Guests may Cause a High CPU Load 406
- 13.3.8 Long Delays When Accessing Shared Folders 406
- 13.3.9 USB Tablet Coordinates Wrong in Windows 98 Guests 406
- 13.3.10 Windows Guests are Removed From an Active Directory Domain After Restoring a Snapshot 406
- 13.3.11 Windows 3.x Limited to 64 MB RAM 406
- 13.4 Linux and X11 Guests 407
- 13.4.1 Linux Guests May Cause a High CPU load 407
- 13.4.2 Buggy Linux 2.6 Kernel Versions 407
- 13.4.3 Shared Clipboard, Auto-Resizing, and Seamless Desktop in X11 Guests 407
- 13.5 Oracle Solaris Guests 408
- 13.5.1 Certain Oracle Solaris 10 Releases May Take a Long Time to Boot with SMP 408
- 13.6 Windows Hosts 408
- 13.6.1 Drag’n Drop not Working 408
- 13.6.2 VBoxSVC Out-of-Process COM Server Issues 408
- 13.6.3 CD and DVD Changes Not Recognized 408
- 13.6.4 Sluggish Response When Using Microsoft RDP Client 409
- 13.6.5 Running an iSCSI Initiator and Target on a Single System 409
- 13.6.6 Bridged Networking Adapters Missing 409
- 13.6.7 Host-Only Networking Adapters Cannot be Created 410
- 13.7 Linux Hosts 410
- 13.7.1 Linux Kernel Module Refuses to Load 410
- 13.7.2 Linux Host CD/DVD or Floppy Disk Drive Not Found 410
- 13.7.3 Strange Guest IDE Error Messages When Writing to CD or DVD 410
- 13.7.4 VBoxSVC IPC Issues 411
- 13.7.5 USB Not Working 411
- 13.7.6 PAX/grsec Kernels 411
- 13.7.7 Linux Kernel vmalloc Pool Exhausted 411
- 13.8 Oracle Solaris Hosts 412
- 13.8.1 Cannot Start VM, Not Enough Contiguous Memory 412
- 14 Security Guide 413
- 14.1 General Security Principles 413
- 14.2 Secure Installation and Configuration 413
- 14.2.1 Installation Overview 413
- 14.2.2 Post Installation Configuration 414
- 14.3 Security Features 414
- 14.3.1 The Security Model 414
- 14.3.2 Secure Configuration of Virtual Machines 414
- 14.3.3 Configuring and Using Authentication 415
- 14.3.4 Potentially Insecure Operations 416
- 14.3.5 Encryption 417
- 14.4 Security Recommendations 417
- 14.4.1 CVE-2018-3646 417
- 14.4.2 CVE-2018-12126, CVE-2018-12127, CVE-2018-12130, CVE-2019-11091 418
- 15 Known Limitations 419
- 15.1 Experimental Features 419
- 15.2 Known Issues 419
- 16 Change Log 422
- 16.1 Version 7.0.6 (2023-01-17) 422
- 16.2 Version 7.0.4 (2022-11-18) 423
- 16.3 Version 7.0.2 (2022-10-20) 424
- 16.4 Version 7.0.0 (2022-10-10) 424
- 16.5 Change Logs for Legacy Versions 426
- 17 Third-Party Materials and Licenses 427
- 17.1 Third-Party Materials 427
- 17.2 Third-Party Licenses 437
- 17.2.1 GNU General Public License (GPL) 437
- 17.2.2 GNU Lesser General Public License (LGPL) 440
- 17.2.3 Mozilla Public License (MPL) 446
- 17.2.4 MIT License 452
- 17.2.5 X Consortium License (X11) (variant 1) 452
- 17.2.6 X Consortium License (X11) (variant 2) 452
- 17.2.7 zlib License 453
- 17.2.8 Apache License v2 453
- 17.2.9 OpenSSL License 455
- 17.2.10 Slirp License 456
- 17.2.11 liblzf License 456
- 17.2.12 libpng License 457
- 17.2.13 lwIP License 457
- 17.2.14 libxml License 457
- 17.2.15 gSOAP Public License Version 1.3a 458
- 17.2.16 curl License 463
- 17.2.17 libgd License 463
- 17.2.18 BSD License from Intel 464
- 17.2.19 IJG (Independent JPEG Group) License 465
- 17.2.20 libjpeg-turbo Modified (3-clause) BSD License 465
- 17.2.21 FreeBSD License 466
- 17.2.22 NetBSD License 466
- 17.2.23 VPX License 467
- 17.2.24 Vorbis License 467
- 17.2.25 curl License 468
- 17.2.26 DocBook XML DTD License 468
- 17.2.27 DocBook XSL Stylesheets License 468
- 17.2.28 Intel ACPI Component Architecture (ACPICA) License 469
- 17.2.29 Khronos License 470
- 17.2.30 SGI Free Software License B 471
- 17.2.31 Boost Software License 471
- 17.2.32 Default Mesa 3D Graphics Library License 472
- 17.2.33 Microsoft Software License 474
- 17.2.34 Python License 478
- 17.2.35 License for Berkeley SoftFloat Release 3e 481
- 17.2.36 BSD 3-Clause License for Glslang 482
- 17.2.37 BSD 2-Clause License for Glslang 482
- 17.2.38 GNU General Public License (GPL) License with Bison Exception for Glslang 483
- 17.2.39 WiX Toolset License 490
- 17.2.40 XFree86 License (variant 1) 492
- 17.2.41 XFree86 License (variant 2) 492
- 17.2.42 Cereal License 492
- 17.2.43 Keith Packard License 493
- 17.2.44 X Direct Rendering Infrastructure (DRI) 2 Extension License 493
- 17.2.45 Network Computing Devices and DEC License 494
- 17.2.46 MIT Open Group Variant License 494
- 17.2.47 Digital Equipment Corporation License (variant 1) 494
- 17.2.48 Digital Equipment Corporation License (variant 2) 495
- 17.2.49 Digital Equipment Corporation License (variant 3) 495
- 17.2.50 Digital Equipment Corporation and QuarterDeck Office Systems License 495
- 17.2.51 Hewlett-Packard License (variant 1) 496
- 17.2.52 Hewlett-Packard License (variant 2) 496
- 17.2.53 Hewlett-Packard License (variant 3) 496
- 17.2.54 Hewlett-Packard License (variant 4) 497
- 17.2.55 Silicon Graphics License 497
- 17.2.56 X Resize and Rotate Extension (RandR) License 497
- 17.2.57 SuSE License 498
- 17.2.58 Network Computing Devices (NCD) License (variant 1) 498
- 17.2.59 Network Computing Devices (NCD) License (variant 2) 498
- 17.2.60 Network Computing Devices (NCD) License (variant 3) 499
- 17.2.61 Digital Equipment Corporation and Olivetti Research Limited License 499
- 17.2.62 X Consortium, DEC, Intergraph, Silicon Graphics, and Hewlett- Packard License 499
- 17.2.63 Sun Microsystems License 499
- 17.2.64 X libpciaccess Library License 500
- 17.2.65 X libxshmfence License 500
- 17.2.66 X xf86-input-mouse driver License 500
- 17.2.67 Kazutaka YOKOTA License 501
- 17.2.68 Conectiva License 501
- 17.2.69 Red Hat and SuSE License 502
- 17.2.70 Red Hat License 502
- 17.2.71 X Consortium and Red Hat License 502
- 17.2.72 Precision Insight License 503
- 17.2.73 VA Linux and IBM License 503
- 17.2.74 IBM License 504
- 17.2.75 Metro Link License (variant 1) 504
- 17.2.76 Metro Link License (variant 2) 504
- 17.2.77 Metro Link License (variant 3) 505
- 17.2.78 NVIDIA License 505
- 17.2.79 Vrije Universiteit License 505
- 17.2.80 Concurrent Computer Corporation License 506
- 17.2.81 Nokia License 506
- 17.2.82 Adobe License 506
- 17.2.83 University of California License (variant 1) 507
- 17.2.84 University of California License (variant 2) 507
- 17.2.85 OMRON Corporation and Data General Corporation License 508
- 17.2.86 X11 Legacy License (variant 1) 508
- 17.2.87 X11 Legacy License (variant 2) 508
- 17.2.88 X11 Legacy License (variant 3) 509
- 17.2.89 X11 Legacy License (variant 4) 509
- 17.2.90 X11 Legacy License (variant 5) 510
- 17.2.91 X11 Legacy License (variant 6) 510
- 17.2.92 X11 Legacy License (variant 7) 511
- 17.2.93 X11 Legacy License (variant 8) 511
- 17.2.94 X11 Legacy License (variant 9) 511
- 17.2.95 X11 Legacy License (variant 10) 512
- 17.2.96 X11 Legacy License (variant 11) 512
- 17.2.97 X11 Legacy License (variant 12) 512
- 17.2.98 X11 Legacy License (variant 13) 513
- 17.2.99 X11 Legacy License (variant 14) 513
- 17.2.100 Davor Matic License 514
- 17.2.101 Harold L Hunt II License 514
- 17.2.102 Thomas Roell License 514
- 17.2.103 Thomas Roell and David Wexelblat License 515
- 17.2.104 Thomas Roell and SGCS (Snitily Graphics Consulting Services) License 515
- 17.2.105 Alan Hourihane License 515
- 17.2.106 Kaleb S. Keithley License 516
- 17.2.107 Matthieu Herrb License 516
- 17.2.108 Egbert Eich License 516
- 17.2.109 David Wexelblat License 517
- 17.2.110 Orest Zborowski and David Wexelblat License 517
- 17.2.111 Orest Zborowski and David Dawes License 518
- 17.2.112 Frederic Lepied License 518
- 17.2.113 Rich Murphey and David Wexelblat License 518
- 17.2.114 Rich Murphey and David Dawes License 519
- 17.2.115 Anders Carlsson License 519
- 17.2.116 Eric Anholt License 519
- 17.2.117 Todd C. Miller License 520
- 17.2.118 Philip Blundell License 520
- 17.2.119 Marc Aurele La France License 520
- 17.2.120 J. Kean Johnston License 521
- 17.2.121 Jakub Jelinek License 521
- 17.2.122 UCHIYAMA Yasushi License 521
- 17.2.123 OpenedHand Ltd License 522
- 17.2.124 Oracle License 522
- 17.2.125 NVIDIA License for Glslang 522
- 17.2.126 The Khronos Group Inc. License for Glslang 523
- 17.2.127 The Khronos Group Inc. License for the EGL Registry Repository 523
- 17.2.128 The IBM Corporation License for the libtpms library 524
- 18 Oracle VM VirtualBox Privacy Information 526
BOOK
SUMMARY
Items Found: 288
- Foreword
- CHAPTER 1 An Overview. 1
- CHAPTER 2 BEA Tuxedo: PeopleSoft’s Application Server
- Technology 15
- CHAPTER 3 Database Connectivity 31
- CHAPTER 4 PeopleSoft Database Structure: A Tale of Two Data
- Dictionaries 55
- CHAPTER 5 Keys and Indexing 87
- CHAPTER 6 PeopleSoft DDL 115
- CHAPTER 7 Tablespaces 149
- CHAPTER 8 Locking, Transactions, and Concurrency 163
- CHAPTER 9 Performance Metrics 171
- CHAPTER 10 PeopleTools Performance Utilities 229
- CHAPTER 11 SQL Optimization Techniques in PeopleSoft. 263
- CHAPTER 12 Configuring the Application Server 315
- CHAPTER 13 Tuning the Application Server 359
- CHAPTER 14 The Process Scheduler 387
- INDEX. 407
- CHAPTER 1 An Overview 1
- What Is PeopleSoft? 1
- Components of a PeopleSoft System 2
- The Database 3
- Tuxedo Application Server 4
- PeopleTools 4
- Evolution of the PeopleSoft Architecture 6
- The Monolithic Mainframe 6
- Client/Server Architecture 7
- Three-Tier Architecture. 8
- Four-Tier Architecture 10
- Release History 10
- Developing and Administering PeopleSoft Systems 13
- The Developer 13
- The DBA. 13
- Relationship Between the Developer and DBA 14
- Summary 14
- What Is Tuxedo?. 15
- The Simple Application Server 18
- The Simple Client. 18
- The Simple Server 20
- The Simple Tuxedo Domain 20
- v
- Anatomy of the Application Server 21
- Processes, Memory, and Messages 21
- IPC Resources 25
- tmadmin and ipcs 27
- PIA Servlets. 28
- Summary 29
- CHAPTER 3 Database Connectivity. 31
- PeopleSoft Database vs. Oracle Database 31
- Oracle Database Users 32
- Owner ID/Access ID (SYSADM) 32
- Connect ID (PEOPLE) 32
- PS Schema 33
- Oracle Database Roles 34
- PSUSER Role. 35
- PSADMIN Role 35
- Signing On to a PeopleSoft 8 Database. 37
- Making the Initial Connection 38
- Determining the PeopleSoft Schema 43
- Checking the PeopleTools Release 44
- Checking the Operator Password 45
- Obtaining the Access Password 46
- Reconnecting As Access ID 46
- Using PeopleSoft Access Profiles and Oracle Resource Profiles 47
- Signing On to a PeopleSoft 7.5 Database 50
- Connecting Third-Party Applications 52
- Crystal Reports. 52
- SQR Reports 52
- Changing Database Passwords. 52
- Connect ID Password 52
- Owner ID Password 53
- Summary 53
- Two Data Dictionaries. 57
- PSRECDEFN: Record Definition 58
- PSRECFIELD: Record Field Definition 61
- PSDBFIELD: Field Definition 64
- PSSQLDEFN: Definition of SQL Objects 69
- PSSQLTEXTDEFN 70
- PSINDEXDEFN: Index Definition. 70
- PSKEYDEFN: Index Definition. 72
- Recursive PeopleTools SQL 73
- Version Numbers and Caching 75
- Component Definition 75
- Search Record 76
- Case-Insensitive Searching 77
- Component Pages 77
- Component PeopleCode 78
- Page Definition 79
- Page Fields 79
- Record Definition 80
- Field Definitions 80
- Sub-Records. 81
- Field Labels. 81
- Record DDL. 82
- Sub-Record Definition. 83
- Application SQL 83
- Data Dictionary Synchronization. 84
- Summary 86
- CHAPTER 5 Keys and Indexing 87
- What Is the Purpose of an Index? 87
- What Is a Constraint? 88
- What Is the Purpose of a Unique Constraint? 89
- Record Field Key Attributes 90
- Field Attributes and Application Behavior 91
- Field Attributes and System Index Definitions. 95
- Custom Key Order 105
- User-Defined Indexes 106
- Other Index Issues. 107
- Views, Keys, and Indexing 107
- Suppressing Index Creation 109
- Indexes and Histograms 111
- Null Columns in PeopleSoft 111
- Summary 113
- CHAPTER 6 PeopleSoft DDL. 115
- PeopleSoft DDL and the DBA. 115
- DDL Models 116
- Create Table 117
- Create Index 119
- Create Tablespace 120
- Analyze Table Estimate Statistics 121
- Analyze Table Compute Statistics 123
- Sizing Sets 124
- Overriding DDL Model Defaults. 124
- Application Designer 124
- Data Mover 126
- PeopleTools Tables 126
- PSDDLMODEL (or PS_DDLMODEL_VW):
- DDL Model Statement. 127
- PSDDLDEFPARMS (or PS_DDLDEFPARMS_VW):
- DDL Model Parameter. 127
- PSRECDDLPARM: Record DDL Parameter 127
- PSTBLSPCCAT: Tablespace Catalogue 128
- PSRECTBLSPC: Record Tablespace Allocation 128
- PSIDXDDLPARM: Index DDL Parameters 129
- DDL Model Enhancements. 129
- Additional DDL Parameters 129
- Fewer DDL Parameters. 132
- Multiple Commands 132
- Global Temporary Tables. 135
- Limitations of PeopleSoft DDL Models. 137
- Partitioned Tables. 137
- Constraints 138
- Function-Based Indexes 138
- Index Organized Tables 139
- Other DDL 140
- Alter Table in Place 140
- Alter Table by Re-creation 141
- Views 142
- PeopleSoft Temporary Tables. 143
- Triggers 144
- Synchronizing PeopleSoft with the Oracle Catalogue 145
- Feeding Back Tablespaces into PeopleTools 147
- Summary 148
- Database Creation. 149
- Supplied Database Creation Scripts 149
- Oracle9i Database Configuration Assistant 152
- PeopleSoft Database Configuration Wizard 154
- Managing Tablespaces for PeopleSoft 155
- A Single Index Tablespace: PSINDEX 157
- Tablespace Creation and Default Storage Options. 159
- Implementing Local Tablespace Management 159
- Summary 162
- Locking 163
- PIA Transactions. 164
- Sequence Numbers and Concurrency 168
- Summary 170
- CHAPTER 9 Performance Metrics 171
- Online Monitoring and Metrics 172
- Application Server 173
- BEA WebLogic Server Access Log. 180
- Apache Web Server Access Log 188
- Query Metrics 191
- Batch Metrics 195
- Process Scheduler. 195
- PeopleSoft Trace Files. 216
- Application Designer and Client 216
- Application Server 218
- PIA Trace 219
- Analyzing PeopleSoft Trace Files. 223
- Summary 227
- CHAPTER 10 PeopleTools Performance Utilities 229
- Query Metrics in PeopleTools 8.4 229
- Query Statistics 229
- Query Logging 231
- PeopleSoft Ping 232
- What Does Ping Measure? 234
- PeopleSoft Ping Case Study 1: Desktop/Browser
- Performance 238
- PeopleSoft Ping Case Study 2: Application Server
- CPU Speed 239
- Conclusion. 240
- Performance Monitor 240
- Architectural Overview 241
- Metrics. 242
- Performance Trace. 252
- Transaction and Events. 253
- Instrumentation 260
- Summary 262
- Enabling Oracle SQL Trace. 263
- Oracle Initialization Parameters and SQL Trace 264
- Analyzing SQL Trace Files with TKPROF. 265
- Enabling SQL Trace for PeopleTools Clients 266
- Enabling SQL Trace for Application Server Processes. 266
- Enabling SQL Trace on the Process Scheduler 269
- Enabling SQL Trace Programmatically 271
- Where Does This SQL Come From? 274
- Component Processor. 274
- PeopleCode 275
- Query 277
- COBOL 279
- SQR 282
- Application Engine 284
- Techniques for SQL Optimization 284
- Hints 285
- Indexes 285
- Disabling Indexes Without Using Hints. 285
- FROM Clause Ordering 286
- Explicitly Coding Implicit Joins 288
- Plan Stability (or Stored Outlines) 291
- Implementing SQL Optimization Techniques 292
- Views 292
- Component Processor. 292
- Query 296
- Upgrade Considerations 314
- Summary 314
- CHAPTER 12 Configuring the Application Server 315
- Overview of Configuration Files 315
- psappsrv.ubx 318
- Features, Settings, and Ports Sections. 320
- PS_DEFINES Section 321
- Main Tuxedo Section 324
- PS_ENVFILE Section 339
- psappsrv.cfg. 340
- Startup 341
- Database Options. 341
- Security 342
- Workstation and Jolt Listeners 343
- Domain Settings. 344
- Trace 345
- Cache Settings 346
- Remote Call. 347
- PeopleSoft Server Processes 348
- psappsrv.val 348
- psappsrv.ubb 349
- psappsrv.env 352
- Configuration Template Files 352
- Tuxedo Administration Console 353
- Configuring the BEA Administration Console for PeopleSoft 354
- Configuring PeopleSoft for the BEA Administration Console 356
- Summary 357
- Sizing. 359
- Spawning 360
- Too Few Server Processes? 361
- Too Many Server Processes?. 364
- Multiple Queues 367
- Kernel Configuration 369
- Other Tuxedo Options 376
- Operating System Priority. 376
- Load Balancing. 377
- Service Priority 382
- Other Tips 383
- Unix User Accounts 383
- Multiple Domains on Small Production Systems 384
- Cycling the Application Server Without Shutting It Down 384
- Reconfiguring Tuxedo with the Administration Console 385
- Summary 386
- CHAPTER 14 The Process Scheduler 387
- Process Scheduler Architecture 387
- PeopleTools 7.x 388
- PeopleTools 8.1x 388
- PeopleTools 8.4x 388
- Process Monitor 392
- DBA Issues 392
- What Happens When a Process Is Scheduled? 392
- Process Scheduler Activity 396
- Purging the Process Scheduler Tables 398
- Lowering Operating System Priority of Batch Processes 399
- Mutually Exclusive Processing. 402
- Application Engine Server Considerations. 404
- Summary 405
- INDEX 407
- This book should have been written years ago, but then it would not have been as comprehensive
- as it is today. It bridges the gap between the worlds of PeopleSoft and Oracle, explaining
- where and how the two sides meet.
- My own experience with PeopleSoft began in 1992 as the DBA on a GL 1.1/PeopleTools 2.1
- implementation project. The DBA is often the only “technology-savvy” person on such a project,
- with the rest of the team consisting of functional experts, developers and, of course, management.
- As such, the DBA often is tasked with helping to investigate and solve any technologyrelated
BOOK
SUMMARY
Items Found: 475
- Chapter 1: Introduction 1
- Chapter 2: RAC Concepts 27
- Chapter 3: RAC Architecture 63
- Chapter 4: Hardware 97
- Chapter 5: Virtualization 165
- Chapter 6: Linux Installation and Configuration 231
- Chapter 7: Grid Infrastructure Installation 323
- Chapter 8: Clusterware 379
- Chapter 9: Automatic Storage Management 455
- Chapter 10: RDBMS Installation and Configuration 505
- Chapter 11: Workload Management 559
- Chapter 12: Oracle Performance Monitoring 607
- Chapter 13: Linux Performance Monitoring 653
- Chapter 14: Parallel Execution 687
- Chapter 15: Upgrading to Oracle 11g Release 2 717
- Index 771
- Introducing Oracle Real Application Clusters 1
- Examining the RAC Architecture 3
- Deploying RAC 4
- Maintaining High Availability 5
- Defining Scalability 6
- Scaling Vertically vs. Horizontally 7
- Increasing Manageability 8
- Assessing the Cost of Ownership 10
- Clustering with Oracle on Linux 13
- Running Linux on Oracle 16
- Understanding the Role of Unix 16
- Liberating Software 17
- Developing Linux 18
- Expanding the Concept of Free with Open Source 19
- Combining Oracle, Open Source, and Linux 20
- Drilling Down on Unbreakable Linux 21
- Creating and Growing Red Hat Enterprise Linux 22
- Extending Red Hat with Oracle Enterprise Linux 23
- Drilling Down on SuSE Linux Enterprise Server 24
- Taking Linux to Asia 25
- Summary 25
- Clustering Concepts 27
- Configuring Active/active Clusters 27
- Implementing Active/passive Clusters 28
- Configuring a Shared-All Architecture 28
- Configuring a Shared-Nothing Architecture 29
- Exploring the Main RAC Concepts 29
- Working with Cluster Nodes 29
- Leveraging the Interconnect 30
- Clusterware/Grid Infrastructure 31
- Leveraging Automatic Storage Management 39
- Installing Real Application Clusters 44
- Using the Global Resource Directory (GRD) 49
- Transferring Data Between Instances with Cache Fusion 51
- Achieving Read Consistency 52
- Synchronizing System Change Numbers 52
- Exploring the New Features of 11g Release 2 52
- Leveraging Grid Plug and Play 53
- Modeling Resources with Server Pools 55
- Ensuring POSIX Compliance with ACFS 56
- Using Oracle Restart Instead of RAC 57
- Simplifying Clusterd Database Access with SCAN Listener 59
- Summary 60
- Availability Considerations 63
- Deciding the Number of Nodes 65
- vi
- Online Maintenance and Patching 67
- Instance Recovery in RAC 72
- Failover Considerations 74
- Transparent Application Failover 75
- Fast Connection Failover and Fast Application Notification 76
- Scalability Considerations 77
- Scalability Enhancers 78
- Scalability Inhibitors 79
- Standby Databases 81
- Introduction to Oracle Standby Databases 82
- Types of Standby Database 83
- Active Data Guard 85
- Extended Distance Clusters 90
- Oracle Streams 91
- Streams Processing 92
- Oracle Streams Prerequisites 93
- Cluster Topologies 94
- Summary 95
- Oracle Availability 98
- Server Processor Architecture 99
- x86 Processor Fundamentals 99
- Multicore Processors and Hyper-Threading 103
- CPU Cache 106
- CPU Power Management 109
- Virtualization 111
- Memory 112
- Virtual Memory 112
- vii
- Physical Memory 113
- NUMA 116
- Memory Reliability 125
- Additional Platform Features 125
- Onboard RAID Storage 126
- Machine Check Architectures 126
- Remote Server Management and IPMI 127
- Network Interconnect Technologies 127
- Server I/O 128
- Private Interconnect 131
- Storage Technologies 136
- RAC I/O Characteristics 137
- Hard Disk and Solid State Disk Drive Performance 143
- RAID 147
- Storage Protocols for Linux 153
- Summary 164
- Virtualization Definition and Benefits 165
- Oracle VM 168
- Oracle VM Server Architecture 168
- Oracle VM Design 174
- Oracle VM Server Installation 178
- Oracle VM Manager Installation 183
- Oracle VM CLI Installation and Configuration 186
- Configuring Oracle VM 187
- Network Configuration 187
- Server Pool Configuration 192
- Installing and Configuring Guests 208
- Importing a Template 209
- Creating a Guest from a Template 210
- Accessing a Guest 212
- Configuring a Guest for RAC 214
- Managing Domains 216
- Oracle VM Agent 216
- Oracle VM Manager 218
- Oracle VM Manager CLI 220
- The xm Command-Line Interface 222
- Summary 230
- Selecting the Right Linux Software 231
- Reviewing the Hardware Requirements 232
- Drilling Down on Networking Requirements 233
- Configuring a GNS or a Manual IP 233
- Configuring DNS and DHCP 236
- Downloading the Linux Software 243
- Preparing for a Network Install 243
- Installing Oracle Enterprise Linux 5 247
- Starting the Installation 247
- Installation Media Check 247
- Anaconda Installation 247
- Install or Upgrade 248
- Disk Partitioning 248
- Configuring the Boot Loader and Network 259
- Selecting a Time Zone 260
- Configuring the Root Password 261
- Reviewing the Package Installation Defaults 261
- ix
- Selecting a Package Group 261
- Installing Packages 263
- Setting the Final Configuration 263
- Accepting the License Agreement 263
- Configuring the Firewall 263
- Configuring SELinux 263
- Enabling kdump 264
- Setting the Date and Time 264
- Creating a User 265
- Installing Additional CDs 265
- Configuring Oracle Enterprise Linux 5 265
- Configuring a Server with the Oracle Validated RPM 266
- Verifying the Oracle Validated RPM Actions 270
- Post Oracle Validated RPM Configuration 282
- Completing the Linux Configuration for RAC 292
- Configuring Shared Storage 298
- Discovering and Configuring SAN Disk 299
- Network Channel Bonding 313
- I/O Fencing with IPMI 317
- Summary 322
- Getting Ready for Installation 323
- Obtain Software Distribution 323
- Configure X Environment 324
- Determining Configuration Type 327
- Advanced Installation - Manual Configuration 327
- Network Configuration 328
- DNS Configuration 329
- Choosing an Installation Option 330
- x
- Selecting an Advanced or Typical Installation Type 332
- Selecting a Language. 333
- Configuring the Grid Plug and Play. 334
- Configuring the Cluster Node Information Page 336
- Configuring the Network Interface Usage Page 337
- Configuring the Storage Option Information Page. 338
- Creating an ASM Disk Group 340
- Specifying an ASM Password. 341
- Specifying a Username and Password for IPMI. 342
- Configuring Privileged Operating System Groups. 342
- Setting the Installation Location. 344
- Specify the Central Inventory’s Location. 345
- Performing Prerequisite Checks. 345
- Reviewing the Summary Page. 351
- Setup Page 352
- Reviewing Execute Configuration Scripts. 352
- Monitoring Configuration Assistants 359
- Implementing an Advanced Installation for Automatic Configuration 360
- Configuring a Network Configuration 360
- Configuring DNS 362
- Configuring DHCP 363
- Setting up the Grid Plug and Play Information Page. 364
- Configuring the Cluster Node Information Page 365
- The Summary Page 366
- Typical Installation 367
- Choosing the Installation Type 367
- Specifying the Cluster Configuration Page. 368
- Install Locations Page. 369
- Reviewing the Summary Page for a Typical Installation 370
- xi
- Installing a Standalone Server 371
- Selecting an Installation Option 372
- Creating an ASM Disk Group Page 373
- Reviewing the Summary Page for a Standalone Installation 373
- Configuring the Execute Configuration Scripts 375
- Deinstalling the Grid Infrastructure Software 376
- Summary 377
- Introducing Clusterware 379
- Examining the Hardware and Software Requirements 380
- Using Shared Storage with Oracle Clusterware 381
- Storing Cluster Information with the Oracle Cluster Registry 381
- Storing Information in the Oracle Local Registry 382
- Fencing with the Voting Disk 382
- Recording Information with the Grid Plug and Play Profile 383
- Using Background Processes 384
- Grid Infrastructure Software Stacks 384
- Drilling Down on the High Availability Stack 385
- Drilling Down on the Cluster Ready Services Stack 386
- Using Grid Infrastructure Agents 388
- Initiating the Startup Sequence 389
- Managing Oracle Clusterware 391
- Using the Enterprise Manager 392
- Using the Clusterware Control Utility 392
- Managing Resources with srvctl 395
- Verifying the Cluster with the CVU 396
- Configuring Network Interfaces with oifcfg 400
- Administering the OCR and OLR with ocrconfig 400
- Checking the State of the OCR and its Mirrors with ocrcheck 400
- Defining Server-Side Callouts 401
- Protecting Applications with Clusterware 403
- Managing Resource Profiles 403
- Configuring Active/Passive Clustering for Oracle Database 404
- Configuring Active/Passive Clustering for Apache Tomcat 409
- Using Oracle Restart 413
- Troubleshooting 415
- Resolving Startup Issues 415
- Resolving Problems with Java Utilities 422
- Patching Grid Infrastructure 422
- Adding and Deleting Nodes 426
- Adding Nodes 426
- Deleting Nodes 433
- Exploring More Advanced Topics 438
- Selecting non-Default Listener Ports 439
- Selecting a non-Default SCAN Listener Endpoint 442
- Changing the SCAN After Installation 443
- Maintaining Voting Disks 444
- Maintaining Local and Cluster Registry 448
- Summary 453
- Introducing ASM 455
- ASM Terminology 456
- Supported File Types 457
- ASM Management 458
- ASM and RDBMS Support 458
- ASM Installation 459
- ASM Components and Concepts 459
- ASM Instances 459
- Failure Groups 464
- ASM Files 465
- Redundancy 468
- Striping 468
- Mirroring 469
- Intelligent Data Placement 469
- Access Control 470
- Maintaining ASM 475
- Creating an ASM Disk Group 475
- Extending an ASM Disk Group 478
- Dropping Disks from an ASM Disk Group 479
- Enabling Disk Discovery 480
- Understanding the ASM Header 480
- Installing the Grid Infrastructure 481
- Re-creating the ASM Disks 482
- ASM Cluster File System 482
- Creating and Mounting an ACFS Using ASMCA 484
- Creating and Mounting an ACFS Using the Command Line 491
- Maintaining the ACFS 494
- Using ACFS with Oracle Restart 496
- Administering ASM 496
- Using SQL*Plus to Administer ASM 497
- ASM Administration Using SRVCTL 499
- Accessing Files in ASM 500
- Using Files Instead of Devices 501
- Virtualization and Shared Disks 502
- xiv
- Summary 503
- Installing the RAC Software 505
- Start the Installer 505
- Configuring the Security Updates Page 506
- Configuring the Installation Options Page 506
- Configuring the Node Selection Page 507
- Configuring the Product Language Selection Page 508
- Configuring the Database Editions Page 509
- Configuring the Installation Locations Page 510
- Configuring the Privileged Operating Systems Group Page 511
- Configuring the Prerequisites Check Page 512
- Reviewing the Summary Page 512
- Executing Configuration Scripts 513
- Using the Database Configuration Assistant (DBCA) 514
- Starting the DBCA and Choosing an Operation 514
- Creating a Database 516
- Reviewing the Summary Page 535
- Configuring the Database Options 536
- Deleting a Database 538
- Managing Templates 539
- Building Database Creation Scripts 539
- Setting up Admin-Managed Database Scripts 540
- Building Policy-Managed Database Scripts 552
- Deinstalling the RDBMS Software 555
- Summary 557
- Introducing Services 559
- Creating an Administrator Managed Database vs. Policy-Managed Database 560
- Managing Services with the Database Scheduler 561
- Using Services with Shared Server 563
- Managing Services 564
- Managing Services with SRVCTL 564
- Managing Services with Enterprise Manager 569
- Managing Services with DBMS_SERVICE 572
- Balancing the Workload 572
- Configuring Client-Side Load Balancing 573
- Configuring Server-Side Load Balancing 574
- Exploring the Load Advisory Framework 576
- Using Transparent Application Failover 577
- Implementing Fast Connection Failover 584
- Using the Resource Manager 597
- Caging an Instance 600
- Database Resident Connection Pool 601
- Summary 604
- Enterprise Manager Database Control 608
- The Cluster Tab 609
- The Database Tab 611
- The Performance Tab 611
- AWR Reports 613
- Interpreting the RAC Statistics of an AWR Report 617
- Top 5 Timed Foreground Events 618
- Global Cache Load Profile 619
- Global Cache Efficiency Percentages 619
- Global Cache and Enqueue Services - Workload Characteristics 619
- Global Cache and Enqueue Services - Messaging Statistics 620
- Cluster Interconnect 620
- Foreground Wait Class 621
- Wait Event Histogram 621
- “SQL Statement” Sections 622
- RAC-Related Segment Statistics 622
- Dictionary Cache Stats (RAC) 623
- Library Cache Activity (RAC) 623
- Global Messaging Statistics 624
- Global CR Served Statistics 624
- Global Current Served Statistics 624
- Global Cache Transfer Statistics 625
- Interconnect Statistics 626
- Dynamic Remastering Statistics 626
- Active Session History 627
- Automatic Database Diagnostic Monitor 629
- Executing an ADDM Report 629
- Controlling ADDM 629
- The Report Format 631
- AWR SQL Report 631
- Performance Monitoring Using SQL*Plus 632
- GV$ Views 633
- System Statistics 633
- Segment Statistics 633
- Global Caches Services: Consistent and Current Reads 635
- Global Cache Services: Current Block Activity 637
- Global Enqueue Service 640
- Library Cache 641
- Dictionary Cache 642
- Lock Conversions 642
- Automatic Diagnostic Repository 644
- Summary 652
- The uptime and last Commands 653
- The ps Command 654
- free, ipcs, pmap, and lsof 655
- The free Command 655
- The /proc File System 656
- The /sys/devices/system/node File System 657
- The ipcs Command 658
- The pmap Command 658
- The lsof Command 660
- top 660
- vmstat 662
- strace 663
- netstat, ss, and tcpdump 664
- Looking at Interface Statistics 664
- Summary Statistics 665
- Listening Socket Statistics 665
- Looking up Well-Known Ports 666
- Reporting on Socket Statistics Using ss 666
- Capturing and Displaying Network Packets 667
- iostat 668
- mpstat 669
- sar and kSar 670
- Configuring sar 670
- Invoking sar Directly 671
- Graphing the Results 672
- Oracle Cluster Health Monitor 674
- Installing the Oracle Cluster Health Monitor 674
- Starting and Stopping the Oracle Cluster Health Monitor 677
- Understanding the Architecture 678
- Installing the Client-Side GUI 678
- Viewing Current and Captured Activity 679
- OSWatcher 680
- Installing OSWatcher 680
- Starting OSWatcher 681
- Stopping OSWatcher 681
- Viewing Results Graphically 682
- nmon 683
- Summary 685
- Parallel Execution Concepts 688
- Serial Execution 688
- Parallel Execution 689
- Producers and Consumers 691
- Bloom Filters 696
- Partitioning 698
- Parallel Execution Configuration 700
- cluster_interconnects 700
- db_block_size, db_cache_size, and db_file_multiblock_read_count 700
- instance_groups and parallel_instance_group 701
- large_pool_size, parallel_execution_message_size, and shared_pool_size 702
- parallel_adaptive_multi_user 702
- parallel_automatic_tuning 703
- parallel_degree_limit 703
- parallel_degree_policy, parallel_min_time_threshold, and parallel_servers_target 704
- parallel_force_local 707
- parallel_io_cap_enabled 707
- parallel_max_servers, parallel_min_servers, parallel_threads_per_cpu, and processes 708
- parallel_min_percent 708
- pga_aggregate_target 709
- Parallel Execution Performance 709
- AWR Reports 709
- SQL*Plus 713
- Trace Files 714
- Summary 715
- Upgrading Grid Infrastructure Components 717
- Installing the Prerequisites 718
- Running the Installer 719
- Specifying Options 720
- Running the Upgrade 725
- Upgrading RAC Software 729
- Running the Installer 730
- Running Configuration Scripts 732
- Preparing for the Database Upgrade 734
- Identifying the Upgrade Path 734
- Determine Upgrade Method 735
- Testing the Upgrade Process 735
- Running the pre-Upgrade Tool 736
- Performing Other Checks 741
- Saving Current Database Parameters 741
- Backing up the Database. 742
- Configuring the Listener Process 743
- Upgrading Automatically with DBUA 743
- Upgrading a Database Manually 752
- Preparing the Parameter Files. 754
- Preparing Password Files. 755
- Modifying the Initialization Parameters. 755
- Restarting the Database in UPGRADE Mode. 755
- Running the Catalog Upgrade Script 755
- Configuring SPFILE 756
- Running the post-Upgrade Status Tool. 757
- Running post-Upgrade Scripts 758
- Recompiling Invalid Packages. 760
- Updating /etc/oratab. 762
- Updating Environment Variables 762
- Updating the Oracle Cluster Registry. 762
- Setting the Initialization Parameters for the New Release. 763
- Performing the Necessary post-Upgrade Steps 764
- Completing Mandatory post-Upgrade Tasks 764
- Performing the Recommended Tasks 765
- Resolving Problems in Mixed-Database Environments 767
- Using a Swing Kit 768
- Summary 769
- Index 771
BOOK
SUMMARY
Items Found: 723
- Chapter 1: Installing the Oracle Binaries 1
- Understanding the OFA 2
- Oracle Inventory Directory 4
- Oracle Base Directory 4
- Oracle Home Directory 5
- Oracle Network Files Directory 6
- Automatic Diagnostic Repository 6
- Installing Oracle 7
- Step 1. Create the OS Groups and User 8
- Step 2. Ensure That the OS Is Adequately Configured 11
- Step 3. Obtain the Oracle Installation Software 12
- Step 4. Unzip the Files 13
- Step 5. Creating oraInst.loc File 14
- Step 6. Configure the Response File, and Run the Installer 15
- Step 7. Troubleshoot Any Issues 20
- Step 8. Apply Any Additional Patches 21
- Installing with a Copy of an Existing Installation 22
- Step 1. Copy the Binaries, Using an OS Utility 22
- Step 2. Attach the Oracle Home 24
- Installing Read-Only Oracle Home 25
- Upgrading Oracle Software 26
- vi
- Reinstalling After Failed Installation 27
- Applying Interim Patches 28
- Installing Remotely with the Graphical Installer 30
- Step 1. Install X Software and Networking Utilities on the Local PC 31
- Step 2. Start an X Session on the Local Computer 31
- Step 3. Copy the Oracle Installation Media to the Remote Server 32
- Step 4. Run the xhost Command 33
- Step 5. Log In to the Remote Computer from X 33
- Step 6. Ensure that the DISPLAY Variable Is Set Correctly on the Remote Computer 33
- Step 7. Execute the runInstaller Utility 34
- Step 8. Troubleshoot 35
- Installation in the Cloud 35
- Summary 36
- Chapter 2: Creating a Database 39
- Setting OS Variables 40
- A Manually Intensive Approach 41
- Oracle’s Approach to Setting OS Variables 41
- My Approach to Setting OS Variables 43
- Creating a Database 46
- Step 1. Set the OS Variables 46
- Step 2. Configure the Initialization File 47
- Step 3. Create the Required Directories 50
- Step 4. Create the Database 50
- Step 5. Create a Data Dictionary 56
- Configuring and Implementing the Listener 57
- Implementing a Listener with the Net Configuration Assistant 58
- Manually Configuring a Listener 59
- Connecting to a Database through the Network 61
- Creating a Password File 62
- vii
- Starting and Stopping the Database 64
- Understanding OS Authentication 64
- Starting the Database 65
- Stopping the Database 68
- Using the dbca to Create a Database 70
- Dropping a Database 73
- How Many Databases on One Server? 74
- Understanding Oracle Architecture 77
- Summary 80
- Chapter 3: Configuring an Efficient Environment 83
- Customizing Your OS Command Prompt 84
- Customizing Your SQL Prompt 87
- Creating Shortcuts for Frequently Used Commands 89
- Using Aliases 89
- Using a Function 91
- Rerunning Commands Quickly 93
- Scrolling with the Up and Down Arrow Keys 94
- Using Ctrl+P and Ctrl+N 94
- Listing the Command History 94
- Searching in Reverse 95
- Setting the Command Editor 95
- Developing Standard Scripts 96
- dba_setup 97
- dba_fcns 98
- tbsp_chk.bsh 99
- conn.bsh 102
- filesp.bsh 103
- login.sql 106
- top.sql 107
- lock.sql 108
- users.sql 110
- Organizing Scripts 111
- Step 1. Create Directories 112
- Step 2. Copy Files to Directories 112
- Step 3. Configure the Startup File 113
- Automating Scripts 114
- Summary 114
- Chapter 4: Tablespaces and Data Files 117
- Understanding the First Five 119
- Understanding the Need for More 120
- Creating Tablespaces 122
- Renaming a Tablespace 127
- Changing a Tablespace’s Write Mode 128
- Dropping a Tablespace 129
- Using Oracle Managed Files 132
- Creating a Bigfile Tablespace 133
- Enabling Default Table Compression Within a Tablespace Tablespace 134
- Displaying Tablespace Size 135
- Altering Tablespace Size 137
- Toggling Data Files Offline and Online 138
- Renaming or Relocating a Data File 141
- Performing Online Data File Operations 142
- Performing Offline Data File Operations 142
- Using ASM for Tablespaces 148
- Summary 149
- Chapter 5: Managing Control Files, Online Redo Logs, and Archivelogs 151
- Managing Control Files 151
- Viewing Control File Names and Locations 155
- Adding a Control File 155
- Moving a Control File 159
- Removing a Control File 160
- ix
- Online Redo Logs 162
- Displaying Online Redo Log Information 166
- Determining the Optimal Size of Online Redo Log Groups 168
- Determining the Optimal Number of Redo Log Groups 169
- Adding Online Redo Log Groups 172
- Resizing and Dropping Online Redo Log Groups 172
- Adding Online Redo Log Files to a Group 175
- Removing Online Redo Log Files from a Group 175
- Moving or Renaming Redo Log Files 176
- Controlling the Generation of Redo 177
- Implementing Archivelog Mode 179
- Making Architectural Decisions 179
- Setting the Archive Redo File Location 181
- Enabling Archivelog Mode 186
- Disabling Archivelog Mode 187
- Reacting to a Lack of Disk Space in Your Archive Log Destination 188
- Backing Up Archive Redo Log Files 190
- Summary 190
- Chapter 6: Users and Basic Security 193
- Managing Default Users 193
- Locking Accounts and Expiring Passwords 196
- Identifying DBA-Created Accounts 198
- Checking Default Passwords 199
- Creating Users 200
- Choosing a Username and Authentication Method 201
- Assigning Default Permanent and Temporary Tablespaces 206
- Modifying Passwords 209
- Schema Only Account 210
- Modifying Users 212
- Dropping Users 213
- Enforcing Password Security and Resource Limits 214
- x
- Basic Password Security 215
- Password Strength 219
- Limiting Database Resource Usage 221
- Managing Privileges 223
- Assigning Database System Privileges 224
- Assigning Database Object Privileges 225
- Grouping and Assigning Privileges 226
- Summary 229
- Chapter 7: Tables and Constraints 231
- Understanding Table Types 232
- Understanding Data Types 233
- Character 234
- Numeric 236
- Date/Time 237
- RAW 238
- ROWID 239
- LOB 240
- JSON 241
- Creating a Table 241
- Creating a Heap-Organized Table 242
- Implementing Virtual Columns 246
- Implementing Invisible Columns 250
- Making Read-Only Tables 251
- Understanding Deferred-Segment Creation 252
- Creating a Table with an Autoincrementing (Identity) Column 253
- Allowing for Default Parallel SQL Execution 256
- Compressing Table Data 257
- Avoiding Redo Creation 260
- Creating a Table from a Query 263
- xi
- Modifying a Table 266
- Obtaining the Needed Lock 266
- Renaming a Table 267
- Adding a Column 267
- Altering a Column 268
- Renaming a Column 270
- Dropping a Column 270
- Displaying Table DDL 271
- Dropping a Table 273
- Undropping a Table 274
- Removing Data from a Table 275
- Using DELETE 276
- Using TRUNCATE 276
- Viewing and Adjusting the High-Water Mark 278
- Tracing to Detect Space Below the High-Water Mark 279
- Using DBMS_SPACE to Detect Space Below the High-Water
- Mark 280
- Selecting from Data Dictionary Extents View 282
- Lowering the High-Water Mark 282
- Creating a Temporary Table 286
- Creating an Index-Organized Table 288
- Managing Constraints 289
- Creating Primary Key Constraints 289
- Enforcing Unique Key Values 291
- Creating Foreign Key Constraints 293
- Checking for Specific Data Conditions 295
- Enforcing Not Null Conditions 296
- Disabling Constraints 297
- EnablingConstraints 299
- Summary 302
- Chapter 8: Indexes 303
- Deciding When to Create an Index 304
- Proactively Creating Indexes 305
- Reactively Creating Indexes 306
- Planning for Robustness 308
- Determining Which Type of Index to Use 308
- Estimating the Size of an Index Before Creation 311
- Creating Separate Tablespaces for Indexes 313
- Creating Portable Scripts 316
- Establishing Naming Standards 317
- Creating Indexes 318
- Creating B-tree Indexes 318
- Creating Concatenated Indexes 322
- Implementing Function-Based Indexes 324
- Creating Unique Indexes 325
- Implementing Bitmap Indexes 327
- Creating Bitmap Join Indexes 328
- Implementing Reverse-Key Indexes 329
- Creating Key-Compressed Indexes 330
- Parallelizing Index Creation 331
- Avoiding Redo Generation When Creating an Index 331
- Implementing Invisible Indexes 332
- Maintaining Indexes 335
- Renaming an Index 336
- Displaying Code to Re-create an Index 336
- Rebuilding an Index 337
- Making Indexes Unusable 338
- Monitoring Index Usage 339
- Dropping an Index 341
- Indexing Foreign Key Columns 341
- Implementing an Index on a Foreign Key Column 342
- Determining if Foreign Key Columns Are Indexed 344
- Summary 347
- Chapter 9: Views, Synonyms, and Sequences 351
- Implementing Views 351
- Creating a View 352
- Checking Updates 354
- Creating Read-Only Views 355
- Updatable Join Views 356
- Creating an INSTEAD OF Trigger 358
- Implementing an Invisible Column 360
- Modifying a View Definition 362
- Displaying the SQL Used to Create a View 363
- Renaming a View 364
- Dropping a View 365
- Managing Synonyms 365
- Creating a Synonym 366
- Creating Public Synonyms 367
- Dynamically Generating Synonyms 368
- Displaying Synonym Metadata 369
- Renaming a Synonym 370
- Dropping a Synonym 370
- Managing Sequences 371
- Creating a Sequence 371
- Using Sequence Pseudocolumns 373
- Autoincrementing Columns 374
- Scalable Sequences 375
- Implementing Multiple Sequences That Generate Unique Values 376
- Creating One Sequence or Many 377
- Viewing Sequence Metadata 378
- Renaming a Sequence 379
- xiv
- Dropping a Sequence 379
- Resetting a Sequence 379
- Summary 381
- Chapter 10: Data Dictionary Fundamentals 383
- Data Dictionary Architecture 384
- Static Views 384
- Dynamic Performance Views 387
- A Different View of Metadata 389
- A Few Creative Uses of the Data Dictionary 392
- Derivable Documentation 392
- Displaying User Information 394
- Displaying Table Row Counts 398
- Showing Primary Key and Foreign Key Relationships 401
- Displaying Object Dependencies 402
- Summary 406
- Chapter 11: Large Objects 407
- Describing LOB Types 408
- Illustrating LOB Locators, Indexes, and Chunks 409
- Distinguishing Between BasicFiles and SecureFiles 411
- BasicFiles 412
- SecureFiles 412
- Creating a Table with a LOB Column 413
- Creating a BasicFiles LOB Column 413
- Implementing a LOB in a Specific Tablespace 415
- Creating a SecureFiles LOB Column 416
- Implementing a Partitioned LOB 417
- Maintaining LOB Columns 419
- Moving a LOB Column 420
- Adding a LOB Column 420
- Removing a LOB Column 421
- Caching LOBs 421
- Storing LOBs In- and Out of Line 422
- Implementing SecureFiles Advanced Features 424
- Compressing LOBs 424
- Deduplicating LOBs 425
- Encrypting LOBs 426
- Migrating BasicFiles to SecureFiles 428
- Loading LOBs 432
- Loading a CLOB 432
- Loading a BLOB 434
- Measuring LOB Space Consumed 435
- BasicFiles Space Used 436
- SecureFiles Space Used 437
- Reading BFILEs 439
- Summary 440
- Chapter 12: Partitioning: Divide and Conquer 441
- What Tables Should Be Partitioned? 443
- Creating Partitioned Tables 445
- Partitioning by Range 445
- Placing Partitions in Tablespaces 450
- Partitioning by List 453
- Partitioning by Hash 454
- Blending Different Partitioning Methods 455
- Creating Partitions on Demand 457
- Partitioning to Match a Parent Table 462
- Partitioning on a Virtual Column 466
- Giving an Application Control Over Partitioning 467
- Maintaining Partitions 467
- Viewing Partition Metadata 468
- Moving a Partition 469
- Automatically Moving Updated Rows 471
- Partitioning an Existing Table 472
- Adding a Partition 474
- Exchanging a Partition with an Existing Table 476
- Renaming a Partition 479
- Splitting a Partition 479
- Merging Partitions 480
- Dropping a Partition 482
- Generating Statistics for a Partition 483
- Removing Rows from a Partition 484
- Manipulating Data Within a Partition 485
- Partitioning Indexes 486
- Partitioning an Index to Follow Its Table 486
- Partitioning an Index Differently from Its Table 490
- Partial Indexes 492
- Partition Pruning 494
- Modifying the Partition Strategy 496
- Summary 496
- Chapter 13: Data Pump 499
- Data Pump Architecture 500
- Getting Started 505
- Taking an Export 505
- Importing a Table 509
- Using a Parameter File 509
- Exporting and Importing with Granularity 511
- Exporting and Importing an Entire Database 511
- Schema Level 513
- Table Level 514
- Tablespace Level 515
- Transferring Data 516
- Exporting and Importing Directly Across the Network 516
- Copying Data Files 519
- Features for Manipulating Storage 521
- Exporting Tablespace Metadata 522
- Specifying Different Data File Paths and Names 522
- Importing into a Tablespace Different from the Original 523
- Changing the Size of Data Files 524
- Changing Segment and Storage Attributes 525
- Filtering Data and Objects 526
- Specifying a Query 526
- Exporting a Percentage of the Data 528
- Excluding Objects from the Export File 528
- Excluding Statistics 530
- Including Only Specific Objects in an Export File 531
- Exporting Table, Index, Constraint, and Trigger DDL 531
- Excluding Objects from Import 532
- Including Objects in Import 532
- Common Data Pump Tasks 533
- Estimating the Size of Export Jobs 533
- Listing the of Dump Files 534
- Cloning a User 535
- Creating a Consistent Export 535
- Importing When Objects Already Exist 537
- Renaming a Table 539
- Remapping Data 539
- Suppressing a Log File 541
- Using Parallelism 541
- Specifying Additional Dump Files 543
- Reusing Output File Names 543
- Creating a Daily DDL File 544
- Compressing Output 545
- Changing Table Compression Characteristics on Import 546
- Encrypting Data 546
- Exporting Views as Tables 548
- Disabling Logging of Redo on Import 548
- Attaching to a Running Job 549
- Stopping and Restarting a Job 550
- Terminating a Data Pump Job 550
- Monitoring Data Pump Jobs 551
- Data Pump Log File 551
- Data Dictionary Views 552
- Database Alert Log 553
- Status Table 553
- Interactive Command Mode Status 554
- OS Utilities 554
- Summary 555
- Chapter 14: External Tables 557
- SQL*Loader vs. External Tables 558
- Loading CSV Files into the Database 560
- Creating a Directory Object and Granting Access 561
- Creating an External Table 561
- Generating SQL to Create an External Table 563
- Viewing External Table Metadata 565
- Loading a Regular Table from the External Table 566
- Performing Advanced Transformations 568
- Viewing Text Files from SQL 570
- Unloading and Loading Data Using an External Table 572
- Enabling Parallelism to Reduce Elapsed Time 575
- Compressing a Dump File 576
- Encrypting a Dump File 577
- Summary 580
- Chapter 15: Materialized Views 581
- Understanding MVs 581
- MV Terminology 584
- Referencing Useful Views 585
- Creating Basic Materialized Views 586
- Creating a Complete Refreshable MV 587
- Creating a Fast Refreshable MV 591
- Going Beyond the Basics 598
- Creating MVs and Specifying Tablespace for MVs and Indexes 598
- Creating Indexes on MVs 598
- Partitioning MVs 599
- Compressing an MV 600
- Encrypting MV Columns 600
- Building an MV on a Prebuilt Table 602
- Creating an Unpopulated MV 603
- Creating an MV Refreshed on Commit 604
- Creating a Never Refreshable MV 605
- Creating MVs for Query Rewrite 606
- Creating a Fast Refreshable MV Based on a Complex Query 607
- Viewing MV DDL 611
- Dropping an MV 611
- Modifying MVs 612
- Modifying Base Table DDL and Propagating to MVs 612
- Toggling Redo Logging on an MV 617
- Altering Parallelism 618
- Moving an MV 619
- Managing MV Logs 619
- Creating an MV Log 620
- Indexing MV Log Columns 622
- Viewing Space Used by an MV Log 622
- Shrinking the Space in an MV Log 623
- Checking the Row Count of an MV Log 624
- Moving an MV Log 625
- Dropping an MV Log 626
- Refreshing MVs 627
- Manually Refreshing MVs from SQL*Plus 627
- Creating an MV with a Refresh Interval 629
- Efficiently Performing a Complete Refresh 630
- Handling the ORA-12034 Error 631
- Monitoring MV Refreshes 632
- Viewing MVs’ Last Refresh Times 632
- Determining Whether a Refresh Is in Progress 632
- Monitoring Real-Time Refresh Progress 633
- Checking Whether MVs Are Refreshing Within a Time Period 634
- Creating Remote MV Refreshes 635
- Understanding Remote-Refresh Architectures 636
- Viewing MV Base Table Information 638
- Determining How Many MVs Reference a Central MV Log 639
- Managing MVs in Groups 641
- Creating an MV Group 642
- Altering an MV Refresh Group 642
- Refreshing an MV Group 643
- DBMS_MVIEW vs. DBMS_REFRESH 643
- Determining MVs in a Group 644
- Adding an MV to a Refresh Group 645
- Removing MVs from a Refresh Group 645
- Dropping an MV Refresh Group 645
- Summary 646
- Chapter 16: User-Managed Backup and Recovery 647
- Implementing a Cold-Backup Strategy 649
- Making a Cold Backup of a Database 649
- Restoring a Cold Backup in Noarchivelog Mode with Online Redo Logs 652
- Restoring a Cold Backup in Noarchivelog Mode Without Online Redo Logs 653
- Scripting a Cold Backup and Restore 655
- Implementing a Hot Backup Strategy 660
- Making a Hot Backup 660
- Scripting Hot Backups 665
- Understanding the Split-Block Issue 668
- Understanding the Need for Redo Generated During Backup 672
- Understanding That Data Files Are Updated 673
- Performing a Complete Recovery of an Archivelog Mode Database 675
- Restoring and Recovering with the Database Offline 676
- Restoring and Recovering with a Database Online 681
- Restoring Control Files 682
- Performing an Incomplete Recovery of an Archivelog Mode Database 687
- Summary 691
- Chapter 17: Configuring RMAN 693
- Understanding RMAN 694
- Starting RMAN 699
- RMAN Architectural Decisions 700
- 1. Running the RMAN Client Remotely or Locally 704
- 2. Specifying the Backup User 704
- 3. Using Online or Offline Backups 705
- 4. Setting the Archivelog Destination and File Format 705
- 5. Configuring the RMAN Backup Location and File Format 706
- 6. Setting the Autobackup of the Control File 709
- 7. Specifying the Location of the Autobackup of the Control File 710
- 8. Backing Up Archivelogs 711
- 9. Determining the Location for the Snapshot Control File 711
- 10. Using a Recovery Catalog 712
- 11. Using a Media Manager 713
- 12. Setting the CONTROL_FILE_RECORD_KEEP_TIME Initialization Parameter 714
- 13. Configuring RMAN’s Backup Retention Policy 715
- 14. Configuring the Archivelogs’ Deletion Policy 717
- 15. Setting the Degree of Parallelism 718
- 16. Using Backup Sets or Image Copies 719
- 17. Using Incremental Backups 720
- 18. Using Incrementally Updated Backups 721
- 19. Using Block Change Tracking 721
- 20. Configuring Binary Compression 722
- 21. Configuring Encryption 723
- 22. Configuring Miscellaneous Settings 724
- 23. Configuring Informational Output 725
- Segueing from Decision to Action 727
- Summary 732
- Chapter 18: RMAN Backups and Reporting 733
- Preparing to Run RMAN Backup Commands 734
- Setting NLS_DATE_FORMAT 734
- Setting ECHO 735
- Showing Variables 736
- Running Backups 736
- Backing Up the Entire Database 736
- Backing Up Tablespaces 738
- Backing Up Data Files 739
- Backing Up the Control File 739
- Backing Up the spfile 740
- Backing Up Archivelogs 740
- Backing Up FRA 741
- Excluding Tablespaces from Backups 742
- Backing Up Data Files Not Backed Up 743
- Skipping Read-Only Tablespaces 743
- Skipping Offline or Inaccessible Files 744
- Backing Up Large Files in Parallel 745
- Adding RMAN Backup Information to the Repository 745
- Taking Backups of Pluggable Databases 747
- While Connected to the Root Container 747
- While Connected to a Pluggable Database 748
- Creating Incremental Backups 749
- Taking Incremental-Level Backups 750
- Making Incrementally Updating Backups 751
- Using Block Change Tracking 753
- Checking for Corruption in Data Files and Backups 754
- Using VALIDATE 754
- Using BACKUP .VALIDATE 756
- Using RESTORE .VALIDATE 756
- Using a Recovery Catalog 757
- Creating a Recovery Catalog 757
- Registering a Target Database 759
- Backing Up the Recovery Catalog 760
- Synchronizing the Recovery Catalog 760
- Recovery Catalog Versions 761
- Dropping a Recovery Catalog 761
- Logging RMAN Output 762
- Redirecting Output to a File 762
- Capturing Output with Linux/Unix Logging Commands 763
- Logging Output to a File 764
- Querying for Output in the Data Dictionary 764
- RMAN Reporting 765
- Using LIST 765
- Using REPORT 766
- Using SQL 767
- Summary 772
- Chapter 19: RMAN Restore and Recovery 773
- Determining if Media Recovery Is Required 775
- Determining What to Restore 777
- How the Process Works 777
- Using Data Recovery Advisor 779
- Using RMAN to Stop/Start Oracle 783
- Shutting Down 783
- Starting Up 783
- Complete Recovery 784
- Testing Restore and Recovery 785
- Restoring and Recovering the Entire Database 787
- Restoring and Recovering Tablespaces 789
- Restoring Read-Only Tablespaces 790
- Restoring Temporary Tablespaces 791
- Restoring and Recovering Data Files 791
- Restoring Data Files to Nondefault Locations 793
- Performing Block-Level Recovery 794
- Restoring a Container Database and Its Associated Pluggable Databases 796
- Restoring Archivelog Files 799
- Restoring to the Default Location 800
- Restoring to a Nondefault Location 800
- Restoring a Control File 801
- Using a Recovery Catalog 801
- Using an Autobackup 802
- Specifying a Backup File Name 803
- Restoring the spfile 803
- Incomplete Recovery 805
- Determining the Type of Incomplete Recovery 808
- Performing Time-Based Recovery 808
- Performing Log Sequence-Based Recovery 809
- Performing SCN-Based Recovery 810
- Restoring to a Restore Point 811
- Restoring Tables to a Previous Point 811
- Flashing Back a Table 813
- FLASHBACK TABLE TO BEFORE DROP 813
- Flashing Back a Table to a Previous Point in Time 815
- FLASHING BACK A DATABASE 816
- Restoring and Recovering to a Different Server 819
- Step 1. Create an RMAN Backup on the Originating Database 821
- Step 2. Copy the RMAN Backup to the Destination Server 821
- Step 3. Ensure That Oracle Is Installed 822
- Step 4. Source the Required OS Variables 822
- Step 5. Create an init.ora File for the Database to Be Restored 822
- Step 6. Create Any Required Directories for Data Files, Control Files,
- and Dump/Trace Files 823
- Step 7. Start Up the Database in Nomount Mode 824
- Step 8. Restore the Control File from the RMAN Backup 824
- Step 9. Start Up the Database in Mount Mode 824
- Step 10. Make the Control File Aware of the Location of the RMAN Backups 824
- Step 11. Rename and Restore the Data Files to Reflect New Directory Locations 825
- Step 12. Recover the Database 828
- Step 13. Set the New Location for the Online Redo Logs 829
- Step 14. Open the Database 830
- Step 15. Add the Temp File 831
- Step 16. Rename the Database 831
- Summary 834
- Chapter 20: Automating Jobs 837
- Automating Jobs with Oracle Scheduler 839
- Creating and Scheduling a Job 839
- Viewing Job Details 841
- Modifying Job Logging History 842
- Modifying a Job 842
- Stopping a Job 843
- Disabling a Job 843
- Enabling a Job 843
- Copying a Job 844
- Running a Job Manually 844
- Deleting a Job 845
- Oracle Scheduler vs. cron 845
- Automating Jobs via cron 846
- How cron Works 847
- Enabling Access to cron 849
- Understanding cron Table Entries 850
- Scheduling a Job to Run Automatically 851
- Redirecting cron Output 855
- Troubleshooting cron 856
- Examples of Automated DBA Jobs 857
- Starting and Stopping the Database and Listener 858
- Checking for Archivelog Destination Fullness 859
- Truncating Large Log Files 862
- Checking for Locked Production Accounts 864
- Checking for Too Many Processes 865
- Verifying the Integrity of RMAN Backups 866
- Autonomous Database 868
- Summary 869
- Chapter 21: Database Troubleshooting 871
- Quickly Triaging 871
- Checking Database Availability 872
- Investigating Disk Fullness 875
- Inspecting the Alert Log 878
- Identifying Bottlenecks via OS Utilities 882
- Identifying System Bottlenecks 883
- Mapping an Operating System Process to an SQL Statement 888
- Finding Resource-Intensive SQL Statements 891
- Monitoring Real-Time SQL Execution Statistics 891
- Running Oracle Diagnostic Utilities 894
- Detecting and Resolving Locking Issues 899
- Resolving Open-Cursor Issues 902
- Troubleshooting Undo Tablespace Issues 904
- Determining if Undo Is Correctly Sized 904
- Viewing SQL That Is Consuming Undo Space 907
- Handling Temporary Tablespace Issues 908
- Determining if Temporary Tablespace Is Sized Correctly 909
- Viewing SQL That Is Consuming Temporary Space 910
- Summary 911
- Chapter 22: Pluggable Databases 915
- Understanding Pluggable Architecture 919
- Paradigm Shift 922
- Backup and Recovery Implications 924
- Tuning Nuances 925
- Creating a CDB 926
- Using the Database Configuration Assistant (DBCA) 927
- Generating CDB Create Scripts via DBCA 928
- Creating Manually with SQL 929
- Verifying That a CDB Was Created 932
- Administrating the Root Container 934
- Connecting to the Root Container 934
- Displaying Currently Connected Container Information 935
- Starting/Stopping the Root Container 936
- Creating Common Users 936
- Creating Common Roles 937
- Creating Local Users and Roles 938
- Reporting on Container Space 938
- Switching Containers 940
- Creating a Pluggable Database Within a CDB 941
- Cloning the Seed Database 942
- Cloning an Existing PDB 943
- Cloning from a Non-CDB Database 945
- Unplugging a PDB from a CDB 947
- Plugging an Unplugged PDB into a CDB 948
- Using the DBCA to Create a PDB from the Seed Database 949
- Checking the Status of Pluggable Databases 950
- Administrating Pluggable Databases 951
- Connecting to a PDB 951
- Managing a Listener in PDB Environment 952
- Showing the Currently Connected PDB 954
- Starting/Stopping a PDB 955
- Modifying Initialization Parameters Specific to a PDB 956
- Renaming a PDB 957
- Limiting the Amount of Space Consumed by PDB 957
- Restricting Changes to SYSTEM at PDB 958
- Viewing PDB History 958
- Dropping a PDB 959
- Refreshable Clone PDB 960
- Databases in the Cloud 961
- Summary 961
- Index 963
- About the Authors
- Michelle Malcher is a security architect for databases at Extreme-Scale Solutions.
- Her deep technical expertise from database to security, as well as her senior-level
- contributions as a speaker, author, Oracle ACE director, and customer advisory
- board participant have aided many corporations in the areas of architecture and risk
BOOK
SUMMARY
Items Found: 484
- PART 1 Overview
- CHAPTER 1 Spatial Information Management 3
- CHAPTER 2 Overview of Oracle Spatial 19
- CHAPTER 3 Location-Enabling Your Applications 37
- PART 2 Basic Spatial
- CHAPTER 4 The SDO_GEOMETRY Data Type 55
- CHAPTER 5 Loading, Transporting, and Validating Spatial Data 115
- CHAPTER 6 Geocoding 151
- CHAPTER 7 Manipulating SDO_GEOMETRY in Application Programs 207
- PART 3 Spatial and Network Analysis
- CHAPTER 8 Spatial Indexes and Operators 243
- CHAPTER 9 Geometry Processing Functions 305
- CHAPTER 10 Network Modeling 345
- CHAPTER 11 The Routing Engine 417
- PART 4 Visualization
- CHAPTER 12 Defining Maps Using MapViewer 437
- CHAPTER 13 Using Maps in Your Applications 503
- PART 5 Spatial in Applications
- CHAPTER 14 Sample Applications 581
- CHAPTER 15 Case Studies 623
- CHAPTER 16 Tips, Common Mistakes, and Common Errors 663
- PART 6 Appendixes
- APPENDIX A Additional Spatial Analysis Functions 689
- APPENDIX B Linear Referencing 701
- APPENDIX C Topology Data Model in Oracle 713
- APPENDIX D Storing Raster Data in Oracle 725
- APPENDIX E Three-Dimensional Modeling Using Point Clouds
- and TINs in Oracle 743
- INDEX 757
- Using Spatial Information in Various Industries 5
- Sources of Spatial Data 7
- Managing and Analyzing Spatial Data 7
- Storing Spatial Data in a Database 11
- Spatial Analysis 14
- Benefits of Oracle Spatial 15
- Summary 18
- References 18
- CHAPTER 2 Overview of Oracle Spatial 19
- Technology and Architecture Overview 19
- Getting Started with Oracle Spatial 22
- Data Model: Storing Spatial Data 22
- Location-Enabling 22
- Query and Analysis 24
- Visualizing Spatial Data 27
- Advanced Spatial Engine 29
- Oracle Spatial Technology Products 30
- Locator 30
- Spatial Option 32
- What to Expect in an Oracle Spatial Install 33
- Installing Oracle Spatial in the Database 34
- Upgrades 34
- Understanding a Spatial Install 35
- Checking the Version of a Spatial Install 36
- Summary 36
- v
- CHAPTER 3 Location-Enabling Your Applications 37
- Adding Location Information to Tables 38
- Application-Specific Data 38
- Geographic Data 42
- Metadata for Spatial Tables 45
- Dictionary View for Spatial Metadata 45
- Populating Spatial Metadata for Your Application 49
- Additional Information for Visualization and Network Analysis 50
- Summary 51
- Types of Spatial Geometries in Oracle 56
- Points 56
- Line Strings 56
- Polygons and Surfaces 57
- Solids 57
- Collections 58
- Logical Implementation of SDO_GEOMETRY 58
- Spatial Data in SQL/MM and OGC 59
- SDO_GEOMETRY Type, Attributes, and Values 60
- SDO_GTYPE Attribute 61
- SDO_SRID Attribute 63
- SDO_POINT Attribute 72
- SDO_ELEM_INFO and SDO_ORDINATES Attributes 74
- Simple Two-Dimensional Geometry Examples 76
- Point 76
- Line String: Connected by Straight Lines 78
- Line String: Connected by Arcs 79
- Polygon: Ring (Boundary) Connected by Straight Lines 80
- Polygon: Ring (Boundary) Connected by Arcs 82
- Rectangle Polygon 82
- Circle Polygon 83
- Complex Two-Dimensional Geometry Examples 84
- Constructing Complex Geometries 85
- SDO_ELEM_INFO for Compound Elements 86
- SDO_ELEM_INFO for Voided Polygon Element 87
- Compound Line String Example 87
- Compound Polygon Example 88
- Polygon with a Void 89
- Collections 91
- Three-Dimensional Examples 95
- Three-Dimensional Points, Lines, and Polygons 97
- Composite Surfaces 102
- Simple Solid 105
- Composite Solid 110
- Collections 112
- Summary 114
- Inserting Data into an SDO_GEOMETRY Column 116
- Loading and Converting Spatial Data 117
- Loading from Text Files Using SQL*Loader 117
- Transporting Spatial Data Between Oracle Databases 120
- Loading from External Formats 122
- Converting Between SDO_GEOMETRY and WKT/WKB 124
- Converting SDO_GEOMETRY Data in GML 124
- Extruding a Two-Dimensional Geometry to Three Dimensions 129
- Validating Spatial Data 132
- Validation Functions 132
- Validation Criteria 133
- Composite Solids 140
- Collections 141
- Debugging Spatial Data 142
- REMOVE_DUPLICATE_VERTICES 142
- EXTRACT 143
- APPEND 146
- GETNUMELEM, GETNUMVERTICES, and GETVERTICES 147
- EXTRACT3D 147
- Miscellaneous Functions 149
- Summary 149
- What Is Geocoding? 151
- Architecture of the Oracle Geocoder 153
- Parsing the Input Address 153
- Searching for the Address 154
- Computing the Spatial Coordinates 154
- Setting Up the Reference Data for the Geocoder 156
- Parameter Tables 156
- Data Tables 157
- Using Geocoder Functions 158
- GEOCODE_AS_GEOMETRY 158
- GEOCODE 161
- GEOCODE_ALL 176
- Geocoding Using Structured Addresses 182
- GEOCODE_ADDR 182
- GEOCODE_ADDR_ALL 184
- Reverse Geocoding 184
- REVERSE_GEOCODE 184
- Geocoding Business Data 186
- Adding the Spatial Column 186
- Geocoding the Addresses: The “Naive” Approach 187
- Address Verification and Correction 188
- Automatic Geocoding 193
- The Geocoding Server 196
- Architecture 196
- Installation and Configuration 198
- Using the Geocoder: XML Queries and Responses 200
- Summary 206
- CHAPTER 7 Manipulating SDO_GEOMETRY
- in Application Programs 207
- Manipulating Geometries Using PL/SQL 209
- VARRAY Manipulation Primer 211
- Reading and Writing SDO_GEOMETRY Objects 215
- Creating New Geometries 215
- Extracting Information from Geometries 217
- Modifying Existing Geometries 219
- Manipulating Geometries in Java 223
- Using the JGeometry Class 223
- Using 3D Geometries: the J3D_Geometry Class 229
- Extracting Elements from 3D Geometries: the
- ElementExtractor Class 229
- Using Standard Notations: WKT, WKB, GML 232
- Using ESRI Shapefiles 235
- Summary 240
- Spatial Indexes 245
- Inserting Metadata for a Spatial Layer Prior to Indexing 246
- Creating a Spatial Index 247
- Spatial Indexing Concepts 247
- Spatial Index Parameters 249
- Spatial Operators 253
- Syntax of Spatial Operators 253
- Semantics of Spatial Operators 254
- Evaluation of Spatial Operators 255
- A Closer Look at Spatial Operators 256
- SDO_WITHIN_DISTANCE Operator 256
- SDO_NN Operator 261
- Operators for Spatial Interactions (Relationships) 268
- Hints for Spatial Operators 280
- Advanced Spatial Index Features 287
- Function-Based Spatial Indexes 287
- Local Partitioned Spatial Indexes 290
- Parallel Indexing 293
- Online Index Rebuilds 294
- Spatial Joins 295
- Three-Dimensional Analysis 298
- Summary 303
- Buffering Functions 307
- Relationship Analysis Functions 310
- SDO_DISTANCE 310
- SDO_CLOSEST_POINTS 313
- RELATE 315
- Geometry Combination Functions 320
- SDO_INTERSECTION 321
- SDO_UNION 323
- SDO_DIFFERENCE 323
- SDO_XOR 325
- Geometric Analysis Functions 326
- Area, Length, and Volume Functions 326
- MBR Functions 330
- Miscellaneous Geometric Analysis Functions 333
- Aggregate Functions 337
- Aggregate MBR Function 337
- Other Aggregate Functions 338
- Summary 343
- General Network Modeling Concepts 347
- Examples of Networks 348
- Oracle Network Data Model 349
- Data Structures: The Network Tables 351
- Node Table 352
- Link Table 352
- Path Table 353
- Path Link Table 354
- Network Metadata 354
- Defining Networks 355
- “Automatic” Network Definition 355
- “Manual” Network Definition 357
- Defining Multiple Networks on the Same Tables 359
- Dropping a Network 363
- Creating Spatial Indexes on Network Tables 363
- Getting Information About a Network 364
- Verifying Network Connectivity 365
- Example Network 366
- Analyzing and Managing Networks Using the Java API 370
- Analyzing Networks: The NetworkManager Class 370
- Limiting the Search Space: The SystemConstraint Class 384
- Advanced Analysis: Network Constraints 385
- Network Structures: The Network, Node, Link, and Path Classes 391
- Creating Networks: The NetworkFactory Class 394
- Debugging Network Structures 396
- Analyzing Networks Using the PL/SQL API 397
- Using a Memory Object 399
- Analyzing Networks 400
- Creating and Updating Networks 403
- Using Network Constraints 405
- The Network Editor 412
- Starting the Editor 412
- Using the Loaded Network 414
- Example Data: The Streets of San Francisco 415
- Summary 416
- Architecture 418
- Installation and Configuration 420
- Data Structures 422
- Example Data: The Streets of San Francisco 424
- Partitioning 425
- Using the Router: XML Queries and Responses 427
- Routing Requests 430
- Routing Options 431
- Pregeocoded Start and End Locations 431
- Geographic Start and End Locations 432
- Batch Routing 432
- Summary 434
- CHAPTER 12 Defining Maps Using MapViewer 437
- Why Use Maps in Location-Enabled Applications? 437
- Overview of MapViewer and Oracle Maps 440
- Oracle MapViewer 440
- Oracle Maps 442
- Getting Started 443
- Load the Sample Data 444
- Location-Enable the Application Data 445
- Load the Geographical Data 445
- Load Maps, Themes, Style, and Map Cache Definitions
- for MapViewer 445
- Define a Data Source 446
- Install Example Applications 446
- Configuring MapViewer 448
- Using the Administration Console 449
- Configuration Parameters 452
- Defining Maps 457
- Using Map Builder 458
- Using Styles 461
- Using Themes 474
- Using Maps 484
- Defining Map Caches 491
- The USER_SDO_CACHED_MAPS View 491
- Managing Caches Using the MapViewer Console 491
- Creating a New Map Cache 493
- Creating Map Caches Using SQL 495
- Cache Data Structures 498
- Exporting Cache Definitions 498
- Purging and Refreshing Cache 498
- Using External Data Sources 499
- Summary 502
- CHAPTER 13 Using Maps in Your Applications 503
- Overview of MapViewer’s APIs 503
- XML, Java, JSPs, and PL/SQL 503
- JavaScript and Ajax: Oracle Maps 505
- Choosing an API 506
- Anatomy of a Map Request 507
- What: The Information That Should Appear on the Map 507
- Where: The Geographical Area to Be Covered by the Map 508
- How: The Format and Size of the Resulting Map 508
- Interacting with Maps 509
- Controlling the Level of Detail: Zoom In and Zoom Out 509
- Controlling the Area Shown on the Map: Pan and Recenter 509
- Selecting Features: Identify 510
- Choosing the Information to Appear on the Map: Layer Control 510
- Oracle Maps: The JavaScript API 510
- Displaying a Map 511
- Interacting with Maps: Zooming and Panning 514
- Adding Map Decorations 515
- Adding Generic Decorations 515
- Creating an Overview Map 516
- Rectangular (Marquee) Zooming 517
- Adding Dynamic Information: Theme-Based FOIs 519
- Adding Individual FOIs 523
- Controlling Styles 524
- Capturing User Input: Tools and Selectors 525
- Responding to Events 528
- Using the Java API 530
- Map Requests 530
- Zooming and Panning 533
- Theme Control 535
- Style Control 540
- Identification and Queries 540
- Dynamic Features 543
- Legends 543
- Map Decorations 545
- Using the Map Cache 546
- Discovering Data Sources, Maps, Themes 547
- Using JSP Tags 547
- Using the XML API 552
- Simple Map Requests 553
- Adding Themes to a Base Map 555
- Using Multiple Data Sources 556
- Constructing a Map from Themes 557
- Dynamic Themes 558
- Dynamic Features 561
- Legends 563
- The XML Map Response 565
- Using the PL/SQL API 566
- Installing the API 566
- A Simple Example 567
- Using the Administrative API 568
- Browsing Map Definitions 568
- Managing the MapViewer Server 570
- Restarting MapViewer 573
- Web Map Service (OGC WMS) Interface 573
- The GetCapabilities Request 573
- The GetMap Request 575
- The GetFeatureInfo Request 576
- Spatial Reference Systems (SRS) Mapping 578
- Summary 578
- Data Preparation and Setup 582
- Loading the Geographical Data 582
- Location-Enabling the Application Data 582
- Loading Map, Theme, Style, and Map Cache Definitions
- for MapViewer 583
- Applications Setup 583
- The JavaScript Application 584
- Application Walk-Through 584
- Under the Hood 589
- The Java (JSP) Application 603
- Application Walk-Through 603
- Under the Hood 610
- Summary 622
- Overview of the Case Studies 623
- Spatial Information for Managing the London Bus Network 624
- BusNet 625
- Spatial Data and Oracle Spatial in BusNet 626
- User Interface for Spatial Data in BusNet 628
- BusNet Conclusions 630
- P-Info: A Mobile Application for Police Forces 631
- P-Info Functionality 632
- P-Info Architecture 633
- Use of Oracle Spatial in P-Info 635
- Measurable Added Value of P-Info 637
- Risk Repository for Hazardous Substances 638
- RRGS Technology 640
- Use of Oracle Spatial in the RRGS 642
- From Hazardous Substances to Risk Management 643
- USGS National Land Cover Visualization and Analysis Tool 644
- The Architecture of USGS Visualization and Analysis Tool 647
- Oracle Spatial in USGS Visualization and Analysis Tool 648
- Benefits of USGS Visualization and Analysis Tool 651
- U.S. Department of Defense MilitaryHOMEFRONT LBS 652
- The Architecture of MilitaryHOMEFRONT LBS 654
- Oracle Spatial in MilitaryHOMEFRONT 657
- Mobile MilitaryINSTALLATIONS 660
- Benefits of MilitaryHOMEFRONT LBS 662
- Summary 662
- CHAPTER 16 Tips, Common Mistakes, and Common Errors 663
- Tips 663
- Data Modeling and Loading 663
- Performance of Spatial Operator Query 666
- Performance of Other Spatial Processing Functions 670
- Performance of Inserts, Deletes, and Updates 672
- Best Practices for Scalability and Manageability of Spatial Indexes 673
- Common Mistakes 678
- Bounds, Longitude and Latitude, and Tolerance for Geodetic Data 678
- NULL Values for SDO_GEOMETRY 678
- Use GEOCODE or GEOCODE_ALL 678
- Specify “INDEXTYPE is mdsys.spatial_index” in CREATE INDEX 678
- Always Use Spatial Operators in the WHERE Clause 679
- Use Spatial Functions When No Spatial Index Is Available 679
- Do Not Move, Import, or Replicate MDRT Tables 680
- Network Metadata 680
- Map Metadata 681
- Common Errors 681
- ORA-13226: Interface Not Supported Without a Spatial Index 681
- ORA-13203: Failed to Read USER_SDO_GEOM_METADATA View 681
- ORA-13365: Layer SRID Does Not Match Geometry SRID 681
- ORA-13223: Duplicate Entry for in
- SDO_GEOM_METADATA 682
- ORA-13249, ORA-02289: Cannot Drop Sequence/Table 682
- ORA-13249: Multiple Entries in sdo_index_metadata Table 682
- ORA-13207: Incorrect Use of the Operator 682
- ORA-13000: Dimension Number Is Out of Range 682
- ORA-00904: Invalid Identifier 683
- ORA-00939: Too Many Arguments for Function 683
- ORA-13030: Invalid Dimensionality for the SDO_GEOMETRY,
- or ORA-13364: Layer Dimensionality Does Not Match Geometry
- Dimensions 684
- Summary 685
- APPENDIX A Additional Spatial Analysis Functions 689
- Tiling-Based Analysis 689
- TILED_BINS 689
- TILED_AGGREGATES 691
- Neighborhood Analysis 694
- AGGREGATES_FOR_GEOMETRY 694
- AGGREGATES_FOR_LAYER 695
- Clustering Analysis 696
- SPATIAL_CLUSTERS 696
- Refining the Candidates for Site Selection 697
- Geometry Simplification for Speeding Up Analysis 698
- Summary 699
- APPENDIX B Linear Referencing 701
- Concepts and Definitions 702
- Measure 702
- Linear Referenced Segments 702
- Direction 702
- Shape Points 702
- Offset 703
- Typical Application 703
- Creating Linear Referenced Geometries 705
- SDO_GTYPE in LRS Geometries 705
- Constructing LRS Geometries 706
- Metadata 707
- Spatial Indexes and Spatial Operators on LRS Geometries 707
- Dynamic Segmentation Operations 707
- Clip a Segment 707
- Locate a Point 708
- Project a Point 709
- Intersecting LRS Segments with Standard Geometries 710
- Validation of LRS Segments 710
- Dynamic Segmentation on 3D Geometries 711
- Other Operations 711
- Summary 712
- Sharing Boundaries 714
- Benefits of the Topology Data Model 715
- Storing a Topology Data Model in Oracle 715
- Operating on a Topology in Oracle 718
- Creating a Topology 718
- Populating a Topology 719
- Associating a Feature Layer with a Topology 719
- Inserting, Updating, and Populating Feature Layers 720
- Updating Topological Elements 721
- Querying for Topological Relationships 723
- Hierarchical Feature Model 723
- Summary 724
- The SDO_GEORASTER Data Type 726
- Storage for SDO_GEORASTER Data 728
- Metadata in SDO_GEORASTER Data 731
- Populating SDO_GEORASTER Columns 731
- Manipulating Raster Objects 732
- Generating Pyramids 733
- Subsetting 734
- Georeferencing 734
- Attaching Bitmap Masks 736
- Registering NODATA Values 737
- Using Compression in GeoRaster 738
- Visualizing Raster Data in Oracle MapViewer 739
- Summary 741
- and TINs in Oracle 743
- Storing Large Point Sets 744
- The SDO_PC Data Type 744
- Populating a Point Cloud 745
- Querying a Point Cloud 748
- Other Manipulation Functions for Point Clouds 749
- Storing Triangulated Irregular Networks 749
- The SDO_TIN Data Type 750
- Populating a TIN 751
- Querying a TIN 754
- Other Manipulation Functions for TINs 755
- Summary 755
BOOK
SUMMARY
Items Found: 528
- Part I: Learn How to Learn 1
- Chapter 1: Understand Relational Databases 3
- History of Relational Databases 3
- Relational Model and Why It Matters 6
- History 6
- Terminology 7
- Simplicity 7
- Sets and Tables 8
- Problems Implementing a Relational Model 8
- Relational Model and Why It Doesn’t Matter 9
- The NULL Problem Isn’t a Problem 9
- Column Order Matters 11
- Denormalization 11
- All Rows Are Distinct 12
- SQL Programming Language 12
- History and Terminology 12
- SQL Alternatives 13
- Is SQL a Programming Language? 16
- vi
- Different Database Types 17
- Alternative Database Models 17
- Different Oracle Databases (OLTP vs. DW) 18
- Key Concepts 19
- NULL 20
- JOIN 22
- Summary 28
- Chapter 2: Create an Efficient Database Development Process 29
- Shared Database vs. Private Database 29
- Create an Infinite Number of Databases 30
- Advantages of Private Databases 31
- How to Implement Private Databases 34
- Rapidly Drop and Recreate Schemas 36
- Why Deploy Often? 36
- How to Deploy Often? 37
- SQL*Plus Installation Scripts 38
- SQL*Plus Patch Scripts 40
- Control and Integrate Schemas with Version-Controlled
- Text Files 42
- Single Source of Truth 42
- Load Objects from the Repository and File System 43
- Create and Save Changes Manually 44
- Empower Everyone 46
- Power Imbalance Between Developers and Administrators 47
- Improve Communication 48
- Transparency 49
- Lower Barriers to Entry 49
- Summary 50
- Chapter 3: Increase Confidence and Knowledge with Testing 51
- Build Confidence with Automated Tests 51
- Fix Bugs Faster 51
- vii
- Gain Confidence, Avoid Biases 52
- Test-Driven Development 53
- Create Useful Test Data 53
- Create Large Test Data 55
- Remove Test Data 56
- How to Build Automated Tests 56
- Build Knowledge with Minimal, Complete, and Verifiable Examples 59
- Why Spend So Much Time Building Reproducible Test Cases? 59
- Minimal 60
- Complete 61
- Verifiable 62
- Sharing Tests 64
- Avoiding the XY Problem 65
- Oracle Performance Testing 65
- Oracle Detective Kit 67
- Data Dictionary Views 67
- Dynamic Performance Views 69
- Relational Tools for Inspecting Databases 72
- Non-relational Tools for Inspecting Databases 74
- Summary 75
- Chapter 4: Find Reliable Sources 77
- Places to Go 78
- The Problems with Forums 78
- The Problems with Static Websites 79
- Read the Manual 79
- The Manual Is Not Perfect 82
- My Oracle Support 83
- People to See 84
- Summary 85
- Chapter 5: Master the Entire Stack 87
- Not Just Faster 87
- Typing 89
- Operating Systems and Supporting Programs 89
- Operating Systems 90
- Text Editors 90
- Comparison Tools 91
- Reporting Tools and Excel 92
- SQL and PL/SQL 93
- SQL*Plus 94
- When We Should Use SQL*Plus 94
- When We Should Not Use SQL*Plus 95
- Integrated Development Environment 96
- Learn an IDE 97
- When Not to Use an IDE Feature 98
- Oracle IDE Comparison 98
- Worksheets, Notebooks, Snippets, Scripts, and Gists 99
- Get Organized 99
- Worksheets 100
- Summary 103
- Part II: Write Powerful SQL with Sets and Advanced Features 105
- Chapter 6: Build Sets with Inline Views and ANSI Join Syntax 107
- Spaghetti Code from Nonstandard Syntax 107
- Hard to Read Old Syntax 108
- Hard to Debug Old Syntax 109
- Accidental Cross Joins in Old Syntax 110
- Nonstandard but Still Useful 111
- Too Much Context 112
- The Importance of Limiting Context 112
- ix
- Avoid Correlated Subqueries 113
- Avoid Common Table Expressions 114
- Sets, Chunking, and Functional Programming to the Rescue 115
- Sets 115
- Chunking 116
- Functional Programming 118
- Inline Views 119
- What Is an Inline View? 119
- Inline Views Make Code Bigger but Simpler 120
- Simple Inline Views for a Large Example 121
- ANSI Joins 122
- Example 123
- Summary 126
- Chapter 7: Query the Database with Advanced SELECT Features 127
- Operators, Functions, Expressions, and Conditions 128
- Semantics 128
- How to Know When We’re Missing Something 128
- Precedence Rules 129
- Simplify 130
- CASE and DECODE 131
- Joins 133
- Partitioned Outer Joins 134
- Lateral, Cross Apply, and Outer Apply 136
- Equijoin or Non-equijoin 136
- Semi-join or Anti-join 136
- Self-joins 138
- Natural Joins and USING Considered Harmful 139
- Sorting 140
- Sorting Syntax 140
- Sorting Performance, Resources, and Implicit Sorting 142
- x
- Set Operators 142
- UNION and UNION ALL 143
- INTERSECT and MINUS 144
- Set Operator Complications 145
- Advanced Grouping 146
- ROLLUP, GROUP*, CUBE 146
- LISTAGG 148
- Advanced Aggregate Functions 149
- Analytic Functions 150
- Analytic Function Syntax 150
- Analytic Function Examples 151
- Regular Expressions 154
- Regular Expression Syntax 154
- Regular Expression Examples 155
- Regular Expression Limitations 158
- Row Limiting 159
- Row Limiting Clause 159
- ROWNUM 160
- Analytic Function Row Limiting 161
- Pivoting and Unpivoting 162
- Old Pivot Syntax 163
- New Pivot Syntax 164
- UNPIVOT 165
- Table References 168
- Flashback 168
- Sample 169
- Partition Extension Clause 169
- Common Table Expressions 170
- Example 170
- PL/SQL Common Table Expressions 172
- xi
- Performance and Over-use 173
- Recursive Queries 174
- CONNECT BY Syntax 174
- Recursive Common Table Expressions 176
- XML 177
- XMLType 177
- DBMS_XMLGEN and Creating XML 179
- XMLTABLE 180
- XML Programming Languages 181
- JSON 182
- Build and Store JSON in the Database 182
- Querying JSON 184
- National Language Support 185
- Character Sets 186
- Length Semantics 187
- NLS Comparing and Sorting 188
- Display Formats 189
- Summary 190
- Chapter 8: Modify Data with Advanced DML 191
- INSERT 192
- UPDATE 193
- DELETE 194
- MERGE 196
- Updatable Views 198
- DML Hints 199
- Error Logging 201
- Returning 203
- TRUNCATE 204
- COMMIT, ROLLBACK, and SAVEPOINT 207
- ALTER SYSTEM 209
- ALTER SESSION 211
- Input and Output 212
- Useful PL/SQL Packages 214
- Summary 217
- Chapter 9: Improve the Database with Advanced Oracle Schema Objects 219
- ALTER 219
- Tables 221
- Table Types 221
- Table Properties 225
- ALTER and DROP Table 229
- Column Types and Properties 229
- Constraints 231
- Constraint Performance Impact 232
- Altering Constraints 232
- Constraint Exceptions 233
- NOVALIDATE and Parallel Constraints 234
- Other Constraints 236
- Indexes 237
- Index Concepts 237
- Index Features 239
- Rebuilding Indexes 242
- Partitioning 243
- Partitioning Concepts 243
- Partitioning Features 246
- Views 248
- Creating Views 248
- Expanding Views 249
- Users 250
- Sequences 252
- Synonyms 254
- Materialized Views 254
- Materialized Views for Multi-table Constraints 255
- Database Links 257
- PL/SQL Objects 259
- Other Schema Objects 260
- Global Objects 260
- GRANT and REVOKE 261
- Summary 263
- Chapter 10: Optimize the Database with Oracle Architecture 265
- Redo 265
- Redo in Theory 266
- Redo in Practice 266
- Undo and Multiversion Read Consistency 268
- Undo for Rollback 268
- Undo for Multiversion Consistency 270
- Storage Structures 272
- Column Values 273
- Row Pieces 274
- Blocks and Row-Level Locking 275
- Extents 277
- Segments 277
- Data Files 278
- Tablespaces 279
- Automatic Storage Management 280
- Wasted Space 281
- Temporary Tablespace 282
- Memory 283
- Caches 285
- Database Types 287
- Summary 289
- xiv
- Part III: Write Elegant SQL with Patterns and Styles 291
- Chapter 11: Stop Coding and Start Writing 293
- The Hypocrisy of Examples 294
- Comments 295
- Comment Styles 295
- Comment Mechanics 296
- Comment ASCII Art 297
- Choose Good Names 298
- Name Styles 298
- Avoid Quoted Identifiers 299
- Name Length and Changes 300
- Whitespace 301
- Make Bugs Obvious 302
- Fail Fast 303
- Avoid Pokémon Exception Handling 303
- Use Bad Names and Weird Values 305
- Use Fragile SQL 306
- The Path to Writing Good SQL 307
- Summary 308
- Chapter 12: Write Large SQL Statements 309
- Imperative Programming Size Limits Do Not Apply 309
- One Large SQL Statement vs. Multiple Small SQL Statements 310
- Performance Risks of Large SQL Statements 312
- Large SQL Parsing Problems 312
- Large SQL Increases Optimizer Risks 313
- Large SQL Resource Consumption Problems 315
- Performance Benefits of Large SQL Statements 316
- Large SQL Improves Clarity 316
- Large SQL Increases Optimizer Opportunities 316
- Large SQL Reduces Input/Output 318
- Large SQL Reduces Context Switches 318
- Large SQL Improves Parallelism 319
- Reading and Debugging Large SQL Statements 321
- Inside Out 321
- Navigating Inline Views 322
- Summary 325
- Chapter 13: Write Beautiful SQL Statements 327
- How to Measure Code Complexity 328
- Avoid Unnecessary Aliases 329
- Prefixes and Suffixes 330
- Object and Variable Names 331
- Referencing Tables and Columns 331
- Avoid Abbreviations 332
- Use Tabs for Left Alignment 333
- Avoid Code Formatters 336
- Lower Case 337
- Summary 338
- Chapter 14: Use SQL More Often with Basic Dynamic SQL 339
- When to Use Dynamic SQL 339
- Running DDL 340
- Unknown Until Run Time 341
- Simplify Privileges 342
- Rule Engines 343
- When Not to Use Dynamic SQL 343
- Basic Features 344
- Bind Variables for Performance and Security 345
- How to Simplify String Concatenation 347
- Multiline Strings 347
- Alternative Quoting Mechanism 348
- Templating 350
- Code Generation, Not Generic Code 351
- Summary 353
- Chapter 15: Avoid Anti-Patterns 355
- Avoid Second System Syndrome and Rewriting from Scratch 355
- Avoid Stringly Typed Entity–Attribute–Value Model 357
- EAV Pros and Cons 357
- Never Use the Wrong Type 358
- Subtle Conversion Bugs in Oracle SQL 359
- Avoid Soft Coding 361
- Avoid Object-Relational Tables 362
- Avoid Java in the Database 364
- Java Is Not Always Available 364
- Java Does Not Fit Perfectly 364
- SQL and PL/SQL Are Almost Always Better Choices 365
- Avoid TO_DATE 365
- Avoid String-to-Date Conversion 366
- Use DATE, TIMESTAMP, and INTERVAL Literals 367
- Avoid CURSOR 368
- Avoid Custom SQL Parsing 370
- Avoid Automating Everything 372
- Avoid Cargo Cult Syntax 373
- Avoid Undocumented Features 373
- Avoid Deprecated Features 374
- Avoid Simplistic Explanations for Generic Errors 374
- Dead Processes 375
- Deadlocks 375
- Top of the Error Stack 376
- Avoid Unnecessarily Small Parameters 377
- Anti-Patterns Discussed in Other Chapters 378
- Summary 378
- Part IV: Improve SQL Performance 379
- Chapter 16: Understand SQL Performance with Algorithm Analysis 381
- Algorithm Analysis Introduction 382
- O(1/N) – Batching to Reduce Overhead 386
- O(1) – Hashing, Other Operations 388
- How Hashing Works 388
- Hash Partitioning 390
- Hash Clusters 391
- Hash Joins 392
- Other 392
- O(LOG(N)) – Index Access 393
- 1 /((1-P)+P/N) – Amdahl’s Law 395
- O(N) – Full Table Scans, Other Operations 397
- O(N*LOG(N)) – Full Table Scan vs. Index, Sorting, Joining,
- Global vs. Local Index, Gathering Statistics 398
- Full Table Scan vs. Index 399
- Sorting 400
- Joining 401
- Global vs. Local Index 404
- Gathering Optimizer Statistics 404
- O(N^2) – Cross Joins, Nested Loops, Other Operations 407
- O(N!) – Join Order 409
- O(?) – The Optimizer 409
- Summary 410
- Chapter 17: Understand SQL Tuning Theories 411
- Managing User Expectations 411
- Performance Tuning State of Mind 412
- Performance Tuning Is Not Debugging 413
- Motivated Troubleshooting 413
- Different Approaches 414
- Why Not Database Tuning? 416
- Declarative Programming (Why Execution Plans Are Important) 416
- Declarative Quirks 416
- Execution Plans 417
- Operations (What Execution Plan Decisions Are Available) 418
- Operation Details 419
- Execution Plans and Recursive SQL 419
- Why Operations Matter 420
- First Operations 421
- Joining 421
- Table Access 423
- Index Access 424
- Grouping and Sorting 425
- Set Operators 425
- Optimizer Statistics 426
- Parallel 426
- Partition 429
- Filter 430
- Other 431
- Cardinality and Optimizer Statistics (Building Execution Plans I) 432
- Cardinality Is Important 433
- Cardinality Differences 435
- Cost Doesn’t Matter 436
- Optimizer Statistics 436
- Optimizer Statistics Example 438
- Transformations and Dynamic Optimizations (Building Execution Plans II) 440
- Transformations 440
- Adaptive Cursor Sharing and Adaptive Statistics 442
- Adaptive Query Plans 444
- Clear, Simple, and Wrong 447
- Summary 448
- Chapter 18: Improve SQL Performance 449
- Application Tuning – Logging and Profiling 449
- Logging 450
- Profiling – DBMS_PROFILER 451
- Profiling – DBMS_HPROF 453
- Application Tuning Through Batching 454
- Installation and Patch Scripts 455
- OLTP Applications 457
- Data Warehouses 458
- Database Tuning 459
- Measure Database Performance 460
- Automatic Workload Repository (AWR) 463
- Active Session History (ASH) 465
- Automatic Database Diagnostic Monitor (ADDM) 466
- Advisors 468
- Other Tools 469
- SQL Tuning – Find Slow SQL 470
- Get Organized 470
- Slow Is Based on DB Time 470
- Find Currently Running Slow SQL 471
- Find Historically Slow SQL 473
- SQL Tuning – Find Execution Plans 473
- Graphical Execution Plans Considered Harmful 473
- Text Is Best 475
- DBMS_XPLAN Functions 477
- DBMS_XPLAN FORMAT Parameter 478
- Note Section 479
- Other Ways to Get Execution Plans 480
- SQL Tuning – Find Actual Times and Cardinalities for Operations 480
- GATHER_PLAN_STATISTICS 481
- Real-Time SQL Monitor Reports (Text) 485
- Real-Time SQL Monitor Reports (Active) 488
- Degree of Parallelism 489
- What to Look for in Execution Plans 491
- SQL Tuning – Changing Execution Plans 493
- Changing Execution Plans 493
- Hints 495
- SQL Profile Example 497
- SQL Tuning – Gathering Optimizer Statistics 499
- Manual Statistics 499
- Automatic Statistics 501
- Other Statistics 501
- Summary 503
- Part V: Solve Anything with Oracle SQL 505
- Chapter 19: Solve Challenging Problems with Arcane SQL Features 507
- Oracle vs. the Unix Philosophy 507
- MODEL 508
- Row Pattern Matching 512
- Any Types 513
- APEX 515
- Oracle Text 517
- Other Features 519
- Advanced Analytics (Data Mining) 519
- Spatial 519
- OLAP 519
- Property Graph 520
- Virtual Private Database 520
- Database In-Memory 521
- Advanced Compression 521
- Summary 521
- Chapter 20: Use SQL More Often with Advanced Dynamic SQL 523
- Parsing 523
- PL/Scope 524
- PLSQL_LEXER 525
- ANTLR 526
- DBMS_SQL 528
- DBMS_XMLGEN 529
- PL/SQL Common Table Expressions 531
- Method4 Dynamic SQL 532
- Polymorphic Table Functions 533
- Method5 534
- Summary 535
- Chapter 21: Level Up Your Skills with PL/SQL 537
- Is PL/SQL Worth Mastering? 537
- The Focus Is Still on SQL 538
- Create a PL/SQL Playground 538
- PL/SQL Integration Features 539
- Tips for Packaging Code 540
- Session Data 540
- Transactions I – COMMIT, ROLLBACK, and SAVEPOINT 543
- Transactions II – Implicit Cursor Attributes 545
- Transactions III – Row-Level Locking 546
- Transactions IV – Isolation and Consistency 547
- Simple Variables 549
- Cursors 551
- Records 554
- Collections 556
- Functions 559
- Table Functions 561
- Pipelined Functions 563
- Parallel Pipelined Functions 564
- Autonomous Transactions for DML and DDL 565
- Autonomous Transactions for Logging 566
- Definer’s Rights vs. Invoker’s Rights 568
- Triggers 569
- Conditional Compilation 574
- Other PL/SQL Features 575
- Start Teaching and Creating 575
- Teach Others 576
- Create Open Source Projects 576
- Part VI: Appendices 579
- Appendix A: SQL Style Guide Cheat Sheet 581
- Appendix B: Computer Science Topics 583
- Index 585
- About the Author
- Jon Heller is an expert SQL and PL/SQL programmer with
- 17 years of Oracle experience. During that time he has
- worked as a database analyst, developer, and administrator.
- In his spare time, he is active on Stack Overflow where
- he is a top user in the Oracle and PL/SQL tags. He enjoys
- creating open source software for Oracle, such as the remote
- execution program Method5. He has a master’s degree in
- computer science from North Carolina State University and
- lives in Iowa with his wife and two sons.
BOOK
SUMMARY
Items Found: 405
- Introduction 1
- About This Book 1
- Who Should Read This Book? 2
- Icons Used in This Book 2
- Where to Go from Here 2
- Part I: Getting Started with SQL 3
- Chapter 1: Relational Database Fundamentals 5
- Keeping Track of Things 6
- What Is a Database? 7
- Database Size and Complexity 7
- What Is a Database Management System? 8
- Flat Files 9
- Database Models 11
- Relational model 11
- Components of a relational database 12
- Dealing with your relations 12
- Enjoy the view 14
- Schemas, domains, and constraints 16
- The object model challenged the relational model 18
- The object-relational model 18
- Database Design Considerations 19
- Chapter 2: SQL Fundamentals 21
- What SQL Is and Isn’t 21
- A (Very) Little History 23
- SQL Statements 24
- Reserved Words 26
- Data Types 26
- Exact numerics 27
- Approximate numerics 29
- Character strings 30
- Binary strings 32
- Booleans 33
- Datetimes 33
- Intervals 35
- XML type 35
- ROW types 38
- Collection types 39
- REF types 41
- vi SQL For Dummies, 8th Edition
- User-defined types 41
- Data type summary 44
- Null Values 46
- Constraints 46
- Using SQL in a Client/Server System 47
- The server 47
- The client 48
- Using SQL on the Internet or an Intranet 49
- Chapter 3: The Components of SQL 51
- Data Definition Language 52
- When “Just do it!” is not good advice 52
- Creating tables 53
- A room with a view 55
- Collecting tables into schemas 61
- Ordering by catalog 61
- Getting familiar with DDL statements 62
- Data Manipulation Language 64
- Value expressions 64
- Predicates 68
- Logical connectives 69
- Set functions 69
- Subqueries 71
- Data Control Language 71
- Transactions 71
- Users and privileges 73
- Referential integrity constraints can jeopardize your data 75
- Delegating responsibility for security 77
- Part II: Using SQL to Build Databases 79
- Chapter 4: Building and Maintaining a Simple Database Structure 81
- Using a RAD Tool to Build a Simple Database 82
- Deciding what to track 82
- Creating a database table 83
- Altering the table structure 90
- Creating an index 92
- Deleting a table 94
- Building POWER with SQL’s DDL 95
- Using SQL with Microsoft Access 95
- Creating a table 97
- Creating an index 101
- Altering the table structure 102
- Deleting a table 102
- Deleting an index 103
- Portability Considerations 103
- Chapter 5: Building a Multitable Relational Database 105
- Designing a Database 105
- Step 1: Defining objects 106
- Step 2: Identifying tables and columns 106
- Step 3: Defining tables 107
- Domains, character sets, collations, and translations 111
- Getting into your database fast with keys 112
- Working with Indexes 114
- What’s an index, anyway? 115
- Why you should want an index 116
- Maintaining an index 117
- Maintaining Data Integrity 118
- Entity integrity 118
- Domain integrity 119
- Referential integrity 120
- Just when you thought it was safe 123
- Potential problem areas 124
- Constraints 126
- Normalizing the Database 129
- Modification anomalies and normal forms 129
- First normal form 132
- Second normal form 132
- Third normal form 134
- Domain-key normal form (DK/NF) 134
- Abnormal form 135
- Part III: Storing and Retrieving Data 137
- Chapter 6: Manipulating Database Data 139
- Retrieving Data 139
- Creating Views 141
- From tables 142
- With a selection condition 143
- With a modified attribute 144
- Updating Views 145
- Adding New Data 146
- Adding data one row at a time 146
- Adding data only to selected columns 148
- Adding a block of rows to a table 148
- Updating Existing Data 151
- Transferring Data 154
- Deleting Obsolete Data 156
- Chapter 7: Handling Temporal Data 157
- Understanding Times and Periods in SQL:2011 158
- Working with Application-Time Period Tables 159
- Designating primary keys in application-time period tables 162
- Applying referential constraints to application-time
- period tables 163
- Querying application-time period tables 164
- Working with System-Versioned Tables 165
- Designating primary keys in system-versioned tables 167
- Applying referential constraints to system-versioned tables 168
- Querying system-versioned tables 168
- Tracking Even More Time Data with Bitemporal Tables 169
- Chapter 8: Specifying Values 171
- Values 171
- Row values 172
- Literal values 172
- Variables 174
- Special variables 176
- Column references 176
- Value Expressions 177
- String value expressions 178
- Numeric value expressions 179
- Datetime value expressions 179
- Interval value expressions 180
- Conditional value expressions 180
- Functions 181
- Summarizing by using set functions 181
- Value functions 184
- Chapter 9: Using Advanced SQL Value Expressions 197
- CASE Conditional Expressions 197
- Using CASE with search conditions 198
- Using CASE with values 200
- A special CASE — NULLIF 202
- Another special CASE — COALESCE 204
- CAST Data-Type Conversions 205
- Using CAST within SQL 206
- Using CAST between SQL and the host language 206
- Row Value Expressions 207
- Chapter 10: Zeroing In on the Data You Want 211
- Modifying Clauses 211
- FROM Clauses 213
- WHERE Clauses 213
- Comparison predicates 215
- BETWEEN 215
- IN and NOT IN 217
- LIKE and NOT LIKE 218
- SIMILAR 220
- NULL 220
- ALL, SOME, ANY 221
- EXISTS 224
- UNIQUE 225
- DISTINCT 225
- OVERLAPS 226
- MATCH 226
- Referential integrity rules and the MATCH predicate 228
- Logical Connectives 230
- AND 230
- OR 231
- NOT 232
- GROUP BY Clauses 232
- HAVING Clauses 234
- ORDER BY Clauses 235
- Limited FETCH 236
- Peering through a Window to Create a Result Set 238
- Partitioning a window into buckets with NTILE 239
- Navigating within a window 239
- Nesting window functions 241
- Evaluating groups of rows 242
- Chapter 11: Using Relational Operators 243
- UNION 243
- The UNION ALL operation 245
- The CORRESPONDING operation 245
- INTERSECT 246
- EXCEPT 248
- Join Operators 249
- Basic join 249
- Equi-join 251
- Cross join 253
- Natural join 253
- Condition join 254
- Column-name join 254
- Inner join 255
- Outer join 256
- Union join 259
- ON versus WHERE 266
- x SQL For Dummies, 8th Edition
- Chapter 12: Delving Deep with Nested Queries 267
- What Subqueries Do 268
- Nested queries that return sets of rows 269
- Nested queries that return a single value 272
- The ALL, SOME, and ANY quantifiers 275
- Nested queries that are an existence test 277
- Other correlated subqueries 278
- UPDATE, DELETE, and INSERT 282
- Retrieving changes with pipelined DML 284
- Chapter 13: Recursive Queries 285
- What Is Recursion? 285
- Houston, we have a problem 287
- Failure is not an option 287
- What Is a Recursive Query? 288
- Where Might You Use a Recursive Query? 289
- Querying the hard way 290
- Saving time with a recursive query 291
- Where Else Might You Use a Recursive Query? 293
- Part IV: Controlling Operations 295
- Chapter 14: Providing Database Security 297
- The SQL Data Control Language 298
- User Access Levels 298
- The database administrator 298
- Database object owners 299
- The public 300
- Granting Privileges to Users 300
- Roles 301
- Inserting data 302
- Looking at data 302
- Modifying table data 303
- Deleting obsolete rows from a table 304
- Referencing related tables 304
- Using domains 305
- Causing SQL statements to be executed 306
- Granting Privileges across Levels 307
- Granting the Power to Grant Privileges 309
- Taking Privileges Away 310
- Using GRANT and REVOKE Together to Save Time and Effort 311
- Chapter 15: Protecting Data 313
- Threats to Data Integrity 313
- Platform instability 314
- Equipment failure 314
- Concurrent access 315
- Reducing Vulnerability to Data Corruption 317
- Using SQL transactions 318
- The default transaction 319
- Isolation levels 320
- The implicit transaction-starting statement 322
- SET TRANSACTION 323
- COMMIT 324
- ROLLBACK 324
- Locking database objects 324
- Backing up your data 325
- Savepoints and subtransactions 325
- Constraints Within Transactions 327
- Chapter 16: Using SQL within Applications 333
- SQL in an Application 333
- Keeping an eye out for the asterisk 334
- SQL strengths and weaknesses 334
- Procedural languages’ strengths and weaknesses 335
- Problems in combining SQL with a procedural language 335
- Hooking SQL into Procedural Languages 336
- Embedded SQL 336
- Module language 339
- Object-oriented RAD tools 342
- Using SQL with Microsoft Access 343
- Part V: Taking SQL to the Real World 347
- Chapter 17: Accessing Data with ODBC and JDBC 349
- ODBC 350
- The ODBC interface 350
- Components of ODBC 351
- ODBC in a Client/Server Environment 352
- ODBC and the Internet 352
- Server extensions 353
- Client extensions 354
- ODBC and an Intranet 355
- JDBC 355
- Chapter 18: Operating on XML Data with SQL 359
- How XML Relates to SQL 359
- The XML Data Type 360
- When to use the XML type 361
- When not to use the XML type 362
- Mapping SQL to XML and XML to SQL 362
- Mapping character sets 362
- Mapping identifiers 363
- Mapping data types 364
- Mapping tables 364
- Handling null values 365
- Generating the XML Schema 366
- SQL Functions That Operate on XML Data 367
- XMLDOCUMENT 367
- XMLELEMENT 367
- XMLFOREST 368
- XMLCONCAT 368
- XMLAGG 369
- XMLCOMMENT 369
- XMLPARSE 370
- XMLPI 370
- XMLQUERY 370
- XMLCAST 371
- Predicates 371
- DOCUMENT 371
- CONTENT 372
- XMLEXISTS 372
- VALID 372
- Transforming XML Data into SQL Tables 373
- Mapping Non-Predefined Data Types to XML 375
- Domain 375
- Distinct UDT 376
- Row 377
- Array 378
- Multiset 379
- The Marriage of SQL and XML 379
- Part VI: Advanced Topics 381
- Chapter 19: Stepping through a Dataset with Cursors 383
- Declaring a Cursor 384
- Query expression 385
- ORDER BY clause 385
- Updatability clause 387
- Sensitivity 387
- Scrollability 388
- Opening a Cursor 388
- Fetching Data from a Single Row 390
- Syntax 390
- Orientation of a scrollable cursor 391
- Positioned DELETE and UPDATE statements 391
- Closing a Cursor 392
- Chapter 20: Adding Procedural Capabilities with Persistent
- Stored Modules 393
- Compound Statements 393
- Atomicity 394
- Variables 395
- Cursors 396
- Conditions 396
- Handling conditions 397
- Conditions that aren’t handled 400
- Assignment 400
- Flow of Control Statements 400
- IF…THEN…ELSE…END IF 401
- CASE…END CASE 401
- LOOP…ENDLOOP 402
- LEAVE 403
- WHILE…DO…END WHILE 404
- REPEAT…UNTIL…END REPEAT 404
- FOR…DO…END FOR 405
- ITERATE 405
- Stored Procedures 406
- Stored Functions 407
- Privileges 408
- Stored Modules 409
- Chapter 21: Handling Errors 411
- SQLSTATE 411
- WHENEVER Clause 413
- Diagnostics Areas 414
- Diagnostics header area 414
- Diagnostics detail area 416
- Constraint violation example 418
- Adding constraints to an existing table 419
- Interpreting the information returned by SQLSTATE 419
- Handling Exceptions 420
- xiv SQL For Dummies, 8th Edition
- Chapter 22: Triggers 423
- Examining Some Applications of Triggers 423
- Creating a Trigger 424
- Statement and row triggers 425
- When a trigger fires 425
- The triggered SQL statement 425
- An example trigger definition 426
- Firing a Succession of Triggers 426
- Referencing Old Values and New Values 427
- Firing Multiple Triggers on a Single Table 428
- Part VII: The Part of Tens 429
- Chapter 23: Ten Common Mistakes 431
- Assuming That Your Clients Know What They Need 431
- Ignoring Project Scope 432
- Considering Only Technical Factors 432
- Not Asking for Client Feedback 432
- Always Using Your Favorite Development Environment 433
- Using Your Favorite System Architecture Exclusively 433
- Designing Database Tables in Isolation 433
- Neglecting Design Reviews 434
- Skipping Beta Testing 434
- Not Documenting Your Process 434
- Chapter 24: Ten Retrieval Tips 435
- Verify the Database Structure 435
- Try Queries on a Test Database 436
- Double-Check Queries That Include Joins 436
- Triple-Check Queries with Subselects 436
- Summarize Data with GROUP BY 436
- Watch GROUP BY Clause Restrictions 437
- Use Parentheses with AND, OR, and NOT 437
- Control Retrieval Privileges 437
- Back Up Your Databases Regularly 438
- Handle Error Conditions Gracefully 438
- Appendix: SQL: 2011 Reserved Words 439
- Index 443
- Introduction
BOOK
SUMMARY
Items Found: 428
- INTRODUCTION. 1
- About This Book. 1
- Foolish Assumptions. 2
- Icons Used in This Book. 2
- Beyond the Book. 3
- Where to Go from Here. 3
- PART 1: GETTING STARTED WITH SQL. 5
- CHAPTER 1: Relational Database Fundamentals. 7
- Keeping Track of Things. 8
- What Is a Database?. 9
- Database Size and Complexity 10
- What Is a Database Management System?. 10
- Flat Files 12
- Database Models. 13
- Relational model. 13
- Components of a relational database 14
- Dealing with your relations 14
- Enjoy the view 16
- Schemas, domains, and constraints. 18
- The object model challenged the relational model. 19
- The object-relational model. 20
- Database Design Considerations 20
- CHAPTER 2: SQL Fundamentals. 23
- What SQL Is and Isn’t 23
- A (Very) Little History. 25
- SQL Statements. 26
- Reserved Words. 28
- Data Types. 28
- Exact numerics. 29
- Approximate numerics. 31
- Character strings. 33
- Binary strings. 35
- Booleans. 36
- Datetimes. 36
- Intervals 38
- XML type. 38
- ROW types 41
- Collection types. 42
- vi SQL For Dummies
- REF types. 44
- User-defined types 44
- Data type summary. 48
- Null Values. 49
- Constraints. 50
- Using SQL in a Client/Server System 50
- The server. 51
- The client. 52
- Using SQL on the Internet or an Intranet 52
- CHAPTER 3: The Components of SQL. 55
- Data Definition Language. 56
- When “Just do it!” is not good advice 56
- Creating tables. 57
- A room with a view. 59
- Collecting tables into schemas 64
- Ordering by catalog. 65
- Getting familiar with DDL statements 66
- Data Manipulation Language. 68
- Value expressions. 68
- Predicates. 72
- Logical connectives. 73
- Set functions. 73
- Subqueries. 76
- Data Control Language. 76
- Transactions. 76
- Users and privileges. 77
- Referential integrity constraints can jeopardize your data. 80
- Delegating responsibility for security. 82
- PART 2: USING SQL TO BUILD DATABASES. 83
- CHAPTER 4: Building and Maintaining a Simple
- Database Structure. 85
- Using a RAD Tool to Build a Simple Database. 86
- Deciding what to track 86
- Creating a database table 87
- Altering the table structure. 93
- Creating an index. 95
- Deleting a table. 97
- Building POWER with SQL’s DDL. 98
- Using SQL with Microsoft Access 99
- Creating a table. 101
- Creating an index. 105
- Altering the table structure. 105
- Deleting a table. 106
- Deleting an index. 106
- Portability Considerations. 107
- CHAPTER 5: Building a Multi-table Relational Database. 109
- Designing a Database. 110
- Step 1: Defining objects 110
- Step 2: Identifying tables and columns 110
- Step 3: Defining tables 111
- Domains, character sets, collations, and translations. 115
- Getting into your database fast with keys. 116
- Working with Indexes. 119
- What’s an index, anyway?. 119
- Why you should want an index. 121
- Maintaining an index 121
- Maintaining Data Integrity. 122
- Entity integrity 122
- Domain integrity. 124
- Referential integrity. 124
- Just when you thought it was safe 127
- Potential problem areas. 128
- Constraints. 130
- Normalizing the Database. 134
- Modification anomalies and normal forms. 134
- First normal form. 136
- Second normal form. 137
- Third normal form. 138
- Domain-key normal form (DK/NF) 139
- Abnormal form 140
- PART 3: STORING AND RETRIEVING DATA 141
- CHAPTER 6: Manipulating Database Data. 143
- Retrieving Data 144
- Creating Views. 145
- From tables. 146
- With a selection condition. 147
- With a modified attribute. 148
- Updating Views 149
- Adding New Data. 150
- Adding data one row at a time 151
- Adding data only to selected columns. 152
- Adding a block of rows to a table. 152
- Updating Existing Data. 155
- Transferring Data 158
- Deleting Obsolete Data. 161
- CHAPTER 7: Handling Temporal Data. 163
- Understanding Times and Periods. 164
- Working with Application-Time Period Tables 165
- Designating primary keys in application-time period tables. 168
- Applying referential integrity constraints to
- application-time period tables. 169
- Querying application-time period tables. 170
- Working with System-Versioned Tables. 171
- Designating primary keys in system-versioned tables. 173
- system-versioned tables. 174
- Querying system-versioned tables. 174
- Tracking Even More Time Data with Bitemporal Tables. 175
- Formatting and Parsing Dates and Times. 176
- CHAPTER 8: Specifying Values. 179
- Values. 179
- Row values. 180
- Literal values 180
- Variables. 182
- Special variables 184
- Column references. 185
- Value Expressions. 186
- String value expressions. 186
- Numeric value expressions. 187
- Datetime value expressions. 187
- Interval value expressions. 188
- Conditional value expressions. 189
- Functions 189
- Set functions. 189
- Value functions 193
- Table functions 208
- CHAPTER 9: Using Advanced SQL Value Expressions. 209
- CASE Conditional Expressions. 210
- Using CASE with search conditions. 211
- Using CASE with values. 212
- A special CASE — NULLIF. 215
- Another special CASE — COALESCE. 216
- CAST Data-Type Conversions. 217
- Using CAST within SQL. 219
- Using CAST between SQL and the host language. 220
- Row Value Expressions. 221
- CHAPTER 10: Zeroing In on the Data You Want. 223
- Modifying Clauses. 224
- FROM Clauses 225
- WHERE Clauses 226
- Comparison predicates 227
- BETWEEN 228
- IN and NOT IN 229
- LIKE and NOT LIKE. 231
- SIMILAR. 232
- NULL. 232
- ALL, SOME, ANY. 234
- EXISTS. 236
- UNIQUE. 237
- DISTINCT. 238
- OVERLAPS. 238
- MATCH 239
- Referential integrity rules and the MATCH predicate 240
- Logical Connectives. 243
- AND. 243
- OR 244
- NOT. 244
- GROUP BY Clauses 245
- HAVING Clauses. 247
- ORDER BY Clauses. 248
- Limited FETCH. 250
- Peering through a Window to Create a Result Set. 251
- Partitioning a window into buckets with NTILE. 252
- Navigating within a window. 253
- Nesting window functions. 255
- Evaluating groups of rows. 256
- Row pattern recognition. 257
- CHAPTER 11: Using Relational Operators. 259
- UNION. 259
- The UNION ALL operation. 261
- The CORRESPONDING operation. 262
- INTERSECT 262
- EXCEPT 264
- x SQL For Dummies
- Join Operators. 265
- Basic join. 265
- Equi-join 267
- Cross join 269
- Natural join. 270
- Condition join. 270
- Column-name join. 271
- Inner join. 272
- Outer join. 272
- Union join. 276
- ON versus WHERE. 282
- CHAPTER 12: Delving Deep with Nested Queries. 283
- What Subqueries Do. 285
- Nested queries that return sets of rows 285
- Nested queries that return a single value. 289
- The ALL, SOME, and ANY quantifiers. 292
- Nested queries that are an existence test. 293
- Other correlated subqueries. 295
- UPDATE, DELETE, and INSERT. 299
- Retrieving changes with pipelined DML. 301
- CHAPTER 13: Recursive Queries. 303
- What Is Recursion? 303
- Houston, we have a problem. 305
- Failure is not an option. 305
- What Is a Recursive Query?. 306
- Where Might You Use a Recursive Query?. 306
- Querying the hard way. 308
- Saving time with a recursive query. 309
- Where Else Might You Use a Recursive Query?. 311
- PART 4: CONTROLLING OPERATIONS. 313
- CHAPTER 14: Providing Database Security 315
- The SQL Data Control Language. 316
- User Access Levels. 316
- The database administrator. 317
- Database object owners. 317
- The public. 318
- Granting Privileges to Users. 318
- Roles 320
- Inserting data. 320
- Looking at data 321
- Modifying table data. 321
- Deleting obsolete rows from a table 322
- Referencing related tables. 322
- Using domains. 323
- Causing SQL statements to be executed. 325
- Granting Privileges across Levels. 325
- Granting the Power to Grant Privileges. 327
- Taking Privileges Away. 328
- Using GRANT and REVOKE Together to Save Time and Effort 329
- CHAPTER 15: Protecting Data. 331
- Threats to Data Integrity 332
- Platform instability 332
- Equipment failure. 332
- Concurrent access. 333
- Reducing Vulnerability to Data Corruption. 336
- Using SQL transactions. 336
- The default transaction. 338
- Isolation levels. 338
- The implicit transaction-starting statement 341
- SET TRANSACTION. 341
- COMMIT 342
- ROLLBACK. 342
- Locking database objects. 343
- Backing up your data 343
- Savepoints and subtransactions. 344
- Constraints Within Transactions. 345
- Avoiding SQL Injection Attacks 350
- CHAPTER 16: Using SQL within Applications. 351
- SQL in an Application. 352
- Keeping an eye out for the asterisk 352
- SQL strengths and weaknesses. 353
- Procedural languages’ strengths and weaknesses. 353
- Problems in combining SQL with a procedural language. 353
- Hooking SQL into Procedural Languages 354
- Embedded SQL 355
- Module language. 358
- Object-oriented RAD tools. 360
- Using SQL with Microsoft Access 361
- PART 5: TAKING SQL TO THE REAL WORLD. 365
- CHAPTER 17: Accessing Data with ODBC and JDBC. 367
- ODBC. 368
- The ODBC interface. 368
- Components of ODBC. 369
- ODBC in a Client/Server Environment. 370
- ODBC and the Internet. 370
- Server extensions 371
- Client extensions. 372
- ODBC and an Intranet. 373
- JDBC. 373
- CHAPTER 18: Operating on XML Data with SQL. 377
- How XML Relates to SQL 377
- The XML Data Type. 378
- When to use the XML type. 379
- When not to use the XML type 380
- Mapping SQL to XML and XML to SQL. 380
- Mapping character sets 381
- Mapping identifiers. 381
- Mapping data types. 382
- Mapping tables 382
- Handling null values. 383
- Generating the XML Schema. 384
- SQL Functions That Operate on XML Data 385
- XMLDOCUMENT. 385
- XMLELEMENT. 385
- XMLFOREST 386
- XMLCONCAT. 386
- XMLAGG 387
- XMLCOMMENT. 388
- XMLPARSE. 388
- XMLPI. 388
- XMLQUERY. 389
- XMLCAST. 389
- Predicates. 390
- DOCUMENT. 390
- CONTENT 390
- XMLEXISTS 390
- VALID. 391
- Transforming XML Data into SQL Tables. 392
- Mapping Non-Predefined Data Types to XML. 393
- Domain. 393
- Distinct UDT. 394
- Row. 395
- Array 396
- Multiset. 397
- The Marriage of SQL and XML. 398
- CHAPTER 19: SQL and JSON. 399
- Using JSON with SQL. 400
- Ingesting and storing JSON data into a relational database. 400
- Generating JSON data from relational data. 400
- Querying JSON data stored in relational tables 400
- The SQL/JSON Data Model. 401
- SQL/JSON items. 401
- SQL/JSON sequences 402
- Parsing JSON. 402
- Serializing JSON. 402
- SQL/JSON Functions. 403
- JSON API common syntax. 403
- Query functions. 404
- Constructor functions. 408
- IS JSON predicate. 411
- JSON nulls and SQL nulls 411
- SQL/JSON Path Language. 411
- There’s More 412
- PART 6: ADVANCED TOPICS. 413
- CHAPTER 20: Stepping through a Dataset with Cursors. 415
- Declaring a Cursor. 416
- Query expression 417
- ORDER BY clause. 417
- Updatability clause. 419
- Sensitivity. 419
- Scrollability. 420
- Opening a Cursor 421
- Fetching Data from a Single Row 422
- Syntax. 423
- Orientation of a scrollable cursor. 424
- Positioned DELETE and UPDATE statements. 424
- Closing a Cursor. 425
- xiv SQL For Dummies
- CHAPTER 21: Adding Procedural Capabilities with
- Persistent Stored Modules. 427
- Compound Statements 428
- Atomicity. 429
- Variables. 430
- Cursors. 430
- Conditions. 431
- Handling conditions 431
- Conditions that aren’t handled. 434
- Assignment. 434
- Flow of Control Statements. 435
- IF. THEN. ELSE. END IF. 435
- CASE. END CASE. 435
- LOOP. ENDLOOP 437
- LEAVE. 437
- WHILE. DO. END WHILE 438
- REPEAT. UNTIL. END REPEAT. 438
- FOR. DO. END FOR. 439
- ITERATE. 439
- Stored Procedures. 440
- Stored Functions. 442
- Privileges. 442
- Stored Modules. 443
- CHAPTER 22: Handling Errors. 445
- SQLSTATE. 445
- WHENEVER Clause. 447
- Diagnostics Areas 448
- Diagnostics header area. 449
- Diagnostics detail area. 450
- Constraint violation example. 452
- Adding constraints to an existing table. 453
- Interpreting the information returned by SQLSTATE. 454
- Handling Exceptions. 455
- CHAPTER 23: Triggers. 457
- Examining Some Applications of Triggers. 457
- Creating a Trigger 458
- Statement and row triggers. 459
- When a trigger fires. 459
- The triggered SQL statement. 459
- An example trigger definition 460
- Firing a Succession of Triggers 460
- Referencing Old Values and New Values. 461
- Firing Multiple Triggers on a Single Table 462
- PART 7: THE PARTS OF TENS. 463
- CHAPTER 24: Ten Common Mistakes. 465
- Assuming That Your Clients Know What They Need 465
- Ignoring Project Scope. 466
- Considering Only Technical Factors. 466
- Not Asking for Client Feedback. 466
- Always Using Your Favorite Development Environment. 467
- Using Your Favorite System Architecture Exclusively. 467
- Designing Database Tables in Isolation. 467
- Neglecting Design Reviews 468
- Skipping Beta Testing. 468
- Not Documenting Your Process 468
- CHAPTER 25: Ten Retrieval Tips. 469
- Verify the Database Structure. 470
- Try Queries on a Test Database 470
- Double-Check Queries That Include Joins. 470
- Triple-Check Queries with Subselects 470
- Summarize Data with GROUP BY. 471
- Watch GROUP BY Clause Restrictions 471
- Use Parentheses with AND, OR, and NOT. 471
- Control Retrieval Privileges 472
- Back Up Your Databases Regularly. 472
- Handle Error Conditions Gracefully. 472
- APPENDIX: ISO/IEC SQL: 2016 RESERVED WORDS 473
- INDEX 479
BOOK
SUMMARY
Items Found: 201
- Part I: An SQL Concepts Overview
- HOUR 1 Welcome to the World of SQL
- Part II: Building Your Database
- HOUR 2 Defining Data Structures
- 3 Managing Database Objects
- 4 The Normalization Process
- 5 Manipulating Data
- 6 Managing Database Transactions
- Part III: Getting Effective Results from Queries
- HOUR 7 Introduction to Database Queries
- 8 Using Operators to Categorize Data
- 9 Summarizing Data Results from a Query
- 10 Sorting and Grouping Data
- 11 Restructuring the Appearance of Data
- 12 Understanding Dates and Times
- Part IV: Building Sophisticated Database Queries
- HOUR 13 Joining Tables in Queries
- 14 Using Subqueries to Define Unknown Data
- 15 Combining Multiple Queries into One
- Part V: SQL Performance Tuning
- HOUR 16 Using Indexes to Improve Performance
- 17 Improving Database Performance
- Part VI: Using SQL to Manage Users and Security
- HOUR 18 Managing Database Users
- 19 Managing Database Security
- Part VII: Summarized Data Structures
- HOUR 20 Creating and Using Views and Synonyms
- 21 Working with the System Catalog
- HOUR 22 Advanced SQL Topics
- 23 Extending SQL to the Enterprise, the Internet, and the Intranet
- 24 Extensions to Standard SQL
- Part IX: Appendixes
- APPENDIX A Common SQL Commands
- B Installing Oracle and Microsoft SQL
- C Answers to Quizzes and Exercises
- D Bonus Exercises
- E Glossary
- Index
- HOUR 1: Welcome to the World of SQL
- SQL Definition and History
- SQL Sessions
- Types of SQL Commands
- Canary Airlines: The Database Used in This Book
- Summary
- Q&A
- Workshop
- HOUR 2: Defining Data Structures
- What Is Data?
- Basic Data Types
- HOUR 3: Managing Database Objects
- Database Objects and Schema
- Tables: The Primary Storage for Data
- Integrity Constraints
- HOUR 4: The Normalization Process
- Normalizing a Database
- Denormalizing a Database
- HOUR 5: Manipulating Data
- Overview of Data Manipulation
- Populating Tables with New Data
- Updating Existing Data
- Deleting Data from Tables
- HOUR 6: Managing Database Transactions
- What Is a Transaction?
- Controlling Transactions
- Poor Transactional Control
- HOUR 7: Introduction to Database Queries
- The SELECT Statement
- Case-Sensitivity
- Fundamentals of Query Writing
- HOUR 8: Using Operators to Categorize Data
- What Is an Operator in SQL?
- Comparison Operators
- Logical Operators
- Conjunctive Operators
- Negative Operators
- Arithmetic Operators
- HOUR 9: Summarizing Data Results from a Query
- Aggregate Functions
- HOUR 10: Sorting and Grouping Data
- Why Group Data?
- The GROUP BY Clause
- GROUP BY Versus ORDER BY
- CUBE and ROLLUP Expressions
- The HAVING Clause
- HOUR 11: Restructuring the Appearance of Data
- ANSI Character Functions
- Common Character Functions
- Miscellaneous Character Functions
- Mathematical Functions
- Conversion Functions
- Combining Character Functions
- HOUR 12: Understanding Dates and Times
- How Is a Date Stored?
- Date Functions
- Date Conversions
- HOUR 13: Joining Tables in Queries
- Selecting Data from Multiple Tables
- Understanding Joins
- Join Considerations
- HOUR 14: Using Subqueries to Define Unknown Data
- What Is a Subquery?
- Embedded Subqueries
- Correlated Subqueries
- Subquery Performance
- HOUR 15: Combining Multiple Queries into One
- Single Queries Versus Compound Queries
- Compound Query Operators
- Using ORDER BY with a Compound Query
- Using GROUP BY with a Compound Query
- Retrieving Accurate Data
- HOUR 16: Using Indexes to Improve Performance
- What Is an Index?
- How Do Indexes Work?
- The CREATE INDEX Command
- Types of Indexes
- When Should Indexes Be Considered?
- When Should Indexes Be Avoided?
- Altering an Index
- Dropping an Index
- HOUR 17: Improving Database Performance
- What Is SQL Statement Tuning?
- Database Tuning Versus SQL Statement Tuning
- Formatting Your SQL Statement
- Full Table Scans
- Other Performance Considerations
- Cost-Based Optimization
- HOUR 18: Managing Database Users
- User Management in the Database
- The Management Process
- Tools Utilized by Database Users
- HOUR 19: Managing Database Security
- What Is Database Security?
- What Are Privileges?
- Controlling User Access
- Controlling Privileges Through Roles
- HOUR 20: Creating and Using Views and Synonyms
- What Is a View?
- Creating Views
- Updating Data Through a View
- Dropping a View
- Performance Impact of Nested Views
- What Is a Synonym?
- HOUR 21: Working with the System Catalog
- What Is the System Catalog?
- How Is the System Catalog Created?
- What Is Contained in the System Catalog?
- System Catalog Tables by Implementation
- Querying the System Catalog
- Updating System Catalog Objects
- HOUR 22: Advanced SQL Topics
- Cursors
- Stored Procedures and Functions
- Triggers
- Dynamic SQL
- Call-Level Interface
- Using SQL to Generate SQL
- Direct Versus Embedded SQL
- Windowed Table Functions
- Working with XML
- HOUR 23: Extending SQL to the Enterprise, the Internet, and the Intranet
- SQL and the Enterprise
- Accessing a Remote Database
- SQL and the Internet
- SQL and the Intranet
- HOUR 24: Extensions to Standard SQL
- Various Implementations
- Example Extensions
- Interactive SQL Statements
- APPENDIX A: Common SQL Commands
- SQL Statements
- SQL Clauses
- APPENDIX B: Installing Oracle and Microsoft SQL
- Windows Installation Instructions for Oracle
- Windows Installation Instructions for Microsoft SQL Server
- APPENDIX C: Answers to Quizzes and Exercises
- Hour 1, “Welcome to the World of SQL”
- Hour 2, “Defining Data Structures”
- Hour 3, “Managing Database Objects”
- Hour 4, “The Normalization Process”
- Hour 5, “Manipulating Data”
- Hour 6, “Managing Database Transactions”
- Hour 7, “Introduction to the Database Queries”
- Hour 8, “Using Operators to Categorize Data”
- Hour 9, “Summarizing Data Results from a Query”
- Hour 10, “Sorting and Grouping Data”
- Hour 11, “Restructuring the Appearance of Data”
- Hour 12, “Understanding Dates and Times”
- Hour 13, “Joining Tables in Queries”
- Hour 14, “Using Subqueries to Define Unknown Data”
- Hour 15, “Combining Multiple Queries into One”
- Hour 16, “Using Indexes to Improve Performance”
- Hour 17, “Improving Database Performance”
- Hour 18, “Managing Database Users”
- Hour 19, “Managing Database Security”
- Hour 20, “Creating and Using Views and Synonyms”
- Hour 21, “Working with the System Catalog”
- Hour 22, “Advanced SQL Topics”
- Hour 23, “Extending SQL to the Enterprise, the Internet, and the Intranet”
- Hour 24, “Extensions to Standard SQL”
- APPENDIX D: Bonus Exercises
- APPENDIX E: Glossary
BOOK
SUMMARY
Items Found: 164
- Chapter 1 Agile PLM 1
- What Is PLM? 2
- Phases of Product Life Cycle 6
- Phase 1: Conceive—Imagine, Specify, Plan, Innovate 7
- Phase 2: Design—Describe, Define, Develop, Test,
- Analyze, and Validate 7
- Phase 3: Realize—Manufacture, Make, Build,
- Procure, Produce, Sell, and Deliver 8
- Phase 4: Service—Use, Operate, Maintain, Support,
- Sustain, Phase Out, Retire, Recycle, and Dispose 9
- Cross Phases 9
- User Skills 10
- Concurrent Engineering 11
- Bottom-Up Design 11
- Top-Down Design 12
- Both-Ends-against-the-Middle Design 13
- Front Loading 13
- Design in Context 14
- Product and Process Life-Cycle Management 14
- PLM Related to Innovation Management 15
- Generating Innovation 17
- Computerized Brainstorming 20
- Sustainable Innovation 24
- The S-Curve and Innovation Management 26
- P-Cycle 27
- What Makes a Business Guru? 29
- Innovation Management at Microsoft 30
- Six Steps for Increasing Creativity and Productivity 34
- Rewarding Employees for Innovative Ideas 38
- Summary 40
- References 41
- Chapter 2 Oracle Analytics: Business Intelligence and
- Analytic Applications 43
- Business Intelligence 45
- Using Information Technology to Gather
- Intelligence 47
- Value of Executive Information Systems 50
- The Science of Gathering Business Intelligence 53
- Checklist for the Information Audit 55
- Selecting What Needs to Be Known 56
- Collecting the Information 56
- Transforming the Collected Information into
- Finished Products 57
- Distributing of the Finished Product to
- Appropriate Staff 58
- Lincoln National Corporation 59
- Competitor Analysis 61
- Automatic Discovery Programs—a.k.a. Data Mining 66
- Data Mining 68
- Data Visualization 70
- Big Data 71
- Summary 74
- References 75
- Chapter 3 Oracle Enterprise Performance Management 77
- Performance Management Fundamentals 92
- Balanced Scorecard 96
- Developing Benchmarks 98
- Plan 100
- Collect 100
- Analyze 101
- Adapt 101
- Analytic Hierarchy Process 104
- Summary 108
- References 111
- Chapter 4 Social Business 113
- Oracle’s Offerings 114
- Why Social Networking 116
- Social Network 120
- Software Engineering Social Network 122
- Collaborative Applications 123
- Social Networking Tools at Work 127
- Tools That Provide Networking Capabilities 127
- Wikis in Action 131
- Semantic Web 133
- Virtual Worlds 135
- Knowledge Management Tools 135
- Summary 139
- References 141
- Chapter 5 Oracle Cloud 143
- Managing the Cloud 151
- Selecting a Cloud Service 152
- CSP and End-User Agreements 154
- Terms of Service Agreements 154
- Nondisclosure Agreements 155
- Service-Level Agreements 155
- Terms and Definitions 155
- Measuring SLA Performance 156
- SLA Enforcement Mechanisms 156
- CSP, Organization, and Integrator Roles and
- Responsibilities 157
- Contracting with Integrators 157
- Clearly Defined Roles and Responsibilities 157
- Standards 158
- Security 158
- Continuous Monitoring 159
- Incident Response 159
- Key Escrow 160
- Forensics 160
- Audit Logs 161
- Privacy Impact Assessments (PIA) 161
- Data Location 162
- Breach Response 163
- Summary 163
- Reference 164
- Chapter 6 Data Management 165
- Oracle and Data Management 174
- Data 178
- Databases 179
- Data Warehouse: Data Marts 179
- Operational Data Store 180
- Data Access 181
- Replication 182
- Resource Management 182
- The Data Warehouse 182
- Source Systems 183
- Data Staging Area 183
- Data Warehouse Database 183
- Data Marts 184
- Extract Transform Load 184
- Business Intelligence (BI) 184
- Metadata and the Metadata Repository 185
- Data Storage Structures 185
- Extraction, Transformation, and Load 187
- Good Data Management Practices 188
- Data Management Roles 188
- Data Sponsor 188
- Data Steward 190
- Data Administration 191
- Database Administration 194
- System Administration and System Support 195
- Data Management Responsibilities 196
- Guidelines 199
- Summary 208
- Chapter 7 Application Development 209
- Principles of Software Engineering 214
- Software Developer 215
- SDLC: Systems Development Life Cycle 217
- Feasibility Study: The First Step 219
- Information-Gathering Channels 219
- Diagramming or Modeling the System 221
- Developmental Methodologies 226
- System Design 229
- Object-Oriented Methodologies 231
- Testing 233
- Installation 236
- Documentation 236
- Maintenance 237
- Training 238
- Summary 238
- Chapter 8 Fusion 239
- Middleware 240
- Applications 247
- Procurement 252
- Making the Outsourcing Decision 252
- Phase 1: Analysis and Evaluation 252
- Phase 2: Needs Assessment and Vendor Selection 254
- Phase 3: Implementation and Management 257
- Procurement Planning 257
- Description of the Project 258
- Market Research 258
- Acquisition Methodology Steps 260
- Procurement Risk Management 262
- Contract Management Approach 262
- Summary 263
BOOK
SUMMARY
Items Found: 60
- Introduction and Intended Audience
- A story about table aliases, a vision about an inferior skill, how to drink wine mixed with water in France!
- Writing correctly is critical for the quality of our software
- A basic terminology
- All types of software developers!
- The same styles of development were used for many years in the user interface and in the database!
- The application developer – the main target of this book
- Database developers and students in IT universities are especially targeted too
- The two sections of the book
- Chapter 1 The concept of style
- The style of development is dynamic. We need to recognize it first!
- The most common styles of programming
- The database development starts with the table design
- Do we already start the development?
- Are we ready for SQL?
- Chapter 2 SQL - the beauty and the beast!
- How can a query language be so important for a style of development?
- What is SQL? What is not SQL?
- What about programming? Is there such a thing like database programming?
- Programming is a practical activity!
- Should we write in the database in a certain way?
- The SQL shop metaphor!
- An example of bad practice!
- Chapter 3 The holistic vision against the data
- The concept of data set
- The holistic approach versus the atomic approach – an introduction
- A different model –does this model deserve to be promoted indeed?
- Performance and portability - two advantages for the holistic approach.
- Visual development versus SQL development
- Chapter 4 What to choose: the data set or the data row?
- Choosing the level of detail: the set versus the row!
- Performance is poor. Performance completely blocked in any tentative of improvement.
- Database programming means query, query and query all the time!
- Let’s go back to the SQL shop! One more time, please!
- The use of scalar functions –a typical accessory for the atomic approach!
- Debugging is so simple! The code is much simpler and readable!
- What is a database developer nowadays?
- It’s practice time!
- Chapter 5 Data transfer paradigm, the first set of examples
- The exercises, the context, the goals, ways to illustrate the two approaches!
- Holistic versus atomic: incrementally update a target
- Chapter 6 Others atomic features used in excess
- The use of scalar functions – a challenge to the set-based approach
- A simple query!
- Chapter 7 Writing SQL versus writing procedurally, other holistic methods
- Writing SQL versus writing procedurally, another impediment!
- An example of update!
- Writing SQL versus writing procedurally: the power of union in the holistic approach!
- Embedded SQL versus dynamic SQL – another dilemma!
- Others holistic solutions: the temporary table, explicit or implicit like with a clause
- Chapter 8 Row triggers. When should we follow the atomic way? Some final reflections and thoughts!
- The use of row triggers: another common atomic solution used in excess
- The atomic approach should be used, whenever is necessary!
- Some final reflections and thoughts
- The concept of SQL template
- Writing horizontally or vertically: a decision to be taken!
- The specific software application should be implemented holistically
- The SQL itself can be better and better!
- Performance, oh performance! This book is for you!
- A specific data migration software application can be written in pure SQL more often than you expect!