postgresql bible
View all databases
\l
View all users
\du
View all tables
\dt
Drop database and connections
SELECT pg_terminate_backend(pid)
FROM pg_stat_activity
WHERE datname = 'mydb';
DROP DATABASE mydb;
rds_iam | Cannot login | {}
rds_password | Cannot login | {}
rds_replication | Cannot login | {}
rds_superuser | Cannot login | {pg_monitor,pg_signal_backend,rds_replication,rds_password}
rdsadmin | Superuser, Create role, Create DB, Replication, Bypass RLS+| {}
rdsrepladmin | No inheritance, Cannot login, Replication | {}
SELECT pg_reload_conf();
find latest log file
<PG_DIR>/bin/pg_controldata -D <PG_DATA_DIR>
/usr/lib/postgresql/10/bin/pg_controldata -D /var/lib/postgresql/10/main
<PG_DIR>/bin/pg_archivecleanup -n <PG_DIR> 000000010000000F00000026
<PG_DIR>/bin/pg_archivecleanup -d <PG_DIR> 000000010000000F00000026
createdb [new database name]
pg_dump -Fc -v -h [endpoint of instance] -U [master username] [database] > [database].dump
pg_dump -Fc -t [table_1] -t [table_2] -t [table_3] ... -h [endpoint of instance] -U [master username] [database] > [database].dump
pg_restore -v -h [endpoint of instance] -U [master username] -d [new database name] [database].dump
SELECT
relname as "Table",
pg_size_pretty(pg_total_relation_size(relid)) As "Size",
pg_size_pretty(pg_total_relation_size(relid) - pg_relation_size(relid)) as "External Size"
FROM pg_catalog.pg_statio_user_tables ORDER BY pg_total_relation_size(relid) DESC;
SELECT d.datname AS Name, pg_catalog.pg_get_userbyid(d.datdba) AS Owner,
CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT')
THEN pg_catalog.pg_size_pretty(pg_catalog.pg_database_size(d.datname))
ELSE 'No Access'
END AS SIZE
FROM pg_catalog.pg_database d
ORDER BY
CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT')
THEN pg_catalog.pg_database_size(d.datname)
ELSE NULL
END DESC -- nulls first
LIMIT 20
SELECT oid::regclass::text
FROM pg_class
WHERE relkind = 'm';
SELECT pg_terminate_backend(pg_stat_activity.pid)
FROM pg_stat_activity
WHERE pg_stat_activity.datname = 'TARGET_DB' -- ← change this to your DB
AND pid <> pg_backend_pid();
ALTER TABLE name REPLICA IDENTITY FULL;
-- check max id
SELECT MAX(id) FROM table_name;
-- check next val
SELECT nextval('table_name_id_seq');
-- fix sequence
BEGIN;
LOCK TABLE table_name IN EXCLUSIVE MODE;
SELECT setval('table_name_id_seq', COALESCE((SELECT MAX(id)+1 FROM table_name), 1), false);
COMMIT;