TNS-12523 故障一例

在使用Oracle数据库进行迁移开发时遇到远程连接失败的问题,通过调整本地监听参数成功解决TNS-12523错误。

库启动正常,以前用作迁移开发。启动后,服务器本地可以连上,但是远程不行,报TNS-12523 。

后台日志显示出 以前配置的网关连接失效。

后来实在没招了,设置了本地监听参数,再试,竟然好了。

唉,真神奇。。。

alter system set local_listener='(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=172.16.5.61)(PORT=1521))))' scope=both ;

[@more@]

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/350519/viewspace-1051768/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/350519/viewspace-1051768/

<think>好的,我现在需要回答用户关于Oracle数据库中设置多个SID以及它们与不同数据库的对应关系的问题。用户之前已经询问过如何设置多个服务名(Service Name),现在转向了SID的配置。首先,我需要明确SID和Service Name的区别,确保回答准确。 用户提供的引用内容中,引用了srvctl命令停止数据库,这可能与RAC环境相关。还有关于PDB配置和ORDS的设置,这些可能与多租户环境有关。不过用户现在的问题是多个SID对应不同数据库,所以需要集中在非CDB环境或者CDB中的不同实例配置。 首先,SID(System Identifier)是Oracle实例的唯一标识,通常一个实例对应一个数据库。但在多实例环境中,比如RAC,每个节点有自己的SID,但共享同一个数据库。不过用户可能指的是在同一台服务器上运行多个独立的数据库实例,每个实例有自己的SID和数据库文件。这种情况需要配置多个实例,每个实例有自己的参数文件、控制文件、数据文件等。 接下来,我需要确认如何配置多个SID。通常,这涉及到创建不同的ORACLE_HOME或者使用同一个ORACLE_HOME但不同的环境变量(如ORACLE_SID)。不过更常见的做法是使用不同的ORACLE_SID,并通过DBCA(Database Configuration Assistant)创建多个数据库实例,每个实例有自己的SID。 另外,用户提到映射到不同的数据库,这意味着每个SID对应一个独立的数据库。需要说明如何通过不同的监听器配置和tnsnames.ora条目来实现客户端的连接。同时,可能需要调整监听器配置,确保每个实例的SID被正确注册。 还要考虑用户可能遇到的问题,例如端口冲突、环境变量设置错误、监听器无法识别多个SID等。需要给出排查步骤,如检查监听器日志、使用lsnrctl status查看注册情况、验证tnsnames.ora配置是否正确。 此外,用户之前的回答中提到了Service Name和SID的区别,这里需要再次强调SID是实例级别的标识,而Service Name可以更灵活地映射到服务。在配置多个SID时,每个实例的SID必须唯一,而Service Name可以跨实例使用,但通常每个实例会有默认的Service Name。 可能需要引用用户之前的问题中的配置步骤,比如修改参数文件、配置监听器等,但这次是针对SID的设置。同时,确保回答结构清晰,步骤明确,涵盖配置方法、验证步骤和常见问题。 最后,生成的相关问题需要围绕多个SID的管理、迁移、监控以及与其他功能(如Data Guard)的集成,帮助用户进一步了解相关主题。</think>#### 一、SID与数据库的映射原理 Oracle数据库体系中,SID(System Identifier)是实例的唯一标识符,而数据库是物理文件的集合。多个SID可以对应不同数据库实例,实现以下两种典型场景: 1. **独立数据库实例**:每个SID对应独立的数据库文件存储(数据文件、控制文件、重做日志) 2. **多租户架构(CDB)**:单个SID的容器数据库(CDB)管理多个可插拔数据库(PDB)[^1] #### 二、独立数据库实例配置 ##### 1. 环境准备 ```bash # 创建独立的文件存储目录 mkdir -p /u01/oradata/SID1 mkdir -p /u01/oradata/SID2 # 设置环境变量(以SID1为例) export ORACLE_SID=SID1 export ORACLE_BASE=/u01/app/oracle export ORACLE_HOME=$ORACLE_BASE/product/19c/dbhome_1 ``` ##### 2. 使用DBCA创建数据库 ```bash # 启动图形化配置工具 dbca -silent -createDatabase \ -templateName General_Purpose.dbc \ -gdbname SID1 -sid SID1 \ -sysPassword oracle \ -systemPassword oracle \ -storageType FS \ -datafileDestination "/u01/oradata/SID1" \ -redoLogFileSize 100 \ -emConfiguration NONE \ -characterset AL32UTF8 \ -memoryPercentage 40 ``` *重复该过程创建SID2数据库* #### 三、多实例监听器配置(listener.ora) ```bash LISTENER = (DESCRIPTION_LIST = (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = dbserver)(PORT = 1521)) ) ) SID_LIST_LISTENER = (SID_LIST = (SID_DESC = (GLOBAL_DBNAME = SID1) (ORACLE_HOME = /u01/app/oracle/product/19c/dbhome_1) (SID_NAME = SID1) ) (SID_DESC = (GLOBAL_DBNAME = SID2) (ORACLE_HOME = /u01/app/oracle/product/19c/dbhome_1) (SID_NAME = SID2) ) ) ``` #### 四、客户端连接配置(tnsnames.ora) ```bash SID1_CONN = (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = dbserver)(PORT = 1521)) (CONNECT_DATA = (SERVER = DEDICATED) (SID = SID1) ) ) SID2_CONN = (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = dbserver)(PORT = 1521)) (CONNECT_DATA = (SERVER = DEDICATED) (SID = SID2) ) ) ``` #### 五、运行状态验证 ```sql -- 查看当前实例信息 SELECT instance_name, status FROM v$instance; -- 查看数据库物理文件 SELECT name FROM v$datafile; ``` ```bash # 查看监听器注册状态 lsnrctl status # 输出示例 Service "SID1" has 1 instance(s) Instance "SID1", status READY... Service "SID2" has 1 instance(s) Instance "SID2", status READY... ``` #### 六、多SID管理命令 | 操作类型 | 命令示例 | |------------------|-------------------------------------------------------------------------| | 启动实例 | `sqlplus / as sysdba` → `STARTUP` | | 关闭实例 | `srvctl stop database -d SID1`[^1] | | 切换运行环境 | `export ORACLE_SID=SID2` | | 查看实例状态 | `ps -ef | grep ora_ | grep -v grep` | #### 七、高级配置场景 1. **共享存储配置** 在ASM存储环境中,不同SID可共享同一磁盘组但使用不同目录结构: ```sql CREATE DISKGROUP DATA_SID1 NORMAL REDUNDANCY FAILGROUP fg1 DISK '/dev/sdb1', FAILGROUP fg2 DISK '/dev/sdc1'; ``` 2. **混合架构部署** CDB容器中集成多个PDB,同时保留独立SID实例: ```sql -- 创建CDB容器 CREATE DATABASE CDB1 USER SYS IDENTIFIED BY oracle ENABLE PLUGGABLE DATABASE; -- 附加PDB到CDB CREATE PLUGGABLE DATABASE PDB1 ADMIN USER pdbadmin IDENTIFIED BY oracle; ``` #### 八、常见问题排查表 | 故障现象 | 排查步骤 | |------------------------|-------------------------------------------------------------------------| | ORA-12505: TNS无监听 | 检查`listener.ora`中SID_NAME与实例实际SID是否匹配 | | 实例无法启动 | 验证`ORACLE_SID`环境变量与`spfile`命名是否一致(spfileSID.ora) | | 存储空间冲突 | 确认`control_files`参数指向独立路径 | | 监听器无法识别多个SID | 重启监听服务:`lsnrctl stop` → `lsnrctl start` | --相关问题--: 1. 如何在Oracle RAC环境中实现跨节点SID负载均衡? 2. 使用DBCA创建多SID时出现ORA-00845错误应如何解决? 3. 如何将单实例数据库迁移到多SID架构并保持数据一致性? 4. 在多SID环境中如何实现统一的数据库监控方案? 5. 使用SID连接与Service Name连接在性能上有何差异?
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值