由於Oracle很少接觸到,有一些基本的指令動作常常碰壁,加上oracle權限分得很細,每次要執行都要再重新找資料
但大部份資料都以對岸居多,而且參差不齊,以此紀錄
範例:
Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 64bit 註1
來源資料庫:
sid: dba
user: source_user/source_pwd
目的資料庫:
sid: dbb
user: destination_user/destination_pwd
備份:
SETP.1 於來源DB將資料庫匯出至D:\oracle.dmp
exp source_user/source_pwd@dba file=D:\oracle.dmp full=y
SETP.2 建立目的資料庫的user,並給予所須權限。
#建立 user 並給予表空間=1G
sqlplus> create user destination_user identified by destination_pwd default tablespace users quota 1024M on users;
#調整使用者權限
sqlplus> GRANT CREATE MATERIALIZED VIEW, CREATE PROCEDURE, CREATE SEQUENCE, CREATE SESSION, CREATE TABLE, CREATE TRIGGER, CREATE TYPE, CREATE VIEW, ON COMMIT REFRESH, QUERY REWRITE TO "source_user";
SETP.3 將oracle.dmp抓到目的資料庫本機,進行匯入
imp system/system_pwd@dbb file=D:\oracle.dmp full=y fromuser=source_user touser=destination_user;
此段在進行匯入的時候,因不熟oracle遇到了許多問題,並紀錄一些觀念釐清
1. system 使用者只是登入權限,並不代表要匯入的account空間 (如MSSQL的登入使用者,須要有夠大的匯入權限才可以進行匯入)
2. sid為連線位置,可在Net Manager定義。
3. fromuser代表匯出使用的user,touser代表你要匯入的Account空間。
註1:
查詢Oracle版本
select * from v$version