When I open a QGIS (3.10) connection to an Oracle (12c) database using a logon which owns a spatial table, and add the table as a layer, the layer can be edited as normal.
If I open the Oracle connection using a different logon, the same table cannot be edited (toggle editing is inactive).
I've tried a user with the DBA role, and can edit the layer as that user via SQL update statements (from SQL*Plus), but not from within QGIS.
I've tried creating a user synonym and ensuring there's an entry in USER_SDO_GEOM_METADATA for the table and user.
I've also granted the user the SELECT/INSERT/UPDATE/DELETE ANY TABLE system privileges in case the DBA role isn't enough (some privileges only work when granted directly, not via a role).
The database connection was created via the QGIS browser with no credentials stored, allowing QGIS to prompt for them as the connection is opened.
What is it that determines whether an Oracle Spatial table is editable in QGIS?
I'm reluctant to give out the SYSTEM owner password to all and sundry, or to have it unencrypted in a QGIS layer file.
Surely I can't be the only person who uses Oracle in a multi-user environment?