从服务器构建说起(四).Linux下安装配置Oracle

草木瓜
 
20070417

一、序


  早在《虚拟机RedHatLinux9安装Oralce92全过程》一文中,(链结:http://blog.csdn.net/liwei_cmg/archive/2006/05/28/759286.aspx)
就详细说明了Linux环境安装Oracle的过程。不过再次尝试去发现了不少漏洞和新问题,
不得不感叹Linux安装配置Oracle的复杂性。本文平台RedHat 企业版4+Oracle 9.2.0.4
    服务器构建系列:http://blog.csdn.net/liwei_cmg/category/227512.aspx


二、修正错误

  在《虚拟机RedHatLinux9安装Oralce92全过程》一文中,提到:
  
  [注意事项]
    1.最好在Windows下解压缩出cpio文件,Winrar支持gz格式。经测试,Linux下执
    行gunzip速度太慢。
   
    这是十分不妥的!一方面Windows下Winrar解压缩速度,比起PC Server SCIS,实
    在太慢了。另一方面解压缩出的安装文件,在Linux下安装会有大量问题,每遇到
    完全大写的文件,就提示没有权限操作。后来在Linux解压安装未发生任何问题。
   
    后分析,当时得出这个结论原因是虚拟机的性能比较低,主观臆断而已。
   
三、安装与配置中新的问题

    除了以上的严重错误,其他安装过程是没有任何问题的。
    本次安装,只建立了一个oracle用户和对应组,组名也为oracle。
   
    第一个问题:
    在访问Windows共享资源时,smbmount不能打开端口,即mount -t smbfs无效。
    原因是Windows机器开了防火墙,禁止了相关端口。
   
    第二个问题:
    图形化安装过程,提示不能创建文件,无相关权限,这是由于在Windows下对
    gz文件做了解压缩,后来在Linux gunzip即可。
   
    第三个问题:
    首次安装,设置oraInventory目录,系统提示用root执行orainstRoot.sh。如果此
    后有问题终止安装后,重装发现oraInventory目录不能更改。原因是存在/etc/oraInst.loc
    文件。删除后,即可进行设置更改
   
    第四个问题:
   
    Exception thrown from action: make
  Exception Name: MakefileException
  Exception String: Error in invoking target install of makefile /home/oracle/ora9/oracle/plsql/lib/ins_plsql.mk
   
    编译make -f ins_plsql.mk提示什么找不到对应的glic2.3 ...
   
    这个问题是由于Oracle安装要求低版本的gcc,原来在虚拟机安装的gcc版本是3.2.2
    可以通过,这个企业版本Linux的gcc是3.4.4,后来发现存在/usr/bin/gcc32,将
    mv /usr/bin/gcc /usr/bin/gccnew
    mv /usr/bin/gcc32 /usr/bin/gcc
    再进行安装,没有任何问题,不过安装之后须要改回原样。
   
   
    第五个问题:
    使用dbca时创建数据库时,最后一步出现错误:
    home/oracle/ora9/oracle/bin/dbca: line 124: 31614 Segmentation fault      $JRE_DIR/bin/jre -DORACLE_HOME=$OH -DJDBC_PROTOCOL=thin -mx64m -classpath $CLASSPATH oracle.sysman.assistants.dbca.Dbca $ARGUMENTS
   
    修改dbca,将最后一行改为:
  # Run DBCA
  $JRE_DIR/bin/jre -native -DORACLE_HOME=$OH -DJDBC_PROTOCOL=thin -mx64m -classpath $CLASSPATH oracle.sysman.assistants.dbca.Dbca $ARGUMENTS
  fi
   
    即添加了一个native参数即可。
   
   
四、数据库的导入导出

   这里采用imp,exp进行针对性的数据导入导出。
  
   1.建立bat文件(expdata.bat),至于bat用法可help 命令查询帮助。内容如下:
  
  copy E:/backup/*.* E:/old_backup
  del /q E:/backup/*.*
  oracle_bakup.vbs


  2.VB Script 脚本 oracle_bakup.vbs:
  
  Option Explicit
  On Error Resume Next
  
  Dim fname, cmd
  Dim WshShell
  
  Set WshShell = CreateObject("WScript.Shell")
  
  fname = Date
  cmd = "exp log=e:/" & fname & ".log file=e:/" & fname & "_.dmp parfile=exp.txt"
  
  WshShell.run cmd
  Set WshShell = Nothing
  'WScript.Echo cmd
  
  3.exp.txt文件内容:
  
  userid=test/test@zjyx68
  buffer=209715200
  tables=
  (
  CNT_INFO,
  CNT_OPERATOR
  )
  compress=yes
  consistent=no
  grants=yes
  indexes=yes
  rows=yes
  constraints=yes  
  
   三个文件均在同一目录,双击执行bat即可,这里需要着重说明的是:
  
   A.字符集的一致性(字符集的经典文章《Oracle字符集问题总结》http://blog.csdn.net/liwei_cmg/archive/2006/06/04/772674.aspx)
  
   B.导入导入段的客户端版本和服务器版本的兼容性,如在9.2客户端导出9.0数据库
   再导入时会出现如下错误:
  
   . importing CUSTOM's objects into CUSTOM
  IMP-00017: following statement failed with ORACLE error 922:
   "CREATE TABLE "LIWEI_TEST" ("NAME" VARCHAR2(10))  PCTFREE 10 PCTUSED 40 INIT"
   "RANS 1 MAXTRANS 255 STORAGE(INITIAL 524288 FREELISTS 1 FREELIST GROUPS 1) T"
   "ABLESPACE "CUSTOM" NOLOGGING NOCOMPRESS"
  IMP-00003: ORACLE error 922 encountered
  ORA-00922: missing or invalid option
  Import terminated successfully with warnings.
  
  即使创建相关表结构,使用ignore参数仍然出错,将相关语句放在sqlplus执行
  会提示NOCOMPRESS为无效选项,这里推测还是版本的兼容性问题,即保证向下兼容。
  
  如用9.2客户端导出9.0数据库,提示
  EXP-00056: ORACLE error 942 encountered
  ORA-00942: table or view does not exist
  EXP-00000: Export terminated unsuccessfully
  
  后使用9.0客户端导入导出,则无任何问题。
  
  C.导入导出的buffer十分重要,如果内存够大,尽量设置大一些,尤其是在导出
  的情况,否则频繁的磁盘IO会导致导入导出十分缓慢。
  
  D.对于Package Function Procedure Sequence DBLink之类的导出,实际上就
  导出创建语句,可以使用PL/SQL进行操作,导入时只须执行导入的.sql文件即可。
  
  
五、最后的说明

    相关的系列文章到此就结束了,总体看来十分琐碎,然解决起来通常令人头疼 。
故用了大量篇幅罗列记录,以备查阅。 

Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