Want to protect your cyber security and still get fast solutions? Ask a secure question today.Go Premium

x
  • Status: Solved
  • Priority: Medium
  • Security: Public
  • Views: 44408
  • Last Modified:

SQL Execution Error, ORA-06550:

Getting the following execution  error

SQL execution error, ORA-06550: line 1, column 7:
PLS-00103: Encounter the symbol "." when expecting one of the following:

begin declare exit for goto if loop mod null pragma raise
return select update while <an identifier>
<a double-quote delimited-identifier> <a bind variable> <<
close current delete fetch lock insert open rollback
savepoint set sql commit <a single-quoted SQL string>
The symbol "<an identifier>" was substituted for "." to continue.
, Oracle Automation, 440


This execution is carried out by several users in the organisation but will be and error for a random set of particular people.  When the error occurs for a random set of people it stays with them, though other random users never get this error when using the same command.
0
Raptaur
Asked:
Raptaur
4 Solutions
 
morphmanCommented:
Can you post the code please, as well as the command used to call it.

Thanks
0
 
RaptaurAuthor Commented:
Sorry Morphman this error comes for third party software on our own database.

The Application front end is locked so we don't have access to the code that it is running.  What I can tell you is that when this problem comes about its trying to launch another application.  It’s during this launch process that the error can occur.

I suppose I was more looking for something I could try or advice as opposed to somebody finding a solution to this, as the circumstance as they are, its very difficult to allow a straight answer to the problem.

The Oracle trace has shown nothing
0
 
morphmanCommented:
Ok..

I would check the following.

SQL*Net versions on local PCs if installed.
Do your PCs have Oracle Client isntalled on them?
0
Concerto Cloud for Software Providers & ISVs

Can Concerto Cloud Services help you focus on evolving your application offerings, while delivering the best cloud experience to your customers? From DevOps to revenue models and customer support, the answer is yes!

Learn how Concerto can help you.

 
Bigfam5Commented:
You might also be able to find additional info on the error in the Event viewer
0
 
RaptaurAuthor Commented:
No Oracle client or SQL *Net on the users machines.

They connect to the application on any one of several servers through thinclient software (Citrix).  I'm starting to think this maybe some sort of NT profile issue since not everybody receives this problem.  The only strange thing about this is that all profiles are set up the same way apart from Domain Admins
0
 
seazodiacCommented:
raptaur:

Good news is that from the error code:

SQL execution error, ORA-06550: line 1, column 7:
PLS-00103: Encounter the symbol "." when expecting one of the following:



I am 100%positive that this error is derived from a PLSQL procedure, so the CODE is inside the database dictionary.

Does your 3rd party apps have a common login in the database?
what I mean is that if usually frond-end application has a common oracle database account,

so based on that assumption, if you look at the schema by that user name in Oracle, you might find out
what procedure could be the culprit.


also do a check on all the procedures in Oracle by running this query:


SQL>select object_name, owner from all_objects where object_type='PROCEDURE' and status='INVALID';
0
 
RaptaurAuthor Commented:
Checking it now Seazodiac
0
 
RaptaurAuthor Commented:
oops also forgot to add

The database has several hundred unique login accounts...  not sure if this is what you meant
I ran the piece of SQL on one of the accounts that have been having the problems and 0 rows returned.

The launch facility in this program runs fine in general, its when it tries to launch a connection to another data store
0
 
pettmansCommented:
One of the blocking issues here seems to be determing what SQL statement is generating the error. There are a couple of approaches you can take that may provide this data.

1. Query the SQL area of the library cache. This is a cache of parsed SQL statements that have been executed. Unfortuneately, theres  no record of which user executed the SQL ot the last time it was run. However if you stop/start you database instance (clearing the cache) and then get a user to  run the application that generates the error you can then dump all the SQL in the cache:

Select sql_text from v$sqlarea;

Theres also a first_load_time column that would be useful in this situation.

2. Query V$session and v$sqltext_with_newlines to find SQL being executed by current users. Here's a script I've pulled out of metalink that does that and more. ie it's overkill but should give you an idea of what's involved.

declare     x number;
begin
     for x in     ( select username||'('||sid||','||serial#||
                 ') ospid = ' ||  process ||
                 ' program = ' || program username,
             to_char(LOGON_TIME,' Day HH24:MI') logon_time,
              to_char(sysdate,' Day HH24:MI') current_time,
              sql_address, LAST_CALL_ET
         from v$session
        where status = 'ACTIVE'
         and rawtohex(sql_address) <> '00'
          and username is not null order by last_call_et )
    loop
         for y in ( select max(decode(piece,0,sql_text,null)) ||
                           max(decode(piece,1,sql_text,null)) ||
                           max(decode(piece,2,sql_text,null)) ||
                           max(decode(piece,3,sql_text,null))
                                sql_text
                      from v$sqltext_with_newlines
                      where address = x.sql_address
                       and piece < 4)
         loop
             if ( y.sql_text not like '%listener.get_cmd%' and
                  y.sql_text not like '%RAWTOHEX(SQL_ADDRESS)%')
             then
                 dbms_output.put_line( '--------------------' );
                 dbms_output.put_line( x.username );
                 dbms_output.put_line( x.logon_time || ' ' ||
                                       x.current_time||
                                       ' last et = ' ||
                                       x.LAST_CALL_ET);
                 dbms_output.put_line(
                          substr( y.sql_text, 1, 250 ) );
             end if;
         end loop;
     end loop;
 end;

Does this help you at all?

Scott Pettman
0
 
RaptaurAuthor Commented:
Managed to get to the root of the problem.  Seems the actually lancher was at fault redone this and got  it working

Thanks for everybody that took the time to post and help me out of this
0

Featured Post

Independent Software Vendors: We Want Your Opinion

We value your feedback.

Take our survey and automatically be enter to win anyone of the following:
Yeti Cooler, Amazon eGift Card, and Movie eGift Card!

Tackle projects and never again get stuck behind a technical roadblock.
Join Now