Abhijit Gharami wrote:
> During major version upgrade from PostgreSQL v9.4 to v9.6 I facing following error:
>
> Performing Consistency Checks
> -----------------------------
> Checking cluster versions ok
>
> connection to database failed: FATAL: root page 3 of index "pg_class_oid_index" has level 0, expected 1
>
>
> could not connect to old postmaster started with the command:
> "/postgresql94/bin/pg_ctl" -w -l "pg_upgrade_server.log" -D "/data/directory/postgresql" -o "-p 5432 -b -c
listen_addresses=''-c unix_socket_permissions=0700 -c
> unix_socket_directories='/home/postgresql_user'" start
> Failure, exiting
>
>
> Again, I was trying to take the pg_dumpall of the same database cluster(PostgreSQL v9.4) and it failed with error:
> pg_dump: [archiver (db)] connection to database "template1" failed: FATAL: root page 3 of index "pg_class_oid_index"
haslevel 0, expected 1
> pg_dumpall: pg_dump failed on database "template1", exiting
>
> Please suggest how should I proceed with major version upgrade in this case.
You are experiencing catalog corruption.
Try stopping the cluster and starting it with
postgres -P -D /path/to/data/dir
Then connect and run
REINDEX TABLE pg_catalog.pg_class;
That should fix the corrupted index.
If you have data corruption, you shouldn't use pg_upgrade to upgrade.
pg_dumpall / psql is the way to go.
Yours,
Laurenz Albe
--
Cybertec | https://www.cybertec-postgresql.com