Sunday, 24 May 2026

Can We Create a New Tablespace in Oracle Autonomous Database?

One of the most common questions Oracle DBAs ask when working with Oracle Autonomous Database is:

“Can I manually create a new tablespace like we do in traditional Oracle databases?”

The short answer is:

No — Oracle Autonomous Database does not allow users to manually create tablespaces.

In this blog, we will understand:

  • Why CREATE TABLESPACE fails in Autonomous Database
  • What ORA-01031 means
  • How storage works internally in Autonomous Database
  • How much free space is available
  • How Oracle manages tablespaces automatically
  • Best practices for storage management in Autonomous Database

The Attempt to Create a Tablespace

Let us try creating a custom tablespace:

SQL> create tablespace test_tbs datafile '+DATA' size 10g;

Output:

Error starting at line : 1 in command -
create tablespace test_tbs datafile '+DATA' size 10g

Error report -
ORA-01031: insufficient privileges

Understanding ORA-01031

The ORA-01031 error means:

ORA-01031: insufficient privileges

This indicates that the current user does not have permission to perform the requested operation.

In traditional on-premises Oracle databases, a DBA user with proper privileges can:

  • Create tablespaces
  • Add datafiles
  • Manage ASM disks
  • Resize storage
  • Create bigfile tablespaces

However, Oracle Autonomous Database is a fully managed cloud service.

Oracle intentionally restricts administrative operations to maintain:

  • Cloud automation
  • Self-healing infrastructure
  • Security isolation
  • Automatic scaling
  • Storage optimization

Why CREATE TABLESPACE is Restricted in Autonomous Database

In Autonomous Database:

  • Oracle manages storage internally
  • ASM is hidden from customers
  • Datafiles are managed automatically
  • Tablespaces are pre-created and optimized
  • Storage scaling is handled by Oracle Cloud

That is why this command fails:

create tablespace test_tbs datafile '+DATA' size 10g;

The +DATA disk group belongs to Oracle-managed ASM infrastructure and is not directly accessible to users.


Existing Tablespaces in Autonomous Database

Let us inspect the existing tablespaces:

SQL> select name from v$tablespace;

Output:

NAME
---------------
SYSTEM
SYSAUX
UNDO_21871
DATA
DBFS_DATA
TEMP
SAMPLESCHEMA
UNDO_4F8D9

These are Oracle-managed tablespaces automatically provisioned by the Autonomous service.


Understanding Important Tablespaces

Tablespace Purpose
SYSTEM Core Oracle data dictionary
SYSAUX Auxiliary system components
UNDO_* Undo management
TEMP Temporary operations and sorting
DATA Main user/application data
DBFS_DATA Database File System storage
SAMPLESCHEMA Sample/demo schemas

How Much Free Space is Available?

Now let us check the available space inside the Autonomous Database.

SELECT
    df.tablespace_name AS "Tablespace",
    total_mb AS "Total MB",
    (total_mb - free_mb) AS "Used MB",
    free_mb AS "Free MB",
    ROUND((free_mb / total_mb) * 100, 2) AS "% Free"
FROM
    (SELECT tablespace_name,
            ROUND(SUM(bytes) / 1048576) AS total_mb
     FROM dba_data_files
     GROUP BY tablespace_name) df
LEFT JOIN
    (SELECT tablespace_name,
            ROUND(SUM(bytes) / 1048576) AS free_mb
     FROM dba_free_space
     GROUP BY tablespace_name) fs
ON df.tablespace_name = fs.tablespace_name;

Tablespace Space Usage Output

Tablespace         Total MB    Used MB    Free MB    % Free
--------------- ----------- ---------- ---------- ---------
SYSTEM                 1311       1302          9      0.69
SYSAUX                 3340       2855        485     14.52
DATA                   1124        255        869     77.31
DBFS_DATA               100          8         92        92
UNDO_21871             1024        665        359     35.06
UNDO_4F8D9              100          2         98        98
SAMPLESCHEMA         204800

Analyzing the Free Space

1. DATA Tablespace

The most important user tablespace is:

DATA

It currently has:

  • Total Size: 1124 MB
  • Used Space: 255 MB
  • Free Space: 869 MB
  • Free Percentage: 77.31%

This means your Autonomous Database still has significant free space available for application objects such as:

  • Tables
  • Indexes
  • Partitions
  • LOBs
  • Materialized views

2. SYSTEM Tablespace

SYSTEM tablespace is nearly full:

SYSTEM  →  0.69% free

But this is completely managed by Oracle internally.

Customers should never attempt to modify SYSTEM or SYSAUX tablespaces in Autonomous Database.


3. SAMPLESCHEMA Tablespace

Interestingly:

SAMPLESCHEMA = 204800 MB

This large allocation is internally managed and may represent cloud-managed storage allocation rather than actual physical consumption.


Where Should Users Store Data?

In Autonomous Database, Oracle expects users to store application data primarily inside:

DATA tablespace

Example:

CREATE TABLE employees (
    emp_id NUMBER,
    emp_name VARCHAR2(100)
);

By default, user objects are created in the DATA tablespace.


How Storage Works in Autonomous Database

Unlike traditional databases, storage in Autonomous Database is abstracted from the user.

Oracle Automatically Handles:

  • Datafile creation
  • ASM management
  • Disk redundancy
  • Autoextend operations
  • Storage balancing
  • Compression optimization
  • Encryption
  • Scaling

