oracle常用经典sql查询

合集下载

oracle sql并发查询语句

oracle sql并发查询语句

oracle sql并发查询语句Oracle SQL是一种强大的关系型数据库管理系统,支持并发查询,可以同时处理多个查询请求。

下面列举了十个符合题目要求的Oracle SQL并发查询语句。

1. 查询所有员工的姓名和工资```sqlSELECT 姓名, 工资 FROM 员工表;```2. 查询员工工资大于5000元的部门名称和平均工资```sqlSELECT 部门名称, AVG(工资) AS 平均工资FROM 员工表WHERE 工资 > 5000GROUP BY 部门名称;```3. 查询销售额最高的产品名称和销售额```sqlSELECT 产品名称, MAX(销售额) AS 最高销售额FROM 销售表GROUP BY 产品名称ORDER BY 最高销售额 DESCFETCH FIRST ROW ONLY;```4. 查询在某个日期范围内有销售记录的员工姓名和销售数量```sqlSELECT 姓名, COUNT(*) AS 销售数量FROM 员工表INNER JOIN 销售表 ON 员工表.员工ID = 销售表.员工ID WHERE 销售日期BETWEEN TO_DATE('2021-01-01', 'YYYY-MM-DD') AND TO_DATE('2021-12-31', 'YYYY-MM-DD') GROUP BY 姓名;```5. 查询每个部门的员工数量和平均工资```sqlSELECT 部门名称, COUNT(*) AS 员工数量, AVG(工资) AS 平均工资FROM 员工表GROUP BY 部门名称;```6. 查询没有销售记录的产品名称和库存数量```sqlSELECT 产品名称, 库存数量FROM 产品表WHERE 产品ID NOT IN (SELECT 产品ID FROM 销售表);```7. 查询员工工资排名前10的姓名和工资```sqlSELECT 姓名, 工资FROM (SELECT 姓名, 工资, RANK() OVER (ORDER BY 工资 DESC) AS 排名FROM 员工表)WHERE 排名 <= 10;```8. 查询每个部门的销售总额和销售数量```sqlSELECT 部门名称, SUM(销售额) AS 销售总额, COUNT(*) AS 销售数量FROM 员工表INNER JOIN 销售表 ON 员工表.员工ID = 销售表.员工ID GROUP BY 部门名称;```9. 查询在某个日期之后有销售记录的产品名称和最早销售日期```sqlSELECT 产品名称, MIN(销售日期) AS 最早销售日期FROM 产品表INNER JOIN 销售表 ON 产品表.产品ID = 销售表.产品ID WHERE 销售日期 > TO_DATE('2021-01-01', 'YYYY-MM-DD') GROUP BY 产品名称;```10. 查询销售额排名前5的员工姓名和销售额```sqlSELECT 姓名, 销售额FROM (SELECT 姓名, 销售额, RANK() OVER (ORDER BY 销售额DESC) AS 排名FROM 员工表INNER JOIN 销售表 ON 员工表.员工ID = 销售表.员工ID) WHERE 排名 <= 5;```以上是十个符合题目要求的Oracle SQL并发查询语句。

oracle查询表结构sql语句

oracle查询表结构sql语句

oracle查询表结构sql语句在Oracle数据库中,查询表结构的SQL语句可以通过查询数据库的系统表来实现。

以下是一些常用的查询表结构的SQL语句。

1. 查询表的所有列名和数据类型:```SELECT column_name, data_typeFROM all_tab_columnsWHERE table_name = '表名';```这条SQL语句会返回指定表的所有列名和对应的数据类型。

2. 查询表的主键列:```SELECT constraint_name, column_nameFROM all_cons_columnsWHERE table_name = '表名' AND constraint_name = 'PK_表名';```这条SQL语句会返回指定表的主键列名。

3. 查询表的外键列:```SELECT constraint_name, column_name, r_constraint_name, r_table_nameFROM all_cons_columnsWHERE table_name = '表名' AND constraint_name LIKE 'FK_%';```这条SQL语句会返回指定表的外键列名、相关联的表名和外键约束名。

4. 查询表的索引:```SELECT index_name, column_nameFROM all_ind_columnsWHERE table_name = '表名';```这条SQL语句会返回指定表的索引名和对应的列名。

5. 查询表的约束:```SELECT constraint_name, constraint_typeFROM all_constraintsWHERE table_name = '表名' AND constraint_type IN ('P', 'U', 'R', 'C');```这条SQL语句会返回指定表的主键约束、唯一约束、外键约束和检查约束。

oracle索引查询语句

oracle索引查询语句

oracle索引查询语句Oracle索引是一种用于加快查询速度的数据结构,它能够提高数据库的性能和效率。

索引查询语句是使用索引来搜索和获取数据的查询语句。

下面列举了一些常用的Oracle索引查询语句。

1. 查询表中的所有索引```sqlSELECT index_name, table_nameFROM user_indexes;```2. 查询索引的定义和属性```sqlSELECT index_name, table_name, column_name, uniqueness FROM user_ind_columnsWHERE table_name = '表名';```3. 查询表中某个索引的使用情况```sqlSELECT index_name, table_name, statusFROM all_indexesWHERE table_name = '表名' AND index_name = '索引名';```4. 查询使用了索引的SQL语句```sqlSELECT sql_textFROM v$sqlWHERE sql_text LIKE '%索引名%';```5. 查询索引的大小和碎片情况```sqlSELECT index_name, leaf_blocks, num_rows, clustering_factor FROM user_indexesWHERE table_name = '表名';```6. 查询索引的统计信息```sqlSELECT index_name, distinct_keys, num_rows, clustering_factorFROM user_indexesWHERE table_name = '表名';``````sqlEXPLAIN PLAN FORSELECT * FROM 表名WHERE 索引列 = 值;SELECT * FROM TABLE(DBMS_XPLAN.DISPLAY);```8. 查询索引的创建时间和最后修改时间```sqlSELECT index_name, created, last_ddl_timeFROM all_indexesWHERE table_name = '表名';```9. 查询索引的统计信息和优化建议```sqlSELECT index_name, table_name, column_name, num_distinct, density, histogramFROM dba_optstat_indexesWHERE table_name = '表名';``````sqlSELECT index_name, table_name, column_name, usage, effectivenessFROM v$index_usage;```以上是一些常用的Oracle索引查询语句,可以帮助我们了解和优化索引的使用情况,提高数据库的性能和效率。

oracle中查询表记录数的语句

oracle中查询表记录数的语句

一、介绍在数据库管理系统中,查询表的记录数是一项常见的操作。

对于Oracle数据库来说,查询表的记录数可以通过不同的方法来实现。

本文将从基础的SQL语句到高级SQL语句,以及一些常见的优化技巧,逐步介绍在Oracle数据库中查询表记录数的方法。

二、基础SQL语句1. 使用COUNT函数在Oracle数据库中,最常见的查询表记录数的方法就是使用COUNT 函数。

COUNT函数是SQL中的聚合函数之一,用于计算某一列的行数。

下面是使用COUNT函数查询表记录数的基础语句:```sqlSELECT COUNT(*) FROM table_name;```其中,table_name为需要查询记录数的表名。

2. 使用ROWNUM除了COUNT函数,还可以使用ROWNUM来查询表的记录数。

ROWNUM是Oracle数据库中的一个伪列,用于标识返回的行的行号。

通过查询ROWNUM的最大值,即可得到表的记录数。

以下是使用ROWNUM查询表记录数的语句:```sqlSELECT MAX(ROWNUM) FROM table_name;```这种方法虽然比较简单,但需要注意的是,查询结果可能会受到Oracle的优化影响,因此在某些情况下可能不够准确。

三、高级SQL语句1. 使用DBA_TABLES视图在Oracle数据库中,可以通过DBA_TABLES视图来查询表的记录数。

DBA_TABLES视图是Oracle系统提供的一个系统视图,可以显示数据库中所有表的信息,包括表的记录数。

以下是使用DBA_TABLES视图查询表记录数的语句:```sqlSELECT TABLE_NAME, NUM_ROWS FROM DBA_TABLES WHERE TABLE_NAME = 'table_name';```这种方法可以直接获取表的记录数,无需遍历整个表,因此效率较高。

2. 使用EXPL本人N PLAN除了上述方法,还可以通过使用EXPL本人N PLAN来查询表记录数。

oracle 数据字典查询语句

oracle 数据字典查询语句

oracle 数据字典查询语句Oracle 数据字典是一个包含了数据库中所有对象和结构的元数据集合。

通过查询数据字典,可以获取数据库的详细信息,如表、列、索引、约束、触发器等对象的定义和属性。

下面列举了十个常用的Oracle 数据字典查询语句。

1. 查询所有表名:```sqlSELECT TABLE_NAME FROM ALL_TABLES;```这个查询语句将返回当前用户下所有表的名称。

2. 查询表的列信息:```sqlSELECT COLUMN_NAME, DATA_TYPE, DATA_LENGTH, NULLABLE FROM ALL_TAB_COLUMNS WHERE TABLE_NAME = '表名';```这个查询语句将返回指定表的所有列名、数据类型、数据长度和是否可空。

