AFAIK, Sie müssen das Grants-Objekt einzeln ausführen.
Normalerweise würden Sie dazu ein Skript verwenden, etwa so:
SELECT 'GRANT ALL ON '||table_name||' TO BOB;'
FROM ALL_TABLES
WHERE OWNER = 'ALICE';
Und ähnlich für andere DB-Objekte.
Sie könnten ein Paket in jedes Schema einfügen, das Sie benötigen, um die Gewährung auszustellen, von dem aus alle Aufrufe jeder GRANT-Anweisung über ein EXECUTE IMMEDIATE durchlaufen werden.
zB
PROCEDURE GRANT_TABLES
IS
BEGIN
FOR tab IN (SELECT table_name
FROM all_tables
WHERE owner = this_user) LOOP
EXECUTE IMMEDIATE 'GRANT SELECT, INSERT, UPDATE, DELETE ON '||tab.table_name||' TO other_user';
END LOOP;
END;