Monday, April 27, 2026

ORA-28001 Password Expired in Oracle – Complete Step-by-Step Fix

ORA-28001: Password Expired in Oracle – Complete Solution

The ORA-28001: the password has expired error is a common issue in Oracle Database that prevents users from logging in when their password exceeds the allowed lifetime defined in profile settings.

This guide explains the causes, solutions, and prevention methods to fix this error quickly.

What is ORA-28001 Error?

ORA-28001 occurs when a user password expires based on the PASSWORD_LIFE_TIME parameter in Oracle profiles. Once expired, the user cannot log in until the password is reset.

Error Message

ORA-28001: the password has expired

Quick Solution

Quick Fix: Reset the password using the ALTER USER command and log in again.

ALTER USER username IDENTIFIED BY new_password;

Why Does ORA-28001 Occur?

  • Password lifetime exceeded
  • Default profile settings
  • Security policies enforcing password expiry
  • Inactive user accounts

Step-by-Step Solutions

1. Reset User Password

This is the quickest way to resolve the issue.

ALTER USER username IDENTIFIED BY new_password;

2. Change Password After Login

If prompted during login, change password:

sqlplus username/old_password

3. Check User Profile

SELECT username, profile FROM dba_users;

4. Modify Profile Settings

To extend password lifetime:

ALTER PROFILE DEFAULT LIMIT PASSWORD_LIFE_TIME 90;

5. Disable Password Expiry (Optional)

ALTER PROFILE DEFAULT LIMIT PASSWORD_LIFE_TIME UNLIMITED;

Note: Use carefully due to security risks.

Real-World Scenario

A DBA was unable to log in due to ORA-28001. The issue occurred because the default profile had a password lifetime of 30 days. After resetting the password and increasing the limit, the problem was resolved.

Common Mistakes

  • Ignoring password expiry policies
  • Not checking profile settings
  • Using expired credentials repeatedly

Best Practices

  • Monitor password expiry regularly
  • Set appropriate password lifetime
  • Use secure password policies
  • Notify users before expiry

How to Prevent ORA-28001 Error?

  1. Set longer password lifetime
  2. Use automated alerts
  3. Implement password management policies


Image: Password Expiry Example

Frequently Asked Questions

What causes ORA-28001?
It is caused by password expiration based on profile settings.

How do I fix ORA-28001?
Reset the password using ALTER USER command.

Can I disable password expiry?
Yes, by setting PASSWORD_LIFE_TIME to UNLIMITED.

Related Posts

👉 Check our complete guide: Oracle Error Codes Guide

Conclusion

The ORA-28001 error is a simple but important security-related issue. By resetting the password and properly managing profile settings, you can quickly resolve and prevent this error.

Always maintain a balance between security and usability when configuring password policies.

Thursday, April 23, 2026

ORA-01652: Unable to Extend Temp Segment – Complete Fix Guide

ORA-01652: Unable to Extend Temp Segment – Complete Fix Guide

The ORA-01652: unable to extend temp segment error occurs when Oracle Database cannot allocate additional space in the temporary tablespace (TEMP) during query execution.

This issue is very common in systems running large queries, sorting operations, or batch jobs and if not handled properly, it can impact performance and even stop critical processes.

In this guide, you’ll learn how to quickly fix ORA-01652 and prevent it permanently using real-world DBA solutions.

What is ORA-01652 Error?

Oracle uses temporary tablespace for operations like:

  • Sorting (ORDER BY)
  • Joins and aggregations
  • Index creation
  • Temporary data processing

When TEMP runs out of space, Oracle throws:

ORA-01652: unable to extend temp segment by <n> in tablespace TEMP

Quick Fix (Immediate Solution)

If you're in a hurry, run this:

 ALTER TABLESPACE temp ADD TEMPFILE 'temp02.dbf' SIZE 1G; 

Or resize existing tempfile:

 ALTER DATABASE TEMPFILE 'temp01.dbf' RESIZE 2G; 

Common Causes of ORA-01652

  • TEMP Tablespace Full
  • Large Queries or Joins
  • Missing Indexes
  • Parallel Execution
  • Unoptimized SQL
  • Multiple Users Consuming TEMP

Step-by-Step Troubleshooting

1. Check TEMP Tablespace Usage

 SELECT tablespace_name, SUM(bytes)/1024/1024 AS MB FROM dba_temp_files 
