|
ORACLE数据库的日常维护操作 -----arlly
数据库运行情况,直接关系到一卡通系统的正常运作情况,将数据库及Unix、Linux和Oracle的一些日常操作命令总结如下,以供现场人员对数据库进行了解和进行一些简单处理,适用于操作系统初学者和ORACLE数据库一般维护人员。
操作系统命令:
改变路径:cd 目录名称
移动命令:mv 源目录或文件 目标目录或文件
拷贝命令:cp源目录或文件 目标目录或文件
查询命令:ls –l
删除命令:rm 文件名
创建目录:mkdir 目录名称
显示文本信息:more 文件名 ; cat 文件名
显示服务器名称:hostname
显示操作系统版本信息:uname –a
查看进程命令:ps –ef
日期命令: date
判断网络连接:ping Ipaddress
查询硬盘使用:df –v
进入操作系统,不管是Unix还是Linux操作系统可以查看一下磁盘的使用情况,使用df –v 命令,这个命令报告操作系统磁盘的使用情况,已用百分之多少,一般情况下磁盘占用小于85%属正常情况。如果大于85%就要查询使磁盘增长的原因。
提供几种可能情况:Oracle归档日志
错误日志
管理员所备份文件
数据库文件使用空间
Oracle数据库常用工具简单介绍:Oracle的企业管理器、sqlplus等
Oracle的企业管理器提供了很多管理oracle数据库的功能,通过它可以设置归档和非归档,更改归档文件的路径;对表空间的管理,增加表空间和查看表空间的使用情况;数据库性能的跟踪等。
sqlplus应用:这是个连接oracle数据库的最常使用的客户端程序,完全的文本界面,要求对oracle数据库应用有很好的掌握,才能较好的运用,是个交互式的应用程序。通过它可以对数据库进行各项操作。
这些工具虽数据库安装,不需额外寻找,使用比较方便。
检查数据库的基本操作
1)查询Oracle监听是否运行:lsnrctl status
出现如下结果表明运行成功:
Services Summary...
ORA92 has 1 service handler(s)
PLSExtProc has 1 service handler(s)
The command completed successfully
“Services Summary.”项表示Oracle的监听进程正在监听哪些数据库实例,输出显示中至少应该有“ORA92”这一项,如果你的数据库ID为ORA92的话。
2) 检查Oracle实例状态
sqlplus “ / as sysdba”
select instance_name,,database_status from v$instance;
INSTANCE_NAME DATABASE_STATUS
----------------------- ----------------------------
ORA92 ACTIVE
说明数据库Oracle当前的实例状态 “DATABASE_STATUS”表示Oracle当前数据库的状态,必须为“ACTIVE”。
3) 检查Oracle所有表、索引、存储过程、触发器、包等对象的状态
select owner,object_name,object_type from dba_objects where status!='VALID' and owner!='SYS' and owner!='SYSTEM';
如果有记录返回,则说明存在无效的对象。若这些对象与我们应用相关,需要重新生成这个对象。
4) 检查用户
select * from dba_users;
将所有的在Oracle中建立的用户列出,包括建立的时间等。可以根据结果检查有无非法用户存在。
5)select name,log_mode,open_mode from v$database;
NAME LOG_MODE OPEN_MODE
--------- ------------ ----------
ORA92 ARCHIVELOG READ WRITE
其中“LOG_MODE”表示Oracle当前的归档方式。“ARCHIVELOG”表示数据库运行在归档模式下,“NOARCHIVELOG”表示数据库运行在非归档模式下。
6) 检查核心转储目录
ls $ORACLE_BASE/admin/ ORA92/cdump/*.trc|wc -l
ls $ORACLE_BASE/admin/ ORA92/udump/*.trc|wc –l
上面命令的结果是某个数字,如果这个数字每天增长10以上,则说明Oracle进程经常发生核心转储,某些用户进程或者数据库后台进程由于无法处理的原因而异常退出。频繁的核心转储特别是数据库后台进程的核心转储会导致数据库异常终止。
7) 检查Oracle数据库的表空间状态
select tablespace_name,status from dba_tablespaces;
其中“STATUS”应该都为“ONLINE”,加粗输出显示的部分为我们应用相关的表空间。
检查Oracle数据文件状态
select name,status from v$datafile;
输出结果中“STATUS”应该都为“ONLINE”。
9) 查询Oracle日志文件
cat $ORACLE_BASE/admin/ORCL/bdump/alert_ORCL.log|grep -i ora-
cat $ORACLE_BASE/admin/ORCL/bdump/alert_ORCL.log|grep -i err
cat $ORACLE_BASE/admin/ORCL/bdump/alert_ORCL.log|grep -i fail
查看有无“ORA-”,“Error”,“Failed”等出错信息。
10) 查询Oracle数据库的进程
ps –ef|grep “ora_”|grep –v grep
11) 查询Oracle的路径
echo $ORACLE_HOME
12) 查询Oracle的SID
echo $ORACLE_SID
13) 检查Oracle数据库的表空间增长情况
select A.tablespace_name,(1-(A.total)/B.total)*100 used_percent
from
(select tablespace_name,sum(bytes) total
from dba_free_space group by tablespace_name) A,
(select tablespace_name,sum(bytes) total
from dba_data_files group by tablespace_name) B
where A.tablespace_name=B.tablespace_name;
如果表空间只剩10%,需要注意,可增加相应的数据文件。
Oracle数据库一些问题的处理
1) 归档日志满
a) 出现这种情况,可能会引起数据库不可用,将使用Oracle企业管理器对归档日志的路径进行修改。
b) 将原路径下的归档文件移到其他位置。注意将时间比较靠前的归档日志文件移走。
2) 磁盘已满的情况
a) 发现其他磁盘满的情况,查找引起磁盘满的原因,经确认对系统和数据库没有影响的文件清除或移动到其它路径下。
b) 如果是oracle备份文件过大或过多引起的磁盘满的情况,可将备份文件移到其他地方。
3) 连接不上数据库
使用lsnrctl status 查询,上面已经提到过。
使用lsnrctl start启动监听程序。
4) 通讯不正常结束,从而导致通讯通道终止,ORA-3113错误
出现这种情况的原因很多,可能的原因是网络问题引起的,也可能是客户端程序与服务器端的版本出入过大造成的,也可能是会话连接过多引起的等等。
检查是否有服务进程不正常死机,可从alter.log得知。
检查sql*Net 是否连接到oracle可执行程序
检查服务器网络是否正常,如网络不通或不稳定等
检查同一个网上是否有两个同样名字的节点
检查同一个网上是否有重复的IP地址。
5) 操作系统或硬件引起的错误
A)由于操作系统出现故障:由于数据文件丢失、文件系统损坏等,出现这种情况,一般由非正常关机引起,所以在停电或其他原因必须关机时,要及时正确关闭数据库服务器,避免引起上述可能错误。
关机顺序也很重要:(1)先关闭数据库
(2)关闭双机热备软件(如果有)
a) 先关闭从机
b) 再关闭主机
(3)关闭操作系统
(4)关闭共享磁盘阵列电源(如果有)
(5)关闭主机电源
这种关机顺序最大限度的保护数据不会丢失,应引起重视。
B) 由于硬件出现故障:一般情况下,服务器对硬件损坏进行报警,指示灯亮或产生错误码日志,比较常见的是某块硬盘损坏,需要联系硬件商更换硬件。
6)
crontab的使用方法
1) 在unix和linux环境中,使用crontab实用程序可以调度定时任务。
2) unix中主要有两种用来浏览和修改crontab文件的命令:
crontab –l 列出crontab文件内容
crontab –e 打开编辑器,可进行编辑,加入自己的调度任务
例:下面的crontab项在每小时过5分钟的时刻提交一项任务:
05 * * * * /home/run_job
对oracle数据库可以进行定时备份:
如:30 2 * * * /home/oracle/product/9.2.0/bin/exp username/passwd file=filname.dmp
对 30 2 * * * 进行解释:
分钟 小时 天 月 星期
3) 在/etc/cron.arrow加入对用户许可。
ORACLE数据库命令
如果数据库上有备份,请常查询备份情况。
一般备份会在crontab中设定,用crontab –l查看。
主要看备份的目录下有没有备份文件;是否按时进行了备份。
手工启动关闭数据库的方法
假定服务器上只启动一个实例
第一种:在oracle用户下启动数据库dbstart
启动监听lsnrctl start
在oracle用户下关闭数据库dbshut
关闭监听lsnrctl stop
第二种:启动sqlplus “/as sysdba”
SQL>startup
SQL>exit
启动监听lsnrctl start
关闭sqlplus “/as sysdba”
SQL>shutdown immediate
SQL>exit
关闭监听lsnrctl stop
自动备份Oracle For Linux数据库
1.以root登录
#cd /etc
#vi cron.allow
按i键,输入
oracle
root
按Esc键 ,按Shift+: ,按wq退出
#
2.以oracle登录
$mkdir /opt/ora9/oradatabak
$cd /opt/ora9/product/9.2/bin
$vi exp1
按i,输入以下内容
rq=`date +'%Y%m%d%H'`
exp ccener/ccener file=/opt/ora9/oradatabak/ccener${rq}.dmp
gzip /opt/ora9/oradatabak/ccener${rq}.dmp
ftpauto.sh
rm -f ccener*.dmp
按Esc, 按Shift+: , 按wq退出
$chmod 777 exp1
$vi ftpauto.sh
按i,输入如下内容:
ftp -n<<!
open 192.168.0.111
user oracle oraclesjzxy
bin
lcd /opt/ora9/oradatabak
cd /oradatabackup
mput *.gz
bye
!
按Esc,按Shift+:,按wq
$chmod 777 ftpauto.sh
2.以root登录
运行crontab -e命令,按i键进行输入,然后按Esc键,再按Shift+: ,再按wq
如下:
#crontab -e
0 2 * * * su - oracle -c "/opt/ora9/product/9.2/bin/exp1"
3.#service crond stop
#service crond start
4.应设置一台ftp服务器,将备份文件上传
上传的目录为/oradatabackup
其中open 192.168.0.111为上传服务器的IP地址,根据实际情况可改变。
-------------ARLLY----------- |
|