oracle开发常用脚本(一)

本文详细介绍了Oracle数据库的手动启动与关闭操作、多种备份方法,包括冷备份、逻辑备份、物理备份等,并提供了联机全备份与日志备份的具体步骤及其恢复流程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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;

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/25136010/viewspace-683022/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/25136010/viewspace-683022/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值