ARTICLE · INTELLIGENCE

战地情报 · 详情页

来自尧图项目组的一线实战观察与深度解析

Oracle 11.2安装全攻略:从环境预检到监听器配置的避坑指南

Oracle 11.2安装全攻略:从环境预检到监听器配置的避坑指南 1. 开发人员绕不开的坎Oracle为什么难装1.1 安装问题到底出在哪作为开发人员如果你的项目里已经有DBA帮你把Oracle环境搭好那是很幸福的但多数中小团队、独立开发者和即将面试的Java后端早晚都得自己动手装一次Oracle。我自己第一次装Oracle 11.2是在一台Win7笔记本上装到一半弹了个“内存不足”直接回滚当时差点把电脑砸了。后来查清楚才发现根本不是物理内存不够而是安装程序对操作系统交换空间有硬性要求Windows下对应的是页面文件pagefile.sys。这类问题你去搜“Oracle安装失败”能看到一大片人踩同样的坑。说实话Oracle安装之所以难根源有两个一是它功能太重安装器会在装之前做非常严格的环境体检任何一项不满足就直接中止二是Oracle的安装器对硬件、系统配置、权限体系都非常挑剔一旦报错提示信息往往不够直白。这就导致很多开发人员卡在第一道门槛上还没碰数据库就失去了耐心。所以与其等到报错再四处翻资料不如在动手之前搞明白它的体检逻辑把该准备的都准备好。这篇文章就是基于我个人多次安装Oracle 11.2的经验面向开发人员写的一份完整方案。从安装包获取、环境预检、一步步安装到安装后的监听器配置和验证再到最常见的安装失败场景和排查思路一次讲清楚。文末会附上我个人总结的一些“血泪教训”希望能帮你少走弯路。1.2 动手前先把版本和安装方式定下来Oracle 11g R2是特别经典的版本官方代号11.2.0.x很多生产环境到现在还在跑。对开发人员来说版本选择真的很影响后续体验。如果你只是为了学习和本地开发我建议直接选11.2.0.4这个补丁级别它是11.2系列的最后一个补丁集稳定性和兼容性最好。如果是为了和公司线上环境保持一致那就得先问清楚DBA线上跑的是哪个版本尽量装同版本或相近版本避免本地开发时语法和特性不一致。安装方式上Oracle安装器给了三个主要选项仅安装数据库软件、创建和配置数据库、升级已有的数据库。开发人员首次安装直接选“创建和配置数据库”最省事装完就能连能查。“仅安装数据库软件”是给那种要手动用DBCA建库的场景用的适合需要自定义多个实例的进阶用户新手不建议一上来就这么干。另外有一个容易忽略的概念Oracle 11.2安装包分为Windows版和Linux版两者不能混用。如果你本机是Windows就下Windows x64版如果是Linux服务器就下Linux x64版。很多安装失败案例都是下载了Linux包却想在Windows上跑或者反过来这种低级错误我见过不止一次。接下来我会把安装包和环境的准备工作一次性说清楚。2. Oracle 11.2 安装包获取与系统预检2.1 安装包怎么选、去哪下、怎么验证Oracle 11.2安装包的下载理论上最正规的渠道是Oracle官网的下载中心搜索“Oracle Database 11g Release 2”就能找到对应页面。下载时需要注册一个Oracle账号这个免费填个邮箱就能搞定。下载下来通常是一到两个ZIP压缩包大小加起来在2GB左右。对于不愿在官网注册、或者需要量大下载慢的朋友也可以从一些大型软件站或网络硬盘获取但我强烈建议下载后先把校验值MD5或SHA对比一下。Oracle官方会给每个安装包提供校验值你打开Linux的md5sum命令或者Windows下的Hash工具算出本地文件的校验值和官方公布的一致再继续操作。这一环节很多人跳过结果装到一半发现安装包损坏报错找不到某个文件白白浪费时间。在版本细节上Oracle 11.2有几个小版本要注意补丁级别说明建议11.2.0.1初版问题多不推荐11.2.0.2修复部分问题但仍有缺陷不推荐11.2.0.3较稳定但仍少于最终版看情况11.2.0.4最终补丁集最稳定强烈推荐下载时注意选择带“112040”或“11.2.0.4”字样的版本。我自己的做法是直接下11.2.0.4一步到位省得以后还要打补丁。2.2 安装前必须完成的环境预检清单我每次给别人远程协助装Oracle都会先让他对照着做一遍环境预检做完再点安装。这套检查清单是踩了无数次坑之后总结出来的第一操作系统版本。Oracle 11.2官方支持Windows Server 2008、Windows 7等老系统但很多开发人员现在用的是Windows 10、Windows 11。实践来说Windows 10专业版装11.2.0.4是可行的但需要满足两个前提一是用Administrator或具有管理员权限的账户安装二是关闭UAC用户账户控制或者安装时用管理员身份运行setup.exe。Windows 11上也能装但偶尔会遇到兼容性提示右键安装程序选择“兼容性疑难解答”选Windows 7兼容模式能解决大部分问题。第二足够的内存和磁盘空间。Oracle 11.2安装过程本身就需要至少2GB内存推荐4GB以上。如果机器内存不足8GB建议关闭所有不必要的应用再装。磁盘空间至少预留10GB这还只是安装后的基本占用后续建库、日志、归档都会用掉不少空间。我装的时候C盘可用空间不足导致装一半停滞的案例发生过多次。空间不够时要么清理系统盘要么把Oracle安装目录指定到其他盘。第三页面文件设置。Windows下Oracle安装器会检查分页文件大小一般要求等于物理内存的1.5倍左右。如果你的物理内存是8GB页面文件初始大小最好设置为4096MB以上最大值可以设为8192MB。在“高级系统设置-高级-性能设置-高级-虚拟内存”里手动设定设完要重启才能生效。这一步是典型的“安装前不做安装时报错”的坑。第四关闭杀毒软件和防火墙。这个非常关键。很多杀毒软件会拦截Oracle安装器释放文件、注册服务导致安装到中途突然报错退出。防火墌则可能阻止Oracle监听服务对外通讯导致安装完成后客户端连接失败。我的习惯是安装期间先全部退出或禁用等数据库能正常启动、监听能正常响应了再重新开启杀软并把Oracle相关目录加入白名单。第五干净的安装目录。Oracle安装目录不要包含中文、空格和特殊字符。比如“D:\oracle\product\11.2.0\dbhome_1”这种路径就很好。如果安装在中文路径下很多开发工具和命令行操作会碰到编码问题到时候排查起来非常痛苦。第六确认无残留的Oracle服务或进程。如果以前装过Oracle又卸载过可能残留监听进程、Oracle服务或注册表项。这种残留会导致新安装失败提示类似“OracleServiceORCL已存在”。建议用安装目录下的deinstall工具彻底清理或者手动删除服务并清理注册表。宁可多花半小时清理也不要带着隐患继续装。这套预检做下来大概十几分钟但能省下来回折腾的几个小时。有过一次失败经历的人应该深有体会。3. 面向开发人员的完整安装实操Windows为主3.1 从解压到完成安装一步步推演环境预检全部通过后开始正式安装。如果你下载的是ZIP压缩包先解压到没有中文和空格的路径比如“D:\install\oracle112”。解压后找到“setup.exe”右键选择“以管理员身份运行”这一步千万别省否则后面很容易出现权限不足的报错。安装器启动后会进入“配置安全更新”页面这里有个“通过My Oracle Support接收安全更新”的勾选项开发本机装没必要勾直接去掉复选框下面会弹出一条确认消息点“继续”即可。这步不填邮箱完全不影响安装网速不好时反而能避免安装器卡在联网检测上。接着来到“下载软件更新”或“安装选项”页面我习惯选“仅下载并安装我要的软件更新”里最下面的“跳过软件更新”省时省力SQL补丁可以之后再打。如果身边有安装包自带的补丁文件也可以选“下载并安装软件更新”但这需要网络和账号开发场景没必要。然后是安装类型选择。开发人员第一次装选“创建和配置数据库”这就是默认选项。下面会要求选择“桌面类”还是“服务器类”这一步很多教程含糊带过。我明确建议如果是本地开发、学习、非生产环境选“桌面类”如果是用来模拟生产环境、需要并发高一点的连接选“服务器类”。两者的差异主要在于字符集、内存参数和后台进程数量的默认配置对开发影响不算大但“桌面类”默认会少装很多组件安装速度更快、占用更小。接下来填“Oracle基目录”和“软件位置”。Oracle基目录建议设为“D:\app\oracle”软件位置会自动生成“D:\app\oracle\product\11.2.0\dbhome_1”这两个路径都不要碰中文和空格。下方是“Oracle主目录用户”保持默认“使用虚拟服务账户”即可没必要手动创建Windows用户。数据库标识符SID默认是“ORCL”这个可以保留。真正需要注意的是“数据库版本”选择默认是“企业版”开发学习的话企业版就用企业版如果想节省资源可以选“标准版”但有些企业版的功能比如分区、RAC相关特性会缺失面试或做实验时可能碰不到想要的效果所以我建议还是选企业版。接下来设置“管理口令”。口令必须满足Oracle的密码复杂度要求要求至少8位包含大小写字母和数字这一点很多人会卡住。我见过有人明明设了“Oracle123”却被提示不符合要求原因是大小写和数字都有了但长度不够或者缺少特殊字符。建议直接设成“Oracle123456”这种带字母数字且长度足够的。如果想要更安全可以用“Oracle_11204”这种带下划线的口令符合复杂度规则。点“下一步”之后安装器会进入“先决条件检查”这里它会自动检测内存、磁盘、网络、软件包依赖等。绿色的钩子表示通过黄色感叹号和红色叉号表示有警告或失败。很多人看到警告就慌了其实红色“失败”的项必须解决黄色警告有些可以忽略。比如“物理内存不足”或“磁盘空间不足”的警告如果只是差一点点点“全部忽略”也能继续但我还是建议先把这些项处理掉再装别赌运气。检查通过后安装器显示“概要”页面列出安装产品、语言、空间占用等信息。这里可以滚动看一下是否有明显错误然后点“安装”。安装过程分为两个阶段复制文件和链接二进制、然后启动DBCA创建数据库。整个时间取决于机器性能一般15到40分钟期间不要点任何按钮也别开大型软件或游戏否则容易触发资源不足导致失败。安装完成后会弹出一个提示框让你管理口令还是退出直接点“口令管理”可以顺便设置SYSTEM、SCOTT等账户的密码。SCOTT是Oracle自带的演示账户开启后可以用来练习最基本的SQL。设完之后确认退出安装阶段就结束了。这里还要提醒一个重要细节安装完成后不要立刻重启系统先检查一下服务是否都注册成功。如果你嫌麻烦重启前最少要确认“OracleServiceORCL”和“OracleOraDb11g_home1TNSListener”这两个服务存在。如果不放心重启一次系统再开始配置也可以很多环境变量和路径在重启后才会完全生效。3.2 安装过程中的关键选项怎么选安装器里的选项非常多不是每个都值得细抠。但有三个选项直接决定了你后面连不连得上、跑不跑得动必须说清楚。第一个是“字符集”。在“创建和配置数据库”的“数据库内容”部分安装器会让你选择字符集。中国开发环境最常见的坑是安装时选了默认的AL32UTF8建出的数据库用的是Unicode但你的应用或历史数据用的却是ZHS16GBK导入数据时全是乱码。如果项目没有特殊要求直接选AL32UTF8就行这是Oracle跨平台、跨语言最稳妥的选择。如果你是那种只做中文业务、不上多语言的老项目ZHS16GBK会省很多事但新项目强烈建议AL32UTF8。第二个是“示例方案”。安装器会询问是否安装示例数据库HR、SCOTT等。建议勾上“安装示例方案”这样可以有一个现成的带数据的库便于练习SQL和验证连接不用自己造数据。生产环境不勾但开发环境勾上是划算的。第三个是“自动备份”。安装器在“恢复配置”部分会问是否启用自动备份。开发本机用不到Oracle会默认调用恢复管理器做备份白白消耗空间和性能直接取消“启用自动备份”即可。真要用备份功能时再用RMAN手动配置也完全来得及。3.3 Linux环境安装的差异点很多开发人员的应用服务器是Linux数据库也经常部署在Linux上所以这里把Linux环境安装的差异点单独讲一下。Linux上安装Oracle 11.2前置要求比Windows多不少。首先需要安装一些依赖包比如binutils、compat-libstdc、gcc、glibc、ksh、libaio、libgcc、libstdc、make、sysstat、unixODBC等。不同发行版包名略有差异CentOS/RHEL 7上安装的话用yum命令一次装齐避免装到中期报“缺少libaio”之类的错误然后卡住。其次需要创建专门的Oracle用户和组。官方建议创建oinstall组、dba组和oracle用户。安装目录所有者要设为oracle用户比如“/u01/app/oracle”。还有内核参数常见的包括kernel.shmall、kernel.shmmax、fs.file-max等。这些参数写在“/etc/sysctl.conf”里执行sysctl -p生效。新手容易漏掉的是用户资源限制需要修改“/etc/security/limits.conf”设置oracle用户的nofile打开文件数建议65536和nproc进程数建议16384。不设的话建库时会出现“ORA-27102: out of memory”或者文件句柄不够的报错。Linux的图形安装需要X Window环境。如果你是在本地虚拟机里装系统图形界面直接可用。如果是远程连接服务器需要借助X11转发或者VNC之类的图形会话工具否则setup界面起不来。更省事的做法是使用Oracle提供的静默安装方式用响应文件response file来装适合真正的服务器环境。安装过程的选项逻辑和Windows基本一致只是路径风格、权限模型不同。装完之后Linux上的启动命令是“sqlplus / as sysdba”启动数据库用“startup”关闭用“shutdown immediate”监听管理用“lsnrctl start/stop/status”这些命令的用法和Windows上完全一样只是别忘记先切换到oracle用户再操作。4. 安装完成后的基础设施配置与验证4.1 环境变量、服务与监听器安装完成不代表能用还差最后几步配置。操作系统环境变量对开发人员尤为重要因为以后你在命令行敲sqlplus、impdp、expdp这些工具时靠的都是环境变量。Windows下需要手动设置ORACLE_HOME和PATH。右键“此电脑-属性-高级系统设置-环境变量”在系统变量里新建“ORACLE_HOME”值为“D:\app\oracle\product\11.2.0\dbhome_1”。然后把“%ORACLE_HOME%\bin”追加到PATH变量前面。这一步不做命令行里输入sqlplus会提示“不是内部或外部命令”。另外建议新建一个“ORACLE_SID”环境变量值为“ORCL”这样在本地执行sqlplus / as sysdba时系统能自动找到实例。ORACLE_SID不设的话有时需要手写“sqlplus /nolog”再“connect / as sysdba”多点操作但不影响使用。接下来检查服务状态。按WinR输入services.msc找“OracleServiceORCL”和“OracleOraDb11g_home1TNSListener”这两个服务。前者是数据库实例进程后者是监听器进程。把“OracleServiceORCL”的启动类型设为“自动”以后开机就能直接用。“OracleOraDb11g_home1TNSListener”同样设为“自动”。监听器是开发过程中非常容易出问题的环节。理论上安装时监听器已经自动创建了一个名为“LISTENER”的监听端口是1521。但为了确保它可靠工作可以在命令行执行“lsnrctl status”查看状态。如果状态是“Listening on”说明监听正常。如果启动失败最常见原因是1521端口被占用了可以用“netstat -ano | findstr 1521”查看占用进程占用方可能是Oracle自己的另一个实例也可能是完全无关的应用。先把占用进程处理掉或者修改监听端口再“lsnrctl start”重新启动。4.2 用SQL*Plus和SQL Developer确认环境可用配置完环境变量和服务第一件要做的事就是从命令行验证数据库能不能连。打开CMD输入“sqlplus / as sysdba”如果进入了SQL提示符说明操作系统认证登录有效。接着输入“select name, open_mode from v$database;”如果看到OPEN表示数据库已正常打开。如果显示MOUNTED或者没有结果执行“alter database open;”打开数据库。接下来建议验证一下普通账户的连接。退出sqlplus输入“sqlplus system/你设置的口令localhost:1521/orcl”其中“orcl”是服务名。很多新人在这一步会报ORA-12514错误意思是监听器不认识这个服务名。原因通常是服务名不叫orcl而是orcl.localdomain或者orcl.example.com这种完整域名可以通过“lsnrctl services”查看当前监听注册的服务名。我自己就曾被这个坑卡过查了半小时才意识到服务名要带域名后缀后来干脆用SID连接jdbc:oracle:thin:localhost:1521:ORCL写SID大写就不用管服务名了。SQL Developer是Oracle官方的免费图形化客户端装服务端时并不自带需要单独下载。它支持Windows、Linux、Mac下载解压就能用。打开后新建连接连接类型选“Basic”主机名填“localhost”端口“1521”服务名称填“orcl”或者SID填“ORCL”用户名“system”密码填安装时设置的口令测试成功后保存即可。开发人员平时写SQL、调试存储过程、看执行计划SQL Developer完全够用不用动不动就上PL/SQL Developer。4.3 开发连接时的常见配置项数据库装好了也连上了接下来就是干活阶段。这里针对开发人员经常要用到的连接场景给出几个我认为很有价值的配置建议。第一JDBC连接字符串的写法。Java开发人员用Oracle时驱动里要确认使用ojdbc6.jar或ojdbc8.jar对应JDK版本不同。连接写法上jdbc:oracle:thin:localhost:1521:ORCL这里的ORCL是SID如果用服务名就要写作jdbc:oracle:thin://localhost:1521/orcl注意带双斜杠。两种写法差别很小但连不上时这就是排查方向。第二字符集问题。开发环境建库时选了AL32UTF8但远程数据库可能是ZHS16GBK。连接后可以通过“SELECT userenv(language) FROM dual;”查看会话的字符集。如果JAVA程序写入的中文变成问号或乱码多半是JVM编码和数据库字符集不匹配。我在项目里常用的做法是在连接URL上加“?useUnicodetruecharacterEncodingUTF-8”MySQL风格——但Oracle JDBC其实不吃这一套Oracle的nvarchar2类型和AL32UTF8才是正解。如果遇到乱码检查NLS_LANG环境变量Windows下可以设“NLS_LANGAMERICAN_AMERICA.AL32UTF8”再重启程序测试。第三系统表空间和临时表空间。开发人员给应用建用户时经常会犯建在SYSTEM表空间上的错误。正确做法是先创建表空间文件再建用户时指定默认表空间。比如“CREATE TABLESPACE app_data DATAFILE D:\app\oracle\oradata\orcl\app_data01.dbf SIZE 500M AUTOEXTEND ON MAXSIZE 2G;”然后“CREATE USER appuser IDENTIFIED BY app123456 DEFAULT TABLESPACE app_data TEMPORARY TABLESPACE temp;”。这样可以在任何环境里逻辑复用也不容易把系统表空间搞爆。5. 安装失败常见问题与解决方案5.1 十大经典报错排查手册结合我这些年看到、遇到过的案例把Oracle 11.2安装失败的常见问题整理成速查表遇到报错可以先对照这个表找方向报错/现象常见原因解决方案内存不足安装中止页面文件过小或物理内存不足增大页面文件关闭无关程序重启后再装安装到一半卡住不动杀毒软件拦截、网络更新卡住关闭杀软选“跳过软件更新”ORA-12514 监听器不识别服务服务名错误或监听未注册用lsnrctl services确认服务名或改用SID连接监听服务启动失败端口被占用、监听配置损坏检查1521端口listener.ora做备份后重建PRVF-0002 无法检索集群节点网络DNS解析问题配置hosts文件把本机主机名指向127.0.0.1ins_ctx.mk 报错Linux缺依赖包或gcc问题安装compat-libstdc、gcc-c等依赖包ORA-27125 无法创建共享内存段Linux内核参数shmmax设置过小调大kernel.shmmax执行sysctl -p系统不接受密码口令不满足复杂度设置至少8位、含大小写字母和数字的口令服务名已存在之前卸载不干净运行deinstall清理残留服务、注册表ORA-01034 / ORA-27101 无法连接到进程Oracle服务未启动或实例未打开启动OracleServiceORCLstartup打开实例这张表解决的是“我到底哪里错了”的问题。但光知道错在哪还不够排查思路和操作细节更重要。5.2 排查方法和我踩过的坑我自己装Oracle时踩得最深的坑就是刚拿到Win10笔记本时就急着点setup结果在“先决条件检查”阶段看到几个红色叉号也不知道什么意思随手点了“全部忽略”。安装倒是勉强走完了但建库过程异常缓慢最后DBCA直接报ORA-27102提示“out of memory”整个安装回滚白等了将近一个小时。后来才明白安装器提示“内存不足”时并不是真的没有物理内存了而是Oracle后台的实例参数设置不合理。常见的原因是安装时选了“创建和配置数据库”而安装器根据你机器上检测到的物理内存自动生成了一个较大的SGA配置比如SGA_TARGET设成了2GB但在某些系统上这个自动值会超过系统能分配的上限。解决方式是手动调整初始化参数编辑“D:\app\oracle\product\11.2.0\dbhome_1\database\initORCL.ora”文件或者spfile把sga_target调小到512M或1G。如果连实例都起不来用pfile方式启动先“create pfile from spfile;”再改pfile最后“startup pfile...”。另外一个典型的坑是我在一台配置不算低的机器上安装总是弹出“INS-30131: 无法访问临时位置”。这个错误在Windows下很常见根源是临时目录权限或者路径包含中文。解决方法是把TEMP和TMP环境变量统一设置为“C:\Temp”并确保目录存在、当前用户有完全控制权限。然后重新运行setup.exe。很多人一直忽略临时目录问题结果安装器解压临时文件时失败就报这个错。还有一次我远程帮一个朋友排查安装失败他截图报“ORA-12154: TNS无法解析指定的连接标识符”。检查后发现他本机有两个Oracle客户端版本PATH里先指向了旧版本的tnsnames.ora里面没有他的服务名配置。这种多Oracle客户端共存的环境变量冲突问题在开发人员机器上相当常见。建议开发人员把常用的那个Oracle的bin路径放在PATH最前面确保tnsnames.ora只保留一份主配置。tnsnames.ora的位置通常在“D:\app\oracle\product\11.2.0\dbhome_1\network\admin\”内容结构是“ORCL (DESCRIPTION (ADDRESS (PROTOCOL TCP)(HOST localhost)(PORT 1521)) (CONNECT_DATA (SERVER DEDICATED)(SERVICE_NAME orcl)))”。排查方法上我要强调一个原则看日志而不是瞎猜。Oracle安装器把日志写在“C:\Program Files\Oracle\Inventory\logs”以及安装目录的“cfgtoollogs”文件夹里比如installActions.log、oraInstall.log。报错后先打开这些日志搜“ERROR”关键字多半能看到真正失败的原因是路径不可写、组件缺失还是网络问题。这个习惯能让排查效率提升一倍以上。5.3 问题预防与善后处理比起出问题再排查更划算的是做好预防。我总结了一套“三要三不要”的预防清单要下载官方11.2.0.4完整包不要下到一半擅自停。要以管理员身份运行安装程序不要双击就算完。要关闭杀软和防火墙不要等到卡死才想起来。不要在安装过程中频繁点击或切换窗口。不要安装在中文路径或有空格的非ASCII路径下。不要轻易点“全部忽略”跳过红色的先决条件失败项。如果安装确实失败了先别急着重装。正确做法是清理掉残留再重新安装。清理工具首选Oracle自带的deinstall.bat在“D:\app\oracle\product\11.2.0\dbhome_1\deinstall”目录下它会自动删除实例、监听器和部分注册表项。如果deinstall也起不来再手动处理停止所有Oracle服务、删除Oracle相关目录、在注册表编辑器里搜索“ORACLE”键值并清理这步建议备份注册表、最后删除“C:\Program Files\Oracle”安装清单目录。清理完后重启再从头开始装。我试过只要清理干净第二次安装的成功率非常高。6. 开发人员的避坑经验与进阶建议6.1 与Java、JDBC、工具链配合时要注意什么Oracle数据库装好之后开发人员最关心的通常不是数据库本身而是怎么和自己的程序对接。这里说几个我长期踩出来的经验。Java开发环境要注意JDK和Oracle驱动版本的匹配。Oracle 11.2官方推荐用JDK 1.6或1.7但实际开发中很多人用JDK 1.8用ojdbc6.jar是可以兼容的。如果JDK版本太高比如17可能会出现连接时报“Unsupported class file major version”之类的错误这时候要换成ojdbc8.jar或更高版本驱动。注意ojdbc8.jar对应的是Oracle 12c及之后的驱动但向后兼容11g连接没有问题。实践下来JDK 8 ojdbc6.jar Oracle 11.2.0.4是一个非常稳的组合。字符集匹配是开发联调中最常见的坑。Oracle服务端的字符集在建库时定下了应用侧的JVM编码、连接串的编码、操作系统的NLS_LANG都会参与中文的“生产-传输-存储-读取”链路任何一环不一致都可能出乱码。我的建议是开发环境全链路统一用AL32UTF8 UTF-8避免出现GBK和UTF-8混用的情况。如果公司老库确实用了ZHS16GBK那应用侧也要保留GBK并在读取时做必要的转码。开发过程中经常要用到数据导入导出和备份。expdp和impdp是一对“数据泵”工具比老的exp/imp效率高很多。但要注意expdp/impdp只能用于同版本或高版本向低版本的限制方向错了会报错。导出时如果表空间名不一致导入时可能因为找不到表空间而失败需要在导入前先建好对应的表空间或者用“REMAP_TABLESPACEold:new”参数做映射。这些细节不搞清导入导出看似成功实际却没有数据。6.2 我对安装Oracle的个人体会和最后几条忠告装过几十次Oracle之后我最大的感受是Oracle安装的问题大多是“规则问题”不是“玄学问题”。因为它作为一个企业级数据库设计的默认行为就是“检查严格、配置严谨”而不是像某些轻量级数据库那样开箱即用。所以只要把它检查的规则摸清楚比如页面文件多大、目录不含中文、用户有权限、端口没被占那安装这条路其实是非常确定的。最怕的是两眼一抹黑直接点下一步碰到报错就砸电脑这种心态再好的工具也救不了你。最后再分享三个亲身经历换来的细节习惯。第一个每次安装前把系统还原点建一个虽然不是必须但万一装坏了可以直接还原省得清理残留。第二个安装完数据库后尽快用“alter user sys identified by 新密码;”改掉默认口令然后创建一套自己熟悉的用户和表空间习惯而不是一直用system账户。第三个如果你的机器内存只有4GB强烈建议在安装时选择“桌面类”并手动把SGA_TARGET设置成512M否则装完数据库跑起来整个电脑直接卡到无法使用。记住这三点你的Oracle本地开发环境推进会顺利很多。
RELATED READING

延伸阅读

更多一线实战笔记与深度复盘,助您持续精进