Atikh's DBA blog
  • Home
  • Oracle
  • MySQL
  • MongoDB
  • PostgreSQL
  • Snowflake
  • About Me
  • Contact Us

Oracle 23ai : The all new Hybrid Read-Only for pluggable databases (PDBs)

 Atikh Shaikh     oracle 23ai     No comments   

 

The latest Oracle database version, Oracle 23ai, introduced a new open mode called Hybrid Read-Only for pluggable databases (PDBs). Local users can only connect with read-only access when a PDB is set to this new mode. However, common users are not restricted and can still perform write operations.

Command to convert to this mode

SQL> ALTER PLUGGABLE DATABASE TECHNOPDB OPEN HYBRID READ ONLY;
Pluggable database altered.

SQL> show pdbs;
    CON_ID CON_NAME                       OPEN MODE  RESTRICTED
---------- ------------------------------ ---------- ----------
         2 PDB$SEED                       READ ONLY  NO
         3 TECHNOPDB                      READ WRITE NO

Testing Write Access with common user - SYS

Now, we connect to TECHNOPDB as the SYS user and test write operations:

sqlplus "sys/sys@target:1521/TECHNOPDB as sysdba"

SQL> show user;
USER is "SYS"

SQL> select OPEN_MODE from v$pdbs;
OPEN_MODE
----------
READ WRITE

SQL> create table tech_user.test_tab(id number);
Table created.

As we can see, the SYS user sees the OPEN_MODE as READ WRITE, even though the PDB was opened in HYBRID READ ONLY mode.

Testing Write Access as any Local User

Now, let us repeat the test with a local user named VAHID:

sqlplus "tech_local/test123@target:1521/TECHNOPDB"

SQL> show user;
USER is "tech_local"

SQL> select OPEN_MODE from v$pdbs;
OPEN_MODE
----------
READ ONLY


SQL> create table tech_user.test_tab(id number);
ORA-16000: Attempting to modify database or pluggable database that is open for read-only access.

As expected, the local user (TECH_LOCAL) is not allowed to perform write operations.

Checking Hybrid Read-Only Mode Status

The view V$CONTAINER_TOPOLOGY can help to check the HYBRID READ ONLY mode:

SQL> select IS_HYBRID_READ_ONLY, CON_NAME, OPEN_MODE from V$CONTAINER_TOPOLOGY;

IS_HYBRID_READ_ONLY  CON_NAME   OPEN_MODE
-------------------- ---------- ----------
YES                  ORCLORPDB  READ WRITE

 

Read More
  • Share This:  
  •  Facebook
  •  Twitter
  •  Instagram
  •  Pin
  •  linkedin
  •  reddit

Oracle Dataguard Broker Configuration (DGMGRL)

 Atikh Shaikh     dataguard, oracle     No comments   

Data Guard Broker is a command-line interface that makes managing primary and standby databases easy. DBA can use a single command to switch from primary and standby and vice versa.

Several pre-defined commands can be used to manage Data Guard. Data guard configuration is one of the steps in the primary and standby database setup.

 

The steps below will describe the configuration and other uses

 

Step 1: Add the configuration file to both the databases (primary/standby)

 

Configuration files save the status of the primary and standby database

 

SQL> show parameter DG_BROKER_START

 

NAME                                 TYPE        VALUE

----------------------------------- ----------- --------------------

dg_broker_start                      boolean     TRUE

 

SQL> ALTER SYSTEM SET DG_BROKER_START=FALSE;

 

System altered.

 

SQL> alter system set dg_broker_config_file1='/u01/oracle/prim_db/dguard/dg1_prim_db.cfg' scope=both;

 

System altered.

 

SQL> alter system set dg_broker_config_file2='/u01/oracle/prim_db/dguard/dg2_prim_db.cfg' scope=both;

 

System altered.

 

Perform similar steps on the Standby side as well

 

Oracle dataguard Broker

Step 2: Set up of DG_BROKER_START parameter on the primary and standby databases

 

SQL> ALTER SYSTEM SET DG_BROKER_START=TRUE SCOPE=BOTH;

 