GROUP BY tablespace_name;

2. Identify Sessions Using TEMP

 SELECT s.sid, s.serial#, s.username, t.blocks*8/1024 AS MB_USED 
FROM v$sort_usage t, v$session s WHERE t.session_addr = s.saddr;

This helps you find which session is consuming TEMP space.

3. Check Free Space

 SELECT tablespace_name, SUM(bytes_free)/1024/1024 AS FREE_MB FROM v$temp_space_header 
GROUP BY tablespace_name;

4. Kill Problematic Sessions (if required)

 ALTER SYSTEM KILL SESSION 'SID,SERIAL#' IMMEDIATE; 

Use with caution in production environments.

5. Add or Resize TEMPFILE

 ALTER TABLESPACE temp ADD TEMPFILE 'temp02.dbf' SIZE 1G AUTOEXTEND ON; 

Special Case: ORA-01652 During Large Queries

Heavy queries like this can cause the issue:

 SELECT * FROM large_table1 t1 JOIN large_table2 t2 ON t1.id = t2.id 
ORDER BY t1.created_date;

Fix:

  • Add indexes
  • Remove unnecessary ORDER BY
  • Use WHERE filters

Real-World Scenario

A batch job failed nightly with ORA-01652 during data processing.

Root Cause: Large join without index + small TEMP tablespace

Solution:

  • Added index on join columns
  • Increased TEMP size
  • Enabled AUTOEXTEND

Result: Job executed successfully without errors.

Best Practices to Prevent ORA-01652

  • Enable AUTOEXTEND on tempfiles
  • Monitor TEMP usage regularly
  • Optimize SQL queries
  • Avoid unnecessary sorting
  • Use proper indexing
  • Limit parallel execution where needed

Frequently Asked Questions (FAQ)

Can I delete TEMP files?

No, but you can resize or recreate them safely.

Is ORA-01652 a serious error?

Yes, it can stop queries and batch jobs.

How much TEMP space is enough?

Depends on workload monitor and adjust dynamically.

Related Posts

👉 Check our complete guide: Oracle Error Codes Guide

Final Thoughts

The ORA-01652 error is mainly a resource limitation issue. While increasing TEMP space provides a quick fix, the real solution lies in query optimization and proper monitoring.

By applying the strategies in this guide, you can eliminate this error and significantly improve database performance.

Monday, April 20, 2026

ORA-00942: Table or View Does Not Exist – Complete Solution Guide

ORA-00942: Table or View Does Not Exist – Complete Solution Guide

The ORA-00942: table or view does not exist error is one of the most common Oracle Database errors. It occurs when Oracle cannot locate the specified table or view, or when the user does not have sufficient privileges to access it.

This guide will help you identify the root cause and fix ORA-00942 quickly using step-by-step solutions and real-world examples.

What is ORA-00942 Error?

The ORA-00942 error occurs when:

  • The table or view does not exist in the database
  • The object exists but is in a different schema
  • You don’t have permission to access it

Error Message

ORA-00942: table or view does not exist

Quick Fix (Fast Solution)

If you're in a hurry, follow these steps:

  1. Verify the table name spelling
  2. Check the schema name
  3. Confirm the table exists
  4. Ensure proper privileges are granted

Common Causes of ORA-00942

  • Table Not Created – The table doesn’t exist
  • Wrong Schema – Table exists but under another user
  • Missing Privileges – No SELECT/INSERT rights
  • Synonym Issues – Broken or missing synonyms
  • Case Sensitivity – Quoted identifiers mismatch
  • Object Dropped – Table was deleted

Step-by-Step Solutions

1. Check if Table Exists

 SELECT table_name FROM all_tables WHERE table_name = 'EMPLOYEES'; 

If no rows are returned, the table does not exist.

2. Check the Correct Schema

Tables may exist in another schema:

 SELECT owner, table_name FROM all_tables WHERE table_name = 'EMPLOYEES'; 

Then query using:

 SELECT * FROM HR.EMPLOYEES; 

3. Verify User Privileges

 SELECT * FROM all_tab_privs WHERE table_name = 'EMPLOYEES'; 

If no access exists, request permissions:

 GRANT SELECT ON HR.EMPLOYEES TO your_user; 

