通过更改所有权oracle将表从一个模式移动到另一个模式?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了通过更改所有权oracle将表从一个模式移动到另一个模式?相关的知识,希望对你有一定的参考价值。
我在名为DEMO的模式中有四个表。我想在另一个名为TEST的模式中移动/克隆/复制它们。
是否可以通过将所有权从DEMO更改为TEST来移动表格?
我使用Oracle 11和oracle sql developer 4。
答案
您可以使用Oracle的数据泵实用程序导出表,然后将它们导入到其他模式,
Oracle安装程序:
CREATE DIRECTORY dump_dir AS '/path/to/put/dumps';
GRANT WRITE ON DIRECTORY dump_dir TO DEMO;
GRANT READ, WRITE ON DIRECTORY dump_dir TO TEST;
GRANT CREATE TABLE TO TEST;
出口:
EXPDP DEMO/DEMOPASSWORD directory=DUMP_DIR tables=DEMO.TABLE1,DEMO.TABLE2,DEMO.TABLE3,DEMO.TABLE4 dumpfile=DEMO.dmp logfile=DEMO.log
进口:
使用remap_schema
(如果需要,还可以使用remap_tablespace
):
IMPDP TEST/TESTPASSWORD directory=DUMP_DIR tables=DEMO.TABLE1,DEMO.TABLE2,DEMO.TABLE3,DEMO.TABLE4 remap_schema DEMO:TEST remap_tablespace=DEMO_TBS:TEST_TBS dumpfile=DEMO.dmp logfile=DEMO.log
如果表中有外键,则将该点重新映射到DEMO
架构中未重新映射的其他表,则重映射将尝试重新映射这些表,并且无法创建外键(因为TEST
中不存在该表) schema)但仍应导入数据。查看IMPDP
的输出以查找这些故障,然后使用,例如:
ALTER TABLE TEST.TABLE1
ADD CONSTRAINT TABLE1__COLUMN1__FK
FOREIGN KEY ( COLUMN1 ) REFERENCES DEMO.OTHER_TABLE ( COLUMN1 );
创建适当的外键。
以上是关于通过更改所有权oracle将表从一个模式移动到另一个模式?的主要内容,如果未能解决你的问题,请参考以下文章
Oracle PL/SQL 和 Shell 脚本:从一种模式到另一种模式