oracle数据库常用操作

2024-06-07 版权声明 我要投稿

oracle数据库常用操作(精选11篇)

oracle数据库常用操作 篇1

前言

这篇文章介绍了DBA每天在监控Oracle数据库方面的职责,讲述了如何通过shell脚本来完成这些重复的监控工作。本文首先回顾了一些DBA常用的Unix命令,以及解释了如何通过Unix Cron来定时执行DBA脚本。同时文章还介绍了8个重要的脚本来监控Oracle数据库:

检查实例的可用性

检查 的可用性

检查alert日志文件中的错误信息

在存放log文件的地方满以前清空旧的log文件

分析table和index以获得更好的性能

检查表空间的使用情况

找出无效的对象

监控用户和事务

DBA需要的Unix基本知识

基本的UNIX命令

以下是一些常用的Unix命令:

ps--显示进程 grep--搜索文件中的某种文本模式 mailx--读取或者发送mail cat--连接文件或者显示它们 cut--选择显示的列 awk--模式匹配语言 df--显示剩余的磁盘空间

以下是DBA如何使用这些命令的一些例子:

显示服务器上的可用实例:

$ ps -ef | grep smon

oracle 21832 1 0 Feb 24 ? 19:05 ora_smon_oradb1

oracle 898 1 0 Feb 15 ? 0:00 ora_smon_oradb2

dliu 25199 19038 0 10:48:57 pts/6 0:00 grep smon

oracle 27798 1 0 05:43:54 ? 0:00 ora_smon_oradb3

oracle 28781 1 0 Mar 03 ? 0:01 ora_smon_oradb4、显示服务器上的可用 :

$ ps -ef | grep listener | grep -v grep

(译者注:grep命令应该加上-i参数,即grep -i listener,

该参数的作用是忽略大小写,因为有些时候listener是大写的,这时就会看不到结果)

oracle 23879 1 0 Feb 24 ? 33:36 /8.1.7/bin/tnslsnr listener_db1 -inherit

oracle 27939 1 0 05:44:02 ? 0:00 /8.1.7/bin/tnslsnr listener_db2 -inherit

oracle 23536 1 0 Feb 12 ? 4:19 /8.1.7/bin/tnslsnr listener_db3 -inherit

oracle 28891 1 0 Mar 03 ? 0:01 /8.1.7/bin/tnslsnr listener_db4 -inherit

查看Oracle存档目录的文件系统使用情况

$ df -k | grep oraarch

/dev/vx/dsk/proddg/oraarch 71123968 4754872 65850768 7% /u09/oraarch

统计alter.log文件中的行数:

$ cat alert.log | wc -l

2984

列出alert.log文件中的全部Oracle错误信息:

$ grep ORA- alert.log

ORA-00600: internal error code, arguments: [kcrrrfswda.1], [], [], [], [], []

ORA-00600: internal error code, arguments: [1881], [25860496], [25857716], []

CRONTAB基本

一个crontab文件中包含有六个字段:

分钟 0-59

小时 0-23

月中的第几天 1-31

月份 1 - 12

星期几 0 - 6, with 0 = Sunday

Unix命令或者Shell脚本

要编辑一个crontab文件,输入:Crontab -e

要查看一个crontab文件,输入:

Crontab -l

0 4 * * 5 /dba/admin/analyze_table.ksh

30 3 * * 3,6 /dba/admin/hotbackup.ksh /dev/null 2>&1

在上面的例子中,第一行显示了一个分析表的脚本在每个星期5的4:00am运行。第二行显示了一个执行热备份的脚本在每个周三和周六的3:00a.m.运行。

监控数据库的常用Shell脚本

以下提供的8个shell脚本覆盖了DBA每日监控工作的90%,你可能还需要修改UNIX的环境变量。

检查Oracle实例的可用性

oratab文件中列出了服务器上的所有数据库

$ cat /var/opt/oracle/oratab

############################################################

## /var/opt/oracle/oratab##

############################################################

oradb1:/u01/app/oracle/product/8.1.7:Y

oradb2:/u01/app/oracle/product/8.1.7:Y

oradb3:/u01/app/oracle/product/8.1.7:N

oradb4:/u01/app/oracle/product/8.1.7:Y以下的脚本检查oratab文件中列出的所有数据库,并且找出该数据库的状态(启动还是关闭)

##############################################################

## ckinstance.ksh ## ###################################################################

RATAB=/var/opt/oracle/oratab

echo `date`

echo Oracle Database(s) Status `hostname` :

db=`egrep -i :Y|:N $ORATAB | cut -d: -f1 | grep -v # | grep -v *`

pslist=`ps -ef | grep pmon`

for i in $db ; do

echo $pslist | grep ora_pmon_$i >/dev/null 2>$1

if (( $? )); then

echo Oracle Instance - $i: Down

else

echo Oracle Instance - $i: Up

fi

done

使用以下的命令来确认该脚本是可以执行的:

$ chmod 744 ckinstance.ksh

$ ls -l ckinstance.ksh

-rwxr--r-- 1 oracle dba 657 Mar 5 22:59 ckinstance.ksh*

以下是实例可用性的报表:

$ ckinstance.ksh

Mon Mar 4 10:44:12 PST

Oracle Database(s) Status for DBHOST server:

Oracle Instance - oradb1: Up

Oracle Instance - oradb2: Up

Oracle Instance - oradb3: Down

Oracle Instance - oradb4: Up

检查Oracle 的可用性

以下有一个类似的脚本检查Oracle 。如果 停了,该脚本将会重新启动 :

#######################################################################

## cklsnr.sh ##

#######################################################################

#!/bin/ksh

DBALIST=primary.dba@company.com,another.dba@company.com;export DBALIST

cd /var/opt/oracle

rm -f lsnr.exist

ps -ef | grep mylsnr | grep -v grep >lsnr.exist

if [ -s lsnr.exist ]

then

echo

else

echo Alert | mailx -s Listener ‘mylsnr‘ on `hostname` is down $DBALIST

TNS_ADMIN=/var/opt/oracle; export TNS_ADMIN

ORACLE_SID=db1; export ORACLE_SID

ORAENV_ASK=NO; export ORAENV_ASK

PATH=$PATH:/bin:/usr/local/bin; export PATH

. oraenv

LD_LIBRARY_PATH=${ORACLE_HOME}/lib;export LD_LIBRARY_PATH

lsnrctl start mylsnr

fi

检查Alert日志(ORA-XXXXX)

每个脚本所使用的一些环境变量可以放到一个profile中:

#######################################################################

## oracle.profile ##

#######################################################################

EDITOR=vi;export EDITOR ORACLE_BASE=/u01/app/oracle; export

ORACLE_BASE ORACLE_HOME=$ORACLE_BASE/product/8.1.7; export

ORACLE_HOME LD_LIBRARY_PATH=$ORACLE_HOME/lib; export

LD_LIBRARY_PATH TNS_ADMIN=/var/opt/oracle;export

TNS_ADMIN NLS_LANG=american; export

NLS_LANG NLS_DATE_FORMAT=‘Mon DD YYYY HH24:MI:SS‘; export

NLS_DATE_FORMAT RATAB=/var/opt/oracle/oratab;export

ORATAB PATH=$PATH:$ORACLE_HOME:$ORACLE_HOME/bin:/usr/clearcase/“ target=”_blank“ >ccs/bin:/bin:/usr/bin:/usr/sbin:/

sbin:/usr/openwin/bin:/opt/bin:.; export

PATH DBALIST=primary.dba@company.com,another.dba@company.com;export

DBALIST以下的脚本首先调用oracle.profile来设置全部的环境变量。如果发现任何的Oracle错误,该脚本还会给DBA发送一个警告的email。

####################################################################

## ckalertlog.sh ##

####################################################################

#!/bin/ksh

.. /etc/oracle.profile

for SID in `cat $ORACLE_HOME/sidlist`

