As far as I know, the kernel.shmmax parameter just sets the upper boundary of memory in bytes a process can allocate. It does not mean that it is going to use that memory, but what happens if there is a memory leak, or other software goes mad.Yes, the SHMMAX is mostly just a sanity check. It keeps a rogue application from allocating lots of shared memory and causing a denial of service (starvation) to other applications.
As a safeguard for the OS, wouldn't it be more appropriate to set the SHMMAX size for Oracle 11gR2 XE to 1 GB or 1073741823 bytes? 32 MB is the default.