Java基础——Oracle(三)
一、Oracle内部结构
1.表空间
表空间是数据库的逻辑划分,一个表空间只属于一个数据库,每个表空间由一个或多个数据文件组成,表空间中其他的逻辑结构的数据存储在这些数据文件中,一般oracle系统安装后,会自动建立多个表空间,
oarcle11g 的主要表空间 //附(10 g 也是一样的)
1).example :示例表空间,用于存放示例数据库的方案对象信息及其培训资料
2).system: 是系统表空间,用于存放oracle系统内部表和数据字典的数据,如表名,列名,用户名等,一般不赞成将用户创建的表,索引等存放在system表空间中
3).sysaux: 是辅助系统表空间,主要存放oracle系统内部的常用样例用户的对象,如存放cmr用户的表和索引等。从而减少系统表空间的负苛,它一般不存诸用户的数据,由oracle系统内部自动维护
4).undotbsi: 是重做表空间,存放数据库中有关重做的相关信息数据,当用户对数据表进行修改(insert,update,delete)。oracle系统自动用重做表空间来临时存放修改前的数据,当所做的修改完成并提交后,系统根据需要保留,修改前数据的时间长短来释放重做表空间的部分空间。
5).users: 是用户表空间,存放永久性用户对象的数据和私有信息,因此也称为数据表空间,每个数据库都应该有一个用户表空间,以便在创建用户时将其分配给用户。
除了oracle系统默认创建的表空间以外,用户可以根据应用系统的规模及其所要存放的对象的情况创建多个表空间,以区分用户数据和系统数据。
/* 以下略
2.表
存放用户数据的对象
3.约束条件
可以为表的一个列创建约束条件(Constraint)
1).主键约束
2).默认约束
3).检查
4).唯一
5).外键
4.分区 (Partition)
在非常大的数据库中,可以通过把一个大表的数据分成多个小表来简化数据库的管理,这些小表叫做分区,除了对表分区外,还可以对索引进行分区,分区不仅简化了数据库的管理,还改善了其应用性能,在oracle中,能够细分分区,创建子分区,例如,可以根据一组值分割一个表,然后再根据另外一种方法分割分区。
5.索引
为了能够找到数据,表中的每一行都要用一个RowID表标识,RowID告诉数据库这一行的准确位置,包扩所在的文件,该文件中的块和该块中行地址。
6.用户
用户账号虽然不是数据库中的一个物理结构,但它于数据库中的对象有着重要的关系,这是因为用户拥有数据对象,例如sys用户拥有数据字典表,用户system拥有访问数据字典表的视图
为数据库创建对象必须(例如表)必须在用户账号下进行,可以对每一个用户账号进行自定义,以便将一个特定的表空间做为它的默认表空间
7.方案
用户账号拥有的对象集称为用户的方案(Schmea)
8.同义词
为了给不同的用户使用数据库对象时提供一个简单的唯一标识数据库对象的名称,可以为数据库对象创建同义词,
9.权限及角色
10.段,盘区和数据块
依照不同的数据处理性质,可能需要在数据表空间内划分出不同的区域,以存放不同数据,这些区域称为段(Segment),例如,存放数据的区域称为"数据区段",存放索引的称为"索引区段",由于段是一个物理实体,所以必须它把分配到数据库的一个表空间中(放在表空间的一个数据文件中),而段其实就是由许多盘区(Exctent)给合而成的,当段中的空间用完时,该段就获得另外的盘区。数据块(Data Block) 是最小的存储单元,Oracle 数据库是操作系统块的倍数。
二、 Oracle外部结构
1.数据文件
每个oracle数据库都有一个或多个数据文件(dataFile),而一个数据文件只能属于一个表空间,数据文件创建后可以改变大小,创建新的表空间要创建新的数据文件,数据文件一旦加入表空间,就不能从这个表空间移走,也不能和其他表空间发生联系
2.重做日志文件 (Redo Log Files)
oracle保存所有数据库事务的日志,这些事务被记录在联机日志文件(OnLine Rodo Log FIle)中,数据破坏了可以用这些日志来恢复。一个数据库至少需要两个重做志文件,oracle以循环的形式向日志文件写入,第一个日志被添满后,就向第二个写入,然后依次类推,所有日志文件被写满后,又回到第一个,用新的事务的数据进行重写。
3.控制文件 (Control Files)
用以记录与描述数据库的外部结构,它包括
1) oracle数据库名称与建立时间
2) 数据文件与重置日志文件名称及所在位置
3) 日志文件记录序列码( log sequence Nmuber)
每当数据库被激活时,oracle会在实例激活后立刻读取控制文件内容,待所有数据库外部结构文件的在信息都收集完比,数据库才会启动,为避兔控制文件毁坏导致数据库系统停止,建议用户至少配置两个控制文件,并存放在不同的磁盘上。
三、Oracle 中的用户(这里是学习的重点)
--- sys 用户
超级用户,最有最高权限,具有sysdba 角色,数据字典的拥有者,超级权限拥有者(SYSDBA),它具有 createDatabase 权限(只有它有!)
初始密码是 change_on_install,此用户不能删除。
--- system 用户
管理操作员,权限非常大,具有sysopert 角色,但没有 createDatabase 权限
它默认的密码是 manager ,此用户不能被删除。
--- scott 用户
含有样例表 EMP 与 DEPT ,可以修改密码,用户可以被删除,在产品环境下,建议删除或锁定,它是一个普通用户。
默认密码是 tiget,默认是锁定的,可以将其解锁后使用。
解锁方式 :
使用 高权限用户登录, alter user scott account unlock;
与scott平级的还有:ADAMS/WOOD, JONES/STEEL, CLARK/CLOTH and BLAKE/PAPER.
--- outln用户
优化计划的存储大纲用户,密码是outln
建议创建后立即修改密码,此用户不能被删除。
--- HR/HR用户
(Human Resources), OE/OE (Order Entry), SH/SH (Sales History).
实验、测试用户,含有例表EMPLOYEES与DEPARTMENTS
可以修改密码,用户可以被删除,在产品环境建议删除或锁定。
--- DBSNMP用户
密码:DBSNMP
数据库中用于智能代理(Intelligent Agent)的用户,用来监控和管理数据库相关性能的用户,如果停止该用户,则无法提取相关的数据信息;可以改变密码,需要放置新密码到snmp_rw.ora文件,如果不需要Intelligent Agents,可以删除。
--- SYSMAN用户
是Oracle数据库中用于EM管理的用户,如果你不用该用户,也可以删除。(EM:enterprise manage 网页形式的 图形化 管理方式,类似SqlServer的企业管理器可以对oracle进行管理、优化等)
四、初始用户和表空间的创建
打开sqlplus
创建表空间,创建一个用户
1) 先在磁盘上创建目录 f:/my_oracle_data2
2) 创建临时表空间
SQL> create temporary tablespace user_temp //临时表空间的名字(user_temp)是自己取的
tempfile 'f:\\my_oracle_data2\user_temp.dbf'
size 50m //初始大小
autoextend on //设置自增
next 50m maxsize 20480m //设置临时表空间 每次自增50兆 最大值是20480兆
extent management local; //表示表空间采用本地表空间管理 ,与之对应的是数据字典表空间管理(缺点多,9i以后废弃)
3) 创建表空间
create tablespace user_data2
logging
datafile 'f:\\my_oracle_data2\user_data.dbf'
size 50m
autoextend on
next 50m maxsize 20480m
extent management local;
4) 创建用户,并指定了表空间
create user sa identified by "sa" default tablespace user_data2 temporary tablespace user_temp;
//创建用户的密码 指定用户是哪个表空间的 用户默认的临时表空
这里如果用这个用户登录 conn sa/sa 将出现如下错误
ORA-01045: user SA lacks CREATE SESSION privilege; logon denied 原因是没权限
授权 grant connect,resource to sa;
最后将会在指定的目录里找到我们创建的表空间:
附注: connect,resource 是角色名称,有了它们可以连接数据库,并在表空间中建表了
附:查询所有的表空间和数据文件对应情况
select * from DBA_DATA_FILES
输出如下:
SQL> conn system/aaaaaaaa as sysdba
已连接。
SQL> select * from DBA_DATA_FILES; FILE_NAME
--------------------------------------------------------------------------------
FILE_ID TABLESPACE_NAME BYTES BLOCKS STATUS
---------- ------------------------------ ---------- ---------- ---------
RELATIVE_FNO AUT MAXBYTES MAXBLOCKS INCREMENT_BY USER_BYTES USER_BLOCKS
------------ --- ---------- ---------- ------------ ---------- -----------
ONLINE_
-------
F:\ORACLE\PRODUCT\10.2.\ORADATA\ORCL\USERS01.DBF
USERS AVAILABLE
YES 3.4360E+10
ONLINE FILE_NAME
--------------------------------------------------------------------------------
FILE_ID TABLESPACE_NAME BYTES BLOCKS STATUS
---------- ------------------------------ ---------- ---------- ---------
RELATIVE_FNO AUT MAXBYTES MAXBLOCKS INCREMENT_BY USER_BYTES USER_BLOCKS
------------ --- ---------- ---------- ------------ ---------- -----------
ONLINE_
-------
F:\ORACLE\PRODUCT\10.2.\ORADATA\ORCL\SYSAUX01.DBF
SYSAUX AVAILABLE
YES 3.4360E+10
ONLINE FILE_NAME
--------------------------------------------------------------------------------
FILE_ID TABLESPACE_NAME BYTES BLOCKS STATUS
---------- ------------------------------ ---------- ---------- ---------
RELATIVE_FNO AUT MAXBYTES MAXBLOCKS INCREMENT_BY USER_BYTES USER_BLOCKS
------------ --- ---------- ---------- ------------ ---------- -----------
ONLINE_
-------
F:\ORACLE\PRODUCT\10.2.\ORADATA\ORCL\UNDOTBS01.DBF
UNDOTBS1 AVAILABLE
YES 3.4360E+10
ONLINE FILE_NAME
--------------------------------------------------------------------------------
FILE_ID TABLESPACE_NAME BYTES BLOCKS STATUS
---------- ------------------------------ ---------- ---------- ---------
RELATIVE_FNO AUT MAXBYTES MAXBLOCKS INCREMENT_BY USER_BYTES USER_BLOCKS
------------ --- ---------- ---------- ------------ ---------- -----------
ONLINE_
-------
F:\ORACLE\PRODUCT\10.2.\ORADATA\ORCL\SYSTEM01.DBF
SYSTEM AVAILABLE
YES 3.4360E+10
SYSTEM FILE_NAME
--------------------------------------------------------------------------------
FILE_ID TABLESPACE_NAME BYTES BLOCKS STATUS
---------- ------------------------------ ---------- ---------- ---------
RELATIVE_FNO AUT MAXBYTES MAXBLOCKS INCREMENT_BY USER_BYTES USER_BLOCKS
------------ --- ---------- ---------- ------------ ---------- -----------
ONLINE_
-------
F:\ORACLE\PRODUCT\10.2.\ORADATA\ORCL\EXAMPLE01.DBF
EXAMPLE AVAILABLE
YES 3.4360E+10
ONLINE FILE_NAME
--------------------------------------------------------------------------------
FILE_ID TABLESPACE_NAME BYTES BLOCKS STATUS
---------- ------------------------------ ---------- ---------- ---------
RELATIVE_FNO AUT MAXBYTES MAXBLOCKS INCREMENT_BY USER_BYTES USER_BLOCKS
------------ --- ---------- ---------- ------------ ---------- -----------
ONLINE_
-------
F:\MY_ORACLE_DATA\USER_DATA.DBF
USER_DATA AVAILABLE
YES 2.1475E+10
ONLINE FILE_NAME
--------------------------------------------------------------------------------
FILE_ID TABLESPACE_NAME BYTES BLOCKS STATUS
---------- ------------------------------ ---------- ---------- ---------
RELATIVE_FNO AUT MAXBYTES MAXBLOCKS INCREMENT_BY USER_BYTES USER_BLOCKS
------------ --- ---------- ---------- ------------ ---------- -----------
ONLINE_
-------
F:\MY_ORACLE_DATA2\USER_DATA.DBF
USER_DATA2 AVAILABLE
YES 2.1475E+10
ONLINE 已选择7行。 SQL>
Java基础——Oracle(三)的更多相关文章
- Java基础:三步学会Java Socket编程
Java基础:三步学会Java Socket编程 http://tech.163.com 2006-04-10 09:17:18 来源: java-cn 网友评论11 条 论坛 第一步 ...
- java 基础知识三 java变量
java 基础知识 三 变量 1.作用域 {} 包围起来的代码 称之为代码块,在块中声明的变量只能在块中使用 2.常量 就是固定不变的量,一旦被定义,它的值就不能再被改变. 3.变量 变量必须在程序 ...
- java基础(三章)
java基础(三章) 一.基本if结构 1.流程图 l 输入输出 l 判断和分支 l 流程线 1.1 简单的if条件判断 if(表达式){ //表 ...
- JAVA基础(三)—— 输入输出处理
JAVA基础(三)-- 输入输出处理 1 输入解析 //Scanner获取输入 import java.util.Scanner; Scanner s = new Scanner(System.in) ...
- Java实习生常规技术面试题每日十题Java基础(三)
目录 1.是否可以从一个static方法内部发出对非static方法的调用? 2.Integer与int的区别? 3.Overload和Override的区别.参数列表相同,返回值不同的方法,是否是重 ...
- java基础系列(三)---HashMap
java基础系列(三)---HashMap java基础系列 java基础系列(一)---String.StringBuffer.StringBuilder java基础系列(二)---Integer ...
- Java 基础(三)| IO流之使用 File 类的正确姿势
为跳槽面试做准备,今天开始进入 Java 基础的复习.希望基础不好的同学看完这篇文章,能掌握泛型,而基础好的同学权当复习,希望看完这篇文章能够起一点你的青涩记忆. 一.什么是 File 类? java ...
- JAVA基础第三章-类与对象、抽象类、接口
业内经常说的一句话是不要重复造轮子,但是有时候,只有自己造一个轮子了,才会深刻明白什么样的轮子适合山路,什么样的轮子适合平地! 我将会持续更新java基础知识,欢迎关注. 往期章节: JAVA基础第一 ...
- 逻辑运算符,if、swtch语句(java基础知识三)
1.逻辑运算符的基本用法 * A:逻辑运算符有哪些 &(逻辑与) |(逻辑或) !(逻辑非) ^(逻辑异或) &&(短路与) ||(短路或) * 注意事项: * a:逻辑运算符 ...
随机推荐
- Delphi - TDateTimePicker使用注意问题
TDateTimePicker使用时候,如果想获取到修改后的值,必须注Kind和time属性必须对应! 1,时间设置: treatmentTime1DTPicker.Kind := dtkTime; ...
- 优化版小程序canvas,增加失败逻辑,及完善文字
wxml <view class="shareBox" style="backgound:{{isShow ? '#000' : '#fff'}}" wx ...
- 杂七杂八的JavaScript
一.input 焦点定位 1.定位input:(this.$refs.searchInput as HTMLInputElement).focus(); 2.定位search,根据css选择器: ...
- so静态分析进阶练习——一个CreakeMe的分析思路
i春秋作家:HAI_ 原文来自:https://bbs.ichunqiu.com/thread-41371-1-1.html 说明 拿到一个CreakeMe,写一个分析思路.CreakMe主要是对.s ...
- Go语言数据类型
目录 基本数据类型说明 整型 浮点型 字符 字符类型本质探讨 布尔型 字符串 指针 值类型与引用类型 基本数据类型默认值 基本数据类型相互转换 注意事项 其他基本类型转string类型 string类 ...
- windows快速打开命令窗口方式[利刃篇]
windows当然是窗口界面操作了,谁有事没事去用什么命令行啊,但是当你要用的时候,也要会用才行哦. 打开命令行的方式小说一下: 1.开始 > 运行 > cmd , enter, ok ...
- Maven - 实例-6-聚合与继承
创建项目 xxx - 继承自testDep.PPP <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi= ...
- vue 去哪网项目 学习笔记(一)
启动项 mian.js 是整个项目的入口程序 定义局部组建 components 是定义的局部组建 template 渲染app里的内容 单文件组建 单文件组建是以vue 结尾的内容 app组建的内容 ...
- jquery 回车键实现表单提交
JQery http://jquery.cuishifeng.cn/keydown.html 键盘事件参考:1.keydown()keydown事件会在键盘按下时触发.2.keyup()keyup事件 ...
- 如何更优雅的在kubernetes平台下记录日志
背景 传统项目里面记录日志大多数都是将日志记录到日志文件,升级到分布式架构以后,日志开始由文件转移到elasticsearch(es)中来存储,达到集中管理.在kubernetes平台里面把日志记录到 ...