Stuart Woodward Asked: 2012-06-20 21:21:38 +0800 CST2012-06-20 21:21:38 +0800 CST 2012-06-20 21:21:38 +0800 CST 在 Oracle 中,如何将 Schema 移动到不同的表空间? 772 我注意到在 USERS 表空间中创建了一个模式,但我们的本地规则是它应该单独在一个表空间中。在 Oracle 中,如何将 Schema 移动到不同的表空间? oracle schema 3 个回答 Voted Best Answer Iľja 2012-06-20T22:10:19+08:002012-06-20T22:10:19+08:00 模式本身不能被存储,也不能以任何方式整体更改表空间。事实上,它只是一个元结构。相反 - 有DEFAULT TABLESPACE基础的属性USER。如果您更改它,则默认情况下会在此表空间中创建新对象(除非您明确指定另一个对象)。 此外,每种类型的结构(表/索引/分区...)都有自己的移动到另一个表空间的方式。(即移动一个表并不会移动建立在它上面的索引——这是相当不可取的,因为您希望将索引存储在另一个文件系统中以获得更好的性能)。这意味着,您将不得不逐个移动模式对象的内容。 ai10 2012-11-03T18:50:57+08:002012-11-03T18:50:57+08:00 对于 10 和 11G,使用数据泵实用程序。按照这里的教程: http://techxploration.blogspot.com.au/2012/10/changeing-tablespace-of-oracle-schema.html 即使不是最好的方法,它也是最安全的。 santosh tiwary 2018-07-08T07:11:51+08:002018-07-08T07:11:51+08:00 我尝试了许多脚本,但并没有适用于所有对象。您不能将集群对象从一个表空间移动到另一个表空间,因为您必须使用 expdp。所以我建议 expdp 是将所有对象移动到不同表空间的最佳选择。 下面是命令。 nohup expdp \"/ as sysdba\" DIRECTORY=test_dir DUMPFILE=users.dmp LOGFILE=users.log TABLESPACES=USERS & 为了清楚的解释: https ://www.orahow.com/2018/06/move-all-objects-to-another-tablespace.html
模式本身不能被存储,也不能以任何方式整体更改表空间。事实上,它只是一个元结构。相反 - 有
DEFAULT TABLESPACE
基础的属性USER
。如果您更改它,则默认情况下会在此表空间中创建新对象(除非您明确指定另一个对象)。此外,每种类型的结构(表/索引/分区...)都有自己的移动到另一个表空间的方式。(即移动一个表并不会移动建立在它上面的索引——这是相当不可取的,因为您希望将索引存储在另一个文件系统中以获得更好的性能)。这意味着,您将不得不逐个移动模式对象的内容。
对于 10 和 11G,使用数据泵实用程序。按照这里的教程:
http://techxploration.blogspot.com.au/2012/10/changeing-tablespace-of-oracle-schema.html
即使不是最好的方法,它也是最安全的。
我尝试了许多脚本,但并没有适用于所有对象。您不能将集群对象从一个表空间移动到另一个表空间,因为您必须使用 expdp。所以我建议 expdp 是将所有对象移动到不同表空间的最佳选择。
下面是命令。
nohup expdp \"/ as sysdba\" DIRECTORY=test_dir DUMPFILE=users.dmp LOGFILE=users.log TABLESPACES=USERS &
为了清楚的解释: https ://www.orahow.com/2018/06/move-all-objects-to-another-tablespace.html