4. Check Synonyms

Sometimes applications use synonyms:

 SELECT * FROM all_synonyms WHERE synonym_name = 'EMPLOYEES'; 

If missing, create one:

 CREATE SYNONYM employees FOR HR.employees; 

5. Handle Case Sensitivity

If a table was created using quotes:

 CREATE TABLE "Employees" (...); 

You must query it exactly:

 SELECT * FROM "Employees"; 

6. Check Recently Dropped Objects

 SELECT * FROM recyclebin WHERE original_name = 'EMPLOYEES'; 

Restore if needed:

 FLASHBACK TABLE employees TO BEFORE DROP; 

Special Case: ORA-00942 in Stored Procedures

This error often appears in PL/SQL procedures due to missing privileges.

Important: Roles are not active inside stored procedures.

Solution:

 GRANT SELECT ON HR.EMPLOYEES TO your_user; 

Use direct grants instead of roles.

Real-World Scenario

A developer executed a query successfully in SQL Developer but got ORA-00942 inside a stored procedure.

Cause: Privileges were granted via a role.

Fix: Granted direct SELECT permission.

Result: Issue resolved immediately.

Best Practices to Avoid ORA-00942

  • Always use schema-qualified names
  • Grant privileges directly (not via roles)
  • Avoid quoted identifiers
  • Maintain proper naming conventions
  • Validate objects before deployment
  • Use synonyms carefully

Frequently Asked Questions (FAQ)

Why does ORA-00942 occur even when table exists?

Most likely due to missing privileges or wrong schema.

How do I fix ORA-00942 in PL/SQL?

Grant direct permissions instead of using roles.

Can synonyms cause ORA-00942?

Yes, if they are invalid or missing.

Related Posts

👉 Check our complete guide: Oracle Error Codes Guide

Final Thoughts

The ORA-00942 error is usually simple to fix once you identify whether it’s a missing object, wrong schema, or permission issue.

By following this guide, you can quickly diagnose and resolve the issue and prevent it in future deployments.

Thursday, April 16, 2026

ORA-00001: Unique Constraint Violated – Complete Guide

ORA-00001: Unique Constraint Violated in Oracle – Complete Fix Guide (Step-by-Step)

The ORA-00001: unique constraint violated error is one of the most common issues faced by Oracle Database developers and DBAs. It occurs when an attempt is made to insert or update data that already exists in a column defined with a UNIQUE or PRIMARY KEY constraint.

If you're dealing with this error, don’t worry—this guide will help you identify, troubleshoot, and permanently fix ORA-00001 using real-world solutions.

What is ORA-00001 Error?

The ORA-00001 error occurs when a duplicate value violates a uniqueness rule enforced by Oracle.

In simple terms:

  • You tried to insert a value that already exists
  • Oracle blocked it to maintain data integrity

Error Message

ORA-00001: unique constraint (SCHEMA.CONSTRAINT_NAME) violated

The message often includes the constraint name, which is your first clue to solving the problem.

Quick Fix (Fast Solution)

If you're in a hurry, follow this:

  1. Identify the constraint name from the error
  2. Find the column(s) involved
  3. Check for duplicate values
  4. Ensure unique data using sequences or validation

Common Causes of ORA-00001

  • Duplicate Primary Key – Same ID inserted twice
  • Unique Constraint Violation – Duplicate values in unique column
  • Manual Data Entry Errors
  • Incorrect Sequence Usage
  • Application Logic Issues (e.g., multiple inserts)
  • Data Migration Problems

Step-by-Step Solution

1. Identify the Constraint Name

 SELECT constraint_name, table_name FROM user_constraints WHERE constraint_type 
 IN ('U', 'P');

Or directly from error:

 ORA-00001: unique constraint (HR.EMP_EMAIL_UK) violated 

2. Find Columns in the Constraint

 SELECT column_name FROM user_cons_columns WHERE constraint_name = 'EMP_EMAIL_PK'; 

3. Check Duplicate Values

 SELECT column_name, COUNT(*) FROM table_name GROUP BY column_name 
HAVING COUNT(*) > 1;

This helps you locate problematic duplicate entries.

4. Fix the Duplicate Data

You have multiple options:

  • Delete duplicate records
  • Update values to make them unique
  • Use MERGE instead of INSERT

