隨筆-7  評論-9  文章-0  trackbacks-0

          問題:
          數據庫表中沒有建立主鍵,即使建立了主鍵,也是使用與業務相關的字段建立的主鍵,還有復合主鍵。
          調整:
          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 閱讀(703) 評論(0)  編輯  收藏

          只有注冊用戶登錄后才能發表評論。


          網站導航:
           
          主站蜘蛛池模板: 平阳县| 五常市| 威远县| 濮阳市| 读书| 林口县| 尚义县| 岫岩| 兰州市| 应城市| 东台市| 丰台区| 桂平市| 安新县| 石阡县| 锡林郭勒盟| 南宁市| 房产| 梁山县| 边坝县| 长宁区| 雅江县| 阿拉尔市| 虎林市| 九江县| 台前县| 江川县| 和田市| 吴旗县| 志丹县| 尼玛县| 凤冈县| 吉隆县| 常宁市| 邹城市| 朝阳市| 民和| 湖南省| 北宁市| 安西县| 田东县|