美团外卖是国内主要的外卖平台,平台系统主要为商家提供商品管理服务,为消费者提供商品选购与订单评价服务,为配送员提供订单分配服务,同时系统会进行收益分配。假设该系统由于性能问题,需要升级开发,现在由你负责数据存储设计,假设数据库选择Oracle 11g,请你根据理解和所学知识,按照要求完成下面设计。
- 请设计该数据库的逻辑存储结构,即设计各个数据表的名称及各字段名称、字段大小及含义。字段名称使用英文或汉语拼音
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;
- 请为该数据库设计主要的用户和权限,并指出每个用户的数据表及各个表空间配额。并用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;
- 将其中一个数据表设计为分区表,并给出设计依据。并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
);
- 设计该数据库的基本备份方案,并实现第一次完全备份,给出步骤和命令。
由于美团外卖24小时都是在线提供服务,故没有足够时间进行冷备份,这时只能采取热备份。
- 启动SQLPlus,以SYSDBA身份登录数据库
- 将数据库设置为归档模式。
SQL>shutdown immediate;
SQL>startup mount;
SQL>alter database archivelog;
SQL>alter database open;
- 以表空间为单位,进行数据文件备份。
查看当前数据库有哪些表空间,以及每个表空间中有哪些数据文件。
SQL>select tablespace_name,file_name from dba_data_files order by tablespace_name;
分别对每个表空间中的数据文件进行备份,其方法为:
- 将需要备份的表空间(如:order01)设置为备份状态.
SQL>alter tablespace order01 begin backup;
- 将表空间中所有的数据文件复制到备份磁盘。
- 结束表空间的备份状态。
SQL>alter tablespace order01 end backup;
- 备份控制文件
将控制文件备份为二进制文件,例如:
SQL>alter database backup controlfile to ‘d:\control.bkp’;
将控制文件备份为文本文件,例如:
SQL>alter database backup controlfile to trace;
- 备份其它物理文件
归档当前的联机重做日志文件
SQL>alter system archive log current;
归档当前的联机重做日志文件,也可以通过日志切换完成。
SQL>alter system switch logfile;
备份归档日志文件,将所有的归档日志文件复制到备份磁盘中。
备份初始化参数文件,将初始化参数文件复制到备份磁盘中。