【第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;