【问题标题】:Database backup script数据库备份脚本
【发布时间】:2019-05-29 05:41:09
【问题描述】:

我是 Oracle 的新手,我正在尝试制作一个脚本,每次从 cronjob 运行时备份数据库。

我一直在网上寻找很多讨论,但即使我做了一些小步骤,我也没有真正找到任何东西。 我需要做的是运行 1 个脚本中的所有内容,无论它是从创建数据库目录备份位置到运行备份本身

sqlplus / as SYSDBA << EOF
CREATE DIRECTORY dmpdir AS '/nfs/ora_bck/';
exit
EOF

它应该给我一些积极的输出,但我得到一些没有安装数据库的错误,这没有意义,因为它是我们的生产数据库,它已经启动并运行,没有任何问题

【问题讨论】:

    标签: oracle sqlplus


    【解决方案1】:

    尝试使用&lt;&lt;EOF(从&lt;&lt; EOF 中删除空格),并使用大写目录名称DMPDIR 并授予权限(grant read, write on directory DMPDIR to &lt;yourSchema&gt;),并确保路径/nfs/ora_bck/ 确实存在。

    【讨论】:

    • 它存在并且已安装,尝试了空间和没有但输出是相同的,我现在得到一个不同的错误:连接到一个空闲实例。 ORA-01034: ORACLE 不可用
    • @valerioooo 看来你需要发出命令SQL&gt; startup
    • 不是这样,数据库已经启动并运行,我解决的代码有问题,谢谢帮助
    【解决方案2】:

    所以我需要添加的只是: export ORACLE_SID=SID(可以从 ps -ef | grep pmon 找到) 然后是脚本的其余部分。

    希望这会对遇到同样问题的人有所帮助。

    以防万一有人需要脚本:

    command.sh

    export ORACLE_SID=SID
    sqlplus / as SYSDBA <<EOF
    CREATE DIRECTORY fulldp_dir AS '/mnt/nfs/backup_ora/';
    exit
    EOF
    

    backup.sh

    export ORACLE_SID=SID
    expdp \"/ as sysdba\" directory=fulldp_dir full=y dumpfile=full_exp.dmp logfile=full_exp.log
    

    【讨论】:

    • 不仅仅是ORACLE_SID;您可能需要一些其他的,例如 LD_LIBRARY_PATH、ORACLE_HOME。幸运的是,在 UNIX/Linux 环境中,Oracle 提供了一个名为 oraenv 的脚本。当脚本你会做export ORAENV_ASK=NO; export ORACLE_SID=SID; . oraenv; export ORAENV_ASK=YES.
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-11-09
    • 2023-03-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多