Error
Error Code: ORA-28388

Oracle ORA-28388: Read/Write Required

📦 Oracle Database
📋

Description

The ORA-28388 error indicates an attempt to perform wallet operations on an Oracle database that is not open in read/write mode. Wallet operations, such as creating, opening, or modifying wallets, require the database to be in a read/write state.
💬

Error Message

database is not open in read/write mode
🔍

Known Causes

3 known causes
⚠️
Database in Read-Only
The database was intentionally opened in read-only mode, preventing any write operations, including wallet management. 🔒
⚠️
Mount Stage
The database is in the mount stage, which allows for administrative tasks but not full read/write access to data. ⚙
⚠️
Restricted Session
Connected to the database with a restricted session that limits operations to those necessary for database administration. 💻
🛠️

Solutions

4 solutions available

1. Open Database in Read/Write Mode easy

Directly alter the database to open in read/write mode.

1
Connect to the Oracle database as a user with SYSDBA or SYSOPER privileges.
sqlplus / as sysdba
2
Check the current database status.
SELECT open_mode FROM v$database;
3
If the database is not in READ WRITE mode, alter it. This command will close the database if it's not already mounted or open, and then open it in read/write mode.
SHUTDOWN IMMEDIATE;
STARTUP;
4
Verify the database is now open in read/write mode.
SELECT open_mode FROM v$database;

2. Restart the Oracle Instance medium

A full restart can resolve transient issues preventing read/write access.

1
Connect to the Oracle database as a user with SYSDBA or SYSOPER privileges.
sqlplus / as sysdba
2
Perform a clean shutdown of the instance.
SHUTDOWN IMMEDIATE;
3
Start the Oracle instance.
STARTUP;
4
Confirm the database is open in read/write mode.
SELECT open_mode FROM v$database;

3. Check Listener and TNSNames Configuration medium

Ensure the listener is running and TNSNames is correctly configured to allow connections.

1
On the database server, check the status of the Oracle Listener. Replace 'LISTENER' with your actual listener name if it's different.
lsnrctl status LISTENER
2
If the listener is not running, start it.
lsnrctl start LISTENER
3
On the client machine, verify the TNSNames.ora file is correctly configured for the database service name and host/port.
YOUR_DB_ALIAS = (
  DESCRIPTION = (
    ADDRESS = (PROTOCOL = TCP)(HOST = your_db_host)(PORT = 1521)
    (CONNECT_DATA = (
      SID = ORCL
    ))
  )
)
4
Attempt to connect to the database again using SQL*Plus or another client tool.
sqlplus username/password@your_db_alias

4. Investigate Database Mount and Open Parameters advanced

Review the initialization parameters related to database opening for potential misconfigurations.

1
Connect to the Oracle database as a user with SYSDBA or SYSOPER privileges.
sqlplus / as sysdba
2
Check the current initialization parameters related to opening the database.
SHOW PARAMETER SEC_CASE_SENSITIVE;
SHOW PARAMETER DB_BLOCK_CHECKSUM;
SHOW PARAMETER DB_LOST_WRITE_PROTECT;
SHOW PARAMETER LOG_ARCHIVE_FORMAT;
3
If any of these parameters are set to values that might restrict read/write operations (e.g., incorrect settings for data integrity checks that are causing issues), consider adjusting them. This is a more advanced step and requires a deep understanding of these parameters and their impact. For example, if `DB_LOST_WRITE_PROTECT` is enabled and experiencing issues, it might need to be disabled temporarily for troubleshooting, but this carries risks.
ALTER SYSTEM SET DB_LOST_WRITE_PROTECT = OFF SCOPE=SPFILE;
-- After changing SPFILE, a restart is required:
SHUTDOWN IMMEDIATE;
STARTUP;
4
Consult Oracle documentation for the specific parameters and their implications before making changes.
text