
解决版本问题命令,用高版本覆盖低版本
ORA-00214: control file '/u01/oracle/oradata/orcl/control01.ctl' version 781
inconsistent with file '/u01/oracle/oradata/orcl/control02.ctl' version 779
SQL> ho cp /u01/oracle/oradata/orcl/control01.ctl /u01/oracle/oradata/orcl/control02.ctl
SQL> ho cp /u01/oracle/oradata/orcl/control01.ctl /u01/oracle/oradata/orcl/control03.ctl;
SQL> alter database mount;
控制文件应控制在100M之内,如果超过100M一般通过重建来减少。
控制文件备份:
归档模式:
SQL> alter database backup controlfile to '/u01/oracle/control2012.bak';
任意模式下:
SQL> alter database backup controlfile to trace as '/u01/oracle/backctl.txt';
rman备份:
SQL> ho rman target /
RMAN> backup current controlfile
或者这样:
RMAN> backup database include current controlfile;
或者把rman自动备份控制文件打开
RMAN> CONFIGURE CONTROLFILE AUTOBACKUP On
控制文件的恢复:
控制文件应有多份,放在不同的硬盘上
版本不一致问题:
1.拷贝版本高的来覆盖版本低的
ORA-00214: control file '/u01/oracle/oradata/orcl/control01.ctl' version 781
inconsistent with file '/u01/oracle/oradata/orcl/control02.ctl' version 779
SQL> ho cp /u01/oracle/oradata/orcl/control01.ctl /u01/oracle/oradata/orcl/control02.ctl
SQL> ho cp /u01/oracle/oradata/orcl/control01.ctl /u01/oracle/oradata/orcl/control03.ctl;
SQL> alter database mount;
2.或者修改初始参数中的参数文件个数(不推荐使用)
控制文件丢失:
修改隐藏参数,不验证一致性
alter system set "_allow_resetlogs_corruption"=true scope=spfile
重做日志管理:
1.组成员要分散,磁盘IO要快
2.日志文件大小分配要合理
保证每个组的切换时间应该不小于20分钟左右
切换日志:
Alter system switch logfile;
添加日志组:
alter database add logfile group 4 '/u01/oracle/oradata/orcl/redo04.log' size 50m;
下次切换日志会优先使用此文件
其中group 4 可以省略不写,系统会自动分配
添加有多个成员的组:
alter database add logfile ('/u01/oracle/oradata/orcl/redo06.log','/u01/oracle/oradata/orcl/redo6.log') size 50m;
往已经有的组里添加成员:
alter database add logfile member '/u01/oracle/oradata/orcl/redo4.log' to group 4;
大小默认是组内已有成员的大小。
alter database add logfile member '
删除日志组:
日志组状态不能使current和active
alter database drop logfile group 6,group 5
删除某个成员:
alter database drop logfile member '
重做日志的重命名:
在mount和open阶段才能更改,因为是改到控制文件里面了。
日志文件不能是current和active
先把文件拷贝到另一个名称
Ho cp Alter datebase rename file ‘ 非归档模式可以直接改随便哪个状态都可但不能使current Current 和active丢失后数据库启动会成问题 改变日志组的大小:(先把原来的组删除,在新建同名的组) Alter database drop logfile group 3; Alter database add logfile group 3 (‘/u01/oracle/oradata/orcl/redo03.log’,’ /u01/oracle/oradata/orcl/redo03.log’); 监控日志组自动切换的时间间隔: Select to_char(first_time,’yyyy-mm-dd hh24:mi:ss’’),group# from v$log; 日志文件需要监视内容: 1.位置在哪里,是否存在 2.磁盘空间是否足够 3.日志切换间隔时间 4.看日志组下是否具有多个成员 5.不一致 日志不一致的处理方法: 清空日志:Alter database clear logfile group n; 清空非current 和active的日志 Alter database clear unarchived logfile group n; 清空非current的日志; 日志文件全部丢失: 归档模式下不使用隐藏参数: Recover database using backup controlfile; Alter database open resetlogs; 使用隐藏参数方法: SQL> alter system set "_allow_resetlogs_corruption"=true scope=spfile; Startup force mount Alter database open resetlogs 重置隐藏参数(要不容易引起错误) Alter system reset "_allow_resetlogs_corruption" scope =spfile sid =’*’; 数据文件: Create smallfile|bigfile tablespace <> datafile ’ <>’ size <> database_properties这张表记录了系统默认表空间类型 修改默认的表空间类型: Alter database setdefault bigfile tablespace 具有创建表空间权限的用户: Dba role Sysdba Sysoper Datafile ---后面跟数据文件路径,名字,必须要有oracle写权限; Lmt 本地管理表空间来替代dmt数据字典表空间 转换: 8i dmt------exp--------- 10g---lmt---- 10g-----lmt----建立表结构-------imp--------ignore=y; Create tablespace f2 datafile ‘ /u01/oracle/xx.dbf’ size 10 m extent management local; 10g不在支持字典管理表空间 Dba_tablespaces视图中的extent_management可以查看当前的管理方式 查询表空间状态 select tablespace_name,file#,v.status,v.enabled from dba_data_files d,v$datafile v where d.file_id=v.file#; 表空间的四种属性:online offline readonly readwrite System 必须 online 不能read write Sysaux 可以offline 不能readonly Undo 不能offline 不能readonly 其他随意 表空间在offline 时会带来检查点事件 有些表空间不能offline --系统表空间 --存在激活的回滚段表空间 --默认的临时表空间 alter tablespace users offline alter tablespace users online 表空间修改为readonly时会带来检查点事件 只读是不能进行DML操作但可以DDL语句,可以删除表空间上的对象 修改表空间名称: alter tablespace TB1 rename to TB2 system 和sysaux 表空间不能改名字 database_properties中定义的不能改 -----users temp undo_tablespace 不要改若改需同时该参数 表空间大小; 建议自动扩展 查看自动扩展的表空间 select tablespace_name, autoextensible from dba_data_files; 更改数据文件表空间为自动扩展: alter database datafile ‘*.dbf’ autoextend on; alter database datafile ‘*.dbf’ autoextend off; 其他参数 alter database datafile ‘*.dbf’ autoextend on next 5M maxsize 1T; 改变表空间大小: alter database datafile '/u01/oracle/T1.dbf' resize 1M; 增加大小: alter database datafile '/u01/oracle/T1.dbf' resize 100M; 但尽量用自动扩张 alter database datafile 6 autoextend on; 测试: create user t1 identified by ti default tablespace T1; SQL> create user t1 identified by t1 default tablespace T1; SQL> grant connect,resource to t1; SQL> create table t(id number,name varchar2(256)); 可以通过添加数据文件来增减表空间 但文件越多执行一次CKPT的代价越高 但可以提高IO 表空间的数据文件的重命名和重定位 1 将需要重命名的表空间离线 2 操作系统级移动数据文件或者改名 3 执行下面的rename命令目标文件必须存在 alter database rename file ‘u01/oracle/*.dbf’ to ‘/u01/oracle/*.dbf’ ; 注意:必须在归档模式下,在mount阶段下也可以改 v$logfile and V$datafile 都可以用上面的指令改名 4 将表空间online online时 将效验数据文件的状是否正确 删除表空间: drop tablespace TB1 默认不会删除数据文件需加参数 including contents(删除其中的段 ) and datafiles; drop tablespace TB1 获取表空间和数据文件的信息: 表空间: dba_tablespaces V$tablespace 数据文件: dba_data_files v$datafile 临时数据文件:dba_temp_files v$tempfile 一个tablespace最多只能有1024个datafile
