初用Oracle,很多的不熟悉,建完庫,沒有建用戶,也沒創建表空間,就直接system用戶建表添加數據,幾個月過去,表建了近百個,數據添加了幾萬條,才越來越覺得這種方式缺點太多:
- 在PL/SQL中系統表和用戶表顯示在一起,不是一般的亂;
- 用戶權限太大,而且也不好控制;
- 沒有獨立的表空間,后期維護麻煩。
下定決心要改,初步想法是新建一個數據庫B,創建用戶和表空間,將原數據庫A中的數據導過去,就可以了。導出沒問題,導入碰到很多問題。用EXP/IMP、EXPDP/IMPDP都試過,但是改不了Owner和TableSpace。
經高手指點,才有了最終的解決思路,一切在原數據庫中操作即可。
1、創建表空間:
CREATE TABLESPACE ts_forest DATAFILE 'C:\ORACLE\PRODUCT\10.1.0\ORADATA\ORCL\TEST_DATA01.DBF' SIZE 500M AUTOEXTEND ON NEXT 32M MAXSIZE 2048M EXTENT MANAGEMENT LOCAL;
2、創建用戶
CREATE USER 賬戶名 IDENTIFIED BY 密碼 DEFAULT TABLESPACE ts_forest;
3、建表
建表的基本語句如下:
1 create table dbt_age_group as select * from system.dbt_age_group;
但數據庫中表太多,接近100個,一個個操作太麻煩,采用簡單點的方法。
- 先在PL/SQL中選中要操作的表,右鍵選擇“Copy comma seperated”,得到用逗號分割的表名列表
- 將表名字符串用正則工具Regbuddy進行字符串替換,瞬間,近百條建表語句生成。
- 將替換結果復制到PL/SQL的命令窗口運行,完成。
雖然是個小問題,但由於本人對Oracle不是很熟悉,在網上也沒查找到最好的解決方案,經過QQ群網友指點,實現了預期的目標,也使我對Oracle的認識加深了一點。