oracle查询日志空间大小,ORACLE 管理 日志与空间

日志文件的管理

联机日志文件的工作状态:

select * from v$log;

联机日志文件的物理存储信息

select * from v$logfile;

手工切换日志:

alter system switch logfile;

日志切换频率:

select to_char(first_time,'yyyy-mm-dd hh24')

first_time,count(*)

from v$log_history

group by to_char(first_time,'yyyy-mm-dd hh24');

增加日志组(可以加快日志切换效率):为什么?

alter database add logfile group 3

'/u01/app/oracle/oradata/demo/redo03.log' size 50m;

增加成员(提高联机日志的安全性):

alter database add logfile member

'/u01/app/oracle/oradata/demo/redo01a.log' to group 1,

'/u01/app/oracle/oradata/demo/redo02a.log' to group 2,

'/u01/app/oracle/oradata/demo/redo03a.log' to group 3;

清空日志组(可以解决INACTIVE组的成员丢失):

alter database clear logfile

group 2;

ACTIVE组成员丢失的解决:

要将ACTIVE状态转变为INACTIVE状态!!要使数据写盘!!

alter system checkpoint; --触发完全检查点

CURRENT组成员丢失的解决:

使用基于cancel的不完全恢复(目的是为了使用resetlogs选项):

recover database using backup controlfile until cancel;

cancel

Media recovery cancelled.

alter database open resetlogs;

日志文件的移动和改名:

1.正常停库

shutdown immediate

2.启动到mount

startup mount

3.使用主机命令移动文件

! mv /u01/app/oracle/oradata/demo/redo01a.log

/home/oracle/redo01a.log

4.修改控制文件的指针

alter database rename file

'/u01/app/oracle/oradata/demo/redo01a.log' to

'/home/oracle/redo01a.log';

5.打开数据库

alter database open;

删除日志成员:

alter database drop logfile member '';

当前组的成员不能删除

每组中的最后一个成员不能删除

删除组:

alter database drop logfile group 4;

当前组不能删除

活动组不能删除

只剩两组,任何一组都不能删除

归档模式:

查看数据库的归档状态:

archive log list

或者:

select log_mode from v$database;

将数据库修改为归档模式:

1.正常停库

shutdown immediate

2.启动到mount

startup mount

3.转换为归档

alter database archivelog;

4.打开数据库

alter database open;

将数据库修改为非归档模式:

1.正常停库

shutdown immediate

2.启动到mount

startup mount

3.转换为非归档

alter database noarchivelog;

4.打开数据库

alter database open;

修改存档终点:

log_archive_dest_n (n=1~10)

mkdir /u01/app/oracle/arclog

alter system set

log_archive_dest_1='location=/u01/app/oracle/arclog';

归档模式下如果联机日志不能归档对数据库有什么影响?

mkdir /arc

chmod 777 /arc

alter system set log_archive_dest_1='location=/arc';

备用归档路径:

alter system set LOG_ARCHIVE_DEST_1='location=/arclog_huayd/

MANDATORY alternate=log_archive_dest_2 noreopen';

alter system set LOG_ARCHIVE_DEST_2='location=/arclog2/

optional';

alter system set LOG_ARCHIVE_DEST_STATE_1='enable';

alter system set LOG_ARCHIVE_DEST_STATE_2='alternate';

OPTIONAL:该选项是默认选项.使用该选项时,无论归档是否成功,都可以覆盖重做日志.

MANDATORY:强制归档.使用该选项时,只有在归档成功之后,重做日志才能被覆盖.

查看归档终点是否有效:

select dest_name,destination,status,error

from v$archive_dest

where dest_id in (1,2);

日志挖掘:

挖掘dml语句需要将数据库置为追加日志数据模式:

alter database add SUPPLEMENTAL LOG

data;

做交易!挖掘!

conn / as sysdba

生成挖掘队列:

exec

dbms_logmnr.add_logfile('/home/oracle/redo01a.log',dbms_logmnr.new);

exec

dbms_logmnr.add_logfile('/home/oracle/redo02a.log',dbms_logmnr.addfile);

exec

dbms_logmnr.add_logfile('/home/oracle/redo03a.log',dbms_logmnr.addfile);

开始挖掘:

exec

dbms_logmnr.start_logmnr(options=>dbms_logmnr.dict_from_online_catalog);

查看挖掘结果:

select sql_redo

from v$logmnr_contents

where lower(sql_redo) like '%update%'

and seg_name='EMP'

and seg_owner='SCOTT';

select sql_undo

from v$logmnr_contents

where lower(sql_redo) like '%update%'

and seg_name='EMP'

and seg_owner='SCOTT';

练习

日志文件中存放的是什么内容?有什么用?

联机日志怎样工作?

怎样查看联机日志的工作状态?

怎样查看联机日志的物理信息?

