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,導入全庫