数据文件(datafiles)、联机日志文件(online redo logs)、控制文件(control files)
控制文件:数据库的名字,数据文件和联机日志文件的名称及位置,创建数据库的时间戳。
联机日志文件:记录对数据库的改变,保护对数据库的改变不会丢失。目的是用于实例的恢复。
归档日志文件:联机日志文件的副本,记录了数据库改变的历史,可以从归档日志文件中恢复丢失的数据。
参数文件:PFILE初始化参数,SPFILE服务器参数文件。
警报文件:启动关闭信息,管理操作,数据库错误,共享服务器的信息。alertSID.log,Background_dump_dest位置。
跟踪文件:后台进程检测到错误时,会写到跟踪文件中。与后台进程相关写到backgroud_dump_dest目录,和服务器进程相关的写到user_dump_dest目录。Max_dump_file_size用于限制跟踪文件的大小。
备份文件:备份文件,执行恢复。
逻辑结构
数据块data block (DB_BLOCK_SIZE) -> 区 extent -> 段 segment -> 表空间 tablespace
表空间级别default storage (inital 128K )
表级别 storage
Initial 分配给表(段)的初始区的大小。
Next 指定第二个区的大小。
Pctincrease 指定第三个及后续分配区的增长百分比。
Minextents 至少要分配多少个区给表或段。
Maxextents 最大数量。
Extent management local autoallocate 或 uniform
区空间的释放
Truncate....drop storage
数据段,索引段,临时段,回滚段
大文件表空间
回滚表空间
闪回查询,允许把表恢复到过去的某个时间点。
1. 创建大文件空间
SQL>create bigfile tablespace bigtbs_01 datafile ‘d:\nbo\bigtbs_01.dbf‘ size 500M autoextend on;
2. 创建表空间
SQL>create tablespace tbsk datafile ‘e:\oracle10\data\bc1.ora‘ size 10M, ‘e:\oracle10\data\bc2.ora‘ size 10M autoextend on next 1M maxsize unlimited;
3. 删除表空间
SQL>drop tablespace tbsk including contents and datafiles cascade constraints
4. 表空间的数据文件组成
SQL>select file_name from dba_data_files where tablespace_name=‘product‘;
5. 创建非标准块表空间
- 先要创建相应的数据库高速缓冲区(16K)
SQL>alter system set DB_16K_CACHE_SIZE=4M; 创建块大小是16KB,大小是4M的缓冲
2. 创建大小16K的非标准表空间
SQL>create tablespace ublock blocksize 16k datafile ‘D:\nbo\ublock.dbf‘ size 30M autoextend on;
3. 查看大小
SQL>show parameter db_block_size
SQL>show parameter db_16k_cache_size
6. 扩展表空间
- 手动增加表空间数据文件的大小
Alter database datafile ‘d:\new\p2.ora‘ resize 1000M
2. 把表空间中的数据文件设成自动扩展
Alter database datafile ‘/export/home/nbodata/nbo/product1‘ autoextend on next 5M maxsize unlimited
3. 在表空间中增加数据文件
Alter tablespace tbsk add datafile ‘d:\new\p2.ora‘ size 100M
7. 限制用户对表空间的使用
- 限制用户test在表空间tbsk上只有使用50M空间的权利
SQL>alter user test quota 50M on tbsk;
2. 使用户sun可以无限制地使用表空间tbsk
SQL>alter user sun quota unlimited on tbsk;
3. 使用户sun可以无限制使用数据库中所有的表空间
Grant unlimited tablespace to sun;
8. 使只读表空间可读写
Alter tablespace tbsk read write;
9. 让表空间在线
Alter tablespace tbsk online;
10. 重命名表空间
Alter tablespace tbsk rename to tbsk2;
11. 查询数据库中表空间
SQL>select tablespace_name from dba_tablespace;
12. 查询表空间的存储参数
SQL>select tablespace_name, * from dba_tablespaces;
13. 查询表空间的空间使用情况
SQL>select tbs, sum(totalM) TOTALM, sum(usedM) UESEDM,
sum(remainedM) REMAINM, sum(usedM)/sum(totalM)*100 UESD
from ( select b.file_id ID, b.Tablespace_name tbs, b.file_name name,
b.bytes/1024/1024 totalM, (b.bytes-sum(nvl(a.bytes,0)))/1024/1024 usedM,
sum(nvl(a.bytes,0))/1024/1024 remainedM
from dba_free_space a ,dba_data_files b
where a.file_id = b.file_id
group by b.tablespace_name, b.file_name, b.file_id, b.bytes
order by b.tablespace_name )
group by tbs;
TBS TM UM RM
------------------------------ ---------- ---------- ----------
UNDOTBS1 135 14.25 120.75
SYSAUX 770 713.5625 56.4375
USERS 5 1.3125 3.6875
SYSTEM 700 692.5625 7.4375
14. 查询本地管理的表空间
SQL>select tablespace_name, extent_management
From dba_tablespaces
Where extent_management=‘LOCAL‘
TABLESPACE_NAME EXTENT_MAN
------------------------------ ----------
SYSTEM LOCAL
SYSAUX LOCAL
UNDOTBS1 LOCAL
TEMP LOCAL
USERS LOCAL
15. 把表空间设置成只读,有可能挂起
Alter tablespace tp read only;
如果表空间存在未完成的事务,会一直等待直到事务提交
- 查找执行alter tablespace语句的会话地址session address, saddr
Select SQL_TEXT, SADDR
From v$sqlarea, v$session
Where v$sqlarea.address = v$session.sql_address
And SQL_TEXT like ‘alter tablespace%‘;
结果:SLQ_TEXT: alter tablespace tp read only saddr: 213fa99c
2. 查找数据库中的事务
Select ses_addr, atart_scnb
From v$transaction
Order by start_scnb;
结果:
213f840c 1679887
213fa99c 1680342
3. 有其它事务未完成1679887,查找这些事务执行的SQL语句
Select a.saddr, a.sid, a.serial#, b.sql_text
From v$session a, v$sql b
Where a.sql_hash_value = b.hash_value and a.sql_address = b.address
213f840c 192 47 insert into a5 values (’21....)
4. 可以中止客户端的语句。
16. 收缩表空间
- 查看表空间的使用情况
select b.file_id ID, b.Tablespace_name tbs, b.file_name name,
b.bytes/1024/1024 totalM, (b.bytes-sum(nvl(a.bytes,0)))/1024/1024 usedM,
sum(nvl(a.bytes,0))/1024/1024 remainedM
from dba_free_space a ,dba_data_files b
where a.file_id = b.file_id
group by b.tablespace_name, b.file_name, b.file_id, b.bytes
order by b.tablespace_name
浙公网安备 33010602011771号