3. 查询表的索引信息:```sqlSELECT INDEX_NAME, COLUMN_NAME, COLUMN_POSITION FROM ALL_IND_COLUMNS WHERE TABLE_NAME = '表名';这个查询语句将返回指定表的所有索引名称、索引列名和索引列位置。

4. 查询表的主键信息:```sqlSELECT CONSTRAINT_NAME, COLUMN_NAME FROM ALL_CONS_COLUMNS WHERE TABLE_NAME = '表名' AND CONSTRAINT_NAME = 'PK_主键名'; ```这个查询语句将返回指定表的主键约束名和主键列名。

5. 查询表的外键信息:```sqlSELECT CONSTRAINT_NAME, COLUMN_NAME, R_CONSTRAINT_NAME, R_OWNER, R_TABLE_NAME, R_COLUMN_NAME FROM ALL_CONS_COLUMNS WHERE TABLE_NAME = '表名' AND CONSTRAINT_TYPE = 'R';```这个查询语句将返回指定表的外键约束名、外键列名、参考表的所有者、参考表名和参考列名。

oracle查询10条数据的sql语句

oracle查询10条数据的sql语句

oracle查询10条数据的sql语句Oracle 数据库是当今世界上最流行的数据库系统之一、它提供了高度安全性和完整的事务管理,以及可扩展性,跨平台和可控性等特点。

为了从 Oracle 数据库中检索数据,我们需要用到 SQL 语句。

SQL 语句是结构化查询语言的缩写,它是一个标准化的语言,用于管理和处理数据库。

在这篇文章中,我们将学习如何从 Oracle 数据库中查询前10条数据的SQL 语句。

在 Oracle 中,我们使用 SELECT 语句来检索数据。

它的基本语法如下:SELECT column1, column2, column3, ... FROM table_name;。

在这里,column1,column2,column3是我们要检索的列,而table_name是我们要检索数据的表。

但是,如果我们只想检索前10条记录,我们需要使用ROWNUM(行号)。

ROWNUM 是 Oracle 中的一个伪列,它表示查询返回的结果集中的行号。

下面是它的基本语法:SELECT column1, column2, ... FROM table_name WHERE ROWNUM <= 10;。

在这里,我们使用WHERE子句来限制检索的行数,仅返回前10行数据。

我们可以使用ORDERBY来排序结果集中的行,如下所示:SELECT column1, column2, ... FROM table_name WHERE ROWNUM <= 10 ORDER BY column_name ASC,DESC;。

这个语句将返回前10行已经按列名排序的数据,ASC表示升序排列,DESC表示降序排列。

如果你想从多个表中检索前10条记录,你可以使用JOIN语句,如下所示:SELECT column1, column2, ... FROM table1 JOIN table2 ON condition WHERE ROWNUM <= 10 ORDER BY column_name ASC,DESC;。

oracle查询实例命令

oracle查询实例命令

oracle查询实例命令以下是一些Oracle数据库中常用的查询实例命令示例:1.查询表的所有数据:SELECT * FROM table_name;2.查询指定列的数据:SELECT column1, column2, ... FROM table_name;3.查询满足特定条件的数据:SELECT * FROM table_name WHERE condition;4.对结果进行排序:SELECT * FROM table_name ORDER BY column_name [ASC|DESC];5.使用聚合函数进行数据统计:SELECT COUNT(*) FROM table_name; -- 统计行数SELECT SUM(column_name) FROM table_name; -- 求和SELECT AVG(column_name) FROM table_name; -- 平均值SELECT MAX(column_name) FROM table_name; -- 最大值SELECT MIN(column_name) FROM table_name; -- 最小值6.连接多个表进行查询:SELECT t1.column1, t2.column2 FROM table1 t1 JOIN table2 t2 ON t1.id = t2.id;7.使用条件进行分组:SELECT column1, COUNT(*) FROM table_name GROUP BY column1;8.使用LIKE进行模糊查询:SELECT * FROM table_name WHERE column_name LIKE 'keyword%';以上只是一些常见的查询示例,实际查询命令会根据具体的表结构和查询需求而有所不同。

在使用Oracle数据库时,请根据具体情况和需求构建和调整查询语句。

常用查询Oracle的表,视图,存储过程,用户等SQL命令

常用查询Oracle的表,视图,存储过程,用户等SQL命令

常⽤查询Oracle的表,视图,存储过程,⽤户等SQL命令有时候需要导出某⽤户下的所有table、view、sequence、trigger等信息,下⾯的SQL可以将这些信息select出来:select * from user_tables;select * from user_views;select * from user_sequences;select * from user_triggers;查看当前⽤户的缺省表空间 SQL>select username,default_tablespace from user_users; 查看当前⽤户的⾓⾊ SQL>select * from user_role_privs; 查看当前⽤户的系统权限和表级权限 SQL>select * from user_sys_privs; SQL>select * from user_tab_privs; 查看⽤户下所有的表 SQL>select * from user_tables;1、⽤户 查看当前⽤户的缺省表空间 SQL>select username,default_tablespace from user_users; 查看当前⽤户的⾓⾊ SQL>select * from user_role_privs; 查看当前⽤户的系统权限和表级权限 SQL>select * from user_sys_privs; SQL>select * from user_tab_privs; 显⽰当前会话所具有的权限 SQL>select * from session_privs; 显⽰指定⽤户所具有的系统权限 SQL>select * from dba_sys_privs where grantee=’GAME’;2、表 查看⽤户下所有的表 SQL>select * from user_tables; 查看名称包含log字符的表 SQL>select object_name,object_id from user_objects where instr(object_name,’LOG’)>0; 查看某表的创建时间 SQL>select object_name,created from user_objects where object_name=upper(‘&table_name’); 查看某表的⼤⼩ SQL>select sum(bytes)/(1024*1024) as “size(M)” from user_segments where segment_name=upper(‘&table_name’); 查看放在ORACLE的内存区⾥的表 SQL>select table_name,cache from user_tables where instr(cache,’Y')>0;3、索引 查看索引个数和类别 SQL>select index_name,index_type,table_name from user_indexes order by table_name; 查看索引被索引的字段 SQL>select * from user_ind_columns where index_name=upper(‘&index_name’); 查看索引的⼤⼩ SQL>select sum(bytes)/(1024*1024) as “size(M)” from user_segments where segment_name=upper(‘&index_name’);4、序列号 查看序列号,last_number是当前值 SQL>select * from user_sequences;5、视图 查看视图的名称 SQL>select view_name from user_views; 查看创建视图的select语句 SQL>set view_name,text_length from user_views; SQL>set long 2000; 说明:可以根据视图的text_length值设定set long 的⼤⼩ SQL>select text from user_views where view_name=upper(‘&view_name’);6、同义词 查看同义词的名称 SQL>select * from user_synonyms;7、约束条件 查看某表的约束条件 SQL>select constraint_name, constraint_type,search_condition, r_constraint_name from user_constraints where table_name = upper(‘&table_name’); SQL>select c.constraint_name,c.constraint_type,cc.column_name from user_constraints c,user_cons_columns cc where c.owner = upper(‘&table_owner’) and c.table_name = upper(‘&table_name’) and c.owner = cc.owner and c.constraint_name = cc.constraint_name order by cc.position;8、存储函数和过程 查看函数和过程的状态 SQL>select object_name,status from user_objects where object_type=’FUNCTION’; SQL>select object_name,status from user_objects where object_type=’PROCEDURE’; 查看函数和过程的源代码 SQL>select text from all_source where owner=user and name=upper(‘&plsql_name’);。

oracle数据库语句汇总

oracle数据库语句汇总

oracle数据库语句汇总在Oracle数据库中,有许多常用的SQL语句可以用于查询、插入、更新和删除数据。

下面列举了一些常见的Oracle数据库语句,以供参考。

1. 查询表中的所有数据:```SELECT * FROM 表名;```2. 查询表中的特定字段数据:```SELECT 字段1, 字段2, ... FROM 表名;```3. 查询表中满足特定条件的数据:```SELECT * FROM 表名 WHERE 条件;```4. 对查询结果进行排序:```SELECT * FROM 表名 ORDER BY 字段 ASC/DESC;```5. 对查询结果进行分组:```SELECT 字段1, 字段2, ... FROM 表名 GROUP BY 字段;```6. 对查询结果进行统计:```SELECT COUNT(*) FROM 表名;```7. 插入数据到表中:```INSERT INTO 表名(字段1, 字段2, ...) VALUES (值1, 值2, ...);```8. 更新表中的数据:```UPDATE 表名 SET 字段1 = 值1, 字段2 = 值2 WHERE 条件;9. 删除表中的数据:```DELETE FROM 表名 WHERE 条件;```10. 创建新表:```CREATE TABLE 表名 (字段1 数据类型,字段2 数据类型,...);```11. 修改表结构:```ALTER TABLE 表名 ADD (字段数据类型); ```12. 删除表:DROP TABLE 表名;```13. 创建索引:```CREATE INDEX 索引名 ON 表名 (字段);```14. 删除索引:```DROP INDEX 索引名;```15. 创建视图:```CREATE VIEW 视图名 AS SELECT * FROM 表名 WHERE 条件; ```16. 删除视图:```DROP VIEW 视图名;17. 创建存储过程:```CREATE PROCEDURE 存储过程名ISBEGIN-- 存储过程的具体逻辑END;```18. 调用存储过程:```EXEC 存储过程名;```以上是一些常见的Oracle数据库语句,可以满足大部分基本的数据操作需求。

oracle 维护管理常用sql

oracle 维护管理常用sql

