第一篇:ORACLE服务器个人总结
ORACLE服务器安装
以下如没有特殊声明 均使用默认设置。
安装时的2个重要文件 1:Oracle Net Services9.2.0.1.0->Oracle Net Listener9.2.0.1.0 监听端口 2:Oracle Management Server9.2.0.1.0->Enterprise Manager Client9.2.0.1.0 一个重要地管理程序
安装结束后 根据安装时选择的不同 可能会自动弹出Oracle Enterprise Manager Console配置界面,要求用户 “将数据库添加到树”。主机名:tld_gyf 端口号:1521 SID:tld_gyf 网络服务名:_tld_gyf
创建数据库 开始->程序->Oracle – Oraome92->Configuration and Migration Tools->Database Configuration Assistant 就OK。进入程序后 数据库名:gyf(自定义)其它的按默认就可以 共8步 其中第7步要特别注意,修改内存->自定义->共享池 设为200M JAVA池设为200M 其它默认即可 修改字符集->从字符集列表中选择->US7ASCll 其它默认即可。开始创建数据库(系统自动)然后为数据库建立管理帐户 通常使用SYS用户来维护系统 所以SYS和SYSTEM都使用相同用户名和密码 用户、密码:sys 运行Enterprise Manager Console登陆数据库 用户名、密码 SYS 连接身份 SYSDBA。进入数据库后
先建立表空间:存储->表空间->右键 创建->在名称处写入表空间名称 在下边的窗口中双击文件大小 在弹出的窗口中修改文件大小和是否限制增长(在存储选单中)。创建完表空间后 就可以创建用户了.再建立用户:安全性->用户->右键 创建->输入名称 通常用户名与表空间名称相同(便于识别)口令和用户名称是连接数据库时必须提供的 所以要记住 表空间处选择刚建立的表空间名。然后在角色选单中 为新建的用户分配权限 统称为DBA(管理者)注:删除用户 操作顺序:首先删除要删除的用户的表空间,再删除用户。某些用户名建立后 不能删除 原因未知 第一次建立一个USER用户 删除不掉,后来重新装ORACLE后 有建立了一个BBB用户 顺利删除。也许ORACLE对USER有限制吧。
现在就可以用前台软件 连接ORACLE了。ORACLE9i与PB9.0连接:
在PB的Database中 选择090 Oracle 9.0.1中右键 New profile->进行配置 步骤如下:
在Connection选单中
Profile Name:随便取个名字 显示在PB的datebase列表中。
Server:数据库名 Login ID:登陆数据库的用户名 Password:密码 在System选单中:
PowerBuilder Catalog Table Owner: 登陆数据库的用户名
Table Owner:表的所有者(就是登陆数据库的用户名)做完这些就可以测试连接了。在Preview中 Test Connection测试就可以了。
ORACLE升级:
进行ORACLE升级前 要关闭所有ORACLE服务。ORACLE9.2.0.8升级包的安装
1正确安装ORACLE9.2.0.1的服务器和客户端,并成功创建一个数据库
2关闭数据库,停掉所有与ORACLE有关的服务,备份系统(已安装的ORACLE)(推荐)。
3运行升级包中的SETUP.EXE,启动UNIVERSAL INSTALLER,按步骤一步步的完成升级包的安装(在指定文件位置处 注意修改目标名称)
4安装后的工作:
a)检查system表空间,确保该表空间有不少于10MB 的剩余空间。(推荐100M剩余空间)b)检查XDB表空间,确保该表空间有不少于50MB的剩余空间。(推荐100M剩余空间)//数据库中打开表空间
c)设置共享池和JAVA池的大小,每个不少于150MB(推荐200MB)。//在数据库上点右键 查询修改信息
设置方法如下:
在命令提示符模式下(***开启ORACLE监听服务和数据库服务***)
1)c:sqlplus /nolog
2)sql>conn sys/sys_password as sysdba //sys:系统用户名 sys_password:系统用户名密码
===== 3)sql>startup //启动服务(如果是服务关闭的话)
4)sql>alter system set shared_pool_size=’200M’ scope=spfile;
5)sql>alter system set Java_pool_size=’200M’ scope=spfile;//3、4、5步可以在数据库中存储-表中完成。
空间完成操作。
===== 6)sql>shutdown //如果服务已经启动 则可以使用这个命令关闭服务,然后用第7条语句开启服务。
7)sql>startup migrate
8)sql>spool d:patch.log
9)sql>@安装路径rdbmsadmincatpatch.sql //例如:E:oracleora92 耐心等待 估计要40分钟左右 计算机配置 P42.4G 内存512M DDR
10)sql>spool off
检查patch.log文件,看是否有错误,如需要的话再重新运行一下6)-10)命令。
11)Sql>shutdown
12)Sql>startup
13)Sql>@安装路径rdbmsadminutlrp.sql //大概要5分钟
个人经验:
在安装服务器时 选择字符集要同时选择字符集所对应的单选框 否则无效。我就吃过这个亏5555 在安装完ORACLE服务器后,可以马上建立数据库。建立完数据库后 不能马上升级服务器。如果强行升级会出现乱码和未知错误,建议重启后再升级服务器。执行第1、2、6、7、8、9、10、11、12、13步。
因为操作过程中的失误 在执行完第8步时 输错了命令 把第13条命令输入 并执行了。命令执行大概不到1分钟就结束了。
没有出现错误提示,继续执行第9、10、11、12条命令 没有错误出现。继续执行13条命令 正常。没有出现任何错误提示。
如果是本机作为服务器和客户端的话 除了在安装服务器时要选择字符集外 还要在安装完成后把客户端的字符集注册表文件导入的注册表中 这样程序中显示的字符才能是正常的。
所谓SYS和SYSTEM用户 实际上就是在建立服务器时 系统要求用户建立的那2个帐号。在启动管理工具等程序时要求用户使用SYS或SYSTEM用户 且要使用DBA模式登陆
数据的导入与导出
ORACLE的导出命令:EXP 用户名/密码@数据库(在本机的tnsnames.ora中写入的数据库服务器名)例如: exp user/user@orcl 从orcl服务器导出数据 根据提示 会选择要导出的数据库 其中user为要登陆的服务器上拥有管理权限的用户名。用SYS用户登陆要加 as sysdba 例:exp user/user@orcl as sqldba。
ORACLE的导入命令:IMP 使用方法与导出命令相同。
连接远程数据库:CONNECT(CONN)使用方法:conn user/user@orcl 同样的user为所要登陆的服务器上的用户 orcl为在本地的tnsnames.ora中写入的服务器名 用SYS用户登陆要加 as sysdba
***在使用下面的语句前要下连接到服务器;SQL语句结尾的分号一定要写*** 查看服务器版本:select comp_name,version from dba_registry;
查看数据库的字符集:select userenv('language')from dual;查询的结果 就是所连接的服务器上的信息,所以在查询前要确定连接的服务器是否正确。关于[T-SQL]存储过程 首先是变量的定义: @ @@ @变量1 int
局部变量
||
@@变量2 varchar(80)
全局变量 至于变量定义的规则 比较多 但与其它语言的变量定义规则相似 不多说了。2 定义存储过程
首先说明一下存储过程地类型:系统存储过程、扩展存储过程和用户自定义存储过程。
永久存储过程与临时存储过程:可以创建一个过程供临时使用,或在一个会话中临时使用(局部临时过程),或在所有会话中临时使用(全局临时过程)。局部临时过程#和全局临 时
过程## 在关闭SQL server后 自动删除。3 语法规则:
CREATE PROCEDURE 过程名 参数1,参数2,参数N[output] AS SQL语句
RETURN 4 举例:
--定义存储过程get_zrz--create procedure get_zrz--@jhtable_jh varchar(80),@from_table varchar(80),@jhtable_zrz varchar(80)output--as--select @jhtable_zrz=zrz from @from_table where jh=@jhtable_jh--return--go--执行存储过程
--declare @jh_zrz varchar(80)--execute get_zrz “杜111”,@jhtable_zrz=@jh_zrz output--print convert(varchar(80),@jh_zrz)1-76
特殊说明:在存储过程中为变量赋值要使用SET 值=@变量 的形式,同样的在使用OUTPUT时也要 值=@变量 OUTPUT,这一点与SQL语句有所区别
--下面的是一个传递2个参数的过程及其调用--create procedure get_zxz--@jht_jh varchar(80),@jhtable_jh varchar(80)output,@jhtable_zxz varchar(80)output--as--set @from_table='jhtable'--select @jhtable_zxz=zxz from jhtable where jh=@jht_jh--set @jht_jh=@jhtable_jh--return--go
--declare @jh_zxz varchar(80),@jh_jh varchar(80)--execute get_zxz “杜111”,@jhtable_zxz=@jh_zxz output,--@jhtable_jh=@jh_jh output--print '井
号:[' + convert(varchar(80),@jh_jh)+ ']'+ char(13)+ '中心站:' +--convert(varchar(80),@jh_zxz)井
号:[杜111] 中心站:七区80#站
--更多值的传递与显示
--建立一个存储过程 在调用此过程时 从井号表中查询得到与所给井号相符的作业区代码、自然站、中心站和区块 CREATE proc get_zzzq @jh varchar(80),@jhtable_jh varchar(80)output,@jhtable_zyqdm varchar(80)output,@jhtable_zrz varchar(80)output,@jhtable_zxz varchar(80)output,@jhtable_qk varchar(80)output as select
@jhtable_jh=@jh,@jhtable_zyqdm=zyqdm,@jhtable_zrz=zrz,@jhtable_zxz=zxz,@jhtable_qk=qk from jhtable where jh=@jh--set return GO
显示查询结果
declare @jh varchar(80),@zyqdm varchar(80),@zrz varchar(80),@zxz varchar(80),@qk varchar(80)execute get_zzzq “杜11”,@jhtable_jh=@jh output,@jhtable_zyqdm=@zyqdm output,@jhtable_zrz=@zrz output,@jhtable_zxz=@zxz output,@jhtable_qk=@qk output print '[井
号]' + convert(varchar(80),@jh)+ char(13)print '[作业区代码]' + convert(varchar(80),@zyqdm)+ char(13)print '[自
然
站]' + convert(varchar(80),@zrz)+ char(13)print '[中
心
站]' + convert(varchar(80),@zxz)+ char(13)print '[区
块]' + convert(varchar(80),@qk)+ char(13)[井
号]杜11 [作业区代码]zyq002 [自
然
站]2-21
[中
心
站]二区21站 [区
块]曙266 在存储过程中 还没与找到如何把表名作为变量放在SQL语句中的方法,大概要用到动态SQL语句吧 个人认为比较难 所以就找了条麻烦的路来代替复杂的路。没有办法 谁叫 “力和距离成反比呢” 呵呵 例子:
--定义存储过程get_zrz create procedure get_z @jhtable_jh varchar(80),@fr_table varchar(80),@jhtable_zrz varchar(80)output as if @fr_table='jhtable' select @jhtable_zrz = zrz from jhtable where jh = @jhtable_jh else select @jhtable_zrz=zrz from jhtable1 where jh= @jhtable_jh return go 结果有2种 分别是: 1:
--执行存储过程
declare @jh_z varchar(80)execute get_z “杜111”,“jhtable”,@jhtable_zrz=@jh_z output print convert(varchar(80),@jh_z)1-76
2:
--执行存储过程
declare @jh_z varchar(80)execute get_z “杜111”,“jhtable1”,@jhtable_zrz=@jh_z output print convert(varchar(80),@jh_z)111
虽然看上去有点乱 不过仔细看看 总是要比动态SQL语句要简单很多的。我在SQL2000的联机帮助文档中找到了些头绪 不过暂时不想过多地研究。现在除了存储过程 还要看PB数据通道呢。
得到某表中的所有列的类型是numeric的列名 select COLUMN_NAME
from INFORMATION_SCHEMA.COLUMNS
where TABLE_NAME = 'jhTable' and data_type = 'numeric'
得到所有列名
select COLUMN_NAME
from INFORMATION_SCHEMA.COLUMNS where TABLE_NAME = 'jhTable' oracle客户端安装
要求:必须在没有安装oracle客户端,oracle数据库的计算机上进行安装。
1、打开 “oracle8客户端”文件夹,双击oracle80.exe安装文件。
2、系统会提示软件安装建议,单击 按钮,继续进行安装。
3、提示“选择安装的目标位置”,点击【浏览】按钮,改变安装目录。
4、单击,采用默认安装路径。
5、提示“选择程序管理器程序组”,单击,采用默认程序组。
6、提示“开始安装”,单击,软件开始进行安装,打开如下图:
7、提示输入“密码”在文本框输入“oracle80”,单击,软件进行安装。
8、提示“安装完成”,单击 按钮。
9、提示“重新启动计算机”,单击,不进行重启。
10、完成以上8个安装步骤,oracle客户端已经成功安装。
物资管理系统的安装
1、双击“物资管理信息系统.exe”如图,打开安装界面,如下图:
2、点击 按钮,进入安装目录选择窗口,如下图:
3、系统默认安装目录为C:Program Fileswzgl,点击【浏览】按钮,选择安装目录(建议不要安装在C盘)。
4、点击 按钮,进入程序管理组界面。
5、点击 按钮,进入准备安装界面。
6、点击 按钮,进入『正在安装』窗口,如下图:
7、安装完成后,点击 按钮,退出安装。
8、成功安装后,桌面上出现 快捷方式图标。
www.xiexiebang.com
tel:0427-7292830
版权所有 2007 盘锦泰利达软件技术有限公司 保留所有权利
第二篇:oracle视图总结
oracle视图总结(转)
视图简介: 视图是基于一个表或多个表或视图的逻辑表,本身不包含数据,通过它可以对表里面的数据进行查询和修改。视图基于的表称为基表。视图是存储在数据字典里的一条select语句。通过创建视图可以提取数据的逻辑上的集合或组合。
视图的优点:
1.对数据库的访问,因为视图可以有选择性的选取数据库里的一部分。2.用户通过简单的查询可以从复杂查询中得到结果。3.维护数据的独立性,试图可从多个表检索数据。4.对于相同的数据可产生不同的视图。
视图的分类:
视图分为简单视图和复杂视图。
两者区别如下:
1.简单视图只从单表里获取数据,复杂视图从多表获取数据; 2.简单视图不包含函数和数据组,复杂视图包含; 3.简单视图可以实现DML操作,复杂视图不可以。
视图的创建:
CREATE [OR REPLACE] [FORCE|NOFORCE] VIEW view_name [(alias[, alias]...)] AS subquery [WITH CHECK OPTION [CONSTRAINT constraint]] [WITH READ ONLY] 其中:
OR REPLACE:若所创建的试图已经存在,ORACLE自动重建该视图; FORCE:不管基表是否存在ORACLE都会自动创建该视图; NOFORCE:只有基表都存在ORACLE才会创建该视图: alias:为视图产生的列定义的别名;
subquery:一条完整的SELECT语句,可以在该语句中定义别名;
WITH CHECK OPTION : 插入或修改的数据行必须满足视图定义的约束; WITH READ ONLY : 该视图上不能进行任何DML操作。
例如: Sql代码
1.CREATE OR
REPLACE
VIEW dept_sum_vw
2.(name,minsal,maxsal,avgsal)
3.AS SELECT d.dname,min(e.sal),max(e.sal),avg(e.sal)
4.FROM
emp e,dept d
5.WHERE e.deptno=d.deptno
6.GROUP BY d.dname;
视图的定义原则:
1.视图的查询可以使用复杂的SELECT语法,包括连接/分组查询和子查询; 2.在没有WITH CHECK OPTION和 READ ONLY 的情况下,查询中不能使用 ORDER BY 子句;
3.如果没有为CHECK OPTION约束命名,系统会自动为之命名,形式为SYS_Cn;4.OR REPLACE选项可以不删除原视图便可更改其定义并重建,或重新授予对象权限。
查询视图:
视图创建成功后,可以从视图中检索数据,这点和从表中检索数据一样。示例:
SQL>SELECT * FROM dept_sum_vw;
修改视图:
通过OR REPLACE 重新创建同名视图即可。
删除视图:
DROP VIEW VIEW_NAME语句删除视图。删除视图的定义不影响基表中的数据。
只有视图所有者和具备DROP VIEW权限的用户可以删除视图。视图被删除后,基于被删除视图的其他视图或应用将无效。
查询视图定义:
SELECT view_name,text from user_views;其中text显示的内容为视图定义的SELECT语句,可通过DESC USER_VIEWS 得到相关信息。
视图上的DML 操作: DML操作应遵循的原则:
1.简单视图可以执行DML操作; 2.在视图包含GROUP 函数,GROUP BY子句,DISTINCT关键字时不能删除数据行; 3.在视图不出现下列情况时可通过视图修改基表数据或插入数据:
a.视图中包含GROUP 函数,GROUP BY子句,DISTINCT关键字; b.使用表达式定义的列; c.ROWNUM伪列。
d.基表中未在视图中选择的其他列定义为非空且无默认值。WITH CHECK OPTION 子句
通过视图执行的INSERTS和UPDATES操作不能创建该视图检索不到的数据行,因为它会对插入或修改的数据行执行完整性约束和数据有效性检查。(也就是说在执行INSERTS、UPDATES时,WHERE条件中除需要INSERT、UPDATE本身的限制条件之外,还需要加上视图创建时的WHERE条件。)
例如:
CREATE OR REPLACE VIEW vw_emp20 AS SELECT * FROM emp WHERE deptno=20 WITH CHECK OPTION constraint vw_emp20_ck;视图 已建立。
查询结果:
SELECT empno,ename,job FROM vw_emp20;EMPNO
ENAME
JOB---------------------
--------------
-------------7369
SMITH
CLERK 7566
JONES
MANAGER 7902
FORD
ANALYST 修改:
UPDATE vw_emp20 SET
deptno=20 WHERE empno=7902;将产生错误:
UPDATE vw_emp20 * ERROR 位于第一行:
ORA-01402:视图WITH CHECK OPTION 违反WHERE 子句
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1,Oracle是可以通过视图来修改Base table的。所谓base table就是用来构建视图的表,也就是视图的数据来源表。但是这种修改是有条件的。比如: create view v_emp as select empno,ename,job,deptno from emp where deptno=10 with check option constraint emp_cnst;如果有这个限制,那么通过视图v_emp 插入数据的deptno字段的值必须是10,否则就会报“ORA-01402: 视图 WITH CHECK OPTIDN 违反 where 子句”的异常。
2,联结视图:
create view dept1_staff as select e.ename, e.empno, e.job, d.deptno, d.dname from emp e,dept d where e.deptno in(10,30)and e.deptno = d.deptno; 将两个表的数据联结起来,看起来应该是一个内联结(Inner joint)。
对于联结视图(Joint view)的修改规则稍显复杂,设计到所谓key_preserved table的概念。通过联结视图来修改基表,只有那些key_preserved 的表才能被修改。上述创建视图语句中emp和dept通过deptno进行联结构成视图时,emp就是key_preserved 表,而dept不是。为什么?因为在dept1_staff 中empno的值唯一的而deptno不是唯一的。所以emp是key_preserved 而dept不是。因此只能通过该视图来修改emp,而不能修改dept的数据。
3,Oracle视图非常强大的功能之一在于其可以创建一个带有错误的视图。比如说视图里的字段在基表里不存在,该视图仍然可以创建成功,但是非法的且无法执行。当基表里加入了该字段,或者说某个字段修改成视图里的该字段名称,那么视图马上就可以成为合法的。这个功能很有意思。例子:
创建基表: create table v_test(name varchar2(32),age number(12));创建带错误的视图:
create force view view_test as select name,age,address from v_test;(注意加上force选项)
由于address字段在v_test里不存在,所以会报warning: View created with compilation errors的警告,而且执行select * from view_test;时会报“ORA-04063: view “SCOTT.VIEW_TEST” 有错误”的异常。但是如果在v_test里加上address字段,那么视图就会合法。对基表进行修改:
alter table v_test add(address varchar2(128));
现在再执行select * from view_test;就会执行成功了。
from:http://www.blogjava.net/jinhualee/archive/2006/07/14/58115.html
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
其他问题总结:
1、视图上是否可以创建索引?
一般视图上不用建立索引,对视图的操作最终会转化为对表的操作。一个讨论:http://www.itpub.net/viewthread.php?tid=150019&extra=&page=1
第三篇:ORACLE培训总结
篇一:oracle培训班总结(听课笔记)oracle北京培训
第一章 oracle10g的安装与基本设置
一、数据库基础部分。
oracle数据库应用系统结构与产品。
sql语言:操作数据库,同时用于数据库管理。(通用部分)sql*plus语言:对sql的扩充,主要增加一些报表。pl/sql语言:过程化语言。数据库分区存储技术。
1、oracle数据库应用系统结构与产品
oracle数据字典有4.2万个。数据字典只记录标识。
结构方面:sql与oracle完成不同,sql可建多个库,结构与oracle明显不同。i:代表internet.c语言结构性最好,计算能力最强。指纹识别系统只能用c.2、pl:procedural language:过程化语言,条件、判断、循环。sql属非过程化语言,只关心结果,不关心过程。
3、数据库分区存储技术(一个表存到多个表空间上)数据库存储数据的最小单位:表。
逻辑空间——>表空间(在物理上与磁盘对应)1 ——>多个磁盘。
一个表可以存在多个磁盘上,但不能存到多个表空间上。集中式存储:安全性不好,i/o不平衡。
数据库的分区存储技术:range、list(oracle 11自动增加)range:可以比大小。
list:不能比大小,例如:人口住址等。
4、数据库存取权限控制。
5、oracle 10g flashback:数据闪回。恢复前提:归档和备份。(1)基于时间的恢复:从5楼到4楼。必须从5楼下到一楼,再从1楼到4楼。逻辑备份: 物理备份:常说的备份点。
不完全恢复:向回倒,不可逆转,日志自动清0,有的数据要丢失。exp、import.(1)基于时间的恢复(2)基于中止(撤消)的恢复。(3)基于事务的恢复。完全恢复。
delete from,rollback能100%恢复。drop,flashback不一定能恢复。
二、程序设计
pl/sql程序设计。存储过程(procedure),函数(function),包(package),数据库触发器(data triggers(枪栓))。
三、系统管理(dba)
1、oracle核心软件安装与产品升级。sun solaris hp ux 国税 aix 银行 tru64 电力 数据库的排序:在临时表空间中进行。8i和9i排序完不释放。10g可自动释放。640万人无人居住,不发生电费。
命令行模式运行速度快,容易发现问题的存在。
oracle占用可用内在的55-57%,所以不要建两个以上的库,oracle按表空间划分用户,sql可建多个库,结构与oracle明显不同。
2、创建主要的数据库存储结构。
划分磁盘空间。
3、数据库权限与角色管理。角色:权限的组合。
4、监视与控制用户对于数据库的操作。
5、数据库的启动与关闭。
6、数据库性能优化与调整。
7、数据库的备份与恢复。
四、基于web应用开发(会话进程)。
会话数(在线数)< 用户数< 进程数在(windows称为服务)< 操作系统核心参数 如何查看修改连接数,进程数及用户数,三者之间有什么关系? show parameter session;最大session数 show parameter process;最大进程数
select count(1)from all_users;查看已安装数据库的用户数 select * from all_users;oracle自带的用户数如何查。
默认的情况下系统中的最大session = min(session ,process * 1.1 + 5)
1、我们把它称为一次对话,或者叫会话。同样,在我们用电脑工作时,打开的一个窗口或一个web页面,我们也可以把它叫做一个“会话”,扩展到一个局域网里面,所有用户要通过防火墙上网,要打开很多个窗口或web页面(即会话),那么,这个防火墙,所能处理的最大会话数量,就是“并发连接数”。
(1)查看oracle 10g数据库会话数 select * from v$session;当前总会话数:select count(*)from v$session;可用总会话数:在sqlplus里查询,show parameter session
2、查看已安装数据库的用户数:select count(1)from all_users;sql>select * from all_users;
3、查看进程数
使用sys,以sysdba权限登录:sql> show parameter processes;
4、$ps –ef | grep oracle 进程,在windows称为服务。实例包括一个内存和进程(在windows中为服务)
按我的理解来说session就等价与一个客户端,它是用户经过用户进程到oracle事例的特定连接.它从用户连接开始一直持续到用户断开连接或退出数据库为止.进程,笼统地认为一个程序有若干进程组成,从os角度讲程序是静态的,而进程是动态的罢了.进程可以分为user process和oracle process.说穿了,进程就是用来执行程序的时候产生的,是一个动态过程.第二章 oracle安装
一、asm(automatic storage management)自动存储管理。oracle10g 新内容。镜像:oracle 10g以后才支持。磁盘组:diskmap 逻辑设备
裸设备:只做分区,不做格式化。看不到文件,在磁盘管理器中才能看到设备,u盘拷贝不了。只能用逻辑手段拷贝:exp rman.二、oltp_数据仓库_全局数据库名_(nts适配器错误_在windows中清理oracle)
1、t----->oltp(on line transaction processing)在线事务处理。网上数据传输量比较大,数据库数据改动大,数据库负荷重,oracle 会设比较大的回退段(rollback segments)和空闲率(pctfree 10%)oracle的块为:8k.它使用了所有的所谓数据的操作 crud(创建、读取、更新、删除)。当数据存储达到一定量的时候,规模就会几乎保持不变,因为可以从存储中删除过期数据。
2、数据仓库
数据仓库改动少,主要为查询速度快服务,用于存历史数据,用来构造决策支持系统。他的回退段和空闲率留的比较少。
数据仓库就完全是一种不同种类的应用程序。它并不是用来运行当前的操作,例如发送邮件。它是用来分析数据并且从现有数据中发现新的价值,主要是用来预测未来的情况。数据仓库并不是解决所有问题的通用结构。它必须集中于某一问题领域,例如航空服务、顾客收益等。数据仓库也有有趣的一面,那就是本身是稳定增长的。数据没有被删除,也不发生变更。我们不需要将冗余数据置于数据库之外(因为加入仓库中的数据经过了数据净化的过程,该过程检查了数据的正确性)来减少复杂性同时增强读取操作的性能。
为了能够对数据仓库中的数据进行分析,数据存储于一个多维结构中,叫做星型模式。如果将星型模式扩展,就会得到雪花模式。
3、全局数据库名:以字母打头,不超过8个。
数据库名不能重名,否则复制数据和同步数据时会出麻烦,数据库安装完后,数据库名不能更改,起名时要慎重。
4、oracle字符集。zh16gbk.5、nts适配器错误。
d:oracleproduct10.2.0db_1networkadminsqlnet.ora 把sqlnet.ora文件中的(nts)改为none,再重新启动oracleconfigudration and mirdatabase config.6、在windows中清理oracle。(1)删除注册表:
regedit-> local machine--> software-->oracle(2)删除oracle服务
regedit-> local machine-->system?currentcontrolset?services?ora*(3)删除oracle事件日志
(4)删除windows安装磁盘中program filesoracle目录。(5)删除oracle菜单。(6)删除oracle环境变量。
控制面板—>系统——>高级——>环境变量。总共删除2项。(7)重新启动操作系统
(8)删除oracle磁盘文件。篇二:oracle数据库学习总结 oracle数据库学习总结 时间过的还真快,不知不觉中就在这里呆了半个月了。这段时间里都在学习oracle数据库的编程,毕竟这是家软件外包公司。像我们这样的新员工也就只能接触到些curd的操作。废话不多说,赶紧来梳理下这半月来学习的知识点.在来公司之前一直都是使用sql server数据库,用sql server也开发了3个小型项目。所以对sql语句以及在数据库中扮演重要作用的存储过程,触发器,视图,主键/外键约束都很熟。但oracle是一个全新的环境,记得刚装上oracle的时候,我都不知道在哪查看自己已经建立好的表格。还好有师傅的帮忙,要不然我还真没这么快就能入门oracle。
学习东西就要学习些能改变自己思维的东西,只有这样才能让自己的眼光比别人更独到,思维比别人更深邃,oracle就是这样的东西。当然做这样的事是要很大的驱动力的呀,如果公司不是都采用oracle来写程序的话,我估计也就懒得学啦。
对于一位程序员来说并不需要完全掌握oracle的所有知识,毕竟自己不是dba。在日常开发中也用不到那些命令和工具,但是有些知识点我们还是必须得熟练的掌握它们。比如:一些基本的ddl和dml语句,存储过程,函数,视图,触发器,序列,游标,自定义类型和包。下面我就把这段时间里学习oracle获得的知识点罗列出来,一是为了方便以后查阅,二是为了和搭档交流学习经验。要适应的一些细节
从sql server转到oracle进行数据库编程,第一道门槛就是语法问题。很多很多的问题都是因为语法而产生的,现将它们统统集合起来并将它们一网打尽之。pl结构。在sql server中,采用的是批处理执行任务的方式,所以可以将多条sql语句选中批量执行,而不用顾忌要在专门的地方声明变量,在专门的地方进行逻辑编码。在oracle中采用的是pl编程方式,必须在专门的地方声明变
循环结构,要达到循环在oracle中有3种方式,各有各的好处,你懂的。它们分别如下: pl结构中的错误处理
就像c#中的try{} catch{}语句块 能捕获错误。写几个例子: helloworld级别的错误抛出例子record类型
oracle中的record类型类似于c语言中的结构体,主要用来接收select语句或游标中返回的数据,下面写个例子:ddl语句
这里的ddl语言主要是指能完成如下工作的ddl语言:创建表,创建表的主/外 键及级联效果,dml语句
select语句。oracle中的select语句的使用方法与sql server差不多,但还是有些不同之处。
篇三:oracle培训心得 oracle培训心得
2010年x月x日至x月x日,我有幸参加了工业和信息化部软件与集成电路促进中心主办的“oracle数据库高级实战培训班”学习交流。首先感谢学校领导给予了我这次学习机会。通过短暂的几天培训,我不仅对oracle知识有了部分的了解,也接受了很多最新的信息。在这次培训中,上课的老师有非常丰富dba经验,他结合他自身的dba工作经历,从oracle体系结构与网络配置、访问控制、事务处理与日志、闪回特性、数据库的备份与恢复和数据库性能监测与调整优化等几个方面对oracle进行了讲解。对课程讲解十分的详细。通过案例示范以及演示,指导我们一步步操作。
oracle主要以操作命令行为主,在学习的过程中,对老师的每一步操作都做好了记录。课堂上按照老师的要求一步步操作,课后按记录的操作步骤和命令反复多次的练习。以此到达了对oracle反复学习,熟悉掌握老师所传授的知识。
短短5天的高强度集中学习,我通过“xxxx”考试,取得了“xxxx”的认证。但是我知道依靠这几天的培训对oracle学习是不行的,还必须在实践中不断地努力,提升自身的专业技术能力。只有在不断的实践练习,才能够深刻了解它的原理和方法。在以后的工作中,我仍会继续学习各种关于oracle数据库的知识、持之以恒,在今后的工作中不断实践、总结、深入学习,全面掌握oracle知识。
第四篇:服务器安全总结
一、系统的安装
1、按照Windows2003安装光盘的提示安装,默认情况下2003没有把IIS6.0安装在系统里面。2、IIS6.0的安装
开始菜单—>控制面板—>添加或删除程序—>添加/删除Windows组件
应用程序 ———ASP.NET(可选)
|——启用网络 COM+ 访问(必选)
|——Internet 信息服务(IIS)———Internet 信息服务管理器(必选)
[医学教育网整理发布]
|——公用文件(必选)
|——万维网服务———Active Server pages(必选)
|——Internet 数据连接器(可选)
|——WebDAV 发布(可选)[医学教育网整理发布]
|——万维网服务(必选)
|——在服务器端的包含文件(可选)
然后点击确定—>下一步安装。(具体见本文附件1)
3、系统补丁的更新
点击开始菜单—>所有程序—>Windows Update
按照提示进行补丁的安装。
4、备份系统
用GHOST备份系统 资料来源 :医 学 教 育网。
5、安装常用的软件
例如:杀毒软件、解压缩软件等;安装完毕后,配置杀毒软件,扫描系统漏洞,安装之后用GHOST再次备份系统。
6、先关闭不需要的端口 开启防火墙 导入IPSEC策略
在”网络连接”里,把不需要的协议和服务都删掉,这里只安装了基本的Internet协议(TCP/IP),由于要控制带宽流量服务,额外安装了Qos数据包计划程序。在高级tcp/ip设置里--“NetBIOS”设置“禁用tcp/IP上的NetBIOS(S)”。在高级选项里,使用“Internet连接防火墙”,这是windows 2003 自带的防火墙,在2000系统里没有的功能,虽然没什么功能,但可以屏蔽端口,这样已经基本达到了一个IPSec的功能。
修改3389远程连接端口 修改注册表.开始--运行--regedit
依次展开 HKEY_LOCAL_MACHINE/SYSTEM/CURRENTCONTROLSET/CONTROL/ TERMINAL SERVER/WDS/RDPWD/TDS/TCP 右边键值中 PortNumber 改为你想用的端口号.注意使用十进制(例 10000)
HKEY_LOCAL_MACHINE/SYSTEM/CURRENTCONTROLSET/CONTROL/TERMINAL SERVER/ WINSTATIONS/RDP-TCP/
右边键值中 PortNumber 改为你想用的端口号.注意使用十进制(例 10000)注意:别忘了在WINDOWS2003自带的防火墙给+上10000端口 修改完毕.重新启动服务器.设置生效.二、用户安全设置
1、禁用Guest账号
在计算机管理的用户里面把Guest账号禁用。为了保险起见,最好给Guest加一个复杂的密码。你可以打开记事本,在里面输入一串包含特殊字符、数字、字母的长字符串,然后把它作为Guest用户的密码拷进去。
2、限制不必要的用户
去掉所有的Duplicate User用户、测试用户、共享用户等等。用户组策略设置相应权限,并且经常检查系统的用户,删除已经不再使用的用户。这些用户很多时候都是黑客们入侵系统的突破口。
3、把系统Administrator账号改名
大家都知道,Windows 2003 的Administrator用户是不能被停用的,这意味着别人可以一遍又一遍地尝试这个用户的密码。尽量把它伪装成普通用户,比如改成Guesycludx。
4、创建一个陷阱用户
什么是陷阱用户?即创建一个名为“Administrator”的本地用户,把它的权限设置成最低,什么事也干不了的那种,并且加上一个超过10位的超级复杂密码。这样可以让那些 Hacker们忙上一段时间,借此发现它们的入侵企图。
5、把共享文件的权限从Everyone组改成授权用户
任何时候都不要把共享文件的用户设置成“Everyone”组,包括打印共享,默认的属性就是“Everyone”组的,一定不要忘了改。
6、开启用户策略
使用用户策略,分别设置复位用户锁定计数器时间为20分钟,用户锁定时间为20分钟,用户锁定阈值为3次。(该项为可选)
7、不让系统显示上次登录的用户名
默认情况下,登录对话框中会显示上次登录的用户名。这使得别人可以很容易地得到系统的一些用户名,进而做密码猜测。修改注册表可以不让对话框里显示上次登录的用户名。方法为:打开注册表编辑器并找到注册表“HKLMSoftwareMicrosoftWindows TCurrentVersionWinlogonDont-DisplayLastUserName”,把REG_SZ的键值改成1。
密码安全设置
1、使用安全密码
一些公司的管理员创建账号的时候往往用公司名、计算机名做用户名,然后又把这些用户的密码设置得太简单,比如“welcome”等等。因此,要注意密码的复杂性,还要记住经常改密码。
2、设置屏幕保护密码
这是一个很简单也很有必要的操作。设置屏幕保护密码也是防止内部人员破坏服务器的一个屏障。
3、开启密码策略
注意应用密码策略,如启用密码复杂性要求,设置密码长度最小值为6位,设置强制密码历史为5次,时间为42天。
4、考虑使用智能卡来代替密码
对于密码,总是使安全管理员进退两难,密码设置简单容易受到黑客的攻击,密码设置复杂又容易忘记。如果条件允许,用智能卡来代替复杂的密码是一个很好的解决方法。
三、系统权限的设置 1、磁盘权限
系统盘及所有磁盘只给 Administrators 组和 SYSTEM 的完全控制权限
系统盘Documents and Settings 目录只给 Administrators 组和 SYSTEM 的完全控制权限
系统盘Documents and SettingsAll Users 目录只给 Administrators 组和 SYSTEM 的完全控制权限
系统盘WindowsSystem32cacls.exe、cmd.exe、net.exe、net1.exe、ftp.exe、tftp.exe、telnet.exe、netstat.exe、regedit.exe、at.exe、attrib.exe、format.com、del文件只给 Administrators 组和SYSTEM 的完全 控制权限
另将
Documents and Settings下所有些目录都设置只给adinistrators权限。并且要一个一个目录查看,包括下面的所有子目录。删除c:inetpub目录
2、本地安全策略设置
开始菜单—>管理工具—>本地安全策略
A、本地策略——>审核策略
审核策略更改
成功 失败
审核登录事件
成功 失败
审核对象访问
失败
审核过程跟踪
无审核
审核目录服务访问
失败
审核特权使用
失败
审核系统事件
成功 失败
审核账户登录事件 成功 失败
审核账户管理
成功 失败
B、本地策略——>用户权限分配
关闭系统:只有Administrators组、其它全部删除。
通过终端服务允许登陆:只加入Administrators,Remote Desktop Users组,其他全部删除
C、本地策略——>安全选项
交互式登陆:不显示上次的用户名
启用
网络访问:不允许SAM帐户和共享的匿名枚举
启用
网络访问:不允许为网络身份验证储存凭证
启用
网络访问:可匿名访问的共享
全部删除
网络访问:可匿名访问的命
全部删除
网络访问:可远程访问的注册表路径
全部删除
网络访问:可远程访问的注册表路径和子路径
全部删除
帐户:重命名来宾帐户
重命名一个帐户
帐户:重命名系统管理员帐户
重命名一个帐户
3、禁用不必要的服务 开始-运行-services.msc TCP/IPNetBIOS Helper提供 TCP/IP 服务上的 NetBIOS 和网络上客户端的 NetBIOS 名称解析的支持而使用户能够共享
文件、打印和登录到网络
Server支持此计算机通过网络的文件、打印、和命名管道共享
Computer Browser 维护网络上计算机的最新列表以及提供这个列表
Task scheduler 允许程序在指定时间运行
Messenger 传输客户端和服务器之间的 NET SEND 和 警报器服务消息
Distributed File System: 局域网管理共享文件,不需要可禁用
Distributed linktracking client:用于局域网更新连接信息,不需要可禁用
Error reporting service:禁止发送错误报告
Microsoft Serch:提供快速的单词搜索,不需要可禁用
NTLMSecuritysupportprovide:telnet服务和Microsoft Serch用的,不需要可禁用
PrintSpooler:如果没有打印机可禁用
Remote Registry:禁止远程修改注册表
Remote Desktop Help Session Manager:禁止远程协助
Workstation 关闭的话远程NET命令列不出用户组
以上是在Windows Server 2003 系统上面默认启动的服务中禁用的,默认禁用的服务如没特别需要的话不要启动。4、修改注册表
修改注册表,让系统更强壮
1、隐藏重要文件/目录可以修改注册表实现完全隐藏 HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindows Current-VersionExplorerAdvancedFolderHi-ddenSHOWALL”,鼠标右击 “CheckedValue”,选择修改,把数值由1改为0
2、防止SYN洪水攻击
HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServicesTcpipParameters 新建DWORD值,名为SynAttackProtect,值为2 新建EnablePMTUDiscovery REG_DWORD 0 新建NoNameReleaseOnDemand REG_DWORD 1 新建EnableDeadGWDetect REG_DWORD 0 新建KeepAliveTime REG_DWORD 300,000 新建PerformRouterDiscovery REG_DWORD 0 新建EnableICMPRedirects REG_DWORD 0
3.禁止响应ICMP路由通告报文
HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServicesTcpipParametersInterfacesinterface 新建DWORD值,名为PerformRouterDiscovery 值为0
4.防止ICMP重定向报文的攻击
HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServicesTcpipParameters 将EnableICMPRedirects 值设为0
5.不支持IGMP协议
HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServicesTcpipParameters 新建DWORD值,名为IGMPLevel 值为0
6、禁止IPC空连接:
cracker可以利用net use命令建立空连接,进而入侵,还有net view,nbtstat这些都是基于空连接的,禁止空连接就好了。
Local_MachineSystemCurrentControlSetControlLSA-RestrictAnonymous 把这个值改成”1”即可。
7、更改TTL值
cracker可以根据ping回的TTL值来大致判断你的操作系统,如:
TTL=107(WINNT);TTL=108(win2000);TTL=127或128(win9x);TTL=240或241(linux);TTL=252(solaris);TTL=240(Irix);
实际上你可以自己改的:HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServicesTcpipParameters:DefaultTTL REG_DWORD 0-0xff(0-255 十进制,默认值128)改成一个莫名其妙的数字如258,起码让那些小菜鸟晕上半天,就此放弃入侵你也不一定哦
8.删除默认共享
有人问过我一开机就共享所有盘,改回来以后,重启又变成了共享是怎么回事,这是2K为管理而设置的默认共享,HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServicesLanmanServerParameters:AutoShareServer类型是REG_DWORD把值改为0即可
9.禁止建立空连接
默认情况下,任何用户通过通过空连接连上服务器,进而枚举出帐号,猜测密码。我们可以通过修改注册表来禁止建立空连接:
Local_MachineSystemCurrentControlSetControlLSA-RestrictAnonymous 的值改成”1”即可。
10、建立一个记事本,填上以下代码。保存为*.bat并加到启动项目中 net share c$ /del net share d$ /del net share e$ /del net share f$ /del net share ipc$ /del net share admin$ /del
5、IIS站点设置:
1、将IIS目录&数据与系统磁盘分开,保存在专用磁盘空间内。
2、启用父级路径
3、在IIS管理器中删除必须之外的任何没有用到的映射(保留asp等必要映射即可)
4、在IIS中将HTTP404 Object Not Found出错页面通过URL重定向到一个定制HTM文件
5、Web站点权限设定(建议)读 允许 写 不允许 脚本源访问 不允许 目录浏览 建议关闭 日志访问 建议关闭 索引资源 建议关闭
执行 推荐选择 “仅限于脚本”
6、建议使用W3C扩充日志文件格式,每天记录客户IP地址,用户名,服务器端口,方法,URI字根,HTTP状态,用户代理,而且每天均要审查日志。(最好不要使用缺省的目录,建议更换一个记日志的路径,同时设置日志的访问权限,只允许管理员和system为Full Control)。
7、程序安全: 1)涉及用户名与口令的程序最好封装在服务器端,尽量少的在ASP文件里出现,涉及到与数据库连接地用户名与口令应给予最小的权限;2)需要经过验证的ASP页面,可跟踪上一个页面的文件名,只有从上一页面转进来的会话才能读取这个页面。3)防止ASP主页.inc文件泄露问题;4)防止UE等编辑器生成some.asp.bak文件泄露问题。
6、IIS权限设置的思路 ?要为每个独立的要保护的个体(比如一个网站或者一个虚拟目录)创建一个系统用户,让这个站点在系统中具有惟一的可以设置权限的身份。
?在IIS的【站点属性或者虚拟目录属性→目录安全性→匿名访问和验证控制→编辑→匿名访问→编辑】填写刚刚创建的那个用户名。
?设置所有的分区禁止这个用户访问,而刚才这个站点的主目录对应的那个文件夹设置允许这个用户访问(要去掉继承父权限,并且要加上超管组和SYSTEM组)。
7、卸载最不安全的组件
最简单的办法是直接卸载后删除相应的程序文件。将下面的代码保存为一个.BAT文件,(以下均以 WIN2000 为例,如果使用2003,则系统文件夹应该是 C:WINDOWS)regsvr32/u C:WINDOWSSystem32wshom.ocx del C:WINDOWSSystem32wshom.ocx regsvr32/u C:WINDOWSsystem32shell32.dll del C:WINNTWINDOWSshell32.dll
然后运行一下,WScript.Shell, Shell.application, WScript.Network就会被卸载了。可能会提示无法删除文件,不用管它,重启一下服务器,你会发现这三个都提示“×安全”了。
8:防止硬盘的非法访问
电脑瘫痪的原因,无非就是操作系统中的一些文件或文件夹被移走或被删除,如果把系统所在的硬盘分区禁用,让电脑盲们无法进入操作系统所在的分区,他就删不了操作系统所在分区的文件或文件夹了,系统也就没事了。
防止别人通过“我的电脑”访问C盘
点击“开始→运行”输入gpedit.msc命令,在打开的组策略编辑器窗口中依次打开“用户配置→管理模板→Windows组件→Windows资源管理器”分支,然后在右边双击“防止从„我的电脑‟访问驱动器”策略项,并在属性设置窗口中选择“已启用”选项,选择要禁止访问的硬盘盘符C盘即可(如图)。
防止别人从“命令提示符”访问C盘
当禁用了通过“我的电脑”访问硬盘后,他人还可以通过“命令提示符”方式进入C盘,所以还应同时禁止通过“命令提示符”访问C盘。方法是在打开的组策略编辑器窗口中依次打开“用户配置→管理模板→系统”分支,然后在右边窗口中将“阻止访问命令提示符”策略项启用即可。
禁止运行“cmd.exe”命令
设置完以上两个策略后,还不能完全防止他人对C盘的访问,原因是登录者仍然可以利用“运行”来执行“cmd.exe”命令,进入“命令提示符”状态,然后再访问C盘。所以,这个命令也应该禁用。方法是在打开的组策略编辑器窗口中依次打开“用户配置→管理模板→系统”分支,然后在右边的窗口中双击“不要运行指定的Windows应用程序”策略项,在该策略项的“属性”窗口中选择“已启用”选项,再单击“显示”按钮,在弹出的“显示内容”对话框中添加“cmd.exe”,这样该应用程序就被禁用了,到此,其他人员就无法访问本地计算机的C盘了。
通过以上的设置以后,我们就可以有效的保护操作系统所在的硬盘分区里的所有文件和文件夹了。我们的操作系统也就安全了。
以上你全做好拉我一般一年内你的服务器终端都是安全的。
第五篇:Oracle数据库 知识点总结
1.constraint约束:
alter table [table_name] add constraint [pk_name] primary key(pkname);//添加主键
alter table [table_name] drop constraint [pk_name];//删除主键
alter table [table_name] add constraint [fk_name] foreign key(fkname)references [tablename](fkname);//添加外
键
alter table [table_name] drop constraint [fk_name];//删除外键
2.union 关键字:
A username, B username
rod
bruce
rose
marina
select username from A
union
select username from B
2、几个高级查询运算词
A: UNION 运算符
UNION 运算符通过组合其他两个结果表(例如 TABLE1 和 TABLE2)并消去表中任何重复行而派生出一个结果表。当
ALL 随 UNION 一起使用时(即 UNION ALL),不消除重复行。两种情况下,派生表的每一行不是来自 TABLE1 就是来 自 TABLE2。
B: EXCEPT 运算符
EXCEPT 运算符通过包括所有在 TABLE1 中但不在 TABLE2 中的行并消除所有重复行而派生出一个结果表。当 ALL 随
EXCEPT 一起使用时(EXCEPT ALL),不消除重复行。
C: INTERSECT 运算符
INTERSECT 运算符通过只包括 TABLE1 和 TABLE2 中都有的行并消除所有重复行而派生出一个结果表。当 ALL 随
INTERSECT 一起使用时(INTERSECT ALL),不消除重复行。
注:使用运算词的几个查询结果行必须是一致的。
3.复合主键一般不设外键
4.组函数也称为聚合函数。
例如:我们把学生可以分为男生和女生两个组,如果想求每组的人数,平均身高,平均年龄等,就需要用到分组函数了。
在SQL中常用的组函数有以下几个:
COUNT():求出全部的记录数
MAX():求出一组中的最大值
MIN():求出一组中的最小值
AVG():求出一组中的平均值
SUM():求和
范例:COUNT()函数
SELECT COUNT(empno)FROM emp;
我们常用COUNT(*),最好能够用字段代替*
范例:MAX()、MIN()函数,求最大最小值,一般是针对于数值的字段的,求出所有员工的的最高工资,和最底工资和平均工
资。
SELECT MAX(sal)最高工资,MIN(sal)最底工资,AVG(sal)平均工资 FROM emp;
范例:求出部门10的所有员工工资的总合
SELECT SUM(sal)工资综合 FROM emp WHERE deptno=10;
如果如下查询输出部门编号和其部门所有员工的工资总和,会产生错误。
SELECT deptno ,SUM(sal)工资综合 FROM emp WHERE deptno=10;
错误: “不是单组分组函数”
发生以上的错误信息,是因为这样的查询需要进行分组统计。
分组统计有其固定的语法格式:
SELECT {DISTINCT} *| 查询列 列别名1,查询列2 列别名2,……
FROM 表名称1 表别名1,表名称2 表别名2,……
{WHERE 条件(s)}
{ORDER BY 排序的字段1,排序的字段2 ASC|DESC}
{GROUP BY 分组字段}
所以老师写的是错的!
5.//从t_student表中删除名字重复的记录的信息
delete from t_student where sid not in(select sid from(select min(sid)sid,sname from t_student group by sname));
// delete from tablename where id not in(select max(id)from tablename group by col1,col2,...)
6.sequence
在oracle中sequence就是序号,每次取的时候它会自动增加。sequence与表没有关系。
(1)
CREATE SEQUENCE seqTest
INCREMENT BY 1--每次加几个
START WITH 1--从1开始计数
NOMAXvalue--不设置最大值
NOCYCLE--一直累加,不循环
CACHE 10;--设置缓存cache个序列,如果系统down掉了或者其它情况将会导致序列不连续,也可以设置为----NOCACHE(2)
定义好sequence后,你就可以用currVal,nextVal取得值。
CurrVal:返回 sequence的当前值
NextVal:增加sequence的值,然后返回 增加后sequence值
eg:
SELECT Sequence名称.CurrVal FROM DUAL;
select seqtest.currval from dual(3)
在Sql语句中可以使用sequence的地方:
-不包含子查询、snapshot、VIEW的 SELECT 语句
-INSERT语句的子查询中
-INSERT语句的values中
-UPDATE 的 SET中
如在插入语句中
insert into 表名(id,name)values(seqtest.Nextval,'sequence 插入测试');
7.范式:
所谓第一范式(1NF)是指在关系模型中,对域添加的一个规范要求,所有的域都应该是原子性的,即数据库表的每一
列都是不可分割的原子数据项,而不能是集合,数组,记录等非原子数据项。即实体中的某个属性有多个值时,必须拆分
为不同的属性。在符合第一范式(1NF)表中的每个域值只能是实体的一个属性或一个属性的一部分。简而言之,第一范式
就是无重复的域。
第二范式(2NF)是在第一范式(1NF)的基础上建立起来的,即满足第二范式(2NF)必须先满足第一范式(1NF)。
第二范式(2NF)要求数据库表中的每个实例或记录必须可以被唯一地区分。选取一个能区分每个实体的属性或属性组,作
为实体的唯一标识。第二范式(2NF)要求实体的属性完全依赖于主关键字。所谓完全依赖是指不能存在仅依赖主关键字一
部分的属性,如果存在,那么这个属性和主关键字的这一部分应该分离出来形成一个新的实体,新实体与原实体之间是一
对多的关系。为实现区分通常需要为表加上一个列,以存储各个实例的唯一标识。简而言之,第二范式就是在第一范式的基础上属性完全依赖于主键。例如在员工表中的身份证号码即可实现每个一员工的区分,该身份证号码即为候选键,任何
一个候选键都可以被选作主键。在找不到候选键时,可额外增加属性以实现区分,如果在员工关系中,没有对其身份证号
进行存储,而姓名可能会在数据库运行的某个时间重复,无法区分出实体时,设计辟如ID等不重复的编号以实现区分,被
添加的编号或ID选作主键。
第三范式(3NF)是第二范式(2NF)的一个子集,即满足第三范式(3NF)必须满足第二范式(2NF)。简而言之,第三范式(3NF)要求一个关系中不包含已在其它关系已包含的非主关键字信息。例如,存在一个部门信息表,其中每个部门
有部门编号(dept_id)、部门名称、部门简介等信息。那么在员工信息表中列出部门编号后就不能再将部门名称、部门简
介等与部门有关的信息再加入员工信息表中。如果不存在部门信息表,则根据第三范式(3NF)也应该构建它,否则就会有
大量的数据冗余。简而言之,第三范式就是属性不依赖于其它非主属性,也就是在满足2NF的基础上,任何非主属性不得传
递依赖于主属性。