在Linux(CENTOS)上为多个ORACLE HOME配置.bash_profile

时间:2017-03-31 00:03:24

标签: linux oracle oracle12c centos5

我使用的是带有CENTOS 5.11的服务器,在不同情况下我需要使用两个版本的Oracle。我已经成功安装了Oracle 10g,但我想安装12c,部分是为了迁移我的数据库。

问题是我不知道如何配置.bash_profile,它是以下列方式配置ORACLE_HOME的地方:

    ## Oracle Env Settings 
    export TMP=/tmp
    export TMPDIR=$TMP
    export ORACLE_HOSTNAME=oracle.localdomain
    export ORACLE_UNQNAME=MYDB  
    export ORACLE_BASE=/u01/app/oracle
    export ORACLE_HOME=$ORACLE_BASE/product/VERSION/db_1
    export ORACLE_SID=MYDB
    export PATH=/usr/sbin:$PATH          
    export PATH=$ORACLE_HOME/bin:$PATH
    export LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/lib
    export CLASSPATH=$ORACLE_HOME/jlib:$ORACLE_HOME/rdbms/jlib

我搜索过并且在Oracle的文档中只提到要安装另一个版本只需要在另一个ORACLE_HOME中安装它。所以,我的问题是,如何在.bash_profile中添加新的ORACLE_HOME?,同样如果我可以为新安装使用相同的用户和组。

4 个答案:

答案 0 :(得分:0)

一个很好的问题! 我偶然发现了以下内容:

  1. Ask Tom's solution
  2. 简而言之 - 使用DBCA配置第二次安装(它将为您处理这些细节,而不用担心听众)。这意味着当您安装第二个数据库时,只需使用Universal Installer存储文件,然后使用DBCA进行配置。

    1. solution over here
    2. 简而言之 - 使用ORACLE_SIDORACLE_HOME的软链接。这真是一个很长的教程,所以没有任何意义可以将它粘贴在这里。

      1. 我个人的最爱 - 转过Point1: - )。
      2. 现在认真 - 如果你只需要通过.bash_profile创建它,只需在其中放入一些if语句或为不同的数据库创建一些外部脚本并只是获取它们,或者让.bash_profile调用它们,当你采购它。

        将它全部包装起来 - 始终"安装"数据库只是存储文件,不信任安装程序。部署后,运行DBCA以配置安装。在所有情况下,它应该为您处理这些配置。在某些情况下,如果不是全部,DBCA实际上会为两者设置相同的ORACLE_HOMEORACLE_SID,但它们将具有不同的唯一名称,您将使用这些名称进行连接sqlplus启动/停止它们。 据我所知 - 所有解决方案都倾向于我在上面段落中提到的相同内容。

        干杯

答案 1 :(得分:0)

编写两个函数以在两个安装之间切换。

export SYS_PATH=$PATH
export TMP=/tmp
export TMPDIR=$TMP

## First Oracle Env Settings 
ora1 ()
{
  export ORACLE_HOSTNAME=oracle1.localdomain
  export ORACLE_UNQNAME=MYDB1
  export ORACLE_BASE=/u01/app/oracle
  export ORACLE_HOME=$ORACLE_BASE/product/VERSION/db_1
  export ORACLE_SID=MYDB1
  export PATH=/usr/sbin:$SYS_PATH          
  export PATH=$ORACLE_HOME/bin:$PATH
  export LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/lib
  export CLASSPATH=$ORACLE_HOME/jlib:$ORACLE_HOME/rdbms/jlib
}

## Second Oracle Env Settings
ora2 ()
{
  export ORACLE_HOSTNAME=oracle2.localdomain
  export ORACLE_UNQNAME=MYDB2
  export ORACLE_BASE=/u02/app/oracle
  export ORACLE_HOME=$ORACLE_BASE/product/VERSION/db_2
  export ORACLE_SID=MYDB2
  export PATH=/usr/sbin:$SYS_PATH          
  export PATH=$ORACLE_HOME/bin:$PATH
  export LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/lib
  export CLASSPATH=$ORACLE_HOME/jlib:$ORACLE_HOME/rdbms/jlib
}

使用您的默认值:

ora1

切换到另一个:

ora2

然后切换回来:

ora1

答案 2 :(得分:0)

.oraenv仅导入Oracle Env。如果还涉及其他应用程序,并且需要相应地设置环境;连同oracle env .bash_profile确实有帮助。

答案 3 :(得分:-1)

只需将/ etc / oratab的最后两行从N更改为Y,即可从数据库转移到另一个数据库...运行。

即可。 oraenv 在命令提示符无需担心.bash_profile

ora1:/u01/app/oracle/product/11.2.0/db_1:Y
ora2:/u01/app/oracle/product/11.2.0/db_1:Y