1、Oracle创建数据库表空间思路分析
- 创建两个数据库的文件
- 创建用户与上面创建的文件形成映射关系
- 给用户添加权限
一、创建两个数据库的文件(monitor.dbf 和monitor_temp.dbf 两个文件)
1、Window下的操作
```sql CREATE TABLESPACE monitor LOGGING DATAFILE ‘E:\app\owner\oradata\orcl\monitor.dbf’ SIZE 100M AUTOEXTEND ON NEXT 32M MAXSIZE 500M EXTENT MANAGEMENT LOCAL; create temporary tablespace monitor_temp tempfile ‘E:\app\owner\oradata\orcl\monitor_temp.dbf’ size 100m autoextend on next 32m maxsize 500m extent management local;
<a name="jNTGV"></a>
### 2、Linux下的操作
```sql
SQL> CREATE TABLESPACE monitor LOGGING DATAFILE 'monitor.dbf' SIZE 100M AUTOEXTEND ON NEXT 32M MAXSIZE 500M EXTENT MANAGEMENT LOCAL;
Tablespace created.
SQL> create temporary tablespace monitor_temp tempfile 'monitor_temp.dbf'size 100m autoextend on next 32m maxsize 500m extent management local;
Tablespace created.
SQL>
二、创建用户与上面创建的文件形成映射关系(用户名为monitor,密码为monitor)
CREATE USER monitor IDENTIFIED BY monitor DEFAULT TABLESPACE monitor TEMPORARY TABLESPACE monitor_temp;
SQL> CREATE USER monitor IDENTIFIED BY monitor DEFAULT TABLESPACE monitor TEMPORARY TABLESPACE monitor_temp;
User created.
SQL>
- monitor为用户名
- monitor为用户密码
- default tablespace是默认表空间,这里设置成上面创建的表空间
- temporary tablespace是临时表空间
- quote设置用户在表空间上占用的空间大小。如果不指定默认表空间,Oracle会将SYSTEM表空间指定为用户的默认表空间;如果没有用quota子句,用户在特定表空间的配额为0,用户不能在该表空间上创建数据对象。(以上没有使用)
- 创建用户后,当用户分配的空间不够时,可以扩展用户的空间:alter user monitor quota 20m on monitor;将用户的空间扩展为20m
- 给用户指定两个表空间,并且可使用大小不限制:alter user userName quota unlimited on tablespace1 quota unlimited on tablespace2;
- 修改用户密码:alter user testUser identified by 123456;将用户的密码设置为123456。
- 有时用户会处于锁定状态,解锁用户:alter user testUser account unlock;
- 为用户设置权限,初始建立的用户没有任何权限,不能执行任何数据库操作,因此必须为用户设置权限或者角色。被赋予了某个角色的用户将拥有该角色所具备的权限,常被用到的系统预定义角色:CONNECT、RESOURCE、DBA、EXP_FULL_DATABASE、IMP_FULL_DATABASE。其中,CONNECT、RESOURCE、DBA主要用于数据库管理,数据库管理员需要被授予这三个角色。一般的数据库开发人员,需要被授予CONNECT、RESOURCE角色即可。EXP_FULL_DATABASE、IMP_FULL_DATABASE角色分别用于操作数据库导出、导入相关的操作。为用户授予角色。
三、添加权限
grant connect,resource,dba to monitor;
grant create session to monitor;
四、删除数据库
DROP TABLESPACE monitor INCLUDING CONTENTS AND DATAFILES;
五、删除用户
drop user monitor cascade;
六、创建表-插入数据-查询数据
A、使用sys帐号登录操作
注意:那个用户连接的,本次操作和提交会执行至对应的用户表空间中 ```sql SQL> CREATE TABLE STUSER (id number(10) NOT NULL primary key ,user_name VARCHAR (40) NOT NULL, user_phone VARCHAR(11));
Table created.
SQL> insert into STUSER(id, user_name, user_phone) values(1, ‘Fcant’, ‘17826260016’);
1 row created.
SQL> commit;
Commit complete.
SQL> select * from STUSER;
ID USER_NAME USER_PHONE
1 Fcant 17826260016
SQL>
![image.png](https://cdn.nlark.com/yuque/0/2019/png/396745/1566921112931-8170c6eb-5afb-41b0-9a37-7823c3069f8c.png#crop=0&crop=0&crop=1&crop=1&height=421&id=m7mhQ&name=image.png&originHeight=1157&originWidth=3327&originalType=binary&ratio=1&rotation=0&showTitle=false&size=174020&status=done&style=none&title=&width=1209.8181818181818)
**由于本次登录操作使用sys帐号登录,执行的表创建和数据都执行保留在sys数据库中**<br />![image.png](https://cdn.nlark.com/yuque/0/2019/png/396745/1566921469832-a80ae56c-3bdf-4ea7-9c10-657d2bba88b8.png#crop=0&crop=0&crop=1&crop=1&height=612&id=JJLNe&name=image.png&originHeight=1683&originWidth=2436&originalType=binary&ratio=1&rotation=0&showTitle=false&size=480248&status=done&style=shadow&title=&width=885.8181818181819)<br />![image.png](https://cdn.nlark.com/yuque/0/2019/png/396745/1566921571422-8ca3ee88-e017-416c-ae55-12b9169b541c.png#crop=0&crop=0&crop=1&crop=1&height=618&id=cCLVE&name=image.png&originHeight=1699&originWidth=2441&originalType=binary&ratio=1&rotation=0&showTitle=false&size=349856&status=done&style=none&title=&width=887.6363636363636)
<a name="vO02o"></a>
### B、使用创建的数据库和用户登录进行数据库表的创建操作
**新用户登录时退出原来登录的用户**
```sql
SQL> exit
Disconnected from Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - 64bit Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options
[oracle@dbcef03180fe root]$ sqlplus /nolog
SQL*Plus: Release 11.2.0.1.0 Production on Wed Aug 28 08:15:19 2019
Copyright (c) 1982, 2009, Oracle. All rights reserved.
SQL> conn monitor/monitor
Connected.
SQL> CREATE TABLE STUSER (id number(10) NOT NULL primary key ,user_name VARCHAR (40) NOT NULL, user_phone VARCHAR(11));
Table created.
SQL> insert into STUSER(id, user_name, user_phone) values(2, 'Fcant', '17826263416');
1 row created.
SQL> commit;
Commit complete.
SQL> select * from STUSER;
ID USER_NAME USER_PHONE
---------- ---------------------------------------- -----------
1 Fcant 17826260016
SQL>