oracle 维护管理常用sql 1、查询数据库表空间select * from dba_tablespaces;2、查询数据库用户select * from dba_users;3、查询数据库控制文件select * from v$controlfile;4、查询数据库日志文件select * from v$logfile;5、查询数据库数据文件select *from v$datafile;6、查看数据库字符集;select * from nls_database_parameters7、查看数据库所有的表select * from all_tables;8、查看数据库select * from v$database9、查询系统时间select sysdate from dual;10、查询用户的权限select * from dba_role_privs11、查询数据库的性能视图select * from v$parameter12、查询用户的所可以访问的表select * from user_tables;13、查看数据库实例信息select * from v$instance;14、查看某表的索引select * from user_indexes where table_name='表名' 15、查看sql语句执行信息select * from v$sqlstats;hostname //查看主机名hostid //查看主机IDifconfig -a //ip地址netstat -nruname -m/usr/platform/sun4u/sbin/prtdiag -v/usr/platform/sun4u/sbin/eepromdf -kswap -sswap -lformat(ctrl+d退出)iostat -c 1 5vmstat 2 5/usr/ucb/ps -auxps -efacat /var/adm/messages vxdisk listvxdg listvxinfo -g scpdgvxprint -g scpdg -htvxstat -g scpdguname -Xuname -iprstat -a (按q键退出)cat /etc/inet/inetd.conf cat /etc/inet/ipnodescat /etc/inet/netmaskscat /etc/inet/networkscat /etc/inet/servicesls -l /etc/hostname.*|wc -l cat /etc/path_to_instcat /etc/inet/ntp.confcat /etc/inet/ntp*cluster* cat /etc/vfstabcat /etc/syslog.conf prtconf -vcat /etc/passwd cat /etc/rmtabcat /etc/dfs/dfstabscstatscstat -pscstat -pvscstat -pvvscconf -pscconf -pvscconf -pvvscrgadm -p scrgadm -pv scrgadm -pvv。

oracle查询数据库名称的语句

oracle查询数据库名称的语句

oracle查询数据库名称的语句摘要:1.介绍Oracle查询数据库名称的语句2.详解SQL语句示例及作用3.实际应用场景及操作建议正文:随着信息技术的发展,数据库管理系统在日常工作中发挥着越来越重要的作用。

Oracle作为一款知名的关系型数据库管理系统,为广大用户提供便捷的数据存储和查询功能。

本文将介绍如何使用Oracle查询数据库名称,并提供相关操作建议。

在Oracle中,查询数据库名称的语句可以使用以下SQL查询实现:```sqlSELECT database_name FROM v$database;```这条SQL语句的作用是返回当前实例的数据库名称。

其中,`database_name`表示要查询的数据库名称,`v$database`是一个视图,用于存储当前实例的数据库信息。

当执行上述SQL语句时,系统将返回如下结果:```DATABASE_NAME--------------------------------------------------------------------------ORCL```上述示例中,`ORCL`即为查询到的数据库名称。

实际应用场景中,了解数据库名称对于数据库管理员(DBA)至关重要。

以下是一些操作建议:1.掌握数据库基本信息:了解数据库名称、版本、实例号等基本信息,有助于更好地进行数据库管理和维护。

2.定期查询数据库名称:通过定期执行上述SQL语句,及时了解数据库名称变化,以便在必要时进行相应的调整。

3.数据库命名规范:为数据库起一个规范的名字,有利于提高数据库管理的效率。

命名规范可以包括:简洁明了、易于区分、符合业务特点等。

4.数据库文档:对于重要数据库,建议编写详细的文档,包括数据库名称、用途、备份策略等信息,以便于后续维护和管理。

5.数据库安全性:确保数据库名称和相关信息不被泄露,提高数据库安全性。

总之,在Oracle数据库中,通过查询数据库名称的语句,可以方便地获取数据库相关信息。

Oracle维护常用SQL语句(查询系统表和视图)

Oracle维护常用SQL语句(查询系统表和视图)

Oracle维护常用SQL语句(查询系统表和视图)提要:1、查看表空间的名称及大小2、查看表空间物理文件的名称及大小3、查看回滚段名称及大小4、查看控制文件5、查看日志文件6、查看表空间的使用情况7、查看数据库库对象8、查看数据库的版本9、查看数据库的创建日期和归档方式10、捕捉运行很久的SQL11。

查看数据表的参数信息12.查看还没提交的事务13。

查找object为哪些进程所用14。

回滚段查看15。

耗资源的进程(top session)16。

查看锁(lock)情况17。

查看等待(wait)情况18。

查看sga情况19。

查看catched object20。

查看V$SQLAREA21。

查看object分类数量22。

按用户查看object种类23。

有关connection的相关信息1)查看有哪些用户连接2)根据v.sid查看对应连接的资源占用等情况3)根据sid查看对应连接正在运行的sql24.查询表空间使用情况25.查询表空间的碎片程度26.查询正在运行的数据库实例1、查看表空间的名称及大小select t.tablespace_name, round(sum(bytes/(1024*1024)),0) ts_size from dba_tablespaces t, dba_data_files dwhere t.tablespace_name = d.tablespace_namegroup by t.tablespace_name;2、查看表空间物理文件的名称及大小select tablespace_name, file_id, file_name,round(bytes/(1024*1024),0) total_spacefrom dba_data_filesorder by tablespace_name;3、查看回滚段名称及大小select segment_name, tablespace_name, r.status,(initial_extent/1024) InitialExtent,(next_extent/1024) NextExtent, max_extents, v.curext CurExtentFrom dba_rollback_segs r, v$rollstat vWhere r.segment_id = n(+)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_namefrom dba_free_spacegroup 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 CWHERE 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;10、捕捉运行很久的SQLcolumn username format a12column opname format a16column progress format a8select username,sid,opname,round(sofar*100 / totalwork,0) || '%' as progress, time_remaining,sql_textfrom v$session_longops , v$sqlwhere time_remaining <> 0and sql_address = addressand sql_hash_value = hash_value/11。

oracle数据库查询语句大全

oracle数据库查询语句大全

oracle数据库查询语句大全oracle数据库查询语句大全1.select*from table_name where rownum>begin and rownum<end< p="">2.sql="select*from table"con.prepareCall("SELECT*FROM(SELECT A.*,rownum r FROM("+sql+")A WHERE rownum<="+intPage*intPageSize+")B WHERE r>"+(intPage-1)*intPageSize);今天想查询一下Oracle数据库下所有的表名或某个用户下的所有表,半天没想起来.还是在网上找到了答案.select table_name from all_tables;//所有的表明select table_name from user_all_tables;//用户的所有的表一下是转贴的sql语句的帖子.select*from user_objects;//查询所有的表select*from dba_tables;//查询所有的表select*from all_tables;//查询所有的表select*from user_users//查出一个用户select*from all_users//查询所有用户select*from dba_users//查询所有用户select name,dbid from v$database;//查询数据库名和它的ID select*from/doc/b213452367.html,er_tab_columns;//查询表名,并显示列名describe表名//查询表结构select*from/doc/b213452367.html,er_tab_columns where table_name=表名//查询指定表名的字段2:查询数据库参数show parameter db;3:查询数据库的实例名select instance_name from v$instance;4:数据库域名数据库安装结束后,如果要知道正在运行额数据库是否有域名以及数据库域名名称可以用select value from v$parameter where name='db_domain'show parameter domain5:数据库服务名如果数据库有域名,则数据库服务名就是全局数据库名,如果该数据库没有定义域名,则数据库服务名与数据库名相同show parameter service_name6:显示当前用户show user7:直接登陆sqlplus"/as sysdba"8:当前ORACLE系统时间select sysdate from dual;9:查询数据库字典v$nls_parameter产看字符集相关参数select*from v$nls_parameters;//*************oracle基本操作语句(适合初学者)oracle操作语句:1.创建表create table表名(列名1类型,列名2类型);2.修改类属性alter table表名modify(列名类型);3.添加列alter table表名add(列名类型);4.添加主键约束和非空约束alter table表名add constraint pk_表名primary key(列名); alter table表名modify(列名not null);5.删除主键约束alter table表名drop primary key;alter table表名drop constraint pk_表名;6.失效约束alter table表名disable primary key;alter table表名disable constraint pk_表名;7.有效约束alter table表名enable primary key;alter table表名enable constraint pk_表名;8.删除列alter table表名drop column列名;9.设置某列不可用,然后删除alter table表名set unused(列名);alter table表名drop unused columns;10.修改表名rename表名1to表名2alter表名1rename to表名2;11.截断表truncate table表名;12.截断表保留行空间truncate table表名resue storage;13.查看表结构desc table表名;14.删除表drop table表名;15.插入记录例:insert into表名values(内容1,内容2,内容3,内容4);16.带参数对话方式插入行例:insert into表名values(&列名1,&列名2);insert into表名values(内容1,内容2);17.插入某几列记录insert into表名(列名1,列名2)values(内容1,内容2);18.为列插入空值(其列不能为not null)insert into表名values(内容1,null,null);19.创建表(包括主键及外键设置)方法一create table表名(列名1类型constraint pk_表名primary key,列名2类型not null,列名3类型constraint fk_表名reference表名(列名),列名3类型constraint ck_表名check(列名3in(''内容1'',''内容2'',''内容3'')) );20.查询所有行select*from表名;21.查询某几列select列名1,列名2from表名;22.重复行消除select distict列名from表名;23.where语句查询select*from表名where条件order by列名;(注:如number类型查出自动按升序排列,如要按降序排列,则select*from表名where条件order by列名desc;)24.创建表,方法二create table表名(列名1类型primary key,列名2类型not null,列名3类型check(列名3in('''','''','''')),列名4类型refernce表名(列名));25.修改列=‘?’的数据update表名set(列=?)where列=‘?’; 26.删除行delete from表名where条件;27.事务处理--事务处理update表名set列名(日期)=''30-5月-98''where条件;savepoint mark1;delete from表名where条件;savepoint mark2;rollback to savepoint mark1;rollback;28.建立用户user1,密码为password授予用户connect,resource的权限connect角色用于登录resource角色用于建表等.connect system/managercreate user user1identified by password;grant connect,resource to password;29.数据控制语言connect scott/tiger30.把对表1查询和修改的权限授予user1grant select,update on表1to user1;31.把对表表1中列1和列2修改的权限授予user1grant update(列1,列2)on表1to user1;32.把对表表1查询的权限授予用户user1并且user1用户还可以把这个权限授予别的用户(with grant option) grant select on表1to user1with grant option;33.从用户user1撤销对表1查询和修改的权限revoke select,update on表1from user1;</end<>。

