Thread: Solving OID wrap-around in 7.4 DB?
On behalf of a previous employer who, due to major downsizing, is left without an answer to this: What's the best way to treat impending OID wrap-around in a 7.4.8 database? This DB has been online for about 18 months, and is expected to hit the dreaded wrap-around in about a month. At an application level, there's some small chance that OID wrap will cause failures: there's code that writes rows, and (for tables without primary keys) relies on DBD::Pg's pg_oid_status method to identify the last INSERT. (The vast majority of the code does not rely on this, but there's a tiny fraction that does, and rewriting the code to remove this is not an option due to the aforementioned downsizing.) My immediate take on this is that the only sure way to avoid the problem would be to dump and reload the database. Due to the size of the database, this is likely to take most of a day. Any other options?
jeff@endpoint.com (Jeff Boes) writes: > On behalf of a previous employer who, due to major downsizing, is left > without an answer to this: > > What's the best way to treat impending OID wrap-around in a 7.4.8 > database? This DB has been online for about 18 months, and is expected > to hit the dreaded wrap-around in about a month. At an application > level, there's some small chance that OID wrap will cause failures: > there's code that writes rows, and (for tables without primary keys) > relies on DBD::Pg's pg_oid_status method to identify the last INSERT. > (The vast majority of the code does not rely on this, but there's a tiny > fraction that does, and rewriting the code to remove this is not an > option due to the aforementioned downsizing.) > > My immediate take on this is that the only sure way to avoid the > problem would be to dump and reload the database. Due to the size of > the database, this is likely to take most of a day. Any other > options? Another method would be to use replication to load the data into a fresh DB instance. You could, in principle, use Slony-I to do this; that is an intended sort of "use case." -- output = ("cbbrowne" "@" "acm.org") http://www3.sympatico.ca/cbbrowne/slony.html "What if you slept? And what if, in your sleep, you dreamed? And what if, in your dream, you went to heaven and there plucked a strange and beautiful flower? And what if, when you awoke, you had the flower in your hand? Ah, what then?" --Coleridge
On Mon, 2005-10-17 at 12:04, Chris Browne wrote: > jeff@endpoint.com (Jeff Boes) writes: > > On behalf of a previous employer who, due to major downsizing, is left > > without an answer to this: > > > > What's the best way to treat impending OID wrap-around in a 7.4.8 > > database? This DB has been online for about 18 months, and is expected > > to hit the dreaded wrap-around in about a month. At an application > > level, there's some small chance that OID wrap will cause failures: > > there's code that writes rows, and (for tables without primary keys) > > relies on DBD::Pg's pg_oid_status method to identify the last INSERT. > > (The vast majority of the code does not rely on this, but there's a tiny > > fraction that does, and rewriting the code to remove this is not an > > option due to the aforementioned downsizing.) > > > > My immediate take on this is that the only sure way to avoid the > > problem would be to dump and reload the database. Due to the size of > > the database, this is likely to take most of a day. Any other > > options? > > Another method would be to use replication to load the data into a > fresh DB instance. > > You could, in principle, use Slony-I to do this; that is an intended > sort of "use case." I thought that with 7.4 all you needed was to vacuum all databases (full maybe???) to prevent oid wraparound.
On Mon, Oct 17, 2005 at 02:50:01PM -0500, Scott Marlowe wrote: > I thought that with 7.4 all you needed was to vacuum all databases (full > maybe???) to prevent oid wraparound. Sure you're not confusing oid wraparound with transaction ID wraparound? -- Michael Fuhr
On Sun, Oct 16, 2005 at 07:28:00AM -0400, Jeff Boes wrote: > On behalf of a previous employer who, due to major downsizing, is left > without an answer to this: > > What's the best way to treat impending OID wrap-around in a 7.4.8 > database? This DB has been online for about 18 months, and is expected > to hit the dreaded wrap-around in about a month. At an application How many OIDs have been recovered? If the answer is "none" (i.e. the database doesn't have many deletes), then there isn't likely much you can do about it -- reloading the database is going to cause the same problem. As Chris says in another message, you can use Slony to replicate the database, in order not to have a long outage. Note, too, that since you say most tables don't actually use this pg_oid_status method, you can get away with creating most of the tables without OIDs, which will stave off your problem for a while. That'd probably even help if the database mostly just grows, depending (of course) on where the growth is. A -- Andrew Sullivan | ajs@crankycanuck.ca Information security isn't a technological problem. It's an economics problem. --Bruce Schneier