Oracle程序员面试分类模拟9_第1页
Oracle程序员面试分类模拟9_第2页
Oracle程序员面试分类模拟9_第3页
Oracle程序员面试分类模拟9_第4页
Oracle程序员面试分类模拟9_第5页
已阅读5页,还剩6页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

Oracle程序员面试分类模拟9简答题1.

如何判断—个存储过程是否正在运行?正确答案:有两种方式可以判断一个存储过程是否正在运行,其查询SQL语句分别如下,若有结果返回,则说明存储过程正在运行。(江南博哥)

方法1:

方法2:

2.

如何将文本文件或Excel中的数据导入数据库?正确答案:有多种方式可以将文本文件的数据导入到数据库中,例如,利用PLSQLDeveloper软件进行复制粘贴,利用外部表,利用SQL*Loader等方式。至于Excel中的数据可以另存为csv文件(csv文件其实是逗号分隔的文本文件),然后导入到数据库中。

下面简单介绍一下SQL*Loader的使用方式。

SQL*Loader是一个Oracle工具,能够将数据从外部数据文件装载到数据库中。SQL*Loader必须包含一个控制文件,该控制文件是SQL*Loader的中枢核心,控制文件能够控制外部数据文件中的数据如何映射到Oracle的表和列。通常与SPOOL导出文本数据方法配合使用。SQL*Loader能够接收多种不同格式的数据文件。文件可以存储在磁盘或磁带上,或记录本身可以被嵌套到控制文件中。记录格式可以是定长的或变长的,定长记录是指这样的记录:每条记录具有相同的固定长度,并且每条记录中的数据域也具有相同的固定长度、数据类型和位置。

SQL*Loader的数据导入比较专业,有各种参数及选项可供选择,经常是作为数据仓库中大型数据的导入方法选择。

SQL*Loader的优点:

1)可将导入命令写入BAT文件直接批量处理。

2)导入处理比较专业,提供各种参数选择。

3)无需操作Oracle所在服务器。

SQL*Loader也有缺点,例如,Excel文件需要另存为txt或csv格式才能导入到数据库中。

总的来说这种方法是最值得采用的,可以自动建立操作系统的批处理文件执行SQL*Loader命令,将数据导入原始接收表,并在数据库中设置触发器进行精细操作。

SQL*Loader有两种使用方法:

1)只使用一个控制文件,在这个控制文件中包含数据。

2)使用一个控制文件和一个数据文件。

SQL*Loader工具使用的命令为sqlldr,其常用参数的含义见表1。

下面给出SQL*Loader控制文件的一个示例:

其中,CHARACTERSET指定文件的编码格式,infile指定导入的文件。

接下来就是执行导入命令了,如下:

当要加载的数据文件比较大的时候该如何提高SQL*Loader的性能呢?可以从以下几个方面考虑:

1)ROWS的默认值为64,可以根据需要指定更合适的ROWS参数来指定每次提交记录数。

2)米用DIRECT=TRUE导入可以跳过数据库的相关逻辑,直接将数据导入到数据文件中,可以提高导入数据的性能。

3)通过指定UNRECOVERABLE选项,可以写少量的日志,从而提高数据加载的性能。不过,推荐在加载完成后立即对数据库或至少对表空间备份。

当加载大量数据时,最好抑制日志的产生:

将表修改为NOLOGGING,可以只产生少量的Redo日志,从而提高导入效率。在CONTROL文件中的loaddata前边加一行:UNRECOVERABLE,此选项必须要与DIRECT共同使用。对于超大数据文件的导入就要用并发操作了,即同时运行多个导入任务:

表2给出在使用SQL*Loader的过程中,一些常用的需求实现方法。

表3给出了在使用SQL*Loader的过程中,常遇到的错误及其解决方法。

关于SQL*Loader还有很多参数本书不再详述,具体可以参考官方文档。有关如何导出数据到Excel中,本书也不再详述。

3.

