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