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權限。
![](https://img.laitimes.com/img/_0nNw4CM6IyYiwiM6ICdiwiIx0DciV2dmADM30zd-cmbw5ib1c0Y1VERNVTWU9UMjRlTyAzQNdXUE10dRRlT0UEVOdXTE10dJRUT5BzUOJzZE9ENVRVT21ERNdXSE1Ue4MlTycGRPRTVU1kdjJjYzpkMMRXOykVdNNjW2hXbZVnTtxENFRUT5N2ViBXO5xkNNh0YwIFSh9CXt92YuM3YltWas5iclN3Ztl2Lc9CX6MHc0RHaiojIsJye.png)
整庫備份還原首先需要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,導入全庫