--创建同义词
create public synonym employees for hr.employees;  --公共同义词
需要 create public synonym 权限

表的所有用户授予公共权限  
grant select on employees to public;

create synonym t1_s for t1;   --私有同义词
如果想在不同的环境中通过不同的别名引用同一个表时,要创建私有同义词。
  
编译同义词 
alter synonym t1_s compile;
 
管理同义词
select table_name, synonym_name 
from dba_synonyms
where owner='IKKI';
  
删除同义词
drop public synonym employees;
drop synonym t1_s;

--创建序列
  create sequence seq1 
  increment by 1
  start with 1
  maxvalue 100 | minvalue 10 | nomaxvalue
  cache | nocache 
  cycle | nocycle;

例如:
  create sequence seq1
  increment by 1
  start with 10
  maxvalue 999
  nocache 
  nocycle;

查看序列
  select * from user_sequences; 
  select seq1.nextval from dual;
  select seq1.currval from dual;

使用序列
  create table emp2(
    id number(10),
    name varchar2(20),
    dept varchar2(20),
    bh number(10)
  );
  insert into emp2(bh,id,name,dept)
  values(seq1.nextval,302,'tom',2002);

--rowid
  select rowid,bh,id,name  
  from emp2;

select * from emp2
  where rowid='AAASOVAAEAAAAKOAAB';

--创建试图
  create view my_employees as
  select employee_id,first_name,last_name,salary
  from employees
  where manager_id=122 
  with read only;            --用户只能从试图进行查询
  
删除试图
  drop view my_employees;

物化试图
  可以在物化试图上做以下事情:
  在物化试图上创建索引;
  在分区表上创建物化试图;
  对物化试图进行分区。

刷新方式
  on commit:用此方式,当一个主表的更改数据被提交时,物化试图被自动刷新以反应数据的更改。
  on demand:用此方式,你必须执行诸如 DBMS_MVIEW.REFREST 这样的过程来更新物化试图。

刷新类型
  complete:此刷新类型将完全重新计算基于物化试图的查询。如果物化试图原来花费12小时建立,那么重建也将花费同样的时间。显然,当主表中很少一部分行被更改、删除或插入时,不应该使用此选项。
  fast:Oracle 将使用物化试图日志来记录主表的所有更改。然后使用物化试图日志来更新物化试图。物化试图日志是基于相应物化试图的表。在物化试图与联接相关的每个表都需要有自己的物化试图日志,以便捕捉表的更改。
  force:如果选择此选项,Oracle 将尽量使用 fast 刷新机制,如果由于某些原因而不能使用该机制,则将使用 complete 刷新方法。此选项默认的刷新方法。
  never:此刷新选项不刷新物化试图。显然,对于主表有许多更改的物化试图来说,这不是一个可行的选项。

使用 DBMS_MVIEW 程序包

创建物化试图
1、授予必要的权限
   grant create materialized view to ikki;
   grant query rewrite to ikki;    
  
2、创建物化试图日志
   create materialized view log
   on products with sequence,rowid
   (prod_id, prod_name, prod_desc, prod_subcategory,
    prod_subcategory_desc, prod_category, prod_category_desc, prod_weight_class, prod_unit_of_measure, prod_pack_size, supplier_id,
    prod_status, prod_list_price, prod_min_price)
    including new values;

create materialized view log on sales
  with sequence,rowid
  (prod_id, cust_id, time_id, channel_id, promo_id,
   quantity_sold, amount_sold)
   including new values;

3、创建物化试图
  create materialized view product_sales_mv
  build immediate
  refresh fast
  enable query rewrite
  as select p.prod_name, sum(s.amount_sold) as dollar_sales,
  count(*) as cnt, count(s.amount_sold) as cnt_amt
  from sales s, products p
  where s.prod_id=p.prod_id
  group by p.prod_name;

build immediate:立即建立物化试图,这是默认选项。另一种方法是使用 build deferred 选项,此选项将在以后某个指定时刻装载物化试图及其数据。
  refresh fast:说明物化试图采用 fast 刷新方法。
  enable query rewrite:表示 Oracle 优化程序将透明的重写查询以使用新创建的物化试图而不是基础的主表。

