Oracle的SQL基礎之用戶與表空間

前排提示:數據庫對象不理解的,可以查看我的關於數據庫對象的博文

1.用戶

1.1四個系統默認用戶

Oracle的安裝完成會產生四個系統默認用戶,其級別依次是

sys > system > sysman > scott

  • sys:       必須以管理員(sysdba)或者系統操作人員(sysoper)的身份才能登錄,真正的超級管理員
  • system: 可以直接登錄,system及以上纔有改動表空間的權限
  • sysman:通常用來操縱企業管理器(管理員級別)
  • scott:     默認會被上鎖,scott是Oracle創始人之一的名字

 

1.2使用SQLPlus登錄

SQL Plus是Oracle安裝附帶的命令行工具,可以直接使用,也可以在cmd中通過輸入sqlplus來使用

登錄

[username/password] [@server] [as sysdba|sysoper]

登錄後切換到其它用戶

connect 用戶名/口令 [as sysdba | sysoper]

查看當前登錄用戶

show user;

1.3通過數據字典查看信息

1.3.1什麼是數據字典

數據字典是數據庫提供的,用於查看數據庫的信息

數據字典注意點

  1. dba開頭的一般是管理員級別才能查看的,非dba開頭的是管理員和普通用戶才能查看的
  2. 非dba開頭的數據字典比描述同樣東西的dba開頭的數據字典的字段和記錄會少,因爲他們服務的用戶不一樣

 

1.3.2通過數據字典查看信息

查看指定數據字典有哪些字段

[desc | describe] 數據字典名

知道有哪些字段後,直接查看該字段

select username from dba_users;

1.4用戶的相關操作

1.4.1鎖定和解鎖用戶

Oracle的用戶有lockunlock兩種狀態。像scott等部分用戶是默認被鎖定的,需要解鎖後使用

alter user 用戶名 acoount [lock | unlock];

1.4.2修改密碼

alter user 用戶名 identified by 密碼;

1.5刪除用戶

--cascade是級聯刪除,表示連着刪除這個用戶下的對象
drop user 用戶名 [cascade];

1.6創建和授權用戶

create user 用戶名 identified by 密碼;

--授予指定用戶"DBA"權限(須在sys身份下)
GRANT "DBA" TO 用戶名 WITH ADMIN OPTION;

 

2.表空間

2.1表空間概述

2.1.1理解表空間

表空間和數據庫

表空間其實就是數據庫的邏輯存儲空間,可以理解爲表空間就是在數據庫中開闢的一塊用於存放數據庫對象的。一個數據庫有多個表空間構成。表空間是Oracle區別與其它關係型數據庫的重要一點。Oracle的很多優化都是通過表空間實現了

表空間與數據文件

表空間是由一個或多個數據文件組成的。

我們存儲的表、數據庫、以及數據庫當中的其它對象都是存放在表空間的數據文件裏面的

2.1.2表空間分類

  1. 永久表空間:需要永久存儲的表/視圖/存儲過程等
  2. 臨時表空間:數據庫操作中中間執行的過程, 完了自行刪除將不永久保存
  3. Undo表空間:保存事務所修改的舊值,修改前的數據(利於撤銷等方便回滾)

 

2.2管理表空間

2.2.1查看用戶的表空間

表空間的兩個數據字典:dba_tablespaces、user_tablespaces,分別針對系統管理員級別的用戶和普通的用戶

用戶相關的數據字典:dba_users、user_users,分別針對系統管理員級別的用戶和普通的用戶

select tablespace_name from dba_tablespaces;

六個初始表空間

  1. SYSTEM(系統表空間):     存放sys用戶的表、視圖、存儲過程等數據庫對象
  2. SYSAUX:                          作爲EXAMPLE的輔助表空間
  3. UNDOTBS1:                     存儲撤銷信息的undo類型表空間
  4. TEMP(臨時表空間):          用於存儲sql語句處理的表、索引等的臨時表空間
  5. USERS(永久性表空間):   存儲數據庫用戶創建的數據庫對象
  6. EXAMPLE:                       安裝Oracle 11g 數據庫示例來使用的表空間

 

查看指定用戶的默認表空間和臨時表空間

select default_tablespace, temporary_tablespace from dba_users where username=’SYSTEM’;
select default_tablespace, temporary_tablespace from dba_users where username=’SCOTT’;

設置默認表空間和臨時表空間(需要管理員級別-system及以上身份登錄纔有執行下面sql的權限)

alter user 用戶名 default|temporary tablespace 表空間名;

2.3創建表空間

create [temporary] tablespace 表空間名 
[logging]
tempfile|datafile 'xx.dbf'|'xx.dmp'
size 50m
autoextend on  
next 50m maxsize 20480m  
extent management local; 

上面的temporary表示是創文件,size是起始大小,autoextend on時表示自增建臨時表空間,tempfile是創建臨時表空間指定的臨時文件,datafile是創建非臨時表空間指定的

 

查看表空間的相關信息的數據字典:dba_data_files、dba_temp_files,分別是非臨時表空間和臨時表空間的

select file_name from dba_temp_files where tablespace_name = '你要查的臨時表空間名,注意大寫';
select file_name from dba_data_files where tablespace_name = '你要查的非臨時表空間名,注意大寫';

2.4修改表空間

2.4.1修改表空間的狀態

表空間有三種狀態:聯機(online,可讀寫)、脫機(offline)、只讀(read only,前提是online狀態)

設置聯機或脫機狀態

alter tablespace 表空間名 online|offline;

使用數據字典查看錶空間狀態

select status from dba_tablespaces where tablespace_name = '你要查看的表空間名,注意大寫';

設置只讀或可讀寫(前提是online狀態,默認online就是可讀寫狀態)

alter tablespace 表空間名 ( read only|read write );

 

2.4.2修改表空間對應的數據文件

一個表空間(邏輯)可以有多個數據文件(物理)

增加數據文件 (m是兆的意思)

alter tablespace 表空間名 add datafile|tempfile 'xx.dbf'|'xx.dmp' size xxm;

刪除數據文件

alter tablespace 表空間名 drop datafile|tempfile 'xx.dbf'|'xx.dmp';

2.5刪除表空間

drop tablespace 表空間名  [ including contents [ and datafiles ] [ cascade constraint ] ];

   無選項                                                                                        -- 當表空間爲空才能刪除
   including contents                                                                      --刪除表空間及對象
   including contents and datafiles                                               --刪除表空間、對象及數據文件
   including contents cascade constraint                                      -- 刪除關聯
   including contents and datafiles cascade constraint                 -- 含前兩項

 

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章