天天看点

使用任意实例名来打开数据库测试--男人(实例)理论上能OPEN任意一个女人(数据库)

关于DB_NAME与ORACLE_SID,详见http://blog.csdn.net/q947817003/article/details/11269807

ORACLE_SID从ORACLE 10G开始,参数文件不再记录INSTANCE_NAME,此时INSTANCE_NAME动态从系统ORACLE_SID获得。将保持一致

DB_NAME:

实例启动的最少参数要求,有此参数,数据库实例就可以启动。可以新建INIT.ORA只包括此参数测试。

它代表了实例即将连接的数据库名称,关系到具体的物理文件。单实例数据库DB_NAME与INSTANCE_NAME可设置相同,RAC环境下多实例对应一个数据库,两者不同。

DB_NAME用来定义数据库名称,必须是不超过8个字符的文本串,数据库创建过程中,DB_NAME被记录在数据文件、日志文件、控制文件,实例启动过程中参数文件中DB_NAME与控制文件中不一致,则数据库不能启动。

一个实例可以MOUNT并打开任何数据库,同一时间一个实例只能打开一个数据库。

一个数据库可以被一个或多个实例MOUNT并打开,如RAC

主机,实例,数据库关系:

比如实例是男人,数据库是女人,主机就是一张大床。

正常情况下,同一时间一男只能打开一女,而理论上一男能打开任意女滴。

一女理论上可以被任意一个男打开,也可以同时被多个男打开----RAC/3P-NP。

一张大床(主机)可以睡一个男人(实例)和一个女人(库),只要床足够大,也可以睡多个男人和多个女人。

ORACLE_SID:

ORACLE System IDentifier的缩写, ORACLE_SID以环境变量形式出现。ORACLE实例由一块共享内存区域SGA和一组后台进程background process组成,后台进程是数据库与操作系统运行交互的通道。比如JORACLE根据ORACLE_SID决定查找参数文件并启动实例。

INSTANCE_NAME 在数据库内部ORACLE_sid关联概念就是INSTANCE_NAME,ORACLE存在的初始化参数INSTANCE_NAME用于标示数据库实例名字缺省值是ORACLE_SID,在数据库内部视图V$INSTANCE中记录着INSTANCE_NAME,来自数据库实例的SID,始终与ORACLE_SID保持一致。

从动态参数文件创建静态参数文件为:

create pfile from spfile;

create sfile='C:\DBHOME_1\DATABASE\initorcl.ora'from spfile=' C:\DBHOME_1\DATABASE\SPFILEORAC.ORA';

###########################################################################################################

使用任意实例名来打开数据库只需要更改以下三个参数:

修改.bash_profile  或者只改exprot ORACLE_SID参数即可

修改spfile**.ora  为新SID名。

修改密码文件为新SID名

注意事项:实验完成后,关库并及时将SPFILE/密码文件/ORACLE_SID恢复为原来的数据。

如未关库就重新以原ORACLE_SID去OPEN数据库,会找不到SPFILE。。

如未关库但是修改了SPFILE/密码文件/ORACLE_SID,重新以原ORACLE_SID去OPEN数据库,实例可以启动,MOUNT时报错:ORA-01102: cannot mount database in EXCLUSIVE mode

1.修改.bash_profile的 ORACLE_SID参数或者exprot ORACLE_SID参数

我这里用exprot ORACLE_SID参数的方式

[[email protected] ~]$ export ORACLE_SID=bys5

[[email protected] ~]$ echo $ORACLE_SID

bys5

2.修改初始化参数文件-SPFILE名字格式--不用修改内容--做好文件备份

修改密码文件格式-密码文件的名字格式--不用修改内容

[[email protected] ~]$ cd $ORACLE_HOME/dbs

[[email protected] dbs]$ ls

hc_bys3.dat   lkBYS3     spfilebys3.ora

initbys3.ora  orapwbys3

[[email protected] dbs]$ mv spfilebys3.ora spfilebys3.oraa

[[email protected] dbs]$ cp spfilebys3.oraa spfilebys5.ora

[[email protected] dbs]$ cp orapwbys3 orapwbys3a

[[email protected] dbs]$ mv orapwbys3 orapwbys5

[[email protected] dbs]$ ls

hc_bys3.dat   orapwbys3a       spfilebys5.ora

initbys3.ora  orapwbys5

lkBYS3        spfilebys3.oraa

3.启动实例并OPEN数据库,可以正常打开数据库

[[email protected] dbs]$ sqlplus / as sysdba

SQL*Plus: Release 11.2.0.4.0 Production on Fri Nov 15 10:49:44 2013

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

Connected to an idle instance.

[email protected] bys5>startup

ORACLE instance started.

Total System Global Area  150654976 bytes

Fixed Size                  1363216 bytes

Variable Size              96469744 bytes

Database Buffers           50331648 bytes

Redo Buffers                2490368 bytes

Database mounted.

Database opened.

[email protected] bys5> select instance_name,host_name from v$instance;

INSTANCE_NAME    HOST_NAME

---------------- ----------------------------------------------------------------

bys5             bys3.bys.com

[email protected] bys5> select name from v$database;

NAME

---------

BYS3