首頁 > php教程 > PHP开发 > Oracle 表空間查詢與操作方法

Oracle 表空間查詢與操作方法

高洛峰
發布: 2017-01-06 13:28:34
原創
1501 人瀏覽過

一。查詢篇 
1.查詢oracle表空間的使用情況 
select b.file_id  檔案ID, 
  b.tablespace_name  表空間, 
  b.tablespace_name  表空間,        總位元組數, 
  (b.bytes- sum(nvl(a.bytes,0)))   已使用, 
  sum(nvl(a.bytes,0))       〜〠,@     〜〠), 剩餘)百分比 
  from dba_free_space a,dba_data_files b 
  where a.file_id=b.file_id 
  group by b.tablespace_name,b.file_id 
  group by b.tablespace_name,b.file_id 
 〔group by b.tablespace_name,b.file_spacename,b.file, 2.查詢oracle系統用戶的默認表格空間與暫存資料表空間 
select default_tablespace,temporary_tablespace from dba_users 
3.查詢單張資料表的使用 
select segment_name,bytes from dba_segments where segment_name = 'RE_STDEVT_FFRE_STDEPL_FRE_STDAY_FFRE_STDEVT_FFRE_STDEPL_REDDAY_Fet_FRE_ST表名 
4.查詢所有使用者表使用大小的前三十名 
select * from (select segment_name,bytes from dba_segments where owner = USER order by bytes desc ) where rownum 5.查詢當前使用者表預設空間的使用情況
select tablespacename,sum(totalContent),sum(usecontent),sum(sparecontent),avg(sparepercent) 
from 

SELECT b.file_id as id,b.tablespace_name as tablespacename,Contbytes, as tablespaces, as tablespacename,Contbytes) bytes-sum(nvl(a.bytes,0))) as usecontent,sum(nvl(a.bytes,0)) as sparecontent,sum(nvl(a.bytes,0))/(b.bytes)*100 as sparepercent 
FROM dba_free_space a,dba_data_files b 
WHERE a.file_id=b.file_id and b.tablespace_name = (select default_tablespace from dba_users where username = user) c,by b. bytes 

GROUP BY tablespacename 
6.查詢用戶表空間的表 
select * from user_tables 
================================ ================================================== ==== 
一、建立表空間 
CREATE TABLESPACE test 
DATAFILE 'c:/oracle/oradata/db/test01.dbf' SIZE 50M 
UNIFORM SIZE 1M; #指定區尺寸為128k,預設為64k 
或 
CREATE TABLESPACE test 
DATAFILE 'c:/oracle/oradata/db/test01.dbf' SIZE 50M 
MINIMUM EXTENT 50K EXTENT MANAGEAGEMENT 5 ENTS 100 PCTINCREASE 0); 
可從dba_tablespaces檢視剛建立的資料表空間的資訊 
二、建立UNDO資料表空間 
CREATE UNDO TABLESPACE test_undo 
DATAFILE 'c:/oracle/oradata/db/test_undo.dbf' SIZE 50MUNDOENTT管理的,而且在建立時的SQL語句中只能使用DATAFILE和EXTENT MANAGEMENT子句。 
ORACLE規定在任何時刻只能將一個還原表空間賦予資料庫,也就是在一個實例中可以有多個還原表空間存在,但只能有一個為活動的。可以使用ALTER SYSTEM指令進行還原表空間的切換。
SQL> ALTER SYSTEM SET UNDO_TABLESPACE = test_undo; 
三、建立臨時表空間 
CREATE TEMPORARY TABLESPACE test_temp 
TEMPFILE '/oracle/oradata/db/testPACE test_temp 
TEMPFILE '/oracle/oradata/db/testPACE test_temp 
TEMPFILE '/oracle/oradata/db/testPACE test_temp 
TEMP from dba_properties where property_name like 'DEFAULT%' 
改變系統預設臨時表空間 
alter database default temporary tablespace test_temp; 
四、改變表運了資料文件,則必須有RECOVER選項 
ALTER TABLESPACE game test FOR RECOVER; 
2.使表空間聯機 
ALTER TABLESPACE test ONLINE; 
3.使資料檔脫機 
ALDATA LINE資料檔案聯機 
ALTER DATABASE DATAFILE 3 ONLINE; 
5.讓表空間唯讀 
ALTER TABLESPACE test READ ONLY; 
6.把表空間test INCL ING CONTENTS AND DATAFILES CASCADE CONSTRAINTS; 
DROP TABLESPACE 表空間名[INCL ING CONTENTS [AND DATAFILES] [CASCADE CONSTRAINTS]] 
1. INCL ING CONTENTS〠用子句資料檔案 
3. CASCADE CONSTRAINTS 子句用來刪除所有引用完整的約束 

六、擴充表空間 
先檢視資料表空間的名字與所屬檔案 
select tablespace_name, file_id, file_name,nid, file_name) *1024),0) total_space 
from dba_data_files 
order by tablespace_name; 
1.增加資料檔 
ALTER TABLESPACE test 
ADD DATAFILE '/oracle/oradata/db/test02.dbf' SIZE 1000M; 
2.手動增加資料檔案尺寸 
ALTER DATABASEBASEFILE 'cid .dbf' 
RESIZE 100M; 
3.設定資料檔案自動擴充 
ALTER DATABASE DATAFILE 'c:/oracle/oradata/db/test01.dbf' AUTOEXTEND ON NEXT 100M中查看表空間信息,從v$datafile查看對應的數據文件信息 
================================== ==================================================
create tablespace scgl 
datafile 'E:ORACLEPROD T10.1.0ORADATAORCLscgl2.dbf' 
size 50m 
autoextend on 
next 50mspace maxsize 2038 test_data 
logging 
datafile 'E:ORACLEPROD T10.1.0ORADATAORCLuser_data. dbf' 
size 50m 
autoextend on 
next 50m maxsize 20480m 
extent management local; 
create user scgl identified by qwer1234 
tempfile 'E:ORACLEPROD T10.1.0ORADATAORCLuser_temp.dbf' 
create temporary tablespace scgl_temp 
tempfile 'E:ORACLEPROD T10.1.0ORADATAORCLscgl_temp.dbf' 
size 50m 
autoextend on 
next 50m maxsize 20480m ba to scgl; 
oracle建立表空間SYS使用者在CMD下以DBA身分登陸: 
在CMD中打sqlplus /nolog 
接著再 
conn / as sysdba 
//建立暫存表空間 
create temporary tablespace tempuser_temp 化的表空間 
create temporary
autoextend on 
next 50m maxsize 20480m 
extent management local; 
//建立資料表空間 
create tablespace test_data 
logging 
datafile 'D:oracleoradataOracle9ius_ooo5ocleoradataOracle9;
next 50m maxsize 20480m 
extent management local; 
//建立使用者並指定表格空間 
create user username identified by password 
default tablespace user_data 
temporary tablespace user_temp; 
查詢表空間使用情況 
SELECT UPPER(F.B.B.D. (M)", 
D.TOT_GROOTTE_MB - F.TOTAL_BYTES "已使用空間(M)", 
TO_CHAR(ROUND((D.TOT_GROOTTE_MB - F.TOTAL_BYTES) / D.TOT_GROT_GROOTTE_MB - F.TOTAL_BYTES) / D.TOT_GROOTTE_MB)'1099. || '%' "使用比", 
F.TOTAL_BYTES "空閒空間(M)", 
F.MAX_BYTES "最大區塊(M)" 
FROM (SELECT TABLESPACE_NAME, 
ROUND(MSUM(BYTES)/SUSUM(1024) SU 1024), 2) TOTAL_BYTES, 
ROUND(MAX(BYTES) / (1024 * 1024), 2) MAX_BYTES 
FROM SYS.DBA_FREE_SPACE 
GROUP BY TABLESP. ROUND(SUM(DD. 。
查詢表空間的free space 
select tablespace_name,
count(*) as extends, 
round(sum(bytes) / 1024 / 1024, 2) as MB, 
sum(blocks) as blocks 
from dba_free_space select tablespace_name, sum(bytes) / 1024 / 1024 as MB 
from dba_data_files 
group by tablespace_name; 
查詢表單. MB - free.MB, 2) as Used_MB, 
round((1 - free.MB / total.MB) * 100, 2) || '%' as Used_Pct 
from (select tablespace_name, sum(bytes) / 10244/10244 1024 as MB 
from dba_free_space 
group by tablespace_name) free, 
(select tablespace_name, sum(bytes) / 1024 / 1024 as MB 
fromtables_p space_name = total.tablespace_name; 
-- -------------------------------------------------- -------------------------------------------------- ----------------------- 
1.建立表格空間:create tablespace test datafile '/u01/test.dbf' size 10M uniform size 128k 
#指定區尺寸為128k ,區塊大小為預設8K 
#大檔案表空間create bigfile tablespace big_tbs datafile '/u01/big_tbs.dbf ' size 100G 
2.建非標準表showparameterdbaltersystemsetdb_2k_cache_size=10Mcreatetablespacetestdatafile'/u01/test.dbf'size 10Mblocksize2Kuniformsize128k
#pache
#gache db_SQL2kache_acheter ORA-02097:無法修改參數,因為指定的值無效ORA-00384:記憶體不足,無法增長快取
#解決
SQL>;更改系統設定sga_max_size=400M 範圍=spfile; SQL>立即關閉; SQL>啟動SQL>更改系統設定db_2k_cache_size=10M ;系統變了。
3.查看區大小與區塊大小#區大小conn y / 123 create table t(i number) 表空間test;插入t 值(10) 從user_segments 中選擇位元組/1024 其中segment_name=upper('t') ; 
#區塊大小顯示參數區塊(預設64K) 
#非標準表空間的blocksize SQL>從v$dbfile 選擇*; SQL>從v$datafile 中選擇名稱、區塊大小、狀態; SQL>從v$datafile中選擇block_size,其中file#=14; 
4.刪除表空間drop表空間測試,包括內容和資料檔
5.查表空間:#查資料檔select * from v$dbfile; #所有表空間select * from v$tablespace; 
#表格空間的資料檔案select file_name,tablespace_name from dba_data_files; 
6.建立undo表空間建立undo表空間undotbs01資料檔案'/u01/undotbs01.dbf'大小5M;otbs01資料檔案'/u01/undotbs01.dbf'大小5M; undo表空間alter system set undo_tablespace=undotbs01; 
7.建立臨時表空間create temp_data tempfile '/u01/temp.db' size 5M;建立bigfile臨時表空間bigtem tempfile'/u01/bigtemp.db'大小5M; 8.改變表格空間狀態
(0.)檢視狀態
#表格空間狀態select tablespace_name,block_size,status from dba_tablespaces; 
#資料檔案狀態select name,block_size,status from v$datafile; 
(1.)表格空間離線alter tablespace測試離線
#如果意外刪除了資料檔案alter tablespace test離線復原
(2.)表空間連線alter tablespace測試線上
(3.)資料檔案離線select *來自v$dbfile;更改資料庫資料檔案3 離線
(4.)資料檔案線上復原資料檔案3;線上變更資料庫資料檔案3; 
(5.)讓資料表空間唯讀
(6.)使表格空間可讀寫alter tablespace test 讀寫;
9.擴充表空間#首先查看表空間的名稱和所屬檔案及空間select tablespace_name, file_id, file_name,round(bytes/(1024*1024),0)total_space from dba_data_files order by tablespace_name; # 擴充方法
1. alter tablespace test add datafile '/u01/test02.dbf' size 10M(自動加上一個datafile) 
2.alter database datafile '/u01/test.dbf' resize 20M; 
3.alter 資料檔案'/u01/test .dbf' 自動擴充至下一個10M maxsize 1G; 
#設定後查看表格空間資訊
select a.tablespace_name,a.bytes Total,b.bytesused,c.bytesfree,(b.bytes*100)/a.bytes "%used",(c.bytes *100)/a.bytes "% free" 來自sys.sm$ts_avail a,sys.sm$ts_used b,sys.sm$ts_free c 其中a.tablespace_name=b.tablespace_name 與a.tablespace_name=c.tablespace_name; 
10.移動表空間的資料檔 
#先確定資料檔位於資料表空間 
SQL>select tablespace_name,file_name from dba_data_files where file_name='/u01/test.dbf'open狀態
SQL>alter tablespace 測試離線; SQL>主機移動/u01/test.dbf /u01/oracle/test.dbf; SQL>alter tablespace test 將資料檔'/u01/test.dbf'重新命名為'/u01 /oracle/test.dbf'; SQL>alter tablespace 離線測試; 
#mount狀態SQL>立即關閉; SQL>啟動掛載SQL>主機移動/u01/test.dbf /u01/oracle/test.dbf; SQL>更改資料庫將檔案'/u01/test.dbf'重新命名為'/u01/oracle/test.dbf'; 
11.表格空間與資料檔案常用的資料字典與動態效能檢視v$dbfile v$datafile dba_segments user_segments dba_data_files v$tablespace dba_tablespaces user_tablespaces 
--表空間使用情況 
SELECT UPPER(F.TABLESPACE_NAME) "表空間名稱",
D.TOT_GROOTTE_MB "表格空間大小(M), 130D.使用空間(M)",
TO_CHAR(ROUND((D.TOT_GROOTTE_MB - F.TOTAL_BYTES) / D.TOT_GROOTTE_MB * 100,2),'990.99') || '%' "使用比", OTA
F.休閒空間(M)",
F.MAX_BYTES "最大塊(M)"
FROM (SELECT TABLESPACE_NAME,
ROUND(SUM(BYTES) / (1024 * 1024) , 2) TOTAL_BYTES, (1024 * 1024), 2) MAX_BYTES 
FROM SYS.DBA_FREE_SPACE 
GROUP BY TABLESPACE_NAME) F, 
(SELECT DD.TABLESPACE_NAME, 
ROUND(SUM(DD.BYTES) / (1024 * 1024), 2) TOT_GROOTTE_MB 
FROM SYS.DBA_DATA_FILES DDP. AME = F.TABLESPACE_NAME 
訂購BY 1 
--查詢表空間的可用空間 
select tablespace_name, 
count(*) 作為擴展,
round(sum(bytes) / 1024 / 1024, 2) 作為MB,free
sum( 
sum(
按表格空間名稱分組; 
--查詢表空間的總容量
select tablespace_name, sum(bytes) / 1024 / 1024 as MB 
from dba_data_files 
group by tablespace_nameselecttable) ,
round(total.MB, 2) as Total_MB,
round(total.MB - free.MB, 2) asused_MB,
round((1 - free.MB) MB / 總計.MB) * 100, 2) | | '%' asused_pct
from(select tablespace_name,sum(bytes)/ 1024 / 1024 as MB 
from dba_free_space 
group by tablespace_name)空閒,
(select tables_group) _data_files 
以表格空間名稱分組) 總計
其中free.tablespace_name = Total.tablespace_name; 
//賦予使用者權限
grant connect,resource to username; 
//以後以該使用者登入,建立的任何資料庫物件都屬於user_temp 和user_data
//以後以該使用者登入,建立的任何資料庫物件都屬於user_temp 和user_data
//以後以該使用者登入,建立的任何資料庫物件都屬於user_temp 和user_data表空間,
這就不用在每個物件給其指定表空間了
撤銷權限:
從使用者名稱撤銷權限... ; 
刪除使用者指令
drop user user_name 級聯; 

建立表空間
CREATE TABLESPACE data01 
DATAFILE '/oracle/oradata/db/DATA01.dbf' SIZE 500M
UNIFORM SIZE 128k; #指定區尺寸為128k,如不指定,區尺寸AND DATAFILES; 
一、建立表空間
CREATE TABLESPACE data01 
DATAFILE '/oracle/oradata/db/DATA01.dbf' SIZE 500M
UNIFORM SIZE 128k; #64k,128k;
二、建立UNDO表空間 
CREATE UNDO TABLESPACE UNDOTBS02 
DATAFILE '/oracle/oradata/db/UNDOTBS02.dbf' SIZE 50M 
#的表空間,必須切換到該表空間:
ALTER SYSTEM SET undo_tablespace=UNDOTBS02; 
三、建立臨時表空間 
CREATE TEMPORARY TABLESPACE temp_data 
TEMPFILE '/oracle/A/ora改變表空間狀態 
1.使表空間脫機 
ALTER TABLESPACE game OFFLINE; 
如果意外刪除了資料文件,則必須帶有RECOVER選項
ALTER TABLESPACE game OFFLINE FOR RECOVER; 
2.使線上空間連接表格空間遊戲; 
3.將資料檔案離線
ALTER DATABASE DATAFILE 3 OFFLINE; 
4.將資料檔案連接
ALTER DATABASE DATAFILE 3 ONLINE; 
5.使手錶空間只讀遊戲時只讀遊戲;
6.使表空間可讀寫
ALTER TABLESPACE 遊戲讀寫; 
五、刪除表空間
DROP TABLESPACE data01 INCL ING CONTENTS AND DATAFILES; 

六、表機表
六、表機表
。 select tablespace_name, file_id, file_name,
round(bytes/(1024*1024),0)total_space
from dba_data_files
order by tablespace_name 
1.增加資料檔案ALTERUpABLESPm/U5; GAME02.dbf' SIZE 1000M; 
2.手動增加資料檔案大小
ALTER DATABASE DATAFILE '/oracle/oradata/db/GAME.dbf' 
RESIZE 4000M; 
3.dbf' 
RESIZE 4000M; /oradata/db/GAME.dbf 
AUTOEXTEND ON NEXT 100M 
MAXSIZE 10000M; 

設定後查看表空間資訊
SELECT A.TABLESPACE_Nac
設定後查看表空間資訊
SELECT A.TABLESPACE_NAME,A.B. .BYTES*100)/A.BYTES "% USED",(C. BYTES*100)/A.BYTES "% FREE" 
來自SYS.SM$TS_AVAIL A、SYS.SM$TS_USED B、SYS.SM$TS_FREE C 
其中A.TABLESPACE_NAME=B.TABLESPACE_NAME 及A.TABLESPACE_NAME=C。表空間

更多Oracle表空間查詢與操作方法相關文章請關注PHP中文網!

相關標籤:
來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門推薦
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板