
Sqlplus中蕴藏着好多技巧 如果掌握这些技巧 对于在oracle数据库下进行快速开发与有效维护数据库都是有益的 .使用SQLPLUS动态生成批量脚本将spool与select命令结合起来使用 可以生成一个脚本 脚本中包含有可以批量执行某一任务的语句 例 生成一个脚本 删除SCOTT用户下的所有的表 a 创建gen_drop_table sql文件 包含如下语句 SPOOL c:\drop_table sqlSELECT DROP TABLE || table_name || ; FROM user_tables;SPOOL OFFb 以SCOTT用户登录数据库SQLPLUS > @ … \gen_dorp_table sqlc 在c盘根目录下会生成文件drop_table sql文件 包含删除所有表的语句 如下所示:SQL> SELECT DROP TABLE || table_name || ; FROM user_tables; DROPTABLE ||TABLE_NAME|| ; DROP TABLE DEPT;DROP TABLE EMP;DROP TABLE PARENT;DROP TABLE STAT_VENDER_TEMP;DROP TABLE TABLE_FORUM; rows selected SQL> SPOOL OFFd 对生成的drop_table sql文件进行编辑去掉不必要的部分 只留下drop table … 语句e 在scott用户下运行dorp_table sql文件 删除scott用户下所有的表 SQLPLUS > @ c:\dorp_table sql在上面的 *** 作中 在生成的脚本文件中会有多余的字符 如运行的sql语句 标题 或返回的行数 需要我们编辑该脚本后再运行 给实际的 *** 作带来诸多不便 懒惰是人的本性 这促使我们用更简单的办法来实现上面的任务 a 创建gen_drop_table sql文件 包含如下语句 set echo offset feedback offset newpage noneset pagesize set linesize set verify offset pagesize set term offset trims onset linesize set heading offset timing offset verify offset numwidth SPOOL c:\drop_table sqlSELECT DROP TABLE || table_name || ; FROM user_tables;SPOOL OFFb 以SCOTT用户登录数据库SQLPLUS > @ … \gen_dorp_table sqlc 在c盘根目录下会生成文件drop_table sql文件 包含删除所有表的语句 如下所示:DROP TABLE DEPT;DROP TABLE EMP;DROP TABLE PARENT;DROP TABLE STAT_VENDER_TEMP;DROP TABLE TABLE_FORUM;d 在scott用户下运行dorp_table sql文件 删除scott用户下所有的表 SQLPLUS > @ c:\dorp_table sql .将一个表中的数据导出生成一个文本文件 列与列之间以 隔开set echo offset feedback offset newpage noneset pagesize set linesize set verify offset pagesize set term offset trims onset linesize set heading offset timing offset verify offset numwidth SPOOL c:\drop_table sqlselect DEPTNO || || DNAME FROM DEPT;SPOOL OFF将上面的内容保存为一个文本文件后 以scott登录 执行该文件后显示结果 ACCOUNTING RESEARCH SALES OPERATIONS通过上面的两个例子 我们可以将 set echo offset feedback offset newpage noneset pagesize set linesize set verify offset pagesize set term offset trims onset linesize set heading offset timing offset verify offset numwidth SPOOL c:\具体的文件名你要运行的sql语句SPOOL OFF作为一个模版 只要将必要的语句假如这个模版就可以了 在oracle的较新版本中 还可以用set colsep命令来实现上面的功能 SQL> set colsep SQL> select from dept; ACCOUNTING NEW YORK RESEARCH DALLAS SALES CHICAGO OPERATIONS BOSTON aa bb .动态生成spool命令所需的文件名在我们上面的例子中 spool命令所需要的文件名都是固定的 有时我们需要每天spool一次 并且每次spool的文件名都不相同 如文件名包含当天的日期 该如何实现呢?column dat new_value filename;select to_char(sysdate yyyymmddhh mi ) dat from dual;spool c:\&&filename txtselect from dept;spool off; .如何从脚本文件中得到WINDOWS环境变量的值 在windos中 spool c:\temp\%ORACLE_SID% txtselect from dept; spool off在上面的例子中 通过%ORACLE_SID%的方式引用环境变量ORACLE_SID的值 如果ORACLE_SID的值为orcl 则生成的spool文件名为 orcl txt在UNIX中 spool c:\temp\$ORACLE_SID txtselect from dept; spool off在上面的例子中 通过$ORACLE_SID的方式引用环境变量ORACLE_SID的值 如果ORACLE_SID的值为orcl 则生成的spool文件名为 orcl txt .如何指定缺省的编辑脚本的目录在sqlplus中 可以用save命令 将上一条执行的sql语句保存到一个文件中 但是如何设置该文件的缺省目录呢?通过SQL> set editfile c:\temp\file sql 命令 可以设置其缺省目录为c:\tmpe 缺省文件名为file sql .如何除去表中相同的行找到相同的行 SELECT FROM dept aWHERE ROWID <> (SELECT MAX(ROWID)FROM dept bWHERE a deptno = b deptnoAND a dname = b dname Make sure all columns are paredAND a loc = b loc);注释 如果只找deptno列相同的行 上面的查询可以改为 SELECT FROM dept aWHERE ROWID <> (SELECT MAX(ROWID)FROM dept bWHERE a deptno = b deptno)删除相同的行 DELETE FROM dept aWHERE ROWID <> (SELECT MAX(ROWIDFROM dept bWHERE a deptno = b deptnoAND a dname = b dname Make sure all columns are paredAND a loc = b loc);注意 上面并不删除列值为null的行 .如何向数据库中插入两个单引号( )Insert inot dept values( aa bb a b );在插入时 用两个 表示一个 .如何设置sqlplus的搜寻路径 这样在用@命令时 就不用输入文件的全路径 设置SQLPATH环境变量 如 SQLPATH = C:\ORANT\DBS;C:\APPS\SCRIPTS;C:\MYSCRIPTS .@与@@的区别是什么?@等于start命令 用来运行一个sql脚本文件 @命令调用当前目录下的 或指定全路径 或可以通过SQLPATH环境变量搜寻到的脚本文件 @@用在脚本文件中 用来指定用@@执行的文件与@@所在的文件在同一目录 而不用指定全路径 也不从SQLPATH环境变量指定的路径中寻找文件 该命令一般用在嵌套脚本文件中 .&与&&的区别&用来创建一个临时变量 每当遇到这个临时变量时 都会提示你输入一个值 &&用来创建一个持久变量 就像用用define命令或带new_vlaue字句的column命令创建的持久变量一样 当用&&命令引用这个变量时 不会每次遇到该变量就提示用户键入值 而只是在第一次遇到时提示一次 如 将下面三行语句存为一个脚本文件 运行该脚本文件 会提示三次 让输入deptnoval的值 select count() from emp where deptno = &deptnoval;select count() from emp where deptno = &deptnoval;select count() from emp where deptno = &deptnoval;将下面三行语句存为一个脚本文件 运行该脚本文件 则只会提示一次 让输入deptnoval的值 select count() from emp where deptno = &deptnoval;select count() from emp where deptno = &deptnoval;select count() from emp where deptno = &deptnoval; .引入copy的目的Copy命令在两个数据库之间拷贝数据时特别有用 特别是该命令可以在两个数据库之间传递long型字段的数据 缺点 在两个数据库之间传递数据时 有可能丢失精度(lose precision) .问什么在修改大量的行时 我的脚本会变得很慢?当通过PL/SQL块修改一个表中的许多行时 你会创建在表上创建一个cursor 但是只有在你关闭cursor时 才会释放ROLLBACK SEGMENT 这样 当cursor仍然打开时 修改过程会变慢 这是因为数据库不得不搜寻大量的rollback segment以便于维护读一致性 为了避免这样情况 试着在表上加一个标志字段来描述该行是否已经被修改 然后关闭该cursor 然后再打开该cursor 每次可以修改 行 lishixinzhi/Article/program/Oracle/201311/17262
既然楼上已经说了9i之前的,我就说下9i之后的吧!
9i较之于8i更易于管理。
并发集群,8i OPS升级为9i RAC,8i结点间用硬盘交换信息,9i结点间采用高速网线的缓存熔合(Cache Fusion)技术交换信息,交换速度提高100倍以上。
9i可以在线修改内核参数和内存分配,8i不行。
数据文件和表空间管理,8i手工管理,9i自动管理。
9i比8i增强了对ANSI SQL99的支持。
9i比8i增强了故障后的快速恢复(Fast-start)。
8i只支持物理备份(physical backup)数据库,9i还增加了支持逻辑备份(logical backup)数据库,使备份数据库除了作为主数据库的镜像外,还可以提供其他数据服务
Oracle 10g比9i多了哪些新特性?
10g支持网格(Grid),支持自动管理(Automatic Management)。
10g的g是"Grid"缩写,支持网格计算,即,多台结点服务器利用高速网络组成一个虚拟的高性能服务器,负载在整个网格中均衡(Load Balance),按需增删结点,避免单点故障(Single Point of
Faliure)。
安装容易,安装工作量比9i减少了一半。
新增基于浏览器的企业管理器(Enterprise Manager)。
自动存储管理(ASM),增删硬盘不再需要 *** 作系统管理员设置的镜像、负载均衡、物理卷、逻辑卷、分区、文件系统,只要打一条Oracle命令,ASM会自动管理增加或删除的硬盘。
内存自动化,根据需要自动分配和释放系统内存。
SQL性能调整自动化。
免费提供基于浏览器的小应用开发工具Oracle Application Express(原名HTML DB),支持10g和9i R2。
快速纠正人为错误的闪回(Flashback)查询和恢复,可以恢复数据库、表甚至记录。(这个新的功能我觉得非常的好用,它就像windows系统是把东西删除以后放到回收站里,只是重新命了一个名字,
如果你发现删除错了,你可以回收)
数据泵(Data Pump)高速导入、导出数据,比传统方法导出速度快两倍以上,导入速度快15--45倍。
精细审计(Fine-Grained Auditing),记录一切对敏感数据的 *** 作。
存储数据的表空间(Tablespace)跨平台复制,极大的提高数据仓库加载速度。
流(Streams)复制,实现低系统消耗、双向(double-direction)、断点续传(resume from break point)、跨平台(cross platform)、跨数据源的复杂复制。
容灾的数据卫士(Data Guard)增加了逻辑备份功能,备份数据库日常可以运行于只读状态,充分利用备份数据库。
支持许多新EE选件,加强数据库内部管理的“Database Vault”,数据库活动的审计的(Audit Vault),数据仓库构建高级功能(Warehouse Builder Enterprise ETL, Warehouse Builder Data
Quality)
Oracle 11g比10g多了哪些新特性?
11 g扩展了Oracle 独家具有的提供网格计算优势的功能,您可以利用它来提高用户服务水平、减少停机时间以及更加有效地利用IT资源,同时还可以增强全天候业务应用程序的性能、可伸缩性和安全性
。
利用真正应用测试(RAT)尽量降低更改的风险
11 g降低了数据库升级以及其他硬件和 *** 作系统更改的成本,显著简化了更改前后的系统测试以便您可以识别和解决问题。例如:
利用Database Replay,您可以在数据库级别轻松捕获实际的生产负载并在您的测试系统上重新播放,这样您可以全面测试系统更改(包括关键的并发特性)的影响。
SQL Performance Analyzer识别结构化查询语言) SQL(执行计划更改和性能回退。然后,可以使用SQL Tuning Advisor解决识别的问题,方法是还原到原始的执行计划或进一步优化。
利用管理自动化提高DBA 效率
Oracle 数据库11 g继续致力于(从Oracle9i数据库开始一直到Oracle 数据库10 g)显著简化和完全自动化DBA 任务。Oracle数据库11 g中的新功能包括:
利用自学功能自动进行SQL 优化系统全局区(SGA)和程序全局区( PGA)的内存缓存区的自动、统一调整新的advisor用于分区、数据恢复、流性能和空间管理针对自动数据库诊断监视器(ADDM)的增强,能
够提供Oracle 真正应用集群(Oracle RAC)环境中的更好的性能全局视图以及改进的性能比较分析功能。
利用故障诊断快速解决问题
Oracle 数据库11 g中新增的故障诊断功能使客户在发生错误后捕获Oracle
Support所需的数据变得极为简单。这可以加速问题的解决,减少客户重现问题的需要。
尽量降低停机成本
通过Oracle Data Guard快速恢复数据
Oracle Data Guard在本地和远程服务器之间协调数据库的维护和同步以便从灾难或站点故障快速恢复。Oracle数据库11 g提供了大量显著的Oracle Data Guard增强,包括
可以在物理备用系统上运行实时查询用于报表和其他目的
可以通过将物理备用系统暂时转换为逻辑备用系统执行联机的、滚动的数据库升级
支持测试环境的快照备用系统
此外,物理和逻辑备用的性能都有提高。逻辑备用现在支持可扩展标记语言(XML)类型字符大型对象(CLOB)数据类型和透明的数据加密。现在支持自动的、快速启动的故障切换以支持异步传输。
Oracle 数据库11 g提供了几个针对自动存储管理的重要的高可用性增强,
包括:
支持滚动升级;自动坏块检测和修复;快速镜像重新同步,该功能可以有效地重新同步存储网络连接性暂时丢失时自动存储管理镜像的存储阵列
自动存储管理的性能增强使得大型数据库可以更快地打开并减少SGA 内存消耗。这些增强还允许DBA增加存储分配单元大小以加快大型序列输入/输出(I/O)
显著增加正常运行时间
Oracle数据库11 g使您可以应用很多一次性数据库补丁(包括诊断补丁),而没有停机时间。新的数据恢复advisor通过快速识别故障根本原因、为DBA提供可用的恢复选项,极大地减少了停机时间,在
某些情况下,还通过“自我恢复”机制自动纠正问题。
Oracle 数据库11 g还有其他高性能提高,包括:自动编译数据库中的PL/SQL 和Java;更快的触发器,包括更加有效地调用每行触发器;更快的简单SQL *** 作;更快的Oracle Data Guard 和Oracle
Streams 复制;与网络文件系统(NFS) 存储设备更快、更可靠的直接连接;更快的升级;大型文件更快的备份/还原;更快的备份压缩
Oracle 数据库11 g包括大量新的ILM特性,例如
新的分区功能,包括:按父/子引用分区;按虚拟列分区
Oracle数据库11 g还具有带Oracle闪回数据归档的Total Recall,使您可以在选定的表中查询以前的数据,从而提供了一种简单实用的向数据中添加时间维度的方法以便于更改跟踪、ILM、审计和合规。
其他高可用性增强
Oracle 数据库11g还有其他高可用性增强,包括:Oracle闪回事务查询,提供带其他相关事务更改的流氓事务的按钮更改具有更多可传输选项的增强的平台移植和数据移动,包括可传输分区、模式和跨
平台数据库
Oracle恢复管理器(RMAN)支持Windows Volume Shadow Copy Service ( VSS )快照,从而实现与Windows备份更紧密的集成优化性能和可靠性
合规、法律取证以及整合数据仓库的趋势导致数据库的大小每两年就会增加两倍,这极大地影响了大型数据库的存储成本和性能、可靠性以及可管理性。Oracle 数据库11 g使组织可以使用低成本的服务
器和模块化的存储器轻松伸缩大型的事务和数据仓库系统并提供快速的全天候数据访问。Oracle 数据库11 g提供新的创新特性以进一步提高要求极严格的环境的性能和可伸缩性。利用SecureFiles安全
地存储您的所有数据SecureFiles 是Oracle用于在数据库中存储大型对象) LOB (例如图像、大型文本对象或包括XML、医学成像以及地理空间栅格对象在内的高级数据类型)的下一代产品。SecureFiles
提供能够完全与文件系统相媲美的卓越性能。此外,它还提供高级功能,例如智能压缩、透明加密以及透明的重复删除。
通过联机事务处理压缩提高性能并尽量降低存储成本
Oracle 数据库11 g支持联机事务处理(OLAP)应用程序中常用的更新、插入和删除 *** 作的数据压缩。以前的Oracle数据库版本支持数据仓库应用程序常用的批量数据加载 *** 作的压缩。Oracle 数据库11 g
OLTP表压缩通过更加高效地使用内存来缓存数据以及减少表扫描的I/O提高了数据库性能。利用OLTP表压缩,您可以利用最小的处理开销达到2 到3倍的压缩比。
以上就是关于Oracle中SQL*PLUS使用的一些技巧全部的内容,包括:Oracle中SQL*PLUS使用的一些技巧、Oracle一般有哪些版本,各个版本有什么区别呢、等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)