场景4 Data Warehouse Management 数据仓库
场景4 Data Warehouse Management 数据仓库
parallel 4 100% —> 必须获得指定的4个并行度,如果获得的进程个数小于设置的并行度个数,则操作失败
parallel_min_percent : 若设为100,则如上
ILM :信息生命周期管理
将休眠的数据高压缩放在低成本通道上(如磁带机)
将低访问量的数据低压缩放在访问效率低的设备上
将高访问数据不作压缩放在访问效率高的设备上
分区 (官方文档VLDB and Partioning Guide)
单张表容量大于2G, 则建议分区
1. 每个分区为一个独立的segment, 单独存储在tablespace(tbs防灾一个独立存储上) —> I/O
2. 管理 备份 增加新分区,删除,truncate, split, merge, 表交换数据
安全口令支持
1. 区分大小写
eg :
alter user scott identified by scott;
alter user scott identified by 1;
alter user scott identified by tiger;
eg:
desc dba_profiles
select * from dba_profiles;
select * from dba_profiles where profile=“DEFAULT’;
eg :
cd /u01/app/oracle/rdbms/admin
ls
!sql
@?/rdbms/admin/utlpwdmg.sql
select * from dba_profiles where profile=“DEFAULT’;
alter profile default limit password_verify_function verify_function_11g;
alter profile default limit password_verify_function null; (取消口令复杂性验证)
show paramter sec
eg :
conn /as sysdba
alter profile default limit failed_login_attempts3;
select * from dba_profiles where profile=“DEFAULT’;
show parameter sec
conn scott/t1
conn scott/t2
conn scott/t3
eg : 手工解锁scott用户
conn /as sysdba
desc dba_users;
select username, account_status from dba_users;
alter user scott identified by tiger account unlock;
透明数据加密(TDE)
1. 表空间加密
2. LogMiner日志挖掘
3. 支持逻辑备库
4. 支持流
5. 支持异步数据改变抓取
6.
3DES : 3 * 56 = 168
AES : 128
eg : 启用TDE
cd $ORACLE_HOME/network/admin (ENCRYPTION_WALLET_LOCATION : u01/app/oracle/product/11.2.0/db_1/network/admin)
ls -l
cat sqlnet.ora
u01/app/oracle/admin/prod/wallet
alter system set encryption key identified by “<password>”;
select tablespace_name, encrypted from dba_tablespace;
LOB Implementation大对象植入
LOB : 大对象 (大对象单独存放在另外一个表空间里,和表不在同一个表空间)
CLOB :大的文本,如日志 (存储在数据库里)
BLOB :非结构化(二进制)如图片,视频,音乐 (存储在数据库里)
BFILE :以文件方式存储在OS里
varchar2 4000字符
书 :深入理解oracle 12c数据库管理
eg :
create table lob1(id number, desc_comm clob) tablespace users lob(desc_comm) store as basic file;(创建一个表,内含大对象)
select segment_name, segment_type, tablespace_name from user_segments;
show parameter secur
eg :
desc dba_tablespaces;
select tablespace_name, extent_management, segment_space_management from dba_tablespaces;
默认不对大对象进行缓存,造成很大I/O开销
SecureFile可开启缓存
SecureFile Compression
low : 快速读写
medium : default
high
OCM考试评分 :录频,后台采集数据
存放大对象的表空间必须是ASSM自动段空间管理
raw 裸设备无缓存
basicfile迁移到securefile : 在线重定义(不影响对表的访问)
insert into select * from clob;
Logminer : 日志挖掘
闪回数据归档
flashback query (只用于DML,undo段)
flashback table(只用于DML,undo段)
flashback version query(undo段)
flashback transaction query(undo段)
flashback drop
flashback archive (闪回数据归档,只用于DML,将对表的所有DML操作保存到一张表里archive, 可永久保存数据变化,是对闪回查询和闪回表的补充)
flashback database (imcomplete recovery不完全恢复,将数据库恢复到过去的一个时间点)
用户误操作恢复
物理备份 :datafile, control file, redo log
介质恢复 :
1. restore(备份恢复)
2. recover
TSPITR : 基于表空间的时间点不完全恢复
eg :
select tablespace_name, extent_management, segment_space_management from dba_tablespaces;
select name, flashback_on from v$databasel
show parameter recover
eg :
1. 建立flashback专用表空间
2. 建立flashback archive
3. 修改flashback archive属性
4. 查看flashback archive
eg :
select name from v$datafile;
create tablespace ftbs1 datafile ‘/u01/app/oracle/oradata/prod/ftbs1.dbf’ size 100m autoextend on maxsize 2g;
eg :
create flashback archive farch1 tablespace flash_tbs quota 20m retention 1 year;
eg : desc dba_flashback_archive;
select flashback_archive_name, retention_in_days, status from dba_flashback_archive;
col flashback_archive_name for a20
alter flashback archive farch1 set default;
在表上启用flashback archive :
eg :
grant flashback archive on farch1to scott;
conn scott/tiger
select * from tab;
create table emp1 as select * from emp;
select * from emp1;
insert into emp1 select * from emp1;
commit;
insert into emp1 select * from emp1;
commit;insert into emp1 select * from emp1;
commit;
select count(*) from emp1;
alter table emp1 flashback archive;
select * from tab;
select * from emp;
delete from emp;
commit;
set autotrace on
select * from emp as of timestamp to_timestamp(‘2016-07-24 15:30:51’, ‘yyyy-mm-dd hh:mm:ss’);
eg :
show parameter undo
create undo tablespace undotbs2 datafile ‘/u01/app/oracle/oradata/prod/undotbs2.dbf’ size 100m;
show parameter undo
alter system set undo_tablespace=undotbs2;
drop tablespace undotbs1 including contents and datafiles;
select * from emp as of timestamp to_timestamp(‘2016-07-24 15:30:51’, ‘yyyy-mm-dd hh:mm:ss’);
ora01555 : 快照过旧,访问undo块时,数据已经不在
eg :
select count(*) from emp1;
delete from emp1;
commit;
select * from emp1;
select * from emp1 as of timestamp to_timestamp(‘2016-07-24 15:21:45’ yyyy-mm-dd hh:mm:ss);
select sysdate from
select * from tab;
set autotrace on
select * from emp1 as of timestamp to_timestamp(‘2016-07-24 15:21:45’ yyyy-mm-dd hh:mm:ss);
note : quota 20m : 每个表最多20兆
eg :
select * from emp1 as of timestamp to_timestamp(‘2016-07-24 15:18:45’ yyyy-mm-dd hh:mm:ss);
eg :
insert into emp1select * from emp1 as of timestamp to_timestamp(‘2016-07-24 15:21:45’ yyyy-mm-dd hh:mm:ss);
commit;
insert into emp select * from emp1;
alter table emp disable novalidate constraint pk_emp;
insert into emp select * from emp1;
select * from emp;
alter table emp flashback archive;
insert into emp select * from emp where rownum < 11;
select count(*) from emp;
commit
set autotrace trace
select * from emp as of timestamp to_timestamp(‘2016-07-24 15:40:42’, ‘yyyy-mm-dd hh:mm:ss’);
eg : 晴空buffer cache
alter system flush buffer_cache;
/
create tablespace undotbs1 file ‘u01/app/oracle/oradata/prod/undotbs1.dbf’ size 100m autoextend on;
alter system set undo_
drop table emp1;
truncate table emp1;
select * from emp as of timestamp to_timestamp(‘2016-07-24 15:46:42’, ‘yyyy-mm-dd hh24:mi:ss’);
select * from emp as of timestamp to_timestamp(‘2016-07-24 15:45:42’, ‘yyyy-mm-dd hh24:mi:ss’);
insert into emp 1 select * from emp1 where rownum<4;
commit
select * from emp1;
insert into emp 1 select * from emp1;
drop table emp1;
truncate table emp1;
select * from emp1;
select * from emp as of timestamp to_timestamp(‘2016-07-24 15:53:42’, ‘yyyy-mm-dd hh24:mi:ss’);
间隔分区Interval partitioning
1. Range范围分区的扩展
2. 若插入的数据不属于已经分好的分区,可自动增加新分区
3. 至少有一个范围分区建好
eg :
select name from v$datafile;
create tablespace tbs1 datafile ‘/u01/app/oracle/oradata/prod/tbs01.dbf’ size 50m;
create tablespace tbs2 datafile ‘/u01/app/oracle/oradata/prod/tbs02.dbf’ size 50m;
create tablespace tbs3 datafile ‘/u01/app/oracle/oradata/prod/tbs03.dbf’ size 50m;
su -oracle
conn scot/tiger
alter user scott identified by tiger account unlock;
克隆回话
create table pt1 (sales_amt number, d_date date) partition by range (d_date) interval(numtoyminterval(1, ‘year’)) store in (tbs1, tbs2, tbs3) (partition1 values less than (to_date(/01-01-2013’, ‘dd-mm-yyyy’)) tablespace tbs1;
insert into table pt1 values (1, sysdate+1000);
commit;
desc user_segments
col segment_name for a20
select segment_name, partition_name, segment_type, tablespace_name, bytes/1024 from user_segments where segment_name=‘PT1’;
R
select * from pt1;
select segment_name, partition_name, segment_type, tablespace_name, bytes/1024 from user_segments where segment_name=‘PT1’;
select * from pt1 partition(sys_p41);
alter table pt1 rename partition SYSP41 to p2; (改变自动分配的分区sysp41名为p2)
若无间隔分区,则插入不属于分区的数据时会报错
系统分区
1. 对选择的表开启应用控制的分区
2. 有应用控制分区和数据位置
3. 不像其他分区方法应用分区键
4. 不支持分区修剪
5. 可以将数据插入到指定的分区
eg :
set autotrace on
select * from pt1 where SALES_AMt=1;
analyze table pt1 compute statistics;
select * from pt1 where SALES_AMt=2;
select * from pt1 where D_DATE=’01-oct-12’;
r
若经常访问的数据跨分区,则性能不好
eg :
crate table apps (app_id number, app_amnt number) partition by sytem (partition p1, partition p2, partition p3);
set autotrace on;
select segment_name, partition_name, segment_type, tablespace_name, bytes/1024 from user_segments where segment_name=‘APPS’;
insert into apps partiton(p3) values (10, 1000);
commit;
select segment_name, partition_name, segment_type, tablespace_name, bytes/1024 from user_segments where segment_name=‘APPS’;
set autotrace off
show parameter seg
alter system set deffered_segment_creation=false; (延迟段,空表也分配存储空间)
insert into apps partiton(p1) values (10, 1000);
commit;
select * from apps partition(p1);
select * from apps partition(p3);
组合分区
1. 范围到范围分区
2.
3.
4.
虚拟列分区
1. 虚拟列值有函数或表达式生成
2. 可在创建或修改表时创建虚拟列
3. 不占用存储
4. 可为虚拟列创建索引
5. 虚拟列上可建立分区和收集统计信息
eg :
create table tmp1(emp_id number, sal number, comm_pct number, commission generated always as (sal*comm_pct)) partition by range(commission) (partition p1 values less than (1000), partition p2 values less than (2000), partition p3 values less than (maxvalue));
desc tmp2;
insert into tmp1 (EMP_ID, SAL, COMM_PCT) values (10, 5000, 10);
select * from tmp1;
set autotrace on
select * from tmp1 where emp_id = 10;
select * from tmp1 where commission = 50000;
insert into tmp1 (EMP_ID, SAL, COMM_PCT) values (10, 5000, 0.1);
commit;
select * from tmp1 where commission = 500;
参考性分区
1. 参考性约束
2. 分区键存在父表和子表之间
3. 在分区键上强制建立主外键约束
4. 子表继承父表上的分区
5. 分区可被自动维护(父表增加新的分区时,子表也增加新的分区)对父表进行的任何分区维护操作都会自动同步到子表
eg :
create table orders(ord_id number, ord_date date, constraint ord_pk primary key (ord_id) partition by range(ord_date) (partition p11 values less than (…), partition p12 values less than (), partition pmax values less than ());
create table ord_items (line_id number, ord_id number not null, sku number, quantity number, constraint ord_items_pk primary key(line_id, ord_id),constraint ord_items_fk1 foreign key(ord_id) references orders(ord_id) ) partition by reference (ord_items_fk1);
desc user_segments
select segment_name, partition_name, segment_type from user_segments where segment_name in (‘ORDERS’, ‘ORD_ITEMS’);
insert into ord_items values (10, 100, 1000, 100);
commit;
select * from ord_items;
set autotrace on
select a.ord_id, a.ord_date, b.sku from orders a, ord_items b where a.ord_id = b.ord_id;
analyze table orders compute statistics;
select a.ord_id, a.ord_date, b.sku from orders a, ord_items b where a.ord_id = b.ord_id and ord_date = ’15-JUN-12’;
create index item_ordid on ord_items(ord_id);
analyze index item_ordid compute statistics;
select a.ord_id, a.ord_date, b.sku from orders a, ord_items b where a.ord_id = b.ord_id;
set autotrace off
select * from orders partition(p12);
select * from ord_items partition(p12);
select * from ord_items partition(p11);
场景4 Data Warehouse Management 数据仓库的更多相关文章
- 场景3 Data Management
场景3 Data Management 数据管理 性能优化 OLTP OLAP 物化视图 :表的快照 传输表空间 :异构平台的数据迁移 星型转换 :事实表 OLTP : 在线事务处理 1. trans ...
- BI 底座——数据仓库技术(Data Warehouse)
在开始喷这个主题之前,让我们先看看数据仓库的官方定义: 数据仓库(Data Warehouse)是一个面向主题的(Subject Oriented).集成的(Integrate).相对稳定的(Non- ...
- 浅析基于微软SQL Server 2012 Parallel Data Warehouse的大数据解决方案
作者 王枫发布于2014年2月19日 综述 随着越来越多的组织的数据从GB.TB级迈向PB级,标志着整个社会的信息化水平正在迈入新的时代 – 大数据时代.对海量数据的处理.分析能力,日益成为组织在这个 ...
- 转:浅析基于微软SQL Server 2012 Parallel Data Warehouse的大数据解决方案
综述 随着越来越多的组织的数据从GB.TB级迈向PB级,标志着整个社会的信息化水平正在迈入新的时代 – 大数据时代.对海量数据的处理.分析能力,日益成为组织在这个时代决胜未来的关键因素,而基于大数据的 ...
- Data Warehouse
Knowledge Discovery Process OLTP & OLAP 联机事务处理(OLTP, online transactional processing)系统:涵盖组织机构大部 ...
- Azure SQL 数据库仓库Data Warehouse (1) 入门
<Windows Azure Platform 系列文章目录> 在之前的项目中遇到了客户使用SQL数据仓库的场景,在这里记录一下 1.什么是SQL 数据库仓库 (SQL DW) SQL D ...
- The Data Warehouse Toolkit 阅读笔记
前言 这篇笔记的主要内容来至于The Data Warehouse Toolkit,该书可以称为数仓建模的圣经 什么是星型模型 以一个业务实时为主表.比如一笔订单就是一个业务事实.订单有商品的SKU信 ...
- Azure SQL Data Warehouse
Azure SQL Data Warehouse & AWS Redshift Amazon Redshift Amazon Redshift 是一种快速.完全托管的 PB 级数据仓库,可方便 ...
- DataBase vs Data Warehouse
Database https://en.wikipedia.org/wiki/Database A database is an organized collection of data.[1] A ...
随机推荐
- CPU过高的排查方法
一个应用占用CPU很高,除了确实是计算密集型应用之外,通常原因都是出现了死循环. (友情提示:本博文章欢迎转载,但请注明出处:hankchen,http://www.blogjava.net/hank ...
- JavaScript中的数组遍历forEach()与map()方法以及兼容写法
原理: 高级浏览器支持forEach方法 语法:forEach和map都支持2个参数:一个是回调函数(item,index,list)和上下文: forEach:用来遍历数组中的每一项:这个方法执行是 ...
- iOS - MKMapView 地图
1.创建 MKMapView 地图 在 iOS6 或者 iOS7 中实现这个功能只需要添加地图控件.设置用户跟踪模式.在 mapView:didUpdateUserLocation: 代理方法中设置地 ...
- Nginx基础知识之————RTMP模块专题(实践文档)
on_publish 语法:on_publish url上下文:rtmp, server, application描述:这个可以设置为一个API接口(GET方式接受所有参数),会给这个API接口返回8 ...
- web应用动态文档技术
动态生成web文档分为服务器动态生成.客户端动态生成 服务器动态生成文档技术主要有: CGI - 公共网关接口,它是一个允许Web服务器与后端程序以及脚本进行通信的标准化接口.通常是web服务器收到一 ...
- gdb调试基本命令(常用)
gdb调试命令 1>. 启动gdb gdb 可执行程序的名字 2>. 查看代码 l -- 查看当前文件 -- 默认main函数 2. 查看其它文件: l 文件名:行号, 显示指定行号的上下 ...
- 当云遇见APP性能测试会怎样?
一个测试人员应该明白,无论是在云内部或是外部,对一个应用程序而言,需要进行测试的地方都是一样的.最终用户只关注的是一个无缺陷的高性能的应用程序,而不关心应用程序位于哪里.在大多数的云服务协议里,都会提 ...
- 7 -- Spring的基本用法 -- 4...
7.4 使用 Spring 容器 Spring 有两个核心接口:BeanFactory 和 ApplicationContext,其中ApplicationContext 是 BeanFactory ...
- for循环立即执行和不立即执行,js闭包
<script type="text/javascript" src="jquery-2.1.1.min.js"></script> & ...
- Linux(Ubuntu 14.04) setting up OpenGL
1. Install c/c++ compilation package. 2. install openGL and freeGlut library sudo apt-get install me ...