1.在PG_TABLES系统表中查看public schema中包含的所有表。
SELECT distinct(tablename) FROM pg_tables WHERE SCHEMANAME = 'public';
2.通过PG_USER可以查看数据库中所有用户的列表,还可以查看用户ID(USESYSID)和用户权限。
SELECT * FROM pg_user;
3.通过视图PG_STAT_ACTIVITY可以查看正在运行的查询语句。
a.当此参数为on时,数据库系统才会收集当前活动查询的运行信息。
SET track_activities = on;
b.查看正在运行的查询语句。以查看正在运行的查询语句所连接的数据库名、执行查询的用户、查询状态及查询对应的PID。
SELECT datname, usename, state,pid FROM pg_stat_activity;
如果state字段显示为idle,则表明此连接处于空闲,等待用户输入命令。
c.若需要取消运行时间过长的查询,通过PG_TERMINATE_BACKEND函数,根据线程ID结束会话。
SELECT PG_TERMINATE_BACKEND(139834759993104);
显示类似如下信息,表示结束会话成功。
PG_TERMINATE_BACKEND
----------------------
t
(1 row)
显示类似如下信息,表示用户执行了结束当前会话的操作。
FATAL: terminating connection due to administrator command
FATAL: terminating connection due to administrator command
The connection to the server was lost. Attempting reset: Succeeded.
gsql客户端使用PG_TERMINATE_BACKEND函数结束当前会话后台线程时,客户端不会退出而是自动重连。即还会返回“The connection to the server was lost. Attempting reset: Succeeded.”
一般非管理员无权查看系统表和视图,用户应该禁止对系统表进行增删改等操作,人为对系统表的修改或破坏可能会导致系统各种异常情况甚至集群不可用。
1. PG_ATTRDEF
PG_ATTRDEF系统表存储列的默认值
2. PG_ATTRIBUTE
PG_ATTRIBUTE系统表存储关于表字段的信息。
3. PG_AUTH_MEMBERS
PG_AUTH_MEMBERS系统表存储显示角色之间的成员关系。
4. PG_CLASS
PG_CLASS系统表存储数据库对象信息及其之间的关系。
5. PG_CONSTRAINT
PG_CONSTRAINT系统表存储表上的检查约束、主键、唯一约束和外键约束。
6. PG_DATABASE
PG_DATABASE系统表存储关于可用数据库的信息。
7. PG_DEFAULT_ACL
PG_DEFAULT_ACL系统表存储为新建对象设置的初始权限。
8. PG_EXTENSION
PG_EXTENSION系统表存储关于所安装扩展的信息。
9. PG_EXTENSION_DATA_SOURCE
PG_EXTENSION_DATA_SOURCE系统表存储外部数据源对象的信息。
10. PG_FOREIGN_TABLE
PG_FOREIGN_TABLE系统表存储外部表的辅助信息。
11. PG_INDEX
PG_INDEX系统表存储索引的一部分信息,其他的信息大多数在PG_CLASS中。
12. PG_INHERITS
PG_INHERITS系统表记录关于表继承层次的信息。数据库里每个直接的子系表都有一条记录。间接的继承可以通过追溯记录链来判断。
13. PG_JOB
PG_JOB系统表存储用户创建的定时任务的任务详细信息,定时任务线程定时轮询pg_job系统表中的时间,当任务到期会触发任务的执行,并更新pg_job表中的任务状态。该系统表属于Shared Relation,所有创建的job记录对所有数据库可见。
14. PG_JOB_PROC
PG_JOB_PROC系统表对应PG_JOB表中每个任务的作业内容(包括:PL/SQL代码块、匿名块)。将存储过程信息独立出来,是因为Oracle中这个字段是varchar(4000)的,如果放到PG_JOB中,被加载到共享内存的时候,会占用不必要的空间,所以在使用的时候再进行查询获取。
15. PG_NAMESPACE
PG_NAMESPACE系统表存储名字空间,即存储schema相关的信息。
16. PG_PARTITION
PG_PARTITION系统表存储数据库内所有分区表(partitioned table)、分区(table partition)、分区上toast表和分区索引(index partition)四类对象的信息。分区表索引(partitioned index)的信息不在PG_PARTITION系统表中保存。
17. PG_PROC
PG_PROC系统表存储函数或过程的信息。
18. PG_RESOURCE_POOL
PG_RESOURCE_POOL系统表提供了数据库资源池的信息。
19. PG_STATISTIC
PG_STATISTIC系统表存储有关该数据库中表和索引列的统计数据。需要有系统管理员权限才可以访问此系统表。
20. PG_TABLESPACE
PG_TABLESPACE系统表存储表空间信息。
21. PG_TRIGGER
PG_TRIGGER系统表存储触发器信息。
22. PG_TYPE
PG_TYPE系统表存储数据类型的相关信息。
23. PG_USER_STATUS
PG_USER_STATUS系统表提供了访问数据库用户的状态。需要有系统管理员权限才可以访问此系统表。
24. PGXC_CLASS
PGXC_CLASS系统表存储每张表的复制或分布信息。
25. PGXC_GROUP
PGXC_GROUP系统表存储节点组信息。
26. PGXC_NODE
PGXC_NODE系统表存储集群节点信息。
ALL_ALL_TABLES
ALL_ALL_TABLES视图存储当前用户所能访问的表或视图。
ALL_CONS_COLUMNS
ALL_CONS_COLUMNS视图存储当前用户可访问的约束字段的信息。
ALL_COL_COMMENTS
ALL_COL_COMMENTS视图存储当前用户可访问的表中字段的注释信息。
ALL_IND_COLUMNS
ALL_IND_COLUMNS视图存储了当前用户可访问的所有索引的字段信息。
ALL_IND_EXPRESSIONS
ALL_IND_EXPRESSIONS视图存储了当前用户可访问的表达式索引的信息。
ALL_INDEXES
ALL_INDEXES视图存储了当前用户可访问的索引信息。
ALL_OBJECTS
ALL_OBJECTS视图记录了当前用户可访问的数据库对象。
ALL_PROCEDURES
ALL_PROCEDURES视图存储了当前用户可访问的所有存储过程或函数信息。
ALL_SOURCE
ALL_SOURCE视图存储当前用户可访问的存储过程或函数信息,且提供存储过程或函数定义的字段。
ALL_SEQUENCES
ALL_SEQUENCES视图存储当前用户能够访问的所有序列。
ALL_TAB_COLUMNS
ALL_TAB_COLUMNS视图存储了当前用户可访问的表的列的描述信息。
ALL_TAB_COMMENTS
ALL_TAB_COMMENTS视图存储当前用户可访问的所有表和视图的注释信息。
ALL_TABLES
ALL_TABLES视图存储当前用户可访问的所有表。
ALL_USERS
ALL_USERS视图存储记录数据库中所有用户,但不对用户信息进行详细的描述。
ALL_VIEWS
ALL_VIEWS视图存储了当前用户可访问的所有视图描述信息。
信息模式本身是一个名为information_schema的模式。这个模式自动存在于所有数据库中。信息模式由一组视图构成,它们包含定义在当前数据库中对象的信息。这个模式的拥有者是初始数据库用户,并且该用户自然地拥有这个模式上的所有特权,包括删除它的能力。