oracle入门(1)

oracle创建表空间及用户

oracle的学习对于像我这样的新手,还是要一步一步来,先把基本概念搞清楚。

我觉得oracle学习可以分为几个部分:
系统基本使用
系统调优
sql语句编写
sql调优
PL/SQL程序开发

以下讨论都是在单主机模式下进行。欢迎讨论指正。

问题1:什么是实例?
一个oracle软件安装完之后,它有一个默认的实例(instance),同时用户还可以在oracle中增加实例。
实例是一个内存结构(SGA+后台进程),每个实例有一组自己的进程组,用来管理运行实例。实例中包含了表空间、用户账户。

实例和实例之间是相互独立的。在逻辑上每个实例有自己的表空间、自己的用户。在物理上表空间内表的结构、数据和用户信息,存储在磁盘的数据文件和用户文件中。

一个实例只能打开一个数据库。

问题2:什么是表空间?
表空间是oracle中的一种逻辑概念。用来分类用户、控制用户表的大小。
表空间相当于一个筐,用户的数据文件相当于一个个货物,货物的大小不能超过筐的大小。

问题3:平时sql操作时说oracle里的一个数据库是指什么,一个实例?一个表空间?一个用户?
通俗的理解可以是:在一个实例中,某个表空间里的,属于某个用户的,所有的表组成的集合。是从用户的纬度来看的。

比较mysql和oracle创建数据库的过程。
mysql中:
创建用户
创建数据库(create database命令)
授权用户对数据库的权限
创建表…

oracle中:
创建用户
创建表空间
指定用户的表空间
指定用户空间配额
赋予用户创建数据库对象的权限
创建表…

问题4:在解释实例时说“一个实例只能打开一个数据库”和问题3中说的数据库定义有什么区别?
是两个不同的概念,实例打开数据库是指实例在启动时挂载的数据库mount database。
这个挂载的数据库是一堆在磁盘上的物理文件,包括了实例启动时需要的(datafile、redo log file、control file、archive log file、parameter file)等文件。
问题3中讲的数据库,是指sql语句操作的对象。

总结以上问题:

创建表空间及用户方法如下。

用管理员账户登录。

创建用户:

create user wangyi identified by 123456;

创建表空间:

create tablespace users1 datafile '/u01/app/oracle/oradata/XE/users1.dbf' size 200m autoextend on next 32m maxsize 1024m extent management local;

//users1表空间初始大小200m,每次增加32m,最大1024m。

指定wangyi用户的表空间为users1:

alter user wangyi default tablespace users1 temporary tablespace temp;

//指定wangyi用户默认表空间users1,临时表空间temp。

指定wangyi用户使用表空间的配额:

alter user wangyi quota unlimited on users1;

赋予用户权限:

grant create session, create table, create view, create any index to wangyi;

下一篇讨论下oracle的文件系统。