Oracle数据库包括两个部分数据库和数据库实例

 

olsnodes,这个命令用来显示集群点列表(grid即oracle rac的第三个安装包内的软件,可找到)

//集群名称
[grid@shdb02 ~]$ olsnodes -c
shfpdb-cluster
//集群有两个节点
[grid@shdb01 network-scripts]$ olsnodes
shdb01
shdb02
//集群的编号

  [grid@fpdb02 ~]$ olsnodes -n
  shdb01 1
  shdb02 2

 

[grid@shdb02 ~]$ srvctl config asm
ASM home: /u01/app/11.2.0/grid
ASM listener: LISTENER

[grid@shdb02 ~]$ srvctl status listener
Listener LISTENER is enabled
Listener LISTENER is running on node(s): shdb02,shfpdb01

[grid@shdb02 ~]$ srvctl status instance -d fpmai -i fpmai1,fpmai2
Instance fpmai1 is running on node shdb01
Instance fpmai2 is running on node shdb02  

 

[grid@shdb02 ~]$ crs_stat -t|grep lsnr
ora....ER.lsnr ora....er.type ONLINE ONLINE shdb01
ora....N1.lsnr ora....er.type ONLINE ONLINE shdb02
ora....01.lsnr application ONLINE ONLINE shdb01
ora....02.lsnr application ONLINE ONLINE shdb02

 

[grid@shdb02 ~]$ srvctl config nodeapps -n shdb01 -a
-n <node_name> option has been deprecated.
Network exists: 1/10.128.51.0/255.255.255.0/eth0, type static
VIP exists: /shfpdb01-vip/10.128.51.23/10.128.51.0/255.255.255.0/eth0, hosting node shdb01

 

 

 //查看集群的状态

[grid@shdb01 ~]$ crsctl status res -t
--------------------------------------------------------------------------------
NAME           TARGET  STATE        SERVER(节点)                   STATE_DETAILS       
--------------------------------------------------------------------------------
Local Resources
--------------------------------------------------------------------------------
ora.ARCH.dg
               ONLINE  ONLINE       shdb01                                     
               ONLINE  ONLINE       shdb02                                     
.....                                  
ora.asm
               ONLINE  ONLINE       shdb01                 Started             
               ONLINE  ONLINE       shdb02                 Started             
ora.gsd
               OFFLINE OFFLINE      shdb01                                     
               OFFLINE OFFLINE      shdb02                                     
...                                 
ora.registry.acfs
               ONLINE  ONLINE       shdb01                                     
               ONLINE  ONLINE       shdb02                                     
--------------------------------------------------------------------------------
Cluster Resources
--------------------------------------------------------------------------------
ora.LISTENER_SCAN1.lsnr
      1        ONLINE  ONLINE       shdb02                                     
ora.cvu
      1        ONLINE  ONLINE       shdb02                                     
ora.fp.db
      1        ONLINE  ONLINE       shdb01                 Open        //已打开         
      2        ONLINE  ONLINE       shdb02                 Open        //已打开 
ora.htc.db
      1        OFFLINE OFFLINE                               Instance Shutdown   
      2        OFFLINE OFFLINE                               Instance Shutdown   
ora.hts.db
      1        ONLINE  ONLINE       shdb01                 Open                
      2        ONLINE  ONLINE       shdb02                 Open                
ora.oc4j
      1        ONLINE  ONLINE       shdb01                                     
ora.scan1.vip
      1        ONLINE  ONLINE       shdb02                                     
ora.shdb01.vip
      1        ONLINE  ONLINE       shdb01                                     
ora.shdb02.vip
      1        ONLINE  ONLINE       shdb02                                

 网络层由各个节点的网络组件组成

[grid@shdb01 network-scripts]$ oifcfg iflist
eth0  10.128.51.0
eth1  10.128.53.0
eth1  169.254.0.0

[grid@shdb01 network-scripts]$ oifcfg getif
eth0 10.128.51.0 global public
eth1 10.128.53.0 global cluster_interconnect

[grid@shdb01 network-scripts]$ oifcfg getif -type public
eth0 10.128.51.0 global public

 

 

 查看数据库,查看当前节点信息

[grid@shdb01 network-scripts]$ hostname
shdb01
[grid@shdb01 network-scripts]$ srvctl config database -d fp -a Database unique name: fp Database name: fp Oracle home: /u01/app/oracle/product/11.2.0/db_1 Oracle user: oracle Spfile: +DATA/fp/spfilefp.ora //用的是asm Domain: Start options: open Stop options: immediate Database role: PRIMARY Management policy: AUTOMATIC Server pools: fp Database instances: fp1,fp2 //有两个实例 Disk Groups: DATA Mount point paths: Services: Type: RAC Database is enabled Database is administrator managed
//解读信息,数据库名为fpmai , 他有两个数据库实例 fpmai1,fpmai2

 综合以上信息,我们调研情况为
1、集群有2个节点 shdb01,shdb02
2、集群中有一个数据库名为fpmai
3、fp数据库有2个实例.
                                    

