首页 > 开发 > 综合 > 正文

ORACEL多路复制及一般表空间恢复

2024-07-21 02:36:19
字体:
来源:转载
供稿:网友

  多路传输控制文件
  在init.ora可见以下内容
  control_files = ("D:/orant/control01.ctl", "D:/orant/control02.ctl", "D:/oradb/control03.ctl")
  停止ORACEL的服务,复制任一控制文件(控制本身为镜像的)为"C:/mybak/control02.ctl",修改信息为
  control_files = ("D:/orant/control01.ctl", "C:/mybak/control02.ctl", "D:/oradb/control03.ctl")
  一般问题
  在起动时
  ORA-00205: ?????????????????????的原因是控制文件丢失,可以复制一个到丢失位,或
  修改init.ora内的信息
  如
  control_files = ("D:/orant/control01.ctl", "D:/orant/control02.ctl", "D:/oradb/control03.ctl")
  变为
  control_files = ("D:/orant/control01.ctl", "D:/orant/control02.ctl", "C:/oradb/control03.ctl")
  
  多路传输归档日志文件
  在init.ora内如下设置(8I以后)
  # Uncommenting the line below will cause automatic archiving if archiving has
  # been enabled using ALTER DATABASE ARCHIVELOG.
  log_archive_start = true
  log_archive_dest_1 = "location=D:/orant/oradata/oradb/archive"
  log_archive_dest_2 = "location=D:/orant/ADMIN/oradb_bak/a"
  #log_archive_dest_n = "location=目录"
  log_archive_format = %%Oracle_SID%%T%TS%S.ARC
  
  多路传输redo日志文件例子
  
  注重redo日志文件是ORACEL不建议备份,有归档日志就已经足够,应通过多路传输来保护而不是备份
  SVRMGR> connect system/manager@oradb as sysdba
  连接成功。
  SVRMGR> select * from v$logfile;
  GROUP# STATUS MEMBER
  1 D:/ORANT/ORADATA/ORADB/REDO01.LOG
  2 D:/ORANT/ORADATA/ORADB/REDO02.LOG
  3 STALE D:/ORANT/ORADATA/ORADB/REDO03.LOG
  (添加)
  SVRMGR> alter database add logfile member 'd:/orant/admin/oradb_bak/redo01.log' to group 1;
  SVRMGR> alter database add logfile member 'd:/orant/admin/oradb_bak/redo02.log' to group 2;
  SVRMGR> alter database add logfile member 'd:/orant/admin/oradb_bak/redo03.log' to group 3;
  SVRMGR> select * from v$logfile;
  GROUP# STATUS MEMBER
  1 D:/ORANT/ORADATA/ORADB/REDO01.LOG
  2 D:/ORANT/ORADATA/ORADB/REDO02.LOG
  3 STALE D:/ORANT/ORADATA/ORADB/REDO03.LOG
  1 INVALID D:/ORANT/ADMIN/ORADB_BAK/REDO01.LOG
  2 INVALID D:/ORANT/ADMIN/ORADB_BAK/REDO02.LOG
  3 INVALID D:/ORANT/ADMIN/ORADB_BAK/REDO03.LOG
  已选择6行。
  SVRMGR> alter system switch logfile;
  语句已处理。(强行交换文件)
  
  附
  
  可使用以下语句查看一下数据文件状态
  SQL> select file_name,file_id,tablespace_name,bytes,status,autoextensible from dba_data_files;
  
  修改文件保存位置(一般用于文件移动,先DOWN数据库,MOVE文件后,STARTUP MOUNT后进行)
  SVRMGR> alter database rename file 'D:/USERS01.DBF' to 'D:/OUSERS01FILE.DBF'
  
  
  如何查看各个表空间占用磁盘情况?
  SQL> col tablespace format a20
  SQL> select  b.file_id,b.tablespace_name,b.bytes,(b.bytes-sum(nvl(a.bytes,0))),sum(nvl(a.bytes,0)),sum(nvl(a.bytes,0))/(b.bytes)*100 from dba_free_space a,dba_data_files b
  where a.file_id=b.file_id
  group by b.tablespace_name,b.file_id,b.bytes
  order by b.file_id
  
  
  A 如何启动ARCHIVELOG模式?
  阿木伯 著
  系统环境:
  1、操作系统:windows 2000 Server,机器内存128M
  2、数据库: Oracle 8i R2 (8.1.6) for NT 企业版
  3、安装路径:C:/ORACLE
  实现步骤:
  1、治理器
  SVRMGR> connect internal
  SVRMGR> shutdown
  SVRMGR> startup mount [dbname]
  SVRMGR> alter database [dbname] archivelog; --起用归档模式
  SVRMGR> archive log start --启动自动归档模式,重起数据库后,按init.ora配置
  SVRMGR> alter database [dbname] open; --打开数据库
  SVRMGR> exit
  2、修改数据库初始化参数文件,定义归档模式(自动)、归档日志文件保存路径、归档日志文件命名方法
  3、重新启动数据库
  具体实例:
  C:/>svrmgrl
  Oracle Server Manager Release 3.1.6.0.0 - PRodUCtion
  版权所有 (c) 1997,1999,Oracle Corporation。
