1、Oracle Database,又名Oracle RDBMS,或简称Oracle
2、是目前世界上流行的关系型数据库管理系统,是目前最流行的C/S或B/S体系结构的数据库之一,它具有系统可移植性好、使用方便、功能强,适用于各类大、中、小、微机环境。它是一种高效率、可靠性好的 适应高吞吐量的数据库解决方案
3、oracle目前是世界上使用最为广泛的数据库管理系统,作为一个通用的数据库系统,它具有完整的数据管理功能;作为一个关系型数据库,它是一个完备关系的产品;作为分布式数据库它实现了分布式处理功能
1、oracle数据库是数据的物理存储。包括数据文件ORA或者DBF,控制文件,联机文件,日志文件,参数文件
2、oracle数据库的概念和其他数据库概念有些不一样,比如mysql
⑴mysql数据库创建数据库的过程是:创建库-->创建表
⑵oracle创建数据库的过程是:创建一个表空间-->创建一个用户-->由用户去创建表
3、所以oracle数据库和其他数据库是有不同之处的。可以这样理解,oracle是只有一个数据库,是一个大的数据库,由用户来管理的
1、一个oracle的实例由一系列的后台进程和内存结构组成。一个数据库可以有多个实例(一般情况下只会用到一个实例)
2、实例是访问Oracle数据库所需的一部分计算机内存和辅助处理后台进程,是由进程和这些进程所使用的内存(SGA)所构成一个集合,其实就是用来访问和使用数据库的一个进程,只存在于内存中,就像Java中new出来的实例对象一样
注:Orcal数据库正常工作时只会用到下面两个进程,由于Oracle数据库比较大,因此如果是自己学习用的话,可以把这两个进程设置为手动启动(不开机自动启动),那样有利于电脑的性能。需要用到Oracle时把这两个进程打开就好了。下面第二个进程(有ORCL的就是Oracle数据库的实例进程)
1、数据文件是数据库的物理存储单位
2、oracle的数据库的数据存储在表空间中,而真正是存储在一个或多个数据文件中。而一个表空间可以由一个或者多个数据文件组成,而一个数据文件只能属于一个表空间
3、一旦数据文件被放入一个表空间过后,就不能删除这个数据文件。如果要删除某个数据文件,则必须删除其所属的表空间
1、表空间是oracle对物理数据库上相关数据文件的逻辑映射(表空间是一个逻辑概念)
2、Oracle是通过表空间来存储物理表的
⑴一个数据库实例可以有N个表空间
⑵每个数据库至少有一个表空间(system表空间)
⑶一个表空间只能属于一个数据库
⑷一个表空间下可以有N张表。有了数据库,就可以创建表空间
⑸每个表空间由一个或者多个文件组成,这些文件就是数据文件
⑹一个数据文件只能属于一个表空间
4、空间分为:永久表空间、临时表空间、UNDO表空间(存放被修改之前的数据)
⑴永久表空间:存放数据库永久的数据(表,视图等)
⑵临时表空间:存放数据库操作中中间执行的过程,执行结束后释放掉
⑶undo表空间:存储数据被修改前的数据
1、用户是在实例下建立的。不同实例中可以建相同名字的用户
2、表的数据,是由用户放入某一个表空间的,而这个表空间会随机把这些表数据放到一个或多个数据文件DBF中
3、oracle是由用户和表空间对数据进行管理和存储的。但是表数据不是由表空间去查询的,而是由用户去查询的。因为不同用户可以在同一个表空间建立相同名字的表
4、Oracle中,一个数据库拥有多个实例,一个实例可以拥有多个用户,而一个用户可以拥有多个表空间(注意表空间多个用户可以交叉使用,但是前提是要有权限!)
注:
安装完Oracle后,它会自动的生成一些实例、用户和表空间,并在对应的表空间中生成一些自带的表(自动关联用户与表空间)。这些默认的表我们一般是用不到的,因此一般下我们需要自己创建用户、表空间、表来存放我们的数据,不然我们自己的数据(表)与自带的表放一起的话,就不怎么方便了
注:
1、oracle只有一个数据库,是一个大的数据库
⑴一个数据库下面有一个或多个实例(通常我们只用一个实例)
2、一个实例下面可以有一个或多个用户;一个实例下面可以有一个或多个表空间
3、表空间是有一个或多个数据文件组成
⑴数据文件格式为dbf或ora
4、我们在存储数据时我们是通过用户(USER)来存储的,存储在数据文件中
⑴数据是存到数据文件中的,但是我们又不能直接操作数据文件,因此是通过用户操作表空间来进行数据的增删改查的
5、用户与表空间的对应关系:用户和表空间都可以存在多个,那我们在进行数据的增删改查时,是怎么来确定该用户操作的表空间是正确的呢
⑴每一个用户都有一个默认的表空间:在安装好Oracle数据库后,会提供一些默认的用户和表空间,并且这些用户和表空间之间的关系是已经一一帮你对应好了的
⑵一个用户可以拥有一个或多个表空间
①一个用户下有多个表空间:如上图中用户1(蓝色线)。即用户1可以操作表空间1或表空间2
②一个用户下只有一个表空间:如上图中用户1和用户N(橙色和黄色线)。用户1和用户2操作的是两个表空间,它们互不干扰(平常用到最多的就是这种)
③用户和表空间的关系:一个用户有一个默认的表空间,一个表空间可以为多个用户作为默认表空间,用户和用户之间的数据是隔离,数据不会混
注:
1、MySql中最上层的是用户:比如安装完后会提供一个root用户
2、一个用户下有一个或多个数据库
driver:com.mysql.jdbc.Driver
url:jdbc:mysql://localhost:3306:[databaseName]
username:root
password:root
注:
1、上面url中的"databaseName"是数据库名,它相当于是一个变量,改变它来连到不同的数据库
2、即我们在连接Mysql数据库时,我们只需要改变所连url中的数据库名字就可以连到不同的数据库中了
Oracle模型前面有介绍了,这里就不重复了
driver: oracle.jdbc.OracleDriver
url: jdbc:oracle:thin:@localhost:1521:orcl
username: zhangsan
password: zhangsan
注:
1、上面url中的"orcl"是实例名,由于一般情况下都只会使用到一个实例,因此这个是不怎么变的(实例也可以自己创建)
2、即,在Oracle中我们需要连到不同的"库"中时需要改变的是所使用的用户(username和password)
1、oracle中用户的概念相当于mysql中的database的概念
⑴oracle中只有一个数据库、但是有多个用户和表空间。用户与表空间之间存在对应关系。因此可以使用不同的用户来连到不同的表空间
⑵oracle中:用户—>表空间—>表
2、MySQL是一个以用户为中心的概念,一个用户下,拥有多个数据库,一个数据库下拥有多个数据库表
3、Oracle中,一个数据库可以拥有多个实例,一个实例可以拥有多个用户,而一个用户可以拥有多个表空间
⑴注意表空间多个用户可以交叉使用,但是前提是要有权限!
4、当然这个只是说概念上的区别,它们两个在功能上就有更多的区别了
命令:sqlplus 用户名/密码 [as sysdba]
说明:如果是超级管理员用户,需要在"用户名/密码"后面加上"as sysdba"。如果不是管理员账号,就不用加"as sysdba"了
命令:show user
命令:conn 用户名/密码 [as sysdba]
说明:在登录的状态下切换用户
命令:select * from tab;
注:
从这里就可以看出不同用户下的表是不一样的:不同用户对应不同的表空间,不同的表空间下的表肯定不一样了
1、在安装Oracle数据库时其中有一步是要我们解锁一些用户以及设置其密码。如果在这一步骤中我们忘记解锁一些用户或忘记修改密码了,那么我们就可以使用下面的命令来解锁用户以及修改其密码
命令:
⑴解锁用户:alter user 用户名 account unlock;
⑵修改密码:alter user 用户名 identified by 新密码;
想要操作数据库,首先需要创建用户并给用户授予权限。在创建用户时需要指定表空间并指定用户在表空间中能够使用的大小。因此,想要创建用户,首先需要创建数据库表空间
1、以用户system连接数据库,密码为你安装数据库时设置全局数据库的窗口设置的管理口令,SYSTEM、SYS、SYSMAN、DBSNMP的初始密码都是这个密码(未修改时)
命令: create tablespace 表间名 datafile 表空间路径 size 表空间大小
⑴表空间路径包含:数据文件名,即前面介绍的".dbf"等文件
⑵数据文件名传入名字即可,会自动创建这个名字。但路径必须实际存在
⑶创建表空间时一定要传入"数据文件名",且数据文件名不能重复,不然会一直提示文件已存在
2、CREATE TABLESPACE语句可以用来创建3种表空间:
⑴永久表空间
⑵临时表空间
⑶撤消表空间
例7_2:
CREATE TABLESPACE tbs_perm_02
DATAFILE 'D:\Oracle\OracleTable\tbs_perm_02.dbf'
SIZE 10M
REUSE
AUTOEXTEND ON NEXT 10M MAXSIZE 200M;
这个CREATE TABLESPACE语句创建一个名为tbs_perm_02的永久表空间,其中有一个名为tbs_perm_02.dbf的数据文件。
创建一个永久表空间的CREATE TABLESPACE语句,当需要更多空间时将会扩展它
建好tablespace后就可以建用户了
命令: create user 用户名 identified by 密码 default tablespace 表空间名;
将用户与表空间关联起来
1、接着授权给新建的用户
2、命令:
⑴GRANT CONNECT,RESOURCE TO 用户名;
⑵GRANT DBA TO 用户名;
3、oracle为兼容以前版本,提供三种标准角色(role):connect/resource和dba
⑴connect role(连接角色)
①临时用户,特指不需要建表的用户,通常只赋予他们connect role
②connect是使用oracle简单权限,这种权限只对其他用户的表有访问权限,包括select/insert/update和delete等。
③拥有connect role 的用户还能够创建表、视图、序列(sequence)、簇(cluster)、同义词(synonym)、回话(session)和其他 数据的链(link)
⑵resource role(资源角色)
①更可靠和正式的数据库用户可以授予resource role。
②resource提供给用户另外的权限以创建他们自己的表、序列、过程(procedure)、触发器(trigger)、索引(index)和簇(cluster)。
⑶dba role(数据库管理员角色)
①dba role拥有所有的系统权限
②包括无限制的空间限额和给其他用户授予各种权限的能力。system由dba用户拥有
例9_1:
删除表空间有两种方式
⑴只删除表空间,但数据文件还在:drop tablespace 表空间名;
⑵表空间和数据文件一起删除:DROP TABLESPACE 表空间名 INCLUDING contents and datafiles;
命令:lsnrctl status
命令:lsnrctl start
命令:net start OracleService服务名(实例名)
查看当前用户使用的表空间情况,使用命令select * from user_users即可,返回结果中username标识用户名,default_tablespace表示默认的表空间。
查看oracle下面所有的表空间,使用命令select * from Dba_Tablespaces即可,呈现的信息包括表空间名称以及表空间的大小等。