System altered.

 

SQL> show parameter DG_BROKER_START

 

NAME                                 TYPE        VALUE

---------------------------------- ----------- --------------------

dg_broker_start                      boolean     TRUE

 

Step 3: Set up local listener parameters on the primary and the standby.

 

Primary-> alter system set local_listener='(ADDRESS = (PROTOCOL = TCP)(HOST =prim_server.pfizer.com)(PORT = 1522))' scope=both;

 

Standby-> alter system set local_listener='(ADDRESS = (PROTOCOL = TCP)(HOST =standby_server.pfizer.com)(PORT = 1522))' scope=both;

 

Step 4: DGMGRL configuration

 

Connect to primary db through dgmgrl

 

prim_server.pfizer.com-prim_db $ dgmgrl /

DGMGRL for Linux: Release 19.20.0.0.0 - Production on Wed Apr 09 04:52:13 2025

 

Copyright (c) 1982, 2023, Oracle and/or its affiliates.  All rights reserved.

 

Welcome to DGMGRL, type "help" for information.

Connected to "prim_db"

Connected as SYSDG.

DGMGRL> create configuration prim_db_conf as Primary Database is 'prim_db' connect identifier is prim_db.pfizer.com;

Configuration "prim_db_conf" created with primary database "prim_db"

DGMGRL>

DGMGRL> ADD DATABASE 'standby_db' AS CONNECT IDENTIFIER IS standby_db.pfizer.com MAINTAINED AS PHYSICAL;

Database "standby_db" added

DGMGRL>

DGMGRL> enable configuration;

Enabled.

DGMGRL> show configuration;

 

Configuration - prim_db_conf

 

  Protection Mode: MaxPerformance

  Members:

  prim_db - Primary database

  standby_db - Physical standby database

 

Fast-Start Failover: DISABLED

 

Configuration Status:

SUCCESS   (status updated 4 seconds ago)

 

Output should be SUCCESS; if not, we need to rectify the issues.

 

 

Step 5:  Monitor and manage and Data Guard Broker configuration

 

Check configuration status:

DGMGRL> show configuration;

 

Check configuration details of each database

DGMGRL> show database 'prim_db';

DGMGRL> show database 'standby_db';

 

Enable or Disable configuration for individual database

DGMGRL> enable database 'prim_db';

DGMGRL> disable database 'standby_db';

 

Useful Commands in DGMGRL

 

CREATE CONFIGURATION

ADD DATABASE

EDIT DATABASE

SHOW DATABASE

ENABLE CONFIGURATION

SWITCHOVER TO

FAILOVER TO

Read More
  • Share This:  
  •  Facebook
  •  Twitter
  •  Instagram
  •  Pin
  •  linkedin
  •  reddit

Oracle 23ai : Use of NOVALIDATE Constraints in IMPDP

 Atikh Shaikh     impdp, oracle 23ai     No comments   

While performing impdp operations in the Oracle database, Oracle performs validation checks for every constraint on the imported table, that can cause a significant delay in importing data. All new Oracle 23ai, introduces new feature called NOVALIDATE CONSTRAINTS In this article, we’ll cover its functionality, benefits, practical usage, and the scenarios where `NOVALIDATE` can be used.

The `NOVALIDATE` constraint is a Data Pump Import (IMPDP) parameter used to import table constraints without performing the validation of data against those constraints.

this constraints_novalidate parameter needs to be used along with the transform parameter in the impdp utility,

This option restores constraints in "ENABLED NOT VALIDATED" status. 

 

syntax

TRANSFORM=constraints_novalidate=y

 

This parameter helps to increase speed significantly. This parameter only skips data validation during import, but still applies during normal operations in the database. 

 

Core benefits 

  • Improved Performance
  • Handling Inconsistent Data
  • Flexibility in Migration

 

General syntax of the impdp command with constraints_validate

 

impdp <username>/<password> DIRECTORY=<directory_object> DUMPFILE=<dumpfile_name> LOGFILE=<logfile_name>  TABLES=<table_name> CONSTRAINTS=NOVALIDATE