联机日志何时会发生切换?

怎样手工切换日志?

active状态有何含义?

如何是active状态转变为inactive状态?

如何保证联机日志文件的安全性?

如何修改联机日志文件的大小?

如何移动联机日志文件?

如何修改联机日志文件的名称?

删除组和成员都有什么限制?

清空日志命令有什么作用?

如何做归档模式的转换?有什么注意事项?

如何修改存档终点?

如何挖掘日志中的内容?挖掘dml有什么前提条件?

表空间和数据文件的管理

select tablespace_name,contents from dba_tablespaces order by

2;

永久表空间的管理

创建小文件表空间(1023个文件,每个文件管理4M个oracle块)

create tablespace users datafile '/home/oracle/users01.dbf' size

5m;

create tablespace data01 datafile '/dev/raw/raw1' size 4095m;

查看表空间信息:

select tablespace_name,file_name,bytes/1048576 mb

from dba_data_files;

修改表空间状态:

select tablespace_name,status from dba_tablespaces;

只读状态:只能查询,不能修改,但是可以删除对象!

alter tablespace users read only;

alter tablespace users read write;

离线状态:可以删除对象

alter tablespace users offline;

alter tablespace users online;

表空间改名:

alter tablespace xxx rename to yyy;

不能offline的表空间:

system

default temporary

包含活动事务的undo

创建大文件表空间(只能包含1个文件,文件管理4G个oracle块)

select tablespace_name,bigfile from dba_tablespaces;

create bigfile tablespace

test_big datafile '/home/oracle/bigfile01.dbf' size 5m;

数据文件的移动和改名:

1.使用alter tablespace命令

a.表空间要offline

alter tablespace test_big offline;

b.目标文件要存在

! mv /home/oracle/bigfile01.dbf

/u01/app/oracle/oradata/demo/bigfile01.dbf

alter tablespace test_big

rename datafile

'/home/oracle/bigfile01.dbf' to

'/u01/app/oracle/oradata/demo/bigfile01.dbf';

alter tablespace test_big online;

2.使用alter database命令

a.数据库要mount

shutdown immediate

startup mount

b.目标文件要存在

! mv /home/oracle/bigfile01.dbf

/u01/app/oracle/oradata/demo/bigfile01.dbf

alter database rename file

'/home/oracle/bigfile01.dbf' to

'/u01/app/oracle/oradata/demo/bigfile01.dbf';

alter database open;

表空间扩容:

select

a.tablespace_name,

a.curr_mb,

round((b.free_mb/a.curr_mb)*100,3)||'%' free_pct,

a.max_mb

from

(select

tablespace_name,sum(bytes)/1048576 curr_mb,

sum(maxbytes)/1048576 max_mb

from dba_data_files group by tablespace_name) a,

(select

tablespace_name,sum(BYTES)/1048576 free_mb

from dba_free_space group by tablespace_name) b

where a.tablespace_name=b.tablespace_name;

1.使用文件的自动增长属性:

alter database datafile '/u01/beijing/undotbs01.dbf' autoextend on next 10m maxsize 4g;

alter database datafile '/u01/beijing/undotbs01.dbf' autoextend

off;

2.增加新文件

alter tablespace users add datafile '/u01/beijing/users02.dbf' size

5m;

oracle 10g,第一个文件和有数据的文件不能删除,

alter tablespace users drop

datafile '/u01/beijing/users02.dbf';

3.修改现有文件的大小

alter database datafile '/u01/beijing/users02.dbf' resize

15m;

alter database datafile '/u01/beijing/users02.dbf' resize

10m;

临时表空间的管理:

存放排序的中间结果

存放临时表数据

alter system set pga_aggregate_target=10m;

select USERNAME,TABLESPACE,BLOCKS from v$sort_usage;

select * from database_properties

where rownum<4;

create user u1 identified by u1

default tablespace users --10g

temporary tablespace temp

--9i

quota 10m on users

password expire;

create temporary tablespace

temp02

tempfile

'/u01/app/oracle/oradata/test/temp02.dbf'

size 10m;

select TEMPORARY_TABLESPACE

from dba_users where username='SCOTT';

修改数据库默认排序表空间

alter database default temporary tablespace temp;

修改用户默认排序表空间

ALTER USER SCOTT TEMPORARY TABLESPACE TEMP02;

oracle 10g 临时表空间组:

select * from DBA_TABLESPACE_GROUPS;

将临时表空间加入组

alter tablespace temp tablespace group tempgroup;

将临时表空间移出表空间组

alter tablespace temp02 tablespace group '';

删除临时表空间的文件:

alter database tempfile

'/u01/app/oracle/oradata/test/temp02.dbf' drop;

alter tablespace temp02 add tempfile '/home/oracle/temp02.dbf' size

20m;

回退表空间的管理:

创建undo表空间

