您的位置:首页 > 其它

postgres常用语句

2015-07-21 16:33 405 查看
``copy view model 

alter schema copy rename to copy_schema;alter schema model rename to model_schema;alter schema model remame to view_schema; 

系统参数 

gpssh -f all_hosts 
cat /etc/hosts 
cat /etc/sysctl.conf 
cat /boot/grub/menu.lst 
cat /etc/security/limits.conf 
cat /etc/fstab 

数据库的参数 
gpssh -f all_hosts 
cat pg_hba.conf 
cat postgresql.conf 

查看重启数据库的日志,显示如下, 
received fast shutdown request 

当数据库某一个节点宕机时,可以用 

gprecoverseg -r 
检查instance出差的状态 
gpstate -e [查看节点恢复状态] 

查看系统日志表 

"select * from gp_segment_configuation where status=‘d';" 

重启GP系统用 
gpstop -r 

查看primary instance 和mirror instance 的关系用 
gpstate -m 

gpconfig -s max_prepared_transactions 查看节点配置参数 

清除SQ语句用 

select pg_cancel_backend+进程号 

查看资源队列中等待的语句 
select * from gp_toolkit.gp_locks_on_resqueue where lorwaiting='true' 
如果没有结果返回,则没有语句在资源队列中执行。 

su - ebankdb 
Appuser01 

查看数据库的最大并发连接数 
gpconfig -s max_connections 

收集日志 
如果是 
可以用tar -zcvf 'hostname' +命名 
scp + 新的文件名+ gpadmin@by19ssvsdb:/home/ap/gpdata/文件名 

查找scheamname表的总大小, 
select scheamname_total (列表名); 

停应用 
./ctm_set_gp_res.sh -stop SOR 

检查数据库的节点恢复状态 
while true; do gpstate -e | grep Incremental; date ;echo '=================='; sleep 30;done 

查看表的大小 
select pg_size_pretty(pg_relation_size('表名')); 

查看系统配置参数两种方法 
一.用gpconfig -s + 参数名 
二.进入数据库 psql postgres【master】 
show + 参数名; 
进入PGOPTIONS='-c gp_session_role=utility' psql -h 主机名 -p 端口号 +数据库名【segment】 
show + 参数名; 

查看数据库某个表是否被杀掉 
ps -ef | grep postgres | grep -i con+进程号 

20140213 
一.执行脚本两种 
1. 用sh 执行 
后台运行输出到一个文本 nohup sh + 脚本名 > 1.log & 
2 ./ 执行 
后台执行的话 nohup ./ 脚本名 > 1.log & 

二.查看一个表下有多少条记录 
1. psql -tc “select count(*) base.+表名;” sordb >> 2.log 
查看base分区表的大小 
psql -tc "select get_table_size (‘base.表名’);" sordb >> 3.log 

列出schemname的表名 
select schemaname from pg_tables; 
显示所有的base的表 
select * from pg_tables where schemaname='base'; 
只列出base下的表名 
select tablename pg_tales where schemaname='base' and tablename not like '%_prt_%'; 
################################# 
李宁数据库的备份 
nohup gp_dump --gp-c eposrpt 1>db_dump_eposrpt.log 2>&1 & 

gp_dump --gp-d=/home/gpadmin lxl(数据库名字) 
在/home/gpadmin/目录下会产生 
gp_cdatabase_1_1_20131204160415 
gp_dump_1_1_20131204160415(多个文件) 
gp_restore --gp-k=20131204160415 --gp-d=/home/gpadmin -d lxl 

gp_dump --gp-d=/data/test_db --gp-c test_db 
gp_restore -d sales_history --gp-k=20110419154139 --gp-c 

恢复测试环境数据用如下命令 
gp_dump --gp-d=/data/test_db --gp-c test_db 
gp_restore --gp-k=20141029173207 --gp-c --gp-d=/data/chenyaobin/ -d chenyaobin 

##################################### 
select * from pg_tables where schemaname='base'; 
查看schemaname下表的数量 
select schemaname,count(*) from pg_tables where schemaname not in ('public') group by 1 order by 1; 

计算schemname的大小 
select schemaname_total ('表名'); 

pg_dump -s -n public ldsdb -f public.sql 
除偶数行 
%s/\(^.*$\)\n^.*$l/\l/g

20140220 
查看资源队列的状态 
select * from gp_toolkit.gp_resqueue_status; 
查看资源的角色 
select * from gp_toolkit.gp_resqueue_role; 
查看资源队列中等待的语句 
select * from gp_toolkit.gp_locks_on_resqueue;或 select * from gp_toolkit.gp_locks_resqueue where lorwaiting; 

