oracle数据库的用户是属于某个数据库管理系统仍是某个数据库实例?还是说某个数据库
oracle数据库的用户是属于某个数据库管理系统还是某个数据库实例?还是说某个数据库?
比如现在一台物理服务器上装了一个oracle的数据库管理系统S,通过S创建了2个数据库A(安装S时默认安装的数据库)和B(后来创建,创建时肯定要同时创建一个用户h),A和B分别有相应的各自一个数据库实例a和b。
首先肯定要通过安装时设置的密码,使用system用户通过实例a登录数据库A。这时候我创建了一个用户k,赋予它dba权限。此时,k应能操作数据库A的所有表吧。但是k能访问数据库B吗(不是通过dblink之类的)?k和system的关系是什么?通过k能创建一个操作数据库B的用户吗?k是属于S还是属于A还是a?system用户通过初始密码能访问数据库B吗?
------解决方案--------------------
数据库由几类文件组成
而这些文件在使用过程中,会加载到某台服务器的内存中,和各类进程协同工作。内存+进程=实例
通过具备一定权限的用户来操作数据,用户数据(表)存放在表空间中,表空间是一个逻辑概念,在硬盘上对应某几个数据文件,数据文件常见的格式有dbf,ora(格式无关紧要,只是名称问题)
一个表空间若包含多个数据文件,则这个表空间中的某张表,数据可能会分布在多个文件中
------解决方案--------------------
多实例环境下,数据库软件(ORACLE_HOME)可以是一个,但和实例相关的文件都是单独的、加实例名称(ORACLE_SID)来区分的,如保存配置的 spfile 的名称 spfile$SID.ora, 保存具有 sysdba 权限的用户名和密码的 pwd 文件的,名称为 pwd$SID.ora。就是说每个实例分别维护自己的用户,不能混用。就你给出的情况来说,k 用户是没有访问 b 实例/数据库的权限的。
多实例环境下,本地访问数据库之前,设置 ORACLE_SID 环境变量是非常重要的。
比如现在一台物理服务器上装了一个oracle的数据库管理系统S,通过S创建了2个数据库A(安装S时默认安装的数据库)和B(后来创建,创建时肯定要同时创建一个用户h),A和B分别有相应的各自一个数据库实例a和b。
首先肯定要通过安装时设置的密码,使用system用户通过实例a登录数据库A。这时候我创建了一个用户k,赋予它dba权限。此时,k应能操作数据库A的所有表吧。但是k能访问数据库B吗(不是通过dblink之类的)?k和system的关系是什么?通过k能创建一个操作数据库B的用户吗?k是属于S还是属于A还是a?system用户通过初始密码能访问数据库B吗?
------解决方案--------------------
数据库由几类文件组成
而这些文件在使用过程中,会加载到某台服务器的内存中,和各类进程协同工作。内存+进程=实例
通过具备一定权限的用户来操作数据,用户数据(表)存放在表空间中,表空间是一个逻辑概念,在硬盘上对应某几个数据文件,数据文件常见的格式有dbf,ora(格式无关紧要,只是名称问题)
一个表空间若包含多个数据文件,则这个表空间中的某张表,数据可能会分布在多个文件中
------解决方案--------------------
多实例环境下,数据库软件(ORACLE_HOME)可以是一个,但和实例相关的文件都是单独的、加实例名称(ORACLE_SID)来区分的,如保存配置的 spfile 的名称 spfile$SID.ora, 保存具有 sysdba 权限的用户名和密码的 pwd 文件的,名称为 pwd$SID.ora。就是说每个实例分别维护自己的用户,不能混用。就你给出的情况来说,k 用户是没有访问 b 实例/数据库的权限的。
多实例环境下,本地访问数据库之前,设置 ORACLE_SID 环境变量是非常重要的。