随笔分类 -  ORACLE

摘要:语法:CHARINDEX (expressionToFind ,expressionToSearch [ ,start_location ] ) 参数: 1)expressionToFind 包含要查找的序列的字符表达式。expressionToFind最多包含 8000 个字符。 2)... 阅读全文
posted @ 2014-05-14 20:43 NW_KNIFE 阅读(491) 评论(0) 推荐(0) 编辑
摘要:1 介绍 这一部分我们主要看看oracle是如何管理权限和角色的,权限和角色的区别在哪里。当刚刚建立用户时,用户没有任何权限,也不能执行任何操作。如果要执行某种特定的数据库操作,则必须为其授予系统的权限;如果用户要访问其它方案的对象,则必须为其授予对象的权限。为了简化权限的管理,可以使用角色。这里我们会详细的介绍。看图:2 权限 权限是指执行特定类型sql命令或是访问其它方案对象的权利,包括系统权限和对象权限两种。 2.1 系统权限 1)系统权限介绍 系统权限是指执行特定类型sql命令的权利。它用于控制用户可以执行的一个或是一组数据库操作。比如当用户具有create table权限时... 阅读全文
posted @ 2014-03-17 21:53 NW_KNIFE 阅读(10425) 评论(0) 推荐(0) 编辑
摘要:问题描述,现在有两台电脑 A 和 B: 1)电脑 A 上有 Oracle11G服务端; ip地址 192.168.1.198; 端口1521; 2)电脑 A 本机连接数据库正常,可以登录及操作等; 3)电脑B配置访问电脑A时报错:ORA-12541:TNS:无监听程序 报这种错的话,网上... 阅读全文
posted @ 2014-03-17 17:28 NW_KNIFE 阅读(10481) 评论(1) 推荐(1) 编辑
摘要:Oracle数据库的物理文件是存储在磁盘上的数据文件、控制文件和日志文件的总称。数据文件和日志文件是数据库中最重要的文件。数据库由若干个表空间组成,表空间由表组成,表由段组成,段由区间组成,区间由数据块组成。那么,数据在数据文件中是如何组织的呢?要了解这些内容我们首先必须理解什么是表空间(tablespace)、段(segment)、区(extent)、块(block),这些都是oracle数据库在数据文件中组织数据的基本单元。 块(block)是数据存储的物理单位,也是数据文件中最基础的单位。数据直接存储在块上,块是oracle空间分配的最小单位。oracle中的块大小常见的有三种:2... 阅读全文
posted @ 2014-03-17 10:18 NW_KNIFE 阅读(5435) 评论(0) 推荐(0) 编辑
摘要:ORACLE中数据字典视图分为3大类, 用前缀区别,分别为:USER,ALL 和 DBA,许多数据字典视图包含相似的信息。 1)USER_*:有关用户所拥有的对象信息,即用户自己创建的对象信息; 2)ALL_*:有关用户可以访问的对象的信息,即用户自己创建的对象的信息加上其他用户创建的对象但该用户有权访问的信息; 3)DBA_*:有关整个数据库中对象的信息;权限范围:DBA_*>= ALL_*>= USER_*关于用户、角色和权限信息的视图如下: (1)all_users视图:可以查看当前用户可以看到的所有用户 (2)dba_users视图:可以查看数据库中所有的用户信息 (3.. 阅读全文
posted @ 2014-03-16 21:49 NW_KNIFE 阅读(959) 评论(0) 推荐(0) 编辑
摘要:本篇主要介绍Oracle 11g中推出的“延迟段创建”(Deferred Segment Creation)特性,以及当我们使用这种特性时,需要注意的问题。 1)Deferred Segment Creation 在Oracle中,“表空间(Tablespace)、段(Segment)、分区(Extent)和块(Block)”是逻辑存储结构的四个层次。对数据表而言,通常是由一个或者多个段对象(分区表)Segment组成。也就是说,在数据表创建的时刻,Oracle会创建一个数据段Segment对象与之对应。 当Segment创建之后,Oracle空间管理机制会根据需要分配至少一个ext... 阅读全文
posted @ 2014-03-16 21:22 NW_KNIFE 阅读(14775) 评论(0) 推荐(2) 编辑
摘要:ORACLE 11G中有个新特性,当表无数据时,不分配segment,以节省空间。解决方法: 1)insert一行,再rollback就产生segment了 该方法是在在空表中插入数据,再删除,则产生segment。导出时则可导出空表。 2)设置deferred_segment_creation参数SQL> show parameter deferred_segment_creation NAME TYPE VALUE ------------------------------------ -------... 阅读全文
posted @ 2014-03-16 18:56 NW_KNIFE 阅读(53666) 评论(0) 推荐(4) 编辑
摘要:在Oracle中,不等号有三种:,!=,^= 例如: select * from test where name'xn'。返回的结果是name不为xn,且name不空的记录。但是这与我们想要得到的结果有出入,因为我们的目的是得到name为xn的全部记录,当然这也包括name为空的记录,所以这些写SQL语句是有问题的。为了解决这个问题,我们可以采用以下两种方案:select * from test where instr(concat(name,'xx'),'xn') = 0 ;select * from test where nvl(name,& 阅读全文
posted @ 2014-03-07 13:13 NW_KNIFE 阅读(12557) 评论(0) 推荐(0) 编辑
摘要:INSTR用法:INSTR(源字符串, 要查找的字符串, 从第几个字符开始, 要找到第几个匹配的序号) 返回找到的位置,如果找不到则返回0. 默认查找顺序为从左到右。当起始位置为负数的时候,从右边开始查找。若起始位置为0,返回值为0。SELECT INSTR('CORPORATE FLOOR', 'OR', 0, 1) FROM DUAL; 返回值为0SELECT INSTR('CORPORATE FLOOR', 'OR', 2, 1) FROM DUAL; 返回值为2SELECT INSTR('CORPORATE FLO 阅读全文
posted @ 2014-03-07 13:11 NW_KNIFE 阅读(6348) 评论(0) 推荐(0) 编辑
摘要:本文转载于http://blog.csdn.net/squirrelRao/article/details/26395711、创建存储过程 create or replace procedure test(var_name_1 in type,var_name_2 out type) as--声明变量(变量名 变量类型)begin--存储过程的执行体end test;打印出输入的时间信息E.g:create or replace procedure test(workDate in Date) isbegindbms_output.putline('The input dat 阅读全文
posted @ 2013-04-27 10:03 NW_KNIFE 阅读(240) 评论(0) 推荐(0) 编辑
摘要:1.创建之前的工作在创建dblink之前,首先要查看用户是否有相应的权限。针对特定的用户,使用 sqlplus user/pwd登录后,执行如下语句:select * from user_sys_privs t where t.privilege like upper('%link%');在sys用户下,显示结果为:SYS CREATE DATABASE LINK NOSYS DROP PUBLIC DATABASE LINK NOSYS CREATE PUBLIC DATABASE LINK NO 可以看出在数据库中dblink有三种权限:CREATE DATABASE LI 阅读全文
posted @ 2013-04-26 20:03 NW_KNIFE 阅读(9132) 评论(0) 推荐(0) 编辑
摘要:delete from i a where a.rowid<(select max(rowid) from i b where a.no=b.no) 阅读全文
posted @ 2013-04-25 21:42 NW_KNIFE 阅读(170) 评论(0) 推荐(0) 编辑
摘要:--A低效率 select t.* from ( select * from GET_ENTER_EXAM_SCORE t where signupyear='2013' and signupseason='春季') t where rownum <100--B高效率 select t.* from ( select b.*,rownum r from (select * from GET_ENTER_EXAM_SCORE a where signupyear='2013' and signupseason='春季' ord 阅读全文
posted @ 2013-04-12 20:23 NW_KNIFE 阅读(2174) 评论(0) 推荐(0) 编辑
摘要:1)查看各表空间分配情况SQL> select tablespace_name, sum(bytes) / 1024 / 1024 from dba_data_files group by tablespace_name; TABLESPACE_NAME SUM(BYTES)/1024/1024------------------------------ --------------------UNDOTBS1 100SYSAUX ... 阅读全文
posted @ 2013-04-12 11:02 NW_KNIFE 阅读(630) 评论(0) 推荐(0) 编辑
摘要:1)查询数据库允许的最大连接数:SQL> select value from v$parameter where name = 'processes'; VALUE--------------------------------------------------------------------------------150 也可以使用下面的sql语句:SQL> show parameter processes; NAME TYPE VALUE--------------------------------... 阅读全文
posted @ 2013-03-16 10:40 NW_KNIFE 阅读(346) 评论(0) 推荐(0) 编辑
摘要:oracle用户创建数据库的导入导出imp/exp,可以在SQLPLUS.EXE或者DOS(命令行)中执行。 导入操作: 1)启动cmd命令窗口,输入命令:sqlplus /nolog 2)输入命令:conn /as sysdba 3)查看我们常规将用户表空间放置的位置:执行如下sql:select name from v$datafile; 上边的sql一般就将你的用户表空间文件位置查出来了,结果如下图 4)创建用户表空间:CREATE TABLESPACE testNS datafile 'E:\APP\ADMINISTRATOR\ORADATA\ORCL\testN... 阅读全文
posted @ 2012-12-22 13:26 NW_KNIFE 阅读(15937) 评论(0) 推荐(0) 编辑
摘要:Oracle权限管理一、权限分类:系统权限:系统规定用户使用数据库的权限。(系统权限是对用户而言)。实体权限:某种权限用户对其它用户的表或视图的存取权限。(是针对表或视图而言的)。二、系统权限管理:1、系统权限分类:DBA:拥有全部特权,是系统最高权限,只有DBA才可以创建数据库结构。RESOURCE:拥有Resource权限的用户只可以创建实体,不可以创建数据库结构。CONNECT:拥有Connect权限的用户只可以登录Oracle,不可以创建实体,不可以创建数据库结构。对于普通用户:授予connect, resource权限。对于DBA管理用户:授予connect,resource, db 阅读全文
posted @ 2012-12-13 11:01 NW_KNIFE 阅读(1013) 评论(0) 推荐(0) 编辑
摘要:具体来说,MERGE语句会检查原数据表记录和目标表记录。如果记录在原数据表和目标表中均存在,则目标表中的记录将被原数据表中的记录所更新(执行Update操作);如果目标表中不存在的某(些)记录,在原数据表中存在,则原数据表的这(些)记录将被插入到目标表中(执行Insert操作)。"merge into exam_date_set using (select ? id from dual) b " + "on (exam_date_set.academyId=b.id) " + "when matched then " + " 阅读全文
posted @ 2012-11-09 15:52 NW_KNIFE 阅读(256) 评论(0) 推荐(0) 编辑
摘要:一. 导出工具 exp1. 它是操作系统下一个可执行的文件 存放目录/ORACLE_HOME/bin exp导出工具将数据库中数据备份压缩成一个二进制系统文件.可以在不同OS间迁移 它有三种模式: a. 用户模式: 导出用户所有对象以及对象中的数据; b. 表模式: 导出用户所有表或者指定的表; c. 整个数据库: 导出数据库中所有对象。2. 导出工具exp交互式命令行方式的使用的例子$exp test/test123@appdbEnter array fetch buffer size: 4096 > 回车Export file: expdat.dmp > m.dmp 生成导出的 阅读全文
posted @ 2012-10-29 11:21 NW_KNIFE 阅读(5390) 评论(0) 推荐(0) 编辑
摘要:1.删除某个用户SQL> conn /as sysdbaConnected.SQL> drop user userName cascade;用户已删除 如果用户无法删除,并报错:ERROR at line 1:ORA-01940: cannot drop a user that is currently connected 通过查看用户的进行,并kill用户进程,然后删除用户。SQL> select sid,serial# from v$session where username='userName'; SID SERIAL#---------- ----- 阅读全文
posted @ 2012-10-29 10:00 NW_KNIFE 阅读(4087) 评论(0) 推荐(0) 编辑