How to relocate tablespace directory

I’ll demonstrate how to relocate a tablespace directory without the reconstruction of databases.

I have a tablespace tblspc located at /home/postgres/tblspc and want to relocate to /home/postgres/new_tblspc.

[1] Get Oid of the tablespace

testdb=# SELECT oid,spcname FROM pg_tablespace WHERE spcname = ‘tblspc‘;    oid | spcname 

 -------+---------- 

 24580 | tblspc (1 row)

[2] Stop postgres

[postgres]$ pg_ctl -D $PGDATA stop

[3] Relocate the tablespace directory

[postgres]$ cp -r /home/postgres/tblspc /home/postgres/new_tblspc [postgres]$ rm -rf /home/postgres/tblspc

[4] Change the link of tablespace to new directory

[postgres]$ cd $PGDATA/pg_tblspc [postgres]$ rm 24580 [postgres]$ ln -s /home/postgres/new_tblspc 24580

[5] Start postgres

[postgres]$ pg_ctl -D $PGDATA start

Then, the tablespace’s directory has changed.

testdb=# SELECT pg_tablespace_location(24580); pg_tablespace_location 

-------------------------- 

/home/postgres/new_tblspc (1 row)

参考:

http://www.interdb.jp/blog/tips/relocatingtablespace/

时间: 2024-12-29 12:32:05

How to relocate tablespace directory的相关文章

PostgreSQL中流复制pg_basebackup做了什么

解压PostgreSQL源代码包后可以到如下路径:postgresql-9.2.4\src\backend\replication下可以看到,basebackup.c,另外还可以看到walreceiver.c,walsender.c. basebackup做了什么一目了然: /*------------------------------------------------------------------------- * * basebackup.c * code for taking a

关于表空间offline小知识点

1.表空间offline的原因 Taking Tablespaces Offline Taking a tablespace offline makes it unavailable for normal access. You may want to take a tablespace offline for any of the following reasons: To make a portion of the database unavailable while allowing no

Oracle Undo tablespace恢复(无备份)

Oracle Undo tablespace恢复 系统环境:   操作系统:RedHat EL55   Oracle:  Oracle 11gR2   Oracle 9i后,采用了undo tablespace管理undo数据,实现undo的自动管理,本案例演示了undo表空间被破坏后如何恢复:如果有备份,通过备份恢复非常容易,但在没有备份的情况下,就需要采用非常规手段来恢复了,呵呵. 1.案例应用环境 undo表空间undo segments: 14:34:44 [email protecte

oracle之表空间(tablespace)、方案(schema)、段(segment)、区(extent)、块(block)

数据文件和日志文件是数据库中最重要的文件.它们是数据存储的地方.每个数据库至少有一个与之相关的数据文件,通常情况下不只一个,有很多.数据在数据文件中是如何组织的?要了解这些内容我们首先必须理解什么是表空间(tablespace).段(segment).区(extent).块(block),这些都是oracle数据库在数据文件中组织数据的基本单元.现在我们来理解这些概念. 块是数据存储的物理单位,也是数据文件中最基础的单位,数据直接存储在块上.是oracle空间分配的最小单位.oracle中的块大

PostgreSQL: Query for location of global tablespace?

Q: I have been trying to make our database clients pro-active about not filling up the partition on which the database they are using resides. As all our clients are on the same host as the database manager, it should be easy enough for user-created

冷备手工完全恢复(recover database,recover tablespace,recover datafile)

冷备手工完全恢复 1.   手工完全恢复三种级别: recover database: 所有或大部分datafile丢失,一般是在mount状态完成.recover tablespace:    非关键表空间损坏,表空间下某些数据文件不能访问,一般是在open下完成.recover datafile: 单一或少数数据文件损坏,可以在mount或open 状态完成.四个关键文件:1)system01.dbf, 2) undo tablespace,3)control file 4)current

【12C考题精解】OCP 1z0-060 QUESTION 8: Recovery of a Tablespace in the CDB

QUESTION 8 Your multitenant container (CDB) containing three pluggable databases (PDBs) is running in ARCHIVELOG mode. You find that the SYSAUX tablespace is corrupted in the root container. The steps to recover the tablespace are as follows:   1. Mo

Oracle 12.1新特性:在线rename或relocate数据文件

在Oracle12.1之前的版本中要重命名数据文件或移动数据文件需要关闭数据库或把表空间/数据文件置为offline状态才可以,参考之前总结的Oracle修改数据文件名/移动数据文件.但到了12.1版本,可以直接在数据文件online状态下把数据文件重命名或移动数据文件. 要实现这一功能需要使用ALTER DATABASE MOVE DATAFILE 语句,语法如下 ALTER DATABASE MOVE DATAFILE ( 'filename' | 'ASM_filename' | file

oracle中的表空间(tablespace)、方案(schema)、段(segment)、区(extent)、块(block)

数据文件和日志文件是数据库中最重要的文件.它们是数据存储的地方.每个数据库至少有一个与之相关的数据文件,通常情况下不只一个,有很多.数据在数据文件中是如何组织的?要了解这些内容我们首先必须理解什么是表空间(tablespace).段(segment).区(extent).块(block),这些都是oracle数据库在数据文件中组织数据的基本单元.现在我们来理解这些概念.     块是数据存储的物理单位,也是数据文件中最基础的单位,数据直接存储在块上.是oracle空间分配的最小单位.oracle