【第001篇】Oracle数据库创建表空间和用户

第一步:创建临时表空间

    执行以下命令,查询得到临时表空间目录
select name from v$tempfile;
    将下面的脚本复制粘贴到工具中,注意需要替换"临时表空间名"和"临时表空间目录"。
CREATE TEMPORARY TABLESPACE 临时表空间名 TEMPFILE ‘临时表空间目录’ SIZE 50M REUSE AUTOEXTEND ON NEXT 20M MAXSIZE 200M;
-- 例如
CREATE TEMPORARY TABLESPACE NXS_TEMP
TEMPFILE /home/oracle/database/orcl/NXS_TEMP.DBF 
SIZE 50M REUSE 
AUTOEXTEND ON NEXT 20M 
MAXSIZE 200M;

第二步:创建数据表空间

    执行以下命令,查询得到数据表空间目录
select name from v$datafile;
    将下面的脚本复制粘贴到工具中,注意需要替换"数据表空间名"和"数据表空间目录"。
CREATE TABLESPACE 数据表空间名 DATAFILE ‘数据表空间目录’ SIZE 1000M REUSE AUTOEXTEND ON NEXT 100M MAXSIZE UNLIMITED;
-- 例如
CREATE TABLESPACE NXS_DATA
DATAFILE /home/oracle/database/orcl/NXS_DATA.DBF 
SIZE 1000M REUSE 
AUTOEXTEND ON NEXT 100M 
MAXSIZE UNLIMITED;

第二步:创建用户

CREATE USER 用户名 IDENTIFIED BY 密码 DEFAULT TABLESPACE 数据表空间名 TEMPORARY TABLESPACE 临时表空间名;
-- 例如
-- zjjt:用户名   zjjt@2018:密码    NXS_DATA:数据表空间名    NXS_TEMP:临时表空间名
CREATE USER zjjt IDENTIFIED BY zjjt@2018 DEFAULT TABLESPACE NXS_DATA TEMPORARY TABLESPACE NXS_TEMP;

第三步:为新增用户授权

GRANT DBA TO 用户名; GRANT CONNECT,RESOURCE TO 用户名;
-- 例如
GRANT DBA TO zjjt;
GRANT CONNECT,RESOURCE TO zjjt;

其他 1、 修改临时空间为自动扩展

ALTER DATABASE TEMPFILE ‘临时表空间目录’ AUTOEXTEND ON NEXT 10M MAXSIZE UNLIMITED;

2、删除表空间命令

DROP TABLESPACE 表空间名(临时/数据) INCLUDING CONTENTS AND DATAFILES;

3、查看oracle用户默认表空间名称

SELECT USERNAME,DEFAULT_TABLESPACE FROM DBA_USERS WHERE USERNAME=UPPER(‘用户名’);

4、查看表空间使用情况以及表空间目录文件位置

--查看表空间使用情况以及表空间目录文件位置
--1G=1024MB 
--1M=1024KB 
--1K=1024Bytes 
--1M=11048576Bytes 
--1G=1024*11048576Bytes=11313741824Bytes 
SELECT 
	A.TABLESPACE_NAME AS "表空间名"
	,B.FILE_NAME AS "表空间目录"
	,B.TOTAL AS "表空间大小"
	,A.FREE AS "表空间剩余大小"
	,(B.TOTAL-A.FREE) AS "表空间使用大小"
	,ROUND(NVL(B.TOTAL,0)/(1024 * 1024 * 1024),4) AS "表空间大小(G)"
	,ROUND(NVL(A.FREE,0)/(1024 * 1024 * 1024),4) AS "表空间剩余大小(G)"
	,ROUND(NVL((B.TOTAL-A.FREE),0)/(1024 * 1024 * 1024),4) AS "表空间使用大小(G)"
	,ROUND(DECODE(B.TOTAL,0,0,NVL((B.TOTAL-A.FREE),0)/B.TOTAL),4)*100 AS "使用率(%)" 
FROM (
	SELECT TABLESPACE_NAME,SUM(BYTES) AS FREE FROM DBA_FREE_SPACE GROUP BY TABLESPACE_NAME
) A,(
	SELECT TABLESPACE_NAME,SUM(BYTES) AS TOTAL,FILE_NAME FROM DBA_DATA_FILES GROUP BY TABLESPACE_NAME,FILE_NAME
) B 
WHERE A.TABLESPACE_NAME=B.TABLESPACE_NAME;
经验分享 程序员 微信小程序 职场和发展