成本低
安全性要求不高
成本在万元内
比如商务网站
大型数据库的安全性能
高,价格也很昂贵!
万
元以上
二、
oracle
安装,启动及卸载
1.
系统要求:
操作系统最好为
windows2000
内存最好在
256M
以上
硬盘空间需要
2G
以上
2.oracle
安装会自动的生成
sys
和
system
两个用户
3
说明:
○
1
Sys
用户
是
超级用户,具有最高权限,具有
sysdba
角色,
createdatabase
的权限,默认密码是
manager
○
2
System
用户
是
管理操作员,权限也很大,具有
sysoper
角色,没有
create
database
权限,默认密码是
change_on_install
○
3
一般讲,对数据库维护,使用
system
用户登录就可以了
3.
启动
oracle
右键单击我的电脑
->
服务和应用程序:
服务
->
启动
OracleServiceMYORA1(MYORA1
是安装
oracle
时起的名字各有不同
)
和
OracleOracleHome90TNSLlistener
4.
卸载
oracle
1
、先关掉
oralce
,
netstopOracleServiceORCL(ORCL
是我的实例名字,换成
你的
)
,或者去我的电脑服务中关闭
2
、开始->程序->
Oracle-oracle
的版本号,我的是
10ghome
->
Oracle
InstallationProducts
->
UniversalInstaller
卸载
oracle
3
、进注册表,
regedit
,删除选择
HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE
下所有的
key
。
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services
、
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Eventlog\App
lication
这个里面所有有
oracle
这个字眼的,删除
4
、删除
c
盘
\ProgramFiles\Oracle
目录的东西以及
oracle
安装目录下所有的文
件以及文件夹
5
、环境变量中删除有关
oracle
的
classpath
和
path
三、
oracle
开发工具
Sqlplus
是
Oracle
自带的工具软件,主要用于执行
sql
语句,
pl/sql
块。
如何使用:
1)
在开始
à
程序
à
oracleorachome90
à
applicationdevelopment
à
sql*plus(
这个是在
dos
下操作
)
2)
在运行栏中输入:
sqlplusw
或者
sqlplus
即可
3)
在开始
à
程序
à
oracleorahome90
à
Applicationdevelopment
à
sql*plusworksheet
4)pl/sqldeveloper
属于第三方软件,
主要用于开发,
测试,
优化
oraclepl/sql
的
存储过程
.
如:
触发器,此软件
oracle
不带,需要单独安装。
5)oracle
的企业管理器
(oemoracleenterprisemanager)
位
置
在
开
始
à
程
序
à
oracle
à
oracle
oraclehome90
à
enterprise
manager
console
即可启动
oracle
的企业管理器,是一个图形界面环境
4
四、
Sql*plus
的常用命令
1.
连接命令
(
1)
conn
[ect]
用法:
conn
用户名
/
密码
@
网络服务名
[assysdba/sysoper](
角色登陆
)
当
用特权用户身份连接时,必须带上
assysdba
或是
assysoper
例:
connscott/tiger;
showuser
;
显示当前用户
2.
断开连接命令
(2)
disc
[onnect]
说明:
该命令用来断开与当前数据库的连接
(3)passw[ord]
说明:
该命令用于修改用户名的密码。
如果要想修改其他用户的
密码,需要用
sys/system
登陆。
(4)showuser
说明:
显示当前用户名
(5)
exit
说明:
该命令会断开与数据库的连接,同时会退出
sql*plus
3.
文件操作命令
(1)
start
和
@
说明:
运行
sql
脚本
案例:
sql>@d:
\a.sql
或者
sql>startd:
a.sql
(2)
edit
说明:
该命令可以编辑指定的
sql
脚本。
案例:
sql>editd:
\a.sql
(3)
spool
说明:
该命令可以将
sql*plus
屏幕上的内容输出到指定文件中去。
案例:
sql>spoold:
\b.sql
并输入
sql>spooloff
4
.交互式命令
(1)
&
说明:
可以替代变量,而该变量在执行时,需要用户输入。
如:
sql>select
*fromempwherejob=
‘
&job
’
输入
job
是注意大小写
(2)edit
说明:
该命令可以编辑指定的
sql
脚本
案例:
sql>editd:
\a.sql
5.
显示和设置环境变量
概述:
可以用来控制输出的各种格式,
set
show
如果希望永久的保存相关的设置,
可以去修改
glogin.sql
脚本
(1)linesize
说明:
设置显示行的宽度,默认是
80
个字符
sql>showlinesize
sql>setlinesize90
(2)pagesize
说明:
设置每页显示的行数目,默认是
14
,用法和
linesize
一样,至于其
他环境参数的使用也是大同小异
sql>set
pagesize
8
实际得到的不是
14/8=2
页
而是:
14/
(
8-3
)
=5
页
5
五
Oracle
用户的管理
1.
创建用户
概述:
在
oracle
中要创建一个新的用户使用
create
user
语句,一般是具有
dba
(数据库管理员)的权限才能使用。
createuser
用户名
identifiedby
密码;
2.
给用户修改密码
概述:
如果给自己修改密码可以直接使用
sql>
password
用户名
如果给别人修改密码则需要具有
dba
的权限,
或是拥有
alter
user
的系统
权限
sql>
alteruser
用户名
identifiedby
新密码
3.
删除用户
概述:
一般以
dba
的身份去删除某个用户,如果用其他用户去删除用户则需要具
有
dropuser
的权限。
比如
dropuser
用户名
【
cascade
】
注意:
在删除用户时,如果要删除的用户已经创建了表,就需要在删除的时候带
一个参数
cascade
4.
用户管理的综合案例
概述:
创建的新用户是没有任何权限的,甚至连登陆的数据库的权限都没有,需
要为其指定相应的权限。
给一个用户赋权限
(
connect
登陆,
dba
管理员
resource
建表)使用命令
grant,
回收权限使用命令
revoke.
为了给讲清楚用户管理,给大家举一个案例。
案例:
新建一个用户
lady
并给该用户赋可登陆可创建表
Sql>createuserladyidentifiedbylady123(
密码
)
受登陆权限
:
à
grantconnectto
lady
受可创建表:
grantresourceto
lady
可以多个同时授权:
grantconnect
,
resourcetolady;
注意授权用户级别应该为(
dba
以上
sys/system
)
还可以使用
PL/SQL
工具创建:
文件
->
新建
->
用户
现在我要把
scott
用户里面的
emp
表的权限赋给
lady
用户但
lady
只能有对
emp
查询权限:
grant
select
on
emp
to
lady;(
授权用户级别应该:
授权本身,或者
sys/system)
lady
查询
emp
的方式:
select*fromscott.emp
;
案例:
同上我想把
update
的权限也赋给
leng
à
grantupdateonempto
leng;
2)
我想把
emp
所有的
(
增,删,改,查
/insert,delete,update,select
这四个一
起可以用
all
代替
)
操作权限赋给
leng
grantallonempto
leng;(
此时登陆用户为
scott)
案例
2
:
这时我想把权限收回来怎么办呢?
这时用关键字
revoke
(撤回)
à
revokeselectonempfromlady;
收回
lady
的查权限
2.
显示约束列
通过查询数据字典视图
user_cons_conlumns,
可以显示约束所对应的表列信息
selectcolumn_name,positionfromuser_cons_columnswhereconstraint_name=
‘
约束
名
‘
;
3.
直接通过
pl/sqldeveloper
查看即可
列级定义
列级定义是在定义列的同时定义约束如在
department
表定义主外键约束
create
table
department4
(
dept_id
number
(2)
constraint
pk_department
primary
key,namevarchar2(12),locvar2(12)
)
;
表级定义
表级定义是指在定义了所有列后,在定义约束,这里需要注意:
notnull
约束只
能在列级上定义
以在建立
employee2
表示定义主外键约束和外键约束为例:
create
table
employee2
(
emp_id
number(4),name
varchar2(15),dept_id
number
(2),constraint
pk_employee
frimary
key
(emp_id),constraint
fk_department
foreignkey(dept_id)referencesdepartment(dept_id)
)
;
2.
管理索引
—
原理介绍
介绍:
索引是用于加速数据存取的数据对像,合理的使用索引可以大大降低
i/o
次数,从而提高数据访问性能,索引有很多种我们主要介绍常用的几种:
为什么添加了索引后,会加快查询速度呢?
book
超市
有管理秩序的超市
种类详细图
52
单列索引
单列索引是基于单个列所建立的索引,比如:
create
index
索引名
on
表名
(
列名
)
复合索引
复合索引是基于两列或是多列的索引,在同一张表上可以有多个索引,但是要求
列的组合必须不同,比如:
createindexemp_idx1onemp(ename,job);
createindexemp_idx1onemp(job,ename);//
使用原则
在大表建才有意义。
在
where
子句或是连接条件上经常引用的列上建立索引
(
要在带条件查询上加索引
)
索引的层次不要超过
4
层
索引的缺点
1.
建立索引,系统要占用大约为表的
1.2
倍的硬盘和内存来保存索引。
2.
更新数据的时候,系统必须要有额外的时间来对索引进行更新,来维护数据和
索引的一致性。
实践表明:
不合理的索引不但不能增加效率,反而会降低系统的
性能,
因为大量
的索引进行插入,
修改和删除操作比没有索引花费更多的系统时
间。
不恰当的:
1.
很少或从不引用的字段;
2.
逻辑型的字段,如男或女等,提高查询效率是以消耗系统资源为代价的,不能
盲目建立
其它索引
按照数据储存方式,可以分为
B*
树,反向索引,位图索引;
按照索引列的个数,可以分为单列索引,复合索引;
按照索引列值的唯一性,可以分为唯一索引和非唯一索引
还有函数索引,全局索引,区分索引。
。
。
。
对于索引在不同的情况我们会在不同的列上建立索引,还可以建立不同种类的索
引。
显示索引信息
在
同
一
张
表
上
可
以
有
多
个
索
引
,
通
过
查
询
数
据
字
典
视
图
Dba_indexes
和
user_indexes
,可以显示索引信息,其中前者用于显示数据库所有的索引信息,后
者用于显示当前用户的索引信息。
53
显示索引表
selectindex_name,index_typefromuser_indexeswheretable_name=
‗
表名
‘
显示索引列
Select
table_name,column_name
from
user_ind_columns
where
index_name=
‘
ind_ename
’
;
3.
管理权限和角色
介绍
这一部分我们注意看看
oracle
中如何管理权限和角色,
权限和角色的区别在那里。
当刚刚建立用户时,用户没有任何权限,也不能执行任何操作。
如果要执行某种
特定数据库操作,则必须为其赋予权限;如果用户要访问其它方案的对象,则必
须为其赋予对象权限。
系统权限介绍
系统权限是指执行特定类型
sql
命令的权限,它用于控制用户可以执行的一个或
是一组数据库操作,比如当用户具有
createtable
权限时,可以在其方案中建表,
当用户具有
createanytable
权限时,可以在任何方案中建表
.
常用的有
createsession--
连接数据库
createtable---
建表
createview---
建视图
createpublicsynonym
建同义词
create
procedure
建过程,函数,包
createtrigger
建触发器
显示系统权限
select*fromsystem_privilege_maporderbyname;
授予系统权限
赋予系统权限一般是
dba
来完成的如果用其他用户来授予系统权限,则要求该用
户必须具有
grant
any
privilege
的系统权限,在授予系统权限时,可以带有
with
admin
pition
选项,这样被授予权限的用户或是角色还可以将该系统权限授予其
他的用户或是角色,为了让大家快速理解我们举例说明:
创建两个用户
ken,tom
开始没有任何权限
(1)
创建
ken,tom
用户
(
不详细说明前面已经介绍
)
createuserkenidentifiedbyken;
(2)
给用户
ken
赋权
grantcreatesession,createtabletokenwithadminoption;
grantcreateviewtoken;
(3)
给
tom
赋权
通过
ken
给
tom
赋权