题目部分 在Oracle中,如何获取IP地址? 答案部分 若是获取服务器IP地址,则使用UTL_INADDR.GET_HOST_ADDRESS。...若是获取客户端IP地址则使用SYS_CONTEXT('USERENV','IP_ADDRESS')。 SYS_CONTEXT函数是Oracle提供的一个获取环境上下文信息的预定义函数。...该函数用来返回一个指定NAMESPACE下的PARAMETER值。该函数可以在SQL和PL/SQL语言中使用。...') DB_DOMAIN, SYS_CONTEXT('USERENV', 'DB_NAME') DB_NAME, SYS_CONTEXT('USERENV', 'DB_UNIQUE_NAME...会话语言名称的ISO简记, USERENV('INSTANCE') 当前的实例, USERENV('TERMINAL') 当前计算机名 FROM DUAL; 本文选自《Oracle
♣ 题目部分 【DB笔试面试820】在Oracle中,如何获取AWR报告? ♣ 答案部分 Oracle可以生成两种类型的AWR报告:文本格式和html格式。其中,html格式的报告界面更加友好。...可以通过运行Oracle自带的SQL脚本产生AWR报告,只是产生不同的AWR报告,需要运行不同的脚本。...l 产生整个数据库的AWR报告,运行脚本awrrpt.sql: @$ORACLE_HOME/rdbms/admin/awrrpt.sql l 产生某个实例的AWR报告,运行脚本awrrpti.sql:...@$ORACLE_HOME/rdbms/admin/awrrpti.sql l 产生针对不同时段性能的一个比对报告,运行脚本awrddrpt.sql: @$ORACLE_HOME/rdbms/admin...本文选自《Oracle程序员面试笔试宝典》,作者:小麦苗
♣ 题目部分 【DB笔试面试818】在Oracle中,如何获取ASH报告? ♣ 答案部分 获取ASH报告可以有3种方式:(1)脚本生成,(2)OEM生成,(3)存储过程生成。...(1)ASH报告生成脚本如下所示,根据提示输入相应的值即可获得ASH报告。 l Linux:@?/rdbms/admin/ashrpt.sql l Windows:@?...(3)可以利用存储过程DBMS_WORKLOAD_REPOSITORY.ASH_REPORT_HTML()来获取ASH报告的文本内容,然后将文本内容拷贝到文本文件中,最后修改文本文件的后缀名为html即可打开...|| (D.SNAP_ID) || ')));' ASH_REPORT FROM DBA_HIST_ASH_SNAPSHOT D ORDER BY D.SNAP_ID DESC; 本文选自《Oracle
题目部分 【DB笔试面试825】在Oracle中,如何获取ADDM报告? ♣ 答案部分 有两种办法可以获取ADDM报告: (1) 采用addmrpt.sql脚本。运行脚本:@?...START_SNAPSHOT是起始快照ID,END_SNAPSHOT是结束快照ID,INSTANCE是实例号,对于单实例,一般是1,在RAC环境下,可以通过查询视图GVINSTANCE得到,DB_ID是数据库的唯一识别号...,可以通过查询VDATABASE查到。...若普通用户使用DBMS_ADVISOR包获取ADDM报告,则必须使用SYS给这个普通用户赋予如下权限: GRANT EXECUTE ON DBMS_ADVISOR TO USER_LHR; GRANT...ADVISOR TO USER_LHR; & 说明: 有关ADDM的更多内容可以参考我的BLOG:http://blog.itpub.net/26736162/viewspace-2140642/ 本文选自《Oracle
题目部分 Oracle中如何删除表中重复的记录? 答案部分 平时工作中可能会遇到这种情况,当试图对表中的某一列或几列创建唯一索引时,系统提示ORA-01452 :不能创建唯一索引,发现重复记录。...重复的数据可能有这样两种情况:第一种是表中只有某些字段一样,第二种是两行记录完全一样。...1、删除重复记录的方法原理 在Oracle中,每一条记录都有一个ROWID,ROWID在整个数据库中是唯一的,ROWID确定了每条记录是在Oracle中的哪一个数据文件、块、行上。...2、删除重复记录的方法 若想要删除部分字段重复的数据,则使用下面语句进行删除,下面的语句是删除表中字段1和字段2重复的数据: DELETE FROM 表名 WHERE (字段1, 字段2) IN (...SELECT 字段1,字段2 FROM 表名 GROUP BY 字段1,字段2 HAVING COUNT(1) > 1); 也可以利用临时表的方式,先将查询到的重复的数据插入到一个临时表中,然后进行删除
题目部分 在Oracle中,Oracle中哪个包可以获取环境变量的值?...答案部分 可以通过DBMS_SYSTEM.GET_ENV来获取环境变量的当前生效值,示例如下所示: SYS@LHRDB1> VAR ENVOUT VARCHAR2(200); SYS@LHRDB1> SET.../app/oracle/product/11.2.0/db SYS@LHRDB1> SET SERVEROUTPUT ON SYS@LHRDB1> DECLARE 2 RETVAL VARCHAR2...RETVAL); 5 DBMS_OUTPUT.PUT_LINE(RETVAL); 6 END; 7 / /oracle/app/oracle/product/11.2.0/db PL...本文选自《Oracle程序员面试笔试宝典》,作者:李华荣。
♣ 题目部分 在Oracle中,如何获取trace文件的路径?...♣ 答案部分 跟踪文件(Trace File)一般位于“user_dump_dest”参数所指定的目录中,具体路径可以通过以下几种方式查询获得。.../app/oracle/diag/rdbms/lhrdb/lhrdb/trace/lhrdb_ora_19660944.trc 2、Oracle 11g可以通过查询V$DIAG_INFO获取 SYS@.../app/oracle/diag/rdbms/lhrdb/lhrdb/trace/lhrdb_ora_19660944.trc 3、oradebug tracefile_name获取 SYS@lhrdb....trc & 说明: 有关获取trace文件的更多内容可以参考我的BLOG:http://blog.itpub.net/26736162/viewspace-2125659 本文选自《Oracle程序员面试笔试宝典
♣ 题目部分 在Oracle中,如何获取用户的权限?...♣ 答案部分 若要获取一个用户的角色、系统权限、对象权限以及列权限,则可以通过以上介绍的数据字典视图来获取也可以通过DBMS_METADATA.GET_GRANTED_DDL来获取。...LHRSYS; GRANT SELECT ON SCOTT.EMP TO LHRSYS; GRANT CONNECT TO LHRSYS; GRANT CREATE JOB TO LHRSYS; 若通过数据字典来获取权限则可以通过如下的程序来获取...另外还可以通过exp或expdp来获取用户的权限,这里不再演示。...& 说明: 有关权限的更多内容可以参考我的BLOG:http://blog.itpub.net/26736162/viewspace-2140775/ 本文选自《Oracle程序员面试笔试宝典》,作者:
♣ 题目部分 在Oracle中,如何获取SQL历史执行计划?...♣ 答案部分 历史执行计划只能从AWR中获取,如果AWR没有记录的话,那么就无法获取历史执行计划了,获取历史执行计划的命令如下所示: SELECT * FROM TABLE(DBMS_XPLAN.DISPLAY_AWR...下面的例子可以直接从AWR中获取SQL_ID为“bsa0wjtftg3uw”的执行计划,可以看到历史有2种执行计划,一个是全表扫描,一个是索引范围扫描: SYS@RAC2LHR1> SELECT * FROM...本文选自《Oracle程序员面试笔试宝典》,作者:李华荣。
♣ 题目部分 在Oracle中,如何获取集群的名称(Cluster name)?...♣ 答案部分 集群名称信息是记录在OCR中的,因此可以通过转储OCR的方法来获得集群名称,另外,也可以使用cemutlo工具直接查看集群名称信息,如下所示: [root@raclhr-11gR2-N1...vendor_info> [root@raclhr-11gR2-N1 ~]# cemutlo -n raclhr-cluster 其实在$CRS_HOME/cdata/CLUSTER_NAME/目录中也可以看到...[root@raclhr-11gR2-N1 ~]# cd $ORACLE_HOME/cdata [root@raclhr-11gR2-N1 cdata]# ll total 2740 drwxr-xr-x...14 14:09 raclhr-11gr2-n1.olr drwxrwxr-x 2 grid oinstall 4096 May 17 12:07 raclhr-cluster 本文选自《Oracle
♣ 题目部分 在Oracle中,在高并发、高负载的情况下,如何给表添加字段并设置DEFAULT值?...因为Oracle在执行上述操作过程中,不仅要更新数据字典,还会刷新全部的记录,并且会使得Undo表空间暴涨,所以,正确的做法是将更新数据字典和更新字段值分开。...当然,从表中检索该列时,会有部分的NVL函数代价。具体的细微差别可以通过10046事件来分析,这里不再详细解析。...从Oracle 12c开始,支持具有默认值的空列的添加列的DDL语句优化,即如下2条SQL语句的效率是一样的,也不存在锁表的现象了: 1ALTER TABLE LKILL.T_KILL ADD A_LHR...,在Oracle 12c中,添加具有默认值的DDL优化已扩展到包括默认值的空列。
♣ 题目部分 在Oracle中,可以从exp出来的dmp文件获取哪些信息? ♣ 答案部分 在开发中常常碰到,需要导入dmp文件到现有数据库。...那么如何从现有的dmp文件中获取到这些信息呢?下面作者将一一讲解。...(一)获取基本信息:导出的版本、时间、导出的用户 下面的示例中exp_ddl_lhr_02.dmp是生成的dmp文件: [ZFZHLHRDB1:oracle]:/tmp>strings exp_ddl_lhr...dmp文件中的表信息 下面的示例中,exp_ddl_lhr_02.dmp是生成的dmp文件: [ZFZHLHRDB1:oracle]:/tmp>strings exp_ddl_lhr_02.dmp |...grep "CREATE TABLE"|awk '{print $3}'|sed 's/"//g' EMP ====》说明exp_ddl_lhr_02.dmp中只有一个emp表 (三)解析dmp文件生成
♣ 题目部分 在Oracle中,如何查询表和索引的历史统计信息?...♣ 答案部分 从Oracle 10g开始,当收集表的统计信息的时候,旧的统计数据被保留,如果因为新的统计信息而出现性能问题,旧的统计信息就可以被恢复。...历史统计信息保存在以下几张表中: l WRI$_OPTSTAT_TAB_HISTORY 表的统计信息 l WRI$_OPTSTAT_IND_HISTORY 索引的统计信息 l WRI$_OPTSTAT_HISTHEAD_HISTORY...列的统计信息 l WRI$_OPTSTAT_HISTGRM_HISTORY 直方图的信息 从视图DBA_TAB_STATS_HISTORY可以查询历史收集统计信息的时间,但是不能查询到行数,所以需要结合基表来查询...DBMS_STATS.RESTORE_SCHEMA_STATS('OWNER',DATE);--恢复某个用户的统计信息 EXECUTE DBMS_STATS.RESTORE_SYSTEM_STATS(DATE);--恢复SYSTEM的统计信息 可以通过如下的命令返回
♣ 题目部分 【DB笔试面试829】在Oracle中,如何迁移或清理审计表SYS.AUD$?...♣ 答案部分 在日常的数据库维护中,经常出现SYSTEM表空间被撑满,在绝大多数情况下是因为数据库登录审计的功能被启动了,此时一般建议把SYS.AUD$相关对象迁移到其它表空间,从而避免SYSTEM被用完的风险...REBUILD ONLINE TABLESPACE USERS; ALTER INDEX SYS.I_AUDIT_ACTIONS REBUILD ONLINE TABLESPACE USERS; 从Oracle...11g之前通过手工清理的方式或自定义作业来定期清理SYS.AUD$表,如下: TRUNCATE TABLE SYS.AUD$; DELETE FROM SYS.AUD$ WHERE OBJ$NAME=...在Oracle 11g中通过DBMS_AUDIT_MGMT包下的子过程进行手动或定期清理。
https://docs.oracle.com/en/database/oracle/oracle-database/index.html 如图,以上从 7.3.4 到 20c 的官方文档均可在线查看.../E11882_01/server.112/e40402/toc.htm 这里以 11g R2 官方文档为例: 今天来说说怎么快速的从官方文档中得到自己需要的知识。...SQL language Reference ,这个文档中包括 Oracle数据库中SQL 语句的语法( plsql不包含在内)。比如说create table语法、函数、表达式都在这里有描述。...各种管理表、索引、表空间、 redo等都可以在这里找到(在线传输表空间也在此文档中有描述) Performance tuning guide ,里面包含优化相关的内容,介绍了优化的方法、数据库实例以及...具体还没深入了解,但是感觉还是比较先进好用的,当 plsql没有办法完成任务的时候,可以使用 java存储过程来解决,比如说想要获取主机目录下的文件列表。
题目部分 在Oracle中,什么是高水位?如何回收表的高水位? 答案部分 Oracle数据库通过跟踪段中的块状态来管理空间。...HWM的说法;在段空间是自动管理方式(ASSM)时,Oracle是通过BITMAP来管理段内的空间分配,此时Oracle引入了LHWM(Low HWM,低高水位)的概念。...LHWM在全表扫描中非常重要。因为HWM之下的块只在被使用时才格式化,所以可能还有一些块是未被格式化的。因此,数据库读取位图块,以获取LHWM的位置。...“SELECT * FROM TABLE_NAME;”语句来查询数据的话,那么查询过程就会很慢,因为Oracle要执行全表扫描,从HWM下所有的格式化了的块都得去扫描,直到50G的所有块全部扫描完毕。...(4)exp/imp或expdp/impdp重构表。 (5)若表中没有数据则直接使用TRUNCATE来释放高水位。 如何找出系统中哪些表拥有高水位呢?这里给出两种办法,①比较表的行数和表的大小关系。
♣ 题目部分 在Oracle中,如何获取timestamp类型的精度到纳秒级?...使用如下方式可以获取timestamp类型的精度到纳秒级: SYS@lhrdb> select to_char( localtimestamp,'yyyy-mm-dd hh24:mi:ss.ff3')...--------------------------------------------------------------- 2019-03-11 16.04.15.796101000 本文选自《Oracle
♣ 题目部分 在Oracle中,如何得到已执行的目标SQL中的绑定变量的值?...♣ 答案部分 当Oracle解析和执行含有绑定变量的目标SQL时,如果满足如下两个条件之一,那么该SQL中的绑定变量的具体输入值就会被Oracle捕获: l 当含有绑定变量的目标SQL以硬解析的方式被执行时...只会捕获那些位于目标SQL的WHERE条件中的绑定变量的具体输入值,而对于那些使用了绑定变量的INSERT语句,不管该INSERT语句是否是以硬解析的方式执行,Oracle始终不会捕获INSERT语句的...如果V$SQL_BIND_CAPTURE中查不到,那么有可能对应的Shared Cursor已经从Shared Pool中被清除了,这时候可以尝试从AWR相关的数据字典表DBA_HIST_SQLSTAT...另外,也可以通过DBMS_XPLAN.DISPLAY_CURSOR和10046来获取绑定变量的值。
♣ 题目部分 在Oracle中,如何查询表的DML操作数据变化量?...从Oracle 10g开始,当初始化参数STATISTICS_LEVEL的值被设置为TYPICAL或ALL时,默认会启用Oracle中表监控的特性,此时,Oracle会默认监控表上的自上一次分析(Last...Analyzed)之后发生的INSERT、UPDATE、DELETE以及表是否被TRUNCATE截断操作,并且Oracle数据库的SMON后台进程每15分钟会将这些操作数量的近似值(内存SGA中记录的...DML操作)写入到数据字典基表MON_MODS$中(从SGA中写入到MON_MOD$),但是这个写入过程只持续1分钟,因此,可能不是所有DML操作都会记录到MON_MODS$表中。...在Oracle 10g之前,建表之后默认为NOMONITORING,从Oracle 10g开始,建表之后默认为MONITORING。
在 汪洋怡舟的这篇文章中【http://www.cnblogs.com/longren629/archive/2007/03/14/674633.html】只使用了一个数据表,效果如图2 我想使用多个表来生成动态的...treeview,效果如图三,代码如下所示 在第二次与第三次的代码中,代码出现重复,中间只是改了表名、列名 多个表之间,是否也可以实现递归呢,不管它的表名与列名是否相同? ...protected DataSet BindDate(string select) { Database db = DatabaseFactory.CreateDatabase(...); DbCommand cmd = db.GetSqlStringCommand(select); DataSet ds = db.ExecuteDataSet(cmd