Example:

 DELETE FROM table_name WHERE ROWID NOT IN ( SELECT MIN(ROWID) FROM table_name 
GROUP BY column_name );

5. Use Sequences for Unique Values

A common mistake is manually inserting IDs instead of using sequences.

 INSERT INTO employees (id, name) VALUES (emp_seq.NEXTVAL, 'Ali'); 

6. Handle Exceptions in PL/SQL

 BEGIN INSERT INTO employees VALUES (1, 'Ali'); 
EXCEPTION WHEN DUP_VAL_ON_INDEX
THEN DBMS_OUTPUT.PUT_LINE('Duplicate value detected'); END;

Special Case: ORA-00001 During UPDATE

This error can also occur during updates:

 UPDATE employees SET email = 'test@gmail.com' WHERE id = 2; 

If another row already has this email, the update will fail.

Real-World Scenario

A developer inserted employee records manually without using a sequence. Over time, duplicate IDs caused frequent ORA-00001 errors.

Solution:

  • Created a sequence
  • Updated application logic
  • Cleaned duplicate data

Result: Error completely eliminated.

Best Practices to Avoid ORA-00001

  • Always use sequences or identity columns
  • Validate data before insert
  • Use MERGE instead of blind INSERT
  • Add proper application-level checks
  • Monitor constraints regularly
  • Use indexes wisely

Frequently Asked Questions (FAQ)

What is unique constraint in Oracle?

A unique constraint ensures that all values in a column are different.

Can I disable a unique constraint?

 ALTER TABLE table_name DISABLE CONSTRAINT constraint_name; 

Warning: This can lead to data inconsistency.

How do I find violated constraint quickly?

Check the error message—it usually contains the constraint name.

Related Posts

👉 Check our complete guide: Oracle Error Codes Guide

Final Thoughts

The ORA-00001 error is not a system failure—it’s a data integrity safeguard. By understanding constraints, using sequences, and validating data, you can prevent this error entirely.

Follow the steps in this guide, and you’ll not only fix the issue but also make your database design more robust and reliable.

Wednesday, April 15, 2026

ORA-12154 TNS Could Not Resolve Connect Identifier – Complete Step-by-Step Fix

ORA-12154: TNS Could Not Resolve Connect Identifier – Complete Solution

The ORA-12154: TNS could not resolve the connect identifier specified is a very common Oracle Database error that occurs when the system cannot resolve the service name provided in the connection string.

This error is frequently faced by DBAs, developers, and users while connecting through SQL*Plus, Oracle Forms, or applications.

What is ORA-12154 Error?

ORA-12154 occurs when Oracle is unable to find the connect identifier in the tnsnames.ora file or cannot resolve the service name using available configuration methods.

Error Message

ORA-12154: TNS:could not resolve the connect identifier specified

Quick Solution

Quick Fix: Verify the service name in the connection string and ensure that the correct entry exists in the tnsnames.ora file.

Common Causes of ORA-12154

  • Incorrect service name in connection string
  • Missing or incorrect tnsnames.ora entry
  • Wrong ORACLE_HOME or environment variables
  • Multiple Oracle installations
  • Incorrect TNS_ADMIN path

Step-by-Step Solutions

1. Check tnsnames.ora File

Open the tnsnames.ora file located in:

$ORACLE_HOME/network/admin

Verify that the service name exists:

ORCL =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521))
    (CONNECT_DATA =
      (SERVICE_NAME = orcl)
    )
  )

2. Verify Connection String

Make sure your connection string matches the service name:

sqlplus username/password@ORCL

3. Check ORACLE_HOME and Environment Variables

Ensure correct environment variables:

echo %ORACLE_HOME%
echo %TNS_ADMIN%

Incorrect paths can lead to ORA-12154 error.

4. Use EZCONNECT Method

You can bypass tnsnames.ora using EZCONNECT:

sqlplus username/password@hostname:1521/orcl

5. Check Multiple Oracle Installations

If multiple Oracle clients are installed, ensure you are using the correct one.

6. Test Using tnsping

tnsping ORCL

If this fails, the issue is with TNS configuration.

Real-World Scenario

A developer was unable to connect to the database due to ORA-12154. After checking, the service name in the connection string did not match the entry in tnsnames.ora.

After correcting the service name, the issue was resolved.

