一、创建数据库
一般来说,在安装Oracle时会提示自动创建一个数据库,当然也可以在安装完成后,自己在动手创建一个数据库。
对于Oracle而言,创建数据库有两种方法,一种是通过图形界面,也就是Oracle数据库中的配置助手DBCA完成;另一种是在命令环境下使用CREATE DATABASE命令。
二、用SQL语言创建表空间
表空间是Oracle特殊的发明。从物理上讲,表空间由一个或多个数据文件组成;从逻辑上讲,是数据库中最大的逻辑单位,可进一步划分为小的逻辑存储单元。一个Oracle数据库至少包含一个表空间。
1、数据库存储结构的组成
数据库主要用于存储和检索相关信息。Oracle数据库包含逻辑结构和物理结构。数据库的物理结构包含数据库中的一组操作系统文件。数据库的逻辑结构是指数据库创建之后形成的逻辑概念之间的关系。表空间就是数据库逻辑组件。一个表空间向上可以存放各种应用对象,如表,索引;向下由多个数据库文件组成。
表空间在Oracle 11g中被分为以下3类:
(1)永久性表空间:一般保存基表、视图、过程和索引等数据。SYSTEM、SYSAUX、USERS、EXALPLE表空间是默认安装的。
(2)临时性表空间:只用于保存系统中短期活动的数据,如排序数据等。
(3)撤销表空间:用来帮助回退未提交的事务数据,已提交了的数据在这里是可以恢复的。
一般不需要建临时和和撤销表空间,除非把它们转移到其他磁盘中以提高性能。
表空间的目的:
(1)对不同用户分配不同的表空间,对不同的模式对象分配不同的表空间,方便对用户操作、对模式对象的管理。
(2)可以将不同的数据库文件创建到不同的磁盘,有利于管理磁盘空间,有助于提高I/O性能,有利于备份和恢复数据等。
一般在完成Oracle系统的安装并创建Oracle实例后,Oracle系统自动建立多个表空间。
Oracle 11g版本默认创建的主要表空间:
(1)SYSTEM表空间:用于存放Oracle系统内部表和数据字典的数据,如表名、列名、用户名等。不建议将用户创建的表、索引等对象存放到SYSTEM表空间中。
(2)SYSAUX表空间:用于存放Oracle系统内部的常用样例用户的对象。一般不存储用户的数据,由Oracle系统内部自动维护。
(3)撤销表空间:用于存放撤销信息的表空间
当我们对数据库表的数据进行增加、删除、修改时,Oracle系统自动使用撤销表空间来临时存放修改前的数据。当所做的修改操作完成并提交后,Oracle系统可根据需要保留修改前数据时间长短来释放表空间的部分空间。一般在创建Oracle实例后,Oracle会自动创建一个名为UNDOTBS1的撤销表空间。
(4)USERS表空间:Oracle建议用户使用的表空间,可以在这个表空间上创建各种对象,如创建表、索引等、Oracle的基本样例用户SCOTT的对象就存放在USERS表空间中。
(5)TEMP表空间:用于存放临时数据的特殊表空间。例如:当操作中需要进行排序时,Oracle系统就将排序的数据临时放到该表空间内。排序处理完成后即可释放排序数据所占用的空间,因此称之为临时表空间。
2、SQL语言介绍
SQL语言是高级的结构化查询语言;
用户使用SQL语句进行数操操作时。只需要提出“做什么”,而不必指名“怎么做”,具体的执行过程由系统自动完成,大大减轻了用户负担;
是沟通数据库服务器和客户端的重要工具;
用于存取数据以及查询、更新和管理关系型数据库系统。
经过多年的发展,SQL语言已经成为关系型数据库的标准语言。SQL支持如下类别的命令:
>>>数据定义语言(DDL):CREATE(创建)、ALTER(更改)、DROP(删除)命令。
>>>数据操作语言(DML):INSERT(插入)、SELECT(选择)、DELETE(删除)、UPDATE(更新)命令。
>>>数据控制语言(DCL):GRANT(授予)、REVOKE(回收)命令。
>>>事务控制语言(TCL):COMMIT(提交)、SAVEPOINT(保存点)、ROLLBACK(回滚)命令。
3、创建表空间
语法:
CREATE TABLESPACE tablespaceName--表空间名称
DATAFILE 'fileName'--指定组成表空间的一个或多个数据文件,当有多个数据文件时使用逗号分隔
SIZE INTEGER K/M--指定文件的大小,用K表示千字节大小,用M指定兆字节大小
AUTOEXTEND OFF/ON;--启用或禁用数据文件的自动扩展,设置为OFF时很容易造成表空间剩余容量为0的情况,造成数据不能存放到数据库中
创建完表空间后,可以对表空间进行相应的管理,主要包括以下操作:
(1)调整表空间大小
ALTER DATABASE DATAFILE '<数据文件全路径>' RESIZE <新的大小>;
(2)改变表空间的读写状态
ALTER TABLESPACE <表空间名> READ WRITE;--使表空间可读写
ALTER TABLESPACE <表空间名> READ ONLY;--使表空间为只读
(3)删除表空间
ALTER TABLESPACE tablespaceName;
三、创建用户并分配权限
当创建一个新数据库时,Oracle将创建一些默认数据库用户,如SYS,SYSTEM,SCOTT等用户。SYS和SYSTEM用户都是Oracle的系统用户,而SCOTT用户是Oracle数据库的一个测试账户,里面包含一些测试样例表。
(1)SYS
SYS用户是Oracle中的一个超级用户。数据库中所有数据字典和视图都存储在SYS模式中。数据字典存储了用来管理数据库对象的所有信息,是Oracle数据库中非常重要的系统信息。
SY用户主要用来维护系统信息和管理实例。SYS用户只能以SYSOPER或SYSDBA角色登录系统。
(2)SYSTEM
SYSTEM用户是Oracle中默认的系统管理员,拥有DBA权限。该用户拥有Oracle管理工具使用的内部表和视图。通常通过SYSTEM用户管理Oracle数据库的用户,权限和存储等。
不建议在SYSTEM模式中创建用户表。SYSTEM用户不能以SYSOPER和SYSDBA角色登录系统,只能以默认方式登录。
(3)SCOTT
SCOTT用户是Oracle数据库的一个示范账户,一般在数据库安装时创建。SCOTT用户模式包含4个示范表。使用USER表空间存储模式对象。
1、创建用户
通常情况下,出于安全考虑,对于不同的数据表需要不同的访问权限,此时,就需要创建不同的用户。Oracle中的CREATE USER命令用于创建新用户。每个用户都有一个默认表空间和一个临时表空间。如果没有指定,Oracle就将USER设为默认表空间,将TEMP设为临时表空间。在Oracle 11g 版本中,用户可以修改默认表空间,一旦修改了默认表空间,则创建用户时如果没有指定表空间,则修改后的表空间为用户默认表空间。
CREATE USER zhang--用户名
IDENTIFIED BY 123456--密码
DEFAULT TABLESPACE tablespaceName1--设置默认表空间
TEMPORARY TABLESPACE tablespaceName2; --设置临时表空间
创建新口令:
ALTER zhang IDENTIFIED BY 654321;--更改登录密码
删除一个用户时,若用户模式中包含模式对象,则所有这些对象也将立即删除。Oracle中的DROP USER命令可用于删除用户,当用户拥有模式对象时必须使用CASCADE选项以删除模式对象。以下代码演示了如何删除用户:
DROP USER zhang CASCADE;--删除表空间和其中的模式对象
2、数据库权限管理
权限是用户对一项功能的执行权利。在Oracle中,根据系统管理方式的不同。权限分为系统权限与对象权限两类。
(1)系统权限
系统权限是指是否被授权用户可以连接在数据库上,在数据库中可以进行哪些系统操作;
系统权限是在数据库中执行某种系统级别的操作,或者针对某一类的对象执行某种操作的权利。例如,在数据库中创建表空间的权利,在数据库中创建表的权利,这些都属于系统权限。
常见系统权限如下:
CREATE SESSION:连接到数据库
CREATE TABLE:创建表
CREATE VIEW:创建视图
CREATE SEQUENSE:创建序列
(2)对象权限
对象权限是指用户对具体的数据库中的对象所拥有的权限。对象权限是针对某个特定的模式对象执行操作的权利。只能针对模式对象来设置和管理对象权限。包括数据库中的表、视图、序列、存储过程、存储函数等。例如,对某个表的数据进行操作,对存储过程的执行操作等。
Oracle数据库用户有一下两种途径获得权限:
(1)系统管理员直接向用户授予权限;
(2)管理员将权限授予角色,然后再将角色授予一个或多个用户。
使用角色能更加方便和高效地对权限进行管理,所以数据库管理员应该习惯于使用角色向用户授予权限,而不是直接向用户授予权限。在Oracle中数据库系统中预定义了很多的角色,其中常用的主要有CONNECT角色和RESOURSE角色、DBA角色等。一般程序员使用的用户只要授予CONNECT和RESOURSE两个角色即可。DBA角色具有所有的系统权限,并且可以给其他用户、角色授权。
授予权限语法:
GRANT 权限|角色 TO 用户名;
撤销权限语法:
REVOKE 权限|角色 FROM 用户名;