SQL> create materialized view log on ygb;
Materialized view log created.

SQL> create materialized view mv_ygb
  2  refresh fast
  3  as select * from ygb;
Materialized view created.

删除物化视图日志
SQL> drop materialized view log on ygb;
Materialized view log dropped.

删除物化视图
SQL> drop materialized view mv_ygb;
Materialized view dropped.

 

--创建索引
  create index emp_tb_id on emp2(id);

删除索引
  drop index emp_tb_id;

重建索引
  alter index emp_tb_id rebuild;

alter index emp_tb_id rebuild online;

在进行索引的联机重建时,可以执行所有的 DML 操作,但不能执行任何 DDL 操作。

不可见索引
你可以把不可见索引作为临时索引,以便执行某些特殊操作,或者用来在索引成为正式索引前先对其进行测试。此外,有时使一个索引不可见可见替代删除索引或使其不可用。你可以使一个索引临时不可见来测试删除此索引的效果。

1、创建不可见索引
create index idx_test on test(tname)
invisible;

2、更改索引使其不可见
alter index idx_test invisible;
alter index idx_test visible;

3、查询索引是否可见
select index_name,visibility from user_indexes
where index_name='IDX_TEST';

--关于创建 Oracle 表的有效索引的准则:
    1、如果需要访问的数据不超过表中的4%或5%,则可以使用索引。全表扫描适用于请求的数据占全表数据百分比较高的查询。请记住,用索引来检索行需要两个读操作:即读索引和读表。
    2、相对较小的表应该避免使用索引。全表扫描很适合小表。对于小表不需要同时存储表的数据和索引的数据。
    3、为所有表创建主键。在指定一列作为主键时,Oracle自动创建该列的索引。
    4、对包括在多表联接操作中使用的列建立索引。
    5、对 where 子句中频繁使用的列建立索引。
    6、对包括在 order by 和 group by 操作的列或涉及排序的 union 和 distinct 等其他操作中的列建立索引。由于索引已经被排序,因此执行前述操作的排序要求将显著减少。
    7、由长字符串组成的列通常不是索引的候选列。
    8、被频繁更改的列由于涉及开销问题,理论上不建索引。
    9、使索引数目较少。
    10、当唯一列值可能不唯一时需要使用组合索引。在组合索引中,驱动列或第一列应该为选择性最强的列。
建立索引的黄金法则:表的索引应该基于你锁期望的查询中出现的表列。一个表可以创建多个索引:可以选择创建X列或Y列或二者的组合索引。

Oracle基础 12 对象 objects 同义词/序列/试图/索引的更多相关文章

  1. Oracle数据库对象(表空间/同义词/序列/视图/索引)

    数据库对象 Oracle数据库对象: 数据库对象是数据库的组成部分,常常用 CREATE 命令进行创建,可以使用 ALTER 命令修改,用 DROP 执行删除操作. 种类: (1)表空间:所有的数据对 ...

  2. oracle 10g 学习之视图、序列、索引、同义词(9)

    目标 通过本章学习,您将可以: l  描述视图 l  创建和修改视图的定义,删除视图 l  从视图中查询数据 l  通过视图插入, 修改和删除数据 l  使用“Top-N” 分析 l  创建, 维护, ...

  3. Oracle基础维护02-表、主键、索引、表结构维护手册

    目录 一.项目新建表.主键.索引注意事项 二.举例说明建表.主建.索引的操作方法 2.1 设定需求如下 2.1.1 查询数据库有哪些表空间 2.1.2 本文档假设数据库有这两个业务用户的表空间 2.2 ...

  4. Oracle 学习笔记 12 -- 序列、索引、同义词

    版权声明:本文为博主原创文章.未经博主同意不得转载. https://blog.csdn.net/Topyuluo/article/details/24232449 数据库的对象包含:表.视图.序列. ...

  5. Oracle数据库对象_同义词

    同义词是一种数据库对象,它是为一个数据库对象定义的别名,使用同义词的主要目的是为了简化SQL语句的书写. 同义词的概念和类型 利用同义词可以为用户的一个对象,或者其他用户的一个对象定义别名,从而简化命 ...

  6. Oracle——序列、索引、同义词

    一.常见的数据库对象 二.序列 序列: 可供多个用户用来产生唯一数值的数据库对象 自动提供唯一的数值 共享对象 主要用于提供主键值 将序列值装入内存可以提高访问效率 ①.创建序列 CREATE SEQ ...

  7. Oracle系列十四 序列、索引和同义词

    序列 : 提供有规律的数值.索引  : 提高查询的效率同义词  :给对象起别名 序列: 可供多个用户用来产生唯一数值的数据库对象 自动提供唯一的数值 共享对象 主要用于提供主键值 将序列值装入内存可以 ...

  8. Oracle对象(视图、序列、索引)

    数据库对象:表.视图.序列.索引.同义词创建视图:create view 名 as 子查询描述结构:describe 对象名修改视图:create or replace view 名 as 子查询 视 ...

  9. oracle基础知识过一遍(原创)

    用户.角色.权限.表空间 create tablespace test1_tablespace datafile ‘test1file.dbf’ size 10m; create temporary  ...

