简介:《Teamcenter 2007详细安装》是一份面向 PLM 初学者、实施人员与运维学习者的操作文档,围绕 Siemens Teamcenter 2007 早期版本的部署准备,重点解决其与 Oracle 10.0 数据库配合安装时的环境搭建与关键配置理解问题。文档共 1 个 doc 文件,压缩包约 3MB,内容集中于安装流程记录,适合作为了解 Teamcenter 基础架构、依赖关系及数据库层配置的参考材料。资料围绕 Oracle 10.0 安装、监听器创建、Teamcenter 数据库模板准备与 DBCA 建库等环节展开,并记录高级安装、企业版选择、仅安装数据库软件、全局数据库名与统一口令等关键选项,便于读者对照梳理安装路径和配置要点。目前已有 217 人学习,适合需要入门 Teamcenter 部署、补充早期版本安装认知或排查数据库配置思路的读者查阅。
1. 装 Teamcenter 2007,真正卡人的是 Oracle 10g 这层底座
上周有人抱着一台老工作站来问,Teamcenter 2007 的介质解压完了,双击 setup 之前到底该先干什么。我的回答很直接:先别碰 TC,把 Oracle 10g 那一套装明白。这套组合的年份摆在那儿,Teamcenter 2007.1 的安装介质里专门带了一份tc\db_scripts\oracle目录,里面是给 DBCA 用的库模板——意思是连建库这件最费神的活都替你想好了,前提是你得先有一个能跑 DBCA 的 Oracle 10g 企业版在机器上。多数人第一次上这套东西,翻车的点不在 PLM 的业务逻辑,而在数据库底座:高级安装选哪一项、监听器怎么建、模板往哪个目录拷、tceng这个库用什么口令。这篇把这条链子从头到尾走一遍,手里有 2007 安装介质、要给老系统做迁移、或者做教学环境复现的人,可以照着抄。
2. Oracle 10g 企业版安装:高级安装里那四屏决定后面能不能省事
2.1 为什么是"企业版 + 仅安装数据库软件"
先说选型,不然后面三步都容易走偏。
安装类型这一屏有企业版、标准版、个人版、定制四个选项。Teamcenter 的库特点是表多、索引碎、后期数据量涨得快,归档、分区、AWR 这些在运维阶段会用到的东西都在企业版里;个人版虽然装得快,但它等你关机就停库,跑了几天 TC 服务端会莫名其妙连不上,这是老机器上最常见的误判。所以企业版不是"更高级所以选它",而是这个场景下有实际依赖。
真正需要解释的是"选择配置选项"这一屏。向导会给你三个选择:创建数据库、配置自动存储管理、仅安装数据库软件。这里必须挑第三个。原因很实在——你要建的不是一个通用库,而是一个由 Teamcenter 模板驱动的库,模板决定了数据文件布局、初始化参数、字符集和一堆内置对象。如果在这一屏顺手建了个通用库,后面 DBCA 再建tceng,机器上就多出一个用不上的实例,删起来比建起来麻烦得多,服务、注册表、环境变量都要清。老手装这套东西的习惯是:Oracle 安装程序只负责把软件落盘,一个实例都不建,实例的事全部交给 DBCA。
另外有个顺序上的约束常被忽略:Teamcenter 的服务端安装程序在某些步骤上会去探测数据库连通性,如果先装 TC 再补数据库,中间会卡在一个很尴尬的状态。正确顺序是 Oracle 软件 → 监听 → 建库 → TC 服务端 → TC 客户端。
2.2 逐屏参数与目录规划
先规划目录,再动手。Oracle 10g 的安装路径有个硬性要求:不能带空格、不能带中文、不要放在桌面或"我的文档"这类会被同步的路径下。
| 用途 | 建议路径 | 说明 |
|---|---|---|
| ORACLE_BASE | D:\oracle\product\10.2.0 | 所有 Oracle 产品的根,别带空格 |
| ORACLE_HOME | D:\oracle\product\10.2.0\db_1 | 软件主目录,10g 的db_1是默认命名 |
| 数据文件目录 | D:\oracle\oradata | 与软件分离,做冷备时可以单独拷 |
| 归档/闪回区 | E:\oracle\fast_recovery_area | 独立磁盘,避免把系统盘写满 |
| TC 安装介质 | D:\install\Tc2007.1_wnti | 解压后不要放在深层中文目录 |
目录分盘的原则是:软件、数据、归档三者分开。老机器上经常只有一块盘,那就至少保证数据目录和系统盘分开,方便出问题时只回滚数据。
安装向导的操作序列:
- 解压介质,右键
setup.exe,以管理员身份运行。 - "选择安装方法"这一屏,点"高级安装"。基础安装会替你把实例也建了,跟上面说的思路冲突。
- "选择安装类型",选"企业版"。
- "指定主目录详细信息",主目录名称保持
OraDb10g_home1,路径填上面规划的ORACLE_HOME。这个名称后面会出现在开始菜单里(Oracle - OraDb10g_home1)和 Windows 服务名里(OracleOraDb10g_home1TNSListener),改了名之后照着任何一份教程找菜单都会对不上,所以能不改就不改。 - "产品特定的先决条件检查",网络配置类的警告可以忽略,具体见第 5 章。
- "选择配置选项",选"仅安装数据库软件"。
- "概要"页过一眼路径和字符集,然后点安装。
- 安装结束会跑配置助手,最后一屏点"退出"。
装完之后,不要急着开 Net Manager,先在一个管理员权限的 cmd 窗口里把路径变量固定下来,后面所有命令都依赖它:
:: 以管理员身份运行 cmd,只在当前窗口生效 set ORACLE_BASE=D:\oracle\product\10.2.0 set ORACLE_HOME=D:\oracle\product\10.2.0\db_1 set ORACLE_SID=tceng set PATH=%ORACLE_HOME%\bin;%PATH% echo %ORACLE_HOME%这段用set而不是写进系统环境变量,是有意为之。ORACLE_HOME一旦在系统级写死,机器上以后再装第二个 Oracle 主目录、或者打补丁的时候,工具会认错 home,报出来的错还特别隐晦。我一般只在这个 cmd 窗口里设,窗口一关就干净了。ORACLE_SID提前设成tceng也方便后面 lsnrctl 和 sqlplus 直接连。
2.3 装完先做三个落盘校验,别信"安装成功"
向导最后一屏写"安装成功"的时候,只代表安装程序没崩,不代表文件都在。三个检查做完再往下走:
:: 三个可执行文件必须在位 dir "%ORACLE_HOME%\bin\sqlplus.exe" dir "%ORACLE_HOME%\bin\lsnrctl.exe" dir "%ORACLE_HOME%\bin\dbca.bat" :: 此时模板目录里应该只有 Oracle 自带的少量 .dbc dir "%ORACLE_HOME%\assistants\dbca\templates\*.dbc"第一条校验软件层是否完整。sqlplus用来后面验证连接,lsnrctl用来管监听,dbca.bat是建库入口——这三个缺任何一个,说明安装被中断过,别抱侥幸心理,卸了重装。
第二条校验目录状态。%ORACLE_HOME%\assistants\dbca\templates是 DBCA 启动时扫模板的地方,此刻它应该只有 Oracle 原生模板。记住这个目录当前的样子,第 4 章往里拷 TC 模板之后要对比。
另外顺手看一眼 Windows 服务列表里有没有OracleOraDb10g_home1TNSListener。这个服务是安装程序顺带创建的,默认是手动启动,状态为"已停止"属于正常,第 3 章再把它拉起来。
3. 监听器 LISTENER:Net Manager 里那几个字段决定后面连不连得上
3.1 监听器在 10g 里到底替谁干活
监听器是一个独立于数据库实例的进程,它读listener.ora,在指定端口上 accept 连接请求,然后把这个连接转交给对应的实例。这里有个机制必须搞清楚,否则后面一定误判。
Oracle 10g 默认走的是动态服务注册:实例启动后,PMON 进程会按local_listener参数指向的地址,主动向监听器登记自己的服务名。这意味着两件事——实例没起来的时候,lsnrctl services里看不到tceng,这不是监听坏了;反过来,监听没起的时候,实例照样能启动,只是外部连不进来。很多人第一次装完,看到lsnrctl status输出里没有服务就以为出事了,其实只是库还没建。
listener.ora里真正决定能不能连的有三样东西:监听程序名(这里是LISTENER)、协议地址(TCP + 主机名 + 端口)、以及可选的静态注册段SID_LIST_LISTENER。TC 这套环境用动态注册就够了,不需要手写 SID_LIST,多写反而容易出现"静态注册的 SID 和实际实例名不一致"的诡异问题。
3.2 Net Manager 建 LISTENER 的字段填法
从开始菜单进Oracle - OraDb10g_home1→Net Manager,展开"本地",选中"监听程序",点"编辑" → "创建",然后按下面填:
| 字段 | 填写值 | 说明 |
|---|---|---|
| 监听程序名称 | LISTENER | 必须和后面local_listener的默认假设一致 |
| 协议 | TCP/IP | 这套环境不用 IPC 或 Named Pipes |
| 主机名 | 计算机名或固定 IP | 填错是报错最多的一项 |
| 端口号 | 1521 | 改成别的端口就要同步改local_listener |
主机名这一栏最容易出问题。填法有两种:填计算机名,要求这台机器自己能把名字解析成 IP(ping 计算机名能通);或者直接填 IP 地址。前一种更常见,但在没配 hosts、又靠 DHCP 拿地址的机器上会解析失败,监听起不来或者起来了外部连不上。老机器的血泪经验是:给这台机器配固定 IP,然后在C:\Windows\System32\drivers\etc\hosts里补一行IP 计算机名,两个问题一起解决。
保存之后,文件会写到%ORACLE_HOME%\network\admin\listener.ora,内容大致是这样:
LISTENER = (DESCRIPTION_LIST = (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = tc-db01)(PORT = 1521)) ) )如果这台机器上的监听端口不是 1521,或者你想给监听起别的名字,那就必须在建库之后额外设一个local_listener参数指向实际地址,否则实例注册会跑到默认的 1521 去,表现为"监听起来了但服务列表永远是空的"。
3.3 lsnrctl 启停与状态判读
图形界面只负责写配置文件,真正启动监听靠命令行:
:: 启动名为 LISTENER 的监听程序 lsnrctl start LISTENER :: 查看状态:监听是否在跑、绑定了哪个地址和端口 lsnrctl status LISTENER :: 查看服务列表:tceng 有没有注册上来、状态是不是 READY lsnrctl services LISTENERlsnrctl start后面不写名字时默认操作LISTENER,写上更明确。启动成功的输出会明确告诉你监听已经在哪个地址的 1521 端口上待命。
status是排查问题的第一现场,重点看三段:监听参数段(版本、启动时间、监听端点)、服务摘要段(有哪些实例注册上来)、命令执行结果。库还没建的时候,服务摘要段是空的,这是正常的。
services更细,它会列出每个注册上来的服务名、状态和已经建立的连接数。tceng那行的状态应该是READY;如果是BLOCKED或者压根没有这一行,先去看实例是不是真起来了,看v$instance,而不是先怀疑监听。这个顺序反了,会在监听配置上白折腾半天。
服务端启动之后,如果希望开机自动拉起监听,把 Windows 服务OracleOraDb10g_home1TNSListener的启动类型从"手动"改成"自动"。注意只改监听这一个,数据库实例服务(OracleServiceTCENG)的启动类型要看实际需求,测试环境自动启动方便,生产环境通常手动控制启动顺序。
4. 把 TC 模板塞进 DBCA:tceng 库的建库参数与三个默认项
4.1 模板机制:DBCA 里为什么会多出 Teamcenter Oracle 10g
DBCA(Database Configuration Assistant)启动时会扫描%ORACLE_HOME%\assistants\dbca\templates目录下的*.dbc文件,每个文件就是一份数据库模板。模板不是普通的 SQL 脚本,它里面封装了数据文件布局、初始化参数、字符集设定,以及可选的建库后脚本,所以用它建库比手工写CREATE DATABASE省事得多,也比用通用模板建完再改参数可靠。
Teamcenter 2007.1 的介质里带了一份针对 10g 调过的模板,位置在Tc2007.1_wnti\tc\db_scripts\oracle。这个目录的存在本身就说明厂商清楚自己的库对参数有要求——比如字符集、块大小、以及某些和 PLM 元数据表相关的初始化设定。把它拷进 DBCA 的扫描目录,模板列表里就会多出一项Teamcenter Oracle 10g,选中它建库,等于让厂商把这些参数替你填好了。
这也解释了为什么不建议直接用"事务处理"或"通用"模板:用通用模板建完,再去手工比对参数,工作量大不说,漏掉一两个参数通常要等到 TC 服务端连上来、跑建表脚本时才会暴露,那时候排查成本高得多。
4.2 拷贝路径与目录结构校验
拷贝这一步看着简单,实际上是整个流程里翻车率最高的动作之一,因为它有两个隐含要求:文件必须落在 templates 的根层,且 Oracle 的运行账户要能读到。
:: 先在同一个管理员 cmd 窗口里设好两个路径 set TC_MEDIA=D:\install\Tc2007.1_wnti set ORACLE_HOME=D:\oracle\product\10.2.0\db_1 :: 把 TC 的 oracle 脚本目录整个拷进 DBCA 的模板目录 xcopy "%TC_MEDIA%\tc\db_scripts\oracle\*.*" "%ORACLE_HOME%\assistants\dbca\templates\" /E /Y :: 校验:.dbc 必须直接出现在 templates 根下 dir "%ORACLE_HOME%\assistants\dbca\templates\*.dbc"xcopy的两个参数含义:/E表示连空子目录一起拷,/Y表示遇到同名文件直接覆盖不问。用/E是因为源目录里可能带子目录,但这里有个陷阱——如果模板文件本身就在子目录里,拷完它依然在子目录里,DBCA 扫不到。
所以dir这条校验不能省。期望的结果是.dbc文件直接列在 templates 目录下,路径形如...\assistants\dbca\templates\xxxx.dbc,而不是...\templates\oracle\xxxx.dbc。后者说明多套了一层目录,把文件往上挪一层再重新扫。我一般会把这一步的结果截图留着,后面 DBCA 列表里没出现模板时,直接对比就知道是拷贝的问题还是别的问题。
还有一点:拷完之后如果 cmd 窗口一直开着,不影响;但 DBCA 如果在拷贝之前就启动过,需要关掉重开,它只在启动时扫一次目录。
4.3 DBCA 建库逐屏:全局库名 tceng 与统一口令
从开始菜单进Oracle - OraDb10g_home1→配置和移植工具→Database Configuration Assistant。逐屏参数如下:
| 屏幕 | 选择 | 说明 |
|---|---|---|
| 操作 | 创建数据库 | 不是配置或删除 |
| 数据库模板 | Teamcenter Oracle 10g | 拷进去的模板才会出现 |
| 数据库标识 | 全局数据库名tceng,SIDtceng | SID 从全局名默认带出,保持一致 |
| 管理选项 | 取消配置 Enterprise Manager | 省内存,也避免 dbconsole 抢端口 |
| 数据库凭证 | 所有帐户使用同一口令:tceng | 测试环境图省事,生产要分开 |
| 存储选项 | 文件系统 | 除非确实配了 ASM |
| 恢复配置 | 按需启用归档 | 测试环境可关,省磁盘 |
| 数据库内容 | 不勾示例方案 | 示例方案对 TC 无用 |
| 初始化参数 | 模板自带,内存与字符集不要手改 | 字符集改错后患无穷 |
| 创建选项 | 创建数据库,可勾选生成建库脚本 | 生成脚本留着,便于复现 |
几个决策点解释一下。
全局数据库名和 SID 都设成tceng,是为了让服务名、实例名、以及后面 TC 连接配置里的名字全部统一。如果这里给全局名带了域名后缀(比如tceng.local),SID 会自动变成tceng,两者不一致,后面写连接串容易写错。
"所有帐户使用同一口令"这一屏,勾上之后SYS、SYSTEM、SYSMAN、DBSNMP全部是tceng。这在测试或教学环境是可以接受的做法,因为要记的口令少,出错概率低;但在任何长期运行的环境里都该分开设,尤其DBSNMP是监控账户,用同一个口令等于把高权限口令散布到了监控配置里。
"取消配置 Enterprise Manager"也不是必需的,但 10g 的 dbconsole 会额外占一个端口、多一个 Java 进程,在本来就不宽裕的老机器上是负担。真需要图形化监控,装完之后随时可以用emca重新配。
最后的"创建选项"里有一个"生成数据库创建脚本"的勾选框,建议勾上。它会把 DBCA 实际执行的建库脚本落成文件,以后要在第二台机器上复现,直接改脚本里的路径跑一遍就行,不用再走一遍向导。这个文件是排错时最有用的东西,比看日志直观。
建库过程跑完,向导会显示数据库创建完成,并给出ENTERPRISE MANAGER和iSQL*Plus的访问地址。这些地址在没配 EM 的情况下没有意义,忽略即可,重点是把退出前那份摘要里的全局数据库名和 SID 记下来。
5. 避坑现场:五个高频翻车点与排查顺序
5.1 DBCA 模板列表里没有 Teamcenter Oracle 10g
现象:DBCA 启动后进到"数据库模板"这一屏,列表里只有通用、事务处理、数据仓库这几个,怎么找都没有 Teamcenter 那一项。
原因通常有三个层次。最常见的是模板文件落在了 templates 的子目录里,DBCA 只扫根层,扫不到就静默跳过,一句提示都没有。其次是 Oracle 的 Windows 运行账户对拷进去的文件没有读取权限,尤其是从别的机器或 U 盘拷过来的文件,可能带着只读属性或者权限继承不完整。第三种是 DBCA 在拷贝之前就已经启动过,扫描早就完成了。
解决顺序:先用dir "%ORACLE_HOME%\assistants\dbca\templates\*.dbc"确认文件在根层;然后对文件右键看属性,把"只读"去掉;再检查目录的安全选项卡里Authenticated Users或Everyone是否有读取权限;全部确认之后彻底关掉 DBCA 进程再重开。三步做完还不出,就把文件直接拷到%ORACLE_HOME%\assistants\dbca\templates下再试一次,排除源目录路径过长的问题。
5.2 监听起不来,报 TNS-12560 或 TNS-00530
现象:lsnrctl start执行后报TNS-12560: TNS: 协议适配器错误,或者伴随TNS-00530: 协议适配器错误。
原因集中在三处。一是主机名解析不到,listener.ora里写的是计算机名,但本机 hosts 文件没有对应记录、DNS 也查不到,监听在绑定时就失败。二是端口被占,机器上装过第二个 Oracle 主目录,那边的监听已经在 1521 上待着了。三是 Windows 上服务账户权限不对,监听服务以 LocalSystem 之外的账户运行但缺少"登录为服务"的权限。
排查先看端口:netstat -ano | findstr :1521,能查到占用进程的 PID,再去任务管理器对一下是哪个进程。端口没被占,就试ping 计算机名,通不了就补 hosts。前两项都没问题,再去看 Windows 服务里OracleOraDb10g_home1TNSListener的登录账户设置,改成默认的本地系统账户再启动。
5.3 建库跑到一半失败,报 ORA-12547 或口令相关错误
现象:DBCA 进度条走到"创建并启动 Oracle 实例"或"创建数据库"阶段失败,日志里出现ORA-12547: TNS: 丢失的接触,或者提示口令不符合要求。
原因:ORA-12547在 Windows 上多半是ORACLE_HOME的权限问题——安装目录不是由 Oracle 安装程序创建的,或者被安全软件改过 ACL,导致oracle.exe无法正常运行。口令相关错误则是因为模板里带了口令校验规则,而tceng这个六位纯字母口令在复杂度检查下不合格。
解决:权限问题最快的验证方法是在同一个 cmd 窗口里直接跑sqlplus / as sysdba,如果能进说明可执行文件没问题,问题出在 DBCA 调用链上,去%ORACLE_BASE%\cfgtoollogs\dbca下翻最新的日志。口令问题按提示换一个带数字的,但换完要记住——后面 TC 服务端配置里的数据库口令必须同步改,不然装完连不上,又是一轮排查。
5.4 安装向导在先决条件检查处卡住,或提示 DHCP 警告
现象:检查列表里出现"网络配置 - DHCP"相关的警告,或者"操作系统内核参数"提示不满足,向导停在那里不动。
原因:Oracle 10g 的检查器要求数据库服务器使用静态 IP,检测到网卡通过 DHCP 获取地址就报警。另外主机名里带下划线、带中文、或者超过一定长度,也会触发检查失败。这些警告在测试环境里绝大多数可以忽略,但忽略之前要清楚后果:DHCP 环境下机器重启后 IP 变了,客户端配好的连接串就失效。
处理办法:给机器配固定 IP,主机名改成纯字母数字(比如tc-db01),补一行 hosts,然后重新跑检查。环境确实做不到固定 IP 的,可以在检查结果页勾选"全部忽略"继续装,但要在交付文档里写清楚这个前提,避免后面接手的人拿固定 IP 的假设去排查。
5.5 装完 Oracle,整机变慢,TC 服务启动超时
现象:数据库装好之后机器明显变卡,内存占用长期在高位,Teamcenter 服务端启动时报连接超时。
原因:10g 的默认内存参数是按物理内存的百分比自动算的,在内存本就不大的机器上会把 SGA 开得很大;再加上 dbconsole 的 Java 进程常驻,两下叠加就把可用内存吃光了。TC 服务端启动时要连库、建连接池,内存不足时握手变慢,表现出来就是超时。
解决:先算清楚这台机器上除了 Oracle 还要跑什么,把sga_target和pga_aggregate_target设成固定值而不是自动;确认不需要图形化监控就把 dbconsole 停掉并禁用;再检查归档是否开着、闪回区是不是把盘写满了。参数改完要重启实例才生效,改之前用之前生成的建库脚本对照一下,避免改错参数名。
6. 库建完先别装 TC:三项连通性验证和一份后悔药
建库跑完最后一步,向导说成功,这时候最容易犯的错是直接开始装 Teamcenter 服务端。我的习惯是停在这里做三项验证,十分钟的事,能省掉后面几小时的扯皮。
第一项,实例层面。开一个 cmd 窗口把ORACLE_SID设成tceng,用sqlplus / as sysdba进去,然后跑三条查询:
-- 实例是否真的起来了 SELECT instance_name, status, database_status FROM v$instance; -- 库的打开模式 SELECT name, open_mode FROM v$database; -- 字符集,这一项跟 TC 的元数据强相关 SELECT parameter, value FROM nls_database_parameters WHERE parameter IN ('NLS_CHARACTERSET','NLS_LANGUAGE','NLS_TERRITORY');status应该是OPEN,open_mode是READ WRITE。字符集这一项要特别看——如果装出来是ZHS16GBK而交付要求是AL32UTF8,后面导入任何带多语言的数据都会出乱码,而且字符集不是改个参数就能变的,只能重建库。所以在装 TC 之前确认这一项,是最便宜的时机。
第二项,监听层面。lsnrctl services LISTENER,确认tceng那一行的状态是READY。如果实例是开着的但这里看不到,问题在注册,去看local_listener参数和listener.ora里的地址是否一致,而不是去改监听。
第三项,客户端层面。在建库机器上用sqlplus system/tceng@tceng试一次,走的是网络连接而不是本地 OS 认证,能通才说明监听、服务名、口令三样都对。这一步过了,TC 服务端那边的数据库连接配置基本不会出问题。
最后说一个我每次都会做的动作:用 DBCA 的"管理模板"功能,把刚建好的tceng反向导出成一份自定义.dbc。入口在 DBCA 首页的操作列表里,选"管理模板" → "从现有数据库创建模板",指向tceng即可。这份模板里带着实际调过的参数和当前的库结构,比介质里那份通用模板更贴合现场。它的价值在于——以后要在第二台机器上复现这套环境,把这份.dbc放进 templates 目录,建库时直接选它,连参数微调都省了。这就是我给老环境准备的后悔药。
从那以后我每次装这套东西,都在建库完成、装 TC 之前强制走一遍这三项验证,多花十分钟,避开的是字符集和注册这两类最难回头的问题。希望帮到你。
本文还有配套的精品资源,点击获取