您的位置:首页 > 数据库

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

2013-11-15 11:00 267 查看
关于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参数的方式

[oracle@bys3 ~]$ export ORACLE_SID=bys5

[oracle@bys3 ~]$ echo $ORACLE_SID

bys5

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

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

[oracle@bys3 ~]$ cd $ORACLE_HOME/dbs

[oracle@bys3 dbs]$ ls

hc_bys3.dat   lkBYS3     spfilebys3.ora

initbys3.ora  orapwbys3

[oracle@bys3 dbs]$ mv spfilebys3.ora spfilebys3.oraa

[oracle@bys3 dbs]$ cp spfilebys3.oraa spfilebys5.ora

[oracle@bys3 dbs]$ cp orapwbys3 orapwbys3a

[oracle@bys3 dbs]$ mv orapwbys3 orapwbys5

[oracle@bys3 dbs]$ ls

hc_bys3.dat   orapwbys3a       spfilebys5.ora

initbys3.ora  orapwbys5

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

[oracle@bys3 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.

SYS@ 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.

SYS@ bys5>select instance_name,host_name from v$instance;

INSTANCE_NAME    HOST_NAME

---------------- ----------------------------------------------------------------
bys5             bys3.bys.com

SYS@ bys5>select name from v$database;
NAME

---------

BYS3
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  oracle_sid db_name
相关文章推荐