Check for packages requiring a priority update:

# rpm -qa centos\* redhat\*
centos-indexhtml-6-1.el6.centos.noarch
redhat-logos-60.0.14-12.el6.centos.noarch
centos-release-6-4.el6.centos.10.x86_64

Retrieve from the installation media the main distribution package:

redhat-release-server-6Server-6.4.0.4.el6.x86_64.rpm

We also need the RHN (Red Hat Network) access components to allow online update (and some dependencies):

libgudev1-147-2.46.el6.x86_64.rpm
m2crypto-0.20.2-9.el6.x86_64.rpm
rhn-check-1.0.0.1-4.el6.noarch.rpm
rhn-client-tools-1.0.0.1-4.el6.noarch.rpm
rhn-setup-1.0.0.1-4.el6.noarch.rpm
rhnlib-2.5.22-12.el6.noarch.rpm
rhnsd-4.9.3-2.el6.x86_64.rpm
pyOpenSSL-0.10-2.el6.x86_64.rpm
python-dmidecode-3.10.13-1.el6.x86_64.rpm
python-gudev-147.1-4.el6_0.1.x86_64.rpm
pygobject2-2.20.0-5.el6.x86_64.rpm
yum-rhn-plugin-0.9.1-43.el6.noarch.rpm

Remove the CentOS package:

# rpm -e --nodeps centos-release centos-indexhtml

Replace with the Red Hat one and install RHN packages:

# rpm -ivh \
    redhat-release-server-6Server-6.4.0.4.el6.x86_64.rpm
    libgudev1-147-2.46.el6.x86_64.rpm m2crypto-0.20.2-9.el6.x86_64.rpm \
    rhn-check-1.0.0.1-4.el6.noarch.rpm rhn-client-tools-1.0.0.1-4.el6.noarch.rpm \
    rhn-setup-1.0.0.1-4.el6.noarch.rpm rhnlib-2.5.22-12.el6.noarch.rpm \
    rhnsd-4.9.3-2.el6.x86_64.rpm pyOpenSSL-0.10-2.el6.x86_64.rpm \
    python-dmidecode-3.10.13-1.el6.x86_64.rpm python-gudev-147.1-4.el6_0.1.x86_64.rpm \
    pygobject2-2.20.0-5.el6.x86_64.rpm yum-rhn-plugin-0.9.1-43.el6.noarch.rpm

Register the system and check the subscribed channel:

# rhn_register
...
# rhn-channel -a -c rhel-x86_64-server-optional-6
# rhn-channel -l
rhel-x86_64-server-6
rhel-x86_64-server-optional-6

Online update of new available packages (newer version):

# yum update
Install       1 Package(s)
Upgrade      80 Package(s)

Reinstall other packages (same version):

# rpm -qa --qf "%{NAME} %{VENDOR}\n" | grep CentOS | cut -d' ' -f1 | grep -v ^kernel | sort | tee lst
# yum reinstall $(cat lst)
Reinstall   291 Package(s)

Downgrade remaining package (older version, list should be short):

# yum distro-sync
Downgrade    23 Package(s)

It's done, a final reboot to switch to the new kernel and take all benefit from all updates:

# rpm -qa --qf "%{NAME} %{VENDOR}\n" | grep CentOS | cut -d' ' -f1 | grep -v ^kernel | wc -l
0
# yum update
No Packages marked for Update

# cat /etc/redhat-release
Red Hat Enterprise Linux Server release 6.4 (Santiago)

Total elapsed time : less than one hour (with only 2' of services unavailability)

Who next ?