1.检查实例状态
[omm@gauss001 ~]$ cm_ctl query -Cv
[ CMServer State ]
node instance state
---------------------------------
1 192.168.0.142 1 Primary
[ Cluster State ]
cluster_state : Normal
redistributing : No
balanced : Yes
current_az : AZ_ALL
[ Datanode State ]
node instance state
---------------------------------------------
1 192.168.0.142 6001 P Primary Normal
2.查询数据库中的锁信息
--2.查询数据库中的锁信息
SELECT * FROM pg_locks;
--查询等待锁的线程状态信息,获取持锁线程block_sessionid。
SELECT * FROM pg_thread_wait_status WHERE wait_status = 'acquire lock';
node_name | db_name | thread_name | query_id | tid | sessionid | lwtid | psessionid | tlevel | smpid | wait_status | wait_event | locktag | lockmode | block_sessionid | global_sessionid
-----------+---------+-------------+----------+-----+-----------+-------+------------+--------+-------+-------------+------------+---------+----------+-----------------+------------------
(0 rows)
--查找正在持锁的会话,然后使用pg_terminate_session命令结束此会话。
gaussdb=# SELECT pid,sessionid,query FROM pg_stat_activity where sessionid=block_sessionid;
gaussdb=# SELECT pg_terminate_session(pid,sessionid);
3.活跃会话检查
--SQL语句长时间运行会占用大量系统资源,用户可以通过查看事件发生的时间,占用内存大小来了解现在数据库运行状态。
--查询事件的时间
--查询事件的线程启动时间、事务启动时间、SQL启动时间以及状态变更时间
gaussdb=# SELECT backend_start,xact_start,query_start,state_change FROM pg_stat_activity;
--查询当前服务器的会话计数信息
SELECT count(*) FROM pg_stat_activity;
--查询当前使用内存最多的会话信息。
gaussdb=# SELECT sessid, sum(totalsize)/1024/1024 as "totalsize MB",
count(1) as count FROM gs_session_memory_context GROUP BY sessid ORDER BY 2 DESC LIMIT 10;
4.对象检查
--表、索引、分区、约束等是数据库的核心存储对象,其核心信息和对象维护是DBA重要的日常工作。
--查看表的详细信息
\d+ table_name
--查询表统计信息
SELECT * FROM pg_statistic;
--查看索引的详细信息
\d+ index_name
--查询分区表信息
SELECT * FROM pg_partition;
5.收集统计信息
--使用ANALYZE语句收集数据库相关的统计信息。
gaussdb=# ANALYZE;
gaussdb=# ANALYZE table_name;
6.使用VACUUM语句可以回收空间并更新统计信息。
gaussdb=# VACUUM;
gaussdb=# VACUUM table_name;
--查询约束信息
gaussdb=# SELECT * FROM pg_constraint;
7.基本信息检查
--基本信息包括版本、组件、补丁集等信息,定期检查数据库信息并登记在案是数据库生命周期管理的重要内容之一。
--版本信息
gaussdb=# SELECT version();
8.容量检查:表大小,数据库大小。
gaussdb=# SELECT pg_table_size('table_name');
gaussdb=# SELECT pg_database_size('database_name');