轉:http://blog.sina.com.cn/s/blog_49605b460100b1pi.html
elect *
from dba_tables
where OWNER='peter' CREATE TABLESPACE data01
DATAFILE 'D:\oracle\ora92\oradata\db\DATA01.dbf' SIZE 200M
UNIFORM SIZE 128k;
#指定區尺寸為128k,如不指定,區尺寸預設為64kCREATE TEMPORARY TABLESPACEtemp_data
TEMPFILE 'D:\oracle\ora92\oradata\db\TEMP_DATA.dbf' SIZE 100M
CREATE USER peter IDENTIFIED BY peter
DEFAULT TABLESPACE data01 TEMPORARY TABLESPACE temp_data;grantconnect,resource,dba to peter;
一、建立資料表空間
CREATE TABLESPACE data01
DATAFILE '/oracle/oradata/db/DATA01.dbf' SIZE 500M
UNIFORM SIZE128k; #指定區尺寸為128k,如不指定,區尺寸預設為64k
二、建立UNDO資料表空間
CREATE UNDO TABLESPACE UNDOTBS02
DATAFILE '/oracle/oradata/db/UNDOTBS02.dbf' SIZE 50M
#注意:在OPEN狀態下某些時刻只能用一個UNDO資料表空間,如果要用建立的資料表空間,必須切換到該資料表空間:
ALTER SYSTEM SET undo_tablespace=UNDOTBS02;
三、建立暫存資料表空間
CREATE TEMPORARY TABLESPACE temp_data
TEMPFILE '/oracle/oradata/db/TEMP_DATA.dbf' SIZE 50M
四、改變資料表空間狀態
1.使資料表空間離線
ALTER TABLESPACE game OFFLINE;
如果是意外刪除了資料檔案,則必須帶有RECOVER選項
ALTER TABLESPACE game OFFLINE FOR RECOVER;
2.使資料表空間聯機
ALTER TABLESPACE game ONLINE;
3.使資料檔案離線
ALTER DATABASE DATAFILE 3 OFFLINE;
4.使資料檔案聯機
ALTER DATABASE DATAFILE 3 ONLINE;
5.使資料表空間唯讀
ALTER TABLESPACE game READ ONLY;
6.使資料表空間可讀寫
ALTER TABLESPACE game READ WRITE;
五、刪除資料表空間
DROP TABLESPACE data01 INCLUDING 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.增加資料檔案
ALTER TABLESPACE game
ADD DATAFILE '/oracle/oradata/db/GAME02.dbf' SIZE 1000M;
2.手動增加資料檔案尺寸
ALTER DATABASE DATAFILE '/oracle/oradata/db/GAME.dbf'
RESIZE 4000M;
3.設定資料檔案自動擴充
ALTER DATABASE DATAFILE '/oracle/oradata/db/GAME.dbf
AUTOEXTEND ON NEXT 100M
MAXSIZE 10000M;
設定後查看錶空間資訊
SELECT A.TABLESPACE_NAME,A.BYTES TOTAL,B.BYTES USED, C.BYTESFREE,
(B.BYTES*100)/A.BYTES "% USED",(C.BYTES*100)/A.BYTES "% FREE"
FROM SYS.SM$TS_AVAIL A,SYS.SM$TS_USED B,SYS.SM$TS_FREE C
WHERE A.TABLESPACE_NAME=B.TABLESPACE_NAME ANDA.TABLESPACE_NAME=C.TABLESPACE_NAME;
-----------------------------------------------------------------------------------------------------------------------------------
CREATE TABLESPACE命令
CREATE [UNDO] TABLESPACE tablespace_name
[DATAFILE datefile_spec1 [,datefile_spec2] ......
[ {MININUM EXTENT integer [k|m] | BLOCKSIZE integer [k] |loggingclause|FORCE LOGGING |DEFAULT{data_segment_compression }storage_clause
|[online|offline]|[PERMANENT|TEMPORARY]|extent_manager_clause|segment_manager_clause}]
1、undo
說明系統將建立一個復原資料表空間。
在9i中資料庫管理員可以不必管理復原段,只有建立了undo資料表空間,系統就會自動管理復原段的分配,回收的工作。當然,也可以建立一般的資料表空間,在上面建立復原段.不過對於使用者來說,系統管理比自己管理要好很多.如果需要自己管理,請參見復原段管理的命令詳解.
當沒有為系統指定復原資料表空間時,系統將使用system系統復原段來進行交易管理。
2、tablespace
指出資料表空間的名稱。
3、datafile datefile_spec1
指出資料表空間包含什麼空間檔案。datefile_spec1 是形如 ['filename'] [SIZE integer [ K| M ]] [REUSE] [autoextend_clause]
[autoextend_clause]切穩紓?AUTOEXTEND { OFF | ON [ NEXT integer [ K| M ] ] [maxsize_clause] }
其中filename是資料檔案的全路徑名,size是檔案的大小,REUSE表示檔案是否被重用.
AUTOEXTEND表明是否自動擴充. OFF | ON 表示自動擴充是否被關閉.NEXT表示資料檔案滿了以後,擴充的大小.
maxsize_clause表示資料檔案的最大大小.形如MAXSIZE { UNLIMITED | integer [ K |M ] }.UNLIMITED 表示無限的資料表空間.integer是資料檔案的最大大小.
4、MININUM EXTENT integer [k|m]
指出在資料表空間中範圍的最小值。這個參數可以減小空間片段,保證在資料表空間的範圍是這個數值的整數倍。
5、BLOCKSIZE integer [k]
這個參數可以設定一個不標準的塊的大小。如果要設定這個參數,必須設定db_block_size,至少一個db_nk_block_size,並且聲明的integer的值必須等於db_nk_block_size.
注意:在暫存資料表空間不能設定這個參數。
6、logging clause
這個子句聲明這個資料表空間上所有的使用者物件的日誌屬性(預設是logging),包括表,索引,分區,物化視圖,物化視圖上的索引,分區。
7、FORCE LOGGING
使用這個子句指出資料表空間進入強制記錄模式。此時,系統將記錄資料表空間上對象的所有改變,除了臨時段的改變。這個參數高於對象的nologging選項。
注意:設定這個參數資料庫不行open並且出於讀寫入模式。而且,在暫存資料表空間和復原資料表空間中不能使用這個選項。
8、DEFAULT storage_clause
聲明預設的儲存子句。
9、online|offline
改變資料表空間的狀態。online使資料表空間建立後立即有效.這是預設值.offline使資料表空間建立後無效.這個值,可以從dba_tablespace中得到。
10、PERMANENT|TEMPORARY
指出資料表空間的屬性,是永久資料表空間還是暫存資料表空間。永久資料表空間存放的是永久對象,暫存資料表空間存放的是session生命期中存在的臨時對象。這個參數產生的暫存資料表空間建立後一直都是字典管理,不能使用extentmanagement local選項。如果要建立本地管理資料表空間,必須使用create temporary tablespace
注意,聲明了這個參數後,不能聲明block size
11、extent_management_clause
這是最重要的子句,說明了資料表空間如何管理範圍。一旦你聲明了這個子句,只能通過移植的方式改變這些參數。
如果希望資料表空間本地管理的話,聲明local選項。本地管理資料表空間是通過位元影像管理的。autoallocate說明資料表空間自動分配範圍,使用者不能指定範圍的大小。只有9.0以上的版本具有這個功能。uniform說明資料表空間的範圍的固定大小,預設是1m。
不能將本地管理的資料庫的system資料表空間設定成字典管理。
oracle公司推薦使用本地管理資料表空間。
如果沒有設定extent_management_clause,oracle會給他設定一個預設值。如果初始化參數compatible小於9.0.0,那麼系統建立字典管理資料表空間。如果大於9.0.0,那麼按照如下設定:
如果沒有指定default storage_clause,oracle建立一個自動分配的本地管理資料表空間。
否則,如果指定了mininum extent,那麼oracle判斷mininum extent、initial、next是否相等,以及pctincrease是否=0.如果滿足以上的條件,oracle建立一個本地管理資料表空間,extentsize是initial.如果不滿足以上條件,那麼oracle將建立一個自動分配的本地管理資料表空間。
如果沒有指定mininumextent。initial、那麼oracle判斷next是否相等,以及pctincrease是否=0。如果滿足oracle建立一個本地管理資料表空間並指定uniform。否則oracle將建立一個自動分配的本地管理資料表空間。
注意:本地管理資料表空間只能儲存永久對象。如果你聲明了local,將不能聲明defaultstorage_clause,mininum extent、temporary.
12、segment_management_clause
建立資料表空間
CREATE TABLESPACE data01
DATAFILE '/oracle/oradata/db/DATA01.dbf' SIZE 500M
UNIFORM SIZE128k; #指定區尺寸為128k,如不指定,區尺寸預設為64k
刪除資料表空間
DROP TABLESPACE data01 INCLUDING CONTENTS AND DATAFILES;
--------------------------------------------------------------------------------------------------------------------------------
1.建立角色
CREATE ROLE "QIUDINGROLE" NOT IDENTIFIED;
GRANT "CONNECT" TO "QIUDINGROLE";
GRANT "DBA" TO "QIUDINGROLE";
GRANT "RESOURCE" TO "QIUDINGROLE";
2.建立資料表空間
CREATE SMALLFILE TABLESPACE "DIAOCHA" DATAFILE 'D:\oracle\product\10.1.0\oradata\qiuding\diaocha' SIZE 100M AUTOEXTEND ON NEXT 1M MAXSIZE UNLIMITED LOGGING EXTENT MANAGEMENT LOCAL SEGMENT SPACE MANAGEMENT AUTO;
BEGIN DBMS_SERVER_ALERT.SET_THRESHOLD(9000,NULL,NULL,NULL,NULL,1,1,NULL,5,'DIAOCHA'); END;
CREATE SMALLFILE TEMPORARY TABLESPACE "DIAOCHA_TEMP" TEMPFILE 'D:\oracle\product\10.1.0\oradata\qiuding\diaocha_temp' SIZE 100M AUTOEXTEND ON NEXT 1M MAXSIZE UNLIMITED EXTENT MANAGEMENT LOCAL UNIFORM SIZE 1M;
BEGIN DBMS_SERVER_ALERT.SET_THRESHOLD(9000,NULL,NULL,NULL,NULL,1,1,NULL,5,'DIAOCHA_TEMP'); END;
3.建立使用者
create user QIUDING
identified by "QIUDING"
default tablespace "DIAOCHA"
temporary tablespace "DIAOCHA_TEMP"
profile DEFAULT
ACCOUNT UNLOCK;
grant QIUDINGROLE to QIUDING;
grant unlimited tablespace to QIUDING
4.建立備份目錄並且付相應許可權
create directory dump_dir as 'D:\oracle\backup';
grant read,write on directory dump_dir to QIUDING;
-------------------------------------------------------------------------------------------------------------------------
要使用Oracle還需要做一些前期工作.
使用Oracle使用者
# su - oracle
建立資料表空間 -> 建立新使用者 -> 使用者授權
一 建立資料表空間
SQL> CREATE TABLESPACE test01
DATAFILE '/data/oracle/oradata/db/test01.dbf' SIZE 1024M UNIFORM SIZE 128k;
1) DATAFILE: 資料表空間資料檔案存放路徑
2) SIZE: 起初設定為1G就可以
3) UNIFORM: 指定區尺寸為128k,如不指定,區尺寸預設為64k
4) 空間名稱 test01 與 資料檔案名稱 test01.dbf 不要求相同,可隨意命名.
通過ALTER DATABASE修改空間擴充大小
SQL > ALTER DATABASE DATAFILE '/data/oracle/oradata/db/test01.dbf' ' AUTOEXTEND ON;
1)AUTOEXTEND ON:在Oracle10g中,需要手動開機磁碟分割自動擴充功能.
二 建立新使用者
SQL> CREATE USER test IDENTIFIED BY 123456 DEFAULT TABLESPACE test01;
1) 建立使用者同時分配資料表空間
三 使用者授權
1)使用者角色授權
SQL> CRANT CONNECT,RESOURCE TO test;
a) 我這裡將CONNECT和RESOURCE角色賦給新使用者test,test將擁有這兩個角色的操作許可權.
2)直接授權
多使用者
SQL> CRANT SELECT,INSERT,UPDATE,DELETE,ON USERS TO test,test1;
下面我們可以使用兩種方式登入Oracle db
一 SQLPLUS
1)本地登入
SQL> sqlplus test/123456
2)遠程登入
假設db在另一台伺服器
SQL> sqlplus test/123456@db
二 PLSQL Developer
上篇中也有講述,輸入帳號口令就可以了.
下面說些和上面相關,且工作中會需要用到的.
一 刪除使用者
SQL> DROP USER test CASCADE;
二 刪除資料表空間
SQL> DROP TABLESPACE test01 INCLUDING CONTENTS AND DATAFILES;
1) 刪除資料表空間內容和資料檔案.
2) 一般無效資料表空間佔用磁碟空間,所以這個應該很常用.
查看使用者角色許可權
select * from user_role_privs;
查看使用者表許可權
select * from user_tab_privs;