美团外卖是国内主要的外卖平台,平台系统主要为商家提供商品管理服务,为消费者提供商品选购与订单评价服务,为配送员提供订单分配服务,同时系统会进行收益分配。假设该系统由于性能问题,需要升级开发,现在由你负责数据存储设计,假设数据库选择Oracle 11g,请你根据理解和所学知识,按照要求完成下面设计。

  1. 请设计该数据库的逻辑存储结构,即设计各个数据表的名称及各字段名称、字段大小及含义。字段名称使用英文或汉语拼音

2.请设计该数据库所用的表空间,每个表空间至少两个文件,并指出每个表空间存储的数据表,并使用SQLPlus命令创建其中两个表空间。

store存储的是store_info的数据

evaluate存储的是evaluate_info的数据

order存储的是order_info的数据

SQL> create tablespace store datafile

‘c:\store01.dbf’ size 2G ,

‘d:\store02.dbf’ size 2 G,

‘e:\store03.dbf’ size 2G

extent management local uniform size 512K;

SQL> create tablespace evaluate datafile

‘c:\ evaluate 01.dbf’ size 2G ,

‘d:\ evaluate 02.dbf’ size 2G,

‘e:\ evaluate 03.dbf’ size 2 G

extent management local uniform size 512K;

SQL> create tablespace order datafile

‘c:\ order 01.dbf’ size 2G ,

‘d:\ order 02.dbf’ size 2 G,

‘e:\ order 03.dbf’ size 2G

extent management local uniform size 512K;

  1. 请为该数据库设计主要的用户和权限,并指出每个用户的数据表及各个表空间配额。并用SQLPlus命令创建其中一个用户。

SQL>create tablespace clients datafile ‘c:\client01.dbf’ size 20M ,’d:\client02.dbf’ size 20M,’e:\client03.dbf’ size 20M extent management local uniform size 512K;

SQL>create user client identified by client default tablespace clients quota 40M on clients account unlock;

SQL>grant insert on evaluate_info to client;

SQL>grant insert,select on order_info to client;

SQL>grant select on store_info to client;

  1. 将其中一个数据表设计为分区表,并给出设计依据。并SQLPlus命令创建该分区表和索引 。

将order_info按照城市进行分区,地点为广州为一个分区表,上海为一个分区表,北京为一个分区表,其它地方为一个分区表。

设计依据:北上广三大城市用户比较庞大,为其各自设置分区表便于维护与管理,也有利于查询速度。

创建表空间:

SQL> create tablespace order01 datafile

‘c:\ order 01.dbf’ size 2G ,

‘d:\ order 02.dbf’ size 2G,

‘e:\ order 03.dbf’ size 2G

extent management local uniform size 512K;

SQL> create tablespace order02 datafile

‘c:\ order 04.dbf’ size 2G ,

‘d:\ order 05.dbf’ size 2G,

‘e:\ order 06.dbf’ size 2G

extent management local uniform size 512K;

同理创建表空间order03、order04,步骤省略。

创建分区表:

create table order_info(

order_number char(18) primary key,

store varchar2(48) not null,

goods varchar2(48) not null,

city varchar2(48) not null,

price number not null,

amount number not null,

extra_fee number not null,

sort_fee number not null,

order_date date not null,

confirm_date date not null,

place varchar2(255) not null

)partition by list(city)

(

partition order01 values(‘广州’) tablespace order01,

partition order02 values(‘上海’) tablespace order02,

partition order03 values(‘北京’) tablespace order03,

partition order04 values(‘其它’) tablespace order04

);

建立本地分区索引:

create index city_range_global on order_info(order_number,city)

local

(

partition orderInfo_index01 tablespace order01,

partition orderInfo_index02 tablespace order02,

partition orderInfo_index03 tablespace order03,

partition orderInfo_indec04 tablespace order04

);

  1. 设计该数据库的基本备份方案,并实现第一次完全备份,给出步骤和命令。

由于美团外卖24小时都是在线提供服务,故没有足够时间进行冷备份,这时只能采取热备份。

  1. 启动SQLPlus,以SYSDBA身份登录数据库
  2. 将数据库设置为归档模式。

SQL>shutdown immediate;

SQL>startup mount;

SQL>alter database archivelog;

SQL>alter database open;

  1. 以表空间为单位,进行数据文件备份。

查看当前数据库有哪些表空间,以及每个表空间中有哪些数据文件。

SQL>select tablespace_name,file_name from dba_data_files order by tablespace_name;

分别对每个表空间中的数据文件进行备份,其方法为:

  1. 将需要备份的表空间(如:order01)设置为备份状态.

SQL>alter tablespace order01 begin backup;

  1. 将表空间中所有的数据文件复制到备份磁盘。
  2. 结束表空间的备份状态。

SQL>alter tablespace order01 end backup;

  1. 备份控制文件

将控制文件备份为二进制文件,例如:

SQL>alter database backup controlfile to ‘d:\control.bkp’;

将控制文件备份为文本文件,例如:

SQL>alter database backup controlfile to trace;

  1. 备份其它物理文件

归档当前的联机重做日志文件

SQL>alter system archive log current;

归档当前的联机重做日志文件,也可以通过日志切换完成。

SQL>alter system switch logfile;

备份归档日志文件,将所有的归档日志文件复制到备份磁盘中。

备份初始化参数文件,将初始化参数文件复制到备份磁盘中。