Oracle 创建和删除维

转载 2012年03月22日 21:56:05

--create sales table
CREATE TABLE sales
(trans_date DATE, cust_id INT, sales_amount NUMBER);

--insert sale rows
INSERT /*+ APPEND */
INTO SALES
SELECT TRUNC(SYSDATE, 'year') + MOD(ROWNUM, 366) TRANS_DATE,
MOD(ROWNUM, 100) CUST_ID,
ABS(DBMS_RANDOM.RANDOM) / 100 SALES_AMOUNT
FROM ALL_OBJECTS;
SELECT COUNT(*) FROM sales;

--go on inserting rows
BEGIN
FOR I IN 1 .. 6 LOOP
INSERT /*+ APPEND */
INTO SALES
SELECT TRANS_DATE,
CUST_ID,
ABS(DBMS_RANDOM.RANDOM) / 100 SALES_AMOUNT
FROM SALES;
COMMIT;
END LOOP;
END;

--create index organized table
CREATE TABLE TIME_HIERARCHY(DAY PRIMARY KEY, MMYYYY, MON_YYYY, QTR_YYYY, YYYY) ORGANIZATION INDEX AS
SELECT DISTINCT TRANS_DATE DAY,
CAST(TO_CHAR(TRANS_DATE, 'mmyyyy') AS NUMBER) MMYYYY,
TO_CHAR(TRANS_DATE, 'mon-yyyy') MON_YYYY,
'Q' || CEIL(TO_CHAR(TRANS_DATE, 'mm') / 3) || ' FY' ||
TO_CHAR(TRANS_DATE, 'yyyy') QTR_YYYY,
CAST(TO_CHAR(TRANS_DATE, 'yyyy') AS NUMBER) YYYY
FROM SALES;

--create materialized view
CREATE MATERIALIZED VIEW MV_SALES BUILD IMMEDIATE REFRESH ON DEMAND ENABLE QUERY REWRITE AS
SELECT SALES.CUST_ID,
SUM(SALES.SALES_AMOUNT) SALES_AMOUNT,
TIME_HIERARCHY.MMYYYY
FROM SALES, TIME_HIERARCHY
WHERE SALES.TRANS_DATE = TIME_HIERARCHY.DAY
GROUP BY SALES.CUST_ID, TIME_HIERARCHY.MMYYYY;
analyze table sales compute statistics;
analyze table time_hierarchy compute statistics;

alter session set query_rewrite_enabled=true;
alter session set query_rewrite_integrity=trusted;

--query by Month
SELECT TIME_HIERARCHY.MMYYYY, SUM(SALES_AMOUNT)
FROM SALES, TIME_HIERARCHY
WHERE SALES.TRANS_DATE = TIME_HIERARCHY.DAY
GROUP BY TIME_HIERARCHY.MMYYYY
--query by Quarter
SELECT TIME_HIERARCHY.QTR_YYYY, SUM(SALES_AMOUNT)
FROM SALES, TIME_HIERARCHY
WHERE SALES.TRANS_DATE = TIME_HIERARCHY.DAY
GROUP BY TIME_HIERARCHY.QTR_YYYY;

--create dimension
CREATE DIMENSION TIME_HIERARCHY_DIM
LEVEL DAY IS TIME_HIERARCHY.DAY
LEVEL MMYYYY IS TIME_HIERARCHY.MMYYYY
LEVEL QTR_YYYY IS TIME_HIERARCHY.QTR_YYYY
LEVEL YYYY IS TIME_HIERARCHY.YYYY
HIERARCHY TIME_ROLLUP(DAY CHILD OF MMYYYY CHILD OF QTR_YYYY CHILD OF YYYY)
ATTRIBUTE MMYYYY DETERMINES MON_YYYY;

--drop dimension
DROP DIMENSION TIME_HIERARCHY_DIM;

