Oracle擴展表空間以及數據遷移

擴展表空間
表空間是數據庫的邏輯劃分,一個表空間只能屬於一個數據庫,所有的數據庫對象都存放在指定的表空間中,但主要存放的是表, 所以稱作表空間。一旦表空間佔滿了,再往裏面插數據,就會有提示。

具體表空間步驟如下所示:
① 查看錶空間的名字及文件所在位置。

select tablespace_name,file_id,file_name,round(bytes / (1024 * 1024), 0) total_space
from sys.dba_data_files order by tablespace_name;


② 查詢表空間信息。

select username,default_tablespace,t.* from dba_users t


③ 查詢當前表空間下使用情況。(從下面查詢結果看出,這個表空間已經滿了,存不下任何東西,需要進行擴展表空間)

select a.tablespace_name,
       a.bytes / 1024 / 1024 "sum MB",
       (a.bytes - b.bytes) / 1024 / 1024 "used MB",
       b.bytes / 1024 / 1024 "free MB",
       round(((a.bytes - b.bytes) / a.bytes) * 100, 2) "used%"
  from (select tablespace_name, sum(bytes) bytes
          from dba_data_files
         group by tablespace_name) a,
       (select tablespace_name, sum(bytes) bytes, max(bytes) largest
          from dba_free_space
         group by tablespace_name) b
 where a.tablespace_name = b.tablespace_name
 order by ((a.bytes - b.bytes) / a.bytes) desc;


④ 擴展表空間到2G(執行擴展語句後即可操作數據庫,無需重啓)。

alter database datafile '/u01/app/oracle/oracledata/ebidding_ztb_data.dbf' resize 2048M;

數據遷移
Oracle數據遷移在日常的開發工作中是必須掌握的一個操作,如今有很多工具可以做數據遷移的,如:navicat等。本文中數據遷移不借助工具,僅使用Oracle原始的命令數據遷移。數據遷移的情景目前我總結一下兩種情況:

一、同一個用戶/表空間中的數據遷移步驟如下:
① 登陸oracle
     命令:su - oracle
     
② 創建備份文件夾並授權(本文中文件夾路徑爲:/u01/dbbak
     命令:mkdir dbbak
                sudo chmod 777 dbbak
③ 建立導出文件所在目錄(該命令需要登陸數據庫纔可以執行,即輸入命令:sqlplus / as sysdba
     命令:create or replace directory DBBAK as  '/u01/dbbak';
                select * from dba_directories;(查看命令)
④ 備份dmp文件(用戶/密碼是數據庫登陸用戶和密碼,dbbak.dmp和dbbak.log中dbbak爲自定義名稱
     命令:expdp 用戶/密碼 schemas=用戶 directory=DBBAK dumpfile=dbbak.dmp logfile=dbbak.log
     
⑤ 還原dmp文件
     命令:impdp 用戶/密碼 schemas=用戶 directory=DBBAK dumpfile=dbbak.dmp logfile=dbbak.log
注意:有一些情況下,執行備份或者還原命令會報錯:directory name DBBAK is invalid,其主要的原因是權限問題,請更換擁有權限的賬號密碼即可。

二、不同用戶/表空間中的數據遷移步驟如下:
備份數據如上述第一種情況中,①~④的步驟不變,其變化的是創建用戶及還原dmp文件不同。
① 創建用戶/表空間
     創建用戶命令:create user 用戶名  profile default  identified by 密碼 default tablespace 表空間名稱 temporary tablespace 臨時表空間名稱 account unlock;
     創建表空間命令:create tablespace 表間名 datafile '數據文件名(自己安裝oracle時的路徑,如:/u01/app/oracle/oradata/bpas/XXXX.dbf)' size 表空間大小,如:create tablespace data_name datafile 'E:\oracle\oradata\data_name.dbf' size 2000M;
② 授權
     命令:grant dba to 創建的用戶名;
                grant connect to 創建的用戶名;
                grant resource to  創建的用戶名;
                grant create sequence to  創建的用戶名;
                grant create session to  創建的用戶名;
                grant create any view to  創建的用戶名;
                grant create any table to  創建的用戶名;
                grant delete any table to  創建的用戶名;
                grant insert any table to  創建的用戶名;
                grant select any table to  創建的用戶名;
                grant update any table to  創建的用戶名;
                grant create any index to 創建的用戶名;
                grant unlimited tablespace to 創建的用戶名;
                grant create any index to 創建的用戶名;
③ 還原
     命令:impdp 用戶名/密碼 directory=DBBAK dumpfile=dbbak.dmp logfile=dbbak.log REMAP_SCHEMA=數據所在用戶名:創建的用戶名;(用戶名稱不相同,表空間名稱相同)
     命令:impdp 用戶名/密碼 directory=DBBAK dumpfile=dbbak.dmp logfile=dbbak.log REMAP_SCHEMA=數據所在用戶名:創建的用戶名 remap_tablespace=數據庫所在表空間:創建的表空間;(用戶名稱不相同,表空間名稱也不相同)
注意:如果在還原的過程中,報文件的權限不足的時候,需要退出oracle到linux下,執行相關的授權命令。
     命令:chown -R oracle:oinstall dbbak;(dbbak爲備份文件夾,自定義即可)。

、注意不同的命令有不同的還原
     Oracle數據庫中,有不同的備份和還原命令,上述中使用的是expdp和impdp命令,除此以外,還有exp和imp命令,切記不能混淆着用。exp和imp的命令如下(以下內容來源於百度):
     基本語法和實例: 
     ①EXP:有三種主要的方式(完全、用戶、表) 
     1、完全:EXP SYSTEM/MANAGER BUFFER=64000 FILE=C:\FULL.DMP FULL=Y 
           如果要執行完全導出,必須具有特殊的權限 
     2、用戶模式:EXP SONIC/SONIC BUFFER=64000 FILE=C:\SONIC.DMP OWNER=SONIC 
           這樣用戶SONIC的所有對象被輸出到文件中。 
     3、表模式:EXP SONIC/SONIC BUFFER=64000 FILE=C:\SONIC.DMP OWNER=SONIC TABLES=(SONIC) 
           這樣用戶SONIC的表SONIC就被導出 
     ②IMP:具有三種模式(完全、用戶、表) 
     1、完全: IMP SYSTEM/MANAGER BUFFER=64000 FILE=C:\FULL.DMP FULL=Y 
     2、用戶模式: IMP SONIC/SONIC BUFFER=64000 FILE=C:\SONIC.DMP FROMUSER=SONIC TOUSER=SONIC 
           這樣用戶SONIC的所有對象被導入到文件中。必須指定FROMUSER、TOUSER參數,這樣才能導入數據。 
     3、表模式: EXP SONIC/SONIC BUFFER=64000 FILE=C:\SONIC.DMP OWNER=SONIC TABLES=(SONIC) 
           這樣用戶SONIC的表SONIC就被導入。

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章