do

cd $ORACLE_BASE/admin/$SID/bdump

if [ -f alert_${SID}.log ]

then

mv alert_${SID}.log alert_work.log

touch alert_${SID}.log

cat alert_work.log >>alert_${SID}.hist

grep ORA- alert_work.log >alert.err

fi

if [ `cat alert.err|wc -l` -gt 0 ]

then

mailx -s ${SID} ORACLE ALERT ERRORS $DBALIST< alert.err

fi

rm -f alert.err

rm -f alert_work.log

done

清除旧的归档文件

以下的脚本将会在log文件达到90%容量的时候清空旧的归档文件:

$ df -k | grep arch

Filesystem kbytes used avail capacity Mounted on

/dev/vx/dsk/proddg/archive 71123968 30210248 40594232 43% /u08/archive

#######################################################################

## clean_arch.ksh ##

#######################################################################

#!/bin/ksh

df -k | grep arch >dfk.result

archive_filesystem=`awk -F ‘{ print $6 }‘ dfk.result`

archive_capacity=`awk -F ‘{ print $5 }‘ dfk.result`

if [[ $archive_capacity >90% ]]

then

echo Filesystem ${archive_filesystem} is ${archive_capacity} filled

# try one of the following option depend on your need

find $archive_filesystem -type f -mtime +2 -exec rm -r {} ;

tar

rman

fi

分析表和索引(以得到更好的性能)

以下我将展示如果传送参数到一个脚本中:

####################################################################

## analyze_table.sh ##

####################################################################

#!/bin/ksh

# input parameter: 1: password # 2: SID

