Oracle資料庫匯入匯出實戰
有一台Oracle伺服器要進行匯出、匯入,以前接觸過Oracle,可是對Oracle匯出、匯入沒研究過,這下急壞我了,於是趕緊上網補了一下。操作結果如下:
Oracle 資料匯出匯入
第一步 建立使用者的資料表空間和資料檔案
以oracle的使用者的登入
[oracle@oracle ~]$ ps -ef|grep pmon|grep -v grep
oracle 4052 1 0 Jun23 ? 00:00:10 ora_pmon_zlzxdb
oracle 4488 1 0 Jun23 ? 00:00:07 ora_pmon_yibiaodb
由pmon進程可以看出我有兩個執行個體,多執行個體登入需要切換環境變數
[oracle@oracle ~]$ export ORACLE_SID=zlzxdb
[oracle@oracle ~]$ sqlplus / as sysdba ## 以dba的身份登入
SQL> conn / as sysdba 連結到資料庫中
已串連。
SQL> select username,default_tablespace from user_users; 查看當前登入的使用者
USERNAME DEFAULT_TABLESPACE
------------------------------ ------------------------------
SYS SYSTEM
SQL> show parameter instance_name; 查看當前的執行個體
NAME TYPE
------------------------------------ --------------------------------
VALUE
------------------------------
instance_name string
zlzxdb
SQL> select name from v$database; 查看當前的資料庫名稱
NAME
---------
ZLZXDB
SQL> select name from v$datafile; 查詢資料檔案路徑
create bigfile tablespace xmjidian datafile
‘/u01/app/oracle/oradata/zlzxdb/disk4/oracle_xmjidian_data.dbf’ size 2048M AUTOEXTEND ON; 建立大資料檔案並且自動成長
create USER xmjidian IDENTIFIED BY xmjidian; 建立xmjidna並且設定密碼為xmjidan。或者建立使用者的指定使用者的預設資料表空間使用下面的文法,也可以最後修改為使用者的預設資料表空間
CREATE USER xmjidian IDENTIFIED BY xmjidian DEFAULT TABLESPACE xmjidna;
SQL>alter user xmjidian default tablespace xmjidian; 修改xmjidian使用者預設的資料表空間為xmjidian
grant dba to xmjidian; 授予dba的許可權,一般情況下這個授權太大,匯入完資料之後可以收回dba的許可權或者給使用者直接授權
grant connect,resource,create any view to xmjidian;
建立匯出匯入目錄並授予許可權
建立匯出目錄
create directory exp_dir as ‘/u01/app/oracle/oradata/zlzxdb/share_data’;
給匯出目錄授予許可權
grant read,write on directory exp_dir to xmjidian;
建立匯入目錄
create or replace directory data_dir as '/u01/app/oracle/oradata/zlzxdb/share_data ';
grant read,write on directory data_dir to xmjidian;
查詢建立的匯出匯入檔案目錄以及名稱
select * from dba_directories;
資料匯出匯入
匯出zlzxdb 下的
expdp zlzxdb/zlzxdb@zlzxdbrw schemas=zlzxdb dumpfile=oracle_xmjidian.dmp
DIRECTORY=exp_dir;
資料匯出比較慢耐心等待
資料匯入
以xmjidian的使用者匯入資料
impdp xmjidian/xmjidian@zlzxdb directory=data_dir dumpfile=oracle_xmjidian.dmp
remap_schema=zlzxdb:xmjidian exclude=user full=y;
impdp yibiaodb01/yibiaodb01 DIRECTORY=dump_dir DUMPFILE=ybljt02_20150706.dmp REMAP_SCHEMA=ybljt02:yibiaodb01 remap_tablespace=ybljt02data:YIBIAODB01DATA01,ybljt02index:YIBIAODB01INDEX01
匯出資料故障解決:
ORA-01653: 表 XMJIDIAN.LZ901017 無法通過 8192 (在資料表空間 ZLZXDATA01 中) 擴充 此類故障時因為zlzxdata01 資料表空間不足引起的,
解決:給zlzxdata01 增加資料表空間
ALTER TABLESPACE zlzxdata01 ADD DATAFILE ‘/u01/app/oracle/oradata/zlzxdb/disk4/oracle_xmjidian_zlzxddata01.dbf' size 2048M AUTOEXTEND ON;
select * from dba_role_privs where grantee = 'ZLZXDB'; 查看zlzxdb使用者的許可權