Ошибка ora 04043

ORA-04043 means that the schema object that you want to use is not existing, this could be a typo, privilege or case-sensitive problem like we said in solving ORA-00942 due to missing quotes.

Let’s see some error patterns that generate ORA-04043.

  1. Lack of SELECT object privilege
  2. Case-sensitive object Name
  3. Import Data by Original IMP
  4. Rename a Table

Lack of SELECT Object Privilege

We got ORA-04043 when describing unusable object which is out of scope in the user’s view.

SQL> conn sh/sh
Connected.
SQL> desc hr.employees;
ERROR:
ORA-04043: object hr.employees does not exist

The solution is to grant SELECT object privilege to the user.

SQL> grant select on hr.employees to sh;

Grant succeeded.

Case-sensitive Object Name

If we created a schema object in case-sensitivity by enclosing name with quotations, we should use the name carefully. For example.

SQL> create table "Test1" (id number);

Table created.

When we tried to describe the object, we got ORA-04043.

SQL> desc Test1;
ERROR:
ORA-04043: object test1 does not exist

Actually, the correct way is to enclose the name just like we defined it.

SQL> desc "Test1"
 Name                                      Null?    Type
 ----------------------------------------- -------- ----------------------------
 ID                                                 NUMBER

We have talked a lot about the interaction between column name and quotation in solving ORA-00904.

Import Data by Original IMP

When I imp a dump file which was exported by the original exp, I found some stored procedures were missing with IMP-00098.

[oracle@primary01 ~]$ imp \"/ as sysdba\" fromuser=ERPAPP rows=n file=/dumps/erpapp_exp.dmp log=/dumps/erpapp_imp.log
...
IMP-00098: INTERNAL ERROR: impccr2
IMP-00017: following statement failed with ORACLE error 4043:
 "ALTER PROCEDURE "GET_PAYMENT_DAY" COMPILE REUSE SETTINGS TIMESTAMP '2017-"
 "03-30:10:47:20'"
IMP-00003: ORACLE error 4043 encountered
ORA-04043: object GET_PAYMENT_DAY does not exist

Solution

Eventually, it’s a character conversion problem. Let’s check current character set.

[oracle@primary01 ~]$ echo $NLS_LANG
AMERICAN_AMERICA.AL32UTF8

It’s exactly the same as the database. So next, let’s try to use the source character set UTF8 to import objects.

[oracle@primary01 ~]$ export NLS_LANG=AMERICAN_AMERICA.UTF8
[oracle@primary01 ~]$ echo $NLS_LANG
AMERICAN_AMERICA.UTF8

This time, we are able to import missing stored procedures.

Rename a Table

When we tried to rename a table, we saw ORA-04043. Which means, you don’t have such table.

SQL> rename employees to employees_bak;
rename employees to employees_bak
*
ERROR at line 1:
ORA-04043: object EMPLOYEES does not exist

Let’s check what schema we connected to.

SQL> show user;
USER is "SH"

To rename a table, you should connect to the database as the schema owner.

Please note that, prefixing the schema owner to the object in RENAME SQL statement is no use, it results another error.

Asked

Viewed
16k times

I was trying to compile a PL/SQL package and I got the following error:

ORA-04043: object SYS_PLSQL_77721_489_1 does not exist

After this, I can no longer recompile or drop the package.

Do you have any suggestions?

  • oracle
  • plsql

asked Sep 29, 2009 at 13:12

Ariod's user avatar

AriodAriod

5,75722 gold badges73 silver badges103 bronze badges

5 Answers

Try to do this:

DROP TYPE SYS_PLSQL_77721_489_1;
DROP TYPE SYS_PLSQL_77721_DUMMY_1;
DROP PACKAGE BODY xxxx;
DROP PACKAGE xxx;

I’ve had exactly the same problem and works. Sorry @Vicent but the link you provide does not solve the problem.

answered Jan 15, 2010 at 0:59

FerranB's user avatar

FerranBFerranB

35.8k18 gold badges66 silver badges85 bronze badges

