It's part of a distributed query. The string after the @
is a database link.
You can see where the database link is pointing by querying the all_db_links
view, or the user_
or dba_
equivalents depending on the owner and your privileges. It might refer to a TNS alias, in which case you could get further details from the tnsnames.ora
file.
When you query table
you're (usually) looking at a table in your own schema. When you query table@dblink
you're looking at a table in a remote database. They are different objects so you'd expect different results. Your local table is empty, but the remote one has some data.
I say 'usually' because table
could be a synonym pointing at another schema, or even to a schema on a remote database itself. And dblink
could be pointing back to your own database - it would be unusual but I've seen it done as a way of accessing another schema (not something I'd recommend). Without seeing if there is a synonym or where the dblink
is going it's hard to be definitive, but these are less common scenarios. In this case though you're clearly hitting two different tables, probably on different databases. (Well, unless there's a VPD and connecting to the same table as a different user gives a different view... but starting to go down the rabbit hole now...)