[Oracle]整個Schema備份
2009-02-17 |
以下做法,可以將一整個Schema另存到另一個Schema,並以新的Tablespace儲存新資料:
SELECT 'CREATE TABLE CS972.' || OBJECT_NAME || ' AS SELECT * FROM CENTER.' || OBJECT_NAME || ';'
FROM USER_OBJECTS
WHERE OBJECT_TYPE = 'TABLE' AND SUBSTR(OBJECT_NAME, 0, 4) <> 'ATT_' AND SUBSTR(OBJECT_NAME, 0, 4) <> 'BBS_' AND SUBSTR(OBJECT_NAME, 0, 7) <> 'SECRET_' (灰色部分是我的條件,你可以不必理會)
結果會有許多像這樣的東西:
CREATE TABLE CS972.ACADEMIC_PERIOD AS SELECT * FROM CENTER.ACADEMIC_PERIOD;
CS972為新的Schema
CENTER為原有的Schema
將結果儲存到一個檔案(此例為cs972.sql),再用sqlplus匯入:
@cs972.sql