概序
Oracle數(shù)據(jù)庫(kù)作為一個(gè)大型的關(guān)系型數(shù)據(jù)庫(kù),它與其他關(guān)系型數(shù)據(jù)庫(kù)相比,有許多個(gè)性的東西,下面作一個(gè)簡(jiǎn)單的說(shuō)明,其中包括我們?cè)谌粘_\(yùn)行和維護(hù)中可能用到的知識(shí),希望對(duì)大家有所幫助
一、基本知識(shí)
1、表空間對(duì)于數(shù)據(jù)庫(kù)是唯一性的,且要求每個(gè)數(shù)據(jù)庫(kù)最少有一個(gè)表空間。
表空間可以分為系統(tǒng)表空間和非系統(tǒng)表空間、回滾段表空間;也可以分為用戶表空間和非用戶表空間,他們只是分類方式不同,其實(shí)實(shí)質(zhì)差不多;
臨時(shí)表空間:臨時(shí)表空間并不包含真正的數(shù)據(jù),恢復(fù)的方法是刪除臨時(shí)表空間并重建即可.。系統(tǒng)表空間:如果備份不可用,則只能采用重建數(shù)據(jù)庫(kù)的方法 。
表空間的大小可以根據(jù)需要和設(shè)備的情況進(jìn)行設(shè)置
表空間可以簡(jiǎn)單的理解為存放信息的空間,我們一般按如下順序進(jìn)行數(shù)據(jù)庫(kù)系統(tǒng)的創(chuàng)建:創(chuàng)建表空間---》修改表空間---》創(chuàng)建回滾段---》創(chuàng)建用戶和授權(quán)---》創(chuàng)建用戶表---》創(chuàng)建表索引,用戶只要按這個(gè)順序就可以建立自己的數(shù)據(jù)庫(kù)系統(tǒng)了,至于創(chuàng)建的數(shù)據(jù)庫(kù)是否有最佳的性能,我會(huì)在以后的文章中做專門(mén)的討論。表空間的建立可以用圖形用戶界面的方式很方便的建立,相信大家都會(huì),在這里我不進(jìn)行詳細(xì)的介紹,下面我把建表空間、修改表空間、建回滾段、創(chuàng)建用戶和授權(quán)、創(chuàng)建表、創(chuàng)建索引的SQL附后,請(qǐng)參考:
2、控制文件在每個(gè)數(shù)據(jù)庫(kù)中必不可少,為了使數(shù)據(jù)庫(kù)的性能提高建議多建幾個(gè)控制文件,求要求放在不同的磁盤(pán)上。 ORACLE數(shù)據(jù)庫(kù)由數(shù)據(jù)文件,控制文件和聯(lián)機(jī)日志文件三種文件組成。由于磁盤(pán)空間的變化,或者基于數(shù)據(jù)庫(kù)磁盤(pán)I/O性能的調(diào)整等,數(shù)據(jù)庫(kù)管理員可能會(huì)考慮移動(dòng)數(shù)據(jù)庫(kù)文件。下面以UNIX平臺(tái)為例,分別討論三種數(shù)據(jù)庫(kù)文件的移動(dòng)方法
不能被忽視的數(shù)據(jù)庫(kù)日志文件
請(qǐng)注意日志文件在恢復(fù)數(shù)據(jù)庫(kù)時(shí)非常重要
日志可分為在線日志和離線日志,在線日志能記錄每一個(gè)Oracle數(shù)據(jù)庫(kù)中所作的全部修改。一個(gè)在線日志由多個(gè)在線日志文件組成,每一個(gè)運(yùn)行的Oracle數(shù)據(jù)庫(kù)實(shí)例相應(yīng)地有一個(gè)在線日志,它與Oracle后臺(tái)進(jìn)程LGWR一起工作,立即記錄該實(shí)例所作的全部修改。離線日志是可選擇的·當(dāng)ORACLE填滿了在線日志文件后,就要進(jìn)行歸檔了。
二、創(chuàng)建表空間、回滾段、用戶、表的語(yǔ)法
1、創(chuàng)建表空間(這是在建數(shù)據(jù)庫(kù)時(shí)的第一步要做的工作,表空間好比容器,將數(shù)據(jù)庫(kù)的各種東西包含在里面)
CREATE TABLESPACE test DATAFILE '/dev/test_name1' SIZE 1000M, '/dev/test_name2' SIZE 1000M , '/dev/test_name3' SIZE 1000M
DEFAULT STORAGE ( INITIAL 64K NEXT 64K MAXEXTENTS UNLIMITED PCTINCREASE 50 );
注意:這里沒(méi)有對(duì)表空間的擴(kuò)展進(jìn)行限制。
2、修改表空間
alter TABLESPACE ts_name1 add DATAFILE '/dev/name4' SIZE 1000M;
3、回滾段
CREATE ROLLBACK SEGMENT "RStest" TABLESPACE "Test_name"
STORAGE ( INITIAL 16M NEXT 16M MAXEXTENTS UNLIMITED);
注意不要建不同的大小的回滾段,因?yàn)镺RACLE不會(huì)自己挑選和需要最相符的回滾段
4、創(chuàng)建用戶和授權(quán)
CREATE USER test_user IDENTIFIED BY test_user
DEFAULT TABLESPACE Test_name1 TEMPORARY TABLESPACE Test_name2;
GRANT CONNECT TO test_user;
GRANT DBA TO test_user;
GRANT resource TO test_user;
5、創(chuàng)建表
create table test_name1
(
a NUMBER(10) not null,
b NUMBER(10) null ,
c NUMBER(3) defalut 0,
d number(3) not null ,
constraint PK_ test_user primary key (a)
using index
tablespace test_name1
storage
(
initial 1m
next 1m
pctincrease 0
)
)
pctfree 10
tablespace test_name1
storage
(
initial 1m
next 1m
pctincrease 0
)
partition by range(d)
(partition part000 values less than (1) tablespace test_name1,
partition part001 values less than (2) tablespace test_name1,
)
/
6、創(chuàng)建索引
create index id_tablename1 on test_name1 (f2)
tablespace ts_name
storage
(
initial 500k
next 500k
pctincrease 0
)
/
三、查詢表空間
select substr(a.TABLESPACE_NAME,1,10) TablespaceName,
sum(a.bytes/1024/1024) totle_size,
sum(nvl(b.free_space1/1024/1024,0)) free_space,
sum(a.bytes/1024/1024)-sum(nvl(b.free_space1/1024/1024,0)) used_space,
round((sum(a.bytes/1024/1024)-sum(nvl(b.free_space1/1024/1024,0)))*100/sum(a.bytes/1024/1024),2) used_percent
from dba_data_files a,
(select sum(nvl(bytes,0)) free_space1,file_id
from dba_free_space
group by file_id) b
where a.file_id = b.file_id(+)
group by a.TABLESPACE_NAME