3

  • That worked for me, I think. I was wondering why? The first statement tries to drop a non-existant object so fails. And what exactly is that «DUMMY» type?

    Aug 4, 2015 at 12:09

  • This worked for us too…not sure whats really going on here though…extra points for anyone who can explain the problem!

    Nov 8, 2016 at 1:06

  • I was able to drop using the second line (the name with «DUMMY») i.e. DROP TYPE SYS_PLSQL_77721_DUMMY_1; thank you for the answer

    Feb 16, 2017 at 10:29

if you have access to support, this looks like bug #3744836. A similar bug is described here, related to pipelined functions and synonyms.

answered Sep 29, 2009 at 13:45

Vincent Malgrat's user avatar

Vincent MalgratVincent Malgrat

66.9k9 gold badges119 silver badges171 bronze badges

One confirmed cause of this problem is the use of pipelined functions with PL/SQL types. It is a bug, and so ought to fixed in more recent or fully patched versions of Oracle. A workaround would be to use SQL types instead (i.e. create type whatever as object ... ).

If this does not apply in your situation please edit your question to include more details.

answered Jan 15, 2010 at 6:17

APC's user avatar

APCAPC

144k19 gold badges171 silver badges281 bronze badges

2

  • FETCH cur INTO rec; only works with records and not with objects, is there any way around this?

    Jun 12, 2017 at 14:00

  • @blaf — it depends on how you define cur . This seems like a different question. Ask it as such, giving enough details for us to understand your scenario.

    Jun 12, 2017 at 14:03

Try to create the types as mentioned in the error message to resolve error while dropping or compiling packages.
Error :ORA-04043: object SYS_PLSQL_ B1A0D561_1132_1 does not exist
Resolution : CREATE TYPE SYS_PLSQL_B1A0D561_1132_1;

After that one more error came which reads
Error :ORA-04043: object SYS_PLSQL_B1A0D561_1242_1 does not exist
Resolution :CREATE TYPE SYS_PLSQL_B1A0D561_1242_1;

and issues resolved.

answered Apr 26, 2021 at 9:05

Raj Gaurav's user avatar

create or replace type SYS_PLSQL_77721_489_1 as object

for all erros when you drop

try drop again and again and create type for all erros…

answered Jul 25, 2018 at 19:11

Daniel Martinho Bisleri's user avatar

1

  • An answer with poor grammar is not recommended.

    Jul 25, 2018 at 19:24

  • The Overflow Blog
  • Featured on Meta

Related

Hot Network Questions

  • Does Grover’s algorithm really threaten symmetric cryptography?

  • How to prove the following number theory puzzle

  • Hypothesis testing for a sequence (ranking)

  • Should I leave an email regarding the nature of my PTO?

  • How do game engines avoid recalculating normals upon mesh rotation?

  • Word/phrase for straight-lined

  • Recreating Minesweeper

  • Can a tiny mimic turn into a magic sword?

  • Shouldn’t deep copy be the default, not shallow copy?

  • Roof Vent Placement

  • What’s up with the Vacant U.S. Ambassador Positions in the Middle East?

  • Are there examples of artwork which anachronistically showed ancients equipped with firearms?

  • What is the protocol for visa overstay at Zurich airport and will I get the judgement

  • Options for sending bulk mail locally

  • Soft goat cheese as pizza topping without mess

  • How to efficiently determine if a graph contains an (a, b)-edge?

  • Java 21 built-in http client pins the carrier thread

  • How is it called that a function that maps to a function is equivalent to a function from the Cartesian product/of multiple variables?

  • Why is it logical that entropy being extensive suggests that underlying particles are indistinguishable from another and vice versa?

  • How can I make it so that locking a deadbolt switches on the porch light?

  • Can penalties be increased retroactively by statutes?

  • Is our outsourced software vendor «Agile» or do they just not want to plan things?

  • Best way to deal with drying dishware to minimize hazards?

  • On the topic of worry in his Sermon on the Mount, why did Jesus not address the fundamental human need for shelter?

more hot questions

Question feed

Your privacy

By clicking “Accept all cookies”, you agree Stack Exchange can store cookies on your device and disclose information in accordance with our Cookie Policy.