oracle查询表索引的sql语句

oracle查询表索引的sql语句

oracle查询表索引的sql语句在Oracle数据库中,索引是一种比较常见的数据结构,用来提高查询速度和数据访问效率。

当需要查询大量数据时,使用索引可以减少数据库的I/O操作,提高查询效率。

因此,在开发和维护数据库时,了解如何查询表索引的SQL语句非常重要。

本文将介绍几种常用的查询表索引的SQL语句。

1. 查询表有哪些索引我们可以使用如下的SQL语句查询一张表有哪些索引:```SELECT index_name FROM user_indexes WHERE table_name = 'table_name';```其中index_name是索引的名称,table_name是查询的表名。

2. 查询索引包含哪些列使用如下的SQL语句查询索引包含了哪些列:```SELECT column_name FROM user_ind_columns WHERE index_name ='index_name';```其中column_name是列的名称,index_name是查询的索引名。

3. 查询索引的大小索引的大小可以反映出索引对性能的影响。

使用如下的SQL语句可以查询索引的大小:SELECT index_name, btree_space, (leaf_blocks + branch_blocks + pct_free_blocks) * block_size sizeFROM (SELECT index_name, b_tree_space, leaf_blocks, branch_blocks,pct_free_blocksFROM user_indexes WHERE table_name = 'table_name' AND index_name ='index_name'),dba_tablespaces WHERE tablespace_name = index_tablespace;```其中btree_space是B树所占空间大小,leaf_blocks和branch_blocks分别是叶节点和分支节点的块数,pct_free_blocks是存储空间的预留百分比。

oracle的sql语句

oracle的sql语句

oracle的sql语句Oracle的SQL语句可以用于查询、插入、更新和删除数据库中的数据。

以下是一些常见的Oracle SQL语句示例:1. 查询数据:- 查询所有记录:SELECT * FROM 表名;- 查询指定列:SELECT 列名1, 列名2 FROM 表名;- 带条件查询:SELECT * FROM 表名 WHERE 条件;- 排序查询:SELECT * FROM 表名 ORDER BY 列名ASC/DESC;- 分组查询:SELECT 列名, COUNT(*) FROM 表名GROUP BY 列名;2. 插入数据:- 插入单条记录:INSERT INTO 表名 (列1, 列2) VALUES (值1, 值2);- 插入多条记录:INSERT INTO 表名 (列1, 列2) VALUES (值1, 值2), (值3, 值4), ...;3. 更新数据:- 更新单个字段:UPDATE 表名 SET 列名 = 新值WHERE 条件;- 更新多个字段:UPDATE 表名 SET 列名1 = 新值1, 列名2 = 新值2 WHERE 条件;4. 删除数据:- 删除所有记录:DELETE FROM 表名;- 删除满足条件的记录:DELETE FROM 表名 WHERE 条件;5. 聚合函数:- 计算总数:SELECT COUNT(*) FROM 表名;- 计算平均值:SELECT AVG(列名) FROM 表名;- 计算最大值:SELECT MAX(列名) FROM 表名;- 计算最小值:SELECT MIN(列名) FROM 表名;- 计算求和:SELECT SUM(列名) FROM 表名;这些只是一些常见的Oracle SQL语句示例,实际使用中还可以结合其他语句和函数进行更复杂的查询和操作。

oracle数据库版本查询语句

oracle数据库版本查询语句

oracle数据库版本查询语句Oracle数据库是业内一款非常流行的关系型数据库管理系统,它提供了许多丰富的功能和工具,可以帮助企业进行高效可靠的数据管理。

在使用Oracle数据库时,了解数据库版本信息是非常重要的,因为不同版本的数据库具有不同的功能和性能优化。

本文主要介绍如何使用Oracle SQL查询语句来查看当前数据库的版本信息。

一、查看Oracle数据库版本信息的方式Oracle数据库有多种版本信息,包括软件版本、内核版本、组件版本等。

这些版本信息都可以通过Oracle SQL 查询语句来获取。

下面列举了几种常用的查看Oracle数据库版本信息的方式:1、通过SQL命令行查看在Oracle SQL命令行下输入命令“select * fromv$version;”即可查看当前数据库的版本信息。

2、通过SQL Developer查看在SQL Developer工具中,点击菜单栏的“帮助” -> “关于”可以查看当前Oracle数据库的版本信息。

3、通过Oracle Enterprise Manager查看在Oracle Enterprise Manager(OEM)中,点击顶部菜单栏的“源” -> “目标” -> “数据库” -> “数据库名称” -> “监控” -> “概况”即可查看当前数据库的版本信息。

4、通过tnsping命令查看在命令提示符下输入命令“tnsping 数据库名称”,即可查看当前数据库的版本信息。

其中,“数据库名称”指的是Oracle数据库的服务名或SID。

二、使用SQL查询语句查看Oracle数据库版本信息以上几种方式都可以查看Oracle数据库的版本信息,但最常用的方式还是使用SQL查询语句来实现。

下面介绍一些常用的Oracle SQL查询语句:1、查看Oracle数据库软件版本信息select * from product_component_version where product like 'Oracle%';这条SQL语句可以查询当前Oracle数据库的软件版本信息,包括主版本号、副版本号等。

oracle查询表结构sql语句

oracle查询表结构sql语句

oracle查询表结构sql语句1. 查询表结构的SQL语句在Oracle数据库中,可以使用以下SQL语句查询表的结构信息:1.1. 查询所有表的结构```SELECT owner, table_name, column_name, data_type, data_length, nullableFROM all_tab_columnsORDER BY owner, table_name, column_id;```该语句会返回所有表的所有列的结构信息,包括所属用户(owner)、表名(table_name)、列名(column_name)、数据类型(data_type)、数据长度(data_length)和是否可为空(nullable)等。

1.2. 查询指定表的结构```SELECT column_name, data_type, data_length, nullableFROM all_tab_columnsWHERE owner = 'SCHEMA_NAME' AND table_name = 'TABLE_NAME' ORDER BY column_id;```将上述语句中的'SCHEMA_NAME'替换为要查询表所属的用户,'TABLE_NAME'替换为要查询的表名,可以获取指定表的结构信息。

1.3. 查询表的主键信息```SELECT cols.table_name, cols.column_name, cons.constraint_nameFROM all_constraints cons, all_cons_columns colsWHERE cons.constraint_type = 'P'AND cons.constraint_name = cols.constraint_nameAND cons.owner = cols.ownerAND cols.table_name = 'TABLE_NAME'AND cols.owner = 'SCHEMA_NAME';```将上述语句中的'SCHEMA_NAME'替换为要查询表所属的用户,'TABLE_NAME'替换为要查询的表名,可以获取指定表的主键信息。

oracle 查看数据库的sql语句

oracle 查看数据库的sql语句

一、简介Oracle是一种关系型数据库管理系统(RDBMS),其广泛应用于企业级应用和数据管理中。

在Oracle数据库中,SQL语句是与数据库交互最常用的方式之一,通过SQL语句可以实现对数据库的查询、插入、更新、删除等操作。

在实际应用中,了解如何查看数据库的SQL 语句对于数据库管理员和开发人员来说至关重要。

二、 SQL语句的分类1. 查询语句(SELECT):用于查询数据库中的数据。

2. 插入语句(INSERT):用于向数据库中插入新的数据。

3. 更新语句(UPDATE):用于更新数据库中已有的数据。

4. 删除语句(DELETE):用于从数据库中删除数据。

5. 创建表语句(CREATE TABLE):用于创建新的数据表。

6. 删除表语句(DROP TABLE):用于删除已有的数据表。

7. 修改表结构语句(ALTER TABLE):用于修改数据表的结构。

三、查看已存在的SQL语句在Oracle数据库中,可以通过以下几种方式查看已存在的SQL语句:1. 查看数据库中的存储过程和函数:通过查询用户定义的存储过程和函数的元数据,可以获取其对应的SQL语句。

2. 查看数据库中的触发器:触发器是一种数据库对象,通过查询系统表可以查看触发器的定义语句。

3. 查看数据库中的视图:视图是虚拟的表,通过查询系统表可以获取视图的定义语句。

4. 查看数据库中的作业和调度:作业和调度是数据库中的定时任务,可以通过系统表获取其对应的SQL语句。

四、查看正在执行的SQL语句Oracle数据库提供了多种方式来查看当前正在执行的SQL语句:1. 使用动态性能视图:通过查看动态性能视图V$SQL和V$SQLAREA可以获取当前正在执行的SQL语句以及相关的执行计划、执行时间等信息。

2. 使用AWR报告:如果开启了AWR(自动工作负荷存储库)功能,可以通过AWR报告查看数据库在特定时间范围内执行的SQL语句和相关统计信息。

3. 使用SQL追踪工具:Oracle提供了SQL追踪工具,可以详细记录数据库中执行的SQL语句的执行计划、执行时间等信息,方便进行性能优化和故障排查。

oracle 联表查询sql语句

oracle 联表查询sql语句

oracle 联表查询sql语句摘要:1.Oracle 数据库简介2.联表查询概述3.Oracle 联表查询SQL 语句的基本语法4.示例:Oracle 联表查询SQL 语句的实际应用5.总结正文:Oracle 数据库是一款功能强大的关系型数据库管理系统,广泛应用于各种企业和组织的数据存储和管理。

在Oracle 数据库中,联表查询是一种常见的查询方式,通过将多个表连接在一起,实现数据的整合和查询。

下面,我们将详细介绍Oracle 联表查询SQL 语句的相关知识。

1.Oracle 数据库简介Oracle 数据库是由Oracle 公司开发的一款关系型数据库管理系统,它支持多种平台,具有高度的可移植性和强大的功能。

Oracle 数据库广泛应用于企业级数据存储和管理,例如金融、电信、制造等行业。

2.联表查询概述联表查询(JOIN)是指将两个或多个表通过某种条件连接在一起,实现数据的整合和查询。

在Oracle 数据库中,联表查询主要分为内连接(INNER JOIN)、左连接(LEFT JOIN)、右连接(RIGHT JOIN)和全连接(FULL JOIN)四种类型。

3.Oracle 联表查询SQL 语句的基本语法Oracle 联表查询SQL 语句的基本语法如下:```SELECT column1, column2, ...FROM table1JOIN table2ON table1.column = table2.columnWHERE condition;```其中,`JOIN`表示连接类型(可替换为INNER、LEFT、RIGHT 或FULL),`table1`和`table2`表示要连接的表名,`column`表示连接条件,`condition`表示筛选条件。

4.示例:Oracle 联表查询SQL 语句的实际应用假设我们有两个表:`employees`和`departments`,分别存储员工信息和部门信息。

Oracle中常用查询用户、角色、权限等SQL

Oracle中常用查询用户、角色、权限等SQL

Oracle中常⽤查询⽤户、⾓⾊、权限等SQL连带表间的外键关系⼀起删除所有某个⽤户下的所有表:SELECT 'DROP TABLE '||TNAME||' CASCADE CONSTRAINT ;' FROM DBA_OBJECTS FROM DBA_OBJECTS WHEREOWNER='YOUR_USER' AND OBJECT_TYPE='TABLE'然后将选出的结果粘贴到SQLPLUS⾥执⾏1.查看所有⽤户:select * from dba_users;select * from all_users;select * from user_users;2.查看⽤户或⾓⾊系统权限(直接赋值给⽤户或⾓⾊的系统权限):select * from dba_sys_privs;select * from user_sys_privs; (查看当前⽤户所拥有的权限)3.查看⾓⾊(只能查看登陆⽤户拥有的⾓⾊)所包含的权限sql>select * from role_sys_privs;4.查看⽤户对象权限:select * from dba_tab_privs;select * from all_tab_privs;select * from user_tab_privs;5.查看所有⾓⾊: select * from dba_roles;6.查看⽤户或⾓⾊所拥有的⾓⾊:select * from dba_role_privs;select * from user_role_privs;7.查看哪些⽤户有sysdba或sysoper系统权限(查询时需要相应权限)select * from V$PWFILE_USERS8.SqlPlus中查看⼀个⽤户所拥有权限SQL>select * from dba_sys_privs where grantee='username'; 其中的username即⽤户名要⼤写才⾏。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

目录1 查看表空间的名称及大小 (8)2 查看表空间物理文件的名称及大小 (8)3 查看回滚段名称及大小 (8)4 查看控制文件 (8)5查看日志文件 (8)6 查看表空间的使用情况 (8)7 查看数据库库对象 (9)8 查看数据库的版本 (9)9 查看数据库的创建日期和归档方式 (9)10 捕捉运行很久的SQL (9)11 查看数据表的参数信息 (9)12 查看还没提交的事务 (9)13 查找object为哪些进程所用 (10)14 回滚段查看 (10)15 耗资源的进程(top session) (10)16 查看锁(lock)情况 (11)17 查看等待(wait)情况 (11)18 查看sga情况 (11)19 查看catched object (11)20 查看V$SQLAREA (11)21 查看object分类数量 (11)22 按用户查看object种类 (11)23 有关connection的相关信息 (12)1 查看有哪些用户连接 (12)2 根据v.sid查看对应连接的资源占用等情况 (12)3 根据sid查看对应连接正在运行的sql (12)24 查询表空间使用情况 (13)25 查询表空间的碎片程度 (13)26 查询有哪些数据库实例在运行 (14)27 创建数据look $ORACLE_HOME/rdbms/admin/buildall.sql (14)28 数据字典 (14)29 revoke dba from user_name; (15)30控制文件 (15)31备份用户表空间 (16)32备份控制文件 (16)33备份控制文件,并将二进制控制文件变为了asc 的文本文件 (16)34redo log (16)1加入一个日志组 (17)2加入日志组的一个成员 (17)3删除日志组:当前日志组不能删;活动的日志组不能删;非归档的日志组不能删 (17)4删除日志组中的某个成员,但每个组的最后一个成员不能被删除 (17)5清除在线日志 (17)6清除非归档日志 (17)7重命名日志文件 (18)8数据库归档模式到非归档模式的互换,要启动到mount状态下才能改变;startup mount;然后再打开数据库 (18)35分析日志文件logmnr (18)1实践: (19)2对数据表做一些操作,为恢复操作做准备 (19)36 tablespace (19)1表空间和数据文件的对应关系 (19)2限制用户在某表空间的使用限额 (19)3 9i以后,oracle建议使用local管理,而不使用dictionary管理,因为local采用bitmap管理表空间,不会产生系统表空间的自愿争用 (20)4 在创建表空间时,设置表空间内的段空间管理模式,这里用的是自动管理 205 undo tablespace(不能被用在字典管理模下) (20)6 设置数据库缺省的临时表空间 (21)7系统/临时/在线的undo表空间不能被offline (21)8重命名用户表空间 (21)9重命名系统表空间 ,但在重命名前必须将数据库shutdown,并重启到mount状态 (21)10resize tablespace,autoextend datafile space (21)11resize datafile (21)12给表空间扩展空间 (21)13将表空间设置成OMF状态 (22)14 将表的某分区移动到另一个表空间 (22)15 手工分配表空间段的分区(extend)大小 (22)16 数据对象所占用的字节数 (22)37 UNDO Data (22)1 忽略回滚段的错误提示 (23)2 在自动管理模式下,不会真正建立rbs1;在手工管理模式则可以建立,且是私有回滚段 (23)3 在提交了修改的数据后,9i提供了旧数据的回闪操作,将修改前的数据只读给用户看,但这部分数据不会又恢复在表中,而是旧数据的一个映射 (23)4 回滚段的统计信息 (23)5 在手工管理模式下,建立公共的回滚段 (24)38 Managing Tables (24)1 手工分配分区,分配的数据文件必须是表所在表空间内的数据文件 (25)2 释放表中没有用到的空间 (25)3 将非分区表的表空间搬到新的表空间,在移动表空间后,原表中的索引对象将会不可用,必须重建 (25)4 给表中不用的列做标记 (26)5 drop表中不用的做了标记列 (26)39 managing indexes (26)1 create index (26)1创建一般索引 (26)2创建位图索引 (26)3 索引中不能用pctused (26)4 大数据量的索引最好不要做日志 (26)5 创建反转索引 (27)6 创建函数索引 (27)7 建表时创建约束条件 (27)2 给创建bitmap index分配的内存空间参数,以加速建索引 (27)3 改变索引的存储参数 (27)4 给索引手工分配一个分区 (27)5 释放索引中没用的空间 (27)6 索引重建 (27)7 普通索引和反转索引的互换 (28)8 重建索引时,不锁表 (28)9 给索引整理碎片 (28)10 分析索引,事实上是更新统计的过程 (28)11 有关索引信息的视图 (28)40 数据完整性的管理(Maintaining data integrity) (28)1 创建外键约束 (29)2 不效验老数据,只约束新的数据[enable/disable:约束/不约束新数据;novalidate/validate:不对/对老数据进行验证] (29)3 修改约束条件,延时验证,commit时验证 (29)4 修改约束条件,立即验证 (29)5 drop一个有外键的主键表,带cascade constraints参数级联删除 (29)6 当truncate外键表时,先将外键设为无效,再truncate (29)7 设约束条件无效 (30)1 (30)2 运行创建exceptions表的脚本* (30)3 获取约束条件信息的表或视图 (30)41 managing password security and resources (30)1 建立口令配置文件,failed_login_attempts口令输多少次后锁,password_lock_times指多少天后口令被自动解锁 (30)2 创建口令配置文件 (30)3 建立资源配置文件 (31)4 设置口令解锁时间 (31)5 password_life_time指口令文件多少时间到期,password_grace_time指在第一次成功登录后到口令到期有多少天时间可改变口令 (31)6 password_reuse_time指口令在多少天内可被重用,password_reuse_max口令可被重用的最大次数 (31)7 建立了profile后,且指定给某个用户,则必须用CASCADE才能删除 (31)42 配置资源参数 (31)1 资源参数(session级) (32)2 获取资源信息的表或视图 (32)43 Managing users (32)1 创建用户 (32)2 数据库级设定缺省临时表空间 (33)3 制定数据库级的缺省表空间 (33)4 创建os级审核的用户,需知道os_authent_prefix,表示oracle和os口令对应的前缀,'OPS$'为此参数的值,此值可以任意设置 (33)5 修改用户使用表空间的限额,回滚表空间和临时表空间不允许授予限额 (33)6 删除用户或删除级联用户(用户对象下有对象的要用CASCADE,将其下一些对象一起删除) (33)7 每个用户在哪些表空间下有些什么限额 (33)8 改变用户的缺省表空间 (33)44 Managing Privileges (33)1 授予权限语法,public 标识所有用户,with admin option允许能将权限授予第三者的权限 (34)2 当 O7_dictionary_accessiblity参数为True时,标识select any table时,包括系统表也能select ,否则,不包含系统表;缺省为false (34)3 由于O7_dictionary_accessiblity为静态参数,不能动态改变,故加scope=spfile,下次启动时才生效 (34)4 授予对象中的某些字段的权限,如select 某表中的某些字段的权限 (34)5 oracle不允许授予select某列的权限,但可以授insert ,update某列的权限 (34)6 db/os/none 审计被记录在数据库/操作系统/不审计缺省是none (35)7 启动对表的select动作 (35)8 by session在每个session中发出command只记录一次,by access则每个command都记录 (35)9 取消审计 (35)10 查被审计信息 (35)获取审计记录 (35)45 Managing Role (35)1 建立default role,用户登录时,缺省激活default role (36)46 Basic SQL SELECT (36)1 使用字符函数(右边截取,字段中包含某个字符,左边填充某字符到固定位数,右边填充某字符到固定位数) (37)2 使用数字函数(往右/左几位四舍五入,取整,取余) (37)3 使用日期函数(计算两个日期间相差几个星期,两个日期间相隔几个月,在某个月份上加几个月,某个日期的下一个日期, 某日期所在月的最后的日期,对某个日期的月分四舍五入,对某个日期的月份进行取整) (37)4 使用NULL函数(当expr1为空取expr2/当expr1为空取expr2,否则取expr3/当expr1=expr2返回空) (37)47 CREATE/ALTER TABLE (38)1 建立外键 (39)2 删除列,并级联删除此列下的约束条件 (39)48 Create Views (39)1 使用别名 (39)2 创建复杂视图 (40)3 当用update修改数据时,必须满足视图的col1>10的条件,不满足则不能被改变 (40)4 改变视图的值.对于简单视图可以用update语法修改表数据,但复杂视图则不一定能改。

如使用了函数,group by ,distinct等的列 (40)5 TOP-N分析 (40)6 找出某列三条最大值的记录 (40)49 Other database Object (40)1 union 操作,它将两个集合的交集部分压缩,并对数据排序 (41)2 union all 操作,两个集合的交集部分不压缩,且不对数据排序 (41)3 intersect 操作,求两个集合的交集,它将对重复数据进行压缩,且排序.. 414 minus 操作,集合减,它将压缩两个集合减后的重复记录, 且对数据排序.. 425 EXTRACT 抽取时间函数. 此例是抽取当前日期中的年 (42)6 EXTRACT 抽取时间函数. 此例是抽取当前日期中的月 (42)7 增强的 group by 子句 (42)1 其结果看起来象对col1做小计 (42)2 复合rollup表达式 (42)3 其结果看起来象对col1做小计后,再对col2做小计,最后算总计 (43)4 复合rollup表达式 (43)5 混合rollup,cube表达式 (43)8 GROUPING(expr)函数,查看select语句种以何字段聚合,其取值为0或1439 grouping sets操作,对group by结果集先对col1求和,再对col2求和,最后将其结果集并在一起 (43)1 查看表空间的名称及大小select t.tablespace_name, round(sum(bytes/(1024*1024)),0) ts_size from dba_tablespaces t, dba_data_files dwhere t.tablespace_name = d.tablespace_namegroup by t.tablespace_name;2 查看表空间物理文件的名称及大小select tablespace_name, file_id, file_name,round(bytes/(1024*1024),0) total_spacefrom dba_data_filesorder by tablespace_name;3 查看回滚段名称及大小select segment_name, tablespace_name, r.status,(initial_extent/1024) InitialExtent,(next_extent/1024) NextExtent, max_extents, v.curext CurExtentFrom dba_rollback_segs r, v$rollstat vWhere r.segment_id = n(+)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_namefrom dba_free_spacegroup 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 CWHERE 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_versionWhere SUBSTR(PRODUCT,1,6)='Oracle';9 查看数据库的创建日期和归档方式Select Created, Log_Mode, Log_Mode From V$Database;10 捕捉运行很久的SQLcolumn username format a12column opname format a16column progress format a8select username,sid,opname,round(sofar*100 / totalwork,0) || '%' as progress,time_remaining,sql_textfrom v$session_longops , v$sqlwhere time_remaining <> 0and sql_address = addressand sql_hash_value = hash_value/11 查看数据表的参数信息SELECT partition_name, high_value, high_value_length, tablespace_name, pct_free, pct_used, ini_trans, max_trans, initial_extent,next_extent, min_extent, max_extent, pct_increase, FREELISTS,freelist_groups, LOGGING, BUFFER_POOL, num_rows, blocks,empty_blocks, avg_space, chain_cnt, avg_row_len, sample_size,last_analyzedFROM dba_tab_partitions--WHERE table_name = :tname AND table_owner = :townerORDER BY partition_position12 查看还没提交的事务select * from v$locked_object;select * from v$transaction;13 查找object为哪些进程所用selectp.spid,s.sid,s.serial# serial_num,ername user_name,a.type object_type,s.osuser os_user_name,a.owner,a.object object_name,decode(sign(48 - command),1,to_char(command), 'Action Code #' || to_char(command) ) action,p.program oracle_process,s.terminal terminal,s.program program,s.status session_statusfrom v$session s, v$access a, v$process pwhere s.paddr = p.addr ands.type = 'USER' anda.sid = s.sid anda.object='SUBSCRIBER_ATTR'order by ername, s.osuser14 回滚段查看select rownum, sys.dba_rollback_segs.segment_name Name, v$rollstat.extents Extents, v$rollstat.rssize Size_in_Bytes, v$rollstat.xacts XActs,v$rollstat.gets Gets, v$rollstat.waits Waits, v$rollstat.writes Writes,sys.dba_rollback_segs.status status from v$rollstat,sys.dba_rollback_segs,v$rollname where v$(+) = sys.dba_rollback_segs.segment_nameandv$n (+) = v$n order by rownum15 耗资源的进程(top session)select s.schemaname schema_name, decode(sign(48 - command), 1,to_char(command), 'Action Code #' || to_char(command) ) action, statussession_status, s.osuser os_user_name, s.sid, p.spid , s.serial# serial_num,nvl(ername, '[Oracle process]') user_name, s.terminal terminal,s.program program, st.value criteria_value from v$sesstat st, v$session s ,v$process pwhere st.sid = s.sid and st.statistic# = to_number('38') and ('ALL' = 'ALL'or s.status = 'ALL') and p.addr = s.paddr order by st.value desc, p.spid asc,ername asc, s.osuser asc16 查看锁(lock)情况select /*+ RULE */ ls.osuser os_user_name, ername user_name,decode(ls.type, 'RW', 'Row wait enqueue lock', 'TM', 'DML enqueue lock', 'TX','Transaction enqueue lock', 'UL', 'User supplied lock') lock_type,o.object_name object, decode(ls.lmode, 1, null, 2, 'Row Share', 3,'Row Exclusive', 4, 'Share', 5, 'Share Row Exclusive', 6, 'Exclusive', null)lock_mode, o.owner, ls.sid, ls.serial# serial_num, ls.id1, ls.id2from sys.dba_objects o, ( select s.osuser, ername, l.type,l.lmode, s.sid, s.serial#, l.id1, l.id2 from v$session s,v$lock l where s.sid = l.sid ) ls where o.object_id = ls.id1 and o.owner<> 'SYS' order by o.owner, o.object_name17 查看等待(wait)情况SELECT v$waitstat.class, v$waitstat.count count, SUM(v$sysstat.value)sum_valueFROM v$waitstat, v$sysstat WHERE v$ IN ('db block gets','consistent gets') group by v$waitstat.class, v$waitstat.count18 查看sga情况SELECT NAME, BYTES FROM SYS.V_$SGASTAT ORDER BY NAME ASC19 查看catched objectSELECT owner, name, db_link, namespace, type, sharable_mem, loads, executions,locks,pins, kept FROM v$db_object_cache20 查看V$SQLAREASELECT SQL_TEXT, SHARABLE_MEM, PERSISTENT_MEM, RUNTIME_MEM, SORTS,VERSION_COUNT, LOADED_VERSIONS, OPEN_VERSIONS, USERS_OPENING, EXECUTIONS,USERS_EXECUTING, LOADS, FIRST_LOAD_TIME, INVALIDATIONS, PARSE_CALLS,DISK_READS,BUFFER_GETS, ROWS_PROCESSED FROM V$SQLA REA21 查看object分类数量select decode (o.type#,1,'INDEX' , 2,'TABLE' , 3 , 'CLUSTER' , 4, 'VIEW' , 5 ,'SYNONYM' , 6 , 'SEQUENCE' , 'OTHER' ) object_type , count(*) quantity fromsys.obj$ o where o.type# > 1 group by decode (o.type#,1,'INDEX' , 2,'TABLE' , 3, 'CLUSTER' , 4, 'VIEW' , 5 , 'SYNONYM' , 6 , 'SEQUENCE' , 'OTHER' ) union select'COLUMN' , count(*) from sys.col$ union select 'DB LINK' , count(*) from22 按用户查看object种类select schema, sum(decode(o.type#, 1, 1, NULL)) indexes,sum(decode(o.type#, 2, 1, NULL)) tables, sum(decode(o.type#, 3, 1, NULL))clusters, sum(decode(o.type#, 4, 1, NULL)) views, sum(decode(o.type#, 5, 1,NULL)) synonyms, sum(decode(o.type#, 6, 1, NULL)) sequences,sum(decode(o.type#, 1, NULL, 2, NULL, 3, NULL, 4, NULL, 5, NULL, 6, NULL, 1))others from sys.obj$ o, er$ u where o.type# >= 1 and er# =o.owner# and <> 'PUBLIC' group by order bysys.link$ union select 'CONSTRAINT' , count(*) from sys.con$23 有关connection的相关信息1 查看有哪些用户连接select s.osuser os_user_name, decode(sign(48 - command), 1, to_char(command), 'Action Code #' || to_char(command) ) action, p.program oracle_process, status session_status, s.terminal terminal, s.program program,ername user_name, s.fixed_table_sequence activity_meter, '' query, 0 memory, 0 max_memory, 0 cpu_usage, s.sid, s.serial# serial_num from v$session s, v$process p where s.paddr=p.addr and s.type = 'USER' order by ername, s.osuser2 根据v.sid查看对应连接的资源占用等情况select ,v.value,n.class,n.statistic#from v$statname n,v$sesstat vwhere v.sid = 71 andv.statistic# = n.statistic#order by n.class, n.statistic#3 根据sid查看对应连接正在运行的sqlselect /*+ PUSH_SUBQ */command_type,sql_text,sharable_mem,persistent_mem,runtime_mem,sorts,version_count,loaded_versions,open_versions,users_opening,executions,users_executing,loads,first_load_time,invalidations,parse_calls,disk_reads,buffer_gets,rows_processed,sysdate start_time,sysdate finish_time,'>' || address sql_address,'N' statusfrom v$sqlareawhere address = (select sql_address from v$session where sid = 71)24 查询表空间使用情况select a.tablespace_name "表空间名称",100-round((nvl(b.bytes_free,0)/a.bytes_alloc)*100,2) "占用率(%)",round(a.bytes_alloc/1024/1024,2) "容量(M)",round(nvl(b.bytes_free,0)/1024/1024,2) "空闲(M)",round((a.bytes_alloc-nvl(b.bytes_free,0))/1024/1024,2) "使用(M)", Largest "最大扩展段(M)",to_char(sysdate,'yyyy-mm-dd hh24:mi:ss') "采样时间"from (select f.tablespace_name,sum(f.bytes) bytes_alloc,sum(decode(f.autoextensible,'YES',f.maxbytes,'NO',f.bytes)) maxbytes from dba_data_files fgroup by tablespace_name) a,(select f.tablespace_name,sum(f.bytes) bytes_freefrom dba_free_space fgroup by tablespace_name) b,(select round(max(ff.length)*16/1024,2) Largest, tablespace_namefrom sys.fet$ ff, sys.file$ tf,sys.ts$ tswhere ts.ts#=ff.ts# and ff.file#=tf.relfile# and ts.ts#=tf.ts#group by , tf.blocks) cwhere a.tablespace_name = b.tablespace_name and a.tablespace_name = c.tablespace_name25 查询表空间的碎片程度select tablespace_name,count(tablespace_name) from dba_free_space group by tablespace_namehaving count(tablespace_name)>10;alter tablespace name coalesce;alter table name deallocate unused;create or replace view ts_blocks_v asselect tablespace_name,block_id,bytes,blocks,'free space' segment_name from dba_free_spaceunion allselect tablespace_name,block_id,bytes,blocks,segment_name from dba_extents;select * from ts_blocks_v;select tablespace_name,sum(bytes),max(bytes),count(block_id) from dba_free_spacegroup by tablespace_name;26 查询有哪些数据库实例在运行select inst_name from v$active_instances;27 创建数据look $ORACLE_HOME/rdbms/admin/buildall.sqlcreate database db01maxlogfiles 10maxdatafiles 1024maxinstances 2logfileGROUP 1 ('/u01/oradata/db01/log_01_db01.rdo') SIZE 15M,GROUP 2 ('/u01/oradata/db01/log_02_db01.rdo') SIZE 15M,GROUP 3 ('/u01/oradata/db01/log_03_db01.rdo') SIZE 15M,datafile 'u01/oradata/db01/system_01_db01.dbf') SIZE 100M,undo tablespace UNDOdatafile '/u01/oradata/db01/undo_01_db01.dbf' SIZE 40Mdefault temporary tablespace TEMPtempfile '/u01/oradata/db01/temp_01_db01.dbf' SIZE 20Mextent management local uniform size 128kcharacter set AL32UTE8national character set AL16UTF16set time_zone='America/New_York';28 数据字典set wrap offselect * from v$dba_users;grant select on table_name to user/rule;select * from user_tables;select * from all_tables;select * from dba_tables;29 revoke dba from user_name;shutdown immediatestartup nomountselect * from v$instance;select * from v$sga;select * from v$tablespace;alter session set nls_language=american; alter database mount;select * from v$database;alter database open;desc dictionaryselect * from dict;desc v$fixed_table;select * from v$fixed_table;set oracle_sid=foxconnselect * from dba_objects;set serveroutput onexecute dbms_output.put_line('sfasd'); 30控制文件select * from v$database;select * from v$tablespace;select * from v$logfile;select * from v$log;select * from v$backup;31备份用户表空间alter tablespace users begin backup;select * from v$archived_log;select * from v$controlfile;alter system set control_files='$ORACLE_HOME/oradata/u01/ctrl01.ctl', '$ORACLE_HOME/oradata/u01/ctrl02.ctl' scope=spfile;cp $ORACLE_HOME/oradata/u01/ctrl01.ctl $ORACLE_HOME/oradata/u01/ctrl02.ctlstartup pfile='../initSID.ora'select * from v$parameter where name like 'control%' ;show parameter control;select * from v$controlfile_record_section;select * from v$tempfile;32备份控制文件alter database backup controlfile to '../filepath/control.bak';33备份控制文件,并将二进制控制文件变为了asc 的文本文件alter database backup controlfile to trace;34redo logarchive log list;alter system archive log start;--启动自动存档alter system switch logfile;--强行进行一次日志switchalter system checkpoint;--强制进行一次checkpointalter tablspace users begin backup;alter tablespace offline;/*checkpoint 同步频率参数FAST_START_MTTR_TARGET,同步频率越高,系统恢复所需时间越短*/show parameter fast;show parameter log_checkpoint;1加入一个日志组alter database add logfile group 3 ('/$ORACLE_HOME/oracle/ora_log_file6.rdo' size 10M);2加入日志组的一个成员alter database add logfile member '/$ORACLE_HOME/oracle/ora_log_file6.rdo' to group 3;3删除日志组:当前日志组不能删;活动的日志组不能删;非归档的日志组不能删alter database drop logfile group 3;4删除日志组中的某个成员,但每个组的最后一个成员不能被删除alter databse drop logfile member '$ORACLE_HOME/oracle/ora_log_file6.rdo';5清除在线日志alter database clear logfile '$ORACLE_HOME/oracle/ora_log_file6.rdo'; alter database clear logfile group 3;6清除非归档日志alter database clear unarchived logfile group 3;7重命名日志文件alter database rename file '$ORACLE_HOME/oracle/ora_log_file6.rdo' to '$ORACLE_HOME/oracle/ora_log_file6a.rdo';show parameter db_create;alter system set db_create_online_log_dest_1='path_name';select * from v$log;select * from v$logfile;8数据库归档模式到非归档模式的互换,要启动到mount状态下才能改变;startup mount;然后再打开数据库.alter database noarchivelog/archivelog;achive log start;---启动自动归档alter system archive all;--手工归档所有日志文件select * from v$archived_log;show parameter log_archive;35分析日志文件logmnr1) 在init.ora中set utl_file_dir 参数2) 重新启动oracle3) create 目录文件desc dbms_logmnr_d;dbms_logmnr_d.build;4) 加入日志文件 add/remove log filedhms_logmnr.add_logfiledbms_logmnr.removefile5) start logmnrdbms_logmnr.start_logmnr6) 分析出来的内容查询 v$logmnr_content --sqlredo/sqlundo1实践:desc dbms_logmnr_d;2对数据表做一些操作,为恢复操作做准备update 表 set qty=10 where stor_id=6380;delete 表 where stor_id=7066;/***********************************/utl_file_dir的路径executedbms_logmnr_d.build('foxdict.ora','$ORACLE_HOME/oracle/admin/fox/cdump') ;executedbms_logmnr.add_logfile('$ORACLE_HOME/oracle/ora_log_file6.log',dbms_log mnr.newfile);executedbms_logmnr.start_logmnr(dictfilename=>'$ORACLE_HOME/oracle/admin/fox/cd ump/foxdict.ora');36 tablespaceselect * form v$tablespace;select * from v$datafile;1表空间和数据文件的对应关系select , from v$tablespace t1,v$datafile t2 where t1.ts#=t2.ts#;alter tablespace users add datafile 'path' size 10M;select * from dba_rollback_segs;2限制用户在某表空间的使用限额alter user user_name quota 10m on tablespace_name;create tablespace xxx [datafile 'path_name/datafile_name'] [size xxx] [extent management local/dictionary] [default storage(xxx)];exmple: create tablespace userdata datafile '$ORACLE_HOME/oradata/userdata01.dbf' size 100M AUTOEXTEND ON NEXT 5M MAXSIZE 200M;create tablespace userdata datafile '$ORACLE_HOME/oradata/userdata01.dbf' size 100M extent management dictionary default storage(initial 100k next 100k pctincrease 10) offline;3 9i以后,oracle建议使用local管理,而不使用dictionary管理,因为local 采用bitmap管理表空间,不会产生系统表空间的自愿争用create tablespace userdata datafile '$ORACLE_HOME/oradata/userdata01.dbf' size 100M extent management local uniform size 1m;create tablespace userdata datafile '$ORACLE_HOME/oradata/userdata01.dbf' size 100M extent management local autoallocate;4 在创建表空间时,设置表空间内的段空间管理模式,这里用的是自动管理create tablespace userdata datafile '$ORACLE_HOME/oradata/userdata01.dbf' size 100M extent management local uniform size 1m segment space management auto;alter tablespace userdata mininum extent 10;alter tablespace userdata default storage(initial 1m next 1m pctincrease 20);5 undo tablespace(不能被用在字典管理模下)create undo tablespace undo1 datafile '$ORACLE_HOME/oradata/undo101.dbf' size 40M extent management local;show parameter undo;/*temporary tablespace*/create temporary tablespace userdata tempfile '$ORACLE_HOME/oradata/undo101.dbf' size 10m extent management local;6 设置数据库缺省的临时表空间alter database default temporary tablespace tablespace_name;7系统/临时/在线的undo表空间不能被offlinealter tablespace tablespace_name offline/online;alter tablespace tablespace_name read only;8重命名用户表空间alter tablespace tablespace_name rename datafile '$ORACLE_HOME/oradata/undo101.dbf' to '$ORACLE_HOME/oradata/undo102.dbf';9重命名系统表空间 ,但在重命名前必须将数据库shutdown,并重启到mount状态alter database rename file '$ORACLE_HOME/oradata/system01.dbf' to '$ORACLE_HOME/oradata/system02.dbf';drop tablespace userdata including contents and datafiles;---drop tablespce 10resize tablespace,autoextend datafile spacealter database datafile '$ORACLE_HOME/oradata/undo102.dbf' autoextend on next 10m maxsize 500M;11resize datafilealter database datafile '$ORACLE_HOME/oradata/undo102.dbf' resize 50m; 12给表空间扩展空间alter tablespace userdata add datafile '$ORACLE_HOME/oradata/undo102.dbf' size 10m;13将表空间设置成OMF状态alter system set db_create_file_dest='$ORACLE_HOME/oradata';create tablespace userdata;---use OMF status to create tablespace;drop tablespace userdata;---user OMF status to drop tablespace;select * from dba_tablespace/v$tablespace/dba_data_files;14 将表的某分区移动到另一个表空间alter table table_name move partition partition_name tablespace tablespace_name;ORACLE storage structure and relationships15 手工分配表空间段的分区(extend)大小alter table kong.test12 allocate extent(size 1m datafile '$ORACLE_HOME/oradata/undo102.dbf');alter table kong.test12 deallocate unused; ---释放表中没有用到的分区show parameter db;alter system set db_8k_cache_size=10m; ---配置8k块的内存空间块参数select * from dba_extents/dba_segments/data_tablespace;select * from dba_free_space/dba_data_file/data_tablespace;16 数据对象所占用的字节数select sum(bytes) from dba_extents where onwer='kong' and segment_name ='table_name';37 UNDO Datashow parameter undo;alter tablespace users offline normal;alter tablespace users offline immediate;recover datafile '$ORACLE_HOME/oradata/undo102.dbf';alter tablespace users online ;select * from dba_rollback_segs;alter system set undo_tablespace=undotbs1;1 忽略回滚段的错误提示alter system set undo_suppress_errors=true;2 在自动管理模式下,不会真正建立rbs1;在手工管理模式则可以建立,且是私有回滚段create rollback segment rbs1 tablespace undotbs;desc dbms_flashback;3 在提交了修改的数据后,9i提供了旧数据的回闪操作,将修改前的数据只读给用户看,但这部分数据不会又恢复在表中,而是旧数据的一个映射execute dbms_flashback.enable_at_time('26-JAN-04:12:17:00 pm'); execute dbms_flashback.disable;4 回滚段的统计信息select end_time,begin_time,undoblks from v$undostat;/*undo表空间的大小计算公式: UndoSpace=[UR * (UPS * DBS)] + (DBS * 24) UR :UNDO_RETENTION 保留的时间(秒)UPS :每秒的回滚数据块DBS:系统EXTENT和FILE SIZE(也就是db_block_size)*/select * from dba_rollback_segs/v$rollname/v$rollstat/v$undostat/v$session/v$transacti on;show parameter transactions;show parameter rollback;5 在手工管理模式下,建立公共的回滚段create public rollback segment prbs1 tablespace undotbs;alter rollback segment rbs1 online;----在手工管理模式/*在手工管理模式中,initSID.ora中指定undo_management=manual 、rollback_segment=('rbs1','rbs2',...)、transactions=100 、transactions_per_rollback_segment=10然后 shutdown immediate ,startup pfile=....\???.ora */38 Managing Tables/*char type maxlen=2000;varchar2 type maxlen=4000 bytesrowid 是18位的64进制字符串 (10个bytes 80 bits)rowid组成: object#(对象号)--32bits,6位rfile#(相对文件号)--10bits,3位block#(块号)--22bits,6位row#(行号)--16bits,3位64进制: A-Z,a-z,0-9,/,+ 共64个符号dbms_rowid 包中的函数可以提供对rowid的解释*/selectrowid,dbms_rowid.rowid_block_number(rowid),dbms_rowid.rowid_row_number(r owid) from table_name;create table test2(id int,lname varchar2(20) not null,fname varchar2(20) constraint ck_1 check(fname like 'k%'),empdate date default sysdate)) tablespace tablespace_name;create global temporary table test2 on commit delete/preserve rows as select * from kong.authors;create table user.table(...) tablespace tablespace_name storage(...) pctfree10 pctused 40;alter table user.tablename pctfree 20 pctused 50 storage(...);---changing table storage1 手工分配分区,分配的数据文件必须是表所在表空间内的数据文件alter table user.table_name allocate extent(size 500k datafile '...');2 释放表中没有用到的空间alter table table_name deallocate unused;alter table table_name deallocate unused keep 8k;3 将非分区表的表空间搬到新的表空间,在移动表空间后,原表中的索引对象将会不可用,必须重建alter table user.table_name move tablespace new_tablespace_name;create index index_name on user.table_name(column_name) tablespace users; alter index index_name rebuild;drop table table_name [CASCADE CONSTRAINTS];alter table user.table_name drop column col_name [CASCADE CONSTRAINTS CHECKPOINT 1000];---drop column4 给表中不用的列做标记alter table user.table_name set unused column comments CASCADE CONSTRAINTS;5 drop表中不用的做了标记列alter table user.table_name drop unused columns checkpoint 1000;/*当在drop col是出现异常,使用CONTINUE,防止重删前面的column*/ALTER TABLE USER.TABLE_NAME DROP COLUMNS CONTINUE CHECKPOINT 1000;select * from dba_tables/dba_objects;39 managing indexes1 create indexexample:1创建一般索引create index index_name on table_name(column_name) tablespace tablespace_name;2创建位图索引create bitmap index index_name on table_name(column_name1,column_name2) tablespace tablespace_name;3 索引中不能用pctusedcreate [bitmap] index index_name on table_name(column_name) tablespace tablespace_name pctfree 20 storage(inital 100k next 100k) ;4 大数据量的索引最好不要做日志create [bitmap] index index_name table_name(column_name1,column_name2) tablespace_name pctfree 20 storage(inital 100k next 100k) nologging;5 创建反转索引create index index_name on table_name(column_name) reverse;6 创建函数索引create index index_name on table_name(function_name(column_name)) tablespace tablespace_name;7 建表时创建约束条件create table user.table_name(column_name number(7) constraint constraint_name primary key deferrable using index storage(initial 100k next 100k) tablespace tablespace_name,column_name2 varchar2(25) constraint constraint_name not null,column_name3 number(7)) tablespace tablespace_name;2 给创建bitmap index分配的内存空间参数,以加速建索引show parameter create_bit;3 改变索引的存储参数alter index index_name pctfree 30 storage(initial 200k next 200k);4 给索引手工分配一个分区alter index index_name allocate extent (size 200k datafile '$ORACLE/oradata/..');5 释放索引中没用的空间alter index index_name deallocate unused;6 索引重建alter index index_name rebuild tablespace tablespace_name;。

相关文档
最新文档