数据库实验四

实验内容:

1.建立对应3GB大小的外部文件的tablespace tabspace_????

create tablespace tabspace_J122 tablespace tabspace_J122;
datafile 'E:大三上大型数据库大型数据库	abspace_J122.dbf' size 4096m;

2.重建MAJOR_????与STUD_????,指定存于建立的tabspace_????中,

create table T_major1_J122
( 
    mno char(2) primary key,
    mname varchar(20),
    loc varchar(20) check(loc in('主校区','南校区','新校区','铁道校区','湘雅校区')),
    mdean varchar(20)
)tablespace tabspace_J122 ;

create table T_stud1_J122
(
    sno char(10) primary key,
    sname varchar(20),
    sex varchar(10) check(sex in('','','其它','其他')),
    tel varchar(15),
    email varchar(20) check(email like '%@%.%'),
    birthday date check((TO_CHAR('yyyymmdd'))>='19990731'),
    mno char(10) references T_stud_J122(sno),
    majorno char(2) references T_major_J122(mno)
)tablespace tabspace_J122 ;

DROP TABLE T_studnew_j122;
CREATE TABLE T_studnew_j122(
    sno CHAR(10) primary key,
    sname VARCHAR2(10),
    sex VARCHAR2(4),
    tel VARCHAR2(15),
    email VARCHAR2(30),
    birthday DATE
)tablespace tabspace_J122;

3.重新产生样本值,包括千万级数据的STUD表,看是否有性能上的提升。

CREATE OR REPLACE PROCEDURE P_create_stud_j122 IS
    mid PLS_INTEGER:=1;
    msno CHAR(10);
    mname VARCHAR2(10);
    msex VARCHAR2(4);
    mtel VARCHAR2(15);
    memail VARCHAR2(30);
    mbirthday DATE;

    up PLS_INTEGER:=10322736;
    yy PLS_INTEGER;
    mm PLS_INTEGER;
    dd PLS_INTEGER;

    rand_sex PLS_INTEGER;
    rand_eml varchar2(30);

    CURSOR c_name IS (SELECT namex FROM T_namex_j122);
BEGIN
    
    OPEN c_name;
    FOR ab IN 1..80 LOOP EXIT WHEN mid>up;
    FOR cd IN 1..90 LOOP EXIT WHEN mid>up;
    FOR ef IN 1..50 LOOP EXIT WHEN mid>up;
    FOR gh IN 1..32 LOOP EXIT WHEN mid>up;
        -- SNO
        msno:= TO_CHAR(ab,'FM09')||TO_CHAR(cd,'FM09')||'16'||TO_CHAR(ef,'FM09')||TO_CHAR(gh,'FM09');

        -- NAME
        FETCH c_name INTO mname;

        -- SEX
        rand_sex:=DBMS_RANDOM.VALUE(1,100);
        IF rand_sex<=40 THEN msex:='';
            ELSIF rand_sex<=99 THEN msex:='';
            ELSE msex:='其他';
        END IF;

        -- EMAIL
        rand_eml:=DBMS_RANDOM.STRING('X',10);
        memail:=rand_eml||'@163.com';

        -- TEL
        mtel:=ab||cd||ef||gh;

        -- BIRTH
        yy:=dbms_random.value(1994,1999);
        IF yy<1999 THEN 
            mm:=dbms_random.value(1,12);
            ELSE mm:=dbms_random.value(1,7);
        END IF;
        IF mm=2 AND ((0=yy mod 4 AND 0!=yy mod 100) OR 0=yy mod 400)THEN
            dd:=dbms_random.value(1,29);
            ELSIF mm=2 THEN
                dd:=dbms_random.value(1,28);
            ELSIF mm=1 OR mm=3 OR mm=5 OR mm=7 OR mm=8 OR mm=10 OR mm=12 THEN
                dd:=dbms_random.value(1,31);
            ELSE dd:=dbms_random.value(1,30);
        END IF;
        mbirthday:=TO_DATE(yy||TO_CHAR(mm,'FM09')||TO_CHAR(dd,'FM09'),'yyyymmdd');

        -- 插入数据
        INSERT INTO T_studnew_j122(sno,sname,sex,email,tel,birthday)
        VALUES (msno,mname,msex,memail,mtel,mbirthday);

        mid:=mid+1;
    END LOOP;
    END LOOP;
    END LOOP;
    END LOOP;
    CLOSE c_name;
END;
.
/
exec P_create_stud_j122;

4.用EXP导出数据与IMP导入数据,请作多种尝试,直到成功!

exp U_J122/U_J123@orcl file=E:大三上student.dmp full=y
drop table name;
imp U_J122/U_J123@orcl file=E:大三上student.dmp fromuser = yjs touser = U_J122 commit=y
select * from name;

5.尝试对系统表空间user及自定义表空间tabspace_????进行备份与恢复

6.登录DBA用户system,通过cat字典入口,找到以DBA_开头的相关数据字典,并且每个对象显示5条记录(SQL生成SQL)。

/*dba_开头的是查全库所有的,all_开头的是查当前用户可以看到的,user_开头的是查当前用户的,后面可接_users _tables _tablespaces _objects*/
desc cat
select table_name from cat where table_name like 'dba_%';   
select table_name from cat;


select 'select * from '||table_name||' where rownum<=5;' from cat;

7.通过查找自己用户下的触发器字典,生成代码将所有触发器的状态改为disable并执行。再生成代码,将状态为disable的触发器的状态改为enable,并执行。

connect U_J122/U_J123;

select 'alter trigger '||object_name||' disable;' from user_objects where OBJECT_type='TRIGGER' ;
select 'alter trigger '||object_name||' enable;' from user_objects where OBJECT_type='TRIGGER';
alter trigger TG_T_ATTEND_J122 disable;
alter trigger TG_T_ATTEND_J122 enable;
原文地址:https://www.cnblogs.com/jkzr/p/10419616.html