This is one of the biggest advantages of Autonomous Database.


Can We Increase Storage?

Yes.

Although users cannot manually create tablespaces, they can:

  • Increase database storage from OCI Console
  • Enable auto scaling
  • Scale CPU and storage independently

Oracle automatically adjusts underlying storage allocation.


Traditional Oracle vs Autonomous Database

Feature Traditional Oracle DB Autonomous Database
Create Tablespace Allowed Restricted
Manage ASM Allowed Hidden
Add Datafiles Manual Automatic
Storage Scaling Manual Automatic
Tuning Storage DBA Managed Oracle Managed
Autoextend Manual Configuration Managed by Oracle

Best Practices

  • Use the default DATA tablespace for user objects
  • Do not attempt ASM operations
  • Avoid modifying SYSTEM/SYSAUX
  • Monitor free space periodically
  • Use OCI Console for scaling storage
  • Leverage Autonomous auto scaling features

Key Takeaways

  • Oracle Autonomous Database does not allow manual tablespace creation
  • CREATE TABLESPACE fails with ORA-01031
  • Storage management is fully automated by Oracle
  • Users primarily use the DATA tablespace
  • Your DATA tablespace currently has 869 MB free space
  • Autonomous Database abstracts low-level storage administration

Conclusion

Oracle Autonomous Database fundamentally changes how DBAs manage storage.

Instead of manually creating tablespaces, datafiles, and ASM disk groups, Oracle handles everything automatically behind the scenes.

The ORA-01031 error while creating a tablespace is expected behavior and is part of the Autonomous architecture design.

The good news is that users still have sufficient storage available inside the DATA tablespace, and Oracle automatically manages scaling, optimization, and storage allocation for the database.

This allows DBAs and developers to focus more on:

  • Application development
  • SQL optimization
  • Analytics
  • Security
  • Business logic

rather than worrying about low-level storage administration.

Understanding How DNS Works in Oracle Database@AWS

As organizations adopt multi-cloud architectures, Oracle Database@AWS provides a powerful solution that combines Oracle Exadata database services with native AWS infrastructure and networking. One of the most important but often overlooked components behind this integration is DNS (Domain Name System).

DNS plays a critical role in enabling connectivity between Oracle-managed infrastructure, AWS VPCs, Oracle Database services, application servers, private endpoints, and OCI child sites used internally by Oracle Database@AWS.

In this article, we will explore:

  • What DNS is
  • How DNS works in Oracle Database@AWS
  • Private Hosted Zones and Route 53 integration
  • DNS resolution flow between AWS and Oracle infrastructure
  • Hybrid DNS scenarios
  • Common architecture patterns
  • Best practices and troubleshooting tips

What is DNS?

DNS (Domain Name System) converts human-readable names into IP addresses.

For example:

database.prod.example.com  →  10.0.10.25

Instead of applications connecting directly to IP addresses, they use DNS names. DNS then resolves those names into reachable network endpoints.

Inside Oracle Database@AWS, DNS becomes extremely important because:

  • Oracle databases run inside Oracle-managed infrastructure integrated with AWS
  • Applications run inside AWS VPCs
  • Private connectivity is used instead of public internet
  • Multiple DNS zones exist across OCI and AWS
  • Exadata infrastructure relies on internal service discovery

Oracle Database@AWS Networking Overview

Oracle Database@AWS introduces a tightly integrated architecture between:

  • AWS VPCs
  • Oracle-managed OCI child sites
  • Private networking
  • Cross-cloud DNS resolution

The architecture generally looks like this:

+------------------------------------------------------+
|                     AWS Region                       |
|                                                      |
|  +---------------- AWS Customer VPC ----------------+|
|  |                                                  ||
|  |  EC2 / EKS / Applications                        ||
|  |          |                                       ||
|  |          | DNS Query                             ||
|  |          v                                       ||
|  |     Route 53 Resolver                            ||
|  |          |                                       ||
|  +----------|---------------------------------------+|
|             |                                        |
|             | ODB Network Integration                |
|             v                                        |
|  +-----------------------------------------------+   |
|  | Oracle Database@AWS OCI Child Site           |   |
|  |                                               |   |
|  | Exadata Infrastructure                        |   |
|  | Autonomous Database                           |   |
|  | Oracle DNS Services                           |   |
|  +-----------------------------------------------+   |
|                                                      |
+------------------------------------------------------+

How DNS Resolution Works in Oracle Database@AWS

DNS resolution in Oracle Database@AWS is designed to allow seamless private communication between AWS resources and Oracle database infrastructure.

The process generally works as follows:

  1. An application inside an AWS VPC tries to connect to an Oracle database hostname.
  2. The request goes to Amazon Route 53 Resolver.
  3. Route 53 checks whether the domain belongs to:
    • AWS private hosted zones
    • Oracle-managed DNS zones
    • External enterprise DNS servers
  4. If the domain belongs to Oracle Database@AWS, the request is forwarded through DNS forwarding rules.
  5. The Oracle-managed DNS infrastructure resolves the database endpoint.
  6. The private IP address is returned back to the application.
  7. The application establishes connectivity over private networking.

Private DNS Zones in Oracle Database@AWS

Oracle Database@AWS heavily relies on private DNS zones.