May 6, 2021

I got ” ORA-04043: object does not exist ”  error in Oracle database.

ORA-04043: object does not exist

Details of error are as follows.

ORA-04043: object does not exist

Cause: An object name was specified that was not recognized by the system. There are several possible causes:

- An invalid name for a table, view, sequence, procedure, function, package, or package body
 was entered. Since the system could not recognize the invalid name, it responded with the
 message that the named object does not exist.

- An attempt was made to rename an index or a cluster, or some other object that cannot be renamed.

Action: Check the spelling of the named object and rerun the code. (Valid names of tables, 
views, functions, etc. can be listed by querying the data dictionary.)

object does not exist

This ORA-04043 error is related with the object name was specified that was not recognized by the system. There are several possible causes:

– An invalid name for a table, view, sequence, procedure, function, package, or package body was entered. Since the system could not recognize the invalid name, it responded with the message that the named object does not exist.

Check the spelling of the named object and rerun the code. (Valid names of tables, views, functions, etc. can be listed by querying the data dictionary.)

If you choose the table name double quotes, you need to call it with double quotes

So If you created the table name as “Mehmet”, you need call it with Desc Mehmet, not desc Mehmet

You can check the object in dba_object table as follows.

SElect object_name,object_type from dba_objects where object_name like '%OBJECT_NAME%';

Sometimes, this error is get because of missing schema owner of table. So You should use the table name with Schema owner as follows.

select * from SCHEMA_OWNER.TABLE_NAME;

Normally, there is no MEHMET table as follows and I will create and check it.

SQL> desc MEHMET
ERROR:
ORA-04043: object mehmet does not exist


SQL> CREATE TABLE MEHMET
  2  (
  3  UserID int,
  4  FirstName varchar(100), 
  5  LastName varchar(100),
  6  City varchar(100)
  7  ); 

Table created.

SQL> 
SQL> desc MEHMET
 Name                                      Null?    Type
 ----------------------------------------- -------- ----------------------------
 USERID                                             NUMBER(38)
 FIRSTNAME                                          VARCHAR2(100)
 LASTNAME                                           VARCHAR2(100)
 CITY                                               VARCHAR2(100)

SQL>

If you don’t specify the Schema before table name, then this table is created under SYSTEM Schema automatically.

If you want to create the table under the specific Schema, then create it as follows.

SQL> CREATE TABLE MSDEVECI.MYEMPLOYEE
   (
     EMPLOYEE_ID NUMBER(6),
     FIRST_NAME VARCHAR2(20 BYTE),
     LAST_NAME VARCHAR2(25 BYTE),
     HIRE_DATE DATE,
     JOB_ID VARCHAR2(10 BYTE),
     SALARY NUMBER(8,2)
   );

Table created.

SQL> DESC MSDEVECI.MYEMPLOYEE
 Name                                      Null?    Type
 ----------------------------------------- -------- ----------------------------
 EMPLOYEE_ID                                        NUMBER(6)
 FIRST_NAME                                         VARCHAR2(20)
 LAST_NAME                                          VARCHAR2(25)
 HIRE_DATE                                          DATE
 JOB_ID                                             VARCHAR2(10)
 SALARY                                             NUMBER(8,2)

SQL> desc MYEMPLOYEE
ERROR:
ORA-04043: object MYEMPLOYEE does not exist


SQL>


Do you want to learn Oracle Database for Beginners, then read the following articles.

Oracle Tutorial | Oracle Database Tutorials for Beginners ( Junior Oracle DBA )

About Mehmet Salih Deveci

