Oracle数据库管理实验





一 传输表空间

二 创建分区表和分区索引

三 FGA细粒度审计

四 监控索引使用情况

五 创建含特殊字段类型的表

六 Flashback闪回技术





一 传输表空间,将ocmdb库的tstrans表空间迁移到ocmdb02库中

场合:1.适用于OLAP数据仓库应用  2.数据迁移 比exp/imp速度快,不仅迁移数据同一时候迁移元数据

原理:仅仅导出表空间的元数据(即结构信息)。导入目标数据库,把表空间设置为仅仅读。把相应的数据文件拷贝到目标系统的目标文件夹。挂载上导入的表空间。在把表空间设置为读写。

官方文档:Administrator’s Guide-> 8 Managing Tablespace -> Transport Tablespace Between databases

          SQL Reference -> CREATE DIRECTORY

清理环境

drop user tstrans cascade;

drop tablespace tstrans including contents and datafiles;

1.初始化实验环境

sqlplus sys/sys@ocmdb1521 as sysdba

create tablespace tstrans datafile '/u01/oracle/oradata/ocmdb/tsport01.dbf' size 20m autoextend off;

create user tstrans identified by tstrans default tablespace tstrans;

grant connect,resource to tstrans;

conn tstrans/tstrans

create table t1 (a int) tablespace tstrans;

insert into t1 values (100); 

commit;

create index idx_t1 on t1 (a) tablespace tstrans;

select index_name,table_name,tablespace_name from user_indexes where table_name='T1';

conn / as sysdba

select tablespace_name,segment_name,segment_type from dba_segments where tablespace_name='TSTRANS';  查看tstrans表空间有哪些对象

2.检查tstrans表空间是否违反约束条件

exec dbms_tts.transport_set_check('TSTRANS',true); 

比如表在A表空间。索引在B表空间。假设仅仅传输A的话,就会违反自包括约束条件,表上的索引就会失效,传输不完整。解决方法:同一时候传输A和B两个表空间。

select * from transport_set_violations;    查看违反约束列表,没有记录为正常

3.设置TSTRANS为仅仅读表空间,即把全部数据文件都设置成仅仅读状态。

alter tablespace tstrans read only; 

4.使用exp或expdp的transport_tablespace=y參数导出表空间的元数据 即结构信息

exp -help  打开帮助文档能够查看其选项说明

exp userid=\'/ as sysdba\' transport_tablespace=y tablespaces=tstrans file=/home/oracle/exp_tstrans.dmp

使用SYS用户仅仅导出tstrans表空间的元数据(结构信息)。而不是真实数据。因此容量比較小

scp exp_tstrans.dmp ocm02:/home/oracle 传输到第二台机器上

数据泵导出方式选做

【expdp -help 

 create directory dir_home as '/home/oracle'; 

 grant read,write on directory dir_home to public;

 expdp system/oracle directory=dir_home dumpfile=expdp_tstrans.dmp transport_tablespaces=tstrans transport_full_check=y   



5.拷贝数据文件(表空间真正的数据)仅仅有数据文件为仅仅读状态才干够复制,并且不用停库

scp tstrans01.dbf ocm02:/u01/oracle/oradata/ocmdb02/

6.imp或impdp的传输表空间导入

LEO2库的准备工作

create user tstrans identified by tstrans; 

grant connect,resource to tstrans; 

使用imp导入方式   默认以追加方式插入表空间元数据+数据文件

imp userid=\'/ as sysdba\' file=/home/oracle/exp_tstrans.dmp fromuser=tstrans  touser=tstrans transport_tablespace=y tablespaces=tstrans datafiles=/u01/oracle/oradata/ocm02/tstrans01.dbf





【使用impdp导入方法 选做】 

create directory dir_home as '/home/oracle';

grant read,write on directory dir_home to public;

impdp system/oracle directory=dir_home dumpfile=expdp_tstrans.dmp remap_schema=(tstrans:tstrans)    对象从一个schema载入到还有一个schema

