Oracle中改變表的Owner和tablespace


初用Oracle,很多的不熟悉,建完庫,沒有建用戶,也沒創建表空間,就直接system用戶建表添加數據,幾個月過去,表建了近百個,數據添加了幾萬條,才越來越覺得這種方式缺點太多:

  1. 在PL/SQL中系統表和用戶表顯示在一起,不是一般的亂;
  2. 用戶權限太大,而且也不好控制;
  3. 沒有獨立的表空間,后期維護麻煩。

 

下定決心要改,初步想法是新建一個數據庫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的認識加深了一點。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM