一、启动的服务
1.oracle核心服务——OracleServiceORCL
2. oracle监听服务——OracleOraDb11g_home1TNSListener
3.oracle数据库工作日程调度(没有工作日程安排不用启动,占资源)——OracleJobSchedulerORCL
二、Sql Server与Oracle最大的不同
1. SQL SERVER 号称百万级数据(一个表的数据),但是其实做多20万条数据,超过20万条数据就用Oracle;
2. Sql中可以随时随意的创建数据库;但Oracle只有一个数据库,一台电脑只会安装一个数据库,Oracle只有账户。
三、账户、表空间、数据库
1. 关系
案例:两个同学创建2个不同的数据库
这两个同学都要在Oracle中找自己的数据库,刚说了一个Oracle只有一个数据库,怎么办?为两个同学各创建一个账户,给
账户开辟数据库空间----表空间(TableSpace)。
表空间代替了Sql里面的数据库,创建数据库就是开辟账户空间。
注意:Oracle为A账户开辟个空间,为B账户开辟个空间,请问A和B是不是在用同一个数据库?不同账号之间能不能互访?
答:A和B在同一个数据库;但是不能互访,除非开了访问权限
2. 数据库
数据库是数据集合,Oracle是一种数据库管理系统,是一种关系型的数据库管理系统。通常情况下我们称的“数据库”,并不
仅是指物理的数据集合,它包含物理数据、数据库管理系统(也即物理数据、内存、操作系统进程的组合体)。
查询当前数据库名:select name from v$database; (本人返回JANET)
3、数据库实例
用Oracle官方描述:实例是访问Oracle数据库所需的一部分计算机内存和辅助处理后台进程,是由进程和这些进程所使用的
内存(SGA)所构成一个集合。其实就是用来访问和使用数据库的一块进程,它只存在于内存中。就像Java中new出来的实例对象
一样。我们访问Oracle都是访问一个实例,但这个实例如果关联了数据库文件,就是可以访问的,如果没有,就会得到实例不可
用的错误。
实例名指的是用于响应某个数据库操作的数据库管理系统的名称。她同时也叫SID。实例名是由参数instance_name决定的。
查询当前数据库实例名:select instance_name from v$instance;
数据库实例名(instance_name)用于对外部连接。在操作系统中要取得与数据库的联系,必须使用数据库实例名。比如我们作
开发,要连接数据库,就得连接数据库实例名:
jdbc:oracle:thin:@localhost:1521:orcl(orcl就为数据库实例名)
一个数据库可以有多个实例,在作数据库服务集群的时候可以用到。
4、表空间
Oracle数据库是通过表空间来存储物理表的,一个数据库实例可以有N个表空间,一个表空间下可以有N张表。有了数据库,
就可以创建表空间。
表空间(tablespace)是数据库的逻辑划分,每个数据库至少有一个表空间(称作SYSTEM表空间)。为了便于管理和提高运行效
率,可以使用一些附加表空间来划分用户和应用程序。例如:USER表空间供一般用户使用,RBS表空间供回滚段使用。一个表
空间只能属于一个数据库。
创建表空间语法:
Create TableSpace 表空间名称
DataFile 表空间数据文件路径
Size 表空间初始大小
Autoextend on
如:
create tablespace db_test
datafile 'D:\oracle\product\10.2.0\userdata\db_test.dbf'
size 50m
autoextend on;
查看已经创建好的表空间:
select default_tablespace, temporary_tablespace,d.username from dba_users d;
查看当前用户的缺省表空间:
select username,default_tablespace from user_users;
4、用户
Oracle数据库建好后,要想在数据库里建表,必须先为数据库建立用户,并为用户指定表空间。
上面我们建好了数据库和表空间,接下来建用户:
创建新用户:
CREATE USER 用户名
IDENTIFIEDBY 密码
DEFAULT TABLESPACE 表空间(默认USERS)
TEMPORARY TABLESPACE 临时表空间(默认TEMP)
如:
CREATE USER utest
IDENTIFIED BY utestpwd
DEFAULT TABLESPACE db_test
TEMPORARY TABLESPACE temp;
(这里临时表空间不能使用我们创建的db_test,不知为何?)
有了用户,要想使用用户账号管理自己的表空间,还得给它分权限:
GRANT CONNECT TO utest;
GRANT RESOURCE TO utest;
GRANT dba TO utest;--dba为最高级权限,可以创建数据库,表等。
查看数据库用户:
select * from dba_users;
2. 创建表空间
①基于应用性能和管理方面的考虑,最好为不同的用户创建独立的表空间。
②创建表空间的语法:create tablespace 表空间名
例:
Create tablespace ts_1
Datafile ’e:111.dbf’ --数据库文件地址
Size 100M --文件初始值大小
--只要以上三行就行了,以下四行为了做某些控制而加
autoextend on next 32 maxsize unlimited
logging
extent management local
segment space management auto;
四、给表空间分配账户,给账户角色授权
1.首先创建账户,指定访问表空间,但是未给它赋值任何权限,登录时是等不了的!
Create user 用户名
identified by 密码
Default tablespace 表空间 --指定该用户管理的表空间
案例:
create user u_dml
identified by 123
Default tablespace ts_1
2.给账户授予角色(注意需把账户和角色分清楚)
角色:李鹏飞是个学生 角色:学生
账户:李鹏飞是个学生 账户:李鹏飞
角色分类:
Connect:临时用户角色
Resource:正式用户角色
DBA:管理员(一般不用)
授予角色:
Grant connect , resource to 账户
撤销角色:
Revoke connect,resource from 账户
删除(撤销)用户:
DROP USER 用户名
DROP user 用户名 CASCAED
--CASCAED表示删除用户的同时删除其建立的实体
操作授权:
案例:将查询scott用户的stu表的权限授予test用户
Grant select on scott.stu to test