--yearly query
SELECT TIME_HIERARCHY.YYYY, SUM(SALES_AMOUNT)
FROM SALES, TIME_HIERARCHY
WHERE SALES.TRANS_DATE = TIME_HIERARCHY.DAY
GROUP BY TIME_HIERARCHY.YYYY;

--create index organized table
CREATE TABLE CUSTOMER_HIERARCHY(CUST_ID PRIMARY KEY, ZIP_CODE, REGION) ORGANIZATION INDEX AS
SELECT CUST_ID,
MOD(ROWNUM, 6) || TO_CHAR(MOD(ROWNUM, 1000), 'fm0000') ZIP_CODE,
MOD(ROWNUM, 6) REGION
FROM (SELECT DISTINCT CUST_ID FROM SALES);

analyze table CUSTOMER_HIERARCHY compute statistics;

drop materialized view mv_sales;

--recreate materialized view
CREATE MATERIALIZED VIEW MV_SALES BUILD IMMEDIATE REFRESH ON DEMAND ENABLE QUERY REWRITE AS
SELECT CUSTOMER_HIERARCHY.ZIP_CODE,
TIME_HIERARCHY.MMYYYY,
SUM(SALES.SALES_AMOUNT) SALES_AMOUNT
FROM SALES, TIME_HIERARCHY, CUSTOMER_HIERARCHY
WHERE SALES.TRANS_DATE = TIME_HIERARCHY.DAY
AND SALES.CUST_ID = CUSTOMER_HIERARCHY.CUST_ID
GROUP BY CUSTOMER_HIERARCHY.ZIP_CODE, TIME_HIERARCHY.MMYYYY;

--query by month
SELECT CUSTOMER_HIERARCHY.ZIP_CODE,
TIME_HIERARCHY.MMYYYY,
SUM(SALES.SALES_AMOUNT) SALES_AMOUNT
FROM SALES, TIME_HIERARCHY, CUSTOMER_HIERARCHY
WHERE SALES.TRANS_DATE = TIME_HIERARCHY.DAY
AND SALES.CUST_ID = CUSTOMER_HIERARCHY.CUST_ID
GROUP BY CUSTOMER_HIERARCHY.ZIP_CODE, TIME_HIERARCHY.MMYYYY

--query by year
SELECT CUSTOMER_HIERARCHY.REGION,
TIME_HIERARCHY.YYYY,
SUM(SALES.SALES_AMOUNT) SALES_AMOUNT
FROM SALES, TIME_HIERARCHY, CUSTOMER_HIERARCHY
WHERE SALES.TRANS_DATE = TIME_HIERARCHY.DAY
AND SALES.CUST_ID = CUSTOMER_HIERARCHY.CUST_ID
GROUP BY CUSTOMER_HIERARCHY.REGION, TIME_HIERARCHY.YYYY;

DROP DIMENSION time_hierarchy_dim;

CREATE DIMENSION SALES_DIMENSION
LEVEL CUST_ID IS CUSTOMER_HIERARCHY.CUST_ID
LEVEL ZIP_CODE IS CUSTOMER_HIERARCHY.ZIP_CODE
LEVEL REGION IS CUSTOMER_HIERARCHY.REGION
LEVEL DAY IS TIME_HIERARCHY.DAY
LEVEL MMYYYY IS TIME_HIERARCHY.MMYYYY
LEVEL QTR_YYYY IS TIME_HIERARCHY.QTR_YYYY
LEVEL YYYY IS TIME_HIERARCHY.YYYY
HIERARCHY CUST_ROLLUP(CUST_ID CHILD OF ZIP_CODE CHILD OF REGION)
HIERARCHY TIME_ROLLUP(DAY CHILD OF MMYYYY CHILD OF QTR_YYYY CHILD OF YYYY)
ATTRIBUTE MMYYYY DETERMINES MON_YYYY;