These private zones ensure:

  • Database endpoints are not publicly exposed
  • Applications use internal routing
  • Traffic remains inside AWS and Oracle private backbone networks
  • Compliance and security requirements are maintained

Example private DNS entries:

adb1.private.odb.oraclecloud.com
exa-cluster1.internal.oraclecloud.com
scan1.prod.odb.local

These records are only resolvable from authorized VPCs and connected networks.


Role of Amazon Route 53 Resolver

Amazon Route 53 Resolver is the central DNS component on the AWS side.

It performs:

  • Inbound DNS resolution
  • Outbound DNS forwarding
  • Conditional forwarding rules
  • Hybrid DNS integration
  • Cross-cloud name resolution

Route 53 forwarding rules allow AWS workloads to resolve Oracle-managed domains.

Example:

Domain:
oraclecloud.internal

Forward queries to:
Oracle DNS Forwarder IPs

DNS Flow Example

Let us understand this using a real-world application flow.

Scenario

  • An EC2 application server runs inside AWS
  • An Oracle Exadata database runs inside Oracle Database@AWS
  • The application connects using SCAN listeners

DNS Query Flow

Application Server
       |
       | Query:
       | exadb-scan1.prod.internal
       v
Amazon Route 53 Resolver
       |
       | Forward Rule
       v
Oracle DNS Resolver
       |
       | Resolve SCAN IPs
       v
Private Exadata SCAN Addresses
       |
       v
Database Connection Established

SCAN Listeners and DNS

Oracle RAC and Exadata environments use SCAN (Single Client Access Name).

SCAN simplifies database connectivity by providing:

  • Load balancing
  • Failover support
  • Cluster abstraction
  • Simplified client connection strings

Example:

myexadb-scan.company.internal

DNS resolves this SCAN name into multiple IP addresses:

10.0.1.10
10.0.1.11
10.0.1.12

Oracle clients automatically use these addresses for high availability.


DNS and OCI Child Sites

Oracle Database@AWS deploys Oracle-managed infrastructure inside OCI child sites colocated near AWS regions.

These OCI child sites contain:

  • Exadata infrastructure
  • Oracle networking components
  • Internal DNS systems
  • Database management services

DNS integration ensures AWS applications can seamlessly discover Oracle resources hosted inside these OCI child environments.


Hybrid DNS Architectures

Many enterprises already have on-premises DNS infrastructure.

Oracle Database@AWS supports hybrid architectures using:

  • AWS Route 53 Resolver endpoints
  • Conditional forwarding
  • Corporate DNS servers
  • VPN or Direct Connect integration

Example Hybrid Architecture

On-Prem DNS
      |
      | VPN / Direct Connect
      v
AWS Route 53 Resolver
      |
      v
Oracle DNS Infrastructure
      |
      v
Oracle Database@AWS

Security Benefits of DNS Design

The DNS architecture in Oracle Database@AWS improves security significantly.

1. Private Resolution Only

Database hostnames are resolved privately and never exposed publicly.

2. Reduced Attack Surface

Applications communicate entirely over private connectivity.

3. Controlled DNS Forwarding

Only approved domains are forwarded between AWS and Oracle infrastructure.

4. Centralized Governance

Organizations can maintain enterprise-wide DNS governance policies.


Common DNS Components in Oracle Database@AWS

Component Purpose
Amazon Route 53 Resolver AWS-side DNS resolution and forwarding
Private Hosted Zones Private DNS records inside AWS VPCs
Oracle DNS Services Resolve Oracle-managed infrastructure names
Conditional Forwarders Route queries to specific DNS servers
SCAN DNS Records Oracle RAC high availability endpoints
Resolver Endpoints Hybrid DNS integration

Typical DNS Configuration Steps

When configuring Oracle Database@AWS networking, administrators typically:

  1. Create AWS VPC networking
  2. Configure Route 53 Resolver rules
  3. Create outbound resolver endpoints
  4. Define Oracle domain forwarding rules
  5. Associate rules with VPCs
  6. Validate database hostname resolution
  7. Test private connectivity

DNS Troubleshooting Tips

1. Verify DNS Resolution

nslookup mydb.internal.oraclecloud.com

2. Validate Route 53 Rules

Ensure forwarding rules exist for Oracle domains.

3. Check Security Groups

DNS traffic uses port 53.

4. Validate Connectivity

telnet database-host 1521

5. Verify VPC Associations

Ensure Route 53 rules are associated with correct VPCs.


Best Practices

  • Use private DNS whenever possible
  • Implement least-privilege DNS forwarding
  • Separate production and non-production zones
  • Use SCAN listeners for RAC databases
  • Monitor Route 53 query logs
  • Document DNS dependencies carefully
  • Use hybrid DNS only when required

Why DNS Matters in Oracle Database@AWS

DNS is not just a name-resolution service in Oracle Database@AWS — it is a foundational networking layer enabling:

  • Cross-cloud communication
  • Private connectivity
  • High availability
  • Service discovery
  • Database failover
  • Hybrid enterprise integration

Without properly configured DNS, applications may fail to discover database endpoints, RAC clusters may not function correctly, and hybrid networking architectures may break entirely.


Conclusion

Oracle Database@AWS introduces a sophisticated DNS architecture that bridges AWS networking with Oracle-managed database infrastructure.