transport_datafiles=/u01/oracle/oradata/ocm02/tstrans01.dbf        导入哪个数据文件

检查表空间是否导入成功

col tablespace_name for a15

col segment_name for a15

col segment_type for a15

select tablespace_name,segment_name,segment_type from dba_segments where tablespace_name='TSTRANS';

conn tstrans/tstrans

select * from t1;  

7.将ocmdb实例和ocmdb02实例表空间调整为可读写状态

sqlplus sys/sys@ocmdb1521 as sysdba

conn / as sysdba

select tablespace_name,status from dba_tablespaces;

alter tablespace tstrans read write; 

select tablespace_name,status from dba_tablespaces;

sqlplus sys/sys@ocmdb021521 as sysdba

conn / as sysdba

select tablespace_name,status from dba_tablespaces;

alter tablespace tstrans read write;

select tablespace_name,status from dba_tablespaces;





二 创建分区表和分区索引

官方文档:

Administrator’s Guide –> 17 Managing Partitioned Tables and Indexs 

Data Warehousing Guide -> 5 Partitioning in Data Warehouses





场合:数据量非常大,要求检索范围小。效率高

长处:DBA管理灵活性高。基于分区删除、插入

缺点:跨分区检索效率非常低,但可创建一个全局索引global来改善性能

全局索引global:默认删除分区。则全局索引失效,一个分区表仅仅有一个全局索引

本地索引local:一个分区一个索引。有几个分区就有几个索引

要求:我们创建一个分区表,共同拥有4个分区,每一个分区独立使用一个表空间

      使用非标准块。块大小16k





1.设置非标准块

ocm01





alter system set db_16k_cache_size=80M;      设置非标准块16K缓冲区,用于存放非标准块

show parameter db_16k_cache_size

作用:用于降低物理I/O读写次数,原本读100次能够完毕的数据,如今读50次就完毕了

create user ocm01 identified by ocm01;

grant dba to ocm01;





2.创建4个表空间。一个分区相应一个表空间

conn ocm01/ocm02





drop table t2_part;

drop index idx_t2_part;

drop tablespace part1 including contents and datafiles;

drop tablespace part2 including contents and datafiles;

drop tablespace part3 including contents and datafiles;

drop tablespace part4 including contents and datafiles;

create tablespace part1 datafile '/u01/oracle/oradata/ocmdb/disk1/part1_01.dbf' size 50M

extent management local      

blocksize 16k; 

create tablespace part2 datafile '/u01/oracle/oradata/ocmdb/disk2/part2_01.dbf' size 50M

extent management local      

blocksize 16k; 

create tablespace part3 datafile '/u01/oracle/oradata/ocmdb/disk3/part3_01.dbf' size 50M

extent management local      

blocksize 16k; 

create tablespace part4 datafile '/u01/oracle/oradata/ocmdb/disk4/part4_01.dbf' size 50M

extent management local      

blocksize 16k; 

select * from v$tablespace;

2.构造分区表数据

conn tstrans/tstrans

drop table t2 purge;

create table t2 (itemid number(10),name varchar2(10),itemdate date);

create index idx_t2 on t2(itemid);

insert into t2 values (1,'apple1',to_date('2000-02-01','yyyy-mm-dd'));

insert into t2 values (2,'apple2',to_date('2000-03-01','yyyy-mm-dd'));

insert into t2 values (3,'apple3',to_date('2002-04-01','yyyy-mm-dd'));

insert into t2 values (4,'apple4',to_date('2002-05-01','yyyy-mm-dd'));

insert into t2 values (5,'apple5',to_date('2002-06-01','yyyy-mm-dd'));

insert into t2 values (6,'apple6',to_date('2010-07-01','yyyy-mm-dd'));

insert into t2 values (7,'apple7',to_date('2010-08-01','yyyy-mm-dd'));

insert into t2 values (8,'apple8',to_date('2012-09-01','yyyy-mm-dd'));

insert into t2 values (9,'apple9',to_date('2012-10-01','yyyy-mm-dd'));

