概序
Oracle數據庫作為一個大型的關系型數據庫,它與其他關系型數據庫相比,有許多個性的東西,下面作一個簡單的說明,其中包括我們在日常運行和維護中可能用到的知識,希望對大家有所幫助
一、基本知識
1、表空間對於數據庫是唯一性的,且要求每個數據庫最少有一個表空間。
表空間可以分為系統表空間和非系統表空間、回滾段表空間;也可以分為用戶表空間和非用戶表空間,他們只是分類方式不同,其實實質差不多;
臨時表空間:臨時表空間並不包含真正的數據,恢復的方法是刪除臨時表空間並重建即可.。系統表空間:如果備份不可用,則只能采用重建數據庫的方法 。
表空間的大小可以根據需要和設備的情況進行設置
表空間可以簡單的理解為存放信息的空間,我們一般按如下順序進行數據庫系統的創建:創建表空間---》修改表空間---》創建回滾段---》創建用戶和授權---》創建用戶表---》創建表索引,用戶只要按這個順序就可以建立自己的數據庫系統了,至於創建的數據庫是否有最佳的性能,我會在以後的文章中做專門的討論。表空間的建立可以用圖形用戶界面的方式很方便的建立,相信大家都會,在這裡我不進行詳細的介紹。
2、控制文件在每個數據庫中必不可少,為了使數據庫的性能提高建議多建幾個控制文件,求要求放在不同的磁盤上。 Oracle數據庫由數據文件,控制文件和聯機日志文件三種文件組成。由於磁盤空間的變化,或者基於數據庫磁盤I/O性能的調整等,數據庫管理員可能會考慮移動數據庫文件。下面以UNIX平台為例,分別討論三種數據庫文件的移動方法
不能被忽視的數據庫日志文件
請注意日志文件在恢復數據庫時非常重要
日志可分為在線日志和離線日志,在線日志能記錄每一個Oracle數據庫中所作的全部修改。一個在線日志由多個在線日志文件組成,每一個運行的Oracle數據庫實例相應地有一個在線日志,它與Oracle後台進程LGWR一起工作,立即記錄該實例所作的全部修改。離線日志是可選擇的·當Oracle填滿了在線日志文件後,就要進行歸檔了。
二、創建表空間、回滾段、用戶、表的語法
1、創建表空間(這是在建數據庫時的第一步要做的工作,表空間好比容器,將數據庫的各種東西包含在裡面)
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 );
注意:這裡沒有對表空間的擴展進行限制。
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);
注意不要建不同的大小的回滾段,因為Oracle不會自己挑選和需要最相符的回滾段
4、創建用戶和授權
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、創建表
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、創建索引
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