Linux服務器上的oracle數據導入和導出
背景:
在同一臺Linux服務器上,有兩個數據庫用戶,分別為:database1,database2,如何把database1用戶下面的所有的表和數據,導入到database2數據庫(database2為新創建的用戶,沒有創建任何表,是一個空的數據庫)
操作步驟:
1、創建數據庫用戶database2(註:這裏只創建新的數據庫用戶database2,database1數據庫用戶已經存在,並且database1用戶已有表和數據)
登錄數據庫linux服務器,切換成oracle用戶(這裏說的oracle指的是數據庫的一個管理員用戶名,角色是sysdba),操作如下:
su - oracle
sqlplus / as sysdba; -- 輸完後回車,可以進入sqlplus客戶端,進行SQL語句操作
create user database2 identifield by 123456;
grant connect, resource, dba to database2;
alter user database2 default tablespace PB_DATA;
2、創建文件導出的目錄,database1用戶下的表數據,導出後的文件,將會保存在這個目錄下
SQL > create directory PB_DUMP as ‘\usr\history\data\exoport‘;
PB_DUMP是linux系統中\usr\history\data\exoport目錄的別名,通過上面SQL語句創建後,信息會保存在oracle的目錄表中,可以查詢表select * from dba_directories中的DIRECTORY_NAME字段值確認,對應的路徑是DIRECTORY_PATH字段。
3、創建導出腳本
cat > exp_database1_table_data.par
輸入如下內容,保存的腳本文件為exp_database1_table_data.par
userid = ‘oracle / as sysdba‘
directory = PB_DUMP
dumpfile = exp_database1_table_data_20180101.dmp
logfile = exp_database1_table_data_20180101.log
schemas = database1
cluster = n
參數說明:directory參數是一個目錄名稱, PB_DUMP是步驟2中所創建的oracle目錄,也就是導出後的dmp文件保存在這個目錄下。dumpfile是導出後的數據文件的名稱;logfile是導出日誌,導出過程中所打印的日誌信息會保存在這裏;schemas參數值是即將要導出數據的源數據庫用戶名。
4、創建導入腳本
cat >imp_database2_table_data.par
輸入如下內容,保存的腳本文件為imp_database2_table_data.par
userid = ‘oracle / as sysdba‘
directory = PB_DUMP
dumpfile = exp_database1_table_data_20180101.dmp
logfile = exp_database1_table_data_20180101.log
remap_schemas = database1 :database2
cluster = n
參數說明:remap_schemas的參數值database1 :database2,表示把database1用戶下的數據導入到database2用戶下(數據文件,來源於從database1用戶中已導出的exp_database1_table_data_20180101.dmp)
5、執行導出命令(執行完下面的命令後,數據庫用戶database2下將會有表和數據,來源於database1)
expdp parfile = imp_database2_table_data.par
Linux服務器上的oracle數據導入和導出