insert into t2 values (10,'apple10',to_date('2013-11-01','yyyy-mm-dd'));

commit;

select * from t2;                                插入10条记录,显示出来

3.ocm01用户下创建分区表

conn ocm01/ocm01

CREATE TABLE t2_part

   PARTITION BY RANGE (itemdate)

     ( PARTITION p1 VALUES LESS THAN (to_date('2002-01-01','yyyy-mm-dd'))

        TABLESPACE part1,          

       PARTITION p2 VALUES LESS THAN (to_date('2010-01-01','yyyy-mm-dd'))

        TABLESPACE part2,         

       PARTITION p3 VALUES LESS THAN (to_date('2012-01-01','yyyy-mm-dd'))

        TABLESPACE part3,         

       PARTITION p4 VALUES LESS THAN (to_date('2013-01-01','yyyy-mm-dd'))

        TABLESPACE part4,          

       PARTITION other VALUES LESS THAN (maxvalue)

        TABLESPACE part4)         

   as select * from tstrans.t2;      

查看分区表数据

alter session set nls_date_format='yyyy-mm-dd hh24:mi:ss';

select * from t2_part; 

查看某一个分区

select * from t2_part partition (p1);

4.创建hash全局分区索引

hash分区索引:均匀打散后存放数据。拿一列作hash打散。均匀分布在4个分区上,每一个分区在不同表空间上的记录数都差点儿相同,并发读并发写

官方文档:SQL Reference -> CREATE TABLE and CREATE INDEX

conn ocm01/ocm01

注:把全局分区索引(依照name列做hash打散)均匀分成4份,每份都保存在LEOINDEX表空间里

create unique index idx_t2_part on t2_part (name,itemid)global partition by hash (name) partitions 4 tablespace LEOINDEX parallel 4;

select index_name,index_type,table_name from user_indexes where table_name='T2_PART';

截断一个分区,须要保证全局索引可用

1.默认情况下,添加、删除分区>全局索引失效

2.truncate  操作会影响全局索引   delete  操作不会影响全局索引

alter table t2_part truncate partition p1 update global indexes;

select * from t2_part partition (p1);

【update global indexes 这个keyword能够在操作之后重建全局索引】

检查全局索引是否有效

select index_name,status,partitioned from dba_indexes where table_name='T2_PART';





三 FGA细粒度审计  

场合:能够查出谁 什么时候 使用什么语句 删除的表

Oracle 细粒度审计是安全领域的一个分支,它能够追溯数据库的历史操作,从而保证全部的操作都是安全可靠可控,FGA是基于包来实现的

官方文档:Security Guide -> 12 Configuring and Administering Auditing -> Fine-Grained Auditing

PL/SQL Packages and Types Reference –> 40 DBMS_FGA

要求:使用FGA技术对表进行审计

1.清理环境

仅仅有管理员才干够删除审计

DBMS_FGA.DROP_POLICY(

   object_schema  VARCHAR2,    username(假设为空默认当前登陆用户)

   object_name    VARCHAR2,    待审计的对象名(表名字)

   policy_name    VARCHAR2 );   审计名(必须是唯一值)

execute DBMS_FGA.DROP_POLICY(object_schema=>'ocm01',object_name=>'t',policy_name=>'audit_t');

conn ocm01/ocm01

drop table t purge;           删除待审计的表

2.创建待审计的T表

conn ocm01/ocm01

create table t (x number(10),y varchar2(20));   创建待审计的表t    

3.创建审计策略

conn / as sysdba

begin

dbms_fga.add_policy (

   object_schema      =>  'ocm01',           审计谁

   object_name        =>  't',              审计谁的表

   policy_name        =>  'audit_t',        审计策略的名字

   audit_condition    =>  'x >= 100',       触发审计的条件 x>=100

   audit_column       =>  'x',              审计表中的哪个列‘x,y’

   enable             =>   TRUE,            审计立马生效

   statement_types    =>  'INSERT,UPDATE,DELETE,SELECT');  触发审计的语句对这些语句都启动审计

end;                     

/

