oracle查看数据库sql

补充:
EXP参数:
关键字 说明(默认)
---------------------------------------------------
USERID 用户名/口令
FULL 导出整个文件 (N)
BUFFER 数据缓冲区的大小
OWNER 所有者用户名列表
FILE 输出文件 (EXPDAT.DMP)
TABLES 表名列表
COMPRESS 导入一个范围 (Y)
RECORDLENGTH IO 记录的长度
GRANTS 导出权限 (Y)
INCTYPE 增量导出类型
INDEXES 导出索引 (Y)
RECORD 跟踪增量导出 (Y)
ROWS 导出数据行 (Y)
PARFILE 参数文件名
CONSTRAINTS 导出限制 (Y)
CONSISTENT 交叉表一致性
LOG 屏幕输出的日志文件
STATISTICS 分析对象 (ESTIMATE)
DIRECT 直接路径 (N)
TRIGGERS 导出触发器 (Y)
FEEDBACK 显示每 x 行 (0) 的进度
FILESIZE 各转储文件的最大尺寸
QUERY 选定导出表子集的子句

imp参数:
关键字 说明(默认)
----------------------------------------------
USERID 用户名/口令
FULL 导入整个文件 (N)
BUFFER 数据缓冲区大小
FROMUSER 所有人用户名列表
FILE 输入文件 (EXPDAT.DMP)
TOUSER 用户名列表
SHOW 只列出文件内容 (N)
TABLES 表名列表
IGNORE 忽略创建错误 (N)
RECORDLENGTH IO 记录的长度
GRANTS 导入权限 (Y)
INCTYPE 增量导入类型
INDEXES 导入索引 (Y)
COMMIT 提交数组插入 (N)
ROWS 导入数据行 (Y)
PARFILE 参数文件名
LOG 屏幕输出的日志文件
CONSTRAINTS 导入限制 (Y)
DESTROY 覆盖表空间数据文件 (N)
INDEXFILE 将表/索引信息写入指定的文件
SKIP_UNUSABLE_INDEXES 跳过不可用索引的维护 (N)
ANALYZE 执行转储文件中的 ANALYZE 语句 (Y)
FEEDBACK 显示每 x 行 (0) 的进度
TOID_NOVALIDATE 跳过指定类型 id 的校验
FILESIZE 各转储文件的最大尺寸
RECALCULATE_STATISTICS 重新计算统计值 (N)
    
---------------------------------------------------
数据库的大小其实就是所有数据文件、联机日志文件及控制文件大小的和。
可以简单的的使用
select sum(bytes) from dba_data_file;

下而把几个较实用脚本贴上,是我常用的.

1、查看表空间的使用状况。
SELECT upper(f.tablespace_name) 表空间名,
d.Tot_grootte_Mb "表空间大小(M)",
d.Tot_grootte_Mb - f.total_bytes "已使用空间(M)",
round((d.Tot_grootte_Mb - f.total_bytes) / d.Tot_grootte_Mb * 100,2) "使用比",
f.total_bytes "空闲空间(M)",
f.max_bytes "最大块(M)"
FROM
(SELECT tablespace_name,
round(SUM(bytes)/(1024*1024),2) total_bytes,
round(MAX(bytes)/(1024*1024),2) max_bytes
FROM sys.dba_free_space
GROUP BY tablespace_name) f,
(SELECT dd.tablespace_name, round(SUM(dd.bytes)/(1024*1024),2) Tot_grootte_Mb
FROM sys.dba_data_files dd
GROUP BY dd.tablespace_name) d
WHERE d.tablespace_name = f.tablespace_name
ORDER BY 4 DESC

2、查看无法扩展的段
SELECT segment_name,
segment_type,
owner,
a.tablespace_name "tablespacename",
initial_extent/1024 "inital_extent(K)",
next_extent/1024 "next_extent(K)",
pct_increase,
b.bytes/1024 "tablespace max free space(K)",
b.sum_bytes/1024 "tablespace total free space(K)"
FROM dba_segments a,
(SELECT tablespace_name,MAX(bytes) bytes,SUM(bytes) sum_bytes FROM dba_free_space GROUP BY tablespace_name) b
WHERE a.tablespace_name=b.tablespace_name
AND next_extent>b.bytes
ORDER BY 4,3,1

---------------------------------------------------
常用的查看数据库的sql
查看数据库的sql

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 sum(bytes)/(1024*1024) as free_space,tablespace_name
from dba_free_space
group by tablespace_name;
select a.tablespace_name,a.bytes total,b.bytes used, c.bytes free,
(b.bytes*100)/a.bytes "% used",(c.bytes*100)/a.bytes "% free"
from sys.sm$ts_avail a,sys.sm$ts_used b,sys.sm$ts_free c
where a.tablespace_name=b.tablespace_name and a.tablespace_name=c.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;

