Oracle structural synchronization
It doesn't seem to make sense to fully automate structural changes.  Presumably, there is some probability that changes are applied to B and testing reveals problems.  So a human ultimately needs to make a decision about whether to promote, right?

Assuming that your scripts are stored in source control, a process that pulls the scripts from source control and runs them in each of your environments (presumably you have at least dev and test instances in addition to production and staging) is generally the best solution.  That ensures that scripts are applied consistently in every environment.  You still need humans to do something to indicate that a particular set of changes are ready for the next environment but since that reflects a human's decision that testing of those changes is complete, that's hard to avoid.  And, of course, specific implementation details depend on what source control tool you're using and how your organization uses the tool.