Redshift useful administration SQL
Redshift Useful Queries
/* Show tables and owners */
SELECT
u.usename,
s.schemaname,
has_schema_privilege(u.usename,s.schemaname,'create') AS user_has_select_permission,
has_schema_privilege(u.usename,s.schemaname,'usage') AS user_has_usage_permission
FROM
pg_user u
CROSS JOIN
(SELECT DISTINCT schemaname FROM pg_tables) s
WHERE
s.schemaname = 'namexxx';
/* List all Users */
select * from pg_shadw;
/* List all non-builtin schemas */
select * from pg_catalog.pg_namespace where nspowner != '1';
/* List recent queries from particular user (myuser) */
SELECT * from ORDERS where query like '%myuser%'
/* List currently executing queries */
SELECT * from STV_INFLIGHT;
select has_table_privilege('useraccountxxx', 'schema.orders', 'insert');
/* kill session, Redshift ends session and rolls back all transactions that are associated with it. */
select pg_terminate_backend(12855)
/* Show locked Tables */
SELECT
current_time,
c.relname,
l.database,
l.transaction,
l.pid,
a.usename,
l.mode,
l.granted
FROM pg_locks l
JOIN pg_catalog.pg_class c ON c.oid = l.relation
JOIN pg_catalog.pg_stat_activity a ON a.procpid = l.pid
WHERE l.pid <> pg_backend_pid();
/* show locks oldest first */
select
table_id,
last_update,
last_commit,
lock_owner_pid,
lock_status
from stv_locks
order by last_update asc
/* Active sessions */
SELECT
procpid,
datname,
usename,
current_query,
query_start
FROM
pg_catalog.pg_stat_activity;
/* blocking queries */
select
b.*,
w.pid as blocked_pid,
w.txn_owner as blocked_owner,
DATEDIFF(minutes, b.txn_start, getdate()) as blocked_for_mints
from SVV_TRANSACTIONS b inner join SVV_TRANSACTIONS w
on b.txn_db = w.txn_db and b.relation = w.relation
where b.granted='t' and w.granted = 'f'
and DATEDIFF(minutes, b.txn_start, getdate()) > 5
order by txn_start, b.pid;
/* TABLE OWNERSHIP */
SELECT n.nspname AS schema_name
, pg_get_userbyid(c.relowner) AS table_owner
, c.relname AS table_name
, CASE WHEN c.relkind = 'v' THEN 'view' ELSE 'table' END
AS table_type
, d.description AS table_description
FROM pg_class As c
LEFT JOIN pg_namespace n ON n.oid = c.relnamespace
LEFT JOIN pg_tablespace t ON t.oid = c.reltablespace
LEFT JOIN pg_description As d
ON (d.objoid = c.oid AND d.objsubid = 0)
WHERE c.relkind IN('r', 'v')
ORDER BY n.nspname, c.relname ;
