一。查詢篇
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中文網!