【Windows-PostgreSQL】PostgreSQL数据库迁移涉及到的表空间的问题

要迁移数据库的数据文件到其他目录下,停止PostgreSQL服务,移动data目录到目的地后,修改对应的conf配置文件的数据目录参数为新的目录,启动PostgreSQL服务,出现错误,提示不能启动。纠结此问题很长时间,在文档中发现了数据库的表空间是记录在postgres这个系统数据库中的。

说到这里,就要再简单讲一下表空间的概念了。表空间就是一个简单的目录,其主要用途分两个:
1.单独扩展表空间用,一旦磁盘或分区被耗尽,可以创建一个表空间到其他磁盘或分区上面。
2.区分不同对象的存储位置,比如可将索引放入较快磁盘的表空间上,而将固定不变的数据放入较慢磁盘的表空间上。
与Oracle数据库中的表空间被独占不同,PostgreSQL的表空间是可以被共享的。
当创建了一个表空间后,这个表空间可以被多个数据库、表、索引等数据库对象使用。达到对象的分离与归类的目的。
在PostgreSQL中有两个系统自建表空间:pg_global和pg_default。

前者是系统全局表空间,存储了关键的共享系统目录。后者是系统全局表空间,存储了关键的共享系统目录。
后者是系统默认表空间,可通过set default tablespace=tablespacename来指定为其他表空间,在建立数据库、表、索引等数据库对象时,若不指定表空间参数,则系统自动将对象创建到默认表空间中。如create table tt(id int) tablespace space1.该语句等价于set default tablespace=space1;create table tt(id int);

tablespace的记录存储在系统数据库postgrse的pg_tablspace表中,可以使用命令/db 或者sql语句select * from pg_tablespace命令查看。

                   List of tablespaces
   Name    |  Owner   |             Location
-----------+----------+-----------------------------------
pg_default  | postgres  |
pg_global    | postgres   |
ts_licai         | kanon       | D:/PostgreSQL90/TableSpc/ts_licai

这样,对于移动数据目录到其他位置后,要如何修改表空间也就了然了:需要修改pg_tablspace这个表内对应的表空间的Location字段为新的位置后,重启数据库。

时间: 2024-09-02 05:47:49

【Windows-PostgreSQL】PostgreSQL数据库迁移涉及到的表空间的问题的相关文章

【数据迁移】使用传输表空间迁移数据

恢复管理器: Release 11.1.0.6.0 - Production on 星期六 8月 21 23:23:22 2010 Copyright (c) 1982, 2007, Oracle.  All rights reserved. 连接到目标数据库: ORCL (DBID=1253972717) RMAN>transport tablespace users 2>tablespace destination 'f:\lib\tbsd' 3>auxiliary  destina

Oracle的数据库、表空间及数据文件简介

数据文件是数据库的物理存储单位,而表空间TableSpace则是数据库的逻辑组成部分.数据库的数据是存储在表空间中的,而一个表空间可以由一个或多个数据文件组成,一个数据文件只能属于一个表空间.一旦数据文件被加入到某个表空间后,就不能删除这个文件,如果要删除某个数据文件,只能删除其所属于的表空间才行. 数据库,表空间,数据文件是紧密关联的,但它们有着重要的区别: 数据库和表空间 一个Oracle数据库由一个或多个叫做表空间的逻辑存储单元组成,表空间存储了所有数据库的数据. 表空间和数据文件 在Or

海量数据迁移之传输表空间(一)

在自己接触的很多的数据迁移工作中,使用外部表在一定程度上达到了系统的预期,对于增量,批量的数据迁移效果还是不错的,但是也不能停步不前,在很多限定的场景中,有很多物理迁移中使用传统方法还是相当不错的,传输表空间就是一个样例. 最近的有一个数据迁移任务是需要把一些全新的数据表迁移到另外一个库中,因为这些表在目标库中不存在,所以使用逻辑迁移就显得有些力不从心了.尽管在速度可以接受的情况下,最大的痛处就是大量的归档文件了. 因为需要在原有的schema下增加一些全新的数据表,不是很肯定传输表空间的校验是

Windows下Postgresql数据库的下载与配置方法_PostgreSQL

注意下载的是二进制版,不是带Windows Installer的. http://www.enterprisedb.com/products-services-training/pgbindownload x86下载http://get.enterprisedb.com/postgresql/postgresql-9.2.4-1-windows-binaries.zip x64下载http://get.enterprisedb.com/postgresql/postgresql-9.2.4-1-

MySQL和PostgreSQL两数据库的对决

在这篇文章中,我们选用MySQL 4.0.2-alpha与PostgreSQL 7.2进行比较,因为MySQL 4.0.2-alpha开始支持事务的概念,因此这样的比较对于MySQL应该较为有利.我们这样的比较不想仅仅成为一份性能测试报告,因为至少从我个人来看,对于一个数据库,稳定性和速度并不能代表一切.对于一个成熟的数据库,稳定性肯定会日益提供.而随着硬件性能的飞速提高,速度也不再是什么太大的问题. 一.前言 前一段时间,我曾经翻译过一篇 将你的网站从MySQL改为PostgreSQL ,其实

针对MySQL和PostgreSQL两数据库对比

PostgreSQL 在这篇文章中,我们选用MySQL 4.0.2-alpha与PostgreSQL 7.2进行比较,因为MySQL 4.0.2-alpha开始支持事务的概念,因此这样的比较对于MySQL应该较为有利. 我们这样的比较不想仅仅成为一份性能测试报告,因为至少从我个人来看,对于一个数据库,稳定性和速度并不能代表一切.对于一个成熟的数据库,稳定性肯定会日益提供.而随着硬件性能的飞速提高,速度也不再是什么太大的问题. 二.两者的共同优势 这两个产品都属于开放源码的一员,性能和功能都在高速

将Mysql数据库迁移到Windows Azure上的SQL database中

Windows http://www.aliyun.com/zixun/aggregation/13357.html">Azure上可以提供多种Database As a service.其中SQL database是由微软提供发布并提供支持的.Azure上的SQL database与传统的SQL server的区别在于,Azure提供了原生的数据库高可用(一主两备).可在数秒内创建新的数据库实例.可快速进行数据库扩容.支持Federation.提供了全Web化的管理和设计界面.简便的备份

PostgreSQL 查看数据库,索引,表,表空间大小的示例代码_PostgreSQL

一.简介 PostgreSQL 提供了多个系统管理函数来查看表,索引,表空间及数据库的大小,下面详细介绍一下. 二.数据库对象尺寸函数 函数名 返回类型 描述 pg_column_size(any) int 存储一个指定的数值需要的字节数(可能压缩过) pg_database_size(oid) bigint 指定OID的数据库使用的磁盘空间 pg_database_size(name) bigint 指定名称的数据库使用的磁盘空间 pg_indexes_size(regclass) bigin

PostgreSQL查看数据库,索引,表空间大小

 代码如下 复制代码 实例讲解 3.1 查看存储一个指定的数值需要的字节数 david=# select pg_column_size(1);      pg_column_size ----------------               4 (1 row) david=# select pg_column_size(10000);  pg_column_size ----------------               4 (1 row) david=# select pg_colu