【问题标题】:DBCA cannot be run as rootDBCA 不能以 root 身份运行
【发布时间】:2015-03-18 12:45:21
【问题描述】:

我正在尝试自动化 DBCA 来创建一个新数据库。我正在使用带有 Vagrant 的框 bseller/oracle-standard

provision.sh

#!/bin/bash
echo 'Import environment variables'
env=$( grep -ic "ORACLE_SID" /etc/profile )
if [ ! $env -eq 1 ] ; then
    echo export ORACLE_SID=mydatabase >> /etc/profile
    echo export ORACLE_BASE=/u01/app/oracle >> /etc/profile
    echo export ORACLE_HOME=/u01/app/oracle/product/11.2/dbhome_1 >> /etc/profile
    source /etc/profile
    echo export PATH=$PATH:$ORACLE_HOME/bin >> /etc/profile
fi

echo "Connect with user ORACLE"
sudo su -l oracle

echo "Loading environment variables"
source /etc/profile

echo 'Create database mydatabase'
if [ ! -d /u01/app/oracle/oradata/mydatabase ] ; then
    dbca -silent -createDatabase -templateName General_Purpose.dbc -gdbName mydatabase -sysPassword mypassword -systemPassword mypassword -scriptDest /u01/app/oracle/oradata/mydatabase -characterSet WE8ISO8859P1
fi

但是这个脚本不起作用:

$ sh provision.sh 
Import environment variables
Connect with user ORACLE
Loading environment variables
Create database mydatabase
DBCA cannot be run as root.

在命令行中运行 provision.sh 中的所有行。工作!

【问题讨论】:

  • 我认为在 dba.stackexchange.com 上问这样的问题会更好。

标签: oracle shell dbca


【解决方案1】:

我想知道下面的行不能在 shell 脚本中运行 oracle 命令:

sudo su -l oracle

你应该包装你的命令来让它工作:

su -c "dbca -silent -createDatabase -templateName General_Purpose.dbc -gdbName qualidade -sysPassword password -systemPassword password -scriptDest /u01/app/oracle/oradata/qualidade -characterSet WE8ISO8859P1" -s /bin/sh oracle

我在这里得到了这个解决方案: how to run script as another user without password

【讨论】:

    【解决方案2】:

    无法检查可用内存

    我固定在这种形式:

    我使用 OLD 安装 Oracle(运行良好的 Oracle 11g)转到我的另一台服务器,然后找到 3 个文件:

    oracle_env.csh
    oracle_env.sh
    nls_lang.sh
    

    由于此文件不存在在新服务器中,我使用内容(路径正确)创建文件

    1. oracle_env.csh
    2. oracle_env.sh

    并将这些行放入其中:

    touch /opt/oracle/product/18c/dbhomeXE/bin/oracle_env.csh
    echo 'setenv ORACLE_HOME /opt/oracle/product/18c/dbhomeXE
    setenv ORACLE_SID XE
    setenv NLS_LANG `$ORACLE_HOME/bin/nls_lang.sh`
    setenv PATH $ORACLE_HOME/bin:$PATH' >> /opt/oracle/product/18c/dbhomeXE/bin/oracle_env.csh
    

    第二个文件之后:

    touch /opt/oracle/product/18c/dbhomeXE/bin/oracle_env.sh
    echo 'export ORACLE_HOME=/opt/oracle/product/18c/dbhomeXE
    export ORACLE_SID=XE
    export NLS_LANG=`$ORACLE_HOME/bin/nls_lang.sh`
    export PATH=$ORACLE_HOME/bin:$PATH' >> /opt/oracle/product/18c/dbhomeXE/bin/oracle_env.sh
    

    因为文件nls_lang.sh很长,并且有很多关于CHARSET的配置,我从旧服务器复制到新服务器。

    之后是此文件的必要配置所有者/组:

    chown oracle:oinstall /opt/oracle/product/18c/dbhomeXE/bin/oracle_env.csh
    chown oracle:oinstall /opt/oracle/product/18c/dbhomeXE/bin/oracle_env.sh
    chown oracle:oinstall /opt/oracle/product/18c/dbhomeXE/bin/nls_lang.sh
    

    nls_lang.sh 文件也需要 755:

    chmod 0755 /opt/oracle/product/18c/dbhomeXE/bin/nls_lang.sh
    

    是否需要以 oracle 用户身份登录:

    su -l oracle
    

    然后我转到文件夹并加载 vars 环境:

    cd /opt/oracle/product/18c/dbhomeXE/bin
    . ./oracle_env.sh
    

    终于可以运行命令dbca

    dbca -createDatabase -silent -gdbName ora18c -templateName XE_Database.dbc -sysPassword YourPWD1 -systemPassword YourPWD1 -dbsnmpPassword YourPWD1 -datafileDestination /opt/oracle/oradata -storageType FS -memoryPercentage 20 -emConfiguration NONE -sampleSchema false -J-Doracle.assistants.dbca.validate.ConfigurationParams=false
    

    我得到了很好的结果:

    [server@petro bin]$ dbca -createDatabase -silent -gdbName ora18c -templateName XE_Database.dbc -sysPassword YourPWD1 -systemPassword YourPWD1 -dbsnmpPassword YourPWD1 -datafileDestination /opt/oracle/oradata -storageType FS -memoryPercentage 20 -emConfiguration NONE -sampleSchema false -J-Doracle.assistants.dbca.validate.ConfigurationParams=false
    Prepare for db operation
    10% complete
    Copying database files
    40% complete
    Creating and starting Oracle instance
    42% complete
    46% complete
    50% complete
    54% complete
    60% complete
    Completing Database Creation
    66% complete
    69% complete
    70% complete
    Executing Post Configuration Actions
    100% complete
    Database creation complete. For details check the logfiles at:
    /opt/oracle/cfgtoollogs/dbca/ora18c.
    Database Information:
    Global Database Name:ora18c
    System Identifier(SID):ora18c
    Look at the log file "/opt/oracle/cfgtoollogs/dbca/ora18c/ora18c.log" for further details.
    [server@petro bin]$
    

    因为我在这个服务器中需要 PHP,所以我需要 OCI8,然后我运行:

    /usr/bin/ea-php72-pecl install oci8
    /usr/bin/ea-php71-pecl install oci8
    /usr/bin/ea-php70-pecl install oci8
    

    当这个请求时:

    **Please provide the path to the ORACLE_HOME directory. Use 'instantclient,/path/to/instant/client/lib' if you're compiling with Oracle Instant Client [autodetect] :**
    

    samplelly [ENTER] 那么这对我来说运行良好......

    问候。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-07-29
      • 2013-12-19
      • 2022-09-29
      • 2017-12-15
      • 1970-01-01
      • 2020-07-14
      相关资源
      最近更新 更多