一、实验内容
1.建立对应3GB大小的外部文件的tablespace tabspace_j432
2.重建t_major_j432与t_stud_j432,指定存于建立的tabspace_j432中,
3.重新产生样本值,包括千万级数据的STUD表,看是否有性能上的提升。
4.用EXP导出数据与IMP导入数据,作多种尝试,直到成功!
5.尝试对系统表空间user及自定义表空间tabspace_j432进行备份与恢复
6.登录DBA用户system,通过cat字典入口,找到以DBA_开头的相关数据字典,并且每个对象显示5条记录(SQL生成SQL)。
7.通过查找自己用户下的触发器字典,生成代码将所有触发器的状态改为disable并执行。再生成代码,将状态为disable的触发器的状态改为enable,并执行。
二、实验源程序
--1.建立外部文件(容量不足时,每次扩充100M)
create tablespace tablespace_j432 datafile 'D:\tablespace_j432.dbf'size 3G autoextend on next 100M extent management local;
--重复实验一、二、三,试比较执行效率
--4.使用EXP导出数据与IMP导入数据(在cmd窗口下直接输入命令)
--先查询网络服务端口:select name from v$database;
--查询结果为:ORAL
--将数据库完全导出到D盘(时间较长)
exp c##u_j432/[email protected] file=D:\base.dmp full=y
--导出用户c##u_j432的表
exp c##u_j432/[email protected] file=D:\UserTables.dmp owner=c##u_j432
--导出指定表:t_student_j432
exp c##u_j432/[email protected] file=D:\Tables.dmp tables=t_student_j432
--导入数据库
imp c##u_j432/[email protected] file=D:\base.dmp full=y ignore=y
--导入数据库中的表
imp c##u_j432/[email protected] file=D:\UserTables.dmp tables=t_student_j432
--直接导入文件表(也需要添加tables限定)
imp system/[email protected] file=D:\Tables.dmp tables=t_student_j432
--5备份系统表空间以及自定义表空间
--导出系统表空间users
exp system/[email protected] file=D:\tableSpaceUsers.dmp tablespaces=users
--导出自定义表空间tablespace_j432
exp system/[email protected] file=D:\tableSpaceOwn.dmp tablespaces=tablespace_j432
--恢复系统表空间users
imp system/[email protected] file=D:\tableSpaceUsers.dmp tablespaces=users
--恢复自定义表空间tablespace_j432
imp system/[email protected] file=D:\tableSpaceOwn.dmp tablespaces=tablespace_j432
--6登录DBA用户system,通过cat字典入口,找到以DBA_开头的相关数据字典,并且每个对象显示5条记录(SQL生成SQL)
--登录dba
set linesize 1000
set pagesize 100
col SESSION_ID format 999999;
col LOCK_TYPE format a32;
col MODE_HELD format a32;
col MODE_REQUESTED format a32;
col LOCK_ID1 format a32;
col LOCK_ID2 format a32;
col LAST_CONVERT format 9999;
col BLOCKING_OTHERS format a32;
col CON_ID format 9999;
conn system/123789 as sysdba
spool D:\dba.txt;
select 'select * from '||tname||' where rownum<=5;' from publicsyn where tname like 'DBA%';
spool off;
@D:\dba.txt
--7.查找自己用户下的触发器字典,生成代码将所有触发器的状态改为disable并执行。再生成代码,将状态为disable的触发器的状态改为enable,并执行。
--查找所有的触发器
select trigger_name from user_triggers;
spool D:\disableTri.txt
select 'alter trigger '||trigger_name||' disable;' from user_triggers;
spool off;
@D:\disableTri.txt
spool D:\enableTri.txt
select 'alter trigger '||trigger_name||' enable;' from user_triggers;
spool off;
@D:\enableTri.txt
三、实验记录
四、实验小结
本次实验主要遇到的问题是对SQL的许多概念不是很了解,通过对表空间的操作,数据库的备份与恢复,查阅资料才有了比较清晰的概念。本次实验建立了一个3G大小的表空间,对于操作效率上来说,要快了一些,但影响不大,可能是因为我在初始启动数据库时分配的表空间本身就已经很大了,所有没有感觉出来。
Oracle 备份分为逻辑备份和物理备份。逻辑备份就是 exp/imp;物理备份有:冷备、热备和 RMAN 备份。在本次实验中,我采用的是逻辑备份系统表空间以及自定义表空间,没有用热备和冷备。