1. 程式人生 > >oracle表空間 資料檔案 使用者的建立及刪除

oracle表空間 資料檔案 使用者的建立及刪除

oracle資料庫:資料庫物件以及表資料都儲存在表空間中,建立使用者時可以指定對應的表空間。這樣使用者可以在各自的表空間中操作資料,互不干擾。

1. 表空間建立 若不清楚表空間對應檔案的路徑,可以登入系統使用者(sys/system)檢視已有表空間對應資料檔案的路徑
select * from dba_data_files;
  • 臨時表空間
用作資料庫運算過程中的資料儲存,或臨時表資料儲存等。用完之後系統會自動清理。若不建立則使用系統預設的臨時表空間TEMP
CREATE TEMPORARY TABLESPACE tempname --表空間名稱
TEMPFILE '/oracle/oradata/orcl/temp001.dbf' --檔案路徑
SIZE 200m --初始大小
AUTOEXTEND ON NEXT 32m --自動擴充套件每次多少
MAXSIZE 2048m --最大多少(也可以設定為UNLIMITED,則最大為32g)
EXTENT MANAGEMENT LOCAL; 
  • 永久性表空間
儲存資料庫物件,以及表資料。與臨時表空間最大的區別是資料永久性,不會被系統自動清空。
CREATE TABLESPACE DB_DATA
DATAFILE '/oracle/oradata/orcl/DB_DATA01.dbf'
SIZE 32m
AUTOEXTEND ON NEXT 32m
MAXSIZE 2048m
EXTENT MANAGEMENT LOCAL;
2. 資料檔案新增及修改
  • 為表空間新增資料檔案
當表空間對應的資料檔案已經增長到上限值(自己設定的上限值,或者32g),此時則需要為該表空間新增一個數據檔案。
ALTER TABLESPACE DB_DATA ADD DATAFILE '/oracle/oradata/orcl/DB_DATA02.dbf' 
SIZE 50M
AUTOEXTEND ON NEXT 5M 
MAXSIZE 100M;
  • 已存在的資料檔案屬性修改
ALTER DATABASE DATAFILE '/oracle/oradata/orcl/DB_DATA02.dbf'
AUTOEXTEND ON NEXT 5M 
MAXSIZE 100M;
  • 已存在的資料檔案大小調整
ALTER DATABASE DATAFILE '/oracle/oradata/orcl/DB_DATA02.dbf'
RESIZE 100M;
3. 使用者建立
sys使用者是超級使用者,具有最高許可權,具有sysdba角色,有create database的許可權
system使用者是管理操作員,許可權也很大。具有sysoper角色,沒有create database的許可權
登入系統使用者(sys/system),建立一般使用者。使用者指定的profile是限制資料庫使用者使用資源的一種手段
-- 建立使用者 
create user username --使用者名稱
identified by password --密碼
  default tablespace DB_DATA --指定永久性表空間
  temporary tablespace TEMP --指定臨時表空間
  profile DEFAULT; --預設的profile

--檢視profile的各個引數資訊
select * from dba_profiles where profile='DEFAULT';  
4. 使用者授權
oracle中許可權分為系統許可權和物件許可權。可以直接授權,也可以通過授予角色得到角色的許可權。對於表空間預設是無限額的,不建議讓使用者在其他表空間隨意建表。一般授予 connect,resource即可。
--把角色授予使用者,該使用者也將擁有該角色的許可權
grant connect to username; --連線資料庫
grant resource to username; --建立資料庫實體(表,過程等)
grant dba to username; --建立資料庫結構

--針對表空間使用
grant unlimited tablespace to username; --使用者可以再其他表空間隨意建表,且無限額

--系統許可權(此處列舉幾個)
grant create cluster to username;
grant create procedure to username;
grant create synonym to username;
grant create trigger to username;
grant create view to username;
grant create JOB to username;
grant drop any table to username;

--物件許可權(此處列舉幾個)
grant delete any table to username;
grant update any table to username;
grant insert any table to username;
grant select any table to username;
5、刪除使用者
刪除使用者時,經常會碰到有人正在連線,無法刪除。需要登入系統使用者(sys/system)批量強制關閉連線。
--執行查詢出來的內容即可
select 'alter system kill session' '' || sid || ',' || serial# || ''';'
from v$session 
where username = 'XXX'; --填寫需要刪除的使用者名稱
清除連線之後,就可以在sys使用者下刪除使用者了,若使用者下已存在物件,則需要帶上 cascade,否則執行報錯。
drop user XXX cascade;
6、刪除表空間
--刪除表空間
drop tablespace XXX;
--刪除表空間同時刪除對應的資料檔案
drop tablespace XXX including contents and datafiles;
ps:以上指令碼執行順序:建立表空間-->建立使用者。刪除使用者-->刪除表空間。 對於許可權,角色,使用者的說明,可以參看 https://www.cnblogs.com/mohai/archive/2013/05/10/3071166.html