Oracle实验四 数据备份恢复与基于数据字典的数据库操作

时间:2024-03-13 10:33:50

一、实验内容

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

三、实验记录

Oracle实验四 数据备份恢复与基于数据字典的数据库操作

Oracle实验四 数据备份恢复与基于数据字典的数据库操作 

Oracle实验四 数据备份恢复与基于数据字典的数据库操作 

四、实验小结

    本次实验主要遇到的问题是对SQL的许多概念不是很了解,通过对表空间的操作,数据库的备份与恢复,查阅资料才有了比较清晰的概念。本次实验建立了一个3G大小的表空间,对于操作效率上来说,要快了一些,但影响不大,可能是因为我在初始启动数据库时分配的表空间本身就已经很大了,所有没有感觉出来。

    Oracle 备份分为逻辑备份和物理备份。逻辑备份就是 exp/imp;物理备份有:冷备、热备和 RMAN 备份。在本次实验中,我采用的是逻辑备份系统表空间以及自定义表空间,没有用热备和冷备。