Oracle知识点总结(二)

用户管理和权限管理

要在超级用户上创建用户权限

--创建用户

create user zw identified by 123456;

--给zw登入的权限

grant connect to zw;

--授权

--用系统权限的方式

grant create table to zw;

--用角色方式

grant resource to zw;

--例:

create user username identified by password;

grant resource,connect to username;

-----------------GRANT语句

--GRANT语句的作用是赋与用户权限。

 --常用的数据对象权限有以下六个:

--(1)ALL ON  数据对象名

--(2)SELECT ON  数据对象名

--(3)UPDATE  ON  数据对象名

--(4)DELETE  ON  数据对象名

--(5)INSERT  ON   数据对象名

--(6)ALTER  ON  数据对象名

--例:

--把查询department表权限给zw用户

grant select on department to zw

--把所有操作department表权限给zw用户

grant all on department to zw

----------------REVOKE语句

--REVOKE语句是回收权限语句。回收以上所赋权限的相应语句为:

--REVOKE CONNECT FROM USER1;

--REVOKE SELECT ON TABLE2 FROM USER2;

--REVOKE SELECT,INSERT,DELETE ON TABLE3 FROM USER1,USER2;

--例:

--回收sun用户对SZD用户的emp表的查询权限

revoke select on emp from sun

--回收sun用户对SZD用户的emp表的所有权限

revoke all on emp from sun

备份与恢复

数据库导出的四种模式full(全库导出), owner(用户导出), table(表导出), tablespace(表空间导出)

执行exp 有三种方法:交互式,命令行和参数文件。

1:交互式:直接输入exp 命令用户可以按照exp 提示的信息一步一步操作,比较简单

2:命令行:输入命令行exp username/password parameter=value. 

3:参数文件:输入命令行exp username/password parfile=filename exp 所需的参数从参数文件引入。

热备份和冷备份:

热备份针对归档模式的数据库,在数据库仍旧处于工作状态时进行备份。而冷备份指在数据库关闭后,进行备份,适用于所有模式的数据库。

热备份的优点在于当备份时,数据库仍旧可以被使用并且可以将数据库恢复到任意一个时间点。冷备份的优点在于它的备份和恢复操作相当简单,并且由于冷备份的数据库可以工作在非归档模式下,数据库性能会比归档模式稍好。(因为不必将archive log写入硬盘)

索引

索引是一种树状结构,可以通过该结构迅速访问表中的数据。

索引的类型和其语法:唯一索引,组合索引,反向键索引,位图索引,基于函数的索引。

1、唯一索引可以确保在定义索引的列中,表的任意两行的值都不相同,Oracle自动为表的主键列创建唯一索引。

其语法为:CREATE UNIQUE INDEX index_name ON table_name(column_name);

2、组合索引是在表中的多个列上创建的索引,可以提高检索数据的速度。

其语法为:CREATE INDEX index_name ON table_name(column_name);

3、反向键索引通常建立在一些值连续增长的列上,可以提高读取的性能。

其语法为:CREATE INDEX index_name ON table_name(column_name) REVERSE;

4、位图索引适用于低基数列,也就是不同值的数目比表的行数少的列。

其语法为:CREATE BITMAP INDEX index_name ON table_name(column_name);

5、基于函数的索引是指基于一个或多个列上的函数或表达式创建的索引,便于WHERE子句中包含函数或表达式以计算查询时使用。

其语法为:CREATE INDEX index_name ON table_name(表达式或函数);

Oracle索引包含B-tree索引、bitmap索引、函数索引等。

B-tree索引类似二叉树结构,数据库表中每一行都对应R-tree索引中的一个节点。

节点中包含数据(索引列)和rowid信息,通过索引列找到对应的rowid信息,在定位到具体的行来查找数据。

如果平凡删除操作,会对相应的索引作对应的修改,会降低性能。建议在操作之前先删除索引再重建索引。

补充:

创建索引语法:create index index_name on itemfile (itemcode)

删除索引语法:drop index index_name;

重建索引语法:alter index index_name rebuild;

重命名索引:alter index item_index rename to book_index; 

索引的优缺点

优点:某些情况下,数据查找快。

如:用户的查询将要选取记录的2%-5%或更多,那么它将会执行全部扫描,而不考虑索引是否可用

缺点:

a)在某些条件下,全表扫描比索引查找更快

b)索引占用空间惊人,甚至超过表数据所占空间,不利于管理。

c)创建索引后,会降低插入,修改,删除等操作的效率

选择索引

a.身份证这类唯一属性,应建唯一索引 

b.性别,只有男、女、未定等少数几种状态值,应创建位图索引,位图索引更节约空间

c.对字段使用函数,不会使用索引,可创建函数索引。

下列的表不适合建索引:

a.表很小(8K)

b.列不经常在WHERE子句中使用

c.表中的相关列经常被修改

Oracle优化

SQL优化实例:

– 选择最有效率的表名顺序(只在基于规则的优化器中有效)

– WHERE子句中的连接顺序

– SELECT子句中避免使用 *

– 减少访问数据库的次数

– 最高效的删除重复记录方法 

– 用TRUNCATE替代DELETE 

– 尽量多使用COMMIT

– 用Where子句替换HAVING子句 

– 使用表的别名(Alias)

– 用EXISTS替代IN 

– 用NOT EXISTS替代NOT IN 
用表连接替换EXISTS

– 用EXPLAIN PLAN 分析SQL语句

– 避免在索引列上使用计算

– 用>=替代>

– 避免在索引列上使用IS NULL和IS NOT NULL

– 用UNION-ALL 替换UNION ( 如果有可能的话)

– 需要当心的WHERE子句

你可能感兴趣的:(Oracle知识点总结(二))