计算sql语句执行超过20 
select ctime,tfinish,tstart,query_text from queries_history where substr(ctime,1,10)='2013-12-30' and (tfinish-interval '20 minutes')>tstart ; 

计算磁盘的使用量 
COPY (SELECT hostname,filesystem,total_bytes,(max(bytes_used)-min(bytes_used)) as "max-min" from diskspace_history where ctime >= '2014-03-04 0:0:0' and ctime <= '2014-03-04 23:59:59' group by
hostname,filesystem,total_bytes ORDER BY hostname,filesystem) TO '/tmp/diskspace.csv' WITH CSV; 

20140306 
查看资源队列 

select * form pg_resqueue; 
20140307 
磁盘、数据库空间 
SELECT * FROM gp_toolkit.gp_disk_free ORDER BY dfsegment; 
SELECT * FROM gp_toolkit.gp_size_of_database ORDER BY sodddatname; 
数据库的启动时间 
SELECT pg_postmaster_start_time(); 
查看一个数据库中有多少张表 
select count(*) from information_schema.tables where table_schema not in (‘information_schema’, ’pg_catalog’); 
当前数据库占用空间大小 
SELECT pg_database_size(current_database()); 

dd count=10240 df=1024 if=/dev/zero of=/data4/test.disk.sde 

查看数据库最大表和最大索引语句 
SELECT relname, relpages FROM pg_class ORDER BY relpages DESC; 

\d +表明 看表的结构 

ps -ef|grep con593518|grep -v grep |grep -v idle 主机语句的状态(如果全是idle的话,正确) 

cat kehubiao201409.csv | awk -F, '{print $1}' | sort|uniq |grep -v '客户号' () 

查看数据库的系统时间 SELECT current_time,NOW(); 
kill 11 pid (两次) 

用pg_cancel 和pg_terminate 都是通过数据库来完成的,刚才master process 在10月8号 reset了, 意思是master process 没有正常工作了,所以肯定pg_cancel 这些命令是不起作用的 
from Shawn Yan to Everyone: 
下次要给客户说发现master process reset 后,就要及时找售后来调查原因,或直接重启数据库也行,千万不要出了问题还继续使用 
to Shawn Yan (privately): 

李宁测试环境数据传输 
~> scp -r gpadmin@10.1.254.199:/data1/bankup_master.tar.gz/
/data1/ 

scp /data1/bankup_master.tar.gz gpadmin@10.1.254.199:/data1/ 

from Shawn Yan to Everyone: 
具体检查方法,就是跑ps -ef |grep post 命令来看 
from Shawn Yan to Everyone: 
看master 上的进程是否都是同一天跑起来的 

查看备份数据磁盘情况 
while(true);do date; gpssh -f config/all_hosts -e 'uptime' | grep -v uptime; sleep 25; gpssh -f config/all_hosts -e 'df -h | grep data1' | grep -v df; sleep 25; done 

数据库备份用户全局信息 
pg_dumpall --globals-only --filespaces --resource-queues > ./all.sql 

pg_dumpall --globals-only --filespaces --resource-queues -c > ./all_c.sql 

vmstat 
procs -----------memory---------- ---swap-- -----io---- --system-- ----cpu---- 
r b swpd free buff cache si so bi bo in cs us sy id wa 
0 1 24980 10792 8296 47316 5 19 205 52 1161 698 26 3 1 70 
1 观察磁盘活动情况 
磁盘活动情况主要从以下几个指标了解: 
bi:表示从磁盘每秒读取的块数(blocks/s)。数字越大,表示读磁盘的活动越多。 
bo:表示每秒写到磁盘的块数(blocks/s)。数字越大,表示写磁盘的活动越多。 
wa:cpu等待磁盘I/O(未决的磁盘IO)的时间比例。数字越大,表示文件系统活动阻碍cpu的情况越严重,因为cpu在等待慢速的磁盘系统提供数据。wa为0是最理想的。如果wa经常大于10,可能文件系统就需要进行性能调整了。 
2 观察cpu活动情况 
vmstat比top更能反映出cpu的使用情况: 
us:用户程序使用cpu的时间比例。这个数字越大,表示用户进程越繁忙。 
sy: 系统调用使用cpu的时间比例。注意,NFS由于是在内核里面运行的,所以NFS活动所占用的cpu时间反映在sy里面。这个数字经常很大的话,就需要注 意是否某个内核进程,比如NFS任务比较繁重。如果us和sy同时都比较大的话,就需要考虑将某些用户程序分离到另外的服务器上面,以免互相影响。 
id:cpu空闲的时间比例。 
wa:cpu等待未决的磁盘IO的时间比例。 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  postgres