多路传输控制文件
在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