--1、查看表空间的名称及大小
SELECT t.tablespace_name, round(SUM(bytes / (1024 * 1024)), 0)
ts_size
FROM dba_tablespaces t, dba_data_files d
WHERE t.tablespace_name = d.tablespace_name
GROUP BY t.tablespace_name;
--2、查看表空间物理文件的名称及大小
SELECT tablespace_name,
file_id,
file_name,
round(bytes / (1024 * 1024), 0) total_space
FROM dba_data_files
ORDER BY tablespace_name;
--3、查看回滚段名称及大小
SELECT segment_name,
tablespace_name,
r.status,
(initial_extent / 1024) initialextent,
(next_extent / 1024) nextextent,
max_extents,
v.curext curextent
FROM dba_rollback_segs r, v$rollstat v
WHERE r.segment_id = v.usn(+)
ORDER BY segment_name;
--4、查看控制文件
SELECT NAME FROM v$controlfile;
--5、查看日志文件
SELECT MEMBER FROM v$logfile;
--6、查看表空间的使用情况
SELECT INSTANCE_NAME "实例名称", HOST_NAME "主机名称", T.TABLESPACE_NAME
"表空间",
TO_CHAR(U.USER_SPACE, '999,999') "已用大小(MB)",
TO_CHAR(T.TOTAL_SPACE - U.USER_SPACE, '999,999') "剩余大小(MB)",
TO_CHAR(T.TOTAL_SPACE, '999,999') "总大小(MB)",
TO_CHAR((ROUND ((1 - U.USER_SPACE / T.TOTAL_SPACE) * 100)), '999')
|| ' %' "剩余比率"
FROM (SELECT TABLESPACE_NAME, CEIL(SUM(BYTES) / POWER(2, 20))
USER_SPACE
FROM DBA_SEGMENTS
GROUP BY TABLESPACE_NAME
) U,
(SELECT TABLESPACE_NAME,
ROUND(SUM(DECODE(AUTOEXTENSIBLE, 'YES', MAXBYTES, BYTES) / POWER(2,
20))) TOTAL_SPACE
FROM DBA_DATA_FILES
GROUP BY TABLESPACE_NAME
) T, V$INSTANCE I
WHERE U.TABLESPACE_NAME = T.TABLESPACE_NAME
--7、查看数据库库对象
SELECT owner, object_type, status, COUNT(*) count#
FROM all_objects
GROUP BY owner, object_type, status;
--8、查看数据库的版本
SELECT version
FROM product_component_version
WHERE substr(product, 1, 6) = 'Oracle';
--9、查看数据库的创建日期和归档方式
SELECT created, log_mode, log_mode FROM v$database;
Oracle数据库可以运行在两种模式下:
归档模式(archivelog)
非归档模式(noarchivelog)
归档模式&非归档模式区别:
归档模式,可以在线|离线备份数据库,可以是全备份或者是部分备份(单个表空间|数据文件)
非归档模式,只能离线备份而且必须备份所有的数据文件,控制文件,日志文件
☆最大的区别是归档模式能够做到零数据丢失;当然归档会消耗一些存储和性能资源
归档模式工作方式:数据库有DML或其它事务处理时,日志写进程LGWR会把语句写入到日志文件LOG-A中,然后数据库会把改的数据调到内存中,修改完成后(修改的事务也会被记录到LOG-A中),不知道在什么情况下,会把脏数据写回磁盘。LOG-A写满后切换日志:CKPT被触发,告知控制文件有日志且换发生,CKPT工作完成,数据库继续工作,新产生的日志会被写到LOG-B中,等LOG-B也被写满,切换日志,归档进程被唤起,LOG-A中的数据copy到一个文件里面(不知道这个文件叫什么名字),然后数据库的事务日志又源源不断的写到LOG-A中,按照这种工作方式,你的数据库即使出现问题也会被回复到down机前的最后一刻的状态。
非归档模式:
不保存旧日志,LOG-A满后切换到LOG-B,LOG-B满后再切换回LOG-A,LOG-A中的旧数据会被覆盖.。
===================================================================
查询是否归档
SQL>select name,log_mode from v$database;
检查归档模式命令: SQL> archive log list
设置归档模式: SQL> shutdown immediate;
SQL> startup mount
SQL> alter database archivelog;
SQL> alter database open;
SQL> archive log list;
停止归档模式命令: SQL>alter database
noarchivelog