if (($#<1)) then echo ”Please enter oracle user password as the first parameter !“ exit 0

fi

if (($#<2)) then echo ”Please enter instance name as the second parameter!“ exit 0

fi

要传入参数以执行该脚本,输入:

$ analyze_table.sh manager oradb1

脚本的第一部分产生了一个analyze.sql文件,里面包含了分析表用的语句,

脚本的第二部分分析全部的表:

#####################################################################

## analyze_table.sh ##

#####################################################################

sqlplus -s<

oracle/$1@$2

set heading off

set feed off

set pagesize 200

set linesize 100

spool analyze_table.sql

select ANALYZE TABLE || owner || . || segment_name ||

ESTIMATE STATISTICS SAMPLE 10 PERCENT;

from dba_segments

where segment_type = TABLE

and owner not in (SYS, SYSTEM);

spool off

exit

!

sqlplus -s<

oracle/$1@$2

@./analyze_table.sql

exit

!

以下是analyze.sql的一个例子:

$ cat analyze.sql

ANALYZE TABLE HIRWIN.JANUSAGE_SUMMARY ESTIMATE STATISTICS SAMPLE 10 PERCENT;

ANALYZE TABLE HIRWIN.JANUSER_PROFILE ESTIMATE STATISTICS SAMPLE 10 PERCENT;

ANALYZE TABLE APPSSYS.HIST_SYSTEM_ACTIVITY ESTIMATE STATISTICS SAMPLE 10 PERCENT;

ANALYZE TABLE HTOMEH.QUEST_IM_VERSION ESTIMATE STATISTICS SAMPLE 10 PERCENT;

ANALYZE TABLE JSTENZEL.HIST_SYS_ACT_0615 ESTIMATE STATISTICS SAMPLE 10 PERCENT;

ANALYZE TABLE JSTENZEL.HISTORY_SYSTEM_0614 ESTIMATE STATISTICS SAMPLE 10 PERCENT;

ANALYZE TABLE JSTENZEL.CALC_SUMMARY3 ESTIMATE STATISTICS SAMPLE 10 PERCENT;

ANALYZE TABLE IMON.QUEST_IM_LOCK_TREE ESTIMATE STATISTICS SAMPLE 10 PERCENT;

ANALYZE TABLE APPSSYS.HIST_USAGE_SUMMARY ESTIMATE STATISTICS SAMPLE 10 PERCENT;

ANALYZE TABLE PATROL.P$LOCKCONFLICTTX ESTIMATE STATISTICS SAMPLE 10 PERCENT;

检查表空间的使用

以下的脚本检测表空间的使用。如果表空间只剩下10%,它将会发送一个警告email。

#####################################################################

## ck_tbsp.sh ##

#####################################################################

#!/bin/ksh

sqlplus -s<

oracle/$1@$2

set feed off

set linesize 100

set pagesize 200

spool tablespace.alert

SELECT F.TABLESPACE_NAME,

TO_CHAR ((T.TOTAL_SPACE - F.FREE_SPACE),999,999) ”USED (MB)“,

TO_CHAR (F.FREE_SPACE, 999,999) ”FREE (MB)“,

TO_CHAR (T.TOTAL_SPACE, 999,999) ”TOTAL (MB)“,

TO_CHAR ((ROUND ((F.FREE_SPACE/T.TOTAL_SPACE)*100)),999)|| % PER_FREE

FROM (

SELECT TABLESPACE_NAME,

ROUND (SUM (BLOCKS*(SELECT VALUE/1024

FROM V$PARAMETER

WHERE NAME = db_block_size)/1024)

) FREE_SPACE

FROM DBA_FREE_SPACE

GROUP BY TABLESPACE_NAME

) F,

(

SELECT TABLESPACE_NAME,

ROUND (SUM (BYTES/1048576)) TOTAL_SPACE

FROM DBA_DATA_FILES

GROUP BY TABLESPACE_NAME

) T

WHERE F.TABLESPACE_NAME = T.TABLESPACE_NAME

AND (ROUND ((F.FREE_SPACE/T.TOTAL_SPACE)*100))< 10;

spool off

exit

!

if [ `cat tablespace.alert|wc -l` -gt 0 ]

then

cat tablespace.alert -l tablespace.alert >tablespace.tmp

mailx -s ”TABLESPACE ALERT for ${2}“ $DBALIST< tablespace.tmp

fi

警告email输出的例子如下:

TABLESPACE_NAME USED (MB) FREE (MB) TOTAL (MB) PER_FREE

------------------- --------- ----------- ------------------- ------------------

SYSTEM 2,047 203 2,250 9 %

STBS01 302 25 327 8 %

STBS02 241 11 252 4 %

STBS03 233 19 252 8 %

查找出无效的数据库对象

以下查找出无效的数据库对象:

#####################################################################

## invalid_object_alert.sh ##

#####################################################################

#!/bin/ksh . /etc/oracle.profile

sqlplus -s<

oracle/$1@$2

set feed off

set heading off column object_name format a30

spool invalid_object.alert

SELECT OWNER, OBJECT_NAME, OBJECT_TYPE,

STATUS FROM DBA_OBJECTS WHERE STATUS =

INVALID ORDER BY OWNER, OBJECT_TYPE, OBJECT_NAME;

spool off

exit ! if [ `cat invalid_object.alert|wc -l` -gt 0 ] then

mailx -s ”INVALID OBJECTS for ${2}“ $DBALIST< invalid_object.alert

fi$ cat invalid_object.alert

OWNER OBJECT_NAME OBJECT_TYPE STATUS

--------------------------------------------

HTOMEH DBMS_SHARED_POOL PACKAGE BODY INVALID

HTOMEH X_$KCBFWAIT VIEW INVALID

IMON IW_MON PACKAGE INVALID

IMON IW_MON PACKAGE BODY INVALID

IMON IW_ARCHIVED_LOG VIEW INVALID

IMON IW_FILESTAT VIEW INVALID

IMON IW_SQL_FULL_TEXT VIEW INVALID

IMON IW_SYSTEM_EVENT1 VIEW INVALID

IMON IW_SYSTEM_EVENT_CAT VIEW INVALIDLBAILEY CHECK_TABLESPACE_USAGE PROCEDURE INVALID

PATROL P$AUTO_EXTEND_TBSP VIEW INVALID

SYS DBMS_CRYPTO_TOOLKIT PACKAGE INVALID

SYS DBMS_CRYPTO_TOOLKIT PACKAGE BODY INVALID

SYS UPGRADE_SYSTEM_TYPES_TO_816 PROCEDURE INVALID

SYS AQ$_DEQUEUE_HISTORY_T TYPE INVALID

SYS HS_CLASS_CAPS VIEW INVALID SYS HS_CLASS_DD VIEW INVALID

监视用户和事务(死锁等)

以下的脚本在死锁发生的时候发送一个警告e-mail:

###################################################################

## deadlock_alert.sh ##

##################################################################

##!/bin/ksh

.. /etc/oracle.profile

sqlplus -s<

oracle/$1@$2

set feed off

set heading off

spool deadlock.alert

SELECT SID, DECODE(BLOCK, 0, NO, YES ) BLOCKER,

DECODE(REQUEST, 0, NO,YES ) WAITER

FROM V$LOCK

WHERE REQUEST >0 OR BLOCK >0

ORDER BY block DESC;

spool off

exit

!

if [ `cat deadlock.alert|wc -l` -gt 0 ]

then

mailx -s ”DEADLOCK ALERT for ${2}“ $DBALIST< deadlock.alert

fi

结论

0,20,40 7-17 * * 1-5 /dba/scripts/ckinstance.sh >/dev/null 2>&1

0,20,40 7-17 * * 1-5 /dba/scripts/cklsnr.sh >/dev/null 2>&1

0,20,40 7-17 * * 1-5 /dba/scripts/ckalertlog.sh >/dev/null 2>&1

30 * * * 0-6 /dba/scripts/clean_arch.sh >/dev/null 2>&1

* 5 * * 1,3 /dba/scripts/analyze_table.sh >/dev/null 2>&1

* 5 * * 0-6 /dba/scripts/ck_tbsp.sh >/dev/null 2>&1

* 5 * * 0-6 /dba/scripts/invalid_object_alert.sh >/dev/null 2>&1

0,20,40 7-17 * * 1-5 /dba/scripts/deadlock_alert.sh >/dev/null 2>&1

通过以上的脚本,可大大减轻你的工作。你可以使用这些是来做更重要的工作,例如性能调整。(责任编辑:铭铭)

oracle数据库常用操作 篇2

一、通过归档模式来实现数据备份

首先是数据库的运行模式, O R A C L E数据库有两种运行方式:一是归档方式 (A R C H I V E L O G) , 二是非归档方式 (N O A R C H I V E L O G) , 这两种运行模式的最大区别在于当数据库系统进行日志切换时对联机日志文件的处理, 非归档模式下陈旧的联机日志文件不做保存, 而归档模式会将它保存为归档日志文件, 显然归档模式要多一点点系统开销, 但是当数据库发生故障时可以最大限度恢复所有已提交的事物, 恢复数据库到任意一个时间点, 而此时非归档模式就无能为力了。当然在一些特殊情况下, 可以对数据库系统进行模式转换, 即从归档模式转换到非归档模式, 或反之, 从非归档模式转换到归档模式, 这种模式的转换必须在数据库系统启动时, 通过命令进行控制。

比如从非归档模式转换到归档模式, 需要进行如下操作。

$Sqlplus/nolog

SQL>connect/as sysdba

SQL>startup mount

SQL>alter database archivelog;

SQL>alter database open

由于社保系统的重要性, 数据库系统必须运行在归档模式, 充分提高数据库系统的高可用性和数据的安全性。

二、数据库系统备份

其次通过对数据库系统进行数据备份, 必要时可利用备份的数据对系统进行恢复。目前一般可以通过以下三种方法来对oracle数据库进行备份。

一) 逻辑备份

逻辑备份/恢复是通过oracle自带的exp/imp工具来实现的。exp是卸库工具, 可以将数据库数据卸出;逻辑备份分为三种模式:表备份、用户备份和完全备份, 分别用于用户的一些表、某些用户和整个数据库。

A、表模式

备份某个用户模式下指定的对象 (表) 。主要用于对一些关键表的数据的保存或拷贝。

B、用户模式

备份某个用户模式下的所有对象。业务数据库通常采用这种备份方式。

C、完全模式

对数据库所有对象进行备份, 主要用于数据库的移植以及系统的备份。备份命令为:

逻辑备份的实现方法比较简单。一般把它写成脚本, 在系统空闲时 (比如凌晨1点) 自动执行, 但当业务数据量比较大时, 备份和恢复的时间比较长, 因此我们建议对于数据库大于100GB的数据库就非常不适合。

二) 物理备份

物理备份是将实际组成数据库的操作系统文件从一处拷贝到另一处的备份过程, 通常是从磁盘到磁带。物理备份分为冷备份和热备份两种。

对于备份Oracle信息而言, 冷备份是最快和最安全的方法。冷备份是在数据库已经正常关闭的情况下, 将关键性文件拷贝到另外的安全位置。冷备份中必须拷贝的文件包括:

1、所有数据文件

2、所有控制文件

3、所有联机R E D O L O G文件

4、Init.ora文件 (可选)

热备份是在数据库运行的情况下, 采用archivelog mode方式备份数据库的方法。所以, 如果你有昨天夜里的一个冷备份而且又有今天的热备份文件, 在发生问题时, 就可以利用这些资料恢复更多的信息。热备份要求数据库在Archivelog方式下操作, 并需要大量的档案空间。一旦数据库运行在archivelog状态下, 就可以做备份了。热备份的命令文件由三部分组成:

1、数据文件一个表空间一个表空间的备份。

(1) 设置表空间为备份状态

(2) 备份表空间的数据文件

(3) 回复表空间为正常状态

2、备份归档log文件

(1) 临时停止归档进程

(2) log下那些在archive rede log目标目录中的文件

(3) 重新启动archive进程

(4) 备份归档的redo log文件

3、用alter database bachup controlfile命令来备份控制文件

在oracle8i以后, oracle提供了一个工具R M A N (R e c o v e r y M a n a g e r) , Oracle恢复管理器工具专门用于管理数据库的物理备份和恢复。R M A N备份有很多方式, 可以对数据库进行脱机、联机的物理备份, 也可以对数据库进行增量备份。

RMAN备份过程是首先注册备份数据库, 先建立一个R M A N库, 并将要备份的数据库注册到R M A N库中, 然后建立R M A N备份脚本, 最后就可以执行备份操作了。我们可以根据实际情况对数据库建立全库备份和增量备份的脚本, 然后制定合适的备份策略来执行。比如周日晚23点做全库备份, 然后每天做增量备份, 如此循环。

由于磁盘容量有限, 存放不了多少数据。因此可以通过第三方的备份软件 (veritas NetBackup、IBM TSM、bakbone NetVault、HP DP等) 结合R M A N将数据库相关文件备份到磁带库中, 利用磁带库的容量大的特点, 可以保存几年的备份数据, 提高系统的整体安全性。

三) 异地备份

顾名思义, 异地备份主要应用于数据中心发生灾难情况时的数据安全。实现异地备份的方法主要有两种, 一是远程磁盘镜像技术, 通过磁盘厂商提供的磁盘镜像软件, 保证相距一定距离的两个盘阵上逻辑盘 (L U N) 的数据一致, 这种方式投资大, 对连接的线路要求比较高。另外一种是通过第三方的软件来实现, 基本原理是将在生产库上的变化日志传输到备用库, 并执行相同的操作, 从而保证数据一致。

Data Guard是Oracle公司提出的数据库容灾技术, 它提供了一种管理、监测和自动运行的体系结构, 用于创建和维护一个或多个备份数据库。由于Data Guard包含在oracle企业版数据库中, 不需要额外的费用就可以实现异地灾备, 因此重点描述这种方法。

与远程磁盘镜像技术的根本区别在于, Data Guard是在逻辑级, 通过传输和运行数据库日志文件, 来保持生产和备份数据库的数据一致性。一旦数据库因某种情况而不可用时, 备份数据库将正常切换或故障切换为新的生产数据库, 以达到无数据损失或最小化数据损失的目的, 为业务系统提供持续的数据服务能力。

Data Guard要求主备库上服务器的操作系统必须一致, 数据库的版本及补丁号最好一样, 但对系统的性能和连接的网络并没有特别的要求;因此对于升级的系统, 淘汰的旧设备只要能保证操作系统平台一致, 完全可以作为备库的运行平台, 而至于网络, 任何租用电信大于等于100Mb的线路即可满足要求。

Data Guard在实现上有两种方式, 一种是物理备份数据库, 物理上提供了与生产数据库在数据块级的一致性镜像。物理备份数据库是通过Redo Apply技术来保障数据镜像能力。另外一种是逻辑备份数据库, 通过SQL Apply (即Log Miner) 技术, 将接收到的日志文件还原成S Q L语句, 并在逻辑备份数据库上执行, 从而达到数据一致性的目的。

Data Guard有三种保护模式, 一种是最大保护模式, 该模式以牺牲生产数据库性能为代价, 换取无数据损失的能力;一种是最大可用模式, 该模式也能提供无数据损失, 对生产数据库的影响较小。最后一种是最大性能模式, 该模式允许少量数据损失, 但能为生产数据库提供最大性能, 可以根据实际情况进行选择。

Data Guard除了实现数据备份功能外, 还可以提供只读的报表查询功能。因此可以将一些耗时而要求又不高的查询统计操作部署到备用数据库上, 充分利用备用系统的性能, 最大限度地减轻主数据库上的压力。

上述三种方法各有利弊, 而且从不同的侧面保护数据的安全, 我们可以采用其中的一种或多种来保护数据库的安全。

参考文献

[1]、滕永昌.Oracle9i数据库管理员使用大全.清华大学出版社

[2]、Steve Bobrowsk (i美) .Oracle for linux Starter Kit机械工业出版社

oracle数据库迁移 篇3

摘 要:本文介绍了Oracle数据库基于Linux系统迁移的研究问题。在数据库领域一直处于领先地位的Oracle数据库以其良好的可移植性、可靠性和高效性,倍受各级用户的推崇和喜爱。随着Oracle数据库的不断更新和发展,其使用用户的群体也在不断的增加,因此对Oracle数据库的存储迁移技术的研究在国内外如雨后春笋般不断发展。

关键词:oracle,数据迁移,跨平台

中图分类号: TP391 文献标识码: A 文章编号: 1673-1069(2016)25-195-2

0 引言

伴随着IT行业的迅速发展,IT系统中数据的安全性,已经是对企业运营产生了重大影响。而数据库的安全迁移也为IT系统的可持续运行和数据安全提供一道保护屏障。而且近年来频繁出现的自然灾害或者突发事件也让越来越多的人们意识到,原有的数据存储方式已经无法满足企业的需要。本文正是从数据库迁移的实际操作中总结整理而成。

1 oracle数据库文件构成

数据库是一种物理的存储结构,它是由多种物理文件组成的,在Oracle数据库系统中分为,核心文件和非核心文件两大类[1]。其中核心文件由数据文件,控制文件,日志文件,参数文件组成,非核心文件由密码文件,告警日志文件,各种跟踪文件组成。

控制文件:控制文件是一个二进制的文件,它描述了数据库当前的物理状态,记录了RMAN备份的元数据。控制文件包含有数据库的名称、数据库的创建信息、表空间的信息、数据文件的状态、日志文件的信息、备份的信息、检查点的信息等。

数据文件:,一个数据库中一定至少有一个数据文件(system01.dbf),如果一个数据库存在多个数据文件,应该分别把它们存放在不同的磁盘上,这样做不仅可以提高数据的存取速度,有利于提高数据库的性能,而且还能防止数据文件同时被损坏,实现高度容灾。

日志文件:数据库日志文件包括归档日志和非归档日志,记录了数据库的所有修改信息,归档日志会在数据库切换日志时,备份历史日志,日志记录的是数据库改变的信息、因此当数据库损坏时可以通过日志文件实现数据库的完全恢复、不完全恢复,而非归档日志不会备份历史日志,只能恢复到数据库最后一次备份时的状态[2]。

临时文件:创建数据库对象的时候指定的是使用表空间,一个表空间至少包含一个数据文件,临时文件是临时表空间对应的数据文件,并不是已用完就被删除的,而是指这个文件存储的对象是临时存在的对象。临时文件主要用于大量的排序的时候,如果不能在数据库的内存中做排序,就会把临时文件作为中转。

参数文件:参数文件是记录数据库系统配置的文件,每次数据库一启动,Oracle就会自动地从参数文件中读取系统参数的设置来配置并启动数据库。如内存的大小分配,此次启动可以打开的进程数和会话数等。

2 Oracle数据库迁移的迁移方案

oracle数据库状态分类:

nomount:此状态可以读取初始化参数文件,启动实例,可以进行数据库的创建。

mount:数据库维护状态,读取控制文件。

open: 打开数据文件,日志文件,是数据库可以对全体用户提供服务了。

数据库物理迁移过程大体可分为以下四个步骤:

第一步:加载初始化文件

oracle启动后,数据库默认会读取一个二进制的初始化文件spfile.ora,可在系统启动时指定初始化文件的路径,如startup pfile="pfilesid.ora" nomount或者startup spfile="spfilesid.ora" nomount。初始化过程可根据系统错误提示内容,用pfile进行编辑处理,然后重新startup就可以了。

第二步:加载控制文件,保证在初始化文件中,控制文件的路径正确

在初始化文件中定义控制文件的位置,在确保控制文件路径正确的情况下,才能对控制文件进行加载,其命令是alter database mount。

第三步:加载数据库,包括重做日志文件

加载控制文件之后,执行命令alter database open对数据库进行开启,整个数据库启动过程完成了。

第四步:启动数据库成功之后,就说明迁移成功,可以观察数据是否丢失,然后启动监听和配置文件等。

3 Oracle数据库迁移具体实践

下面以把数据库从文件系统迁移到ASM磁盘组为例进行演示步骤:

首先,ASM是把多个磁盘组织为一个磁盘组,作为Oracle的逻辑卷管理器,利用ASM技术可以把数据均匀分布在这些磁盘上来解决从文件区到物理磁盘块的映射问题。这种设计除了定位文件区非常快速之外,还在增加或删除磁盘时有所帮助,因为文件区的位置不需要调整[3]。

把数据库从文件系统迁移到ASM磁盘组主要是把数据库的控制文件,数据文件和日志文件分别放在不同的磁盘组上,实现对这些文件的一个冗余放置,还简化了对数据文件的管理。

3.1 迁移数据库

①迁移数据库前先在RMAN下备份数据库,设置系统冗余度,并打开优化器和控制文件的自动备份功能

②创建迁移的控制文件存放的目录

③修改参数文件把控制文件的默认位置修改到ASM磁盘组上,然后用Pfile来生成spfile文件

SQL> create pfile from spfile;

④利用RMAN工具恢复控制文件,将数据库启动到mount状态;加载控制文件,如果出现错误,就说明控制文件所在的路径和参数文件路径不一致,要修改初始化参数,文件中控制文件的参数,然后重新加载。

4 总结与展望

数据库管理技术是现今社会中信息科学与技术的重要组成部分,数据库迁移技术的研究保证了数据安全以及高效的存储[4][5]。在实际操作过程中,Oracle数据库基于Linux系统的迁移过程中会出现各种各样的情况,如果想要安全完整的迁移数据库,一定要先做好备份,然后反复的实验验证,最终才能保证数据库完整安全的迁移。

参 考 文 献

[1] 张敏.数据库安全研究现状与展望[J].中国科学院院刊,2011.03.

[2] 赵钦,周丹.政府办公自动化信息系统数据迁移解决方案[J].广西科学院学报,2008.24.

[3] 段卫国,李俊春.Oracle 数据库数据迁移技术研究[J].信息技术,2015.8.

[4] Kathy Rich.Oracle Data Pump,10g Release 2 (10.2)[M].Oracle Database Utilities, 2005.

数据库oracle笔试 篇4

我在考场上写的n=5, i=2; 运行得出结果却为9. 分析了一下得出原因在于: 如果n<5的话,那么它会从其自身起一直到5都会执行j++这条语句, 因为此代码片段中并没有使用 break。

n与i有多种组合值, 如(1,1)、(4,1)和(5,1)等都可以。

3、复习JAVA的 “内部类”章节。

4、复习JAVA的` “反射”章节。

5、温习操作系统 部分的知识。

6、数组问题:

如我声明 int [] a = new int[1] , 那么a[0]的默认值就为0。 我起初理解错误了, 我认为如此声明只是为数组开辟了空间而已, 在其空间上默认值为NULL。

7、关于启动 gc 的方法:

System.gc 和 RunTime()类的 gc() 方法, 但是即使调用了前面的方法也不保证一定会进行回收。

拓展之:

a. GC并不是定期来回收你的垃圾内存,即是根据需要来回收。

b. GC的回收是因为:它认为你的系统已经开始内存紧张(这个就是jvm的神奇)

c. 即使GC开始准备清理你的垃圾内存,但是如果该内存的引用还存在(不等于null), 这个时候GC仍然无能为力!

d、RunTime类的 public static Runtime getRuntime() 返回: 与当前 Java 应用程序相关的 Runtime 对象。

8、int i=10, double e = 10.0; 判断(i==e)、(i==10.0)的真假。

我认为一个是int类型,一个是double类型,它们分属不同的类型, 所以我认为其是错误的, 然而经运行测试发现是正确的。

9、public static void main(String[] args){

StringBuffer str1 = new StringBuffer(“a”);

StringBuffer str2 = new StringBuffer(“b”);

ORACLE数据库的部分试题 篇5

1怎样查看数据库引擎的报错

解答:alert log.

2比较truncate和delete 命令

解答:两者都可以用来删除表中所有的记录,区别在于:truncate是DDL操作,它移动HWK,不需要 rollback segment .而Delete是DML操作, 需要rollback segment 且花费较长时间.

3使用索引的理由

解答:快速访问表中的data block

4. 给出在STAR SCHEMA中的两种表及它们分别含有的数据

解答:Fact tables 和dimension tables. fact table 包含大量的主要的信息而 dimension tables 存放对fact table 某些属性描述的信息

10. FACT Table上需要建立何种索引?

oracle数据库常用操作 篇6

下面就让我们一起来将Oracle删除干净,为重装做好准备。

1、删除服务命令

具体操作方法是:开始--运行--cmd,进入cmd命令行

然后输入: sc delete 服务名

例如: sc delete serv-u 服务器

查询服务输入命令:sc query 服务名

例如:sc query OracleServiceORCL

2、删除oracle注册表信息

cmd命令行输入:regedit

(1)选择HKEY_LOCAL_MACHINESOFTWAREORACLE,按del键删除这个入口

(2)选择HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServices,滚动这个列表,删除所有Oracle入口

(3)选择HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServicesEventlogApplication,删除所有Oracle入口

(4)选择HKEY_LOCAL_MACHINESOFTWARE下,删除Oracle目录

(5)选择HKEY_LOCAL_MACHINESYSTEMControlSet001Services下,删除所有Oracle项

(6)选择HKEY_LOCAL_MACHINESYSTEMControlSet002Services下,删除所有Oracle项

(7)选择HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServices下,删除所有Oracle项

(8)选择HKEY_CLASSES_ROOT下,删除所有Oracle项

3、开始->设置->控制面板->系统->高级->环境变量,删除环境变量CLASSPATH和PATH中有关Oracle的设定

4、删除C:Program Files (x86)Oracle目录

oracle数据库常用操作 篇7

但是,企业在安全性、关键交易处理、数据仓库管理等诸多方面的苛刻要求,使得通用型数据库依然难以完全满足客户在应用领域的所有需求。因此,数据库选件就成为完善和增强数据库功能的重要武器。Oracle在推出数据库11g的同时,还提供了上百种可选配的数据库产品,以增强Oracle数据库11g的功能。这些功能完善、灵活易用的数据库选件产品,可以更好地满足企业对于数据库的苛刻的应用要求。

据了解,Oracle的主要数据库选件包括:活动数据卫士(Active Data Guard)、Oracle高级压缩(Oracle Advanced Compression)、Oracle真正应用测试(Oracle Real Application Testing)、Oracle分区(Partitioning)、空间管理(Spatial)、 Oracle在线分析处理(OLAP) 、Oracle高级安全选件(Oracle Advanced Security)、Oracle全面回忆(Total Recall)、Oracle真正应用集群(Oracle Real Application Clusters)、Oracle Times Ten内存数据库选件(Oracle Times Ten In-Memory Database)等。

李颖聪表示,数据库选件满足了企业对数据库的应用性、易用性、安全性、可开发性、数据仓库以及高可管理性等方面所提出的要求。这些选件已经集成在Oracle数据库11g的软件包中,客户可以根据自己的需要,并且在得到Oracle授权后实现“开箱即用”。

oracle数据库常用操作 篇8

很多朋友只用了oracle的删除,但很多情况下,他会发现重新安装时,点了下一步安装界面就消失了,往往无奈下只好重装系统,其实只是你数据库没删干净,删干净就不会出现这种情况了。

实现方法:

1、开始->设置->控制面板->管理工具->服务

停止所有Oracle服务。

2、开始->程序->Oracle - OraHome81->Oracle Installation Products->

Universal Installer

卸装所有Oracle产品,但Universal Installer本身不能被删除

5、运行regedit,选择HKEY_LOCAL_MACHINESOFTWAREORACLE,按del键删除这个入口。

6、运行regedit,选择HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServices,滚动

这个列表,删除所有Oracle入口。

7、运行refedit,

HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServicesEventlogApplication,

删除所有Oracle入口,

8、开始->设置->控制面板->系统->高级->环境变量

删除环境变量CLASSPATH和PATH中有关Oracle的设定

9、从桌面上、STARTUP(启动)组、程序菜单中,删除所有有关Oracle的组和图标

10、删除Program FilesOracle目录

11、重新启动计算机,重起后才能完全删除Oracle所在目录

12、删除与Oracle有关的文件,选择Oracle所在的缺省目录C:Oracle,删除这个入

口目录及所有子目录,并从Windows目录(一般为C:WINNT)下删除以下文

件ORACLE.INI、oradim73.INI、oradim80.INI、oraodbc.ini等等。

13、WIN.INI文件中若有[ORACLE]的标记段,删除该段

14、如有必要,删除所有Oracle相关的ODBC的DSN

15、到事件查看器中,删除Oracle相关的日志

说明:

如果有个别DLL文件无法删除的情况,则不用理会,重新启动,开始新的安装。安装时,选择一个新的目录,则,安装完毕并重新启动后,老的目录及文件就可以删除掉了

(责任编辑:铭铭 mingming_ky@126.com TEL:(010)68476636)

oracle数据库常用操作 篇9

魏书记在讲话中指出,开展“解放思想、改革开放、创新驱动、科学发展”大讨论活动,是全面贯彻党的十八精神、深入落实党的十八大精神的重要举措,也是实现我院进位赶超、跨越发展的关键,全体教职员工要真正学深吃透党的十八大精神和市委八届五次全会精神,切实将党的理论创新成果和市委的决策部署转化成促进学院科学发展的自觉行动;要深刻查找与学院科学发展不相适应的思想观念,进一步开创解放思想的新境界;要扎实深入开展对标行动,在学习先进、调查研究、对比分析中,查找差距不足,制定赶超计划;要紧密联系学院实际,着力解决影响学院科学发展的突出问题;要把创新突破贯彻始终,坚持边学习边讨论边实践,把大讨论成果转化为解决问题的科学决策、赶超进位的科学路径、科学发展的实际行动。

魏书记指出,要紧密围绕“解放思想、改革开放、创新驱动、科学发展”这一主题,紧密联系思想和工作实际,从如何在办学理念上解放思想,在培养现代职业人的方法和路径上寻求新突破;如何在人才观念上解放思想,在引进人才、培养人才、用好人才上寻求新突破;如何在体制创新上解放思想,在建立长效动能机制上寻求新突破;如何在服务区域经济社会发展上解放思想,在实现校企的深度合作上寻求新突破;如何在目标管理上解放思想,在推进全面对标,提升学院核心竞争力上寻求新突破;如何在深化改革育人模式上解放思想,在“立德树人”提高人才培养质量上实现新突破;如何在营造发展环境上解放思想,在提升学院发展能力上实现新突破;如何在干部队伍建设上解放思想,在提升学院凝聚力战斗力上实现新突破等八个方面开展讨论,探索促进学院改革发展的新思路、新途径、新举措,努力实现思想上明显解放,作风上明显改善,举措上明显创新,工作上明显突破,为建设人民满意、市内领先、国内知名、特色鲜明的民办院校奠定坚实的基础。

oracle数据库常用操作 篇10

关键词:oracle数据库;日程维护;优化;策略

中图分类号:TP311.138

1 oracle数据库的日常维护

Oracle数据库日常维护工作是非常重要的,数据库要认真对待。本文从以下几个方面叙述如何对oracle数据库进行日常维护,维护策略中一些具体命令不在本文提及,需要DBA去查询执行。

1.1 检查与监控

(1)及时检查数据库文件状态。数据库文件状态需要DBA及时检查,保证数据库文件状态正常。如果出现异常,DBA应当更具实际情况采取相应的措施,比如恢复出问题的数据库文件或者重建该数据库文件所在的表空间;(2)检查数据库定时作业的完成情况。如果一些定时作业需要用到oracle的JOB,那么DBA需要对这些JOB进行检查,并根据检查结果做进一步处理;(3)监控Oracle警告日志文件。Oracle警告日志文件十分有用,DBA日常要加大对警告日志文件的监控,对于问题的及时处理具有显著作用。

1.2 数据库坏块的处理

在日常维护工作中,如果数据库出现了坏块,在警告日志文件中DBA能够查到相关坏块的信息,DBA要首先检查是否出现了硬件故障或者是操作系统故障导致坏块,如果不是,再对发生坏块的数据库对象采取相应的处理措施,按照下述操作:(1)确定发生坏块的数据库对象;(2)根据具体情况,决定修复方法;第一,如果坏块对象是可以根据表重建的,那么我们删掉它重建;第二,如果数据库备份策略完善,可以使用恢复数据库的方式修复;第三,如果某个表的记录没有其他办法进行修复,坏块的记录丢失,我们使用原始方法将其他数据块的记录读出来,然后对表进行重建;(3)标记坏块;(4)将表中其它块上的记录保存到另一张表上;(5)删除有坏块的表;(6)恢复原来的表;(7)如果表上存在索引,则要重建表上的索引。

1.3 数据库备份策略

DBA需要制定完善的备份策略,这对于数据安全具有重要意义,比如数据库结构的变化引发控制文件的变化,DBA需要对控制文件进行及时的备份。

1.4 操作系统相关维护

除了数据库本身的日常维护,还需要对操作系统进行相关维护,主要包括:(1)维護文件系统,根据需要清理相关日志和TRC文件;(2)对于需要提供网络服务的oracle,需要保证网络连接正常;(3)监控操作系统的资源使用情况;(4)监控相关硬件,保证出现故障时及时修复,例如磁盘、内存报错。

上述日常维护策略主要围绕着数据安全问题与性能问题,在日常维护中还需要做到硬件环境的维护,做好数据库权限和安全方面的审计工作。

2 oracle数据库的优化策略

我们要对oracle数据库进行优化首先要有优化指标与优化法则,优化指标主要是响应时间,也就是性能的优化,主要包括硬件的优化、操作系统的优化、数据库系统的优化等。

2.1 硬件的优化

Oracle数据离不开硬件的支持,因此我们也要对硬件进行优化。在应用程序展开的初期,硬件经常需要调整优化,许多性能瓶颈也得到很好的解决,但是随着数据库规模的不断增长,我们需要把优化手段集中到比较经济的软优化层面上来。

2.2 操作系统的优化

操作系统的优化还是要针对具体的操作系统,以unix操作系统为例,我们需要优化以下方面:(1)共享内存(Shared Memory);(2)信号灯(Semaphores)。

对于共享内存的优化,有三个核心参数的优化对于oracle数据库的优化意义重大,包括:SHMMAX(单个共享内存段最大值)、SHMSEG(能够连到单个进程上共享内存段的最大值)、SHMALL(共享内存段总数目),本文建议将单个oracle实例的SGA分配在一个共享内存段。由于Oracle实例的内存优化对于性能的优化有着显著作用,如果不按最佳的方式为各种结构分配内存,性能会大打折扣,因此合理分配内存至关重要。一般情况下,本文建议自动管理PGA内存和SGA内存,使用Automatic Memory Management机制。

对于信号灯方面的优化,本文认为当关注下面参数的优化:SSEMMNI(系统里信号灯集合的最大数目)、SEMMSL(每个集合里信号灯的最大数目)、SEMMNS(系统范围内可用的信号灯的最大数目)。信号灯数要比进程多,每个oracle进程对应一个信号灯,DBA需要根据实际情况进行具体分析,做到最优化取值。

2.3 数据库系统的优化

对于数据系统,第一,我们需要合理分配内存空间,表空间体系和内部空间的参数设置要合理,尽量最优化。第二,磁盘空间利用率应当尽可能提高,数据段的碎片应当减少。第三,减少I/O次数,减少交互次数,减少CPU开销和资源消耗。第四,合理配置环境参数,使等待次数减少,锁存器冲突几率降低。为达到这些目的,需要采取创建并使用正确的索引、数据分页处理以及查询时只需返回需要的字段等具体操作手段。

数据库系统的优化对于相关人员的经验要求较高,需要在不断实践中摸索优化方式,在保障数据安全前提下,最大程度地提高oracle数据库的性能是优化的主题。

3 结束语

本文主要从硬件层面,操作系统,数据库管理系统本身等方面论述了oracle数据库日常维护与优化策略。维护好硬件环境与操作系统环境,专业的数据库需要专业的人员来管理以确保oracle数据库应用时的数据安全与高性能,正确而且专业地对oracle进行日常维护与优化至关重要。

参考文献:

[1]李聪慧.试论数据库系统的优化举措[J].信息安全与技术,2012(06).

[2]曾德云.图书管理系统数据库的优化设计及实现[J].黑龙江档案,2011(05).

[3]周渝霞,刘道践,郝玉清.基于Oracle的OLTP与OLAP数据库设计及实现[J].电脑编程技巧与维护,2012(10).

[4]魏琦,于林林,宋旭东.关系数据库查询优化策略研究[J].电脑知识与技术,2010(31).

[5]张桂燕.基于数据库的语句优化经验之谈[J].电脑知识与技术,2011(17).

[6]杜刚强;姜丹.数据库系统的优化[J].硅谷,2011(21).

[7]王玉玮,王兰.浅析Oracle数据库性能优化的方法[J].科技创新与应用,2012(29).

[8]孙国社,李艳玲,李永峰.一种基于人工神经网络的数据查询优化方法[J];计算机与信息技术,2010(10).

作者简介:曹亚宁(1983.02-),女,河北人,本科,中级职称,研究方向:计算机数据库、信息安全;马立坤(1980.11-),男,河北人,本科,中级职称,研究方向:财务信息化。

oracle数据库常用操作 篇11

摘 要

结合金华电信IT系统目前正在实施的备份与恢复策略,重点介绍电信业务计算机管理系统(简称97系统)和营销支撑系统的ORALCE数据库备份和恢复方案。

Oracle数据库有三种标准的备份方法,它们分别是导出/导入(EXP/IMP)、热备份和冷备份。要实现简单导出数据(Export)和导入数据(Import),增量导出/导入的按设定日期自动备份,可考虑,将该部分功能开发成可执行程序,然后结合操作系统整合的任务计划,实现特定时间符合备份规划的备份应用程序的运行,实现数据库的本级备份,结合ftp简单开发,实现多服务器的数据更新同步,实现数据备份的异地自动备份。

关键字:数据库 远程异地 集中备份

I

ORACLE数据备份与数据恢复方案

目 录

一、前 言 ··························· 1

二、金华电信ORACLE数据库的备份与恢复方案 ······· 2

2.1 备份系统数据库备份策略································································································· 3 2.2 备份系统数据库恢复策略···················· 3 2.3 金华电信97系统及营销支撑系统的系统状况 ··········· 3 2.4 金华电信97系统、营销支撑系统及备份系统总体结构图 ······ 4 2.5 备份系统结构图说明······················ 4

三、金华电信97系统的数据库备份和恢复 ········ 6

3.1 备份方法··························· 6 3.2 备份策略··························· 6 3.3 恢复策略··························· 6 3.4 性能影响··························· 6

四、金华电信营销支撑系统的备份与恢复········· 7

4.1 备份方法··························· 7 4.2 备份策略··························· 7 4.4 性能影响··························· 7

五、RMAN CATALOG 数据库的备份 ············ 8

II

ORACLE数据备份与数据恢复方案

六、结 语 ······················ 9

III

ORACLE数据备份与数据恢复方案

一、前 言

目前,数据已成为信息系统的基础核心和重要资源,同时也是各单位的宝贵财富,数据的丢失将导致直接经济损失和用户数据的丢失,严重影响对社会提供正常的服务。另一方面,随着信息技术的迅猛发展和广泛应用,业务数据还将会随业务的开展而快速增加。但由于系统故障,数据库有时可能遭到破坏,这时如何尽快恢复数据就成为当务之急。如做了备份,恢复数据就显得很容易。由此可见,做好数据库的备份至关重要。因此,建立一个满足当前和将来的数据备份需求的备份系统是必不可少的。传统的数据备份方式主要采用主机内置或外置的磁带机对数据进行冷备份,这种方式在数据量不大、操作系统种类单

一、服务器数量有限的情况下,不失为一种既经济又简明的备份手段。但随着计算机规模的扩大,数据量几何级的增长以及分布式网络环境的兴起,将越来越多的业务分布在不同的机器、不同的操作平台上,这种单机的人工冷备份方式越来越不适应当今分布式网络环境。

因此迫切需要建立一个集中的、自动在线的企业级备份系统。备份的内容应当包括基于业务的业务数据,又包括IT系统中重要的日志文件、参数文件、配置文件、控制文件等。本文以ORACLE数据库为例,结合金华电信的几个相关业务系统目前正在实施的备份方案,介绍ORACLE数据库的备份与恢复。

ORACLE数据备份与数据恢复方案

二、金华电信ORACLE数据库的备份与恢复方案

由于金华电信IT系统以前只采用逻辑备份方式进行数据库备份,速度较慢并且数据存储管理都很分散,甚至出现备份数据不完整的现象。为了提高备份数据的效率,提供可靠的数据备份,完善备份系统,保证备份数据的完整性,降低数据备份对网络和服务器的影响,对每个IT系统的备份数据进行集中管理,我们对备份工作进行了改进,将逻辑备份与物理备份相结合,在远程建立了一个异地集中、自动在线的备份系统即网络存储管理系统。(这里用到的物理备份指热备份)其具备的主要功能如下:(1)集中式管理 :网络存储备份管理系统对整个网络的数据进行管理。利用集中式管理工具的帮助,系统管理员可对全网的备份策略进行统一管理,备份服务器可以监控所有机器的备份作业,也可以修改备份策略,并可即时浏览所有目录。所有数据可以备份到同备份服务器或应用服务器相连的任意一台磁带库内。(2)全自动的备份: 对于大多数机房管理人员来说,备份是一项繁重的任务。每天都要小心翼翼,不敢有半点闪失,生怕一失足成千古恨。网络备份能够实现定时自动备份,大大减轻管理员的压力。备份系统能根据用户的实际需求,定义需要备份的数据,然后以图形界面方式根据需要设置备份时间表,备份系统将自动启动备份作业,无需人工干预。这个自动备份作业是可自定的,包括一次备份作业、每周的某几日、每月的第几天等项目。设定好计划后,备份作业就会按计划自动进行。(3)数据库备份和恢复: 数据库系统已经相当复杂和庞大,不能用文件的备份方式来备份数据库。企业级的备份系统能够对数据库在不中断业务、不停顿数据库的情况下对数据进行联机的自动备份,包括可以进行数据库备份、日志备份、完全备份、增量备份等。(4)归档管理: 用户可以按项目、时间定期对所有数据进行有效的归档处理。提供统一的数据存储格式从而保证所有的应用数据由一个统一的数据格式来作永久的保存,保证数据的永久可利用性。(5)有效的媒体管理: 备份系统对每一个用于作备份的磁带自动加入一个电子标签,同时在软件中提供了识别标签的功能,如果磁带外面的标签脱落,只需执行这一功能,就会迅速知道该磁带的内容。(6)满足系统不断增加的需求:备份软件必须能支持多平台系统,当网络连接其它的应用服务器时,对于网络存储管理系统来说,只需在其上安装支持这种服务器的客户端软件即可将数据备份到磁带库或光盘库中。

ORACLE数据备份与数据恢复方案

2.1 备份系统数据库备份策略

数据库运行在归档模式下,利用Veritas软件模块调用数据库的备份接口进行在线的热备份,可以在备份时,对备份数据保存在不同的存储对象中,以满足客户容灾的要求,可以利用Veritas的多线程的数据迁移、利用多个磁带驱动器同时读写提高其数据备份的效率。

针对数据库的总数据量和增量数据量大小,我们可以利用数据库的多级的增量备份机制,结合Veritas 强大的备份数据追踪寻址能力和介质管理功能,制定灵活的备份策略,实现全自动的备份数据的全生命周期管理。

2.2 备份系统数据库恢复策略

通过本地的Veritas Server结合Veritas for Databases利用备份数据进行数据恢复。恢复时,Veritas 可以实现多线程的数据恢复,利用Veritas 独特的磁带分类集中存放技术,减少磁带的就位时间,提高数据恢复的效率。

先用最近一次的全备份恢复+恢复最近一次的增量备份+增量备份到断点的ARCHIVE LOG来恢复(要求数据库在ARCHIVE LOG模式下工作)。这种恢复方式比全部用ARCHIVE LOG恢复要快。

如果两份冗余的最近一次增量备份都不可用,可以追溯再上次的增量备份来恢复,然后用增量备份到断点的ARCHIVE LOG恢复。

如果最近一次的全备份恢复都不可用,则利用上个周期的全备份+上个周期的最后一次增量备份+本周期的最近一次增量备份+增量备份到断点的ARCHIVE LOG来恢复。

如果增量备份都不可用,那么用全备份+ARCHIVE LOG来恢复。

2.3 金华电信97系统及营销支撑系统的系统状况

金华电信经过这么多年的信息系统建设,目前已经运行着多个系统,除计费系统有较为完善的备份系统外,其他系统的备份系统都需要完善。其中97系统的机器型号IBM 7040-61R,操作系统 AIX5.2,数据库类型ORALCE8.1.7.4,数据量120G;营销支撑系统机器型号IBM xseries440,操作系统Red Flag Linux Server 4.0,数据库类型ORACLE9.2.0.1,数据量150G。以前,这两个系统的数据备份都是通过逻辑备份(exp)实现并且备份数据管理是分散的,然而一个完善的备份系统必须包含物理备份和逻辑备份两种方式。因此,我们正在实施一个远程

ORACLE数据备份与数据恢复方案

异地在线集中的高效的备份系统,将逻辑备份和物理备份(热备份)相结合,设置了专门的备份服务器。由于97、营销支撑操作系统采用AIX及Red Flag,我们在备份服务器上安装了第三方备份软件Veritias NBU。

2.4 金华电信97系统、营销支撑系统及备份系统总体结构图

对于具体的备份环境和结构,我们结合了Oracle备份技术和LAN环境的SAN备份结构.该系统的结构如下图所示(以97系统与营销支撑系统为例)

备份系统总体结构图

2.5 备份系统结构图说明

此在线存储系统采用了基于SAN(存储区域网络)的结构,SAN是一种高速

ORACLE数据备份与数据恢复方案

网络或子网络,提供在计算机与存储系统之间的数据传输。存储设备是指一张或多张用以存储计算机数据的磁盘设备。一个 SAN 网络由负责网络连接的通信结构如光交换机、负责组织连接的管理层、存储部件以及计算机系统构成,从而保证数据传输的安全性和力度。由于整个SAN系统的数据量比较大,所以备份系统采用SAN结构,将磁盘阵列直接连接到SAN的交换机上,和备份服务器、多台服务器均通过SAN相互连接,利用SAN的高性能来提高备份速度、降低数据备份对网络和服务器的影响。备份系统结构图说明如下:(1)Veritas 服务器(即备份服务器):备份系统是数据安全的关键系统,而备份服务器是备份系统的核心,因此从安全可靠的角度,采用专用的备份服务器,在这台服务器上安装VERTIAS Server端软件,集中管理控制磁带库、定制备份策略、管理备份作业、管理磁带等,同时安装oracle catalog库。(2)备份方案:对97系统购买IBM VERTIAS 备份软件,将数据备份至磁盘阵列上面,备份数据走光纤通道。对营销支撑系统,我们从SAN存储的FATA盘上划部分空间直接挂到系统中,然后直接采用RMAN做备份,以降低成本。之所以采用FATA盘的目的是为了避免和FC盘有IO冲突。(3)M300磁盘阵列:在我们的方案当中,我们采用磁盘阵列来代替一贯采用的磁带库。磁盘阵列具有性能高,可靠性高,维护方便等优点。本方案中采用专业存储厂商富士通的中高端存储ETERNUS3000 M300,作为一种面向开放系统的存储系统,ETERNUS3000在性能、容量及连通性等方面将世界标准提高到一个新层次。M300的容量为6T的FC盘,10T的FATA盘。在FC盘上保留所有系统的一份全备,其他的备份在白天定期转移到FATA盘。在FATA盘上保留1-2份全备,其他的定期转移到3583磁带库中。(3)光纤交换机:为了使整个系统具有良好的扩展性,我们在数据中心采用了被评为最优秀的网络存储产品博科的16口的光纤交换机,在新大楼备份中心采用博科的8口的光纤交换机。(4)磁带库:本方案中的磁带库采用的是原先计费系统所用的3583磁带库。我们定期将FATA盘上的备份自动转移到该磁带库上,做更久的保留。(5)逻辑备份服务器:为了充份利用旧有的设备来提高异地集中备份系统的稳定性,安全性,我们利用旧有设备IBM 7044-170小型机和IBM 3542阵列来搭建一个逻辑备份系统。所有的逻辑备份都放到该机器上面来,使得逻辑备份和物理备份在物理上开离。这样一来避免了IO冲突,二来提高了备份系统的可靠性。

ORACLE数据备份与数据恢复方案

三、金华电信97系统的数据库备份和恢复

3.1 备份方法

采用Veritas NBU物理备份加EXP逻辑备份。Exp逻辑备份在服务器上直接备份,定期转移到逻辑备份服务器。

3.2 备份策略

备份策略:(1)每周进行一次数据库全备份操作,并定期将FC盘上面的物理备份定期转移到FATA盘上,同时将FATA盘阵上面的物理备份定期转移到磁带库上,至少保存 3 个全备份;全备份时间选择在每周星期六凌晨12:00 开始。(2)数据库采用Archive Log 模式,每天晚上12:00 开始进行增量备份。(3)与数据库的逻辑备份相配合,我们每天进行一次数据的exp备份,即每天做一个完整的数据库EXPORT 备份;备份时间选择在每天凌晨1:00 开始。Exp备份还是备到本机,定期将其ftp到逻辑备份服务器上。

3.3 恢复策略

恢复策略:(1)数据文件损坏或磁盘阵列损坏:针对这种情况可以采用Veritas NBU从FC磁盘阵列中恢复。(2)误操作或对象级逻辑上的损坏:针对这种情况可以从exp备份中采用imp恢复。

3.4 性能影响

数据库采用归档模式对97数据库性能将产生一定的影响。因为在归档模式下,oracle需要将归档日志归档到归档目录(也就是copy)。在IO资源不成为瓶颈的情况下,对系统影响将可以不予考虑。97系统目前的瓶颈在于内存这一块。所以对97系统的性能影响可以不加以考虑。

ORACLE数据备份与数据恢复方案

四、金华电信营销支撑系统的备份与恢复

4.1 备份方法

采用物理备份加EXP逻辑备份。物理备份考虑到VERTIAS 的成本,及该系统的重要程度,我们从SAN存储上划一部分空间挂接至该系统OS上面,然后直接采用RMAN备份。这样备份的好处是成本低,缺点是不便于管理和维护,消耗主机的资源,在主机无法启动的情况下,备份文件无法访问,但备份数据还是完好如初的。

4.2 备份策略

备份策略:(1)每周进行一次数据库全备份操作,采用循环覆盖的方式,共保存 2个全备份;备份时间可以选择在周日晚上11:00进行(由于其采用的是FATA盘,与其他的物理备份不会造成IO冲突)。(2)数据库采用Archive Log 模式,每天晚上12:00 增量备份。(3)与数据库的逻辑备份相配合,我们每周进行一次数据的exp备份,即每天做一个完整的数据库EXPORT 备份;备份时间选择在每天凌晨1:00 开始。

4.3 恢复策略

恢复策略:(1)数据文件损坏或磁盘阵列损坏:针对这种情况可以采用RMAN从磁盘中恢复。(2)误操作或对象级逻辑上的损坏:针对这种情况可以从exp备份中采用imp恢复。

4.4 性能影响

数据库采用归档模式对营销支撑系统数据库性能产生的影响也是由于归档进程需要对归档日志进行归档。同时改成归档模式还需要注意的一个问题就是归档目录空间的问题,该系统空间足够。如果该系统的IO资源较为充裕的话,则不会对性能产生很大的影响。

ORACLE数据备份与数据恢复方案

五、RMAN Catalog 数据库的备份

RMAN Catalog库是整个备份系统当中最重要的信息之一。是在物理备份(Veritas)服务器上建立的一个ORACLE数据库,记录了所有备份的数据库数据文件。如果丢失了Catalog信息的话,恢复将非常麻烦,因此我们也需要对RMAN Catalog库做定期备份。RMAN Catalog库采用逻辑备份,每天直接备份到逻辑备份服务器上。

ORACLE数据备份与数据恢复方案

六、结 语

上一篇:迎新春元旦演讲稿下一篇:学校体质健康测试方案