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=billbak tables=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 datafile path/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 datafile path/file offline;
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;
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=billbak tables=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 datafile path/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 datafile path/file offline;
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;
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/25136010/viewspace-683022/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/25136010/viewspace-683022/