最近因為升級了Mac os x 10.10 Yosemite,突然前幾天的一個晚上,開機發現就停留在開機界面了,看來BETA果然是不靠譜,然後想到自己這不前幾天剛備份完嗎,沒事,TimeMachine是何等神器,二話不說直接恢復。但是恢復完,我後悔了,一來是忘了昨天晚上還加班呢,加班的成功保留成果所剩無幾,關鍵我這才發現TimeMachine既然不備份虛擬機文件(虛擬機文件30G,估計直接給略過了吧),難怪每次都覺得備份那麼快。
不過後悔也沒用,重新搭開發環境吧。操作系統WIN7->開發工具VS2012->數據庫ORACLE。然後又到那無聊的數據庫備份恢復的時間呢。由於我對oracle的數據庫了解並不深,所以我並沒有辦法和牛B的DBA不看教程就能夠全部手寫數據庫執行腳本,但是為了不讓每一次都重新又回頭找一次教程,這裡深刻地做一次記錄,下次備忘。
這裡,數據庫主要恢復導出的dmp文件,具體涉及的一些相關指令如下
數據的導入
1 將D:\daochu.dmp 中的數據導入 TEST數據庫中。
imp system/manager@TEST file=d:\daochu.dmp full=y
imp system/manager@TEST file=d:\daochu.dmp full=y ignore=y
上面可能有點問題,因為有的表已經存在,然後它就報錯,對該表就不進行導入。在後面加上 ignore=y 就可以了。
2 將d:\daochu.dmp中的表table1 導入
imp system/manager@TEST file=d:\daochu.dmp tables=(table1)
3、從A用戶導入B用戶的表空間
imp system/manager@TEST file=d:\daochu.dmp fromuser=jandardb touser=jandardb
數據導出:
1 將數據庫TEST完全導出,用戶名system 密碼manager 導出到D:\daochu.dmp中
exp system/manager@TEST file=d:\daochu.dmp full=y
2 將數據庫中system用戶與sys用戶的表導出
exp system/manager@TEST file=d:\daochu.dmp owner=(system,sys)
3 將數據庫中的表inner_notify、notify_staff_relat導出
exp aichannel/aichannel@TESTDB2 file= d:\data\newsmgnt.dmp tables=(inner_notify,notify_staff_relat)
4 將數據庫中的表table1中的字段filed1以"00"打頭的數據導出
exp system/manager@TEST file=d:\daochu.dmp tables=(table1) query=\" where filed1 like '00%'\"
具體過程一般如下:
然後對應的執行過程操作步驟詳解(以下所有操作都在SQLPLUS上操作)
表空間含義(Table Space){copy from 百度百科}:
ORACLE數據庫被劃分成稱作為表空間的邏輯區域——形成ORACLE數據庫的邏輯結構。一個ORACLE數據庫能夠有一個或多個表空間,而一個表空間則對應著一個或多個物理的數據庫文件。表空間是ORACLE數據庫恢復的最小單位,容納著許多數據庫實體,如表、視圖、索引、聚簇、回退段和臨時段等。
狹義的理解就是,數據庫中可以有多個表空間,數據庫的每一張表都屬於某一個表空間,表空間是Oracle用來管理數據庫的一種邏輯概念。
/*第1步:創建臨時表空間 */
create temporary tablespace 臨時表空間名
tempfile '存儲地址\臨時表空間存儲文件名.DBF'
size 50m
autoextend on
next 50m maxsize 20480m
extent management local;
/*第2步:創建數據表空間 */
create tablespace 表空間名
logging
datafile '存儲地址\表空間存儲文件名.DBF'
size 50m
autoextend on
next 50m maxsize 20480m
extent management local;
臨時表空間
由於Oracle工作時經常需要一些臨時的磁盤空間,這些空間主要用作查詢時帶有排序(Group by,Order by等)等算法所用,當用完後就立即釋放,對記錄在磁盤區的信息不再使用,因此叫臨時表空間。
/*建立用戶*/
create user 用戶名 identified by 密碼
default tablespace 表空間
temporary tablespace 臨時表空間;
/*分配權限,connect,resource,dba是角色名*/
grant connect,resource,dba to 用戶名;
數據庫的預定數據庫角色簡單說明:
imp 用戶名/密碼@連接名稱 file=路徑/文件名.dmp full=y