SELECT CUSTOMER_HIERARCHY.REGION,
TIME_HIERARCHY.YYYY,
SUM(SALES.SALES_AMOUNT) SALES_AMOUNT
FROM SALES, TIME_HIERARCHY, CUSTOMER_HIERARCHY
WHERE SALES.TRANS_DATE = TIME_HIERARCHY.DAY
AND SALES.CUST_ID = CUSTOMER_HIERARCHY.CUST_ID
GROUP BY CUSTOMER_HIERARCHY.REGION, TIME_HIERARCHY.YYYY;

--DROP DIMENSION SALES_DIMENSION;

ALTER SYSTEM FLUSH buffer_cache;
ALTER SYSTEM FLUSH SHARED_POOL;

SELECT * FROM dba_dimensions;
SELECT * FROM user_indexes WHERE index_type ='IOT - TOP';
SELECT * FROM user_indextypes;

SELECT * FROM TIME_HIERARCHY;
SELECT * FROM CUSTOMER_HIERARCHY;

oracle 11g之ACL拙见

Oracle中ACL(访问控制列表)的创建、授权与取消授权,删除控制文件。
  • zxnlmj
  • zxnlmj
  • 2014年04月03日 22:32
  • 1806

虚拟网卡创建

安装uml-utilities。 Sudo apt-get install uml-utilities 安装完成后,执行命令tunctl -b即可完成网卡的创建,ifconfig tap10 up激活...
  • zxh821112
  • zxh821112
  • 2017年10月24日 14:18
  • 77

Oracle 创建/调用函数小示例

函数与过程非常相似,它也是一种存储在数据库中的命名程序块,并且函数也可以接受零个或多个输入参数。函数与过程的主要区别在于,函数必须有返回值,并且可以作为一个表达式的一部分,函数不能作为一个完整的语句使...
  • linhaiyun_ytdx
  • linhaiyun_ytdx
  • 2017年05月02日 17:56
  • 479

UCOSII 删除任务

代码来自于书本光盘 《嵌入式操作系统UCOSII原理及应用》 任务自己删除自己任务 任务自己删除别的任务 实例新建了两个任务MYTASK  UYOUTSAK 前者请求删除后者,后者收到...
  • liang890319
  • liang890319
  • 2012年12月30日 15:47
  • 1383

c) 创建用户, 设置权限

c)    创建用户, 设置权限   i.     创建用户            SQL命令行下输入:             ”create  user  ims  identified b...
  • zj0910
  • zj0910
  • 2011年08月23日 16:04
  • 249

linux批量删除多级目录下同一格式的文件

在linux批量删除多级目录下同一格式的文件,可采用find + exec命令组合: 如在删除old目录下的,所有子目录中,后缀为.l的文件方法为: find old -type f ...
  • zhangliu1982
  • zhangliu1982
  • 2016年02月29日 16:53
  • 835

ORACLE语句怎么删除外键约束,和建立外键约束

假如有主表 test_main 与 子表 test_subSQL> -- 创建外键(默认选项)SQL> ALTER TABLE test_sub ADD CONSTRAINT main_id_cons...
  • laodao1
  • laodao1
  • 2011年05月26日 11:03
  • 26233

Oracle中索引的创建和使用

OLTP系统索引创建 创建索引的作用 1、通过创建唯一性索引,可以保证数据库表中每一行数据的唯一性。 2、可以大大加快数据的检索速度,这也是创建索引的最主要的原因。 3、可以加速表和表之间的连接,...
  • u010383786
  • u010383786
  • 2016年09月07日 13:38
  • 2124

oracle创建和删除表空间

--创建临时表空间 create temporary tablespace icer tempfile 'D:\oracle\icer.dbf' size 50m autoextend on next...
  • u010801743
  • u010801743
  • 2013年12月05日 19:01
  • 430

oracle 角色创建和删除

 1.create roles sql> create role sales_clerk; sql> create role hr_clerk identified by bonus; sql> cr...
  • super1900
  • super1900
  • 2009年06月06日 10:58
  • 1059
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Oracle 创建和删除维
举报原因:
原因补充:

(最多只允许输入30个字)