Для выполнения операции `ALTER TABLE ... SET WITHOUT OIDS` в PostgreSQL для всех таблиц, вам потребуется написать скрипт, который создает и выполняет соответствующие команды для каждой таблицы. В PostgreSQL для этого можно использовать динамический SQL в PL/pgSQL, например, так:
```sql
DO $$
DECLARE
r RECORD;
BEGIN
FOR r IN
SELECT table_schema, table_name
FROM information_schema.tables
WHERE table_schema NOT IN ('pg_catalog', 'information_schema')
AND table_type = 'BASE TABLE'
LOOP
EXECUTE format('ALTER TABLE %I.%I SET WITHOUT OIDS', r.table_schema, r.table_name);
END LOOP;
END $$;
```
Этот анонимный блок кода перебирает все пользовательские таблицы в текущей базе данных и выполняет команду `ALTER TABLE` для установки `WITHOUT OIDS`.
Если вам необходимо выполнить это в нескольких базах данных, вам придется выполнять этот скрипт, подключаясь к каждой базе данных поочередно. Это можно сделать с помощью утилиты командной строки `psql`:
```bash
for db in db1 db2 db3; do
psql -d "$db" -c "DO $$ /* вставьте скрипт выше */ $$;"
done
```
Для автоматического перечисления всех баз данных можно использовать такой скрипт:
```bash
PSQL="psql -X -A -t"
SQL="SELECT datname FROM pg_database WHERE datistemplate = false AND datallowconn = true AND datname NOT IN ('postgres', 'template0', 'template1');"
DBNAMES=$(psql -X -A -t -c "$SQL")
for db in $DBNAMES; do
$PSQL -d "$db" -c "DO $$ /* вставьте скрипт выше */ $$;"
done
```
Обратите внимание, что операции изменения структуры базы данных могут быть рискованными и потенциально могут привести к потере данных, особенно когда дело касается системных атрибутов, таких как OIDs. Перед их выполнением настоятельно рекомендуется сделать полную резервную копию баз данных.
После изменения структуры таблиц вы также можете запустить `pg_upgrade` снова, чтобы завершить процесс обновления.