Oracle Database Architecture - Complete Guide
Oracle Database Architecture - Complete Guide
Section titled “Oracle Database Architecture - Complete Guide”Understanding Oracle database architecture is crucial for effective database administration, performance tuning, and troubleshooting. This comprehensive guide covers both traditional and modern Oracle architectures, including the revolutionary multitenant container database (CDB) and pluggable database (PDB) features.
Oracle Multitenant Architecture (12c+)
Section titled “Oracle Multitenant Architecture (12c+)”Container Database (CDB) Overview
Section titled “Container Database (CDB) Overview”Oracle’s multitenant architecture, introduced in Oracle 12c, represents a fundamental shift in database design. This architecture allows multiple pluggable databases (PDBs) to share a single container database (CDB), providing significant benefits for consolidation, management, and cloud deployments.
Container Database Structure
Section titled “Container Database Structure”-- Check if database is a CDBSELECT name, cdb FROM v$database;
-- View CDB informationSELECT con_id, name, open_mode, restricted, open_timeFROM v$containersORDER BY con_id;
-- Check current containerSHOW CON_NAME;SHOW CON_ID;
CDB Components:
- Root Container (CDB$ROOT) - Contains Oracle metadata and common users
- Seed PDB (PDB$SEED) - Template for creating new PDBs
- User PDBs - Individual pluggable databases containing application data
- System Container - Overall CDB management context
Pluggable Database (PDB) Architecture
Section titled “Pluggable Database (PDB) Architecture”-- List all PDBs in the CDBSELECT con_id, pdb_id, pdb_name, status, creation_scn, open_mode, restrictedFROM cdb_pdbsORDER BY pdb_id;
-- Connect to specific PDBALTER SESSION SET CONTAINER = hr_pdb;
-- Open/Close PDB operationsALTER PLUGGABLE DATABASE hr_pdb OPEN;ALTER PLUGGABLE DATABASE hr_pdb CLOSE;ALTER PLUGGABLE DATABASE ALL OPEN;
-- PDB resource managementSELECT pdb_name, shares, utilization_limit, parallel_server_limitFROM cdb_pdb_history;
Multitenant Benefits
Section titled “Multitenant Benefits”Consolidation Advantages
Section titled “Consolidation Advantages”-- Resource utilization across PDBsSELECT p.con_id, p.pdb_name, s.statistic#, s.name, s.valueFROM v$sysstat sJOIN v$containers p ON s.con_id = p.con_idWHERE s.name IN ('CPU used by this session', 'physical reads', 'physical writes')ORDER BY p.con_id, s.statistic#;
Key Benefits:
- Resource Consolidation - Multiple databases share memory and processes
- Simplified Management - Single CDB manages multiple PDBs
- Rapid Provisioning - Clone PDBs in minutes
- Cost Reduction - Fewer Oracle licenses required
- Cloud Ready - Perfect for cloud and container deployments
PDB Management Operations
Section titled “PDB Management Operations”-- Create new PDB from seedCREATE PLUGGABLE DATABASE sales_pdbADMIN USER sales_admin IDENTIFIED BY passwordFILE_NAME_CONVERT = ('/pdbseed/', '/sales_pdb/');
-- Clone existing PDBCREATE PLUGGABLE DATABASE test_hr_pdb FROM hr_pdb;
-- Unplug/Plug operations for migrationALTER PLUGGABLE DATABASE sales_pdb UNPLUG INTO '/tmp/sales_pdb.xml';CREATE PLUGGABLE DATABASE sales_pdb USING '/tmp/sales_pdb.xml'COPY;
-- Resource limitsALTER PLUGGABLE DATABASE hr_pdb SET CONTAINER_DATA = ALL;
PDB Resource Management
Section titled “PDB Resource Management”Resource Allocation
Section titled “Resource Allocation”-- Set PDB resource planALTER SYSTEM SET RESOURCE_MANAGER_PLAN = 'CDB_PLAN';
-- PDB resource allocationSELECT plan_name, pdb_name, shares, utilization_limit, parallel_server_limitFROM cdb_pdb_resource_plans;
-- Memory usage by PDBSELECT con_id, pool, name, bytes/1024/1024 as mbFROM v$sgainfoWHERE con_id > 2ORDER BY con_id, bytes DESC;
Performance Monitoring
Section titled “Performance Monitoring”-- PDB performance metricsSELECT p.pdb_name, m.metric_name, m.value, m.metric_unitFROM v$sysmetric mJOIN v$containers p ON m.con_id = p.con_idWHERE m.metric_name IN ('CPU Usage Per Sec', 'Physical Reads Per Sec', 'Physical Writes Per Sec', 'User Transaction Per Sec')ORDER BY p.pdb_name, m.metric_name;
Traditional Single-Tenant Architecture
Section titled “Traditional Single-Tenant Architecture”Non-CDB Architecture (Pre-12c Style)
Section titled “Non-CDB Architecture (Pre-12c Style)”For databases not using multitenant architecture or Oracle versions prior to 12c:
-- Check database architectureSELECT name, cdb, version_time FROM v$database;
-- For non-CDB databasesSELECT instance_name, host_name, version, startup_timeFROM v$instance;
Instance and Database Architecture
Section titled “Instance and Database Architecture”Oracle Instance
Section titled “Oracle Instance”An Oracle instance consists of memory structures and background processes that manage database operations.
Memory Structures
Section titled “Memory Structures”System Global Area (SGA)
-- View SGA componentsSELECT component, current_size/1024/1024 as current_mb, min_size/1024/1024 as min_mb, max_size/1024/1024 as max_mbFROM v$sga_dynamic_componentsORDER BY current_size DESC;
-- SGA summarySELECT * FROM v$sga;
SGA Components:
-
Database Buffer Cache
- Stores data blocks read from datafiles
- Managed by LRU algorithm
- Configured with
db_cache_size
-
Shared Pool
- Library cache (SQL and PL/SQL code)
- Data dictionary cache
- Configured with
shared_pool_size
-
Redo Log Buffer
- Stores redo entries before writing to redo logs
- Configured with
log_buffer
-
Large Pool
- Used for large allocations (RMAN, parallel operations)
- Configured with
large_pool_size
-
Java Pool
- Memory for Java operations
- Configured with
java_pool_size
Program Global Area (PGA)
-- View PGA statisticsSELECT name, value/1024/1024 as value_mbFROM v$pgastatWHERE name IN ( 'aggregate PGA target parameter', 'total PGA allocated', 'total PGA used');
-- PGA usage by sessionSELECT s.sid, s.username, ROUND(p.pga_used_mem/1024/1024, 2) as pga_used_mb, ROUND(p.pga_alloc_mem/1024/1024, 2) as pga_alloc_mbFROM v$session sJOIN v$process p ON s.paddr = p.addrWHERE s.username IS NOT NULLORDER BY p.pga_alloc_mem DESC;
Background Processes
Section titled “Background Processes”Core Background Processes:
-
System Monitor (SMON)
- Instance recovery
- Cleanup of temporary segments
- Coalescing free space
-
Process Monitor (PMON)
- Process cleanup and recovery
- Listener registration
- Resource cleanup
-
Database Writer (DBWn)
- Writes dirty buffers to datafiles
- Multiple writers possible (DBW0, DBW1, …)
-
Log Writer (LGWR)
- Writes redo log buffer to redo log files
- Triggers on commit, buffer full, or timeout
-
Checkpoint (CKPT)
- Updates control files and datafile headers
- Manages checkpoint processing
-
Archiver (ARCn)
- Archives filled redo log files
- Multiple archivers for performance
-- View background processesSELECT name, descriptionFROM v$bgprocessWHERE paddr != '00'ORDER BY name;
-- Check process statusSELECT program, COUNT(*) as process_countFROM v$sessionWHERE type = 'BACKGROUND'GROUP BY programORDER BY program;
Database Physical Structure
Section titled “Database Physical Structure”Control Files
Section titled “Control Files”Control files contain critical database metadata:
- Database name and identifier
- Datafile and redo log file locations
- Database creation timestamp
- Current log sequence number
-- View control file informationSELECT * FROM v$controlfile;
-- Control file record sectionsSELECT type, records_total, records_used, record_sizeFROM v$controlfile_record_sectionORDER BY type;
-- Create control file traceALTER DATABASE BACKUP CONTROLFILE TO TRACE;
Data Files
Section titled “Data Files”Data files store the actual database data:
-- View datafile informationSELECT file_name, tablespace_name, ROUND(bytes/1024/1024, 2) as size_mb, ROUND(maxbytes/1024/1024, 2) as max_size_mb, autoextensible, statusFROM dba_data_filesORDER BY tablespace_name, file_name;
-- Check datafile I/OSELECT df.file_name, fs.phyrds as physical_reads, fs.phywrts as physical_writes, fs.phyblkrd as blocks_read, fs.phyblkwrt as blocks_writtenFROM v$filestat fsJOIN dba_data_files df ON fs.file# = df.file_idORDER BY fs.phyrds + fs.phywrts DESC;
Redo Log Files
Section titled “Redo Log Files”Redo logs record all database changes:
-- View redo log informationSELECT group#, thread#, sequence#, ROUND(bytes/1024/1024, 2) as size_mb, members, status, archived, first_change#FROM v$logORDER BY group#;
-- View redo log membersSELECT group#, member, statusFROM v$logfileORDER BY group#, member;
-- Monitor log switchesSELECT TO_CHAR(first_time, 'YYYY-MM-DD HH24') as hour, COUNT(*) as log_switchesFROM v$log_historyWHERE first_time > SYSDATE - 7GROUP BY TO_CHAR(first_time, 'YYYY-MM-DD HH24')ORDER BY hour;
Archive Log Files
Section titled “Archive Log Files”Archive logs are copies of filled redo logs:
-- View archive log destinationsSELECT dest_id, destination, status, bindingFROM v$archive_destWHERE status != 'INACTIVE';
-- Archive log usageSELECT * FROM v$recovery_file_dest;
-- Recent archive logsSELECT name, sequence#, first_change#, next_change#, completion_timeFROM v$archived_logWHERE completion_time > SYSDATE - 1ORDER BY completion_time DESC;
Logical Storage Structure
Section titled “Logical Storage Structure”Tablespaces
Section titled “Tablespaces”Tablespaces are logical storage units:
-- Tablespace informationSELECT tablespace_name, status, contents, logging, extent_management, allocation_type, segment_space_managementFROM dba_tablespacesORDER BY tablespace_name;
-- Tablespace usageSELECT tablespace_name, ROUND(used_space * 8192 / 1024 / 1024, 2) AS used_mb, ROUND(tablespace_size * 8192 / 1024 / 1024, 2) AS total_mb, ROUND(used_percent, 2) AS used_percentFROM dba_tablespace_usage_metricsORDER BY used_percent DESC;
Segments
Section titled “Segments”Segments are sets of extents allocated for database objects:
-- Large segmentsSELECT owner, segment_name, segment_type, tablespace_name, ROUND(bytes/1024/1024, 2) as size_mb, blocks, extentsFROM dba_segmentsWHERE bytes > 100*1024*1024 -- > 100MBORDER BY bytes DESCFETCH FIRST 20 ROWS ONLY;
-- Segment growth analysisSELECT owner, object_name, object_type, SUM(space_used_delta) as space_growth_mbFROM dba_hist_seg_statWHERE begin_interval_time > SYSDATE - 30GROUP BY owner, object_name, object_typeORDER BY space_growth_mb DESCFETCH FIRST 20 ROWS ONLY;
Extents and Blocks
Section titled “Extents and Blocks”-- Extent information for a tableSELECT extent_id, file_id, block_id, blocks, ROUND(bytes/1024, 2) as size_kbFROM dba_extentsWHERE owner = 'HR' AND segment_name = 'EMPLOYEES'ORDER BY extent_id;
-- Block size informationSELECT tablespace_name, block_sizeFROM dba_tablespacesORDER BY tablespace_name;
Oracle Processes Architecture
Section titled “Oracle Processes Architecture”Server Processes
Section titled “Server Processes”Dedicated Server
Section titled “Dedicated Server”Each user connection has its own server process:
-- View dedicated server connectionsSELECT s.sid, s.serial#, s.username, s.program, s.machine, p.spid as server_process_idFROM v$session sJOIN v$process p ON s.paddr = p.addrWHERE s.type = 'USER' AND s.username IS NOT NULLORDER BY s.sid;
Shared Server
Section titled “Shared Server”Multiple user sessions share a pool of server processes:
-- Shared server configurationSHOW PARAMETER shared_server;
-- Shared server statisticsSELECT name, valueFROM v$sysstatWHERE name LIKE '%shared server%';
-- Dispatcher informationSELECT name, network, status, accept, messages, bytesFROM v$dispatcher;
User Processes
Section titled “User Processes”User processes run on client machines and connect to server processes:
-- User session informationSELECT s.sid, s.serial#, s.username, s.status, s.osuser, s.machine, s.program, s.logon_time, s.last_call_etFROM v$session sWHERE s.type = 'USER' AND s.username IS NOT NULLORDER BY s.logon_time;
Oracle Network Architecture
Section titled “Oracle Network Architecture”Listener
Section titled “Listener”The listener process manages client connections:
# Check listener statuslsnrctl status
# View listener configurationcat $ORACLE_HOME/network/admin/listener.ora
# Monitor listener activitylsnrctl services
-- Database registration with listenerSELECT instance_name, status, database_statusFROM v$instance;
-- Service informationSELECT name, network_name, enabledFROM v$services;
TNS (Transparent Network Substrate)
Section titled “TNS (Transparent Network Substrate)”TNS provides location transparency for database connections:
# Test TNS connectivitytnsping <service_name>
# View TNS configurationcat $ORACLE_HOME/network/admin/tnsnames.ora
Memory Management
Section titled “Memory Management”Automatic Memory Management (AMM)
Section titled “Automatic Memory Management (AMM)”-- Check AMM settingsSHOW PARAMETER memory_target;SHOW PARAMETER memory_max_target;SHOW PARAMETER sga_target;SHOW PARAMETER pga_aggregate_target;
-- Memory advisor recommendationsSELECT component, current_size/1024/1024 as current_mb, oper_count, last_oper_type, last_oper_mode, last_oper_timeFROM v$memory_dynamic_componentsWHERE current_size > 0ORDER BY current_size DESC;
Automatic Shared Memory Management (ASMM)
Section titled “Automatic Shared Memory Management (ASMM)”-- View ASMM componentsSELECT component, oper_count, last_oper_type, last_oper_mode, TO_CHAR(last_oper_time, 'DD-MON-YY HH24:MI:SS') as last_operationFROM v$sga_dynamic_free_memory;
-- SGA resize operationsSELECT component, oper_type, oper_mode, initial_size/1024/1024 as initial_mb, target_size/1024/1024 as target_mb, final_size/1024/1024 as final_mb, start_time, end_timeFROM v$sga_resize_opsORDER BY start_time DESC;
Transaction Processing
Section titled “Transaction Processing”Transaction Components
Section titled “Transaction Components”-- Active transactionsSELECT s.sid, s.serial#, s.username, t.start_time, t.used_ublk as undo_blocks, t.used_urec as undo_records, ROUND((SYSDATE - t.start_date) * 24 * 60, 2) as minutes_activeFROM v$transaction tJOIN v$session s ON t.addr = s.taddrORDER BY t.start_date;
-- Undo statisticsSELECT begin_time, end_time, undotsn, undoblks, txncount, maxquerylen, maxquerysqlidFROM v$undostatORDER BY begin_time DESCFETCH FIRST 24 ROWS ONLY;
ACID Properties Implementation
Section titled “ACID Properties Implementation”- Atomicity: Undo segments ensure all-or-nothing transactions
- Consistency: Constraints and triggers maintain data integrity
- Isolation: Lock mechanisms and read consistency
- Durability: Redo logs ensure committed changes survive system failures
High Availability Architecture
Section titled “High Availability Architecture”Oracle Real Application Clusters (RAC)
Section titled “Oracle Real Application Clusters (RAC)”Oracle RAC provides high availability and scalability by allowing multiple instances to access a single database simultaneously.
-- RAC information (if applicable)SELECT inst_id, instance_name, host_name, status, startup_time, database_statusFROM gv$instanceORDER BY inst_id;
-- Cluster database parameterSHOW PARAMETER cluster_database;
-- RAC servicesSELECT name, network_name, failover_method, failover_typeFROM gv$servicesWHERE name NOT LIKE 'SYS%';
-- Interconnect trafficSELECT name, value FROM gv$sysstatWHERE name LIKE '%global cache%' OR name LIKE '%gc %';
RAC with Multitenant
Section titled “RAC with Multitenant”-- RAC instances and PDB statusSELECT i.inst_id, i.instance_name, p.pdb_name, p.open_modeFROM gv$instance iCROSS JOIN cdb_pdbs pORDER BY i.inst_id, p.pdb_name;
-- PDB services across RAC nodesSELECT inst_id, service_name, pdb_name, enabledFROM gv$pdb_servicesORDER BY service_name, inst_id;
Data Guard
Section titled “Data Guard”Oracle Data Guard provides disaster recovery and high availability through standby databases.
-- Data Guard configurationSELECT database_role, protection_mode, protection_level, open_mode, log_mode, force_loggingFROM v$database;
-- Standby database statusSELECT process, status, client_process, client_pid, sequence#, block#FROM v$managed_standbyORDER BY process;
-- Archive log apply statusSELECT sequence#, first_time, next_time, appliedFROM v$archived_logWHERE dest_id = 1ORDER BY sequence# DESC;
Data Guard with PDBs
Section titled “Data Guard with PDBs”-- PDB synchronization statusSELECT pdb_name, synchronization_status, apply_lag, transport_lagFROM cdb_pdb_sync_status;
-- Standby PDB informationSELECT pdb_id, pdb_name, status, open_modeFROM v$pdbsORDER BY pdb_id;
Cloud and Container Integration
Section titled “Cloud and Container Integration”Oracle Cloud Integration
Section titled “Oracle Cloud Integration”Autonomous Database Architecture
Section titled “Autonomous Database Architecture”-- Autonomous Database featuresSELECT parameter, value, descriptionFROM v$parameterWHERE parameter LIKE 'autonomous%' OR parameter LIKE 'auto_%';
-- Service names in AutonomousSELECT name, network_nameFROM v$servicesWHERE name LIKE '%_HIGH' OR name LIKE '%_MEDIUM' OR name LIKE '%_LOW';
Oracle Database on Kubernetes
Section titled “Oracle Database on Kubernetes”- Container-ready PDBs - Each PDB runs as separate service
- Dynamic scaling - PDBs can be moved between nodes
- Resource isolation - Container limits mapped to PDB resource plans
- Persistent storage - Shared storage for CDB files
Modern Deployment Patterns
Section titled “Modern Deployment Patterns”Database as a Service (DBaaS)
Section titled “Database as a Service (DBaaS)”-- Cloud service monitoringSELECT service_name, creation_date, edition, version, shapeFROM cloud_service_instances;
-- Resource utilization in cloudSELECT instance_name, cpu_count, memory_target, sga_target, pga_aggregate_targetFROM v$instance, v$parameterWHERE name IN ('cpu_count', 'memory_target');
Microservices Architecture
Section titled “Microservices Architecture”- One PDB per microservice - Perfect isolation
- Service-specific schemas - Clear boundaries
- Independent scaling - Scale PDBs independently
- Simplified deployments - Deploy PDB changes separately
Performance Architecture
Section titled “Performance Architecture”Optimizer
Section titled “Optimizer”-- Optimizer parametersSELECT name, value, descriptionFROM v$parameterWHERE name LIKE '%optimizer%'ORDER BY name;
-- SQL plan managementSELECT sql_handle, plan_name, enabled, accepted, fixedFROM dba_sql_plan_baselinesORDER BY created DESC;
Execution Plans
Section titled “Execution Plans”-- View execution plansSELECT sql_id, plan_hash_value, executions, ROUND(elapsed_time/1000000, 2) as elapsed_sec, ROUND(cpu_time/1000000, 2) as cpu_sec, buffer_gets, disk_readsFROM v$sqlWHERE executions > 100ORDER BY elapsed_time DESCFETCH FIRST 20 ROWS ONLY;
Migration Strategies
Section titled “Migration Strategies”Upgrading to Multitenant Architecture
Section titled “Upgrading to Multitenant Architecture”Converting Non-CDB to PDB
Section titled “Converting Non-CDB to PDB”-- Check compatibilityEXEC DBMS_PDB.CHECK_PLUG_COMPATIBILITY( pdb_descr_file => '/tmp/ncdb.xml', pdb_name => 'SALES_PDB');
-- Convert non-CDB to PDBSHUTDOWN IMMEDIATE;STARTUP MOUNT;ALTER DATABASE OPEN READ ONLY;
-- Generate PDB descriptionEXEC DBMS_PDB.DESCRIBE( pdb_descr_file => '/tmp/sales_ncdb.xml');
-- Create CDB and plug in PDBCREATE PLUGGABLE DATABASE sales_pdbUSING '/tmp/sales_ncdb.xml'COPY;
Migration Best Practices
Section titled “Migration Best Practices”-- Pre-migration validationSELECT * FROM PDB_PLUG_IN_VIOLATIONSWHERE pdb_name = 'SALES_PDB' AND status != 'RESOLVED';
-- Post-migration cleanupALTER PLUGGABLE DATABASE sales_pdb OPEN;ALTER SESSION SET CONTAINER = sales_pdb;@$ORACLE_HOME/rdbms/admin/noncdb_to_pdb.sql
Consolidation Planning
Section titled “Consolidation Planning”Resource Assessment
Section titled “Resource Assessment”-- Current resource usage analysisSELECT instance_name, ROUND(SUM(bytes)/1024/1024/1024,2) gb_allocated, COUNT(*) datafilesFROM v$datafile df, v$instanceGROUP BY instance_name;
-- Memory requirements estimationSELECT 'SGA_TARGET' parameter, ROUND(SUM(value)/1024/1024/1024,2) gb_requiredFROM v$parameterWHERE name = 'sga_target'UNION ALLSELECT 'PGA_TARGET', ROUND(SUM(value)/1024/1024/1024,2)FROM v$parameterWHERE name = 'pga_aggregate_target';
Best Practices
Section titled “Best Practices”Multitenant Architecture Design
Section titled “Multitenant Architecture Design”-
CDB Planning
- Size CDB appropriately for all planned PDBs
- Plan for common services and schemas
- Configure resource management at CDB level
- Implement proper backup strategy for all containers
-
PDB Design
- Use consistent naming conventions
- Plan resource allocation per PDB
- Implement PDB-specific monitoring
- Design for easy cloning and migration
-
Security Architecture
- Implement common users vs local users strategy
- Use lockdown profiles for PDB restrictions
- Configure proper privilege separation
- Enable unified auditing across containers
Traditional Architecture Design
Section titled “Traditional Architecture Design”-
Instance Configuration
- Size SGA appropriately for workload
- Configure multiple redo log groups with multiple members
- Separate data, index, and temp tablespaces
- Use ASM for storage management when possible
-
Performance Optimization
- Monitor wait events regularly
- Tune SQL statements and execution plans
- Manage statistics effectively
- Configure memory parameters based on workload
- Use partitioning for large tables
-
High Availability
- Implement RAC for scalability and availability
- Configure Data Guard for disaster recovery
- Plan for rolling upgrades and maintenance
- Test failover procedures regularly
Cloud and Modern Deployments
Section titled “Cloud and Modern Deployments”-
Container Integration
- Design PDBs for container deployment
- Implement proper persistent storage
- Plan for dynamic scaling
- Use service discovery mechanisms
-
Microservices Alignment
- One PDB per microservice domain
- Implement proper inter-service communication
- Plan for independent deployments
- Monitor resource usage per service
-
DevOps Integration
- Automate PDB provisioning
- Implement infrastructure as code
- Use CI/CD for database changes
- Monitor across all environments
Architecture Decision Framework
Section titled “Architecture Decision Framework”Choosing Architecture Type
Section titled “Choosing Architecture Type”Multitenant vs Traditional
Section titled “Multitenant vs Traditional”Use Multitenant (CDB/PDB) when:✓ Multiple applications need isolation✓ Development/test environment proliferation✓ Cloud or container deployment planned✓ Need rapid provisioning/cloning✓ Consolidation is a priority✓ Oracle 12c+ is available
Use Traditional when:✓ Single application environment✓ Maximum performance is critical✓ Simple administration preferred✓ Older Oracle versions required✓ Existing architecture works well
RAC vs Single Instance
Section titled “RAC vs Single Instance”Use RAC when:✓ High availability is critical✓ Scalability beyond single server needed✓ Rolling maintenance windows required✓ Load balancing across nodes needed✓ Budget allows for additional complexity
Use Single Instance when:✓ Cost optimization is priority✓ Simpler administration preferred✓ Single server can handle workload✓ High availability via Data Guard sufficient
Future Architecture Trends
Section titled “Future Architecture Trends”Oracle Autonomous Database
Section titled “Oracle Autonomous Database”- Self-driving - Automatic performance tuning
- Self-securing - Automated security features
- Self-repairing - Automatic failure recovery
- Built on multitenant - Leverages CDB/PDB architecture
Kubernetes and Containers
Section titled “Kubernetes and Containers”- Oracle Database Operator - Kubernetes native deployment
- PDB as microservice - Perfect alignment with container philosophy
- Dynamic scaling - Automatic resource adjustment
- Service mesh integration - Advanced networking and security
Machine Learning Integration
Section titled “Machine Learning Integration”- Automatic indexing - ML-driven index recommendations
- Automatic SQL tuning - AI-powered optimization
- Predictive scaling - ML-based capacity planning
- Anomaly detection - AI-powered monitoring
This comprehensive architecture guide provides the foundation for understanding Oracle’s evolution from traditional single-tenant databases to modern multitenant, cloud-ready architectures that support contemporary application development patterns.