4.查询确认FGA策略是否生效

col object_schema for a20

col object_name for a15

col policy_name for a13

col enabled for a3

select object_schema,object_name,policy_name,enabled from dba_audit_policies;

5.插入測试记录符合触发审计的条件

conn leo1/leo1

insert into t values (10,'first');

insert into t values (100,'dfs');

insert into t values (200,'dsf');      

insert into t values (300,'sdf'); 

insert into t values (400,'sdgdg');      

insert into t values (500,'sdg');

insert into t values (600,'sdgsdgs');

select * from t;          查看审计表的内容  

6.查看审计结果,默认会把审计结果放在SYS.FGA_LOG$基表中

注:审计会对INSERT,UPDATE,DELETE,SELECT这四种语句都做检查,而且记录谁 操作的哪个表 运行的什么语句  

select OBJ$SCHEMA,OBJ$NAME,POLICYNAME,LSQLTEXT from SYS.FGA_LOG$;

set lines 200

col sql_text for a35

col object_schema for a15

select object_schema,object_name,policy_name,sql_text from dba_common_audit_trail;     

显示全部审计结果





四 监控索引使用情况        

场合:监控表中无用索引删除之

官方文档:Administrator’s Guide -> 16 Managing Indexes -> Monitoring Index Usage

conn ocm01/ocm01

drop table t4;

create table t4 as select * from dba_objects;

create index idx_t4 on t4(object_id);

开启LEO1下idx_t4索引的监控

alter index idx_t4 monitoring usage; 

停止LEO1下idx_t4索引的监控

alter index idx_t4 nomonitoring usage; 

select * from t4 where object_id=5000;

查看v$object_usage视图获得索引被使用情况

set linesize 400                      设置环境

col index_name for a10

col table_name for a10

col start_monitoring for a20

col end_monitoring for a20

select * from v$object_usage;   

说明: monitoring字段为YES 表示此索引已经被监控。NO未被监控

       used字段为YES  表示此索引已经被使用。NO未被使用

       start_monitoring与end_monitoring 表示上次监控区间





五 创建含特殊字段类型的表

创建具有ROWID及时间戳类型字段的表并插入数据

官方文档:SQL Reference -> 2 Basic Elements of Oracle SQL -> Datatypes ->搜索“ROWID”和“TIMESTAMP” WITH LOCAL TIME ZONE Datatype

1.创建LEONARDING_R表并初始化数据

conn ocm01/ocm01

构造数据环境

create table ocm01_text 

(

text1 varchar2(10),

text2 varchar2(10),

text3 date,

text4 varchar2(50)

);

插入含有‘hugh’keyword的记录

insert into ocm01_text values ('hugh','name',sysdate,'hugh');

insert into ocm01_text values ('hugh2','name',sysdate,'hugh');

insert into ocm01_text values ('hugh3','name',sysdate,'hugh');

insert into ocm01_text values ('hugh4','name',sysdate,'hugh');

commit;

select * from ocm01_text;

create table ocm01_r (text rowid,insert_time timestamp with local time zone) tablespace users;  

rowid 字段类型

timestamp with local time zone 时间戳和本地时区字段类型





2.向LEONARDING_R表插入记录

在leonarding_text表中检索记录。假设1条记录中有包括3个或者以上的“Leonarding”keyword,就把这条记录rowid和时间戳插入leonarding_r表

insert into ocm01_r (text,insert_time) select rowid,current_timestamp from ocm01_text;





注:current_timestamp函数:返回依据时区转换过的“日期”和“时间”,返回的秒是系统的

    sysdate          函数:返回操作系统的日期和时间

    length  字符串长度函数:取字段长度

commit; 

select * from ocm01_r;

drop table ocm01_r;





六 Flashback闪回技术

场景:当误删除时怎样恢复数据

官方文档:Application Developer’s Guide - Fundamentals -> 10 Developing Flashback Application -> Using Flashback Query (SELECT … AS OF)

1.Flashback Query闪回查询数据

原理:闪回查询使用的是undo表空间里存放的前映像

