postgresql数据库初始化

        最近在处理pgsql数据库中,发现数据文件有缺失,估计应该是表存储策略脚本中出现了问题。文件缺失较多,用重新导出再导入的方式处理,没能解决。换用删除数据表空间,rm -fr /usr/dbdata/logspace/*后,删除了表空间,但pg_tables中还留存着此表空间中的数据表关联信息,不能进行彻底删除,或者说是因为数据文件的缺失,不能对数据表进行drop操作。这样的话,如果没有对数据库进行过备份操作,只能初始化数据库了initdb。初始化数据库的方法和新建数据库一样,利用createdb的shell脚本。在中间调用了initdb,可以对现有的数据库中的数据进行清空操作。
        同时,还有一点需要注意,pgsql数据库中如果删除了一个表中的数据truncate table tablename;,则这个表所占用的空间是可以释放的,不同于oracle。所以,如果pgsql空间满了,可以清空历史数据表,但最好不要执行drop,容易出错(未验证,应该可以删除历史表)。
 
经常用到的语句:
1、vacuum full;  对数据库空间进行清理。
2、sudo -u postgres /usr/local/pgsql/bin/pg_ctl start -D /usr/local/pgsql/data 启动数据库。
3、清理事务日志,调用 sudo -u postgres /usr/local/pgsql/bin/pg_resetxlog -f /usr/local/pgsql/data
4、查询出一部分所需要的数据表,在shell脚本中,对这些数据表进行统一处理:
#!/bin/sh
PGBIN=/usr/local/pgsql/bin
$PGBIN/psql -U dbuser -d dbdir -c "select tablename from pg_tables where tablename like '%0%'" -t >/usr/local/data/tablename.log
while read line
 do
  if [ -n "$line" ] ;then
   $PGBIN/psql -U dbuser -d dbdir -c "drop table $line cascade;"
  fi
 done < /usr/local/data/tablename.log

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/9521459/viewspace-687608/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/9521459/viewspace-687608/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值