Using Route 53 Resolver, private hosted zones, Oracle DNS services, and conditional forwarding, organizations can build secure, scalable, and highly available multi-cloud database environments.

As enterprises continue adopting Oracle Database@AWS for mission-critical workloads, understanding DNS resolution flows becomes essential for architects, DBAs, cloud engineers, and networking teams.

A properly designed DNS architecture ensures:

  • Reliable database connectivity
  • Secure private communication
  • High availability for RAC databases
  • Smooth hybrid cloud integration
  • Operational simplicity

DNS may operate silently in the background, but in Oracle Database@AWS, it is one of the most critical building blocks of the entire platform.

How to Prepare for Exam 1Z0-1146: Oracle Database@AWS Architect Professional

The Oracle Database@AWS Architect Professional (1Z0-1146) certification is designed for cloud architects, database administrators, cloud engineers, and consultants who want to validate their expertise in deploying and managing Oracle databases on AWS infrastructure using Oracle’s integrated multicloud solution.

This certification focuses heavily on:

  • Oracle Database@AWS architecture
  • Multicloud networking
  • Exadata and Autonomous Database provisioning
  • Database migration using ZDM
  • High Availability and Disaster Recovery
  • Security and IAM
  • Monitoring and observability

Exam Objectives and Weightage

Objective Weight
Introduction to Multicloud 5%
Oracle Database@AWS Architecture and Onboarding 20%
Configure Oracle Database@AWS Networking 15%
Provision and Operate Oracle Database@AWS Resources 20%
Migrate Oracle Databases to Oracle Database@AWS 15%
HA and DR with Oracle Database@AWS 10%
Secure Oracle Database@AWS 15%

1. Introduction to Multicloud (5%)

This section introduces the fundamentals of multicloud architectures and why enterprises are adopting Oracle Database@AWS.

Topics to Study

  • What is multicloud?
  • Benefits of multicloud architecture
  • Oracle and AWS integration advantages
  • Latency reduction strategies
  • Cross-cloud application connectivity
  • Compliance and data residency

Important Use Cases

  • AWS applications connecting to Oracle databases
  • Hybrid analytics environments
  • Disaster recovery across clouds
  • Enterprise application modernization
Preparation Tip:
Focus on understanding why organizations choose Oracle Database@AWS instead of traditional hybrid cloud approaches.

2. Oracle Database@AWS Architecture and Onboarding (20%)

This is one of the most important sections in the exam and forms the foundation for understanding the complete Oracle Database@AWS ecosystem.

Architecture Topics to Master

  • Oracle Database@AWS architecture overview
  • OCI region extension into AWS
  • Oracle-managed infrastructure
  • Dedicated OCI-AWS connectivity
  • Control plane and data plane understanding

AWS Components to Learn

  • VPC
  • Subnets
  • Route Tables
  • Security Groups
  • Transit Gateway
  • AWS IAM

OCI Components to Learn

  • ODB Network
  • ODB Peering
  • VCN
  • DRG
  • OCI IAM
  • Compartments

Oracle Database Services

  • Oracle Exadata Database Service
  • Autonomous Database
  • Exadata VM Clusters
  • Autonomous VM Clusters

Onboarding Preparation

  • OCI tenancy requirements
  • AWS account preparation
  • IAM permissions
  • Region compatibility
  • Procurement workflow
  • Subscription understanding
Important:
Many candidates ignore procurement and onboarding workflow concepts. Oracle may include scenario-based questions around subscription, tenancy, and account setup.

3. Configure Oracle Database@AWS Networking (15%)

Networking is one of the most critical areas of the certification exam.

Focus Areas

  • ODB Network architecture
  • Supported network topologies
  • Private connectivity design
  • DNS integration
  • Traffic routing
  • Security isolation

Networking Concepts to Practice

AWS Networking

  • VPC routing
  • Security Groups
  • NACLs
  • Transit Gateway
  • Route propagation

OCI Networking

  • VCNs
  • DRGs
  • NSGs
  • Security Lists
  • Route Tables

DNS Topics

  • Route 53
  • OCI DNS
  • Private DNS Zones
  • Hostname resolution
Preparation Tip:
Spend extra time understanding routing flow between OCI and AWS because networking-based scenario questions are very common in architect-level certifications.

4. Provision and Operate Oracle Database@AWS Resources (20%)

This section focuses on practical deployment and operational workflows.

Learn These Provisioning Tasks

  • Create ODB Network
  • Create ODB Peering Connection
  • Provision Exadata Infrastructure
  • Create Exadata VM Clusters
  • Create Autonomous VM Clusters
  • Create Exadata Databases
  • Create Autonomous Databases

Operational Topics

  • Backup and restore
  • Maintenance windows
  • Database scaling
  • Monitoring and alerts
  • Observability architecture

Monitoring Services

  • OCI Monitoring
  • OCI Logging
  • OCI Events
  • AWS CloudWatch integration

5. Migrate Oracle Databases to Oracle Database@AWS (15%)

Migration is another important domain in this certification.

Oracle Zero Downtime Migration (ZDM)

You should clearly understand:

  • ZDM architecture
  • Migration prerequisites
  • Supported source databases
  • Physical and logical migrations
  • Online and offline migration workflows

ZDM Migration Workflows

  • Migration to Exadata Database Service
  • Migration to Autonomous Database
  • RMAN-based migrations
  • Data Guard-based migrations
  • Switchover and fallback procedures
