1. 什么是SID?
SID(系统ID) 是Oracle中的一个重要概念,它代表着一个数据库实例。一个数据库可以拥有多个实例,每个实例都有一个唯一的SID。SID命名的规则是:1-8个字符,必须以字母开头,可以包含字母、数字、$、#、_。
2. 如何设置SID?
2.1 在安装时设置SID
在Oracle数据库的安装过程中,会要求设置数据库实例的名称,即SID。下面是设置SID的示例截图:
![oracle安装](oracle_instane_name.png)
2.2 在Oracle实例中修改SID
如果您已经安装了Oracle数据库,需要修改实例的SID,可以按照以下步骤进行操作:
1. 登录数据库实例所在主机,以sysdba身份连接数据库:
$ sqlplus / as sysdba
2. 查看当前实例的SID:
SQL> show parameter instance_name;
3. 关闭所需修改SID的数据库实例:
SQL> shutdown immediate;
4. 修改$ORACLE_HOME/network/admin目录下的tnsnames.ora文件,将其中的SID对应的值修改为所需的新值:
ORCL =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = 系统IP地址)(PORT = 相应端口))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SID = 新的SID值)
)
)
5. 修改$ORACLE_HOME/dbs目录下的init${ORACLE_SID}.ora文件,将其中的${ORACLE_SID}对应的值修改为所需的新值:
*.db_name=新的SID值
6. 修改$ORACLE_HOME/network/admin目录下的listener.ora文件,将其中的SID对应的值修改为所需的新值:
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = 系统IP地址)(PORT = 相应端口))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SID = 新的SID值)
)
)
7. 重启数据库实例:
SQL> startup;
3. SID与服务名的区别
3.1 SID与服务名的概念
在Oracle中,SID是一个实例,服务名是多个实例组成的服务,是一个逻辑概念。每个实例都有一个暴露给客户端的服务名。客户端使用服务名来访问数据库服务。在网络环境中,通过客户端使用网络服务名称定位该服务相应的实例。
3.2 SID与服务名的关系
在Oracle中,本地连接只需要使用SID即可,而在访问远程数据库时,客户端必须通过服务名来访问数据库服务。Oracle支持使用tnsnames.ora文件将服务名映射到对应的SID。例如下面这个例子:
ORCL =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = 系统IP地址)(PORT = 相应端口))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SID = orcl)
)
)
客户端通过访问服务名ORCL来访问实例orcl。
4. 结语
本文介绍了SID的概念及其设置方法,并与服务名进行了对比。了解和掌握SID的设置及使用,对于Oracle数据库的应用和维护具有重要意义。