构造环境

drop table t5 purge;

create table t5 (x int);

insert into t5 values(1);

insert into t5 values(2);

insert into t5 values(3);

commit;

select * from t5;

2.为构造兴许的闪回查询查询当前的时间和scn号

alter session set nls_date_format='yyyy-mm-dd hh24:mi:ss';

查询当前系统时间

select sysdate from dual;

SYSDATE

-------------------

2014-01-14 21:27:23





查询当前系统SCN号

select dbms_flashback.get_system_change_number from dual;      331299

3.删除数据

delete from t5 where x=1;

commit;

select * from t5;

4.两种方法创建视图构造闪回查询删除之前的数据

1)第一种方法:使用时间戳来构造闪回查询视图

create view v_t5_timestamp as select * from t5 

as of timestamp to_timestamp('2014-01-14 21:27:23','yyyy-mm-dd hh24:mi:ss');





2)另外一种方法:使用SCN构造闪回查询视图

create view v_t5_scn as select * from t5 as of scn 331299;

注:scn 比 timestamp 更精确

查询视图闪回内容

select * from v_t5_timestamp;   

select * from v_t5_scn;

drop view v_t5_timestamp;

drop view v_t5_scn;

到此。两种构造视图的方法都顺利的获得了闪回查询的数据

2.一张表被重复多次删除,要求恢复到指定的数据版本号

原理:清空回收站

purge recyclebin;        

create table t6 (x int); 

insert into t6 values (1); 

commit;

select * from t6;  

drop table t6; 

create table t6 (x int); 

insert into t6 values (1); 

insert into t6 values (2);

commit; 

select * from t6; 

drop table t6; 

查询回收站数据字典

select object_name,original_name,type from recyclebin; 

show recyclebin

获得t6表被drop的两个版本号中哪个是我们须要恢复的对象,恢复有1条记录的t6表

select * from "BIN$7+8KsHBFHoPgQKjAZRUk9w==$0";

select * from "BIN$7+8KsHBEHoPgQKjAZRUk9w==$0"; 

闪回指定的版本号->闪回同一时候重命名

flashback table "BIN$7+8KsHBEHoPgQKjAZRUk9w==$0" to before drop rename to t6_new;

drop table t6_new;

总结自ocm实验选讲

10gocm->session5->数据库管理实验的更多相关文章

  1. 10gocm->session5->数据库管理实验->GC资源管理器的资源消耗组介绍

    <GC资源管理器>  官方文件:administrator's Guide->24 Using the Database Resource Manager 用法:在实际生产环境中使用 ...

  2. MySQL数据库管理(二)单机环境下MySQL Cluster的安装

    上文<MySQL数据库管理(一)MySQL Cluster集群简单介绍>对MySQL Cluster集群做了简要介绍.本文将教大家一步步搭建单机环境下的MySQL数据库集群. 一.单机环境 ...

  3. 使用DataV制作实时销售数据可视化大屏(实验篇)

    课时1:背景介绍 任务说明 ABC是一家销售公司,其客户可以通过网站下单订购该公司经营范围内的商品,并使用信用卡.银行卡.转账等方式付费.付费成功后,ABC公司会根据客户地址依据就近原则选择自己的货仓 ...

  4. Apsara Clouder云计算技能认证:云数据库管理与数据迁移

    一.课程介绍 二.云数据库的简介及使用场景 1.云数据库简介 1.1特点: 用户按存储容量和带宽的需求付费 可移植性 按需扩展 高可用性(HA) 1.2阿里云云数据库 RDS 稳定可靠,可弹性伸缩的在 ...

  5. 实验3、Flask数据库操作-如何使用Flask与数据库

    1. 实验内容 数据库的使用对于可交互的Web应用程序是极其重要的,本节我们主要学习如何与各种主要数据库进行连接和使用,以及ORM的使用 2. 实验要点 掌握Flask对于各种主要数据库的连接方法 掌 ...

  6. [原] 利用 OVS 建立 VxLAN 虚拟网络实验

    OVS 配置 VxLAN HOST A ------------------------------------------ | zh-veth0(10.1.1.1) VM A | | ---|--- ...

  7. Android中Activity的四大启动模式实验简述

    作为Android四大组件之一,Activity可以说是最基本也是最常见的组件,它提供了一个显示界面,从而实现与用户的交互,作为初学者,必须熟练掌握.今天我们就来通过实验演示,来帮助大家理解Activ ...

  8. SEED实验系列文章目录

    美国雪城大学SEEDLabs实验列表 SEEDLabs是一套完整的信息安全实验,涵盖本科信息安全教学中的大部分基本原理.项目组2002年由杜文亮教授创建,目前开发了30个实验,几百所大学已采用.实验楼 ...

  9. 物联网实验4 alljoyn物联网实验之手机局域网控制设备

    AllJoyn开源物联网协议框架,官方描述是一个能够使连接设备之间进行互操作的通用软件框架和系统服务核心集,也是一个跨制造商来创建动态近端网络的软件应用.高通已经将该项目捐赠给了一个名为“AllSee ...

