数据库就是一个相片底片
实例就是相纸
一个底片可以冲多个相纸,但一张相纸最多冲一个底片。
tom的一个解释
数据库(database):物理操作系统文件或磁盘( disk)的集合。使用Oracle 10g 的自动存储管理(Automatic Storage Management,ASM)或RAW 分区时,数据库可能不作为操作系统中单独的文件,但定义仍然不变。
实例(instance):一组Oracle 后台进程/线程以及一个共享内存区,这些内存由同一个计算机上运行的线程/进程所共享。这里可以维护易失的、非持久性内容(有些可以刷新输出到磁盘)。就算没有磁盘存储,数据库实例也能存在。也许实例不能算是世界上最有用的事物,不过你完全可以把它想成是最有用的事物,这有助于对实例和数据库划清界线。
这两个词有时可互换使用,不过二者的概念完全不同。实例和数据库之间的关系是:数据库可以由多个实例装载和打开,而实例可以在任何时间点装载和打开一个数据库。实际上,准确地讲,实例在其整个生存期中最多能装载和打开一个数据库!
补充:
一般来说,我们的一个数据库对应一个实例,但在集群RAC情况下,共享数据库文件时,一个数据库是可以被多个实例同时使用的。
我们向数据库写数据或读数据,则只能通过实例进行。
同一时间,一个实例只能打开一个数据库,也就是一个实例只能操作或管理一个数据库;通常,同一时间,一个数据库只能被一个实例打开,但RAC情况除外。
安装oracle时,通常会安装一个实例——数据库对(当然可以装多对),而且他们的名字相同(也就是实例和数据库名字相同),他们的名字当然可以不同,不管相不相同,他们的联系是通过xxx/pfile/init.ora初始化文件联系的。因为xxx就是实例的名字,而xxx.ora中的db_name,则记录相应数据库的名字。
下面演示启动xxx实例,挂接数据库,打开数据库,关闭数据库、卸载数据库、关闭实例的过程。
1、为了能进行以上操作,oracle的监听必须首先启动,这样,我们才有机会连接到oracle服务器端。可以通过如下命令进行:lsnrctl start;
2、oracle启动,windows下通常在服务里启动oracle,一般情况下同时启动相关实例,但也可以设置启动oracle时,不启动任何指定实例,这样oracle的启动速度相当快。
3、设定我们需要启动的相关实例。在console窗口中,输入 set oracle_sid=xxx (unix环境下用export命令)
4、用/nolog方式,进入sqlplus。 在console窗口中,输入 sqlplus /nolog ,然后回车,则进入sqlplus环境。
5、输入命令 connect sys as sysdba 回车后,提示输入口令,直接回车,则以sysdba的角色连接到oracle的空闲实例。
6、输入命令 startup nomount 回车,则启动了xxx实例,由set oracle_sid=xxx设置。
7、输入命令 alter database mount 回车,则将相应的数据库挂接到xxx实例。
8、输入命令 alter database open 回车,则打开了相应数据库。
9、输入命令 shutdown,则关闭数据库、卸载数据库、关闭实例。