在搭建配置服务器平台的过程中,由于涉及到数据库性能优化、数据库备份、配置管理工具的升级、linux的操作系统的维护等多个方面,所以碰到的问题特别杂,现在静下心来,整理成此文,愿对大家有所帮助。
问题一:OracleOraHome92Agent启动的问题
问题描述:在配置服务器移植过程中,由于要修改数据库服务器的机器名称,导致原来正常工作的OracleOraHome92Agent服务不能正常启动。
解决办法:删除d:/oracle/ora92/network/agent/*.Q ,重新启动服务即可。
问题二:oracle数据库的冷备份与恢复
问题描述:某夜在泰安三楼机房,加班至23:30,终于搞定,在将要撤退之际,由于一个误操作将数据库破坏,原来使用EXP备份的数据由于数据量太大,也不能正确使用IMP导入,实际上,系统已经瘫痪了。明天8:30,开发人员还要使用服务器进行开发,怎么办?
解决办法:死马当活马医,将备份服务器和主配置服务器上的oralce数据库服务全部停掉,将备份服务器的目录 d:/oracle/admin 、d:/oracle/ora92/database 、d:/oracle/ora92/network 、d:/oracle/oradata 四个目录拷贝到主配置服务器相应目录下,并覆盖;修改主配置服务器d:/oracle/ora92/network目录下和主机名称有关的几个文件。启动配置服务器oracle服务,数据库恢复成功。
注:这种恢复方法的前提是:两个机器上oracle的安装盘符和路径必须相同。
问题三:oracle数据库热备份与恢复
问题描述:泰安配置管理服务器支持20多个项目的在线开发,一旦数据库遭到破坏,后果不堪设想,如何实现数据库的热备份和回复?能在最短的时间完成数据库的恢复,丢失的数据量最少或者不丢失数据?
问题解决:首先热备份的前提是配置数据库为归档模式。使用的备份的工具为Oracle携带的Recovery Manager。配置服务器上待备份的目的库是ordb。
在备份机上安装oracle9i数据库,建立目录资源库oemrep。
备份的步骤如下:
1.使用rman 命令连接目的库ordb和目录资源库oemrep
rman catalog ****/****@oemrep target *****/*****@ordb
2.运行如下脚本
run {
allocate channel c1 type disk;
backup full tag ‘ordbfull’ format ‘e:/Har_Oracle/Hot_bak/fullbak%d_%s_%p ‘ datebase
include current controfile;
sql ‘alter system archive log current’;
backup filesperset 3 format ‘e:/Har_Oracle/Hot_Bak/arch%d_%s_%p’
archivelog all delete input;
release channel c1;
}
3.可以将上述代码写在文件里面,然后使用操作系统的计划任务,实现数据库的自动备份。改文件执行后,会在相应目录上生成两个文件,一个是数据库的全备份文件,一个是归档日志文件的备份。
4.通过拷贝命令可以将备份文件拷贝到备份数据库,由于一些备份控制信息存储在备份机的oemrep数据库中,所以,下面的步骤是在备份机上完成的。主要目的是实现数据库的恢复。
5.连接目的数据库ordb(待恢复的数据库)和目录数据库oemrep
rman target ****/*****@ordb catalog *****/******@oemrep
6.控制文件的恢复
run {
allocate channel c1 type disk;
restore controlfile;
release channel c1;
}
7.数据文件的恢复
run {
allocate channel c1 type disk;
sql “alter database mount”;
restore datafile 1;
restore datafile 2;
restore datafile 3;
…….
Release channel c1;
}
8.归档日志文件的恢复
run {
allocate channel c1 type disk;
restore archivelog all
release channel c1
}
需要说明的是这种备份和恢复对环境和备份的文件要求苛刻。恢复起来十分麻烦。但是在泰安研发中心多次恢复失败之后,最后终于恢复成功,证明这种方式是可行的,是在万不得已下采用的一种恢复方式。
问题四:Oracl数据库备份时如何保证数据能保留一周
问题描述:数据备份的保留是个很麻烦的问题,保留时间长了,浪费空间而且没有必要,保留时间短了,需要管理员经常人工操作,进行删除。
解决办法:在Oracle数据库备份时,将备份文件名字中增加星期。例如备份文件名为:****星期一.,备份文件名称中包含星期的实现方法如下:
FOR /F “tokens=2,3,4 delims=’/ “ %%a IN (‘date /t’) DO set weekname==%%a
Set USER_NAME=harvest
Set USER_PASS=*****
Set ORACLE_HOME=E:/oracle/ora92
Set DUMPED_FILE=D:/harbak/harbak%weekname%.dmp
Set LOG_FILE=D:/harbak/harbak%weekname%.log
Time /t >> %LOG_FILE%
%ORACLE_HOME%/bin/exp USERID=%USER_NAME%/%USER_PASS@ordb FILE=%DUMPED_FILE% LOG=%LOG_FILE%
通过以上办法,备份文件名称中具有星期,满足了数据保留一周的需求。
问题五:harvest5.2.1客户端安装过程中的选择项
问题描述与解决办法:我们通常使用的开发工具有eclipse和wsad,为了更好和这些开发工具集成,在安装客户端时,选择“Custom”自定义安装,在插件中选择Eclipse的插件安装,Harvest5.2.1和Eclipse集成直接支持的是Eclipse 2.1.x版本。更高的版本尤其是Eclipse3.0目前还不支持。
问题六:CVS管理多个项目,项目之间的安全问题。
问题描述:cvs服务器管理可以管理多个项目,但是多个项目在同一个服务器上,怎样保证项目资料在项目组内部是安全的,而其它项目组成员是无法访问的。
解决方法:建立多个项目数据仓库。每个项目有自己的管理员。修改启动文件cvspserver。由于xinetd的server_args长度限制,当你想运行很多的单个仓库的时候,可以这么做,
#vi /etc/xinetd.d/cvspserver
service cvspserver
{
disable= no
flags= REUSE
socket_type= stream
wait= no
user= root
server= /home2/cvsroot/cvs.run
log_on_failure += USERID
}
:wq
然后写脚本/home2/cvsroot/cvs.run
#vi /home2/cvsroot/cvs.run
#!/bin/bash
/usr/bin/cvs -f /
--allow-root=/home2/cvsroot/pro1 /
--allow-root=/home2/cvsroot/pro2 /
--allow-root=/home2/cvsroot/pro3 /
--allow-root=/home2/cvsroot/pro4 /
--allow-root=/home2/cvsroot/pro5 /
--allow-root=/home2/cvsroot/pro6 /
pserver
:wq
通过service xinetd restart 重新启动服务,cvs就可以管理pro1、pro2、pro3、pro4、pro5、pro6等多个项目了。
问题七:cvs的用户问题
问题描述:cvs的用户分为系统验证用户和cvs用户,两者的关系?
解决方法:系统验证用户即操作系统的用户,如果不使用操作系统用户,也可以用来创建cvs用户。不使用系统帐号的原因是充分保证安全,避免系统帐号直接删除仓库里的文件. 虽然麻烦,但是很有必要,因为无法保证每一个程序员都对cvs操作很有经验.
在这种情况下,为每一个工程各建一个等效系统用户,此用户应该是cvs组的成员. 不必有shell.
#adduser -g cvs -G cvs -s /bin/false -d /home2/cvsroot/pro1 -M cvspro1
创建用户hleil
$htpasswd -c passwd hleil
修改passwd成cvs的格式
$vi passwd
hleil:svcsdasdcvjn:cvspro1
:wq
用户hlei1是cvs用户,但不是系统用户,可以访问项目pro1
问题八:使用wincvs访问linux的cvs服务器,有些操作命令不能使用?
问题描述:在从cvs服务器上作检出操作时,服务器目录的浏览功能不能使用。
问题解决:可以键入模块所在的路径,执行检出功能,也可以键入“.“将仓库中所有的文件全部检出。
问题九:济南配置服务平台CVS配置库的异地备份
问题描述:济南CVS配置服务器支持公司济南总部项目的在线开发。为确保数据安全、不丢失,需要实现数据的异地备份。但是CVS配置库是基于linux平台的,而我们其它的机器都是windows平台
问题解决:
实现CVS数据的异地备份,我们分为四步实现。
第一步:在Linux服务器上实现项目数据的打包、压缩
#!/bin/sh
. /home2/cvsroot/cvsroot/.bash_profile
cd /home2/cvsroot/pro1root
tar zcvf pro1.tar.gz ./pro1/.
cd /home2/cvsroot/pro2root
tar zcvf pro2.tar.gz ./pro2/.
cd /home2/cvsroot/pro3root
tar zcvf pro3.tar.gz ./pro3/.
cd /home2/cvsroot/pro4root
tar zcvf pro4.tar.gz ./pro4/.
保存为shell文件名称为:autobak.sh
第二步:使用crontab 调用上面的shell文件,实现系统的自动打包、压缩
* * * * * * sh autobak.sh
第三步:实现包的ftp传输
在备份机上执行如下程序,从服务器 10.9.11.2中通过ftp取包。
echo user cvsroot cvsroot > FTPCMD.txt
echo cd /home2/cvsroot/pro1root >> FTPCMD.txt
echo lcd h:/jncvsserver_bak >> FTPCMD.txt
echo get pro1.tar.gz >>FTPCMD.txt
echo cd /home2/cvsroot/pro2root >> FTPCMD.txt
echo lcd h:/jncvsserver_bak >> FTPCMD.txt
echo get pro2.tar.gz >>FTPCMD.txt
echo bye >> FTPCMD.txt
ftp -i -n 10.9.11.2 <FTPCMD.txt
第四步:将上述批处理文件加入到任务计划中,实现系统的自动ftp取包