Ваш код, кажется, вставляет содержимое файла в запрос SQL без кавычек, что, вероятно, заставляет Oracle думать, что это идентификатор.
Я бы использовал OCI BLOB-функций вместо.Примерно так:
$stmt = oci_parse($database, "INSERT INTO (a,b,c, photo) VALUES('aval','bval','cval', EMPTY_BLOB()) RETURNING photo INTO :photo");
$newlob = oci_new_descriptor($database, OCI_D_LOB);
oci_bind_by_name($stmt, ":photo", $newlob, -1, OCI_B_BLOB);
oci_execute($stmt,OCI_DEFAULT);
$newlob->save(base64_decode($fileBlob));
oci_commit($stmt);
// cleanup
$newlob->free();
oci_free_statement($stmt);
Я упускаю проверку ошибок для простоты, вам нужно проверить, вернули ли анализ и выполнение правильные вещи, и использовать oci_error , чтобы увидеть, что пошло не так.