Exam Tip:
Understand the sequence of migration steps rather than memorizing commands. Oracle often asks architecture and workflow-based questions.

6. HA and DR with Oracle Database@AWS (10%)

High Availability Topics

  • Oracle RAC architecture
  • Exadata High Availability
  • Fault domains
  • Infrastructure redundancy

Disaster Recovery Topics

  • Oracle Data Guard
  • Cross-region DR
  • Backup-based DR
  • RPO and RTO understanding
  • Failover and switchover

7. Secure Oracle Database@AWS (15%)

IAM Topics

  • OCI IAM
  • AWS IAM
  • Federation
  • Policies and permissions
  • Role-based access control

Data Protection

  • Encryption at rest
  • Encryption in transit
  • OCI Vault
  • Key Management
  • Secrets management

Security Controls

  • Network isolation
  • Security Groups
  • NSGs
  • Audit logging
  • Access control

OCI Well-Architected Framework

  • Security
  • Reliability
  • Performance Efficiency
  • Operational Excellence
  • Cost Optimization

Best Preparation Strategy

1. Focus on Architecture Understanding

Do not memorize blindly. Understand how Oracle Database@AWS actually works internally.

2. Practice Hands-On Labs

  • Create VPCs and VCNs
  • Configure DRGs and Transit Gateways
  • Provision Autonomous Databases
  • Configure ODB Networking
  • Practice ZDM migration flows

3. Learn Networking Deeply

Networking is heavily tested in architect-level certifications.

4. Practice Migration Workflows

Understand migration phases, prerequisites, and fallback strategies carefully.

5. Read Oracle Documentation

The official Oracle documentation is one of the best preparation resources for this exam.


Common Mistakes During Preparation

  • Ignoring networking concepts
  • Skipping IAM and security topics
  • Memorizing without understanding architecture
  • Not practicing migration workflows
  • Ignoring backup and DR concepts

Final Week Preparation Tips

  • Revise ODB Network architecture
  • Review OCI vs AWS networking components
  • Study ZDM workflows carefully
  • Review IAM policies
  • Understand DR architecture
  • Practice provisioning steps

Final Thoughts

The Oracle Database@AWS Architect Professional (1Z0-1146) certification is an excellent credential for professionals working in enterprise cloud modernization and multicloud database architectures.

Success in this certification comes from combining:

  • OCI knowledge
  • AWS networking expertise
  • Oracle database administration skills
  • Migration experience
  • Security and DR understanding

If you spend time understanding Oracle Database@AWS architecture deeply and practice hands-on deployments, this certification becomes highly achievable.

Happy Learning and Best of Luck for Exam 1Z0-1146! ๐Ÿš€

Thursday, 21 May 2026

Exploring what is available in Oracle Autonomous Database resource

Oracle Autonomous Database comes with a highly optimized and secure architecture managed automatically by Oracle. While most administration tasks are automated, DBAs and developers can still explore several internal database views to better understand the environment.

In this blog, we will explore:

  • Default users available in Autonomous Database
  • Locked vs Open accounts
  • Available tablespaces
  • SGA and PGA memory configuration
  • What these components mean internally

Checking Database Users

One of the first things many Oracle professionals explore is the DBA_USERS view.

SELECT username, account_status
FROM dba_users;

Output

USERNAME                  ACCOUNT_STATUS
_________________________ _________________
APEX_PUBLIC_ROUTER        OPEN
ORDS_PLSQL_GATEWAY        OPEN
ORDS_PUBLIC_USER          OPEN
ODI_REPO_USER             OPEN
C##DATA$SHARE             OPEN
SYSRAC                    OPEN
SCOTT                     OPEN
ADMIN                     OPEN
ODI$PROXY                 OPEN
GRAPH$PROXY_USER          OPEN
OML$PROXY                 OPEN
RMAN$CATALOG              OPEN
SYSTEM                    LOCKED
XS$NULL                   LOCKED
SYS                       LOCKED
LBACSYS                   LOCKED
OUTLN                     LOCKED
C##CLOUD$SERVICE          LOCKED
DBSNMP                    LOCKED
APPQOSSYS                 LOCKED
VECSYS                    LOCKED
...
56 rows selected.

Understanding OPEN Accounts

Several accounts are marked as OPEN because they are actively used by Autonomous Database services and internal components.

Important OPEN Users

  • ADMIN → Primary administrative user for Autonomous Database
  • SCOTT → Sample schema provided for learning and testing
  • ORDS_PUBLIC_USER → Used by Oracle REST Data Services (ORDS)
  • APEX_PUBLIC_ROUTER → Supports Oracle APEX routing
  • GRAPH$PROXY_USER → Used for graph analytics functionality
  • OML$PROXY → Oracle Machine Learning integration
  • RMAN$CATALOG → Recovery Manager metadata operations

These users support Autonomous Database features such as:

  • Oracle APEX
  • REST APIs
  • Machine Learning
  • Graph processing
  • Data sharing
  • Backup automation

Why SYS and SYSTEM are LOCKED

One interesting observation in Autonomous Database is:

  • SYS is LOCKED
  • SYSTEM is LOCKED

This is intentional and part of Oracle Autonomous Database security architecture.

In Autonomous Database:

  • Oracle manages the infrastructure
  • Direct SYS access is restricted
  • Patch management is automated
  • Security hardening is enforced automatically
  • Users operate primarily using the ADMIN account

