### Oracle SQL 工作笔记知识点总结 #### 一、获取所有表及索引的DDL语句 在Oracle数据库管理过程中,经常会遇到需要批量获取表结构(包括表定义和索引定义)的情况。以下是一个示例脚本,可以用来获取当前用户下的所有表以及这些表上的所有索引的DDL定义。 ```sql -- 设置SQL*Plus环境参数 set pagesize 0 set long 90000 set linesize 200 set feedback off set echo off -- 开始将输出重定向到一个文件 spool get_allddl.sql -- 连接到数据库 connect USERNAME/PASSWORD@SID; -- 获取所有表的DDL定义 SELECT DBMS_METADATA.GET_DDL('TABLE', u.table_name) FROM USER_TABLES u -- 获取所有索引的DDL定义 SELECT DBMS_METADATA.GET_DDL('INDEX', u.index_name) FROM USER_INDEXES u; -- 结束重定向,并关闭文件 spool off; ``` #### 二、查询表列信息 为了更好地了解表的结构,经常需要查询表中的列信息,包括列名、数据类型、长度、是否可为空以及默认值等。以下是一个查询示例: ```sql SELECT column_name, data_type, data_length, nullable, data_default FROM USER_TAB_COLUMNS; ``` #### 三、查看表空间与索引信息 在进行数据库维护时,了解表空间的状态和索引的使用情况非常重要。以下是一些常用的查询语句: 1. **查询指定表所属的所有索引及其列信息**: ```sql SELECT index_name, table_name, column_name FROM DBA_IND_COLUMNS WHERE TABLE_OWNER = 'MCPP'; ``` 2. **查询指定表索引所在的表空间**: ```sql SELECT INDEX_NAME, TABLESPACE_NAME FROM DBA_INDEXES WHERE TABLE_NAME = 'S_SMG_MT_QUANWANGHT_HOUR_T'; ``` 3. **重建索引**: - 在线重建索引: ```sql ALTER INDEX S_SMG_MO_QUANWANGHT_HOUR_INDEX REBUILD ONLINE; ``` - 重建分区索引: ```sql ALTER INDEX MCPP.S_SMG_MT_T_DST_USER REBUILD PARTITION MT2008_10_15 ONLINE; ``` #### 四、查询表空间大小和利用率 对于Oracle数据库管理员来说,了解每个表空间的使用情况是非常重要的,这有助于进行容量规划和性能优化。 1. **查询每个表空间的总大小、已用空间和空闲空间**: ```sql SELECT c.tablespace_name "tablespace", ROUND(a.bytes / 1048576, 2) "total(MB)", ROUND(b.bytes / 1048576, 0) "free(MB)", ROUND((a.bytes - b.bytes) / 1048576, 0) "used(MB)", ROUND(b.bytes / a.bytes * 100, 0) "free(%)", ROUND((a.bytes - b.bytes) / a.bytes, 2) * 100 "used(%)" FROM (SELECT tablespace_name, SUM(a.bytes) bytes, MIN(a.bytes) minbytes, MAX(a.bytes) maxbytes FROM sys.DBA_DATA_FILES a GROUP BY tablespace_name) a, (SELECT a.tablespace_name, NVL(SUM(b.bytes), 0) bytes FROM sys.DBA_DATA_FILES a, sys.DBA_FREE_SPACE b WHERE a.tablespace_name = b.tablespace_name (+) AND a.file_id = b.file_id (+) GROUP BY a.tablespace_name) b, sys.DBA_TABLESPACES c WHERE a.tablespace_name = b.tablespace_name (+) AND a.tablespace_name = c.tablespace_name OR ``` 以上脚本可以帮助Oracle DBA或开发人员快速掌握表空间的使用情况,并据此做出相应的调整措施,以确保数据库系统的稳定运行。
- 粉丝: 1
- 资源: 8
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助