0
点赞
收藏
分享

微信扫一扫

PostgreSQL常用系统信息查询命令

回溯 2024-01-24 阅读 10

PostgreSQL常用系统信息查询命令

1.查看当前数据库实例的版本
select version();

2.查看数据库的启动时间,命令如下: 
 select pg_postmaster_start_time(); 

3.显示当前数据库时区,命令如下: 
注意,有时数据库的时区不是当前操作系统的时区,这时在数据库中看到的时间就与操 作系统中看到的时间不一样,如下: 
osdba@db01:~$ date 
Sat Jul 19 17:39:10 CST 2014 

osdba=# show timezone;
TimeZone 
UTC 

osdba=# select now(); 
now 
2014-07-19 09:39:22.189974+00 
(1 row) 

4.查看当前实例中有哪些数据库,命令如下: 
osdbA@osdbaptop:~$ psql -l

5.查看当前用户名,命令如下: 
osdba=# select user;
osdba=# select current_user; 
上例中使用current user与user是完全相同的。 

査看session用户,命令如下: 
osdba=> select session_user; 

注意,通常情况下“ session_user”与“user”是相同的。
但当用命令“SET ROLE”改 变用户的角色时,这两者就不相同了,如下: 
从上例可以看出,session_user始终是那个原始用户,而user是当前的角色用户。 

osdba=# set role u01; 
SET 
osdba=> select session_user; 
session_user 
osdba 
(1 row) 

osdba=> select user; 
current_user 
u01 
(1 row) 

6.查询当前连接的数据库名称,命令如下: 
osdba=# select current_catalog,current_database(); 
current_database        | current_database 
------------------ +------------------- 
osdba                         I  osdba 
(1 row) 
注意*使用current catalog与current_database()都显示当前连接的数据库名称,这两者功 能完全相同,只不过catalog是SQL标准中的用语。 

lhrdb=# SELECT datname,oid FROM pg_database; 

7.查询当前session所在客户端的IP地址及端口,命令如下: 
osdba=# select inet_client_addr(),inet_client_port(); 
  
查找数据库的连接信息,包含:客户端 user、ip、 执行语句,状态、 时间 
select * from pg_stat_activity 

查看连接总数或所有连接的用户: 
select count(*) from pg_stat_activity; 

8.査询到当前数据库服务器的IP地址及端口,命令如下: 
osdba=# select inet_server_addr(),inet_server_port(); 

9.查询当前session的后台服务进程的pid,命令如下: 
osdba=# select pg_backend_pid(); 

10.查看当前的一些参数配置情况,命令如下: 
osdba=# show shared_buffers;
osdba=# select current_setting('shared_buffers');

11.修改当前session的参数配置,命令如下: 
osdba=# set maintenance_work_mem to '128MB'; 
osdba=# select set_config ('maintenance_work_mem','128MB',false); 

12.查看当前正在写的WAL文件,命令如下: 
osdba=# select pg_xlogfile_name(pg_current_xlog_location()); 

13.查看当前WAL的buffer中还有多少字节的数据没有写到磁盘中,命令如下: 
osdba=# select pg_xlog_location_diff (pg_current_xlog__insert_locat ion(),pg_ current_xlog_location()); 

14.查看数据库实例是否正在做基础备份,命令如下: 
osdba=# select pg_is_in_backup(),pg_backup_start_time(); 

15.查看当前数据库实例是Hot Standby状态还是正常数据库状态,命令如下: 
osdba=# select pg_is_in_recovery(); 
如果上面结果返回真,说明数据库处于Hot Standby状态。 

16.查看数据库的大小,命令如下: 
osdb a=# select pg_database_size('osdba'),pg_size_pretty (pg_database_ size('osdba'));                                                        • 
pg_database_size | pg_size_pretty 
---------------+----------------- 
207622612          | 198 MB 
(1 row) 
上例查看了数据库“osdba”的大小。
注意,如果数据库中有很多表,使用上述命令将 比较慢,也可能对当前系统产生不利的影响。上面命令中,pg_size」retty()函数会把数字以 MB、GB等格式显示出来,这样会更直观。
 
17.查看表的大小,命令如下: 
osdba=# select pg_size_pretty(pg_relation_size('ipdb2')); 
osdba=# select pg_size_pretty(pg_total_relation_size('ipdb2')) ; 
上例中pg_relation size()仅计算表的大小,不包括索引的大小,而pg_total_relation_size() 则把表上索引的大小也计算进来。
 
18.查看表上所有索引的大小,命令如下: 
osdba=# select pg_size_pretty(pg_indexes_size('ipdb2')); 
注意,pg_indexes_size()函数的参数名是一个表对应的oid (输人表名会自动转换成表的 oid),而不是索引的名称。
 
19.査看表空间的大小,命令如下: 
osdba=# select pg_size_pretty(pg_tablespace_size('pg_global')); 
osdba=# select pg_size_pretty(pg_tablespace_size('pg_default'));
上例查看了全局表空间'pg_global'和默认表空间'pg_default'的大小。

20.查看表对应的数据文件,命令如下:
osdba=# select pg_relation_filepath('test01'); 

21.表的oid和relfilenode
 select oid,relfilenode from pg_class where relname = 'test' limit 1; 
注意:表和索引的relfilenode值并不总是与各自的oid匹配,因为表和索引的relfilenode值会因为TRUNCATE, REINDEX, CLUSTER等命令而改变。

22.如下SQL查询被授予的角色: 
SELECT   r.rolname,ARRAY(SELECT b.rolname 
            FROM pg_catalog.pg_auth_members m 
            JOIN pg_catalog.pg_roles b ON (m.roleid = b.oid) 
            WHERE m.member = r.oid) as memberof 
FROM pg_catalog.pg_roles r 
WHERE r.rolname NOT IN ('pg_signal_backend','rds_iam', 'rds_replication','rds_superuser', 
                        'rdsadmin','rdsrepladmin') ORDER BY 1; 

举报

相关推荐

0 条评论