This reduces operational risk and prevents accidental modifications to critical internal components.


Interesting Internal Users

Oracle APEX Related

  • APEX_240200
  • FLOWS_FILES
  • APEX_PUBLIC_ROUTER

These support Oracle APEX runtime and metadata management.

Security Related Users

  • DVSYS
  • DVF
  • LBACSYS
  • AUDSYS

These accounts are related to:

  • Database Vault
  • Label Security
  • Auditing
  • Compliance controls

GoldenGate Related Users

  • GGSYS
  • GGADMIN
  • GGSHAREDCAP

These users support Oracle GoldenGate replication services.

Machine Learning and AI

  • OML$PROXY
  • PYQSYS
  • VECSYS

These accounts are associated with:

  • Oracle Machine Learning
  • Python execution
  • AI Vector Search capabilities

Exploring Tablespaces

Next, let us check available tablespaces.

SELECT name
FROM v$tablespace;

Output

NAME
_______________
SYSTEM
SYSAUX
UNDO_21871
DATA
DBFS_DATA
TEMP
SAMPLESCHEMA
UNDO_4F8D9

Understanding Tablespaces

Tablespace Purpose
SYSTEM Core Oracle data dictionary
SYSAUX Auxiliary database components
TEMP Temporary operations and sorting
DATA Primary user data storage
DBFS_DATA Database File System storage
SAMPLESCHEMA Sample schemas and demo objects
UNDO_* Undo management for transactions

Checking SGA Memory

The System Global Area (SGA) represents shared memory structures used by Oracle Database.

SHOW PARAMETER sga

Output

NAME         TYPE        VALUE
------------ ----------- -------
sga_max_size big integer 219008M
sga_min_size big integer 0
sga_target   big integer 3400M

Understanding SGA Parameters

  • sga_target → Current target memory allocation
  • sga_max_size → Maximum possible SGA allocation
  • sga_min_size → Minimum guaranteed SGA

Oracle Autonomous Database dynamically manages memory allocation depending on workload and scaling operations.


Checking PGA Memory

The Program Global Area (PGA) contains process-specific memory used for sorting, hashing, and query execution.

SHOW PARAMETER pga

Output

NAME                 TYPE        VALUE
-------------------- ----------- ------
pga_aggregate_limit  big integer 10200M
pga_aggregate_target big integer 5100M

Understanding PGA Parameters

  • pga_aggregate_target → Target PGA memory allocation
  • pga_aggregate_limit → Maximum PGA memory allowed

PGA is crucial for:

  • Sorting operations
  • Hash joins
  • Parallel execution
  • SQL work areas

Autonomous Database Memory Management

One key advantage of Autonomous Database is automatic memory tuning.

Oracle automatically:

  • Tunes SGA and PGA
  • Optimizes workloads
  • Balances memory usage
  • Improves SQL execution performance
  • Handles scaling internally

This reduces DBA overhead significantly compared to traditional on-premises databases.


Final Thoughts

Exploring internal views inside Oracle Autonomous Database provides valuable insight into how Oracle manages security, memory, services, and infrastructure automatically.

Even though Autonomous Database abstracts much of the administration layer, understanding these components helps DBAs and developers better optimize workloads and understand Oracle's cloud-native architecture.

Features such as:

  • Locked SYS/SYSTEM accounts
  • Automatic memory management
  • Pre-configured internal schemas
  • Integrated AI and Machine Learning users
  • Managed tablespaces

show how Oracle Autonomous Database is designed for automation, security, and enterprise-grade scalability.


Conclusion

Oracle Autonomous Database is far more than just a managed database service. It includes a sophisticated ecosystem of internal schemas, automated services, and intelligent memory management working together behind the scenes.

Understanding these internals can help Oracle professionals better appreciate the architecture powering Autonomous Database in Oracle Cloud Infrastructure (OCI).

Mastering LISTAGG in Oracle Database

Oracle Database provides many powerful SQL aggregation functions, and one of the most useful among them is LISTAGG. It allows developers and DBAs to combine multiple row values into a single concatenated string — making reporting, analytics, and data formatting significantly easier.

In this blog, we will explore:

  • What LISTAGG is
  • Basic syntax
  • Real-world examples
  • Ordering results
  • Grouped aggregation
  • LISTAGG DISTINCT
  • Overflow handling
  • Analytic LISTAGG
  • Best practices

What is LISTAGG?

LISTAGG is an Oracle SQL aggregate function that concatenates values from multiple rows into a single string.

It is commonly used for:

  • Reporting
  • CSV-style output
  • Data summarization
  • Dashboard queries
  • Oracle APEX applications

Basic Syntax

LISTAGG(column_name, delimiter)
WITHIN GROUP (ORDER BY column_name)

Sample EMP Table

SELECT empno, ename, deptno
FROM emp;

Sample Output

EMPNO ENAME      DEPTNO
----- ---------- ------
7369  SMITH      20
7499  ALLEN      30
7521  WARD       30
7566  JONES      20
7654  MARTIN     30

Basic LISTAGG Example

Suppose we want all employee names in a single comma-separated string.

SELECT LISTAGG(ename, ', ')
       WITHIN GROUP (ORDER BY ename) AS employees
FROM emp;

Output