随机推荐

  1. Kubernetes集群(概念篇)

    Kubernetes介绍 2013年docker诞生,自此一发不可收拾,它的发展如火如荼,作为一个运维如果不会docker,那真的是落伍了. 而2014年出现的kubernetes(又叫k8s)更加炙 ...

  2. SpringBoot:工厂模式实现定时任务可配置

    pringBoot:工厂模式实现定时任务可配置 需要:使用springboot,实现定时任务可配置. 定时任务可在代码中写死,在配置文件中配置,这些都不能实现定时任务在服务器不重启的情况下可配置. 为 ...

  3. 软工实践Beta冲刺(3/7)

    队名:起床一起肝活队 组长博客:博客链接 作业博客:班级博客本次作业的链接 组员情况 组员1(队长):白晨曦 过去两天完成了哪些任务 描述: 1.界面的修改与完善 展示GitHub当日代码/文档签入记 ...

  4. B树(B-树)

    1.基本概念: M定义为树的高度,也叫阶,就是树的深度: (1).B树又称为多路平衡查找树. (2).根节点至少有两个子节点. (3).除根节点以外的非叶子节点的儿子树为[M/2,M]. (4).每个 ...

  5. 【原创】Sagger使用

    Swagger使用 1. Spring MVC配置文件中的配置 <mvc:annotation-driven/> <context:component-scan base-packa ...

  6. WCF扩展记录服务调用时间

    WCF 提供了许多扩展点供开发人员自定义运行时行为. WCF 在 Channel Layer 之上还提供了一个高级运行时,主要是针对应用程序开发人员.在 WCF 文档中,它常被称为服务模型层(Serv ...

  7. [剑指Offer] 43.左旋转字符串

    题目描述 汇编语言中有一种移位指令叫做循环左移(ROL),现在有个简单的任务,就是用字符串模拟这个指令的运算结果.对于一个给定的字符序列S,请你把其循环左移K位后的序列输出.例如,字符序列S=”abc ...

  8. (转载)Hadoop示例程序WordCount详解

    最近在学习云计算,研究Haddop框架,费了一整天时间将Hadoop在Linux下完全运行起来,看到官方的map-reduce的demo程序WordCount,仔细研究了一下,算做入门了. 其实Wor ...

  9. [UVA1625]Color Length

    题面在这里 description 输入两个长度分别为\(n\)和\(m\)的颜色序列,要求按顺序合并成同一个序列,即每次可以把一个序列开头的颜色放到新序列的尾部. 对于每个颜色\(c\)来说,其跨度 ...

  10. 【NOIP模拟赛】beautiful 乱搞(平衡树)+ST

    biubiu~~~ 我用平衡树处理的这道题,然而这种方法还是要看评测姬..... 正解是乱搞....就是枚举每一位数作为中位数,比他小的看做-1比他大的看做1,那么我们从一开始就有了一个绵延的山,我们 ...