create undo tablespace undo02

datafile

'/u01/app/oracle/oradata/test/undo02.dbf' size 4m;

回退表空间的作用:undo tablespace --> rollback segment

--> 数据修改前的老镜像

1.为事务提供回退数据(rollback)

2.为事务提供恢复

3.提供读一致性

自动管理:只能使用一个undo表空间

相关参数

show parameter undo

undo_management = AUTO

undo_tablespace = UNDOTBS1

undo tablespace --> rollback segment

回滚段:

系统回滚段(系统创建)

为系统表空间的对象提供回退

非系统回滚段(用户创建)

为用户表空间的对象提供回退

延迟回滚段(系统创建)

表空间非正常离线时自动创建

select segment_name,tablespace_name,status

from dba_rollback_segs;

要保证UNDOTBS1表空间有足够的空间可用!

切换回滚表空间:

alter system set undo_tablespace = undo02;

跟踪回滚段使用情况:

select SES_ADDR,USED_UBLK from v$transaction;

select sid,serial#,username,machine

from v$session where saddr=SES_ADDR;

(v$transaction.SES_ADDR=v$session.saddr)

手工管理:

相关参数

show parameter undo_management

alter system set undo_management=manual scope=spfile;

show parameter rollback

transactions_per_rollback_segment=5

手工创建回滚段:

create rollback segment rbs1 tablespace undotbs1;

create rollback segment rbs2 tablespace undotbs1;

手工使回滚段online:

alter rollback segment rbs1 online;

使回滚段在数据库启动时自动online:

alter system set rollback_segments=rbs1,rbs2

scope=spfile;

回退保持力(oracle 9i):

事务内的老的镜像块commit后在回滚段还会保留15分钟

undo_retention=900

conn scott/tiger

update scott.emp set sal=100;

commit;

conn system/oracle

exec dbms_flashback.ENABLE_AT_TIME(sysdate-15/1440);

select empno,sal from scott.emp;

exec dbms_flashback.disable;

declare

cursor c is select empno,sal from scott.emp;

r c%rowtype;

begin

dbms_flashback.ENABLE_AT_TIME(sysdate-15/1440);

open c;

dbms_flashback.disable;

loop

fetch c into r;

exit when c%notfound;

update scott.emp set sal=r.sal where empno=r.empno;

end loop;

close c;

commit;

end;

/

练习

表空间的作用?

数据文件的作用?

按照存储的内容分类,表空间分为几种类型?

怎样创建不同类型的表空间?

表空间有几种状态?如何查看?如何修改?不同状态对数据操作有何影响?

是不是所有的表空间都可以offline ?

大文件表空间有什么特点?

数据文件有几种状态?如何修改?

临时表空间保存何种数据?有什么作用?

undo表空间保存何种数据?有什么作用?

如何查看表空间的空间使用率?

表空间扩容有几种手段?

如何移动数据文件?有几种办法?

移动数据库

select name from

(select name from v$controlfile

union

select name from v$datafile

union

select name from v$tempfile

union

select member from v$logfile);

将所有的数据库文件都移动到:/u01/beijing

正常停库

shutdown immediate

修改参数

control_files='/u01/beijing/control01.ctl'

移动所有数据文件到/u01/beijing/

cd /u01/app/oracle/oradata/demo

mv *.dbf /u01/beijing/

启动数据库到nomount

startup nomount

创建控制文件的同时修改文件指针

CREATE CONTROLFILE REUSE DATABASE "BEIJING" RESETLOGS ARCHIVELOG

MAXLOGFILES 16

MAXLOGMEMBERS 3

MAXDATAFILES 100

MAXINSTANCES 8

MAXLOGHISTORY 292

LOGFILE

GROUP 1 '/u01/beijing/redo01.log' SIZE 50M,

GROUP 2 '/u01/beijing/redo02.log' SIZE 50M,

GROUP 3 '/u01/beijing/redo03.log' SIZE 50M

DATAFILE

'/u01/beijing/system01.dbf',

'/u01/beijing/undotbs01.dbf',

'/u01/beijing/sysaux01.dbf',

'/u01/beijing/users01.dbf',

'/u01/beijing/bigfile01.dbf'

CHARACTER SET WE8ISO8859P1

;

打开数据库:

alter database open resetlogs;

添加临时文件:

alter tablespace temp add tempfile '/u01/beijing/temp01.dbf'

reuse;

--生成批量修改控制文件指针的脚本

select 'alter database rename file '||chr(39)||name||chr(39)||' to

'||chr(39)||'/u01/app/oracle/oradata/bobo/'||substr(name,instr(name,'/',-1,1)+1)||chr(39)||';'

from

(select name from v$datafile

union all

select name from v$tempfile

union all

select member from v$logfile)

/

练习

将你的数据库的核心文件全部移动到 /oradb/

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值