我对Oracle来说还很陌生,我正试图制作一个脚本,使它每次从cronjob运行时都备份数据库。
我一直在网上进行很多讨论,但是即使我做了一些小小的尝试,我还是没有真正找到任何东西。 我需要做的是从一个脚本运行所有内容,从创建数据库目录备份位置到运行备份本身
sqlplus / as SYSDBA << EOF
CREATE DIRECTORY dmpdir AS '/nfs/ora_bck/';
exit
EOF
它应该给我一些积极的输出,但是我却遇到了一些数据库未挂载的错误,这是没有道理的,因为这是我们的生产数据库正常运行并且没有任何问题
答案 0 :(得分:0)
尝试使用<<EOF
(从<< EOF
中删除空格),并使用具有授予权限(DMPDIR
的UpperCase目录名grant read, write on directory DMPDIR to <yourSchema>
,并确保路径{{1 }}确实存在。
答案 1 :(得分:0)
所以事实证明,我需要添加的所有内容是: 导出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