Common Mistakes

  • Typing wrong service name
  • Editing wrong tnsnames.ora file
  • Not setting environment variables correctly

Best Practices

  • Maintain proper TNS configuration
  • Use consistent naming conventions
  • Document service names
  • Regularly verify connectivity

Frequently Asked Questions

What causes ORA-12154?
It is caused by incorrect or missing TNS configuration.

How do I fix ORA-12154 quickly?
Verify tnsnames.ora and connection string.

Can I connect without tnsnames.ora?
Yes, using EZCONNECT method.

Related Posts

👉 Check our complete guide: Oracle Error Codes Guide

Conclusion

The ORA-12154 error is a configuration-related issue that can be easily fixed by verifying service names, TNS files, and environment variables. By following the steps above, you can quickly resolve this issue and restore connectivity.

Tuesday, April 14, 2026

ORA-01194 Error Fix in Oracle 11g/12c – File Needs More Recovery (Step-by-Step)

Oracle Database Error ORA-01194 Fix Guide: Learn complete step-by-step solution to resolve ORA-01194 datafile recovery error using RMAN and backup restore methods.

Fix ORA-01194 error in Oracle Database with step-by-step recovery methods. Learn how to recover database and open with RESETLOGS safely.

Introduction

If you are facing ORA-01194: file needs more recovery to be consistent, this guide will help you step-by-step DBA tested solution and Fix ORA-01194 in 5 minutes using this method

The error ORA-01194: file 1 needs more recovery to be consistent occurs in an Oracle database when you attempt to open the database after incomplete recovery.

This issue typically arises when the database files are not fully synchronized with the required redo or archive logs.

The ORA-01194 error fix is required when your Oracle database shows "file needs more recovery to be consistent".

Why does ORA-01194 occur?

ORA-01194: file needs more recovery to be consistent is an Oracle Database error that occurs when a datafile is not fully recovered. This happens when required redo or archive logs are missing or not applied, leaving the database in an inconsistent state.

How to recover database in ORA-01194?

  1. Start database in MOUNT mode
  2. Run RECOVER DATABASE command
  3. Apply all required archive logs
  4. Use BACKUP CONTROLFILE if needed
  5. Open database with RESETLOGS

Quick Solution: Start the database in mount mode, perform recovery using available archive logs, and then open the database using RESETLOGS to resolve ORA-01194 error.

Error Message

ORA-01194: file 1 needs more recovery to be consistent
ORA-01110: data file 1: '<path>/system01.dbf'


If you are facing login problems along with database errors, check our guide on ORA-01017 invalid username/password error.

Root Cause

According to Oracle Corporation documentation:

  • The database recovery process was incomplete
  • Required redo/archive logs are missing or not applied
  • The datafile was not closed cleanly
  • Backup restoration was not properly followed by recovery

In simple words:
The database is not in a consistent state, and Oracle requires more recovery steps before opening it.

Similar recovery-related issues like ORA-01555 snapshot too old error can also occur due to insufficient undo data during long-running queries.

Solution Methods

Method 1: Proper Database Recovery (Recommended)

Step 1: Start Database in Mount Mode

SQL> startup mount;

Step 2: Perform Recovery

SQL> recover database;

If you encounter errors like:

  • ORA-00283
  • ORA-01610
  • ORA-01547
  • ORA-01194

Then proceed with incomplete recovery using backup control file:

Step 3: Recover Using Backup Controlfile

SQL> recover database using backup controlfile until cancel;
  • Press AUTO or provide archive logs when prompted
  • Continue applying logs until no more are required
  • Type:
CANCEL;

 

Step 4: Open Database with RESETLOGS

SQL> alter database open resetlogs;

This method ensures the database becomes consistent by applying all available logs.

Method 2: Force Open Database (Last Resort)

Use this method only when:

  • Required archive logs are missing
  • Normal recovery fails

Step 1: Shutdown & Mount

SQL> shutdown immediate;
SQL> startup mount;

Step 2: Enable Hidden Parameter

SQL> ALTER SYSTEM SET "_allow_resetlogs_corruption"=TRUE SCOPE=SPFILE;
SQL> ALTER SYSTEM SET undo_management=MANUAL SCOPE=SPFILE;

Step 3: Restart Database

SQL> shutdown immediate;
SQL> startup mount;

