记一次Oracle自动备份任务的经历

o minute: 区间为 0 – 59

o hour: 区间为0 – 23

o day-of-month: 区间为0 – 31

o month: 区间为1 – 12. 1 是1月. 12是12月.

o Day-of-week: 区间为0 – 7. 周日可以是0或7.

目前为止,就可以达到指定时间自动备份oracle内容的目的了。当然,提前要先手动执行脚本测试一下,没有问题了再设置任务。

补充

以下是我遇到的一些坑。特此记录,以备不时之需

脚本文件编码问题

我一开始编辑脚本文件是在windows系统下的notepad++编辑,然后上传到服务器的,执行脚本的时候遇到个奇怪的问题:

记一次Oracle自动备份任务的经历

错误信息提示我第一行有个^M的符号,我一开始以为是内容不对,删除第一行之后还有,在百度找了下,网友说是文件编码问题,可以使用以下命令查看此文件中的所有符号:

记一次Oracle自动备份任务的经历

执行以上命令后,发现此文件里好多怪异的符号,才发现是windows下编辑文件的错。不得已我又使用vi命令重新创建了文件,把内容敲进去了才可以。

以前也一直使用notepad++编辑sh文件,但是这个错误还是第一次,不知道发生的原因,但是起码知道了如何解决。

Oracle SGA设置过小问题

脚本文件编辑后,肯定要先手动运行看看效果的,然后执行发现又出错了:

记一次Oracle自动备份任务的经历

百度了一下是因为SGA太小造成的,使用命令查看当前SGA设置(我这个是阿里云系统环境镜像,没有自己安装和设置,是默认值)

记一次Oracle自动备份任务的经历

接下来很明显了,就是要调整这个SGA的大小了。这里遇到了更大的坑。

网上的资料都是直接告诉你把sga设置的大一点然后重启就可以了,就像下面这样:

SYS@ xxxx1> alter system set sga_max_size=10G scope=spfile;

SYS@ xxxx1> alter system set sga_target=10G scop=spfile;

SYS@ xxxx1> shutdown immediate

SYS@ xxxx1> startup

但是,千千万万别直接按照这个操作来,我就是因此入坑的

网上的资料都是告诉你调大就行了,其实这个参数的设置是和另外一个参数相关联的,如果直接把它调大,直接的后果就是oracle关闭后起不来了,我今天就是这种情况,把我吓的一身冷汗。

详细说明我就不再赘述了,内容太多了,扯得有点远,在这里只给大家几个忠告:

1、 要修改sga配置,先备份oracle的spfile文件

2、 sga_target不能大于sga_max_size,但是可以相等

3、 sga_max_size不能大于另外一个参数:memory_target,否则你的oracle就启动不了,我就说被这个害了

4、 如果真的不小心改了sga,然后启动不了,不要慌,还有办法处理的,可以百度找,或者给你推荐个地址,我就是这么解决的:https://www.jb51.net/article/100103.htm

5、 最后一个忠告,对自己不熟悉的数据库进行操作,一定要找个有经验的人给你个建议方案,不要盲目相信网上的每个教程,包括我这个,因为每个系统的环境不一样,解决方案和遇到的问题也不一样的

6、 努力提高自己的技术吧,遇到的坑越多,你成长的越快

补充:评论区有朋友给指出了一些本文的不足,首先这里介绍的方法不是很严格的oracle数据库备份的方法,因为是导出数据库的过程中还有可能在增加新的数据,不能很好的保证数据一致性。另外,里边有些关于问题的解决和概念的介绍都比较模糊,是我从网上查阅资料了解的,并不能保证其严谨性和专业性,仅仅在我的环境下是可以解决问题的。

本文只作为抛转引玉之作用,欢迎大家指点评价,也希望大家在做相关工作时一定要更加严谨和负责,谢谢各位!


分享到:


相關文章: