自己理解的oracle的概念
来源:互联网 发布:网络策划公司 编辑:程序博客网 时间:2024/06/10 02:40
1.一台oracle系统可以创建多个数据库,比如jessora和orcl
2.每个数据库由表空间支撑,一个数据库可以而且通常有多个表空间(如缺省的system/users/temp,自己创建的nms),引入表空间的概念可以理解为就是为了好管理
3.接下来建立用户,并给用户赋予缺省的表空间,当然了用户也可以访问他没权限的表空间,只不过要先授权
4.有了人(用户),有了地(表空间),接下来就可以开荒了(建表等等)
5.某个人能在地里干的事,就叫schema
以下引自网络:
有的人还是对schema的真正含义不太理解,现在我再次整理了一下,希望对大家有所帮助。
我们先来看一下他们的定义:
A schema is a collection of database objects (used by a user.).
Schema objects are the logical structures that directly refer to the database’s data.
A user is a name defined in the database that can connect to and access objects.
Schemas and users help database administrators manage database security.
从定义中我们可以看出schema为数据库对象的集合,为了区分各个集合,我们需要给这个集合起个名字,这些名字就是我们在企业管理器的方案下看到的许多类似用户名的节点,这些类似用户名的节点其实就是一个schema,schema里面包含了各种对象如tables, views, sequences, stored procedures, synonyms, indexes, clusters, and database links。
一个用户一般对应一个schema,该用户的schema名等于用户名,并作为该用户缺省schema。这也就是我们在企业管理器的方案下看到schema名都为数据库用户名的原因。Oracle数据库中不能新创建一个schema,要想创建一个schema,只能通过创建一个用户的方法解决(Oracle中虽然有create schema语句,但是它并不是用来创建一个schema的),在创建一个用户的同时为这个用户创建一个与用户名同名的schem并作为该用户的缺省shcema。即schema的个数同user的个数相同,而且schema名字同user名字一一 对应并且相同,所有我们可以称schema为user的别名,虽然这样说并不准确,但是更容易理解一些。
一个用户有一个缺省的schema,其schema名就等于用户名,当然一个用户还可以使用其他的schema。如果我们访问一个表时,没有指明该表属于哪一个schema中的,系统就会自动给我们在表上加上缺省的sheman名。比如我们在访问数据库时,访问scott用户下的emp表,通过select * from emp; 其实,这sql语句的完整写法为select * from scott.emp。在数据库中一个对象的完整名称为schema.object,而不属user.object。类似如果我们在创建对象时不指定该对象的schema,在该对象的schema为用户的缺省schema。这就像一个用户有一个缺省的表空间,但是该用户还可以使用其他的表空间,如果我们在创建对象时不指定表空间,则对象存储在缺省表空间中,要想让对象存储在其他表空间中,我们需要在创建对象时指定该对象的表空间。
咳,说了这么多,给大家举个例子,否则,一切枯燥无味!
SQL> Gruant dba to scott
SQL> create table test(name char(10));
Table created.
SQL> create table system.test(name char(10));
Table created.
SQL> insert into test values('scott');
1 row created.
SQL> insert into system.test values('system');
1 row created.
SQL> commit;
Commit complete.
SQL> conn system/manager
Connected.
SQL> select * from test;
NAME
----------
system
SQL> ALTER SESSION SET CURRENT_SCHEMA = scott; --改变用户缺省schema名
Session altered.
SQL> select * from test;
NAME
----------
scott
SQL> select owner ,table_name from dba_tables where table_name=upper('test');
OWNER TABLE_NAME
------------------------------ ------------------------------
SCOTT TEST
SYSTEM TEST
--上面这个查询就是我说将schema作为user的别名的依据。实际上在使用上,shcema与user完全一样,没有什么区别,在出现schema名的地方也可以出现user名。
表空间:
一个表空间就是一片磁盘区域,他又一个或者多个磁盘文件组成,一个表空间可以容纳许多表、索引或者簇等
每个表空间又一个预制的打一磁盘区域称为初始区间(initial extent)用完这个区间厚在用下一个,知道用完表空间,这时候需要对表空间进行扩展,增加数据文件或者扩大已经存在的数据文件
instance是一大坨内存sga,pga....和后台的进程smon pmon.....组成的一个大的应用。
schema就是一个用户和他下面的所有对象。。
tablspace 逻辑上用来放objects.物理上对应磁盘上的数据文件或者裸设备。
- 自己理解的oracle的概念
- Oracle的概念理解
- oracle的基本理解概念。
- 理解Oracle的几个概念
- FPGA中一些概念自己的理解
- 理解Oracle WebLogic服务器的关键概念
- ORACLE B树索引概念的理解
- ORACLE B树索引概念的理解
- 协方差矩阵的概念,算法以及自己的一些理解
- 初始JAVA,JAVA概念及自己的理解-----黑马程序员
- texel是什么?texel概念和自己理解的texel
- CNN卷积理解初步概念理解(对于别人的博客的自己打开方式)
- 对oracle执行计划相关概念的理解
- oracle中service_name、sid、tablespace、instance_name几个概念的理解
- 浅谈json,自己初认识json,写下自己对其概念的理解。
- CMS概念的理解
- BPEL概念的理解
- 句柄的概念理解!!!
- 包package,权限修饰符
- Java基础:String、StringBuffer、基本数据类型包装类
- LeetCode-70 Climbing Stairs(斐波那契数列)
- C++完成域名解析
- bfgs拟牛顿法
- 自己理解的oracle的概念
- MVC 用户登陆(验证码)
- JAVA中Iterator的具体作用
- Ruby on Rails,一次讲透对象之间的关联关系,永远忘不了
- Linux中Python安装与配置(CentOS-6.5:Python-2.7.6)
- ProGuard对java jar包实现混淆加密
- java之 ------ 类的封装、继承和多态(二)
- Ruby on Rails,一对一关联(One-to-One)
- 动态链接库之静态链接和动态链接