Oracle 整庫備份還原

2022-05-19 13:21:51 字數 4755 閱讀 9101

sql語句

system使用者登陸

檢視表空間和存放位置

select t1.name,t2.name from v$tablespace t1,v$datafile t2 where t1.ts# = t2.ts#;

檢視所有表空間的大小

select tablespace_name,sum(bytes)/1024/1024 from dba_data_files group by tablespace_name;

檢視未使用的表空間大小

select tablespace_name,sum(bytes)/1024/1024 from dba_free_space group by tablespace_name;

清理螢幕

clear screen

檢視服務端編碼

select userenv('language') from dual;

本地機器新增系統變數nls_lang,變數值為:服務端完整的編碼型別即可解決顯示不出中文的問題

檢視所有表空間大小,使用情況,使用率的sql語句

select a.tablespace_name "

表空間名

",

total "

表空間大小

",free "

表空間剩餘大小

",(total - free) "

表空間使用大小

",total / (1024

* 1024

* 1024) "

表空間大小

(g)",

free / (1024

* 1024

* 1024) "

表空間剩餘大小

(g)",

(total - free) / (1024

* 1024

* 1024) "

表空間使用大小

(g)",

round((total - free) / total, 4) * 100

"使用率%"

from (select tablespace_name, sum(bytes) free

from dba_free_space

group by tablespace_name) a,

(select tablespace_name, sum(bytes) total

from dba_data_files

group by tablespace_name) b

where a.tablespace_name = b.tablespace_name

執行上述sql語句即可檢視所有的表空間名稱,大小,使用情況。前提是執行者需要有dba許可權。

整庫備份還原首先需要system使用者登陸,查詢字符集,注意保持字符集的一致,然後然後建立備份目錄,備份目錄要對oracle使用者開放讀寫許可權。

1,備份

在系統上建立備份檔案的儲存目錄,並且賦權給你oracle讀寫

mkdir /oraclebak

chown -r oracle:oinstall /oraclebak

以oracle使用者登陸作業系統,以system使用者的登陸sqlplus,建立備份的對映目錄。

sql> create directory data_dir as '/oraclebak';

以oracle使用者登陸作業系統使用expdp執行備份工作。

expdp system/oracle directory=data_dir dumpfile=full.dmp full=y compression=all

2,還原,因為是全庫備份,所有不需要考慮使用者以及使用者許可權的問題,必須要考慮的問題是還原的時候,目的資料庫一定要新建原資料庫的名稱一致的表空間,且目的資料庫表空間容量大於原資料庫。

以下為原資料庫表空間資訊

因為原資料庫有zwfw_mig表空間,且大小為1g,所以在目的資料庫上也建立大小大於1g,名稱為zwfw_mig的表空間,以下為具體命令

create tablespace zwfw_mig

datafile '/oracledata/zwfw_mig.dat'

size 1024m

reuse

autoextend on next 100m maxsize 2048m;

create tablespace:建立表空間的關鍵字

zwfw_mig:新建立的表空間的名字

datafile '/oracledata/zwfw_mig.dat' :定義表空間對應的資料檔案位置,注意oracle使用者要有許可權

size 1024m:表空間大小為1024mb

reuse:允許oracle重新使用資料檔案

autoextend on next 100m maxsize 2048m;:允許表空間自動增長,每次增長100m,最大為2048m

以上為建立新的表空間,如果目的資料庫已有對應的表空間,則不需要另外新建,只需要擴充套件目的資料庫的表空間即可,有兩種方式擴充套件,

第一,當對應的表空間資料檔案所在目錄有足夠的儲存空間時,直接使用以下命令重新定義資料檔案的大小,資料檔案大小重新定義之後,表空間大小就被改變了。

第二,當表空間對應的資料檔案所在目錄沒有足夠的儲存空間時,需要另外增加資料檔案,對應的命令如下

alter tablespace undotbs1 add datafile '/oracledata/undotbs1.dbf' size 5120m; (為undotbs1表空間新增資料檔案,新增的資料檔案為5120m,位置為/oracledata/undotbs1.dbf)

關於臨時表空間:

查詢原資料庫的臨時表空間,

select c.tablespace_name,

to_char(c.bytes/1024/1024/1024,'99,999.999') total_gb,

to_char( (c.bytes-d.bytes_used)/1024/1024/1024,'99,999.999') free_gb,

to_char(d.bytes_used/1024/1024/1024,'99,999.999') use_gb,

to_char(d.bytes_used*100/c.bytes,'99.99') || '%'use

from (select tablespace_name,sum(bytes) bytes

from dba_temp_files group by tablespace_name) c,

(select tablespace_name,sum(bytes_cached) bytes_used

from v$temp_extent_pool group by tablespace_name) d

where c.tablespace_name = d.tablespace_name;

擴充套件臨時表空間

擴充套件臨時表空間和擴充套件永久表空間的命令基本相似,僅僅是新增了temp關鍵字

alter tablespace temp add tempfile '/oracledata/temp1.dbf' size 15360m;

以上命令為為temp臨時表空間新增資料檔案,資料檔案為15g

新建臨時表空間

create temporary tablespace zwfw_temptempfile '/oracledata/zwfw_temp1.dbf' size 1024m reuse autoextend on next 100m maxsize 2048m;

查詢所有表空間的所有資訊

select * from dba_tablespaces

建立還原的操作目錄物件

create directory data_dir as '/oracledata';

關於歸檔模式,關閉歸檔模式可以快速的執行還原操作,且生成的日誌較小。關於歸檔模式的命令如下

1.改變非歸檔模式到歸檔模式:

1)sql> conn / as sysdba (以dba身份連線資料庫)

2)sql> shutdown immediate;(立即關閉資料庫)

3)sql> startup mount (啟動例項並載入資料庫,但不開啟)

4)sql> alter database archivelog; (更改資料庫為歸檔模式)

5)sql> alter database open; (開啟資料庫)

6)sql> alter system archive log start; (啟用自動歸檔)

7)sql> exit (退出)

做一次完全備份,因為非歸檔日誌模式下產生的備份日誌對於歸檔模式已經不可用了.這一步非非常重要!

2.改變歸檔模式到非歸檔模式:

1)sql>shutdown normal/immediate;

2)sql>startup mount;

3)sql>alter database noarchivelog;

4)sql>alter database open;

執行還原命令

impdp system/system directory=data_dirdumpfile=full.dmp full=y

1,建立表空間

2,3,建立表

4,插入資料

5,定義匯出目錄

6,匯出全庫

7,建立表空間

8,匯入全庫

Oracle 備份整庫

echo off color 0b cls echo echo 設定備份檔案存放資料夾.echo set tbuf c oraclebackup if not exist tbuf mkdir tbuf echo echo 設定備份檔案名 以星期幾命名,即備份檔案只儲存最近一周 echo set n...

SQL之整庫備份還原

整庫資料備份也叫sql資料備份 備份的結果都是sql指令 在mysql中提供了乙個專門用於備份sql的客戶端 mysqldump.exe sql備份是一種mysql非常常見的備份與還原方式,sql備份不只是備份資料,還備份對應的sql指令 表結構 即便是資料庫遭到毀滅性的破壞 資料庫被刪 那麼利用s...

SqlServer整庫備份還原指令碼

一。整備資料庫 指令碼分為兩部分,一部分是批處理檔案 dbbak.bat 一部分為sql檔案 dbbak.sql 兩個檔案要放在同乙個目錄下。批處理檔案中為主檔案,真正的資料庫備份操作是在sql檔案中完成的。1.批處理檔案內容 sqlcmd s 192.168.56.36 usa ppassword...