Oracle笔记之表空间
?
Oracle中有一個表空間的概念,一個數據庫可以有好幾個表空間,表放在表空間下。
?
1. 創建表空間
創建表空間使用create tablespace命令:
CREATE TABLESPACE foo_tablespace DATAFILE 'E:/oracle/data/foo_tablespace.dbf' SIZE 20M AUTOEXTEND ON NEXT 5M MAXSIZE 500M;DATAFILE 'E:/oracle/data/foo_tablespace.dbf'? 指定邏輯上的表空間在磁盤上的物理存儲文件。
SIZE 20M 指定表空間的初始大小,創建完成后到磁盤上查看:
不管里面有多少數據,初始化的時候會先分配20M。
AUTOEXTEND ON NEXT 5M 當之前分配的那20M空間用完了之后怎么辦,這個時候就需要能夠動態擴展,這里指定每次擴展的時候擴展5M的空間。
MAXSIZE 500M 動態擴展也總會有有一個上限的吧,這里指定動態擴展最大擴展到多少就不再繼續擴展了。
?
創建完成后查看其相關信息:
SQL> SELECT * FROM dba_data_files; FILE_NAME FILE_ID TABLESPACE_NAME BYTES BLOCKS STATUS RELATIVE_FNO AUTOEXTENSIBLE MAXBYTES MAXBLOCKS INCREMENT_BY USER_BYTES USER_BLOCKS ONLINE_STATUS -------------------------------------------------------------------------------- ---------- ------------------------------ ---------- ---------- --------- ------------ -------------- ---------- ---------- ------------ ---------- ----------- ------------- C:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\USERS01.DBF 4 USERS 5242880 640 AVAILABLE 4 YES 3435972198 4194302 160 5177344 632 ONLINE C:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\SYSAUX01.DBF 3 SYSAUX 262144000 32000 AVAILABLE 3 YES 3435972198 4194302 1280 262078464 31992 ONLINE C:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\UNDOTBS01.DBF 2 UNDOTBS1 26214400 3200 AVAILABLE 2 YES 3435972198 4194302 640 26148864 3192 ONLINE C:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\SYSTEM01.DBF 1 SYSTEM 503316480 61440 AVAILABLE 1 YES 3435972198 4194302 1280 503250944 61432 SYSTEM E:\ORACLE\DATA\FOO_TABLESPACE.DBF 5 FOO_TABLESPACE 20971520 2560 AVAILABLE 5 YES 524288000 64000 640 20905984 2552 ONLINE?
2. 使用表空間
查看用戶的默認表空間:
SQL> SELECT username, default_tablespace FROM dba_users; USERNAME DEFAULT_TABLESPACE ------------------------------ ------------------------------ MGMT_VIEW SYSTEM SYS SYSTEM SYSTEM SYSTEM DBSNMP SYSAUX SYSMAN SYSAUX FOO USERS SCOTT USERS SAM USERS TOM USERS OUTLN SYSTEM MDSYS SYSAUX ORDSYS SYSAUX CTXSYS SYSAUX ANONYMOUS SYSAUX EXFSYS SYSAUX DMSYS SYSAUX WMSYS SYSAUX XDB SYSAUX ORDPLUGINS SYSAUX SI_INFORMTN_SCHEMA SYSAUX USERNAME DEFAULT_TABLESPACE ------------------------------ ------------------------------ OLAPSYS SYSAUX MDDATA USERS DIP USERS TSMSYS USERS 24 rows selected一些特殊用戶的默認表空間是SYSTEM,普通用戶的默認表空間是USERS。
修改用戶的默認表空間(只對一個用戶生效):
ALTER USER SCOTT DEFAULT TABLESPACE foo_tablespace;修改數據庫級別的默認表空間(對整個數據庫都生效):
ALTER DATABASE DEFAULT TABLESPACE foo_tablespace;?
關于表空間:
在Oracle9i中,如果沒有用DEFAULT TABLESPACE子句指定用戶默認表空間的話其默認表空間就是SYSTEM,而且也不能為數據庫指定默認表空間。
在Oracle10g中定義數據庫級別的默認表空間是USERS,在創建用戶時如果沒有指定默認表空間就會使用數據庫級別默認表空間。
?
在創建表的時候指定使用哪一個表空間:
CREATE TABLE t_user(id INT NOT NULL ,username VARCHAR2(20) NOT NULL ,passwd CHAR(32) NOT NULL ,CONSTRAINT PK_T_USER PRIMARY KEY (id) ) TABLESPACE foo_tablespace;查看t_user表所屬的表空間:
SQL> SELECT TABLE_NAME, TABLESPACE_NAME FROM user_tables WHERE table_name='T_USER'; TABLE_NAME TABLESPACE_NAME ------------------------------ ------------------------------ T_USER FOO_TABLESPACE?
對于已經創建了的表可以將其從一個表空間下移動到另一個表空間下:
ALTER TABLE t_user MOVE TABLESPACE users;再查看,會發現之前的t_user已經到了默認的users表空間下:
SQL> SELECT TABLE_NAME, TABLESPACE_NAME FROM user_tables WHERE table_name='T_USER'; TABLE_NAME TABLESPACE_NAME ------------------------------ ------------------------------ T_USER USERS?
3. 重命名表空間
重命名表空間,修改表名類似:
ALTER TABLESPACE foo_tablespace RENAME TO foobar_tablespace;?
4. 刪除表空間
刪掉表空間,連同其內已有的數據對象和磁盤上之前指定的數據文件都一并刪掉:
DROP TABLESPACE foo_tablespace INCLUDING CONTENTS AND DATAFILES;需要注意刪除表空間的時候表空間必須不在使用狀態。即沒有哪個數據庫用其作為默認表空間。
?
?
?
.
轉載于:https://www.cnblogs.com/cc11001100/p/6988156.html
總結
以上是生活随笔為你收集整理的Oracle笔记之表空间的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: PHP中oop面向对象基础知识(一)
- 下一篇: python中的魔法参数:*args和*