or 

 

impdp <username>/<password> DIRECTORY=<directory_object> DUMPFILE=<dumpfile_name> LOGFILE=<logfile_name>  TABLES=<table_name> TRANSFORM=constraints_novalidate=y

 

 

This NOVALIDATE is useful in below scenario

  • Large Data Migrations
  • Mismatched Source and Target Data
  • Gradual Data Validation
  • Parallel Data Loads

Risks 

  • Data Integrity Issues
  • Delayed Error Detection
  • Potential Application Failures
  • Manual Cleanup Required

 

This parameter is really useful when we compare things with older versions.

Read More
  • Share This:  
  •  Facebook
  •  Twitter
  •  Instagram
  •  Pin
  •  linkedin
  •  reddit

Data pump (expdp/impdp) troubleshooting in Oracle 23ai

 Atikh Shaikh     oracle 23ai     No comments   

The latest database version, Oracle 23ai, i.e., version 23c with AI features enabled, is powerful and brings a lot of features to view and troubleshoot different parts of the database

Once such an improvement is on the data pump utility and its troubleshooting with all new dynamic performance views

There are a few issues while performing a data pump on large data, such as huge single tables. With lower versions, we need to rely on log files, live monitoring of the data pump job, server performance, and database performance.

With all new 23ai database, the following views are introduced, and those are helpful in troubleshooting

1. V$DATAPUMP_PROCESS_INFO

2. V$DATAPUMP_PROCESSWAIT_INFO

3. V$DATAPUMP_SESSIONWAIT_INFO


These views provide real-time information about the status of Data Pump processes, their wait events, and session-level contentions. GV$ views are used in RAC-enabled environments, while V$ views are used for standalone database instances

Here are the details about each view

V$DATAPUMP_PROCESS_INFO – view shows the current Data Pump processes, including both master and worker processes. It provides basic information like the program name, session ID, username, job name, status, and system process ID. This view is very useful if we use the parallel option while performing the data pump 

V$DATAPUMP_PROCESSWAIT_INFO – This view helps detect contention between Data Pump processes. It shows wait events and blocking sessions. This view provides more information in case the data pump job hangs 

V$DATAPUMP_SESSIONWAIT_INFO – Provides deep insights into session-level waits during Data Pump operations, including how long the session has been in the wait state and what it’s waiting on.

 

Read More
  • Share This:  
  •  Facebook
  •  Twitter
  •  Instagram
  •  Pin
  •  linkedin
  •  reddit

Oracle ASM Scrubbing

 Atikh Shaikh     oracle, Oracle 12c     No comments   

What is ASM Scrubbing?

 

ASM scrubbing is a process used to identify and repair data corruption issues within an ASM disk group. ASM Scrubbing scans the data stored in the disk group and checks for inconsistencies or corruption. The process typically involves reading each data block, comparing it to expected values, and correcting errors by relying on redundancy mechanisms.

 

The Importance of ASM Scrubbing

 

1. Data Integrity

2. Performance Optimization

3. Redundancy Assurance

4. Preventing Data Loss

5. Proactive Health Monitoring

 

How ASM Scrubbing Works

 

ASM scrubbing uses the redundancy features inherent in the ASM system to detect and correct errors.

The process typically works as follows:

 

1. Scanning Data Blocks: ASM scrubbing scans all the data blocks in a disk group, checking for any signs of corruption, such as bit errors or inconsistencies between mirrored copies.

 

2. Verifying Data Integrity: It cross-references each block with its mirror or redundant copy. If a mismatch is found between the blocks, it flags this as a potential error.

 

3. Correcting Errors: If errors are found, ASM attempts to correct them by retrieving data from the redundant copy (if available). For example, in a mirrored setup, if one disk’s data is corrupted, the data from the other disk is used to restore the correct information.

 

4. Logging and Reporting: During the scrubbing process, any identified errors are logged and reported to the system administrators. This allows administrators to monitor and assess the system’s health over time.

 

