閱讀62 返回首頁    go 阿裏雲 go 技術社區[雲棲]


Oracle 10g 數據庫的備份和還原

一、備份數據庫

1.在圖形工具中,如sqldeveloper,pl/sqldeveloper用以下這句查找空表
select 'alter table '||table_name||' allocate extent;' from user_tables where num_rows=0;

2.把第一步執行得到的結果當用sql語來再次執行
3.到oracle服務器上執行備份語句. 運行-cmd 執行下麵命今
   exp 用戶名/密碼@數據庫實例 file=備份文件存放路徑 owner=用戶名
 例: exp ezeip/123456@orcl file=d:\bak.dmp owner=MyDataBase

二、還原數據庫

(如果已有數據庫,則執行第1、2步)
--1.刪除表空間
DROP TABLESPACE shjc INCLUDING CONTENTS AND DATAFILES;
--2.刪除用戶
DROP USER shjc CASCADE

--3.創建表空間
Create tablespace shjc datafile'c:\oracle\product\10.2.0\db_1\admin\orcl\dpdump\SHJC.DBF' size 500M autoextend on next 50M;
存放路徑可以由腳本7來查看)
--4.創建用戶
create user shjc identified by shjc123 default tablespace shjc;
--5.授權給用戶
grant connect,resource,dba to shjc; 

--6.導入數據庫(在cmd裏執行)
--11g:IMPDP USERID='shjc/shjc123@orcl as sysdba' schemas=shjc directory=DATA_PUMP_DIR dumpfile=shjc.dmp logfile=shjc.log version=10.2.0.1.0
--10g:imp shjc/shjc123@orcl file=e:\shjc.dmp full=y  ignore=y         

--7.查看管理理員目錄(DATA_PUMP_DIR)
select * from dba_directories;
--8.查看字符集
select * from V$NLS_PARAMETERS where parameter = 'NLS_CHARACTERSET' 

三、備用腳本

--1)查看用戶的連接狀況 
select username,sid,serial# from v$session 
--2)找到要刪除用戶的對應的sid,和serial,並刪除  
alter system kill session '158,2009'; 
--3)查看session的狀態來確定該session是否被kill 了!!status 為要刪除用戶的session狀態,如果還為inactive,說明沒有被kill掉,如果狀態為killed,說明已kill。 
select saddr,sid,serial#,paddr,username,status from v$session where username is not null AND username = 'SHJC'   

四、綜合腳本

 --查詢所有表空間和物理文件存放路徑

SELECT b.file_name AS 物理文件路徑,
       b.tablespace_name AS 表空間名,
       b.bytes / 1024 / 1024 表空間大小MB,
       (b.bytes -SUM(nvl(a.bytes, 0))) / 1024 / 1024 使用表空間大小,
       substr((b.bytes -SUM(nvl(a.bytes, 0))) / (b.bytes) * 100, 1, 5) 利用率
FROM   dba_free_space a,
       dba_data_files b
WHERE  a.file_id = b.file_id
GROUP BY
       b.tablespace_name,
       b.file_name,
       b.bytes
ORDER BY
       b.tablespace_name

五、批處理文件+windows定時任務 自動備份數據庫:

for /F "usebackq tokens=1,2 delims= " %%i IN (`date /t`) do set datapath=%%i
for /F "usebackq tokens=1,2 delims=: " %%i IN (`time /t`) do set datapath=%datapath%%%i%%j 
exp shjc/shjc123@orcl file=e:\%datapath:/=%.dmp owner=shjc

將上麵的三行腳本複製到記事本,修改數據庫鏈接相關參數後,另存為已批處理文件即可。備份數據庫文件的命名是按時間來命名。
再在windows裏定時任務裏,添加一個定時任務,定時執行這個批處理文件,就實現了簡單數據庫備份。


最後更新:2017-04-03 12:53:59

  上一篇:go 斐波那契數列-有一對兔子
  下一篇:go linux驅動開發--字符設備:自動創建設備節點