Reconozco que el título es un cebo para los que buscáis en Google cómo solucionar este problema.

El grant de TRUNCATE no existe. La opción del DBA es dar el rol de sistema DROP ANY TABLE, que no es muy apropiado.

La soluci√≥n ser√≠a crear un procedimiento almacenado con el propietario de estas tablas y darle el GRANT EXECUTE  a ese procedimiento almacenado. Como el procedimiento almacenado se ejecuta con las credenciales del propietario, har√≠a el TRUNCATE sin problemas:

create or replace procedure TRUNCATABLA(tabla in varchar2 )
as
begin
 execute immediate 'TRUNCATE TABLE ' || tabla;
end;