5. Automated vs. Manual Scrubbing: While ASM scrubbing can be configured to run automatically on a scheduled basis, it can also be manually initiated if needed. This flexibility allows system administrators to choose when to run the scrub, depending on system load and maintenance schedules.

 

Below commands can be used to perform scrubbing

ALTER DISKGROUP Dg_NAME SCURB POWER LOW;

ALTER DISKGROUP Dg_NAME SCURB FILE 'file-name' REPAIR POWER HIGH FORCE;

ALTER DISKGROUP Dg_NAME SCURB DISK Disk-name  REPAIR POWER HIGH FORCE;

 

REPAIR - this option allows automatic repairs disk corruptions; progress can be seen using V$ASM_OPERATION view in the database

 


Read More
  • Share This:  
  •  Facebook
  •  Twitter
  •  Instagram
  •  Pin
  •  linkedin
  •  reddit
Newer Posts Older Posts Home

Author

Atikh Shaikh
View my complete profile

Categories

  • MongoDB (18)
  • Oracle 12c (30)
  • Oracle12cR2 New Feature (3)
  • PostgreSQL (20)
  • RMAN (10)
  • Snowflake (8)
  • mysql (23)
  • oracle (73)

Blog Archive

  • ►  2018 (38)
    • ►  November (25)
    • ►  December (13)
  • ►  2019 (33)
    • ►  January (15)
    • ►  February (6)
    • ►  March (2)
    • ►  April (5)
    • ►  May (5)
  • ►  2020 (5)
    • ►  April (1)
    • ►  May (2)
    • ►  July (2)
  • ►  2021 (8)
    • ►  June (3)
    • ►  July (3)
    • ►  August (1)
    • ►  December (1)
  • ►  2022 (33)
    • ►  May (3)
    • ►  June (10)
    • ►  July (3)
    • ►  August (4)
    • ►  September (8)
    • ►  October (3)
    • ►  November (2)
  • ►  2023 (14)
    • ►  February (1)
    • ►  April (5)
    • ►  May (2)
    • ►  June (1)
    • ►  September (1)
    • ►  October (1)
    • ►  December (3)
  • ►  2024 (5)
    • ►  January (2)
    • ►  March (3)
  • ▼  2025 (5)
    • ►  March (1)
      • Oracle ASM Scrubbing
    • ►  April (3)
      • Data pump (expdp/impdp) troubleshooting in Oracle ...
      • Oracle 23ai : Use of NOVALIDATE Constraints in IMPDP
      • Oracle Dataguard Broker Configuration (DGMGRL)
    • ▼  May (1)
      • Oracle 23ai : The all new Hybrid Read-Only for plu...

Popular Posts

  • ORA-29283: invalid file operation: unexpected "LFI" error (1509)[29437]
    I was trying to export the schema in my windows PC, it got stuck with below error    C:\Users\shaik\Videos\technodba exp>expdp userid...
  • Oracle Dataguard Broker Configuration (DGMGRL)
    Data Guard Broker is a command-line interface that makes managing primary and standby databases easy. DBA can use a single command to switch...
  • ERROR 1221 (HY000): Incorrect usage of DB GRANT and GLOBAL PRIVILEGES
    In previous articles, we have learned about user creation and grants  in MySQL in detail, but there are a few privileges called global priv...
  • PostgreSQL : How to get data directory location for PostgreSQL instance
    Sometimes, you start working on a PostgreSQL instance but forget about the data directory, here we will discuss different methods to know th...
  • Oracle 23ai : The all new Hybrid Read-Only for pluggable databases (PDBs)
      The latest Oracle database version, Oracle 23ai, introduced a new open mode called Hybrid Read-Only for pluggable databases (PDBs). Local ...

Labels

oracle Oracle 12c mysql PostgreSQL MongoDB oracle 19c Oracle23c oracle19c Orale PDB-CDB oracle12c python AWS Oracle ASM Virtualbox pluggable database storage engine

Pages

  • Disclaimer
  • Privacy Policy

Follow TechnoDBA

Copyright © Atikh's DBA blog | Powered by Blogger