什么是Quote(q)语法?正确答案:在SQL查询中,会经常需要原样输出字符串,如果字符串中含有大量的单引号、双引号或者特殊字符,那么需要用单引号转义拼接字符串,这样会非常的麻烦。所以,Oracle提供了一个Q-quote的表达式来原样输出字符串。

需要注意以下几点:

1)Q-quote定界符可以是除了TAB、空格、回车外的任何单字节或多字节字符,包括数字、字母、特殊字符。但'&'不能作为分隔符,因为'&'意思是传入参数。

2)Q'后跟起始分隔符,起始分隔符后的字符串原样输出,起始分隔符必须有配对的结束分隔符。'['、'('、'{'作为分隔符,必须以']'、')'、'}'结束。

4.

怎么捕获用户登录信息,如SID,IP地址等?正确答案:可以利用登录触发器来实现。

5.

怎么捕获整个数据库的DDL语句或者是说捕获对象结构变化与修改?正确答案:可以采用DDL触发器进行捕获。

6.

怎么捕获表上的DML语句?正确答案:可以采用DML触发器进行捕获。

7.

如何实现分组取前3条记录?正确答案:可以利用分析函数,如获取每个部门薪水前三名的员工或每个班成绩前三名的学生,如下:

8.

如何把相邻记录合并到一条记录?正确答案:可以利用分析函数LAG与LEAD,它们可以提取后一条或前一天记录到本记录,如下:

9.

怎么设置存储过程的调用者权限?正确答案:普通存储过程都是定义者权限,如果想设置调用者权限,那么需要声明“AUTHIDCURRENT_USER”,参考如下语句:

10.

Oracle中有哪些常用的字符函数?正确答案:常用的有如下几个函数:

1)lower(char):将字符串全部转化为小写的格式。

2)upper(char):将字符串全部转化为大写的格式。

3)initcap('SQLcourse'):每个单词的首字母大写,其余变为小写,结果:SqlCourse。

4)concat('Hello','World'):字符串连接,结果:HelloWorld。

5)length(char):返回字符串的长度。

6)substr(char,m,n):取字符串的子串,m表示起点,n代表取n个字符的意思。

7)replace(char1,search_string,replace_string):替换函数。

8)instr(char1,char2,[,n[,m]]):取子串在字符串的位置,特别取某一个特殊字符在原字符串中的位置。

9)trim('

Hello

World

'):前后去掉空格,结果为:“Hello

world”。

10)ltrim('

Hello

World

'):左边去掉空格,结果为:“Hello

World

”。

11)rtrim('

Hello

World

'):右边去掉空格,结果为:“Hello

World”。

12)lpad(salary,10,'*'):左补齐,结果:*****24000。

13)rpad(salary,10,'*'):右补齐,结果:24000*****。

14)chr():将ASCII码转换为字符。

15)ascii():将字符转换为ASCII码。

11.

如何查看存储过程的编译错误?正确答案:在存储过程编译完成后使用SHOWERROR命令即可查看。

12.

如果查询的列中含有特殊字符,如通配符“%”与“_”,那么该如何查询这些特殊字符?正确答案:利用ESCAPE来查询,如下:

13.

如何插入单引号到数据库表中?正确答案:可以用ASCII码处理,其他特殊字符如&也一样,如下:

或者用两个单引号表示一个:

14.

十进制与十六进制如何转换?正确答案:十进制转换为十六进制用TO_CHAR:

十六进制转换为十进制用TO_NUMBER:

15.

如何随机抽取表SCOTT.EMP的前5条记录?正确答案:使用SYS_GUID或DBMS_RANDOM.VALUE函数,如下:

16.

如何抽取重复记录?正确答案:使用ROWID来查询,如下例找出ID重复的记录:

或者,下例找出COL_A和COL_B列重复的记录:

如果想删除重复记录,可以把第一个语句的SELECT替换为DELETE。

17.

怎么快速获得用户下每个表或表分区的记录数?正确答案:可以分析该用户,然后查询USER_TABLES字典,或者采用脚本实现。

18.

SYS_

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论