Many people find SharePoint to be somewhat limiting in its out-of-the-box functionality, but really, a creative approach can take you pretty far. Say, for example, you need to create a column to hold Social Security numbers (assuming you've worked out all the relevant security issues). You have a field that requires numeric validation, but it has a specific length requirement, which sounds more like string validation. Here's what I came up with off the cuff:
- Create a new Site Column. Add it to whatever group makes sense (I picked Core Contact and Calendar Columns).
- Give it a name and a datatype of Number.
- Specify a maximum of 999999999 to take care of the ten-digit formatting issue.
- Explicitly set Number of decimal places to zero.

- Click OK.
That's it. Next time we'll look at masking/validating your user's input for this field.
Chances are that if you're restoring a site collection from backup, something has gone seriously wrong. Naturally, at this point, you've had just about enough of unexpected glitches, and you REALLY don't want anything to look weird once you restore and load up the site again. Oh, but Mr. Murphy is there laying down the law, and all you see on the global nav is a big "Error" tab. Terrified, you mouse over it with a morbid curiosity, only to discover the following error in a tooltip:
An error occured while rendering navigation for requested URL: /.
Exception message: Object reference not set to an instance of an
object. Stack trace: at
Microsoft.SharePoint.Publishing.PublishingWeb.<>c__DisplayClass2d.<CleanupInternalIDs>b__2c()
at Microsoft.SharePoint.SPSecurity.CodeToRunElevatedWrapper(Object state)
at Microsoft.SharePoint.SPSecurity.<>c__DisplayClass4.<RunWithElevatedPrivileges>b__2()
at Microsoft.SharePoint.Utilities.SecurityContext.RunAsProcess(CodeToRunElevated secureCode)
at Microsoft.SharePoint.SPSecurity.RunWithElevatedPrivileges(WaitCallback secureCode, Object param)
at Microsoft.SharePoint.SPSecurity.RunWithElevatedPrivileges(CodeToRunElevated secureCode)
at Microsoft.SharePoint.Publishing.PublishingWeb.CleanupInternalIDs(PublishingWeb pubwebToCleanUp)
at Microsoft.SharePoint.Publishing.PublishingWeb.get_PagesList()
at Microsoft.SharePoint.Publishing.CachedArea.GetChildPageIds()
at
Microsoft.SharePoint.Publishing.Navigation.PortalSiteMapProvider.UserHasRightsToCachedObject(CachedObject
cachedObject, SPWeb currentContext)
at Microsoft.SharePoint.Publishing.Navigation.CachedObjectSiteMapNode.IsAccessibleToUser(SPWeb contextWeb)
at
Microsoft.SharePoint.Publishing.Navigation.PortalSiteMapNode.GetNavigationChildren(NodeTypes
includedTypes, NodeTypes includedHiddenTypes, OrderingMethod ordering,
AutomaticSortingMethod method, Boolean ascending, Int32 lcid)
at Microsoft.SharePoint.Publishing.Navigation.PortalSiteMapNode.GetNavigationChildren(NodeTypes includedHiddenTypes)
at Microsoft.SharePoint.Publishing.Navigation.PortalSiteMapProvider.GetChildNodes(PortalSiteMapNode node, NodeTypes
Of course I can't speak for everyone in every situation, but this kind of thing late at night when everything else has hit the fan... it's enough to make you want to swap careers with Old MacDonald (seriously, what kind of farm grows moss?).
But enough about my midnight work hallucinations. At this point, the most helpful thing to do -- assuming you still have that backup -- is to delete the site collection entirely. Go into Central Admin, click Application Management, and blow that site collection away. THEN go back and restore from backup again.
If that doesn't work, then run the Config Wizard again; that'll usually shake something loose.