1.创建PRACTICE数据库
如果未安装Oracle程序,可以按照上篇Oracle安装过程中创建PRACTICE数据库,并设置了sys、system的密码为system;如果已经安装Oracle程序,可以使用DBCA创建,具体过程略。
2.在USERS表空间下添加数据文件
数据库在安装的过程中将创建sys和system用户,其中sys为数据库的DBA用户。由于后续练习的需要,我们以sys账号DBA身份登录,使用ALTER TABLESPACE命令为用户表空间创建第二个数据文件(也可以利用EM进行创建)。
2 SQL>ALTER TABLESPACE USERS ADD DATAFILE 'D:\oracle\PRACTICE\USERS02.DBF' SIZE 10M;
ALTER TABLESPACE USERS ADD DATAFILE表示需要对表空间USERS进行修改,后面是数据文件所在的文件夹,根据PRACTICE安装数据文件的位置进行修改。
3.新增TOOLS表空间
接下来我们用脚本创建TOOLS表空间,该表空间用于存放TINA用户的对象。
2 SQL>CREATE TABLESPACE TOOLS
3 DATAFILE 'D:\oracle\PRACTICE\TOOLS01.DBF' SIZE 50M AUTOEXTEND ON NEXT 50M
4 MAXSIZE 16000M
5 EXTENT MANAGEMENT LOCAL SEGMENT SPACE MANAGEMENT AUTO;
CREATE TABLESPACE TOOLS表示创建TOOLS表空间,DATAFILE ‘D:\…’ SIZE 50M指明了该表空间数据文件所在路径并指定初始化大小为50M,AUTOEXTEND ON NEXT 50M MAXSIZE 16000M表示该数据文件自动增长,每次增长的大小为50M,最大容量为16000M
4.新增TS4DROP表空间
同创建TOOLS表空间类似,我们创建TS4DROP表空间,该表空间在后续的练习中用于删除。
2 SQL>CREATE TABLESPACE TS4DROP
3 DATAFILE 'D:\oracle\PRACTICE\TS4DROP01.DBF' SIZE 50M AUTOEXTEND ON NEXT 50M
4 MAXSIZE 16000M
5 EXTENT MANAGEMENT LOCAL SEGMENT SPACE MANAGEMENT AUTO;
5.创建Scott用户
查找D:\oracle\product\10.1.0\Db_1\RDBMS\ADMIN\路径下的utlsampl.sql脚本,需要注意的是如果在电脑上有多个实例需要打开utlsample.sql进行修改,由CONNECT SCOTT/TIGER修改为CONNECT SCOTT/TIGER@PRACTICE
以DBA身份登录登录Sql Plus执行该脚本
执行完毕窗口会自动关闭,通过该脚本创建用户Scott,密码为Tiger,并插入相关测试数据。此时我们以Scott用户登录,可以查询emp表插入的测试数据
6.创建TINA用户
创建该用户TINA用来说明表空间时间点恢复,该用户拥有一个表DATE_LOG,该表用于跟踪一段时间内行为的若干记录,可以创建一个Oracle作业为这个时间表填充数据,完成数据库恢复后,我们可以检查该表来帮助证实恢复的结果。按照如下方法创建TINA用户并赋予权限:
2 SQL>GRANT CONNECT, RESOURCE,UNLIMITED TABLESPACE TO TINA IDENTIFIED BY panda;
3 SQL>ALTER USER TINA DEFAULT TABLESPACE tools;
4 SQL>ALTER USER tina TEMPORARY TABLESPACE temp;
GRANT CONNECT, RESOURCE,UNLIMITED TABLESPACE TO TINA表示把连接数据、访问资源等权限赋予TINA用户,IDENTIFIED BY panda设置了TINA的用户的密码为panda;ALTER USER TINA DEFAULT TABLESPACE tools 设定了TINA用户的默认表空间为tools,ALTER USER tina TEMPORARY TABLESPACE temp则表示该用户的临时表空间为temp。
7.创建TINA对象
PRACTICE数据库中,TINA的唯一作用是跟踪时间,TINA拥有一个表、一个过程和一个作业,其中数据表名为DATE_LOG,过程名为CREATE_DATE_LOG_ROW,以下为创建相关脚本:
2 SQL>CONN TINA/PANDA@PRACTICE
3 SQL>DROP TABLE DATE_LOG;
4 SQL>CREATE TABLE DATE_LOG (create_date date constraint create_date_pk PRIMARY KEY);
2 SQL>CREATE OR REPLACE PROCEDURE create_date_log_row
3 IS
4 --目标是插入一笔当前时间点的数据
5 BEGIN
6 INSERT INTO DATE_LOG (create_date) VALUES (SYSDATE);
7 END;
8 /
8.产生数据库动作
在备份和恢复练习的过程中,需要一些正在进行的数据库行为来检查你的恢复操作是否正确完成,通过在TINA.DATE_LOG插入行来产生数据库行为。可以使用插入声明、过程调用或数据库作业来向表中插入行。
使用如下的INSERT命令向表总插入当前日期和时间:
也可以使用刚创建的过程来完成同样的插入动作,具体如下:
这里我们创建一个作业,该作业不断向TINA.DATE_LOG表中插入行,使用如下的脚本进行创建:
2 --创建该用户下的作业,用户定时往DATE_LOG插入数据
3 SQL>VARIABLE jobno number;
4 BEGIN
5 --该作业每10分钟运行一次
6 DBMS_JOB.SUBMIT(:jobno, 'create_date_log_row;', SYSDATE, '(SYSDATE + 1/(24*6))' );
7 commit;
8 END;
9 /