問題:
數據庫表中沒有建立主鍵,即使建立了主鍵,也是使用與業務相關的字段建立的主鍵,還有復合主鍵。
調整:
1)為每個表添加ID列,并創建主鍵;
2)為每個表創建Oracle Sequence,使用trigger實現自動獲取;
3)原來使用業務鍵創建的主鍵改為唯一索引。
實現:
1)從舊數據庫中導出表結構及其他用戶對象,在新數據庫中創建用戶并導入
exp username/passwd@dbname file=old.dmp rows=n compress=n
說明:
a) exp命令不能使用一個參數比如tables=all 導出所有表,需要指定表名列表;表名列表獲取sql:select table_name from cat where table_type = 'TABLE';
b) 如果只導出表結構而不導出其他用戶對象(sequence、procedure、trigger等),可以指定tables參數,例如:tables=tab1,tab2
導入新數據庫后,刪除沒有用的用戶對象。(為避免JOB、數據庫鏈、視圖因權限不足而失敗,使用DBA用戶導入)
2)使用程序連接新數據,根據新數據中的表名生成sql,并在新數據庫中執行
sql的內容包括根據舊主鍵創建唯一索引、刪除舊主鍵、創建ID列、創建ID主鍵、創建Sequence、創建Trigger
3)從舊數據庫中導出數據,在新數據庫中導入數據
exp username/passwd@dbname tables=tablename file=filename.dmp rows=y compress=n
既包含表結構,又包含數據
---------------------------------------------------------------------------------------------
使用PL/SQL Developer導出/導入表結構、表數據
1)導出表結構:
Tools-->Export User Objects(導出用戶對象) -->選擇要導出的表(包括Sequence等)-->.sql文件,導出的都為sql文件
a)不要勾選Include Owner,否則用戶對象前面會有Owner名字。不要勾選Include Storage,否則建表語句會有與存儲有關的子句。
b)如果只導出表,則只選擇表對象。
導出表數據:
Tools-->Export Tables-->選擇表,選擇SQL Inserts-->.sql文件
導入表結構:
執行剛剛導出的sql文件,記住要刪掉table前的用戶名,比如以前這表名為sys.tablename,必須刪除sys
導入表數據:
執行剛剛導出的sql文件
posted on 2011-05-25 15:28
jeffma 閱讀(700)
評論(0) 編輯 收藏