Oracle dmp 導出導入、鎖表解決等開發筆記

1、本文簡介
        項目開發中使用Oracle,除了常用的sql語句,有時還會遇到鎖表、數據遷移、啓動監聽等問題或需求,本文做一個工作筆記小結:
1.1 鎖表問題解決
1.2 啓動 oracle 監聽
1.3 dmp 導出導入
1.4 刪除oracle用戶及其對象、表空間

2、詳細介紹

2.1 鎖表問題解決
**查詢鎖表**
SELECT object_name, machine, s.sid, s.serial#
FROM gv$locked_object l, dba_objects o, gv$session s
WHERE l.object_id = o.object_id
AND l.session_id = s.sid;
**釋放造成鎖表的session**
--alter system kill session 'sid, serial#';
例如:
ALTER system kill session '66, 1666';

2.2 啓動 oracle 監聽
啓動 oracle 監聽(已驗證,linux環境下)
$ sqlplus/nolog
SQL> connect /as sysdba
SQL> startup
SQL> exit
**註釋:切換到oracle 安裝目錄下 bin**
$ cd /u01/app/oracle/product/11.2.0.4/bin
$ lsnrctl start

2.3 dmp 導出導入
**dmp文件導出**
        dmp文件導出用的比較多的一般是三種,他們分別是:導出整個數據庫實例下的所有數據、導出指定用戶的所有表、導出指定表。
1、將數據庫ORACLE完全導出,用戶名system密碼manager 導出到c:\daochu.dmp中
exp system/manager@ORACLE file=c:/daochu.dmp full=y

2、將數據庫中USER01用戶與USER02用戶的表導出
exp system/manager@ORACLE file=d:/daochu.dmp owner=(USER01,USER02)

3、將數據庫中的表table01、table02導出
exp USER_NAME/PASSWORD@ORACLE file= d:/data/newsmgnt.dmp tables=(table01,table02) 
**備註**:
1、上面的system爲用戶名,manager爲密碼,ORACLE爲數據庫實例名,其實不一定非得用system用戶,只要是擁有管理員權限的用戶都可以。
2、full( 全庫導出): 導出除ORDSYS,MDSYS,CTXSYS,ORDPLUGINS,LBACSYS 這些系統用戶之外的所有用戶的數據
3、exp 命令需在 cmd 窗口中執行,不能在sql 中執行;
4、exp 不會導出空表(可能會對存儲過程有影響)
5、遠程:直接輸入 exp 用戶名/密碼@遠程的IP:端口/實例 file=存放的位置:\文件名稱.dmp full = y

**dmp文件導入**
1、創建表空間:
create tablespace tablespace_name datafile '/home/oracle/news/123_data.dbf' size 20000M autoextend on;    #  autoextend  表空間自增長
2、創建用戶:
create user user_name01 identified by 123456;
3、把表空間賦予用戶
alter user user_name01 default tablespace tablespace_name ;
4、賦予用戶dba權限
grant dba to user_name01 ;
5、導入dmp
imp user_name01/123456@edcrm file=/home/oracle/20180807.dmp fromuser=user_name02 touser=user_name01 ignore=y;  

**備註**:
1、edcrm 代表實例;也可以這樣寫:
     imp coast/[email protected]:1521/sde ,指定用戶、密碼、IP、端口、數據庫(實例 or 服務名)。其中,ip,端口,實例(服務名),視情況是否填寫;
2、fromuser 代表dmp文件的原有用戶,touser 代表新建需導入的表空間的用戶;
3、ignore=y 表示忽略創建錯誤,繼續後面的操作;
4、imp 命令需在 cmd 窗口中執行,不能在sql 中執行;
5、創建表空間時的dbf文件路徑,路徑需確保正確,且會自動在該路徑下生成dbf文件;
6、路徑的斜槓,正斜槓(/)、反斜槓(\)都能識別;
7、對於fromuser 的用戶名不清楚的情況下,可以先隨便寫一個,然後執行。執行窗口會有報錯提示,且含有正確用戶名;

2.4 刪除oracle用戶及其對象、表空間

在dmp導入時,創建有誤或者想刪除以前舊dmp,此命令可以派上用場(雖說很簡單哈,但免得再去百度)
SQL> drop user userName cascade;    # 刪除oracle用戶及其對象
SQL> drop tablespace tablespaceName including contents and datafiles cascade constraint;    # 刪除表空間
**備註**:
1、當用戶無法刪除時,查看進程並殺死
$ sqlplus /as sysdba
SQL> select sid,serial# from v$session where username= userName;
SQL> alter system kill session 'sid,serial';

PS:  哈哈,不過,像dmp的導出導入、啓動監聽等操作,工作上一般都是交由dba或者運維來專門處理的。微笑臉《-- | v | --》

 

評論區歡迎討論!覺得有用點個贊再走吧。感謝!!!

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