现在我们在来讲可能就比较容易理解一些oarcle数据库服务器主要有两部分组成:物理数据库和数据库管理系统
1、实例
     数据库管理系统是用户和物理数据库之间的一个中间层,是软件层。这个软件层具有一定的结构,这个结构又被称为实例结构。
    在启动数据库时,oracle首先要在内存中获取、划分、保留各种用途的区域,运行各种用途的后台进程,即创建一个实例(instance),
    然后由该实例装载、打开数据库,最后由这个实例来访问和控制数据库的各种物理结构。
   数据库至少由一个oracle实例引用,该实例由oracle系统标识符(system identity)唯一标识,用于区别此计算机上的任何其他实例。

登录某实例
[grid@shdb01 network-scripts]$ export ORACLE_SID=fp1 [grid@shdb01 network-scripts]$ echo $ORACLE_SID fpmai1

[grid@shdb02 ~]$ srvctl status instance -d fp -i fp1
Instance fp1 is running on node shdb01  //实例fpmai1运行在shfpdb01节点

[grid@shdb02 ~]$ srvctl status instance -d fp -i fp2
Instance fp1 is running on node shdb02  //实例fpmai2运行在shfpdb02节点

[grid@shdb01 network-scripts]$ sqlplus / as sysdba

SQL*Plus: Release 11.2.0.4.0 Production on Thu Mar 10 19:47:11 2022

Copyright (c) 1982, 2013, Oracle. All rights reserved.

Connected to an idle instance.  //已经连接到某

2、通过实例来连接、使用数据库。

  在启动数据库并使用数据库的时候,实际上是连接到该数据库的实例.
  所以实例是用户和数据库之间的一个中间层。(客户端---》实例---》数据库)
  实例是由操作系统的内存结构和一系列进程所组成的,可以启动和关闭。


 3、每个实例都要用称为SID的符号来区分
 

   一台计算机上可以创建多个oracle数据库,当同时要使用这些数据库时,就要创建多个实例。
    为了不使这些实例相互混淆,每个实例都要用称为SID的符号来区分,即创建这些数据库时填写的数据库SID。

   数据库实例是用户访问数据库的中间层,是使用数据库的手段,它为用户访问数据库提供了必要的内存空间和多个工作进程,它是动态的、临时的,

   简单的说,Oracle实例就是由内存空间和工作进程两部分组成。 我们只能通过实例操作数据库,
   同一时间,一个实例只能打开一个数据库,也就是一个实例只能操作或管理一个数据库,但一个数据库可以被多个是实例打开。
    实例可以在没有数据文件的情况下单独启动,(startup nomount)但这通常是没有意义的,
  一个实例在生成期内只能装载(alter database mount)和打开(alter database open)数据库。

4、ORACLE实例有两种类型:单进程实例 和 多进程实例。

单进程ORACLE(又称单用ORACLE)是一种数据库系统,一个进程执行全部ORACLE代码。由于ORACLE部分和客户应用程序不能分别以进程执行,
所以ORACLE的代码和用户的数据库应用是单个进程执行。在单进程环境下的ORACLE 实例,仅允许一个用户可存取。例如在MS-DOS上运行ORACLE 。 多进程ORACLE实例(又称多用户ORACLE)使用多个进程来执行ORACLE的不同部分 ,对于每一个连接的用户都有一个进程。 在多进程系统中,进程分为两类:用户进程 和ORACLE进程。当一用户运行一应用程序,如PRO*C程序或一个ORACLE工具(如SQL*PLUS),为用户运行的应用建立一个用户进程。

Oracle系统的进程包括三种类型

①用户进程
②服务进程
③后台进程

 

5、实例名(instance_name)

数据库实例名(instance_name)用于对外部连接。在操作系统中要取得与数据库的联系,必须使用数据库实例名。
       例如,要去连接一个数据库服务器,就必须知道其数据库实例名。

查询当前数据库实例名
方法一:select instance_name from v$instance;
方法二:show parameter instance_name
方法三:在参数文件中查询。

6、服务名(Service_name)

该参数是oracle8i新引进的。在8i以前,我们用SID来表示标识数据库的一个实例,但是在Oracle的并行环境中,一个数据库对应多个实例,这样就需要多个网络服务名,设置繁琐。
为了方便并行环境中的设置,引进了Service_name参数,该参数对应一个数据库,而不是一个实例,而且该参数有许多其它的好处。该参数的缺省值为Db_name.
Db_domain,即等于Global_name。
一个数据库可以对应多Service_name,以便实现更灵活的配置。该参数与SID没有直接关系,即不必Service name 必须与SID一样。
如果数据库有域名,则数据库服务名就是全局数据库名,否则,数据库服务名与数据库名相同。 查询当前数据库服务名 方法一:
select value from v$parameter where name = ‘service_name’; 方法二:show parameter service_name 方法三:select instance_namefrom v$instance; 方法四:在参数文件中查询。 注意:方法三:select instance_namefrom v$instance; 的值是来自操作系统的oracle_sid,oracle_sid是操作系统的环境变量。

 

posted @ 2022-03-10 19:52  jinzi  阅读(314)  评论(0编辑  收藏  举报