Oracle 整庫備份還原


http://www.mamicode.com/info-detail-2481866.html

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 database datafile '/u01/app/oracle/12/oradata/orcl/sysaux01.dbf' resize 3096m; (重新定義/u01/app/oracle/12/oradata/orcl/sysaux01.dbf數據文件的大小為3GB)

第二,當表空間對應的數據文件所在目錄沒有足夠的存儲空間時,需要另外增加數據文件,對應的命令如下

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_TEMP tempfile '/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_dir dumpfile=full.dmp full=y

   

   

   

   

   

   

   

   

   

1,創建表空間

2,

3,創建表

4,插入數據

5,定義導出目錄

6,導出全庫

7,創建表空間

8,導入全庫

   


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM