簡體   English   中英

通過更改所有權oracle將表從一種模式移動到另一種模式?

[英]Move table from one schema to another by changing ownership oracle?

我在名為DEMO的模式中有四個表。 我想在另一個名為TEST的架構中移動/克隆/復制它們。

通過將所有權從DEMO更改為TEST可以移動桌子嗎?

我使用Oracle 11和oracle sql開發人員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中不存在)模式),但仍應導入數據。 查看IMPDP的輸出以找到這些失敗,然后使用,例如:

ALTER TABLE TEST.TABLE1
  ADD CONSTRAINT TABLE1__COLUMN1__FK
  FOREIGN KEY ( COLUMN1 ) REFERENCES DEMO.OTHER_TABLE ( COLUMN1 );

創建適當的外鍵。

如果您可以從新模式訪問舊模式,則可以使用:

CREATE table_name UNRECOVERABLE AS SELECT * FROM sourceSchema.SOURCE_table;

這將在新模式下重新創建表; 然后您可以根據需要從舊模式中刪除該表。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM