Zuordnung Toast Datensatz

Allgemeines zu PostgreSQL.
Antworten
robomobil
Neuer Benutzer
Beiträge: 13
Registriert: Mi 1. Mär 2017, 08:01
Wohnort: Köln

Zuordnung Toast Datensatz

Beitrag von robomobil » Do 7. Feb 2019, 09:56

Hallo,

ich muss einen Datensatz einer TOAST Tabelle der Basistabelle zuordnen. Wisst ihr, über welchen Schlüssel o.ä. die verkmüpft sind? In der Doku und in den Weiten des WWW hab ich nichts dazu gefunden.

Bin für jeden Hinweis dankbar.

akretschmer
Erfahrener Benutzer
Beiträge: 7565
Registriert: So 29. Okt 2006, 13:35
Wohnort: Kaufbach, Sachsen, Germany, Germany
Kontaktdaten:

Re: Zuordnung Toast Datensatz

Beitrag von akretschmer » Do 7. Feb 2019, 10:14

wenn ich dich richtig verstehe, hast Du eine TOAST-Tabelle und willst wissen, zu welcher Basistabelle diese gehört?

pg_class, Spalte reltoastrelid. Dort suchst Du die OID Deiner Toast-Tabelle und kannst dann die Basistabelle ablesen.
PostgreSQL Development, 24x7 Support, Remote DBA, Training & Services

robomobil
Neuer Benutzer
Beiträge: 13
Registriert: Mi 1. Mär 2017, 08:01
Wohnort: Köln

Re: Zuordnung Toast Datensatz

Beitrag von robomobil » Do 7. Feb 2019, 10:15

Nein, das weiss ich. Ich habe eine defekte page in einer toast tabelle und will rausfinden welcher Datensatz aus der Basistabelle dazu gehört.

akretschmer
Erfahrener Benutzer
Beiträge: 7565
Registriert: So 29. Okt 2006, 13:35
Wohnort: Kaufbach, Sachsen, Germany, Germany
Kontaktdaten:

Re: Zuordnung Toast Datensatz

Beitrag von akretschmer » Do 7. Feb 2019, 13:40

Hrm. Wir haben da ein Tool bzw. Extension: "This extension allows user to check and report corrupt data in toast."

und:
"The function can be invoked on a regular relation (relkind = 'r'). It performs
a sequential scan on the table using a MVCC snapshot, checks for toastable
attributes and confirms if the toasted value is in a sane state. If it detects
a problem with any row, it reports that row via elog(NOTICE) message.
"

aber:

"Licensed for use on PostgreSQL servers covered by 2ndQuadrant Product Support"

Sorry.


Ich hab vor Jahren mal bei einem Kunden versucht, möglichst viel aus eine korrupten Tabelle (TOAST war korrupt, Tabelle selber nicht) auszulesen. Ich hab dann IIRC mir alle CTID's geholt und in einem shell-script via psql versucht jeweils den Datensatz komplett zu der CTID zu holen. Da konnte ich dann die CTID's erkennen, die einen Treffer in der TOAST hatten. Mit dieser Liste von CTID's konnte ich dann die Tabelle vollständig kopieren, unter Ausschluß der korrupten CTID's.

Falls Dir das hilft: viel Erfolg. Falls nicht: werd unser Kunde ;-)
PostgreSQL Development, 24x7 Support, Remote DBA, Training & Services

robomobil
Neuer Benutzer
Beiträge: 13
Registriert: Mi 1. Mär 2017, 08:01
Wohnort: Köln

Re: Zuordnung Toast Datensatz

Beitrag von robomobil » Fr 8. Feb 2019, 12:00

OK, so hat es dann geklappt.

Danke für den Tipp!

akretschmer
Erfahrener Benutzer
Beiträge: 7565
Registriert: So 29. Okt 2006, 13:35
Wohnort: Kaufbach, Sachsen, Germany, Germany
Kontaktdaten:

Re: Zuordnung Toast Datensatz

Beitrag von akretschmer » Fr 8. Feb 2019, 12:03

Fein!

Wohin kann ich nun die Rechnung schicken? ;-)
PostgreSQL Development, 24x7 Support, Remote DBA, Training & Services

Antworten