Part I Multitenant Architecture 1 Introduction to the Multitenant Architecture 1.1 About the Multitenant Architecture 1-1 1.1.1 About Containers in a CDB 1-1 1.1.2 About User Interfaces for the Multitenant Architecture 1-4 1.2 Benefits of the Multitenant Architecture 1-5 1.2.1 Challenges for a Non-CDB Architecture 1-5 1.2.2 Benefits of the Multitenant Architecture for Database Consolidation 1-7 1.2.3 Benefits of the Multitenant Architecture for Manageability 1-9 1.3 Path to Database Consolidation 1-10 1.3.1 Creation of a CDB 1-11 1.3.2 Creation of a PDB 1-12 1.3.2.1 Creation of a PDB by Cloning 1-12 1.3.2.2 Creation of a PDB by Plugging In 1-16 1.3.2.3 Creation of a PDB by Relocating 1-19 1.3.2.4 Creation of a PDB as a Proxy PDB 1-21 1.4 Multitenant Environment Documentation Roadmap 1-23 iii 2 Overview of the Multitenant Architecture 2.1 Overview of Containers in a CDB 2-1 2.1.1 The CDB Root and System Container 2-1 2.1.2 PDBs 2-2 2.1.2.1 Types of PDBs 2-2 2.1.2.2 Purpose of PDBs 2-3 2.1.2.3 Proxy PDBs 2-4 2.1.2.4 Names for PDBs 2-5 2.1.2.5 Database Links Between PDBs 2-6 2.1.3 Data Dictionary Architecture in a CDB 2-7 2.1.3.1 Purpose of Data Dictionary Separation 2-7 2.1.3.2 Metadata and Data Links 2-9 2.1.3.3 Container Data Objects in a CDB 2-10 2.1.3.4 Data Dictionary Storage in a CDB 2-12 2.1.4 Current Container 2-12 2.1.5 Cross-Container Operations 2-13 2.2 Overview of Commonality in the CDB 2-14 2.2.1 About Commonality in a CDB 2-14 2.2.1.1 Principles of Commonality 2-14 2.2.1.2 Namespaces in a CDB 2-14 2.2.2 Overview of Common and Local Users in a CDB 2-15 2.2.2.1 Common Users in a CDB 2-16 2.2.2.2 Local Users in a CDB 2-18 2.2.3 Overview of Common and Local Roles in a CDB 2-20 2.2.3.1 Common Roles in a CDB 2-20 2.2.3.2 Local Roles in a CDB 2-21 2.2.4 Overview of Privilege and Role Grants in a CDB 2-21 2.2.4.1 Principles of Privilege and Role Grants in a CDB 2-22 2.2.4.2 Privileges and Roles Granted Locally in a CDB 2-22 2.2.4.3 Roles and Privileges Granted Commonly in a CDB 2-24 2.2.4.4 Grants to PUBLIC in a CDB 2-26 2.2.4.5 Grants of Privileges and Roles: Scenario 2-26 2.2.5 Overview of Common and Local Objects in a CDB 2-29 2.2.6 Overview of Common Audit Configurations 2-30 2.2.7 Overview of PDB Lockdown Profiles 2-31 2.3 Overview of Applications in an Application Container 2-33 2.3.1 About Application Containers 2-33 2.3.1.1 Purpose of Application Containers 2-34 2.3.1.2 Application Root 2-37 2.3.1.3 Application PDBs 2-38 iv 2.3.1.4 Application Seed 2-38 2.3.2 Application Common Objects 2-39 2.3.2.1 Creation of Application Common Objects 2-39 2.3.2.2 Metadata-Linked Application Common Objects 2-40 2.3.2.3 Data-Linked Application Common Objects 2-42 2.3.2.4 Extended Data-Linked Application Objects 2-43 2.3.3 Application Maintenance 2-44 2.3.3.1 About Application Maintenance 2-45 2.3.3.2 Application Installation 2-45 2.3.3.3 Application Upgrade 2-46 2.3.3.4 Application Patch 2-50 2.3.4 Migration of an Existing Application 2-51 2.3.5 Implicitly Created Applications 2-52 2.3.6 Application Synchronization 2-52 2.3.6.1 Synchronization of a Single Application 2-52 2.3.6.2 Synchronization of Multiple Applications 2-53 2.3.7 Container Maps 2-53 2.4 Overview of Services in a CDB 2-56 2.4.1 Service Creation in a CDB 2-57 2.4.1.1 Default Services in a CDB 2-57 2.4.1.2 Nondefault Services in a CDB 2-58 2.4.2 Connections to Containers in a CDB 2-58 2.5 Overview of Tablespaces and Database Files in a CDB 2-60 2.6 Overview of Availability in a CDB 2-62 2.6.1 Overview of Backup and Recovery in a CDB 2-62 2.6.2 Overview of Flashback PDB in a CDB 2-63 2.7 Overview of Oracle Resource Manager in a CDB 2-63 Part II Creating and Configuring a Multitenant Environment 3 Overview of Configuring and Managing a Multitenant Environment 3.1 About Configuring and Managing a Multitenant Environment 3-1 3.1.1 Common Users and Local Users 3-1 3.1.2 Separation of Duties in CDB and PDB Administration 3-2 3.2 Prerequisites for a Multitenant Environment 3-2 3.3 Tasks and Tools for a Multitenant Environment 3-3 3.3.1 Tasks for a Multitenant Environment 3-3 3.3.2 Tools for a Multitenant Environment 3-6 v 4 Creating and Configuring a CDB 4.1 About Creating a CDB 4-1 4.2 Planning for CDB Creation 4-1 4.2.1 Decide How to Configure the CDB 4-2 4.2.1.1 Plan the PDBs 4-2 4.2.1.2 Plan the Physical Layout 4-2 4.2.1.3 Learn How to Manage Initialization Parameters 4-3 4.2.1.4 Select the Character Set 4-4 4.2.1.5 Decide Which Time Zones to Support 4-5 4.2.1.6 Select the Database and Redo Log Block Sizes 4-5 4.2.1.7 Plan the SYSTEM and SYSAUX Tablespaces 4-5 4.2.1.8 Plan the Temporary Tablespaces 4-6 4.2.1.9 Choose the Undo Mode 4-6 4.2.1.10 Plan the Services for Your Application 4-7 4.2.1.11 Learn How to Start Up and Shut Down a CDB 4-7 4.2.1.12 Plan for Oracle RAC 4-8 4.2.2 Prerequisites for CDB Creation 4-8 4.3 Creating a CDB 4-9 4.3.1 About CDB Creation with DBCA 4-9 4.3.2 About CDB Creation with SQL Statements 4-10 4.3.2.1 About Enabling PDBs 4-10 4.3.2.2 About the Names and Locations of the Files for Root and the PDB Seed 4-11 4.3.2.3 About the Attributes of the Data Files for PDB$SEED 4-12 4.3.2.4 About the CDB Undo Mode 4-14 4.3.3 Creating a CDB with the CREATE DATABASE Statement 4-14 4.3.4 Creating a CDB with the CREATE DATABASE Statement: Examples 4-16 4.3.4.1 Creating a CDB Without Using Oracle Managed Files 4-16 4.3.4.2 Creating a CDB Using Oracle Managed Files: Example 4-20 4.4 Configuring EM Express for a CDB 4-22 4.5 After Creating a CDB 4-23 Part III Creating and Removing PDBs and Application Containers 5 Overview of PDB Creation 5.1 Techniques for Creating a PDB 5-1 5.1.1 Current Container and PDB Creation 5-3 5.1.2 Options for Creating a PDB from a Non-CDB 5-3 5.2 PDB Storage 5-4 vi 5.2.1 Storage Limits 5-4 5.2.2 Default Tablespace 5-5 5.2.3 User Tablespaces 5-6 5.2.4 PDB File Locations 5-7 5.2.4.1 FILE_NAME_CONVERT Clause 5-9 5.2.4.2 CREATE_FILE_DEST Clause 5-10 5.2.4.3 Restrictions on PDB File Locations 5-11 5.3 Service Name Conversion 5-12 5.4 Summary of Clauses for Creating a PDB 5-13 5.5 General Prerequisites for PDB Creation 5-20 6 Creating a PDB from Scratch 6.1 About Creating a PDB from Scratch 6-1 6.2 Creating a PDB 6-3 6.3 Creating a PDB: Examples 6-4 6.3.1 Creating a PDB Using No Clauses: Example 6-4 6.3.2 Creating a PDB and Granting Predefined Oracle Roles to the PDB Administrator: Example 6-5 6.3.3 Creating a PDB Using Multiple Clauses: Example 6-6 7 Cloning a PDB or Non-CDB 7.1 About Cloning a PDB or Non-CDB 7-1 7.1.1 How Cloning Works 7-1 7.1.2 User Interface for PDB Cloning 7-3 7.2 Cloning a Local PDB 7-3 7.2.1 About Cloning a Local PDB 7-3 7.2.2 Cloning a Local PDB: Basic Steps 7-4 7.2.3 After Cloning a Local PDB 7-6 7.2.4 Cloning a Local PDB: Examples 7-6 7.2.4.1 Cloning a Local PDB Using No Clauses: Example 7-7 7.2.4.2 Cloning a Local PDB Using DBCA: Example 7-7 7.2.4.3 Cloning a Local PDB with the PATH_PREFIX Clause: Example 7-8 7.2.4.4 Cloning a Local PDB Using the STORAGE Clause: Example 7-9 7.2.4.5 Cloning a Local PDB with the NO DATA Clause: Example 7-9 7.3 Cloning a Remote PDB 7-10 7.3.1 About Cloning a Remote PDB 7-10 7.3.2 Cloning a Remote PDB: Basic Steps 7-12 7.3.3 After Cloning a Remote PDB 7-14 7.3.4 Cloning a Remote PDB: Examples 7-15 7.3.4.1 Cloning a Remote PDB Using No Clauses: Example 7-15 vii 7.3.4.2 Cloning a Remote PDB Using DBCA: Example 7-16 7.4 Cloning a Non-CDB 7-17 7.4.1 About Cloning a Non-CDB 7-17 7.4.2 Cloning a Non-CDB: Basic Steps 7-18 7.4.3 Cloning a Remote Non-CDB: Example 7-21 7.5 About Refreshable Clone PDBs 7-22 7.5.1 Purpose of Refreshable Clone PDBs 7-22 7.5.2 Automatic and Manual Refresh Modes 7-23 7.5.3 Requirements for Refreshable Clone PDBs 7-24 7.5.4 Creating a Refreshable Clone PDB: Scenario 7-24 7.6 Cloning PDBs from PDB Snapshots 7-25 7.6.1 About Cloning PDBs from PDB Snapshots 7-25 7.6.2 Cloning a PDB from a PDB Snapshot: Scenario 7-25 7.7 Creating Snapshot Copy PDBs 7-26 7.7.1 About Snapshot Copy PDBs 7-26 7.7.1.1 Storage Requirements for Snapshot Copy PDBs 7-27 7.7.1.2 Types of Snapshots 7-28 7.7.2 Creating a Snapshot Copy PDB: Scenario 7-30 7.7.3 Materializing a Snapshot Copy PDB 7-31 7.8 Creating a Split Mirror Clone PDB 7-31 8 Relocating a PDB 8.1 About PDB Relocation 8-1 8.2 Purpose of PDB Relocation 8-4 8.3 How PDB Relocation Works 8-4 8.3.1 Server Session Draining When Relocating or Stopping PDBs 8-4 8.3.2 Stages of PDB Relocation 8-5 8.3.2.1 PDB Relocation in a Common Listener Network 8-6 8.3.2.2 PDB Relocation in Isolated Listener Networks 8-7 8.4 User Interface for PDB Relocation 8-9 8.5 Relocating a PDB Using CREATE PLUGGABLE DATABASE 8-10 8.6 Relocating a PDB: Examples 8-13 8.6.1 Relocating a PDB from a Remote CDB 8-13 8.6.2 Relocating a PDB Using DBCA: Example 8-14 9 Plugging In an Unplugged PDB 9.1 About Plugging In an Unplugged PDB 9-1 9.1.1 About the XML File and Archive File 9-1 9.1.2 Source File Locations When Plugging In an Unplugged PDB 9-4 viii 9.1.2.1 SOURCE_FILE_NAME_CONVERT Clause 9-4 9.1.2.2 SOURCE_FILE_DIRECTORY Clause 9-5 9.2 About Adopting a Non-CDB as a PDB 9-6 9.3 Plugging In an Unplugged PDB 9-8 9.4 Adopting a Non-CDB as a PDB 9-11 9.5 After Plugging in an Unplugged PDB 9-14 9.6 Plugging in an Unplugged PDB: Examples 9-15 10 Creating a PDB as a Proxy PDB 10.1 About Creating a Proxy PDB 10-1 10.1.1 Proxy PDBs and SQL Statements 10-4 10.1.2 Proxy PDBs and Database Links 10-4 10.1.3 Proxy PDBs and Authentication 10-5 10.1.4 Proxy PDBs and the Listener 10-5 10.1.4.1 HOST Clause 10-5 10.1.4.2 PORT Clause 10-5 10.2 Creating a Proxy PDB 10-6 11 Removing a PDB 11.1 Unplugging a PDB from a CDB 11-1 11.1.1 About Unplugging a PDB 11-1 11.1.2 Unplugging a PDB 11-4 11.2 Dropping a PDB 11-5 12 Creating and Removing Application Containers and Seeds 12.1 Creating and Removing Application Containers 12-1 12.1.1 Creating Application Containers 12-1 12.1.1.1 About Creating an Application Container 12-1 12.1.1.2 Preparing for Application Containers 12-2 12.1.1.3 Creating an Application Container 12-3 12.1.2 Unplugging an Application Container from a CDB 12-6 12.1.2.1 About Unplugging an Application Container 12-6 12.1.2.2 Unplugging an Application Container 12-7 12.1.3 Dropping an Application Container 12-8 12.2 Creating and Removing Application Seeds 12-10 12.2.1 Creating Application Seeds 12-10 12.2.1.1 About Creating an Application Seed 12-10 12.2.1.2 Preparing for an Application Seed 12-11 12.2.1.3 Creating an Application Seed 12-11 ix 12.2.2 Unplugging an Application Seed from an Application Container 12-15 12.2.2.1 About Unplugging an Application Seed 12-15 12.2.2.2 Unplugging an Application Seed 12-16 12.2.3 Dropping an Application Seed 12-17 12.3 Creating an Application PDB 12-18 Part IV Administering a Multitenant Environment 13 Administering a CDB 13.1 About CDB Administration 13-1 13.1.1 About the Current Container 13-1 13.1.2 About Administrative Tasks in a CDB 13-2 13.1.3 About Using Manageability Features in a CDB 13-6 13.1.4 About Managing Tablespaces in a CDB 13-12 13.1.4.1 About Managing Permanent Tablespaces in a CDB 13-12 13.1.4.2 About Managing Temporary Tablespaces in a CDB 13-12 13.1.5 About Managing Database Objects in a CDB 13-13 13.1.6 About Flashing Back a PDB 13-14 13.1.7 About Restricting PDB Users for Enhanced Security 13-14 13.1.7.1 PDB Lockdown Profiles 13-14 13.1.7.2 The PDB_OS_CREDENTIAL Initialization Parameter 13-15 13.1.7.3 The PATH_PREFIX and CREATE_FILE_DEST PDB Creation Clauses 13-16 13.1.8 Overview of Oracle Multitenant with Oracle RAC 13-17 13.2 Accessing Containers in a CDB 13-17 13.2.1 About Container Access in a CDB 13-17 13.2.1.1 Services in a CDB 13-18 13.2.1.2 Session Limits in a CDB 13-19 13.2.1.3 User Names in a Multitenant Environment 13-19 13.2.1.4 How the Multitenant Option Affects Password Files for Administrative Users 13-19 13.2.2 Accessing a Container in a CDB 13-20 13.2.2.1 Connecting to a Container Using the SQL*Plus CONNECT Command 13-20 13.2.2.2 Switching to a Container Using the ALTER SESSION Statement 13-22 13.3 Modifying a CDB at the System Level 13-26 13.3.1 About System-Level Modifications of a CDB 13-26 13.3.2 Modifying a CDB with ALTER SYSTEM 13-27 13.4 Modifying Containers When Connected to the CDB Root 13-28 13.4.1 About Container Modification When Connected to CDB Root 13-28 x 13.4.2 Modifying an Entire CDB Using ALTER DATABASE 13-29 13.4.3 Setting the Undo Mode in a CDB Using ALTER DATABASE 13-30 13.4.3.1 About the CDB Undo Mode 13-30 13.4.3.2 Configuring a CDB to Use Local Undo Mode 13-32 13.4.3.3 Configuring a CDB to Use Shared Undo Mode 13-33 13.4.4 Modifying the CDB Root Using ALTER DATABASE 13-34 13.4.5 Modifying the Open Mode of PDBs 13-35 13.4.5.1 About the Open Mode of a PDB 13-35 13.4.5.2 Modifying the Open Mode of PDBs with ALTER PLUGGABLE DATABASE 13-38 13.4.5.3 Modifying the Open Mode of PDBs with the SQL*Plus STARTUP Command 13-40 13.4.5.4 Preserving or Discarding the Open Mode of PDBs When the CDB Restarts 13-41 13.4.5.5 Starting and Stopping PDBs in Oracle RAC 13-43 13.5 Executing SQL in a Different Container 13-44 13.5.1 Issuing DML Statements on a Container in a CDB 13-44 13.5.1.1 About Issuing DML Statements on a Container in a CDB 13-45 13.5.1.2 Specifying the Default Container for DML Statements in a CDB 13-45 13.5.2 Executing DDL Statements in a CDB 13-46 13.5.2.1 About Executing DDL Statements in a CDB 13-46 13.5.2.2 Executing a DDL Statement in the Current Container 13-48 13.5.2.3 Executing a DDL Statement in All Containers in a CDB 13-49 13.5.3 Running Oracle-Supplied SQL Scripts in a CDB 13-49 13.5.3.1 About Running Oracle-Supplied SQL Scripts in a CDB 13-49 13.5.3.2 Syntax and Parameters for catcon.pl 13-50 13.5.3.3 Running the catcon.pl Script 13-53 13.5.4 Executing Code in Containers Using the DBMS_SQL Package 13-56 13.6 Shutting Down a CDB Instance 13-57 14 Administering a CDB Fleet 14.1 About CDB Fleets 14-1 14.2 Purpose of a CDB Fleet 14-2 14.3 Setting the Lead CDB in a CDB Fleet 14-3 14.4 Designating a CDB Fleet Member 14-4 15 Administering PDBs 15.1 About PDB Administration 15-1 15.1.1 Tasks Common to PDBs and Non-CDBs 15-1 15.1.2 Tasks Specific to CDBs 15-2 xi 15.2 Managing Connections to a PDB 15-3 15.2.1 Connecting to a PDB 15-3 15.2.2 Managing Services for PDBs 15-4 15.2.2.1 About Services for PDBs 15-4 15.2.2.2 Managing Services for a PDB Using SRVCTL and DBMS_SERVICE 15-7 15.2.3 Modifying the Listener Settings of a Referenced PDB 15-9 15.2.3.1 Altering the Listener Host Name of a Referenced PDB 15-10 15.2.3.2 Altering the Listener Port Number of a Referenced PDB 15-11 15.3 Modifying a PDB at the System Level 15-12 15.3.1 About System-Level Modifications of a PDB 15-12 15.3.2 Modifying a PDB with ALTER SYSTEM 15-13 15.4 Modifying a PDB at the Database Level 15-14 15.4.1 About Database-Level Modifications of a PDB 15-14 15.4.1.1 Storage Clauses 15-15 15.4.1.2 Logging and Recovery Clauses 15-16 15.4.1.3 Miscellaneous Clauses 15-18 15.4.2 Modifying a PDB with the ALTER PLUGGABLE DATABASE Statement 15-19 15.4.3 Changing the Global Database Name of a PDB 15-22 15.4.4 Managing Refreshable Clone PDBs 15-23 15.4.4.1 Refreshing a PDB 15-23 15.4.4.2 Switching Over a Refreshable Clone PDB 15-23 15.5 Altering the Open Mode of a PDB Using STARTUP and SHUTDOWN 15-27 15.5.1 Starting Up a PDB Using the STARTUP Command 15-28 15.5.2 Shutting Down a PDB Using the SHUTDOWN Command 15-29 16 Administering a PDB Snapshot Carousel 16.1 About PDB Snapshot Carousel 16-1 16.1.1 Purpose of PDB Snapshot Carousel 16-1 16.1.2 How PDB Snapshot Carousel Works 16-4 16.1.2.1 Contents of a PDB Snapshot 16-4 16.1.2.2 Contents of a PDB Snapshot Carousel 16-7 16.1.3 User Interface for PDB Snapshot Carousel 16-8 16.2 Setting the Maximum Number of Snapshots in a PDB Snapshot Carousel 16-9 16.3 Configuring Automatic PDB Snapshots 16-11 16.4 Creating PDB Snapshots Manually 16-12 16.5 Dropping a PDB Snapshot 16-14 16.6 Viewing Metadata for PDB Snapshots 16-14 xii 17 Administering Application Containers 17.1 About Application Container Administration 17-1 17.2 About Modifying an Application Root 17-4 17.3 Managing Applications in an Application Container 17-5 17.3.1 About Application Management 17-6 17.3.1.1 Basic Steps of Application Maintenance 17-6 17.3.1.2 Application Versions 17-7 17.3.1.3 Application Module Names 17-7 17.3.2 Installing Applications in an Application Container 17-8 17.3.2.1 About Installing Applications in an Application Container 17-8 17.3.2.2 Installing an Application in an Application Container with Automated Propagation 17-9 17.3.3 Upgrading Applications in an Application Container 17-10 17.3.3.1 About Upgrading Applications in an Application Container 17-10 17.3.3.2 Upgrading an Application in an Application Container 17-13 17.3.4 Patching Applications in an Application Container 17-14 17.3.4.1 About Patching Applications in an Application Container 17-14 17.3.4.2 Patching an Application in an Application Container with Automated Propagation 17-15 17.3.5 Migrating an Existing Application to an Application Container 17-16 17.3.5.1 About Migrating an Existing Application to an Application Container 17-16 17.3.5.2 Creating an Application Root Using an Existing PDB 17-18 17.3.5.3 Creating an Application PDB Using an Existing PDB 17-19 17.3.6 Synchronizing Applications in an Application PDB 17-19 17.3.7 Synchronizing an Application Root Replica with a Proxy PDB 17-21 17.3.7.1 About Synchronizing an Application Root Replica with a Proxy PDB 17-21 17.3.7.2 Creating a Proxy PDB That References an Application Root Replica 17-23 17.3.8 Setting the Compatibility Version of an Application 17-29 17.3.9 Performing Bulk Inserts During Application Install, Upgrade, and Patch Operations 17-30 17.3.10 Uninstalling Applications from an Application Container 17-32 17.3.10.1 About Uninstalling Applications from an Application Container 17-32 17.3.10.2 Uninstalling an Application from an Application Container 17-33 17.4 Managing Application Common Objects 17-34 17.4.1 About Application Common Objects 17-34 17.4.1.1 Creation of Application Common Objects 17-35 17.4.1.2 About Metadata-Linked Application Common Objects 17-36 17.4.1.3 About Extended Data-Linked Application Common Objects 17-36 17.4.1.4 About Extended Data-Linked Application Common Objects 17-37 xiii 17.4.2 Restrictions for Application Common Objects 17-38 17.4.3 Creating Application Common Objects 17-38 17.4.4 Issuing DML Statements on Application Common Objects 17-41 17.4.4.1 Issuing DML on Metadata-Linked Common Objects 17-42 17.4.4.2 Issuing DML on Data-Linked Common Objects 17-43 17.4.5 Modifying Application Common Objects with DDL Statements 17-45 17.5 Issuing DML Statements on Containers in an Application Container 17-46 17.5.1 About Issuing DML Statements on Containers in an Application Container 17-46 17.5.2 Specifying the Default Container for DML Statements in an Application Container 17-48 17.6 Partitioning by PDB with Container Maps 17-48 17.6.1 About Container Maps 17-48 17.6.1.1 Map Objects 17-49 17.6.1.2 List-Partitioned Container Map: Example 17-49 17.6.1.3 Range-Partitioned Container Map: Example 17-51 17.6.2 Creating a Container Map 17-52 18 Managing Security for a Multitenant Environment 18.1 Managing Commonly and Locally Granted Privileges 18-1 18.1.1 How the Oracle Multitenant Option Affects Privileges 18-1 18.1.2 About Commonly and Locally Granted Privileges 18-2 18.1.3 How Commonly Granted System Privileges Work 18-2 18.1.4 How Commonly Granted Object Privileges Work 18-3 18.1.5 Granting or Revoking Privileges to Access a PDB 18-4 18.1.6 Example: Granting a Privilege in a Multitenant Environment 18-4 18.1.7 Enabling Common Users to View CONTAINER_DATA Object Information 18-4 18.1.7.1 Viewing Data About the Root, CDB, and PDBs While Connected to the Root 18-5 18.1.7.2 Enabling Common Users to Query Data in Specific PDBs 18-6 18.2 Managing Common Roles and Local Roles 18-6 18.2.1 About Common Roles and Local Roles 18-7 18.2.2 How Common Roles Work 18-7 18.2.3 How the PUBLIC Role Works in a Multitenant Environment 18-7 18.2.4 Privileges Required to Create, Modify, or Drop a Common Role 18-8 18.2.5 Rules for Creating Common Roles 18-8 18.2.6 Creating a Common Role 18-8 18.2.7 Rules for Creating Local Roles 18-9 18.2.8 Creating a Local Role 18-9 18.2.9 Role Grants and Revokes for Common Users and Local Users 18-10 xiv 18.3 Restricting Operations on PDBs Using PDB Lockdown Profiles 18-10 18.3.1 About PDB Lockdown Profiles 18-10 18.3.2 Default PDB Lockdown Profiles 18-12 18.3.3 Creating a PDB Lockdown Profile 18-12 18.3.4 Enabling or Disabling a PDB Lockdown Profile 18-14 18.3.5 Dropping a PDB Lockdown Profile 18-15 18.4 Configuring Operating System Users for a PDB 18-16 18.4.1 About Configuring Operating System Users for a PDB 18-16 18.4.2 Configuring an Operating System User for a PDB 18-17 18.4.3 Setting the Default Credential in a PDB 18-18 18.5 Using Application Contexts in a Multitenant Environment 18-18 18.5.1 What Is an Application Context? 18-19 18.5.2 Application Contexts in a Multitenant Environment 18-19 18.6 Using Oracle Virtual Private Database in a Multitenant Environment 18-20 18.6.1 What Is Oracle Virtual Private Database? 18-20 18.6.2 Oracle Virtual Private Database in a Multitenant Environment 18-21 18.7 Using Transport Layer Security in a Multitenant Environment 18-22 18.8 Oracle Data Redaction in a Multitenant Environment 18-23 18.9 Overview of Auditing in a Multitenant Environment 18-23 18.9.1 Unified Auditing in a Multitenant Environment 18-24 18.9.2 Example: Auditing the DBA Role in a Multitenant Environment 18-24 18.9.3 Unified Audit Policies or AUDIT Settings in a Multitenant Environment 18-24 18.9.3.1 About Local, CDB Common, and Application Common Audit Policies 18-25 18.9.3.2 Traditional Auditing in a Multitenant Environment 18-26 18.9.3.3 Configuring a Local Unified Audit Policy or Common Unified Audit Policy 18-27 18.9.3.4 Example: Local Unified Audit Policy 18-29 18.9.3.5 Example: CDB Common Unified Audit Policy 18-29 18.9.3.6 Example: Application Common Unified Audit Policy 18-29 18.9.3.7 How Local or Common Audit Policies or Settings Appear in the Audit Trail 18-30 18.9.4 Fine-Grained Auditing in a Multitenant Environment 18-31 19 Monitoring CDBs and PDBs 19.1 About CDB and Container Information in Views 19-1 19.1.1 About Viewing Information When the Current Container Is Not the CDB Root 19-1 19.1.2 About Viewing Information When the Current Container Is the CDB Root 19-2 19.1.3 Views for a CDB 19-3 19.2 Determining Whether a Database Is a CDB 19-6 xv 19.3 Viewing Information About the Containers in a CDB 19-7 19.4 Viewing Information About PDBs 19-7 19.5 Viewing the Open Mode of Each PDB 19-8 19.6 Querying Container Data Objects 19-9 19.7 Querying Across Containers with the CONTAINERS Clause 19-13 19.7.1 About Querying Across Containers with the CONTAINERS Clause 19-13 19.7.2 Querying User-Created Tables and Views Across All Containers 19-14 19.7.3 Querying Application Common Objects Across Application PDBs 19-16 19.8 Determining the Current Container ID or Name 19-18 19.9 Listing the Modifiable Initialization Parameters in PDBs 19-19 19.10 Viewing the History of PDBs 19-19 19.11 Viewing Information About Applications in Application Containers 19-20 19.11.1 Viewing Information About Applications 19-21 19.11.2 Viewing Information About Application Status 19-22 19.11.3 Viewing Information About Application Statements 19-23 19.11.4 Viewing Information About Application Versions 19-25 19.11.5 Viewing Information About Application Patches 19-25 19.11.6 Viewing Information About Application Errors 19-26 19.11.7 Listing the Shared Database Objects in an Application Container 19-27 19.11.8 Listing the Extended Data-Linked Objects in an Application Container 19-28 Part V Using Oracle Features in a Multitenant Environment 20 Backing Up and Recovering CDBs and PDBs 20.1 Overview of Backing Up and Recovering CDBs and PDBs 20-1 20.2 Backup and Complete Recovery of CDBs 20-2 20.3 Backup and Complete Recovery of PDBs 20-2 20.4 Point-in-Time Recovery in a Multitenant Environment 20-4 20.5 Flashback Database in a Multitenant Environment 20-5 21 Using Database Utilities in a Multitenant Environment 21.1 Importing and Exporting Data in a CDB 21-1 21.1.1 About Using Data Pump in a Multitenant Environment 21-1 21.1.2 Using Data Pump to Move Data Into a CDB 21-1 21.1.3 Using Data Pump to Move PDBs Within Or Between CDBs 21-4 21.2 Using LogMiner in a CDB 21-4 21.2.1 LogMiner V$ Views and DBA Views in a CDB 21-4 21.2.2 The V$LOGMNR_CONTENTS View in a CDB 21-5 21.2.3 Enabling Supplemental Logging in a CDB 21-6 xvi 21.2.4 Using a Flat File Dictionary in a CDB 21-6 21.3 DBNEWID Considerations for CDBs and PDBs 21-6 22 Using Oracle Resource Manager for PDBs 22.1 Overview of Oracle Resource Manager in a Multitenant Environment 22-1 22.1.1 Purpose of Resource Management in a Multitenant Environment 22-2 22.1.2 Overview of Resource Plan Directives 22-3 22.1.2.1 PDB Performance Profiles 22-3 22.1.2.2 Resource Plan Directives 22-4 22.1.3 Background and Administrative Tasks and Consumer Groups 22-4 22.1.4 Initialization Parameters for PDB-Level Resources 22-5 22.1.4.1 Memory-Related Initialization Parameters for PDBs 22-5 22.1.4.2 I/O-Related Initialization Parameters for PDBs 22-8 22.1.4.3 CPU-Related Initialization Parameters for PDBs 22-10 22.2 Managing CDB Resource Plans 22-10 22.2.1 About CDB Resource Plans 22-10 22.2.1.1 Shares for Allocating Resources to PDBs 22-10 22.2.1.2 Utilization Limits for PDBs 22-11 22.2.1.3 The Default Directive for PDBs 22-14 22.2.2 Creating a CDB Resource Plan for Managing PDBs 22-16 22.2.3 Creating a CDB Resource Plan for Managing PDBs: Scenario 22-16 22.2.4 Creating a CDB Resource Plan with PDB Performance Profiles 22-19 22.2.5 Creating a CDB Resource Plan for PDB Performance Profiles: Scenario 22-20 22.2.6 Enabling a CDB Resource Plan 22-23 22.2.7 Modifying a CDB Resource Plan 22-24 22.2.7.1 Updating a CDB Resource Plan 22-24 22.2.7.2 Managing CDB Resource Plan Directives for a PDB 22-25 22.2.7.3 Managing CDB Resource Plan Directives for a PDB Performance Profile 22-28 22.2.7.4 Updating the Default Directive for PDBs in a CDB Resource Plan 22-31 22.2.7.5 Updating the Default Directive for Maintenance Tasks in a CDB Resource Plan 22-32 22.2.7.6 Deleting a CDB Resource Plan 22-33 22.2.8 Disabling a CDB Resource Plan 22-34 22.2.9 Viewing Information About Plans and Directives in a CDB 22-35 22.2.9.1 Viewing CDB Resource Plans 22-35 22.2.9.2 Viewing CDB Resource Plan Directives 22-36 22.3 Managing PDB Resource Plans 22-37 22.3.1 About PDB Resource Plans 22-37 xvii 22.3.1.1 CDB Resource Plan Requirements When Creating PDB Resource Plans 22-38 22.3.1.2 PDB Resource Plan: Example 22-39 22.3.2 Creating a PDB Resource Plan 22-39 22.3.3 Enabling a PDB Resource Plan 22-40 22.3.4 Modifying a PDB Resource Plan 22-41 22.3.5 Disabling a PDB Resource Plan 22-42 22.4 Monitoring PDBs Managed by Oracle Database Resource Manager 22-42 22.4.1 About Resource Manager Views for PDBs 22-42 22.4.2 Monitoring CPU Usage for PDBs 22-43 22.4.3 Monitoring Parallel Execution for PDBs 22-45 22.4.4 Monitoring the I/O Generated by PDBs 22-46 22.4.5 Monitoring Memory Usage for PDBs 22-46 23 Using Oracle Scheduler with a CDB 23.1 DBMS_SCHEDULER Invocations in a CDB 23-1 23.2 Job Coordinator and Slave Processes in a CDB 23-2 23.3 DBMS_JOB and DBMS_SCHEDULER 23-2 23.4 Processes to Close a PDB 23-3 23.5 New and Changed CDB Views 23-3 24 Using Oracle Database Vault with a CDB 24.1 About Oracle Database Vault 24-1 24.2 How Oracle Database Vault Works in a Multitenant Environment 24-1 24.3 Verifying That Database Vault Is Configured and Enabled 24-3 24.4 Registering Oracle Database Vault with an Oracle Database in a Multitenant Environment 24-3 24.4.1 Registering Database Vault in the CDB Root 24-3 24.4.2 Registering Database Vault Common Users to Manage Specific PDBs 24-6 24.4.3 Registering Database Vault Local Users to Manage Specific PDBs 24-8 24.4.4 Plugging in a Database Vault-Enabled PDB 24-10 24.4.5 Manually Installing Oracle Database Vault in a Multitenant Environment 24-11 24.5 Configuring Realms 24-12 24.5.1 What Are Realms? 24-12 24.5.1.1 About Realms 24-12 24.5.1.2 Realms in a Multitenant Environment 24-13 24.5.2 Realm Authorizations in a Multitenant Environment 24-14 24.6 Rule Sets and Rules in a Multitenant Environment 24-15 24.7 Command Rules in a Multitenant Environment 24-15 xviii 24.8 Oracle Database Vault Policies in a Multitenant Environment 24-16 24.9 Using Database Vault Operations Control to Restrict Multitenant Common User Access to Local PDB Data 24-16 24.9.1 About Using Database Vault Operations Control 24-16 24.9.2 Enabling Database Vault Operations Control 24-17 24.9.3 Adding Common Users and Packages to an Exception List 24-18 24.9.4 Deleting Common Users and Packages from an Exception List 24-18 24.9.5 Disabling Database Vault Operations Control 24-19 24.10 Converting a Standalone Oracle Database to a PDB and Plugging It into a CDB 24-19 25 Using XStream with a CDB 25.1 About XStream 25-1 25.2 System-Created Rules and a Multitenant Environment 25-3 25.2.1 System-Created Rules in a CDB and XStream Out 25-3 25.2.2 System-Created Rules in a CDB and XStream In 25-6 25.3 XStream Out and a Multitenant Environment 25-6 25.4 Configuring XStream Out in a CDB 25-8 25.4.1 Configuring XStream Out with Local Capture in a CDB 25-9 25.4.2 Configuring XStream Out with Downstream Capture in CDBs 25-12 25.5 XStream In and a Multitenant Environment 25-16 Glossary Index xix