Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/shell/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Oracle DBCA不能作为根用户运行_Oracle_Shell_Dbca - Fatal编程技术网

Oracle DBCA不能作为根用户运行

Oracle DBCA不能作为根用户运行,oracle,shell,dbca,Oracle,Shell,Dbca,我正在尝试自动化DBCA来创建一个新的数据库。我和流浪汉一起用箱子 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_B

我正在尝试自动化DBCA来创建一个新的数据库。我和流浪汉一起用箱子

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中的所有行。成功了

我想知道下面这行代码不适用于在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
我在这里得到了这个解决方案: “无法检查可用内存”

我在此表格中确定:

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

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

  • oracle_env.csh
  • 甲骨文
  • 并把这句话放进它们里面:

    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很长,并且有许多关于字符集的配置,我将从旧服务器复制到新服务器

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

    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] :**
    
    Samplely[进入]那么这对我来说很好


    问候。

    我想最好在dba.stackexchange.com上问这样的问题。