1. ORACLE数据库启动与关闭1.1打开和关闭数据库(手工)
1.1.1 sqlplus连接#su - oracle
#sqlplus/nolog
1.1.2打开数据库sql> connect sys/oracle as sysdba;
sql> startup [nomount|mount]等待十几秒左右,当看到oracle instances started,
database mounted,
database opened的时候,oracle数据库打开成功备注:打开数据库startup可带三个参数,分别是SQL > startup nomount仅启动instances
SQL > startup mount启动instances,连上(mount)数据库SQL > startup normal启动instances,连上(mount)数据库(推荐)打开(open)数据库startup缺省参数是normal
1.1.3启动oracle listener
#su - oracle
#lsnrctl start如果出错检查环境变量是否设好,及lsnrctl文件的内容和执行属性。1.1.4关闭oracle listener
#su - oracle
#lsnrctl stop
1.1.5关闭数据库sql> connect sys/oracle as sysdba;
sql> shutdown关闭数据库(推荐)等待几秒左右,当看到database closed
database dismounted
oracle instances shut down的时候,oracle数据库关闭成功备注:关闭数据库shutdown可带三个参数,分别是SQL > shutdown abort非正常立刻关机。等于忽然停电SQL > shutdown immediate做回滚*作,立刻关机。SQL > shutdown normal正常关机(推荐)
shutdown缺省参数是normal
2.数据库备份2.1冷备份关闭数据库时作的备份称为冷备份。关闭数据库,将所有和本实例有关的文件,包括datafile,controlfile,redolog,archiv
ed redolog,initora.ora等全部备份。恢复时只要将这些文件放回从前的目录,startup数据库即可。数据库处于归档非归档状态均可。2.2用exp、imp命令做逻辑备份EXP:有三种主要的方式(完全、用户、表)1、完全:exp system/manager buffer=64000 file=/backup/full.dmp full=y如果要执行完全导出,必须具有角色EXP_FULL_DATABASE。2、用户模式:exp system/manager buffer=64000 file=/backup/bill.dmp wner=bill这样用户bill的所有对象被输出到文件中。3、表模式:exp system/manager buffer=64000 file=/backup/area.dmp wner=bill tables=area这样用户bill的表area就被导出到文件中。需要注意的参数是Inctype,这个参数可以取一下三个值:Complete(全备份):把数据库中所有数据对象导出到dump文件中,只有具有Exp_fu
ll_database的用户有使用这个参数的权限。Incremental(增量备份):把数据库中所有上次备份后修改的表备份出来。Cumulative(累计备份):把数据库中所有全备份或者累计备份以后修改的表备份出来。IMP:具有三种模式(完全、用户、表)1、完全:imp system/manager buffer=64000 file=/backup/full.dmp full=y如果要执行完全导入,必须具有角色IMP_FULL_DATABASE。2、用户模式:imp system/manager buffer=64000 file=/backup/area.dmp fromuser=bill
touser=billbak文件中用户bill的所有对象被导入到用户billbakK中。必须指定fromuser、touser参数。3、表模式:imp system/manager buffer=64000 file=/backup/area.dmp fromuser=bill
touser=billbaktables=area文件中用户bill的表area就被导入到用户billbak中。2.3用tar命令做物理备份1、#su - oracle
2、% tar cvf /dev/rmt0 .把oracle路径下所有文件备份到磁带机上3、% tar xvf /dev/rmt0把备份磁带上所有文件恢复进oracle当前路径4、% tar tvf /dev/rmt/0查看磁带上有些什么文件2.4备份控制文件控制文件是Oracle数据库中非常重要的文件。它记录着oracle数据库的物理结构信息,比如数据文件,日值文件的数量和位置等。在数据库启动过程中,需要读取控制文件。如果控制文件损坏或丢失,数据库就无法启动。因此,做好控制文件的备份十分重要。一般的数据库配置都会有多个控制文件。这些控制文件是完全相同的,分别存放在不同的位置(最好在不同的磁盘上),他们之间互为备份。数据库启动过程中,必须保证所有控制文件都是一致的,否则数据库不能启动。在oracle数据库的参数文件(initSid.o
ra)中指定控制文件的位置。如果部分控制文件损坏,可以在参数文件中去掉相应的控制文件,即可启动数据库。每次数据库物理结构发生改变时,必须及时备份控制文件。$sqlplus
SQL>connect internal
SQL>alter database backup controlfile to/…/test.ctl ;也可以把控制文件备份成脚本,在必要的时候重建控制文件SQL>alter database backup controlfile to trace;
2.5联机全备份+日志备份2.5.1设置ORACLE数据库有两种运行方式:一是归档方式(ARCHIVELOG),归档方式的目的是当数据库发生故障时最大限度恢复所有已提交的事物;二是不归档方式(NOARCHIVELOG),恢复数据库到最近的回收点。这两种方式将对备份方法产生较大的影响。1.改变不归档方式为为归档方式2.关闭数据库,备份已有的数据3.改变数据库的运行方式是对数据库的重要改动,所以要对数据库做备份,对可能出现的问题作出保护。4.启动Instance ,Mount数据库但不打开数据库,来改变归档方式#sqlplus
sql>connect internal
sql>startup mount
sql>alter database archivelog;
5.使能自动存档在初始化文件init*.ora(一般放ORACLE根目录的下层目录dbs下)加参数:log_archive_start=true
6.指定存档的重做登录文件名和存放的位置同样是在初始化文件init*.ora中加入下面的参数:log_archive_format=%S.arc
log_archive_dest=/arch12/arch (arch12是日志文件存放的目录)
7.关闭数据库,重新启动数据库,归档方式转换完成。8.可用archive log list查看状态,去除归档日志功能的命令为alter database
noarchivelog。2.5.2步骤联机全备份:数据库处于open状态,依次对各个表空间备份sqlplus "/ as sysdba"
SQL>alter tablespace system begin backup;复制此tablespace各个datafile
SQL>alter tablespace system end backup;注意:begin backup是对tablespace冻结写入,end backup是解除冻结,因此复制dataf
ile的过程不宜过长备份controlfile
SQL>alter database backup controlfile to……. ;日志备份:sqlplus "/ as sysdba"
SQL>alter system archive log stop;移去日志目录下的所有archived redolog
SQL>alter system archive log start;
2.5.3恢复数据库处于shutdown状态2.5.3.1磁盘全部损坏,仅保存上次联机全备份和每天日志备份这是最坏情况解决硬件故障,配置系统软件及环境oracle用户,将全备份和日志备份转移至相应目录,根据initSid.ora中controlfile的配置,将备份控制文件复制到响应目录下sqlplus "/ as sysdba"
SQL>startup mount
SQL>recover database until cancel using backup controlfile;逐个确认待恢复的archived redolog,待最后一个完成后,键入cancel,使恢复结束SQL>alter database open resetlogs;注意:由于日志已经重置,所以应尽快做一次联机全备份2.5.3.2丢失某数据文件只要将此文件从上次联机全备份中复制至其目录,并将自上次联机全备份以来所有日志备份移至归档目录sqlplus "/ as sysdba"
SQL>startup mount
SQL>alter database recover datafilepath/file ;或者简单些recover database;
SQL>alter database open;
2.5.3.3文件损坏或丢失,又无备份,这种情况只能将此文件脱机,将数据exp出来,重建表空间,再imp进去sqlplus "/ as sysdba"
SQL>connect internal
SQL>startup mount
SQL>alter database datafilepath/fileoffline;
SQL>alter database open;
2.5.4注意要点无论有多少把握,恢复前先做冷备份,此为第一原则。不这样做,便是无路可退,一旦失误,后果十分严重。1.rollback段损坏这是非常严重的问题,可在initora.ora中写入_corrupted_rollback_segments=(rxx),启动时避开损坏的rollback段,这只是权宜之计。如数据库处于archivelog,应从上一次全备份起利用备份的日志进行恢复;如数据库处于noarchivelog,应尽快将全部数据e
xport出来,重建数据库,再import进去。所有*作之前,应做冷备份。2.数据库异常中止处理通过手工shutdown abort*作中止数据库,不会产生大的问题,通常直接startup无需使用介质恢复命令如果由于机器崩溃引起的中止,则情况严重得多,有可能要使用到上面提到的恢复方法,不过这种现象并不多见。一般需要显式使用介质恢复命令,如下:sqlplus "/ as sysdba"
SQL>startup mount;
SQL>recover database;
SQL>alter database open;