Step 4: Open with RESETLOGS

SQL> alter database open resetlogs;

Step 5: Reconfigure UNDO

SQL> CREATE UNDO TABLESPACE undo1 
DATAFILE '<path>/undo1.dbf' SIZE 200M AUTOEXTEND ON;
SQL> ALTER SYSTEM SET undo_tablespace=undo1 SCOPE=SPFILE;
SQL> ALTER SYSTEM SET undo_management=AUTO SCOPE=SPFILE;

Step 6: Restart Database

SQL> shutdown immediate;
SQL> startup;

This method forces the database to open but may cause data inconsistency or corruption, so always take a full backup afterward.

How to prevent ORA-01194 error?

Important Notes

  • Always try Method 1 first
  • Ensure all archive logs are available
  • Avoid using _allow_resetlogs_corruption unless absolutely necessary
  • After recovery:
    • Take a full backup immediately
    • Validate database integrity

ORA-01194 Quick Fix Summary

Problem Solution
Incomplete recovery Run RECOVER DATABASE
Missing archive logs Apply required logs
Backup control file used Use RESETLOGS
Database inconsistent Complete recovery process

Conclusion

The ORA-01194 error indicates that your database recovery is incomplete. The safest solution is to apply all required archive logs and open the database using RESETLOGS.

If logs are missing, you can force open the database—but this should only be done as a last resort due to potential data loss.

Connection issues can also prevent database access. Learn how to fix ORA-12541 TNS no listener error.

Frequently Asked Questions

What causes ORA-01194 error?
It is caused by incomplete recovery or missing redo/archive logs.

Can I open database without fixing ORA-01194?
Yes, using RESETLOGS, but it may lead to data loss.

How do I fix ORA-01194 quickly?
Run recovery commands and apply all required logs.

Related Oracle Errors

👉 Check our complete guide: Oracle Error Codes Guide

Have you faced ORA-01194 error? Share your experience in the comments below.

ORA-28000 Account is Locked in Oracle – Unlock User Easily

 ORA-28000: Account is Locked – Fix in Oracle

This error occurs when a user account is locked due to multiple failed login attempts. To resolve the ORA-28000 error, you must log in to the database as a user with administrative privileges (like SYS or SYSTEM) and manually unlock the account. This error typically occurs when a user exceeds the maximum number of failed login attempts defined by their security profile.

Error

ORA-28000: the account is locked

Causes

  • Multiple wrong password attempts
  • Profile lock settings

Quick Fix: Unlock the User

Use the following steps in SQL*Plus or a similar command-line tool: 

1.      Connect as SYSDBA:

Sql> sqlplus / as sysdba

2.      Unlock the Account:
Replace username with the actual name of the locked user.

Sql> ALTER USER username ACCOUNT UNLOCK;


3.      Optional: Reset the Password:

If the account was locked because the user forgot their password, you can reset it simultaneously.

Sql> ALTER USER username IDENTIFIED BY new_password ACCOUNT UNLOCK;


 
Verify Account Status

You can check if a user is currently locked by querying the dba_users view: 

Sql> SELECT username, account_status

FROM dba_users

WHERE username = 'YOUR_USERNAME';


 
Preventing Future Lockouts

If accounts are locking frequently, you may need to adjust the security profile settings: 

·         Check Attempt Limits: Run this to see the current limit for failed attempts.

Sql> SELECT limit FROM dba_profiles

WHERE profile = 'DEFAULT' AND resource_name = 'FAILED_LOGIN_ATTEMPTS';

·         Increase Limits: You can set the limit to UNLIMITED or a higher number.

Sql> ALTER PROFILE DEFAULT LIMIT FAILED_LOGIN_ATTEMPTS UNLIMITED;

·         Identify the Source: If an account relocks immediately after being unlocked, a background service or application might be using an old, cached password. Use SELECT username, machine, program FROM v$session; to find active sessions for that user.

Conclusion

Unlock the account and ensure correct credentials.

Related Oracle Errors

👉 Check our complete guide: Oracle Error Codes Guide

ORA-28001 Password Expired in Oracle – Complete Step-by-Step Fix

ORA-28001: Password Expired in Oracle – Complete Solution The ORA-28001: the password has expired error is a common issue in Oracle Datab...

Contact / Feedback Form

Name

Email *

Message *