EMPLOYEES
------------------------------------------------
ADAMS, ALLEN, BLAKE, CLARK, FORD, JAMES, JONES

Understanding WITHIN GROUP

The WITHIN GROUP clause controls the ordering of concatenated values.

SELECT LISTAGG(ename, ', ')
       WITHIN GROUP (ORDER BY empno) AS employees
FROM emp;

This orders employee names using EMPNO instead of ENAME.


LISTAGG with GROUP BY

One of the most common use cases is grouped aggregation.

Example: Department-wise employee list

SELECT deptno,
       LISTAGG(ename, ', ')
       WITHIN GROUP (ORDER BY ename) AS employees
FROM emp
GROUP BY deptno
ORDER BY deptno;

Output

DEPTNO EMPLOYEES
------ ---------------------------------------
10     CLARK, KING, MILLER
20     ADAMS, FORD, JONES, SCOTT, SMITH
30     ALLEN, BLAKE, JAMES, MARTIN, TURNER

Using Different Delimiters

You are not limited to commas. You can use custom delimiters as needed.

SELECT LISTAGG(ename, ' | ')
       WITHIN GROUP (ORDER BY ename) AS employees
FROM emp;

Output

ADAMS | ALLEN | BLAKE | CLARK

LISTAGG DISTINCT (Oracle 19c and Later)

Starting from Oracle 19c, LISTAGG supports the DISTINCT keyword to remove duplicate values.

SELECT LISTAGG(DISTINCT job, ', ')
       WITHIN GROUP (ORDER BY job) AS jobs
FROM emp;

Output

ANALYST, CLERK, MANAGER, PRESIDENT, SALESMAN

Handling ORA-01489 Errors

One common issue with older LISTAGG implementations was:

ORA-01489: result of string concatenation is too long

Oracle introduced overflow handling to solve this problem.

SELECT LISTAGG(ename, ', ')
       WITHIN GROUP (ORDER BY ename)
       ON OVERFLOW TRUNCATE '...'
FROM emp;

Possible Output

ADAMS, ALLEN, BLAKE, CLARK...

LISTAGG with COUNT Information

You can also display the count of truncated values.

SELECT LISTAGG(ename, ', ')
       WITHIN GROUP (ORDER BY ename)
       ON OVERFLOW TRUNCATE '...' WITH COUNT
FROM emp;

Example Output

ADAMS, ALLEN, BLAKE...(5)

LISTAGG as an Analytic Function

LISTAGG can also work as an analytic function using the OVER() clause.

SELECT empno,
       ename,
       deptno,
       LISTAGG(ename, ', ')
       WITHIN GROUP (ORDER BY ename)
       OVER (PARTITION BY deptno) AS dept_employees
FROM emp;

Output

EMPNO ENAME  DEPTNO DEPT_EMPLOYEES
----- ------ ------ --------------------------------
7369  SMITH     20  ADAMS, FORD, JONES, SCOTT, SMITH
7566  JONES     20  ADAMS, FORD, JONES, SCOTT, SMITH

Performance Considerations

  • Use proper ORDER BY columns
  • Avoid extremely large aggregations
  • Use DISTINCT carefully
  • Prefer ON OVERFLOW handling
  • Monitor memory usage for huge datasets

Common Use Cases

  • Reporting applications
  • HR systems
  • Audit reports
  • Oracle APEX dashboards
  • CSV exports
  • Data warehousing
  • Analytics queries

LISTAGG vs XMLAGG

Before LISTAGG enhancements, many developers used XMLAGG for string aggregation.

SELECT RTRIM(
       XMLAGG(
         XMLELEMENT(e, ename || ', ')
       ).EXTRACT('//text()'),
       ', '
)
FROM emp;

Today, LISTAGG is simpler and more readable for most use cases.


Final Thoughts

LISTAGG is one of the most practical SQL functions in Oracle Database. It simplifies row-to-string aggregation and makes SQL reporting significantly more readable and powerful.

With modern enhancements like:

  • DISTINCT support
  • Overflow handling
  • Analytic functionality

LISTAGG has become even more powerful in Oracle Database 19c, 23ai, and 26ai.


Quick Reference Cheat Sheet

Basic Aggregation

LISTAGG(col, ', ')
WITHIN GROUP (ORDER BY col)

Remove Duplicates

LISTAGG(DISTINCT col, ', ')

Overflow Handling

ON OVERFLOW TRUNCATE '...'

Analytic Usage

OVER (PARTITION BY deptno)

Conclusion

If you work with Oracle SQL regularly, LISTAGG is a must-know feature. It helps transform raw relational data into readable business-friendly output with minimal SQL effort.

Start using LISTAGG in your reporting and analytics queries to produce cleaner and smarter results.

Saturday, 16 May 2026

Understanding the “Post-Quantum Key Exchange” SSH Warning in OCI

If you are using SSH to connect to your Oracle Cloud Infrastructure (OCI) instance, you might have recently encountered a warning like this:


๐Ÿ” Real SSH Output

(base) karandodwal@Karans-MacBook-Air ~ % ssh opc@80.225.212.15
** WARNING: connection is not using a post-quantum key exchange algorithm.
** This session may be vulnerable to "store now, decrypt later" attacks.
** The server may need to be upgraded. See https://openssh.com/pq.html
Last login: Sat May 16 17:39:53 2026 from 49.47.70.44
[opc@instance-vm1 ~]$