---------------------------------------------------
查看数据库大小:
toad 获得脚本如下:

SELECT ROUND (MAX (d.BYTES) / 1024 / 1024, 2) "total MB",
DECODE (SUM (f.BYTES),
NULL, 0,
ROUND (SUM (f.BYTES) / 1024 / 1024, 2)
) "Free MB",
d.file_name "Datafile name",
DECODE (SUM (f.BYTES),
NULL, 0,
ROUND ( (MAX (d.BYTES) / 1024 / 1024)
- (SUM (f.BYTES) / 1024 / 1024),
2
)
) "Used MB",
ROUND (MAX (d.BYTES) / 1024, 2) "total KB",
DECODE (SUM (f.BYTES),
NULL, 0,
ROUND (SUM (f.BYTES) / 1024, 2)
) "Free KB",
DECODE (SUM (f.BYTES),
NULL, 0,
ROUND ((MAX (d.BYTES) / 1024) - (SUM (f.BYTES) / 1024), 2)
) "Used KB",
ROUND ( SQRT (MAX (f.blocks) / SUM (f.blocks))
* (100 / SQRT (SQRT (COUNT (f.blocks)))),
2
) "Fragmentation Index"
FROM dba_free_space f, dba_data_files d
WHERE f.tablespace_name(+) = d.tablespace_name AND f.file_id(+) = d.file_id
GROUP BY d.file_name

---------------------------------------------------
 功能:Oracle数据导入导出imp/exp就相当与oracle数据还原与备份。大多情况都可以用Oracle数据导入导出完成数据的备份和还原(不会造成数据的丢失)。

  Oracle有个好处,虽然你的电脑不是服务器,但是你装了oracle客户端,并建立了连接 (通过net8 assistant中本地——>服务命名 添加正确的服务命名

  其实你可以想成是客户端与服务器端修了条路,然后数据就可以被拉过来了)这样你可以把数据导出到本地,虽然可能服务器离你很远。你同样可以把dmp文件从本地导入到远处的数据库服务器中。

  利用这个功能你可以构建俩个相同的数据库,一个用来测试,一个用来正式使用。

  执行环境:可以在SQLPLUS.EXE或者DOS(命令行)中执行,DOS中可以执行时由于 在oracle 8i 中 安装目录\ora81\BIN被设置为全局路径,该目录下有EXP.EXE与IMP.EXE文件被用来执行导入导出。

  oracle用java编写,我想SQLPLUS.EXE、EXP.EXE、IMP.EXE这俩个文件是被包装后的类文件。SQLPLUS.EXE调用EXP.EXE、IMP.EXE他们所包裹的类,完成导入导出功能。

  下面介绍的是导入导出的实例,向导入导出看实例基本上就可以完成,因为导入导出很简单。

  数据导出:

  1 将数据库TEST完全导出,用户名system 密码manager 导出到D:\daochu.dmp中

  exp system/manager@TEST file=d:\daochu.dmp full=y

  2 将数据库中system用户与sys用户的表导出

  exp system/manager@TEST file=d:\daochu.dmp owner=(system,sys)

  3 将数据库中的表table1 、table2导出

  exp system/manager@TEST file=d:\daochu.dmp tables=(table1,table2)

  4 将数据库中的表table1中的字段filed1以"00"打头的数据导出

  exp system/manager@TEST file=d:\daochu.dmp tables=(table1) query=\" where filed1 like '00%'\"

  上面是常用的导出,对于压缩我不太在意,用winzip把dmp文件可以很好的压缩。

  不过在上面命令后面 加上 compress=y 就可以了

  数据的导入1 将D:\daochu.dmp 中的数据导入 TEST数据库中。

  imp system/manager@TEST file=d:\daochu.dmp

  上面可能有点问题,因为有的表已经存在,然后它就报错,对该表就不进行导入。

  在后面加上 ignore=y 就可以了。

  2 将d:\daochu.dmp中的表table1 导入

  imp system/manager@TEST file=d:\daochu.dmp tables=(table1)

  基本上上面的导入导出够用了。不少情况我是将表彻底删除,然后导入。

  注意:

  你要有足够的权限,权限不够它会提示你。

  数据库时可以连上的。可以用tnsping TEST 来获得数据库TEST能否连上。

你可能感兴趣的:(oracle,sql,F#,dos,脚本)