【Oracle教程二】—— 基础入门
一、Oracle简介
Oracle数据库是Oracle(甲骨文)公司的核心产品,适合于大型项目的开发;银行、电信、电商、金融等各领域都大量使用Oracle数据库。
Oracle数据库是一种对象关系型数据库,在关系型数据库的基础上,引入了一些面向对象的特性。
Oracle数据库的产品可以免费下载,其服务是收费的,也就是该数据库用于商业目的时,必须取得Oracle的授权。
Oracle出现有30年时间,经历了很多版本,目前最新的版本是12c。11g版本是目前比较稳定,很多企业也在使用,所以我们从此版本入门学习,后面的版本基本也不会有太大区别。
PS:MySQL是Java开发常用的数据库,MySQL的母公司08年被SUN公司收购,而SUN公司09年被Oracle收购,所以MySQL也是Oracle旗下的产品。
PS:SQL Server数据库与Oracle数据库之间最大的区别要属表空间设计。Oracle数据库被划分成称作为表空间的逻辑区域——形成Oracle数据库的逻辑结构。一个Oracle数据库能够有一个或多个表空间,而一个表空间则对应着一个或多个物理的数据库文件。表空间是Oracle数据库恢复的最小单位,容纳着许多数据库实体,如表、视图、索引、聚簇、回退段和临时段等。
二、Oracle数据库结构
- oracle实例
数据库启动时,系统首先在服务器内存中分配“系统全局区(SGA)”,构成Oracle的进程结构;
然后启动若干个常驻内存的操作系统进程,构成oracle的进程结构,内存区域和后台进程合称为一个oracle实例。
必须的后台进程有:PMON、SMON、DBWR、LGWR、RECO、CKPT
查看正在运行的后台进程语句:
select * from v$bgprocess where paddr <> '00';
- 每个数据库都由数据文件、控制文件、日志文件组成,至少有1个控制文件和2个重做日志文件。
- 表空间(一系列数据文件的集合,数据库中的基本逻辑单元)。
- 段(在表空间内细分的一种逻辑结构,用于保证高效率运行)。
- 区(因段的空间不可预知而陆续分配的一些不连续的小块称为区)。
- 数据块(将区划分为大小一致的数据块,以方便加载到内存处理,它是oracle中最小的读写单位)。
三、常用工具
打开菜单栏,找到Oracle
1、配置工具 net manager
用于安装完成以后,在使用的过程中需要调整oracle侦听和连接参数。
2、网络配置向导 net Configuration Assistant
用于配置新的侦听和本地服务名。
3、管理工具(OEM 企业管理器 http://localhost:1158/em )
4、查询工具(SQL Plus )
有三种用户界面:
- web界面: http://localhost:5560/isqlplus (端口号注意是安装成功时最后一个界面提供的)
- 控制台界面:在DOS窗口中输入sqlplus.exe回车
- 图形界面:在oracle菜单中点击:应用程序开发->SQL Plus
常用登录命令: sys/*** as sysdba
//数据库管理员登录scott/***
//使用scott登录conn / as sysdba
//切换成数据库管理员
5、常用命令
- 打开cmd命令窗口,输入sqlplus scott/***(密码)登陆到Oracle,动手学习更高效!
- 如果还没安装Oracle数据库请看上一篇文章!
-- 注释
remark 注释
exit 退出
set LineSize n 设置每行字符数,n为字符数,默认是80
set PageSize n 设置每页行数,n为行数
edit 修改上一行中的代码
spool c:/lesson1.txt 用spool off结束保存数据
start 运行sql文件或txt文件,用@也可
desc 表名 查看表结构
show User 查看当前用户
四、表空间管理
1、表空间的理解
如果用过MySQL,SQL Server,那么初学Oracle肯定会有很多迷惑,第一个可能就是表空间,那么在学习表空间之前不妨先来理清楚表空间到底是什么。
- Oracle数据库被划分成称作为表空间的逻辑区域——形成Oracle数据库的逻辑结构。一个Oracle数据库能够有一个或多个表空间,而一个表空间则对应着一个或多个物理的数据库文件。表空间是Oracle数据库恢复的最小单位,容纳着许多数据库实体,如表、视图、索引、聚簇、回退段和临时段等。
- 在MySQL中,我们可以创建多个数据库,可以在各个数据库上面创建不同的表,而在Oracle中就不能这样操作,Oracle新增了表空间和用户的概念,表空间是虚拟的,并且只有一个数据库,为了方便维护,一般一个表空间上只创建一个用户。
- 为了更容易理解,我们可以拿MySQL来类比学习,Oracle先创建表空间,这里的用户名类似于mysql的数据库名,Oracle的用户名.表名等价于mysql的数据库名.表名;因此在写兼容mysql和Oracle的语句时可以用到。
- Oracle安装完数据库的一般流程:先建表空间(分区)–>再建用户(分配相应的表空间和用户权限)–>登陆用户,建表。
2、查看
- 查看所有表对象:
select table_name from all_tables;
select object_name from all_objects where object_type='TABLE';
- 查看所有表空间:
select * from dba_tablespaces;
3、创建表空间
Create TableSpace <表空间名称>
DataFile '表空间数据文件路径/xxx.dbf'
size [表空间大小n K|M]
[autoextend off|on];
4、修改表空间
- 扩展表空间数据文件大小
Alter database
DataFile 'e:/xxx/xxx.dbf'
reSize 10M;
- 为表空间添加数据文件
Alter tablespace 表空间名
add DataFile '新文件路径和名称'
size 5M;
- 修改数据文件允许自动扩展大小且指定最大值
Alter database
datafile 'e:/xxx/xxx.dbf'
autoextend on next 15M maxsize 20M;
- 给表空间重命名
Alter tablespace 表空间名
ReName to 新名称;
- 使表空间脱机
Alter tablespace 表空间名
offLine temporary;
- 使表空间联机
Alter tablespace 表空间名
onLine;
- 删除表空间(需要以管理员登录)
Drop Tablespace 表空间名;
五、权限、角色和用户
1、oracle对实施控制的对象有:系统操作的功能和用户创建的数据或对象。(即:系统权限、对象权限)
2、一组权限的集合,称为角色。作用是方便批量地给用户授权。
3、预置用户
- Sys(用于执行管理任务的一个帐户,即DBA)
- System(同sys)
- Scott(演示数据库的所有者帐户)
4、创建新用户:
- 查看所有用户和密码: 以sysdba登录
select * from dba_users
Create User <用户名>
identified by <密码>
default tableSpace 表空间名称
temporary tablespace 临时表空间名称;
5、给用户授予连接的角色
Grant connect to 用户名;
6、给用户授予使用资源的权限
Grant resource to 用户名;
7、查看某表所属的表空间
select t.table_name, t.tablespace_name from user_tables t
8、将指定表的所有权限授予指定用户
Grant all on 表名 to 用户名
9、收回指定用户对指定表的所有权限
Revoke all on 表名 from 用户名
10、删除用户
Drop user 用户名; (需要以管理员登录)
11、用户连接数据库以后,所有创建的对象(表,视图,过程,索引等)形成的集合,称为模式。
12、B用户在使用A用户所创建的对象时,需要A用户授权。