表空间操作实验答案
一、目的和要求:
1.掌握创建永久表空间和临时表空间的方法。
2.掌握修改永久表空间的方法。
3.掌握查询永久表空间和临时表空间的方法。
4.掌握删除永久表空间和临时表空间的方法。
5.掌握为用户指定永久表空间和临时表空间的方法。
二、实验内容:
1.创建一个永久表空间tbsp_soft134,指定数据文件及其路径,数据文件名是datafile_soft134.dbf;
SQL> create tablespace tbsp_soft134
2 logging
3 datafile 'D:\app\tablespace\datafile_soft134.dbf' size 2M
4 autoextend on
5 next 2M maxsize 10M
6 extent management local;
2.创建一个临时表空间temptbsp134, 指定数据文件及其路径,数据文件名是temp_datafile134.dbf;
SQL> create temporary tablespace temptbsp134
2 tempfile 'D:\app\tablespace\temptbsp134' size 2M
3 autoextend on
4 next 2M maxsize 4M
5 extent management local;
3.创建新用户user134,并为其分配永久表空间和临时表空间;
SQL> create user user134 identified by 123
2 default tablespace tbsp_soft134
3 temporary tablespace temptbsp134;
4.以sys用户连接,为新用户user134授予连接、创建表的权限;
grant connect, resource to user134;
grant create any table to user134;
5.查询数据库中所有表空间的信息;有表空间的名称,状态,内容等信息,查询dba_tablespaces;表;
以sys用户查询
select tablespace_name,status,contents from dba_tablespaces;
6.查询所有用户默认表空间和临时表空间,查询dba_users表;
select username, DEFAULT_TABLESPACE,TEMPORARY_TABLESPACE from dba_users;
7.查询表空间数据文件的基本信息,包括数据文件名称,位置,大小以及其所属的表空间,查询dba_data_files;表
select FILE_NAME,TABLESPACE_NAME,BLOCKS from dba_data_files;
8.查询表空间空闲空间的大小,查询dba_free_space表;
.统计表空间空闲空间的信息,查询dba_free_space表;
SQL> select tablespace_name, sum(bytes)空闲空间大小from
2 dba_free_space group by tablespace_name;
TABLESPACE_NAME 空闲空间大小
------------------------------ ------------
SYSAUX 42663936
UNDOTBS1 86638592
USERS 458752
TEST_SPACE_1 1507328
SYSTEM 4718592
EXAMPLE 22282240
USETABLESPACE01 5177344
TBSP_SOFT134 1048576
10.以user134 连接数据库,并创建student表,字段有,学号,姓名,电话,年龄,性别,生日,专业名称,籍贯等;
CREATE TABLE student (
stuid NUMBER(6) ,
stuname V ARCHAR2(12),
telephone V ARCHAR2(12),
age NUMBER(2),
sex V ARCHAR2(3),
birthday DATE,
specialty V ARCHAR2(15),
homeplace V ARCHAR2(15),
constraint PK_STUDENT PRIMARY KEY (stuid) ); --主键stuid
11. 向student表中写入数据10条记录;
为主键创建序列
SQL> CREATE SEQUENCE STUDENT_SEQU
2 increment by 1 start with 130001
3 MAXV ALUE 130999
4 NOCYCLE NOCACHE;
查询序列号
SQL> select STUDENT_SEQU.nextval from dual;
NEXTV AL
----------
130001
写入数据
SQL> insert into student values(STUDENT_SEQU.nextval,'罗江','180********',20,'男',TO_DATE('19951028','YYYYMMDD'),'软件技术','广元剑阁');
SQL> insert into student values(STUDENT_SEQU.nextval,'泽婷','138********',20,'女',TO_DATE('19930918','YYYYMMDD'),'网络技术','雅安汉源');
12. 统计tbsp_soft134表空间中空闲空间的大小;
SQL> select tablespace_name, sum(bytes)空闲空间大小from dba_free_space
2 where tablespace_name='TBSP_SOFT134'
3 group by tablespace_name;
13. 统计tbsp_soft134表空间中数据文件的大小,在dba_data_files表中查询;
14. 修改表空间tbsp_soft134,将表空间的数据文件datafile_soft134.dbf的大小增加到20M。
SQL> alter database datafile
2 'd:\app\tablespace\datafile_soft134.dbf' resize 20M;
15. 查询表空间tbsp_soft134中数据文件的名称,位置,大小以及其所属表空间,查询dba_data_files表,看空间大小是否有变化;以文件名为条件查询,要加上文件的路径;
SQL> select file_name,tablespace_name,blocks,bytes from dba_data_files where ta blespace_name = 'TBSP_SOFT134';
16. 删除临时表空间和永久表空间;
drop tablespace TBSP_SOFT134 including contents and datafiles;
drop tablespace temptbsp134 including contents and datafiles;
思考题:删除表空间和数据文件之后,用户user134 是否还存在,该用户使用哪个表空间。
答:删除表空间和数据文件之后,用户user134还存在,但是,该用户创建的数据表不存在,创建的序列还存在了,此时不能在user134用户下创建数据表,因为无表空间和数据文件,必须给user134用户变更表空间,然后,才能创建数据表。
操作如下:
1. conn sys/123 as sysdba;
2.给user34变更表空间——以sys用户
alter user user134 default tablespace users;
alter user user134 temporary tablespace temp;
3. 以user34创建student表
4、写入数据
insert into student values(STUDENT_SEQU.nextval,'罗江','180********',20,'男', TO_DATE('19951028','YYYYMMDD'),'软件技术','广元剑阁');
insert into student values(STUDENT_SEQU.nextval,'安娜','181********',20,'女', TO_DATE('19981128','YYYYMMDD'),'软件技术','广元青川');
查询