随机推荐

  1. css Gradients(渐变)

    渐变分为4类 1:线性渐变(Linear Gradients)- 向下/向上/向左/向右/对角方向 2:径向渐变(Radial Gradients)- 由它们的中心定义 3:对角渐变 4:角度渐变 以 ...

  2. Oracle中如何插入特殊字符:& 和 ' (多种解决方案)

    今天在导入一批数据到Oracle时,碰到了一个问题:Toad提示要给一个自定义变量AMP赋值,一开始我很纳闷,数据是一系列的Insert语句,怎么会有自定义变量呢?后来搜索了一下关键字AMP发现,原来 ...

  3. 与众不同 windows phone (16) - Media(媒体)之编辑图片, 保存图片到相册, 与图片的上下文菜单“应用程序...”和“共享...”关联, 与 Windows Phone 的图片中心集成

    原文:与众不同 windows phone (16) - Media(媒体)之编辑图片, 保存图片到相册, 与图片的上下文菜单"应用程序..."和"共享..." ...

  4. 自适应滤波器(Adaptive Filter)

    ======= Wikipedia的解释 ======= 自适应滤波器是能够根据输入信号自动调整性能进行数字信号处理的数字滤波器.作为对比,非自适应滤波器有静态的滤波器系数,这些静态系数一起组成传递函 ...

  5. linux df和du统计的空间不一致

    假设你发现是 /tmp/ 目录不对劲,那么就这样就可以查看:  lsof | grep /tmp 输出的结果中,注意某些含有“(deleted)”字样的记录,它们中的一部分就是罪魁祸首,将它们kill ...

  6. centos7里默认python升级到2.7.11

    CentOS镜像使用帮助 http://mirrors.163.com/.help/centos.html   安装gcc yum install gcc* openssl openssl-devel ...

  7. 14.4.7 Configuring the Number of Background InnoDB IO Threads 配置 后台InnoDB IO Threads的数量

    14.4.7 Configuring the Number of Background InnoDB IO Threads 配置 后台InnoDB IO Threads的数量 InnoDB 使用bac ...

  8. CentOS6.5与window远程桌面配置

    VNC配置手冊 一.服务端 VNC(Virtual Network Computing)是一种Linux系统(或者BSD.Mac等)下经常使用的图形化远程管理工具.使用的是RFB协议.VNC跟SSH一 ...

  9. 基于模糊Choquet积分的目标检测算法

    本文根据论文:Fuzzy Integral for Moving Object Detection-FUZZ-IEEE_2008的内容及自己的理解而成,如果想了解更多细节,请参考原文.在背景建模中,我 ...

  10. AMFPHP1.4与PHP5.3及以上版本号不兼容问题的解决

    近期在升级PHP5.4版本号,AMFPHP出现了兼容性问题.解决过程记录例如以下. 1.ereg类相关函数改动为preg相关函数. 2.通过错误日志输出的提示.将全部以静态方式调用的类函数加入stat ...