PostgreSQL是以加州大学伯克利分校计算机系开发的 POSTGRES, Version 4.2为基础的对象关系型数据库管理系统(ORDBMS)。POSTGRES开创的许多概念在很久以后才出现在商业数据库中。PostgreSQL是最初伯克利代码的一个开放源码的继承者。它支持大部分SQL标准并且提供了许多其它现代特性:
复杂查询
外键
触发器
可更新的视图
事务完整性
多版本并发控制
另外,PostgreSQL可以用许多方法进行扩展,比如通过增加新的:
数据类型
函数
操作符
聚合函数
索引方法
过程语言
在个人看来,在开源数据库中PostgreSQL 是和ORACLE最相近的一个,和ORACLE兼容性较好,如果去IOE,该数据库是一个不错的选择
操作系统版本
[root@web103 ~]# more /etc/issue
CentOS release 5.9 (Final)
Kernel r on an m
[root@web103 ~]# uname -a
Linux web103 2.6.18-348.el5 #1 SMP Tue Jan 8 17:53:53 EST 2013 x86_64 x86_64 x86_64 GNU/Linux
下载对应PostgreSQL对应rpm包
因为操作系统版本为CentOS 5.9的64位Linux,因此下载对应版本prm包,主要下载了server,client,contrib,libs四个包
[root@web103 ~]# mkdir pg
[root@web103 ~]# cd pg
[root@web103 pg]# wget http://yum.postgresql.org/9.4/redhat/rhel-5-x86_64/postgresql94-9.4.4-1PGDG.rhel5.x86_64.rpm
--2015-06-16 20:44:52-- http://yum.postgresql.org/9.4/redhat/rhel-5-x86_64/postgresql94-9.4.4-1PGDG.rhel5.x86_64.rpm
Resolving yum.postgresql.org... 174.143.35.196, 2001:4800:1501:1::196
Connecting to yum.postgresql.org|174.143.35.196|:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: 1807607 (1.7M) [application/x-redhat-package-manager]
Saving to: `postgresql94-9.4.4-1PGDG.rhel5.x86_64.rpm'
100%[===================================================================================================================>] 1,807,607 73.6K/s in 30s
2015-06-16 20:45:24 (58.1 KB/s) - `postgresql94-9.4.4-1PGDG.rhel5.x86_64.rpm' saved [1807607/1807607]
[root@web103 pg]# wget http://yum.postgresql.org/9.4/redhat/rhel-5-x86_64/postgresql94-server-9.4.4-1PGDG.rhel5.x86_64.rpm
--2015-06-16 20:45:35-- http://yum.postgresql.org/9.4/redhat/rhel-5-x86_64/postgresql94-server-9.4.4-1PGDG.rhel5.x86_64.rpm
Resolving yum.postgresql.org... 174.143.35.196, 2001:4800:1501:1::196
Connecting to yum.postgresql.org|174.143.35.196|:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: 6175991 (5.9M) [application/x-redhat-package-manager]
Saving to: `postgresql94-server-9.4.4-1PGDG.rhel5.x86_64.rpm'
100%[===================================================================================================================>] 6,175,991 58.5K/s in 2m 4s
2015-06-16 20:47:42 (48.6 KB/s) - `postgresql94-server-9.4.4-1PGDG.rhel5.x86_64.rpm' saved [6175991/6175991]
[root@web103 pg]# wget http://yum.postgresql.org/9.4/redhat/rhel-5-x86_64/postgresql94-contrib-9.4.4-1PGDG.rhel5.x86_64.rpm
--2015-06-16 20:47:51-- http://yum.postgresql.org/9.4/redhat/rhel-5-x86_64/postgresql94-contrib-9.4.4-1PGDG.rhel5.x86_64.rpm
Resolving yum.postgresql.org... 174.143.35.196, 2001:4800:1501:1::196
Connecting to yum.postgresql.org|174.143.35.196|:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: 664051 (648K) [application/x-redhat-package-manager]
Saving to: `postgresql94-contrib-9.4.4-1PGDG.rhel5.x86_64.rpm'
100%[===================================================================================================================>] 664,051 28.1K/s in 53s
2015-06-16 20:48:46 (12.3 KB/s) - `postgresql94-contrib-9.4.4-1PGDG.rhel5.x86_64.rpm' saved [664051/664051]
[root@web103 pg]# wget http://yum.postgresql.org/9.4/redhat/rhel-5-x86_64/postgresql94-libs-9.4.4-1PGDG.rhel5.x86_64.rpm
--2015-06-16 20:51:10-- http://yum.postgresql.org/9.4/redhat/rhel-5-x86_64/postgresql94-libs-9.4.4-1PGDG.rhel5.x86_64.rpm
Resolving yum.postgresql.org... 174.143.35.196, 2001:4800:1501:1::196
Connecting to yum.postgresql.org|174.143.35.196|:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: 233206 (228K) [application/x-redhat-package-manager]
Saving to: `postgresql94-libs-9.4.4-1PGDG.rhel5.x86_64.rpm'
100%[===================================================================================================================>] 233,206 70.3K/s in 3.2s
2015-06-16 20:51:16 (70.3 KB/s) - `postgresql94-libs-9.4.4-1PGDG.rhel5.x86_64.rpm' saved [233206/233206]
[root@web103 pg]# ls
postgresql94-9.4.4-1PGDG.rhel5.x86_64.rpm postgresql94-libs-9.4.4-1PGDG.rhel5.x86_64.rpm
postgresql94-contrib-9.4.4-1PGDG.rhel5.x86_64.rpm postgresql94-server-9.4.4-1PGDG.rhel5.x86_64.rpm
安装PostgreSQL rpm包
[root@web103 pg]# rpm -ivh *.rpm
warning: postgresql94-9.4.4-1PGDG.rhel5.x86_64.rpm: Header V3 DSA signature: NOKEY, key ID 442df0f8
Preparing... ########################################### [100%]
1:postgresql94-libs ########################################### [ 25%]
2:postgresql94 ########################################### [ 50%]
3:postgresql94-contrib ########################################### [ 75%]
4:postgresql94-server ########################################### [100%]
创建PostgreSQL 默认库
[root@web103 pg]# service postgresql-9.4 initdb
Initializing database: [ OK ]
[root@web103 data]# pwd
/var/lib/pgsql/9.4/data
[root@web103 data]# ls -ltr
total 120
-rw------- 1 postgres postgres 21265 Jun 16 20:52 postgresql.conf
-rw------- 1 postgres postgres 88 Jun 16 20:52 postgresql.auto.conf
drwx------ 3 postgres postgres 4096 Jun 16 20:52 pg_xlog
-rw------- 1 postgres postgres 4 Jun 16 20:52 PG_VERSION
drwx------ 2 postgres postgres 4096 Jun 16 20:52 pg_twophase
drwx------ 2 postgres postgres 4096 Jun 16 20:52 pg_tblspc
drwx------ 2 postgres postgres 4096 Jun 16 20:52 pg_subtrans
drwx------ 2 postgres postgres 4096 Jun 16 20:52 pg_snapshots
drwx------ 2 postgres postgres 4096 Jun 16 20:52 pg_serial
drwx------ 2 postgres postgres 4096 Jun 16 20:52 pg_replslot
drwx------ 4 postgres postgres 4096 Jun 16 20:52 pg_multixact
drwx------ 4 postgres postgres 4096 Jun 16 20:52 pg_logical
-rw------- 1 postgres postgres 1636 Jun 16 20:52 pg_ident.conf
-rw------- 1 postgres postgres 4224 Jun 16 20:52 pg_hba.conf
drwx------ 2 postgres postgres 4096 Jun 16 20:52 pg_dynshmem
drwx------ 2 postgres postgres 4096 Jun 16 20:52 pg_clog
drwx------ 5 postgres postgres 4096 Jun 16 20:52 base
drwx------ 2 postgres postgres 4096 Jun 16 21:16 pg_log
drwx------ 2 postgres postgres 4096 Jun 16 21:16 global
-rw------- 1 postgres postgres 80 Jun 16 21:39 postmaster.pid
-rw------- 1 postgres postgres 59 Jun 16 21:39 postmaster.opts
drwx------ 2 postgres postgres 4096 Jun 16 21:39 pg_stat
drwx------ 2 postgres postgres 4096 Jun 16 21:39 pg_notify
drwx------ 2 postgres postgres 4096 Jun 16 22:00 pg_stat_tmp
另外还可以通过如下两种方式创建
initdb -D /var/lib/pgsql/9.4/data
pg_ctl -D /var/lib/pgsql/9.4/data
设置PostgreSQL 开机自动启动
[root@web103 pg]# chkconfig postgresql-9.4 on
[root@web103 pg]# chkconfig --list|grep post
postgresql-9.4 0:off 1:off 2:on 3:on 4:on 5:on 6:off
查看默认创建PostgreSQL 用户
[root@web103 data]# more /etc/passwd|grep post
postgres:x:26:26:PostgreSQL Server:/var/lib/pgsql:/bin/bash
增加PATH环境变量
-bash-3.2$echo "PATH=$PATH:/usr/pgsql-9.4/bin;export PATH" >>~/.bash_profile
启动PostgreSQL 数据库
--方法1
-bash-3.2$ postgres -D /var/lib/pgsql/9.4/data
----或者
-bash-3.2$ postgres -D /var/lib/pgsql/9.4/data >~/pg.log 2>&1 &
方法2
pg_ctl start -l ~/pg.log -D /var/lib/pgsql/9.4/data
这里如果在环境变量中配置了PGDATA,那-D也可以不指定,-l为指定日志目录,建议使用封装的方法2启动pg
查看PostgreSQL进程信息
[root@web103 data]# ps -ef|grep post|grep -v grep
postgres 4432 1 0 21:39 ? 00:00:00 /usr/pgsql-9.4/bin/postgres -D /var/lib/pgsql/9.4/data
postgres 4433 4432 0 21:39 ? 00:00:00 postgres: logger process
postgres 4435 4432 0 21:39 ? 00:00:00 postgres: checkpointer process
postgres 4436 4432 0 21:39 ? 00:00:00 postgres: writer process
postgres 4437 4432 0 21:39 ? 00:00:00 postgres: wal writer process
postgres 4438 4432 0 21:39 ? 00:00:00 postgres: autovacuum launcher process
postgres 4439 4432 0 21:39 ? 00:00:00 postgres: stats collector process
这里可以看到pg也和oracle有几分类似,有日志进程,checkpoint进程,有写进程等(具体以后分析)
停止PostgreSQL数据库
-bash-3.2$ pg_ctl stop -D /var/lib/pgsql/9.4/data
waiting for server to shut down.... done
server stopped
-bash-3.2$ ps -ef|grep post|grep -v grep
root 6036 499 0 22:07 pts/0 00:00:00 su - postgres
postgres 6037 6036 0 22:07 pts/0 00:00:00 -bash
postgres 6113 6037 0 22:08 pts/0 00:00:00 ps -ef
PostgreSQL默认监听端口
在后续章节中进一步讲解相关配置和访问
[root@web103 pgsql]# netstat -natp|grep postgres
tcp 0 0 127.0.0.1:5432 0.0.0.0:* LISTEN
联系:手机(13429648788) QQ(107644445)
链接:http://www.xifenfei.com/5941.html