๐Ÿค” What Does This Warning Mean?

This warning is generated by your SSH client (most likely a newer version of OpenSSH on macOS). It indicates that your connection is:

  • Using traditional cryptographic algorithms
  • Not using post-quantum cryptography (PQC)

Post-quantum cryptography refers to encryption methods designed to remain secure even against future quantum computers.


๐Ÿง  What is “Store Now, Decrypt Later”?

The warning specifically mentions:

"store now, decrypt later"

This is a theoretical attack scenario where:

  • An attacker captures encrypted SSH traffic today
  • Stores it for future use
  • Decrypts it later when quantum computers become powerful enough

๐Ÿ‘‰ Important: This is not a current threat, but a future possibility.


⚠️ Should You Be Concerned?

Short answer: No, not for now.

  • Your SSH session is still secure using modern encryption
  • No practical quantum attacks exist today
  • This warning is proactive and informational

For typical use cases like:

  • OCI Free Tier instances
  • Development environments
  • Learning setups

๐Ÿ‘‰ You can safely ignore this warning.


๐Ÿ’ก Why Are You Seeing This Now?

Newer versions of OpenSSH have started:

  • Highlighting connections that are not quantum-resistant
  • Encouraging adoption of future-proof cryptography

However:

  • Most servers (including many OCI images) do not yet support PQC
  • So the warning appears even though everything is functioning normally

๐Ÿ”ง How to Handle This Warning

Option 1: Ignore It (Recommended)

For most users, especially in non-production environments, no action is required.

Option 2: Update SSH Server

sudo dnf update openssh-server

Then check supported key exchange algorithms:

ssh -Q kex

Look for PQC-related algorithms like:

sntrup761x25519-sha512@openssh.com

Option 3: Suppress the Warning (Client Side)

Edit your SSH config file:

~/.ssh/config

Add:

Host *
    LogLevel ERROR

⚠️ This only hides the warning—it does not improve security.


๐Ÿงพ Key Takeaways

  • This warning comes from modern OpenSSH clients
  • Your connection is still secure by current standards
  • The risk mentioned is future-focused (quantum computing)
  • OCI instances typically do not yet support PQC
  • You can safely ignore or suppress the warning

๐Ÿ”— Learn More


๐Ÿ Conclusion

The post-quantum SSH warning may look alarming at first, but it is simply a forward-looking security notice rather than an immediate threat.

As quantum computing evolves, we can expect cloud providers and SSH implementations to gradually adopt quantum-resistant algorithms. Until then, your current setup remains secure and fully functional.

Understanding FOR LOOP Iterand in PL/SQL

In PL/SQL, the FOR LOOP is one of the most commonly used control structures for iteration. A key concept within this loop is the iterand (also known as the loop index or loop counter). Understanding how the iterand behaves is crucial to avoid runtime errors and write efficient code.


What is a FOR LOOP Iterand?

The iterand in a FOR LOOP is a variable that is:

  • Implicitly declared by Oracle when the loop starts
  • Local to the loop (not accessible outside the loop)
  • Read-only inside the loop

This means:

  • You can read its value
  • You cannot modify its value
  • It ceases to exist after the loop ends

Important Rule

You cannot assign a value to the FOR LOOP iterand inside the loop.

Attempting to do so results in a compilation error because Oracle protects the loop counter from being altered manually.


Example: Attempt to Modify Iterand (Incorrect Usage)

SET SERVEROUTPUT ON;

BEGIN
  FOR i IN 1..3 LOOP
    IF i < 3 THEN
      DBMS_OUTPUT.PUT_LINE(TO_CHAR(i));
    ELSE
      i := 2;  -- ❌ Not allowed
    END IF;
  END LOOP;
END;
/

Output / Error

ERROR at line 6:
ORA-06550: line 6, column 7:
PLS-00363: expression 'I' cannot be used as an assignment target
ORA-06550: line 6, column 7:
PL/SQL: Statement ignored

Why Does This Error Occur?

The error occurs because:

  • The loop variable i is automatically managed by the FOR LOOP
  • Oracle treats it as a constant within each iteration
  • Assigning a value to it violates PL/SQL rules

Specifically:

  • PLS-00363 → You cannot use the iterand as an assignment target
  • ORA-06550 → General compilation error pointing to invalid PL/SQL syntax

Correct Approach

If you need to control or modify values during iteration, use a separate variable instead of modifying the iterand.

BEGIN
  FOR i IN 1..3 LOOP
    DECLARE
      temp NUMBER;
    BEGIN
      temp := i;

      IF temp = 3 THEN
        temp := 2; -- ✅ Allowed
      END IF;

      DBMS_OUTPUT.PUT_LINE(temp);
    END;
  END LOOP;
END;
/

Key Takeaways

  • FOR LOOP iterand is implicitly declared
  • It is read-only inside the loop
  • It is not accessible outside the loop
  • Attempting to modify it results in PLS-00363 error
  • Use a separate variable if modification is needed

Official Documentation

For more details on these errors, refer to Oracle documentation:


Conclusion

The FOR LOOP iterand simplifies iteration in PL/SQL by automatically handling loop control. However, this convenience comes with restrictions — most importantly, the inability to modify the iterand. Understanding this behavior helps prevent common errors and leads to cleaner, more reliable PL/SQL code.