Oracle数据库开发必备利器之SQL基础——用户与表空间
用户与表空间
用户
系统用户
sys(管理员/系统操作员) > system(可直接登录)
sysman(操作企业管理器 - 管理员级别)
scott(默认密码tiger)
用户登录语句
[username/password] [@sever] [as sysdba|sysoper]
system登录:
sys登录:
查看登录用户
show user
不是sql语句,可以不加分号结束。
查看数据字典
desc dba_users
查看所有用户
select username from dba_users;
是sql语句,需要加分号结束。
启用用户的语句
alter user username account unlock;
例子对scott用户解锁
alter user scott account unlock;
锁定用户的语句
alter user username account lock;
使用scott用户登录SQL Plus
表空间
数据库与表空间
表空间是数据库的逻辑存储空间。可以理解为在表空间中开辟一个空间用来存储数据库的对象。一个数据库可以由多个表空间构成。可用过表空间进行优化
表空间与数据文件
表空间是由一个或多个数据文件构成,数据文件的位置,大小可由用户定义。
表空间的分类
1.永久表空间:用于存放数据库当中永久化存放的数据库对象,例如表、视图、存储过程等等。
2.临时表空间:用于存放数据库操作中的中间执行的过程,当执行结束之后,存放的内容会被自动释放掉,它不进行永久性保存。
3.UNDO表空间: 保存事务所修改的旧值,修改前的数据(利于撤销等方便回滚)
查看用户表空间
- dba_tablespaces(系统用户)
- user_tablespaces (普通用户)
dba_tablespaces默认表空间共六个
简要介绍一下这六个表空间的职能范围:
- SYSTEM: 是系统表空间;
- SYSAUX: 是EXAMPLE的辅助表空间;
- UNDOTBS1:存储一些撤销信息的表空间;
- TEMP: 用于存储临时表空间;
- USERS: 是永久性表空间,当用户创建了对象,就会保存在这里,和SYSTEM表空间作用类似,不过SYSTEM保存的是系统信息;
- EXAMPLE:安装oracle实例的表空间。
在scott用户下访问dba_tablespaces是会报错的。这说明了不同的登录用户有着不同的使用权限!
user_tablespaces 默认表空间共六个
查看用户
- dba_users
- user_users
在scott用户下访问 dba_users是会报错的。
因为权限的问题,必须切换登录用户为SYSTEM.(connect system/口令)
然后重复 dba_users,则可以得到system用户的一些信息。如图所示:
现在来查看一下它的默认表空间和临时表空间是什么(分别是用户创建对象后默认存放的地点和临时信息存放的空间地点,并且默认只有一个临时表格空间),语句如下:
select default_tablespace, temporary_tablespace from dba_users where username='SYSTEM';
特别要注意,SYSTEM必须要大写!
设置用户的默认或临时表空间
ALTER USER username
DEFAULT|TEMPORARY
TABLESPACE tablespace_name
同时应该知道,普通用户是没有权限修改默认表格空间的。
创建表空间
CREATE [TEMPORARY] TABLESPACE
tablespace_name
TEMPFILE|DATAFILE 'xxx.dbf' SIZE xx
不指定路径,默认安装到oracle安装目录下。
-
创建永久表空间:
-
创建临时表空间
查看表空间具体路径
-
查看数据字典字段
desc dba_data_file
-
查看永久表空间路径
select file_name from dba_data_file where tablespace_name='表空间名字要大写';
-
查看临时表空间路径
select file_name from dba_temp_file where tablespace_name='表空间名字要大写';
修改表空间的状态
- 设置联机或脱机状态
脱机状态是不能使用的
-
查看表空间状态
select status from dba_tablespaces where tablespace_name='xxx'; //表空间名字要大写
-
设置只读或者可读写状态
表空间必须为联机状态,联机状态默认为读写状态
修改表空间的数据文件
-
添加数据文件
删除数据文件
不能删除表空间的第一个数据文件。
删除表空间
-
删除表空间,不包括数据文件:
drop tablespace tablespace_name
-
删除表空间及数据:
drop tablespace tablespace_name[including contents];
推荐阅读