保留所有权利。
  Oracle8i Enterprise Edition Release 8.1.6.0.0 - Production
  With the Partitioning option
  JServer Release 8.1.6.0.0 - Production
  SVRMGR> connect internal
  连接成功。
  SVRMGR> shutdown
  已关闭数据库。
  已卸下数据库。
  已关闭 ORACLE 实例。
  SVRMGR> startup mount
  已启动 ORACLE 实例。
  系统全局区域合计有 57124108个字节
  Fixed Size 70924个字节
  Variable Size 40198144个字节
  Database Buffers 16777216个字节
  Redo Buffers 77824个字节
  已装入数据库。
  SVRMGR> alter database archivelog;
  语句已处理。
  SVRMGR> archive log start
  语句已处理。
  SVRMGR> alter database open;
  语句已处理。
  SVRMGR> alter system switch logfile; --强制系统进行日志切换,可马上观察到归档日志的产生
  语句已处理。
  SVRMGR> exit
  服务器治理程序结束。
  修改数据库参数文件c:/oracle/admin/oradb/pfile/init.ora,
  取消以下语句的#注释
  log_archive_start = true
  log_archive_dest_1 = "location=C:/Oracle/oradata/oradb/archive"
  log_archive_format = %%ORACLE_SID%%T%TS%S.ARC
  关闭数据库,重新启动
  查看C:/Oracle/oradata/oradb/archive目录下,可以看到类似ORADBT001S01201.ARC的文件,说明归档成功
  解释init.ora参数文件中关于归档重做日志参数项的含义
  归档模式是自动还是手工,true为自动,false为手工
  log_archive_start = true
  归档日志文件所保存的路径
  log_archive_dest_1 = "location=C:/Oracle/oradata/oradb/archive"
  归档日志文件的命名方法
  log_archive_format = %%ORACLE_SID%%T%TS%S.ARC
  归档命令:
  启动自动归档模式,系统重起后,将按init.ora中的参数log_archive_start的值设置归档方式
  SVRMGR> archive log start
  启动手工归档模式
  SVRMGR> archive log stop
  查看归档信息:重做日志是否归档方式、是自动归档还是手工归档、归档路径、最旧的联机日志循序号...
  SVRMGR> archive log list
  归档一个已满,但没有归档的联机重做日志
  SVRMGR> archive log next
  归档所有已满,但没有归档的联机重做日志
  SVRMGR> archive log all
  注重:一个事务即使不被提交,也会被写入到重做日志中
  
  //表空间的恢复,在svrmgr内执行
  1 建立测试环境
  SVRMGR> create tablespAce mytest datafile 'd:/test.dbf' size 5M;
  语句已处理。
  SVRMGR> create user test identified by test default tablespace mytest;
  语句已处理。
  SVRMGR> grant connect,resource to test;
  语句已处理。
  退出后
  D:/>sqlplus test/test@oradb
  SQL> create table t1(id number(5));
  表已创建。
  SQL> insert into t1 values(1);
  已创建 1 行。
  SQL> insert into t1 values(2);
  已创建 1 行。
  SQL> exit
  从Oracle8i Enterprise Edition Release 8.1.6.0.0 - Production
  With the Partitioning option
  JServer Release 8.1.6.0.0 - Production中断开
  
  SVRMGR中
  SVRMGR> shutdown
  已关闭数据库。
  已卸下数据库。
  已关闭 ORACLE 实例。
  
  2 D:/TEST.DBF 更名为test1.dbf
  从新启动出现如下情况
  SVRMGR> startup
  已启动 ORACLE 实例。
  系统全局区域合计有 156124428个字节
  Fixed Size 70924个字节
  Variable Size 42868736个字节
  Database Buffers 113106944个字节
  Redo Buffers 77824个字节
  已装入数据库。

  ORA-01157: ????/?????? 7 - ??? DBWR ????
  ORA-01110: ???? 7: 'D:/TEST.DBF'
  SVRMGR>
  
  3 完全通过归档文件恢复(注重归档日志要从建造表空间开始到现在是完整的)
  
  可以用以下方式
  SVRMGR> startup mount
  已启动 ORACLE 实例。
  系统全局区域合计有 156124428个字节
  Fixed Size 70924个字节
  Variable Size 42868736个字节
  Database Buffers 113106944个字节
  Redo Buffers 77824个字节
  已装入数据库。
  SVRMGR> set autorecovery on
  自动恢复 ON
  SVRMGR> alter database create datafile 'd:/test.dbf';
  语句已处理。(d:/test.dbf文件生成)
  SVRMGR> recover datafil

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表