I am Founder of SysDBASoft IT and IT Tutorial and Certified Expert about Oracle & SQL Server database, Goldengate, Exadata Machine, Oracle Database Appliance administrator with 10+years experience.I have OCA, OCP, OCE RAC Expert Certificates I have worked 100+ Banking, Insurance, Finance, Telco and etc. clients as a Consultant, Insource or Outsource.I have done 200+ Operations in this clients such as Exadata Installation & PoC & Migration & Upgrade, Oracle & SQL Server Database Upgrade, Oracle RAC Installation, SQL Server AlwaysOn Installation, Database Migration, Disaster Recovery, Backup Restore, Performance Tuning, Periodic Healthchecks.I have done 2000+ Table replication with Goldengate or SQL Server Replication tool for DWH Databases in many clients.If you need Oracle DBA, SQL Server DBA, APPS DBA,  Exadata, Goldengate, EBS Consultancy and Training you can send my email adress [email protected].-                                                                                                                                                                                                                                                 -Oracle DBA, SQL Server DBA, APPS DBA,  Exadata, Goldengate, EBS ve linux Danışmanlık ve Eğitim için  [email protected] a mail atabilirsiniz.

Error:
Getting following error while dropping the USER.

SQL> drop user SCOTT cascade;
drop user SCOTT cascade
*
ERROR at line 1:
ORA-00604: error occurred at recursive SQL level 1
ORA-04043: object /38a33ae9_SALESvAL does not exist

Cause
Check the following object in dba_object table.

SElect object_name,object_type from dba_objects

Note: You can check object type which object need to create and check similar object related to value got.

Solution
1. Create the object temporary in the database.
Note: this issue generally occurrs from TYPE object so i used type object in example.

create type "/38a33ae9_SALESval" as object (empno number);

2. Then try to drop the user.

Drop user scott cascade;

Asked

Viewed
2k times

Can any one tell me why I’m getting ORA-04043: object SYS_PLSQL_XXXXX error while I’m trying to Alter an exiting table to add new columns.

I did not get this error when I altered the same table last week.

thanks

  • oracle

asked Jul 26, 2018 at 17:19

MS s's user avatar

MS sMS s

211 silver badge5 bronze badges

2

  • It might be helpful to edit your question to include the complete DDL for the table as it is now (via dbms_metadata.get_ddl), the exact command you’re trying to run, the full error stack you get, and if possible the command you ran last week. All as formatted text please, not images.

    Jul 26, 2018 at 17:24

  • This is the command that I ran today and last week tooalter table1 add ( col1 VARCHAR2(3), col2 VARCHAR2(3));

    Jul 26, 2018 at 17:47

Load 7 more related questions

Show fewer related questions

  • The Overflow Blog
  • Featured on Meta

Hot Network Questions

  • Is there a Grammar blindness?

  • How many umbrellas to cover the beach?

  • How is it called that a function that maps to a function is equivalent to a function from the Cartesian product/of multiple variables?

  • Numerical implementation of ODE differs largely from analytical solution

  • To 17 year olds, how to explain that 2 numbers with arbitrarily small difference are equal?

  • TV-ÖD Stufe in Germany based on previous degree

  • Is it unethical to use chatGPT to create abstracts?

  • Will anything break if prone crossbow-wielders get advantage instead of disadvantage?

  • Snapping options in QGIS 3.28.11 Firenze

  • How much more damage can a big cannon do to a ship than a small one?

  • Can penalties be increased retroactively by statutes?

  • How can I make it so that locking a deadbolt switches on the porch light?

  • Java 21 built-in http client pins the carrier thread

  • Older sister is taken and replaced with a mud golem

  • Are there examples of artwork which anachronistically showed ancients equipped with firearms?

  • Notation in Group Theory

  • Were printed manuals for HP PCL or GL ever published?

  • Roof Vent Placement

  • Why should we reuse code as binary modules instead of copy-pasting?

  • Can fats be composed of fatty acid esters other than triglycerides?

  • The nitty-gritty details of augmented Lagrangian methods

  • What is the purpose of being tried by a «jury of your peers»?

  • How to Identify Tables with Index Size Issues during MySQL 5.7 to 8.0 Migration?

  • Does Python’s semicolon statement ending feature have any unique use?

more hot questions

Question feed

Your privacy

By clicking “Accept all cookies”, you agree Stack Exchange can store cookies on your device and disclose information in accordance with our Cookie Policy.

  • Ошибка ora 02291 integrity constraint
  • Ошибка oracle ora 01017
  • Ошибка ora 12504
  • Ошибка ora 02290
  • Ошибка oracle ora 00904