写点小东西

管什么困难无穷,进一寸有一寸的欢喜。

Oracle表空间和数据字典基本概念和常用sql

oarcle数据库真正存放数据的是数据文件(data files),Oarcle表空间(tablespaces)实际上是一个逻辑的概念,他在物理上是并不存在的,那么把一组data files 组在一起就成为一个表空间。
表空间具有以下性质:
1.一个数据库可包含多个表空间,一个表空间只属于一个数据库
2. 一个表空间可包含多个数据文件,一个数据文件只能属于一个表空间

  
那么表空间的作用呢?
1.决定数据库实体的空间分配;
2.设置数据库用户的空间份额;
3.控制数据库部分数据的可用性;
4.分布数据于不同的设备之间以改善性能;
5.备份和恢复数据。

常用表空间sql语句:
1.查看每个表空间有哪些数据库文件:
desc dba_data_files;

2.查看详细数据文件:
select file_name,tablespace_name from dba_data_files;

3.创建一个表空间:
create tablespace paul datafile ‘/ora10/product/oradata/ora10/paul01.dbf’ size 20m;

4.查看表空间的使用情况:
SELECT a.tablespace_name “表空间名”,
total “表空间大小”,
free “表空间剩余大小”,
(total - free) “表空间使用大小”,
total / (1024 * 1024 * 1024) “表空间大小(G)”,
free / (1024 * 1024 * 1024) “表空间剩余大小(G)”,
(total - free) / (1024 * 1024 * 1024) “表空间使用大小(G)”,
round((total - free) / total, 4) * 100 “使用率 %”
FROM (SELECT tablespace_name, SUM(bytes) free
FROM dba_free_space
GROUP BY tablespace_name) a,
(SELECT tablespace_name, SUM(bytes) total
FROM dba_data_files
GROUP BY tablespace_name) b
WHERE a.tablespace_name = b.tablespace_name

5.修改表空间大小:
首先查看表空间的名字及文件所在位置
select tablespace_name, file_id, file_name,
round(bytes/(1024*1024),0) total_space
from dba_data_files
order by tablespace_name
然后修改表空间的大小
alter database datafile ‘表空间位置’resize 新的尺寸

6.回滚某个表的数据:
查询某表之前一个时间点的数据
SELECT * FROM T_HY_ROLEMODULE_N as of timestamp to_timestamp(‘2017-03-01’,’yyyy-mm-dd’)
回退某表之前一个时间点的数据
alter table T_HY_ROLEMODULE_N enable row movement;
flashback table T_HY_ROLEMODULE_N to timestamp to_timestamp(‘2017-03-01’,’yyyy-mm-dd’);
COMMIT;

7.相关表空间导入导出命令:
① 将数据库TEST完全导出,用户名system 密码manager 导出到D:\daochu.dmp中
exp system/manager@TEST file=d:\daochu.dmp full=y
② 将数据库中system用户与sys用户的表导出
exp system/manager@TEST file=d:\daochu.dmp owner=(system,sys) 例如 exp rivercheck/rivercheck@ORA9IS file=d:daochu.dmp=(rivercheck)
③将数据库中的表table1 、table2导出
exp system/manager@TEST file=d:\daochu.dmp tables=(table1,table2)
④ 将数据库中的表table1中的字段filed1以”00”打头的数据导出
exp system/manager@TEST file=d:\daochu.dmp tables=(table1) query=\” where filed1 like ‘00%’\”

那么数据字典是什么呢?
数据库是数据的集合,数据库维护和管理这用户的数据,那么我们会想:这些用户数据表都存在哪里?用户的访问权限信息?用户的信息是怎样的?存储这些用户的数据的路径在哪里?这些信息不属于用户的信息,却是数据库维护和管理用户数据的核心,这些信息就是数据库的数据字典来维护的,数据库的数据字典就汇集了这些数据库运行所需要的基础信息。
Oracle中的数据字典有静态动态之分。静态数据字典主要是在用户访问数据字典时不会发生改变的,但动态数据字典是依赖数据库运行的性能的,反映数据库运行的一些内在信息,所以在访问这类数据字典时往往不是一成不变的。
静态数据字典常用sql:
1.查询当前用户下的信息:
select * from user_users

2.查询当前用户拥有表的信息:
select * from user_tables

3.查询当前用户拥有的所有对象的信息,对象包括表、视图、存储过程、触发器、包、索引、序列:
select *  from user_objects

4.查询当前用户下所有表的权限信息:
select * from user_tab_privs
动态数据字典常用sql:
1.查询数据库中锁定的数据库对象以及访问这些对象的会话对象(session对象):
select * from v$access

2.查询该视图列出当前会话的详细信息:
select * FROM v$session

很明显,只要是在动态变化的都跟动态数据字典有关,常用的数据字典有很多,这里就不一一列举,即查即用,也很明显数据字典用来存储数据库本身的信息,归根到底还是数据文件归属于表空间,但反过来可以用数据字典来管理表空间。

阅读更多
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/sureSand/article/details/78723508
个人分类: oracle数据库
上一篇JVM内存管理--计算机内存和Java内存组件
下一篇JVM内存结构及内存分配策略
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

关闭
关闭