oracle11g教程从入门到精通

oracle11g教程从入门到精通
oracle11g教程从入门到精通

韩顺平—玩转oracle视频教程笔记一:Oracle认证,与其它数据库比较,安装

Oracle安装会自动的生成sys用户和system用户:

(1)sys用户是超级用户,具有最高权限,具有sysdba角色,有create database的权限,该用户默认的密码是change_on_install

(2)system用户是管理操作员,权限也很大。具有sysoper角色,没有create database的权限,默认的密码是manager

(3)一般讲,对数据库维护,使用system用户登录就可以拉

也就是说sys和system这两个用户最大的区别是在于有没有create database的权限。

二: Oracle的基本使用--基本命令

sql*plus的常用命令

连接命令

1.conn[ect]

用法:conn 用户名/密码@网络服务名[as sysdba/sysoper]当用特权用户身份连接时,必须带上as sysdba或是as sysoper

2.disc[onnect]

说明: 该命令用来断开与当前数据库的连接

3.psssw[ord]

说明: 该命令用于修改用户的密码,如果要想修改其它用户的密码,需要用

sys/system登录。

4.show user

说明: 显示当前用户名

5.exit

说明: 该命令会断开与数据库的连接,同时会退出sql*plus

文件操作命令

1.start和@

说明: 运行sql脚本

案例: sql>@ d:\a.sql或是sql>start d:\a.sql

2.edit

说明: 该命令可以编辑指定的sql脚本

案例: sql>edit d:\a.sql,这样会把d:\a.sql这个文件打开

3.spool

说明: 该命令可以将sql*plus屏幕上的内容输出到指定文件中去。

案例: sql>spool d:\b.sql 并输入 sql>spool off

交互式命令

1.&

说明:可以替代变量,而该变量在执行时,需要用户输入。

select * from emp where job='&job';

2.edit

说明:该命令可以编辑指定的sql脚本

案例:SQL>edit d:\a.sql

3.spool

说明:该命令可以将sql*plus屏幕上的内容输出到指定文件中去。

spool d:\b.sql 并输入 spool off

显示和设置环境变量

概述:可以用来控制输出的各种格式,set show如果希望永久的保存相关的设置,可以去修改glogin.sql脚本

1.linesize

说明:设置显示行的宽度,默认是80个字符

show linesize

set linesize 90

2.pagesize说明:设置每页显示的行数目,默认是14

用法和linesize一样

至于其它环境参数的使用也是大同小异

三:oracle用户管理

oracle用户的管理

创建用户

概述:在oracle中要创建一个新的用户使用create user语句,一般是具有dba(数据库管理员)的权限才能使用。

create user 用户名identified by 密码; (oracle有个毛病,密码必须以字母开头,如果以字母开头,它不会创建用户)

给用户修改密码

概述:如果给自己修改密码可以直接使用

password 用户名

如果给别人修改密码则需要具有dba的权限,或是拥有alter user的系统权限

SQL> alter user 用户名identified by 新密码

删除用户

概述:一般以dba的身份去删除某个用户,如果用其它用户去删除用户则需要具有drop user 的权限。

比如drop user 用户名【cascade】

在删除用户时,注意:

如果要删除的用户,已经创建了表,那么就需要在删除的时候带一个参数cascade;

用户管理的综合案例

概述:创建的新用户是没有任何权限的,甚至连登陆的数据库的权限都没有,需要为其指定相应的权限。给一个用户赋权限使用命令grant,回收权限使用命令revoke。

为了给讲清楚用户的管理,这里我给大家举一个案例。

SQL> conn xiaoming/m12;

ERROR:

ORA-01045: user XIAOMING lacks CREATE SESSION privilege; logon denied

警告: 您不再连接到ORACLE。

SQL> show user;

USER 为""

SQL> conn system/p;

已连接。

SQL> grant connect to xiaoming;

授权成功。

SQL> conn xiaoming/m12; //后面的为密码分开来输入。

已连接。

SQL>

注意:grant connect to xiaoming;在这里,准确的讲,connect不是权限,而是角色。。看图:

现在说下对象权限,现在要做这么件事情:

* 希望xiaoming用户可以去查询emp表

* 希望xiaoming用户可以去查询scott的emp表

grant select on emp to xiaoming

* 希望xiaoming用户可以去修改scott的emp表

grant update on emp to xiaoming

* 希望xiaoming用户可以去修改/删除,查询,添加scott的emp表

grant all on emp to xiaoming

* scott希望收回xiaoming对emp表的查询权限

revoke select on emp from xiaoming

//对权限的维护。

* 希望xiaoming用户可以去查询scott的emp表/还希望xiaoming可以把这个权限继续给别人。

--如果是对象权限,就加入with grant option

grant select on emp to xiaoming with grant option

我的操作过程:

SQL> conn scott/tiger;

已连接。

SQL> grant select on scott.emp to xiaoming with grant option;

授权成功。

SQL> conn system/p;

已连接。

SQL> create user xiaohong identified by m123;

用户已创建。

SQL> grant connect to xiaohong;

授权成功。

SQL> conn xiaoming/m12;

已连接。

SQL> grant select on scott.emp to xiaohong;

授权成功。

--如果是系统权限。

system给xiaoming权限时:

grant connect to xiaoming with admin option

问题:如果scott把xiaoming对emp表的查询权限回收,那么xiaohong会怎样?

答案:被回收。

下面是我的操作过程:

SQL> conn scott/tiger;

已连接。

SQL> revoke select on emp from xiaoming;

撤销成功。

SQL> conn xiaohong/m123;

已连接。

SQL> select * from scott.emp;

select * from scott.emp

第1 行出现错误:

ORA-00942: 表或视图不存在

结果显示:小红受到诛连了。

使用profile管理用户口令

概述:profile是口令限制,资源限制的命令集合,当建立数据库的,oracle会自动建立名称为default的profile。当建立用户没有指定profile选项,那么oracle就会将default分配给用

户。

1.账户锁定

概述:指定该账户(用户)登陆时最多可以输入密码的次数,也可以指定用户锁定的时间(天)一般用dba的身份去执行该命令。

例子:指定scott这个用户最多只能尝试3次登陆,锁定时间为2天,让我们看看怎么实现。创建profile文件

SQL> create profile lock_account limit failed_login_attempts 3 password_lock_time 2;

SQL> alter user scott profile lock_account;

2.给账户(用户)解锁

SQL> alter user tea account unlock;

3.终止口令

为了让用户定期修改密码可以使用终止口令的指令来完成,同样这个命令也需要dba的身份来操作。

例子:给前面创建的用户tea创建一个profile文件,要求该用户每隔10天要修改自己的登陆密码,宽限期为2天。看看怎么做。

SQL> create profile myprofile limit password_life_time 10 password_grace_time 2;

SQL> alter user tea profile myprofile;

口令历史

概述:如果希望用户在修改密码时,不能使用以前使用过的密码,可使用口令历史,这样oracle就会将口令修改的信息存放到数据字典中,这样当用户修改密码时,oracle就会对新旧密码进行比较,当发现新旧密码一样时,就提示用户重新输入密码。

例子:

1)建立profile

SQL>create profile password_history limit password_life_time 10 password_grace_time 2 password_reuse_time 10

password_reuse_time //指定口令可重用时间即10天后就可以重用

2)分配给某个用户

删除profile

概述:当不需要某个profile文件时,可以删除该文件。

SQL> drop profile password_history 【casade】

注意:文件删除后,用这个文件去约束的那些用户通通也都被释放了。

加了casade,就会把级联的相关东西也给删除掉

四:oracle表的管理(数据类型,表创建删除,数据CRUD操作)

oracle的表的管理

表名和列的命名规则

必须以字母开头

?长度不能超过30个字符

?不能使用oracle的保留字

?只能使用如下字符 A-Z,a-z,0-9,$,#等

oracle支持的数据类型

字符类

char定长最大2000个字符。

例子:char(10) …小韩?前四个字符放…小韩?,后添6个空格补全如…小韩?

varchar2(20)变长最大4000个字符。

例子:varchar2(10)…小韩? oracle分配四个字符。这样可以节省空间。

clob(character large object) 字符型大对象最大4G

char 查询的速度极快浪费空间,查询比较多的数据用。

varchar 节省空间

数字型

number范围 -10的38次方到 10的38次方

可以表示整数,也可以表示小数

number(5,2)

表示一位小数有5位有效数,2位小数

范围:-999.99到999.99

number(5)

表示一个5位整数

范围99999到-99999

日期类型

date 包含年月日和时分秒 oracle默认格式 1-1月-1999

timestamp 这是oracle9i对date数据类型的扩展。可以精确到毫秒。

图片

blob 二进制数据可以存放图片/声音 4G 一般来讲,在真实项目中是不会把图片和声音真的往数据库里存放,一般存放图片、视频的路径,如果安全需要比较高的话,则放入数据库。

怎样创建表

建表

--学生表

create table student ( ---表名

xh number(4), --学号

xm varchar2(20), --姓名

sex char(2), --性别

birthday date, --出生日期

sal number(7,2) --奖学金

);

--班级表

CREATE TABLE class(

classId NUMBER(2),

cName VARCHAR2(40)

);

修改表

添加一个字段

SQL>ALTER TABLE student add (classId NUMBER(2));

修改一个字段的长度

SQL>ALTER TABLE student MODIFY (xm VARCHAR2(30));

修改字段的类型/或是名字(不能有数据)不建议做

SQL>ALTER TABLE student modify (xm CHAR(30));

删除一个字段不建议做(删了之后,顺序就变了。加就没问题,应为是加在后面)

SQL>ALTER TABLE student DROP COLUMN sal;

修改表的名字很少有这种需求

SQL>RENAME student TO stu;

删除表

SQL>DROP TABLE student;

添加数据

所有字段都插入数据

INSERT INTO student VALUES ('A001', '张三', '男', '01-5月-05', 10); oracle中默认的日期格式‘dd-mon-yy’ dd日子(天) mon 月份 yy 2位的年‘09-6月-99’ 1999年6月9日

修改日期的默认格式(临时修改,数据库重启后仍为默认;如要修改需要修改注册表)

ALTER SESSION SET NLS_DATE_FORMAT ='yyyy-mm-dd';

修改后,可以用我们熟悉的格式添加日期类型:

INSERT INTO student VALUES ('A002', 'MIKE', '男', '1905-05-06', 10); 插入部分字段

INSERT INTO student(xh, xm, sex) VALUES ('A003', 'JOHN', '女');

插入空值

INSERT INTO student(xh, xm, sex, birthday) VALUES ('A004', 'MARTIN', '男', null);

问题来了,如果你要查询student表里birthday为null的记录,怎么写sql 呢?

错误写法:select * from student where birthday = null;

正确写法:select * from student where birthday is null;

如果要查询birthday不为null,则应该这样写:

select * from student where birthday is not null;

修改数据

修改一个字段

UPDATE student SET sex = '女' WHERE xh = 'A001';

修改多个字段

UPDATE student SET sex = '男', birthday = '1984-04-01' WHERE xh = 'A001'; 修改含有null值的数据

不要用 = null 而是用 is null;

SELECT * FROM student WHERE birthday IS null;

删除数据

DELETE FROM student;

删除所有记录,表结构还在,写日志,可以恢复的,速度慢。

Delete 的数据可以恢复。

savepoint a; --创建保存点

DELETE FROM student;

rollback to a; --恢复到保存点

一个有经验的DBA,在确保完成无误的情况下要定期创建还原点。

DROP TABLE student; --删除表的结构和数据;

delete from student WHERE xh = 'A001'; --删除一条记录;

truncate TABLE student; --删除表中的所有记录,表结构还在,不写日志,无法找回删除的记录,速度快。

五:oracle表查询(1)

oracle表基本查询

介绍

在我们讲解的过程中我们利用scott用户存在的几张表(emp,dept)为大家演示如何使用select 语句,select语句在软件编程中非常有用,希望大家好好的掌握。

emp 雇员表

clerk 普员工

salesman 销售

manager 经理

analyst 分析师

president 总裁

mgr 上级的编号

hiredate 入职时间

sal 月工资

comm 奖金

deptno 部门

dept部门表

deptno 部门编号

accounting 财务部

research 研发部

operations 业务部

loc 部门所在地点

salgrade 工资级别

grade 级别

losal 最低工资

hisal 最高工资

简单的查询语句

查看表结构

DESC emp;

查询所有列

SELECT * FROM dept;

切忌动不动就用select *

SET TIMING ON; 打开显示操作时间的开关,在下面显示查询时间。

CREATE TABLE users(userId V ARCHAR2(10), uName V ARCHAR2 (20), uPassw

V ARCHAR2(30));

INSERT INTO users V ALUES('a0001', '啊啊啊啊', 'aaaaaaaaaaaaaaaaaaaaaaa');

--从自己复制,加大数据量大概几万行就可以了可以用来测试sql语句执行效率INSERT INTO users (userId,UNAME,UPASSW) SELECT * FROM users;

SELECT COUNT (*) FROM users;统计行数

查询指定列

SELECT ename, sal, job, deptno FROM emp;

如何取消重复行DISTINCT

SELECT DISTINCT deptno, job FROM emp;

查询SMITH所在部门,工作,薪水

SELECT deptno,job,sal FROM emp WHERE ename = 'SMITH';

注意:oracle对内容的大小写是区分的,所以ename='SMITH'和ename='smith'是不同的

使用算术表达式 nvl null

问题:如何显示每个雇员的年工资?

SELECT sal*13+nvl(comm, 0)*13 "年薪" , ename, comm FROM emp;

使用列的别名

SELECT ename "姓名", sal*12 AS "年收入" FROM emp;

如何处理null值

使用nvl函数来处理

如何连接字符串(||)

SELECT ename || ' is a ' || job FROM emp;

使用where子句

问题:如何显示工资高于3000的员工?

SELECT * FROM emp WHERE sal > 3000;

问题:如何查找1982.1.1后入职的员工?

SELECT ename,hiredate FROM emp WHERE hiredate >'1-1月-1982';

问题:如何显示工资在2000到3000的员工?

SELECT ename,sal FROM emp WHERE sal >=2000 AND sal <= 3000;

如何使用like操作符

%:表示0到多个字符_:表示任意单个字符

问题:如何显示首字符为S的员工姓名和工资?

SELECT ename,sal FROM emp WHERE ename like 'S%';

如何显示第三个字符为大写O的所有员工的姓名和工资?

SELECT ename,sal FROM emp WHERE ename like '__O%';

在where条件中使用in

问题:如何显示empno为7844, 7839,123,456 的雇员情况?

SELECT * FROM emp WHERE empno in (7844, 7839,123,456);

使用is null的操作符

问题:如何显示没有上级的雇员的情况?

错误写法:select * from emp where mgr = '';

正确写法:SELECT * FROM emp WHERE mgr is null;

六:oracle表查询(2)

使用逻辑操作符号

问题:查询工资高于500或者是岗位为MANAGER的雇员,同时还要满足他们的姓名首字母为大写的J?

SELECT * FROM emp WHERE (sal >500 or job = 'MANAGER') and ename LIKE 'J%';

使用order by 字句默认asc

问题:如何按照工资的从低到高的顺序显示雇员的信息?

SELECT * FROM emp ORDER by sal;

问题:按照部门号升序而雇员的工资降序排列

SELECT * FROM emp ORDER by deptno, sal DESC;

使用列的别名排序

问题:按年薪排序

select ename, (sal+nvl(comm,0))*12 "年薪" from emp order by "年薪" asc;

别名需要使用“”号圈中,英文不需要“”号

分页查询

等学了子查询再说吧。。。。。。。。

Clear 清屏命令

oracle表复杂查询

说明

在实际应用中经常需要执行复杂的数据统计,经常需要显示多张表的数据,现在我们给大家介绍较为复杂的select语句

数据分组——max,min,avg,sum,count

问题:如何显示所有员工中最高工资和最低工资?

SELECT MAX(sal),min(sal) FROM emp e;

最高工资那个人是谁?

错误写法:select ename, sal from emp where sal=max(sal);

正确写法:select ename, sal from emp where sal=(select max(sal) from emp);

注意:select ename, max(sal) from emp;这语句执行的时候会报错,说ORA-00937:非单组分组函数。因为max是分组函数,而ename不是分组函数.......

但是select min(sal), max(sal) from emp;这句是可以执行的。因为min和max都是分组函数,就是说:如果列里面有一个分组函数,其它的都必须是分组函数,否则就出错。这是语法规定的问题:如何显示所有员工的平均工资和工资总和?

问题:如何计算总共有多少员工问题:如何

扩展要求:

查询最高工资员工的名字,工作岗位

SELECT ename, job, sal FROM emp e where sal = (SELECT MAX(sal) FROM emp);

显示工资高于平均工资的员工信息

SELECT * FROM emp e where sal > (SELECT A VG(sal) FROM emp);

group by 和having子句

group by用于对查询的结果分组统计,

having子句用于限制分组显示结果。

问题:如何显示每个部门的平均工资和最高工资?

SELECT A VG(sal), MAX(sal), deptno FROM emp GROUP by deptno;

(注意:这里暗藏了一点,如果你要分组查询的话,分组的字段deptno一定要出现在查询的列表里面,否则会报错。因为分组的字段都不出现的话,就没办法分组了)

问题:显示每个部门的每种岗位的平均工资和最低工资?

SELECT min(sal), A VG(sal), deptno, job FROM emp GROUP by deptno, job;

问题:显示平均工资低于2000的部门号和它的平均工资?

SELECT A VG(sal), MAX(sal), deptno FROM emp GROUP by deptno having A VG(sal) < 2000;

对数据分组的总结

1 分组函数只能出现在选择列表、having、order by子句中(不能出现在where中)

2 如果在select语句中同时包含有group by, having, order by 那么它们的顺序是group by, having, order by

3 在选择列中如果有列、表达式和分组函数,那么这些列和表达式必须有一个出现在group by 子句中,否则就会出错。

如SELECT deptno, A VG(sal), MAX(sal) FROM emp GROUP by deptno HA VING A VG(sal) < 2000;

这里deptno就一定要出现在group by 中

多表查询

说明

多表查询是指基于两个和两个以上的表或是视图的查询。在实际应用中,查询单个表可能不能满足你的需求,(如显示sales部门位置和其员工的姓名),这种情况下需要使用到(dept 表和emp表)

问题:显示雇员名,雇员工资及所在部门的名字【笛卡尔集】?

规定:多表查询的条件是至少不能少于表的个数-1 才能排除笛卡尔集

(如果有N张表联合查询,必须得有N-1个条件,才能避免笛卡尔集合)

SELECT e.ename, e.sal, d.dname FROM emp e, dept d WHERE e.deptno = d.deptno;

问题:显示部门号为10的部门名、员工名和工资?

SELECT d.dname, e.ename, e.sal FROM emp e, dept d WHERE e.deptno = d.deptno and e.deptno = 10;

问题:显示各个员工的姓名,工资及工资的级别?

先看salgrade的表结构和记录

SQL>select * from salgrade;

GRADE LOSAL HISAL

------------- ------------- ------------

1 700 1200

2 1201 1400

3 1401 2000

4 2001 3000

5 3001 9999

SELECT e.ename, e.sal, s.grade FROM emp e, salgrade s WHERE e.sal BETWEEN s.losal AND s.hisal;

扩展要求:

问题:显示雇员名,雇员工资及所在部门的名字,并按部门排序?

SELECT e.ename, e.sal, d.dname FROM emp e, dept d WHERE e.deptno = d.deptno ORDER by e.deptno;

(注意:如果用group by,一定要把e.deptno放到查询列里面)

自连接

自连接是指在同一张表的连接查询

问题:显示某个员工的上级领导的姓名?

比如显示员工…FORD?的上级

SELECT worker.ename, boss.ename FROM emp worker,emp boss WHERE worker.mgr = boss.empno AND worker.ename = 'FORD';

子查询

什么是子查询

子查询是指嵌入在其他sql语句中的select语句,也叫嵌套查询。

单行子查询

单行子查询是指只返回一行数据的子查询语句

请思考:显示与SMITH同部门的所有员工?

思路:

1 查询出SMITH的部门号

select deptno from emp WHERE ename = 'SMITH';

2 显示

SELECT * FROM emp WHERE deptno = (select deptno from emp WHERE ename = 'SMITH'); 数据库在执行sql 是从左到右扫描的,如果有括号的话,括号里面的先被优先执行。

多行子查询

多行子查询指返回多行数据的子查询

请思考:如何查询和部门10的工作相同的雇员的名字、岗位、工资、部门号

SELECT DISTINCT job FROM emp WHERE deptno = 10;

SELECT * FROM emp WHERE job IN (SELECT DISTINCT job FROM emp WHERE deptno = 10);

(注意:不能用job=..,因为等号=是一对一的)

在多行子查询中使用all操作符

问题:如何显示工资比部门30的所有员工的工资高的员工的姓名、工资和部门号?SELECT ename, sal, deptno FROM emp WHERE sal > all (SELECT sal FROM emp WHERE deptno = 30);

扩展要求:

大家想想还有没有别的查询方法。

SELECT ename, sal, deptno FROM emp WHERE sal > (SELECT MAX(sal) FROM emp WHERE deptno = 30);

执行效率上,函数高得多

在多行子查询中使用any操作符

问题:如何显示工资比部门30的任意一个员工的工资高的员工姓名、工资和部门号?SELECT ename, sal, deptno FROM emp WHERE sal > ANY (SELECT sal FROM emp WHERE deptno = 30);

扩展要求:

大家想想还有没有别的查询方法。

SELECT ename, sal, deptno FROM emp WHERE sal > (SELECT min(sal) FROM emp WHERE deptno = 30);

多列子查询

单行子查询是指子查询只返回单列、单行数据,多行子查询是指返回单列多行数据,都是针对单列而言的,而多列子查询是指查询返回多个列数据的子查询语句。

请思考如何查询与SMITH的部门和岗位完全相同的所有雇员。

SELECT deptno, job FROM emp WHERE ename = 'SMITH';

SELECT * FROM emp WHERE (deptno, job) = (SELECT deptno, job FROM emp WHERE

ename = 'SMITH');

在from子句中使用子查询

请思考:如何显示高于自己部门平均工资的员工的信息

思路:

1. 查出各个部门的平均工资和部门号

SELECT deptno, A VG(sal) mysal FROM emp GROUP by deptno;

2. 把上面的查询结果看做是一张子表

SELECT e.ename, e.deptno, e.sal, ds.mysal FROM emp e, (SELECT deptno, A VG(sal) mysal FROM emp GROUP by deptno) ds WHERE e.deptno = ds.deptno AND e.sal > ds.mysal;

如何衡量一个程序员的水平?

网络处理能力,数据库,程序代码的优化程序的效率要很高

小总结:

在这里需要说明的当在from子句中使用子查询时,该子查询会被作为一个视图来对待,因此叫做内嵌视图,当在from子句中使用子查询时,必须给子查询指定别名。

注意:别名不能用as,如:SELECT e.ename, e.deptno, e.sal, ds.mysal FROM emp e, (SELECT deptno, A VG(sal) mysal FROM emp GROUP by deptno) as ds WHERE e.deptno = ds.deptno AND e.sal > ds.mysal;

在ds前不能加as,否则会报错(给表取别名的时候,不能加as;但是给列取别名,是可以加as的)

分页查询

按雇员的id号升序取出

oracle的分页一共有三种方式

1.根据rowid来分

select * from t_xiaoxi where rowid in (select rid from (select rownum rn, rid from(select rowid rid, cid from t_xiaoxi order by cid desc) where rownum<10000) where rn>9980) order by cid desc; 执行时间0.03秒

2.按分析函数来分

select * from (select t.*, row_number() over(order by cid desc) rk from t_xiaoxi t) where

rk<10000 and rk>9980;

执行时间1.01秒

3.按rownum来分

select * from (select t.*,rownum rn from(select * from t_xiaoxi order by cid desc)t where rownum<10000) where rn>9980;

执行时间0.1秒

其中t_xiaoxi为表名称,cid为表的关键字段,取按cid降序排序后的第9981-9999条记录,t_xiaoxi表有70000多条记录。

个人感觉1的效率最好,3次之,2最差。

//测试通过的分页查询okokok

select * from (select a1.*, rownum rn from(select ename,job from emp) a1 where

rownum<=10)where rn>=5;

下面最主要介绍第三种:按rownum来分

1. rownum 分页

SELECT * FROM emp;

2. 显示rownum[oracle分配的]

SELECT e.*, ROWNUM rn FROM (SELECT * FROM emp) e;

rn相当于Oracle分配的行的ID号

3.挑选出6—10条记录

先查出1-10条记录

SELECT e.*, ROWNUM rn FROM (SELECT * FROM emp) e WHERE ROWNUM <= 10;

如果后面加上rownum>=6是不行的,

4. 然后查出6-10条记录

SELECT * FROM (SELECT e.*, ROWNUM rn FROM (SELECT * FROM emp) e WHERE ROWNUM <= 10) WHERE rn >= 6;

5. 几个查询变化

a. 指定查询列,只需要修改最里层的子查询

只查询雇员的编号和工资

SELECT * FROM (SELECT e.*, ROWNUM rn FROM (SELECT ename, sal FROM emp) e WHERE ROWNUM <= 10) WHERE rn >= 6;

b. 排序查询,只需要修改最里层的子查询

工资排序后查询6-10条数据

SELECT * FROM (SELECT e.*, ROWNUM rn FROM (SELECT ename, sal FROM emp ORDER by sal) e WHERE ROWNUM <= 10) WHERE rn >= 6;

用查询结果创建新表

这个命令是一种快捷的建表方式

CREATE TABLE mytable (id, name, sal, job, deptno) as SELECT empno, ename, sal, job, deptno FROM emp;

创建好之后,desc mytable;和select * from mytable;看看结果如何?

合并查询

合并查询

有时在实际应用中,为了合并多个select语句的结果,可以使用集合操作符号union,union all,intersect,minus

多用于数据量比较大的数据局库,运行速度快。

1). union

该操作符用于取得两个结果集的并集。当使用该操作符时,会自动去掉结果集中重复行。SELECT ename, sal, job FROM emp WHERE sal >2500

UNION

SELECT ename, sal, job FROM emp WHERE job = 'MANAGER';

2).union all

该操作符与union相似,但是它不会取消重复行,而且不会排序。

SELECT ename, sal, job FROM emp WHERE sal >2500

UNION ALL

SELECT ename, sal, job FROM emp WHERE job = 'MANAGER';

该操作符用于取得两个结果集的并集。当使用该操作符时,会自动去掉结果集中重复行。

3). intersect

使用该操作符用于取得两个结果集的交集。

SELECT ename, sal, job FROM emp WHERE sal >2500

INTERSECT

SELECT ename, sal, job FROM emp WHERE job = 'MANAGER';

4). minus

使用改操作符用于取得两个结果集的差集,他只会显示存在第一个集合中,而不存在第二个集合中的数据。

SELECT ename, sal, job FROM emp WHERE sal >2500

MINUS

SELECT ename, sal, job FROM emp WHERE job = 'MANAGER';

(MINUS就是减法的意思)

创建数据库有两种方法:

1). 通过oracle提供的向导工具。√

database Configuration Assistant 【数据库配置助手】

2).我们可以用手工步骤直接创建。

七:java操作oracle

java连接oracle

介绍:前面我们一直在plsql中操作oracle,那么如何在java 程序中操作数据库呢?下面我们举例说明,写一个java,分页显示emp表的用户信息。

Java代码

1.package com.sp;

2.

3.import java.sql.Connection;

4.import java.sql.DriverManager;

5.import java.sql.ResultSet;

6.import java.sql.Statement;

7.

8.//演示如何使用jdbc_odbc桥连接方式

9.public class TestOracle {

10.

11. public static void main(String[] args) {

12. try {

13.

14. // 1.加载驱动

15. Class.forName("sun.jdbc.odbc.JdbcOdbcDr

iver");

16.

17. // 2.得到连接

18. Connection ct = DriverManager.getCon

nection(

19. "jdbc.odbc:testConnectO

racle", "scott",

20.

21."tiger");

22.

23. // 从下面开始,和SQL Server一模一

24. Statement sm = ct.createStatement();

25. ResultSet rs = sm.executeQuery("sele

ct * from emp");

26. while (rs.next()) {

27. //用户名

28. System.out.println("用户

名:"+rs.getString(2));

29. //默认是从1开始编号的

30. }

31. } catch (Exception e) {

32. e.printStackTrace();

33. }

34. }

35.}

在得到连接那里,要去配置数据源,点击控制面板-->系统和安全-->管理工具-->数据源(ODBC),打开后点添加,如图:

可以看到,有个Oracle in OraDb10g_home1的驱动,它是Oracle安装完后自动加上去的。选中后,点完成,再填如下信息,如图:

这样配好后基本就可以了,但为了安全起见,建议大家测试一下,点击 Test Connection按钮,测试通过后点ok,然后数据源就生成了,如图:

然后把数据源名称写进jdbc.odbc:里。

这里要注意:jdbcodbc能不能远程连接呢?不能远程连接,也就是你这样写的话就意味着java程序和oracle数据库应该是在同一台机器上,因为这里没有指定IP地址,肯定默认就是本地。如果要远程连,就用jdbc,jdbc是可以远程连的。

运行TestOracle.java,控制台输出.......................

Linux系统(X64)安装Oracle11g完整安装教程

Linux系统(X64)安装Oracle11g完整安装图文教程1修改操作系统核心参数(Root用户) 1)修改用户的SHELL的限制,修改 /etc/security/ 文件 输入命令:vi /etc/security/,按i键进入编辑模式,将下列内容加入该文件。 oracle soft nproc 2047 oracle hard nproc 16384 oracle soft nofile 1024 oracle hard nofile 65536 编辑完成后按Esc键,输入“:wq”存盘退出 2)修改/etc/login 文件,输入命令:vi /etc/login,按i键进入编辑模式,将下列内容加入该文件。 session required /lib/security/ session required 编辑完成后按Esc键,输入“:wq”存盘退出 3)修改linux内核,修改/etc/文件,输入命令: vi /etc/ ,按i键进入编辑模式,将下列内容加入该文件 = 6815744 = 1048576 = 2097152 = 48 = 4096 = 250 32000 100 128 = 1024 65500 = 4194304 = 4194304 = 262144 = 1048576 编辑完成后按Esc键,输入“:wq”存盘退出。 注意: = 9000 65500 网络默认9000 65500 4)要使 /etc/ 更改立即生效,执行以下命令。输入:sysctl -p显示如下: linux:~ # sysctl -p = 1 = 1 = 6815744 = 1048576 = 2097152 = 48 = 4096 = 250 32000 100 128 = 1024 65500

oracle11g安装图解

Oracle11G安装图解 进入oracle安装界面,我们选择高级安装 出现选择安装类型,我们选择企业版,至于语言我们不用选择

Oracle 基目录:用于安装各种与ORACLE软件和配置有关的文件的顶级目录。 软件位置:用于存放安装具体ORACLE产品的主目录和路径。在此我们使用默认的配置。 在此ORACLE会选择剩余空间最多的盘作为基目录和安装目录的所在盘。 可以输入一个电子邮件或是metalink接收安全问题通知,在此我直接输入一个 电子邮件,当然也可以是metalink用户信息!

在此是因为我的内存不足,所以会报此提示,那么我们在此调整内存,以满足条件后再继续安装。

装到这个界面,这个问题直接选是,不会影响之后的安装,出现这个问题的原因是因为我的电脑没连接到网络 在此选择安装数据库。 如果是“配置自动存储管理”,则自动存储管理(ASM)可用来自动化和简化对数据文件、控制文件和日志文件的优化布局。自动存储管理(ASM)将每个文件切割成许多小扩展文件,并将它们平均分散在一个磁盘组的所有磁盘上。一旦自动存储管理(ASM)磁盘组建立,创建和删除文件的时候,Oracle数据库都会从磁盘组自动分配存储空间。如果是“仅安装软件”,则只安装ORACLE软件,

在安装之后还需要再运行数据库配置助手创建数据库。 一般用途/事务处理:适合各种用途的预配置数据库。 数据仓库:创建适用于特定需求并运行复杂查询环境。常用于存储并快速访问大量记录数据。 高级:安装结束后运行ORACLE DBCA后,用户才可以配置数据库。 在此我们选择“一般用途/事务处理” 步骤8:单独下一步后,出现“指定数据库配置选项”

Oracle11g安装

小布老师在LINUX系统中安装ORACLE11g的安装文档 2009-11-26 01:03 在说正文之前,也讲些题外的废话. 由于公司ERP系统的平台为RedHat Linux ES4+ORACLE10g,暂时交由我进行维护,所以想借此机会学习一下linux,对自己的要求不高,就是能在LINUX上安装成功ORACLE,然后会备份和恢复数据库.首先就在当当网上买了一本<基于LINUX平台的Oracel Database 10g管理>的书,由清华出版社翻译的,经过一段时间的阅读,可以说对我的学习没有任何实质性的帮助,建议初学者不要买这本书. 我首先尝试的是在红帽LINUX ES4安装ORACLE10g,经过若干天的尝试,同时也下载了许多的资料一步一步的做,最后都是不成功,最主要的是在进入oracle安装的时候,老是检查出来安装的一些RPM包版本不对,人搞得很烦燥,并且本人对LINUX也是一菜鸟,因此在这之后的好长一段时间都没再去尝试了. 最后在https://www.360docs.net/doc/633452360.html,的论坛上看到了小布老师专门给菜鸟制作的视频讲座,才又开始新的学习.终于按照视频里的一步一步,安装成功了11g.其实我的文章就是根据视频里的步骤再复述了一遍,我的最大目的是温习一下安装的过程,让自己更熟练一些.,同时也给同级别的菜鸟一些学习的信心. 操作平台:VMWARE6.0+CentOS4.5.(可在https://www.360docs.net/doc/633452360.html,下载).大家注意,LINUX 版本的不同会给菜鸟带来很多纳闷的困扰,我建议如果想按照这篇文章安装,就一定要下载这个LINUX版本,它是免费的,不会像红帽一样涉及到版权的问题.可以说等于红帽的ES4版本. 数据库版本:ORACLE11G R1(我是在emule上下载的) 辅助软件:SecureCRT Filezella AdobeAcrobatReader 硬件:内存 1GB 硬盘空间>18GB 我下载的是DVD版本的OS,在虚拟机软件中先将OS载入到了光驱中. 在LINUX中,一定要注意大小写.特别是命令. 首先在虚拟机软件中安装CentOS,在安装时, 1 SWAP分区我设置了2048MB即内存的2倍,其它空间都装载到了"/"根目录,共计两个分区 2 配置好静态IP地址 3 选择"自定义安装",安装必需的软件包"GNOME图形界面

Oracle_11g 安装图解(详细版)

Oracle 11g安装图文攻略 呵呵,花了一个多小时,左右把11g安装折腾好了。其中折腾SQL Developer 花了好长时间,总算搞定了。好了,先总结下安装步骤,希望给后面的童鞋提高安装效率。呵呵。 一、Oracle 下载 注意Oracle分成两个文件,下载完后,将两个文件解压到同一目录下即可。路径名称中,最好不要出现中文,也不要出现空格等不规则字符。 官方下地址: https://www.360docs.net/doc/633452360.html,/technetwork/database/enterprise-edition/downloads/ index.html以下两网址来源此官方下载页网。 win 32位操作系统下载地址: https://www.360docs.net/doc/633452360.html,/otn/nt/oracle11g/112010/win32_11gR2_database_ 1of2.zip https://www.360docs.net/doc/633452360.html,/otn/nt/oracle11g/112010/win32_11gR2_database_ 2of2.zip win 64位操作系统下载地址: https://www.360docs.net/doc/633452360.html,/otn/nt/oracle11g/112010/win64_11gR2_database_ 1of2.zip https://www.360docs.net/doc/633452360.html,/otn/nt/oracle11g/112010/win64_11gR2_database_ 2of2.zip 二、Oracle安装 1. 解压缩文件,将两个压缩包一起选择,鼠标右击 -> 解压文件如图

Oracle 11g 64位下载及安装教程(图文并茂)

1、下载Oracle 11g R2 for Windows的版本 下载地址:https://www.360docs.net/doc/633452360.html,/technetwork/database/enterprise-edition/downloads/index.html 其中包括两个压缩包:win64_11gR2_database_1of2.zip,win64_11gR2_database_2of2.zip 2、将两个压缩包解压到同一个目录下,即“database”,然后单击解压目录下的“setup.exe”文件: 3、在出现的“配置安全更新”窗口中,取消“我希望通过My Oracle Support接受安全更新”,单击“下一步”:

4、在“安装选项”窗口中,选择“创建和配置数据库”,单击“下一步”: 5、在“系统类”窗口中,选择“桌面类”,单击“下一步”:

6、在“典型安装”窗口中,选择Oracle的基目录,选择“企业版”和“默认值”并输入统一的密码为:Oracle11g,单击“下一步”: 7、在“先决条件检查”窗口中,单击“下一步”:

8、在“概要”窗口中,单击“完成”,即可进行安装: 9、出现的安装过程如下:

数据库创建完成后,会出现如下“Database Configuration Assistant”界面: 选择“口令管理”,查看并修改以下用户:

(1)普通用户:SCOTT(密码:tiger) (2)普通管理员:SYSTEM(密码:manager) (3)超级管理员:SYS(密码:change_on_install) 修改完成后,单击“确定”。 10、在“完成”窗口中,单击“关闭”即可。 安装完成界面中的内容: Enterprise Manager Database Control URL - (orcl) : https://localhost:1158/em 数据库配置文件已经安装到C:\app\Administrator,同时其他选定的安装组件也已经安装到C:\app\Administrator\product\11.2.0\dbhome_1。 Oracle完成安装后,会在系统中进行服务的注册,在注册的这些服务中有以下两个服务必须启动,否则Oracle将无法正常使用: (1)OracleOraDb11g_home1TNSListener:表示监听服务,如果客户端要想连接到数据库,此服务必须打开。在程序开发中该服务也要起作用。 (2)OracleServiceORCL:表示数据库的主服务,命名规则:OracleService数据库名称。此服务必须打开,否则Oracle根本无法使用。 附: A、32位Oracle 11g Client(win32_11gR2_client.zip)的安装注意点: 在选择安装类型时,选择“管理员”,如下图:

Linux系统最全Oracle11g安装文档

Linux系统(X64)安装Oracle11g基本操作 一、修改操作系统核心参数 在Root用户下执行以下步骤: 1)修改用户的SHELL的限制,修改/etc/security/limits.conf文件,输入命令:vi /etc/security/limits.conf,按i键进入编辑模式,将下列内容加入该文件。 oracle soft nproc 2047 oracle hard nproc 16384 oracle soft nofile 1024 oracle hard nofile 65536 2)修改/etc/pam.d/login 文件,输入命令:vi /etc/pam.d/login,按i键进入编辑模式,将下列内容加入该文件。(用户限制配置文件。要使 /etc/security/limits.conf 文件配置生效,必须要确保 PAM验证模块 pam_limits.so 文件被加入到启动文件中。查看 /etc/pam.d/login 文件中有:session required /lib/security/pam_limits.so,64位地址是: /lib64/security/pam_limits.so 否则本地即使输入正确密码也无法登陆。)(PS我们平常登陆实际上是运行一个程序login来判断我们是不是这个用户,如果是的话就给我们shell;不是的话就进不去。而/etc/pam/login这件文件就是我们验证过程中需要经过哪些模块的认证。根据设定来叛断我们的帐号密码是不是正确,当这个文件有问题的时候,验证就会出错,尽管我的帐号密码是正常的,也进不去。) session required /lib/security/pam_limits.so session required pam_limits.so 编辑完成后按Esc键,输入“:wq”存盘退出 3)修改linux内核,修改/etc/sysctl.conf文件,输入命令: vi /etc/sysctl.conf ,按i键进入编辑模式,将下列内容加入该文件 fs.file-max = 6815744 fs.aio-max-nr = 1048576 kernel.shmall = 2097152 kernel.shmmax = 2147483648 kernel.shmmni = 4096 kernel.sem = 250 32000 100 128

oracle 11g 安装图解

oracle 11g 安装图解 启动OUI后出现“选择安装方式”窗口,我们选择:高级安装 步骤3:出现“选择安装类型”窗口,选择我们需要安装的版本。我们在此肯定是选择企业版。

至于产品语言不用选择,它会根据当前系统的语言自动调整!步骤4:出现“安装位置”窗口

Oracle 基目录:用于安装各种与ORACLE软件和配置有关的文件的顶级目录。 软件位置:用于存放安装具体ORACLE产品的主目录和路径。在此我们使用默认的配置。 在此ORACLE会选择剩余空间最多的盘作为基目录和安装目录的所在盘。 可以输入一个电子邮件或是metalink接收安全问题通知,在此我直接输入一个电子邮件,当然也可以是metalink用户信息!

步骤5:再向下就是对安装环境进行检测,如果不满足条件则会给出相应的提示,如图所示: 在此是因为我的内存不足,所以会报此提示,那么我们在此调整内存,以满足条件后再继续安装。

步骤6:出现“选择配置选项”如图:

在此选择安装数据库。 如果是“配置自动存储管理”,则自动存储管理(ASM)可用来自动化和简化对数据文件、控制文件和日志文件的优化布局。自动存储管理(ASM)将每个文件切割成许多小扩展文件,并将它们平均分散在一个磁盘组的所有磁盘上。一旦自动存储管理(ASM)磁盘组建立,创建和删除文件的时候,Oracle数据库都会从磁盘组自动分配存储空间。 如果是“仅安装软件”,则只安装ORACLE软件,在安装之后还需要再运行数据库配置助手创建数据库。 步骤7:出现“选择数据库配置”窗口,在此需要选择在安装过程中创建的数据库类型。 一般用途/事务处理:适合各种用途的预配置数据库。 数据仓库:创建适用于特定需求并运行复杂查询环境。常用于存储并快速访问大量记录数据。 高级:安装结束后运行ORACLE DBCA后,用户才可以配置数据库。

Oracle 11g安装文档

Oracle 11g数据库安装1.数据库安装 1.1.安装准备 选择Oracle 11g安装程序,进行数据库安装. 安装程序启动后,将会对计算机环境进行检测,将会出现如(图1)的界面 (图1)

1.2.安装方法 Oralce检测完计算机环境后,如果该计算机环境能够安装Oralce 11g, 即会进入Oralce 11g的程序安装界面,如(图2): (图2) 此处, 我们选择高级安装, 以便于稍后的安装过程中,对于我们需要的数据库配置进行相关配置. 选择好了后,点击”下一步”,进入下一步安装操作.

安装方法选择高级安装后, 进入到下一步将要选择数据库的安装类型. (图3) 如(图3)所示,此处,我们选择企业版,该版本具有更好的可靠性,伸缩性以及更好的性能 选择好了后,点击”下一步”,进入下一步安装操作.

接下来,我们需要选择Oracle 11g数据库程序文件的安装位置. (图4) 我们仅需要修改Oracle基目录即可,软件位置中的”名称”以及”路径”会根据Oralce基目录的修改对应自动修改. 注: 在服务器上安装Oracle的时候, Oracle基目录建议选择为C盘,并为Oracle 建立独立的文件目录,如(图4)所示

1.5.先决条件检查 接下来, Oracle安装程序将会对产品特定的先决条件进行自动检查 (图5) 先决条件检查后,部分检查的状态可能会出现”错误”,”未执行”或者”警告”等非正常状态,如(图5)所示. 对于这些状态的检查,我们将其前面的复选框打勾选中,进行手动验证即可,手动验证后,将会如(图6)所示, 状态变为”用户已验证”, 然后,点击”下一步”. (图6)

Oracle 11g安装图解

Oracle 11g安装 安装图解 图解 图解 下载 Oracle e下载 一、Oracl 注意:Oracle分成两个文件,下载完后,将两个文件解压到同一目录下即可。 路径名称中,最好不要出现中文,也不要出现空格等不规则字符。 官方下地址: win 32位操作系统 下载地址: https://www.360docs.net/doc/633452360.html,/otn/nt/oracle11g/112010/win32_11gR2_databa se_1of2.zip https://www.360docs.net/doc/633452360.html,/otn/nt/oracle11g/112010/win32_11gR2_databa se_2of2.zip win 64位操作系统 下载地址: https://www.360docs.net/doc/633452360.html,/otn/nt/oracle11g/112010/win64_11gR2_databa se_1of2.zip https://www.360docs.net/doc/633452360.html,/otn/nt/oracle11g/112010/win64_11gR2_databa se_2of2.zip 安装 二、Oracle安装 1. 解压缩文件,将两个压缩包一起选择, 鼠标右击 -> 解压文件 如图1所示。 图1 解压文件

2.两者解压到相同的路径中,如图2所示。 图2 解压路径 3. 到相应的解压路径上面,找到可执行安装文件【 setup.exe 】双击安装。如图3所示。 图3 安装文件 4. 安装第一步:配置安全更新(电邮可填可不填)。取消下面的“我希望通过My Oracle Support接受安全更新(W)”,如图4所示。

Linux下oracle11g安装手册

Linux下oracle11g安装手册 Oracle安装前准备工作:(很重要) 1、创建Oracle用户 root用户:创建Oracle安装组oinstall,数据库管理员组dba,及oracle用户 # /usr/sbin/groupadd oinstall # /usr/sbin/groupadd dba # /usr/sbin/useradd -g oinstall -G dba oracle(主组oinstall,其它组:dba)给权限 # passwd oracle 2、修改内核参数 root用户:修改/etc/sysctl.conf文件,输入命令vi /etc/sysctl.conf,按i键进入编辑模式,加上如下参数fs.aio-max-nr = 1048576 fs.file-max = 6815744 kernel.shmall = 2097152 kernel.shmmax = 536870912 kernel.shmmni = 4096 kernel.sem = 250 32000 100 128 net.ipv4.ip_local_port_range = 9000 65500 net.core.rmem_default = 262144 net.core.rmem_max = 4194304 net.core.wmem_default = 262144 net.core.wmem_max = 1048586 编辑完成后按Esc键,输入“:wq”存盘退出 为使上述配置生效而不重启系统,执行如下命令 # /sbin/sysctl -p 3、修改用户限制 root用户:修改vi /etc/security/limits.conf文件,加上下面的参数 oracle soft nproc 2047 oracle hard nproc 16384 oracle soft nofile 1024 oracle hard nofile 65536 4、修改用户验证选项 root用户下:修改/etc/pam.d/login文件加上如下参数

Linux操作系统中Oracle11g数据库安装步骤

Linux操作系统中Oracle11g数据库安装步骤 Linux操作系统中Oracle11g数据库安装规范 一:数据库安装软件(含补丁)的下载说明 Oracle数据库安装软件获得途径: 1、可以通过ftp的方式上传至服务器 2、Oracle官方网站下载:(从11.2.0.2开始ORACLE不再提供升级patch,只提供完整的安装包) 二:数据库版本规定 本安装规范所针对的Oracle数据库版本为:Oracle 11.2.0.3.0 三:安装环境需求 1、系统硬件需求 系统必须满足下列最小硬件要求 内存需求 系统架构要求 磁盘空间需求 显示需求 硬件系统基本需求参照表

2、操作系统版本及补丁矩阵 Oracle 11gR2要求OS至少为RHEL4.7,内核为Kernel 2.6.9 作为生产系统,我们要求使用RHEL 5.6 64位版本,即: Red Hat Enterprise Linux AS release 5 Update 5 x86_64 需要安装以下RPM软件包(加32bit括号注解的是该软件包32位版本,对应同名未加注解的则是该软件包64位版本。在64位版本平台上,两种版本都要安装): 1 binutils-2.17.50.0.6

2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 compat-libstdc++-33-3.2.3 compat-libstdc++-33-3.2.3 (32 bit) elfutils-libelf-0.125 elfutils-libelf-devel-0.125 gcc-4.1.2 gcc-c++-4.1.2 glibc-2.5-24 glibc-2.5-24 (32 bit) glibc-common-2.5 glibc-devel-2.5 glibc-devel-2.5 (32 bit) glibc-headers-2.5 ksh-20060214 libaio-0.3.106 libaio-0.3.106 (32 bit) libaio-devel-0.3.106 libaio-devel-0.3.106 (32 bit) libgcc-4.1.2 libgcc-4.1.2 (32 bit) libstdc++-4.1.2 libstdc++-4.1.2 (32 bit) libstdc++-devel 4.1.2 make-3.81 sysstat-7.0.2

Oracle11g数据库基础教程-参考答案

Oracle11g数据库基础教程 参考答案

第1章Oracle 11g数据库安装与配置1.简答题 (1) 企业版数据库服务器包含所有的数据库组件,主要针对高端的应用环境,适用于安全性和性能要求较高的联机事务处理(OLTP)、查询密集型的数据仓库和要求较高的Internet应用程序:标准版数据库服务器提供大部分核心的数据库功能和特性,适合于工作组或部门级的应用程序:个人版数据库服务器只提供基本数据库管理功能和特性,适合单用户的开发环境,为用户提供开发测试平台。 (2) 常用数据库类型包括事务处理类、数据仓库类以通用类型。其中事务处理类型主要针对具有大量并发用户连接,并且用户主要执行简单事务处理的应用环境。事务处理数据库的典型应用有银行系统数据库、Internet电子商务数据库、证券交易系统数据库等。对于需要较高的可用性和事务处理性能、存在大量用户并行访问相同数据以及需要较高恢复性能的数据库环境,事务处理类型的配置可以提供最佳性能;数据仓库类型的数据库主要针对有大量的对某个主题进行复杂查询的应用环境。数据仓库的典型应用有客户订单研究、支持呼叫、销售预测、采购模式以及其他战略性业务问题的历史数据研究。对于需要对大量数据进行快速访问,以及复杂查询的数据库环境,数据仓库类型配置是最佳选择;通用类型配置的数据库是事务处理数据库与数据仓库配置的折衷方案。既可以支持大量并发用户的事务处理,又可以快速对大量历史数据进行复杂的数据扫描和处理。 (3) 数据库名可以由字母、数字、下划线(_)、#和美元符号($)组成,且必须以字母开头,长度不超过30个字符。在单机环境中,可以不设置域名,域名长度不能超过128个字符。Oracle服务标识符(SID)是一个Oracle实例的唯一名称标识,长度不能超过12个字符。(4) ● OracleServiceORCL:数据库服务(数据库实例),是Oracle核心服务,是数据库启 动的基础,只有该服务启动,Oracle数据库才能正常启动。(必须启动) ● OracleOraDb11g_home1TNSListener:监听器服务,该服务只有在远程访问数据库时 才需要(无论远程计算机还是本地计算机,凡是通过Oracle Net网络协议连接数据库都属于远程访问)。(必须启动) ● OracleOraDb11g_home1ConfigurationManager:配置Oracle启动时的参数的服务。(非 必须启动) ● OracleOraDb11g_home1ClrAgent:提供对.NET支持的Oracle数据库扩展服务。(非 必须启动) ● OracleJobSchedulerORCL:数据库作业调度服务。(非必须启动) ● OracleDBConsoleorcl:Oracle控制台服务,即企业管理器服务。只有该服务启动了, 才可以使用Web方式的企业管理器管理数据库。(非必须启动) ● OracleVssWriterORCL:是Oracle对VSS提供支持的服务。(非必须启动) ● OracleMTSRecoveryService:是允许数据库充当一个微软事务服务器、COM/COM+ 对象和分布式环境下的事务资源管理器的服务。

Windows 2008下安装Oracle11gR2

Windows_2008下安装Oracle_11gR2及配置 图解 一、安装环境及准备: 1、安装环境: Windows 2008(企业版); 2、Oracle软件: Oracle 11gR2下载地址 https://www.360docs.net/doc/633452360.html,/otn/nt/oracle11g/112010/win64_11gR2_database_1of 2.zip https://www.360docs.net/doc/633452360.html,/otn/nt/oracle11g/112010/win64_11gR2_database_2of 2.zip 此地址可不注册就下载 3、注意事项: 安装前请先配置好网络环境、IP与主机名请设定好,安装完oracle请尽量 不要修改IP和主机名,另外如需要装oracle客户端,请在安装oracle软 件之前进行安装,且不要放到安装到要安装oracle的目录下; 二、安装步骤: 1、请将下载好的oracle文件压缩包解压(其中有两个,解压在同一文件夹下); 将win64_11gR2_database_2of2\database\stage\Components中的内容拷贝到 win64_11gR2_database_1of2\database\stage\Components中,然后点击 win64_11gR2_database_1of2\database目录下的setup 2、解压好后进入到解压文件下,双机setup.exe 3、下面详解oracle的安装图解: (双机setup.exe后,请耐心等待)

(上图完成后,会弹出此图,点击下一步) (上图完成后,会弹出此图,点击是)

oracle11g在windows2008上安装遇到的问题

故障1: 将 win64_11gR2_database_1of2.zip和win64_11gR2_database_2of2.zip 分别解压后,点开始安装,过程很顺利,到54%时杯具出现了:未找到文件 c:oracle....WFMLRSVCApp.ear。查看install guide找不到解决方法,把2of2的目录拷贝到1of2目录下面,点retry还是不行。 只好中止。重新将两个文件解压到Disk1和Disk2,进行安装,还是不行,出现同样的错误。 最后,把两个文件解压到同一个目录下面,再安装,终于顺利完成了。 故障2: 将文件F:\app\Administrator\product\11.2.0\dbhome_1\bin\ oralbac.dll oradv11.dll移动到 F:\app\Administrator\product\11.2.0\dbhome_1\bin\ oralbac.dll.dbl oradv11.dll.dbl 时出现错误。 是那个文件:C:\app.....必须为空才能安装成功。 故障3: 安装Oracle 11g R2的过程中,在新建数据库实例时出现了该错误,如果选择"忽略"就会出现ora-28000错误。 经网络查询验证,这是属于在前面配置管理员密码的时候,采用了数字开头的密码,Oracle貌似对此不支持,但当时不提示出错,晕倒!据说包含其他非法特殊字符也可能产生此问题。 记录一下,给自己备忘: ORA-00922: 选项缺失或无效 错误原因:一般是语句的语法有问题。比如命名不对,关键字写错等等。对于非标准的命名,一般采用双引号来创建。 解决办法: 标识符命名规则: 1、必须以字母开始。 2、长度不能超过30个单字节字符。 3、只能包括A-Z,a-z,0-9,_,$和#。 4、不能在相同用户下建立两个同名的对象。 5、不能使用保留字和关键字 ORA-28000: 账户锁定

最详细SUSE11上Oracle 11g安装步骤图解新手教程

最详细SUSE11上Oracle 11g安装步骤图解新手教程 启动已经安装好的Suse Enterprise 11 第一件事我要把oracle11g软件给那过去。之前的文章我会采用filezilla去传输,现在我用的是局域网共享。如果对这方面不清楚的可以参考ubuntu 10.04与XP实现网络共享 启动suse的samba服务,service smb start (注:suse里操作samba的命令: # service smb start # /etc/rc.d/smb restart # /etc/init.d/smb restart)

输入 smb://192.168.1.102(ubuntu的IP),输入密码进入 在Ubuntu上共享oracle11g 直接拷贝到suse里面。

开始检测所需RPM包。按照官方文档里的要求,suse需要的rpm包有: SUSE Linux Enterprise Server 11 The following packages (or later versions) must be installed: binutils-2.19 gcc-4.3 gcc-c++-4.3 glibc-2.9 glibc-devel-2.9 ksh-93t libstdc++33-3.3.3 libstdc++43-4.3.3_20081022 libstdc++43-devel-4.3.3_20081022 libaio-0.3.104 libaio-devel-0.3.104 libgcc43-4.3.3_20081022 libstdc++-devel-4.3 make-3.81 sysstat-8.1.5

Oracle 11g详细安装步骤

【知识点1】操作系统准备工作(六步) 一、OS版本限制 oracle 8i oracle 9i rhel 4.x oracle 10G R2 rhel 4.x oracle 11G R2 rhel 5.x oracle 12c 【注1】其中,10g以及之前的版本已经不支持了。 【注2】oracle 版本出现的时期对应的 rhel版本要注意,如:oracle 10G R2版本,官方是不支持装在rhel 5上的。 1

【问题1】8i 9i 后面跟字母i什么意思? 1998年9月,ORACLE公司正式发布ORACLE 8i。 “i”代表Internet,这一版本中添加了大量为支持Internet而设计的特性。 【问题2】10g 11g 后面的g是什么意思,12 c 中的c是什么意思? 2003年9月8日,旧金山举办的ORACLE World大会上,Ellison宣布下一代数据库产品为“ORACLE 10g”。 ORACLE应用服务器10g(ORACLE Application Server 10g)也将作为甲骨文公司下一代应用基础架构软件集成套件。“g”代表“grid ,网格”。 这一版的最大的特性就是加入了网格计算的功能。 c 代表cloud 二、磁盘空间限制 1、oracle是数据库的一款产品软件,然后在这款产品之上,可以建库。 2、两个安装目录 /软件安装目录 /u01/oracle /数据库目录 2

这2个目录安装初期需要大约3.5G,以后再学习备份恢复的课程,又会拷贝出来一份,所以一般留出至少10G 的空间,我们可以设置60G 3、/tmp 安装时会用到临时目录/tmp,产生临时文件,至少400M的空间 4、swap 交换分区 real_memory*2 测试环境可以不满足生产环境尽量满足 2g 4g 4g 8g # free 查看Swap分区 # cat /proc/meminfo 三、软件包依赖 oracle软件是用C语言和JAVA写的,源代码安装需要做编译,所以需要编译器,而且需要动态链接库,所以装OS时选择“开发库”、“开发工具”和“老软件支持” # yum grouplist --- 查看包组 Development Libraries Development Tools 3

Windows 7下安装Oracle 11g相关问题解决方法

Windows 7下安装Oracle 11g相关问题解决方法 时间:2010-04-08 14:06来源:博客园bitsCN编辑字体:[大中小] 很多DBA目前还停留在Oracle 9i或者10g,究其原因有可能是Oracle 11g的价格问题。本文将为大家讲解在Windows 7下安装Oracle 11g,也希望大家能从中看到11g的一些新特点。 前不久卸载掉了自己的Windows Vista系统,装上了Windows7 旗舰版,在装机过程中也遇到了很多问题,有些问题是自己不曾遇到过的,但自己尝试着去解决,一步一步尝试着去努力。自己的不懈努力,也换回了成果。比如在装SQL Server 2005和Oracle 11g时就碰到了问题,在装好SQL Server 2005时,不能附加以前创建好的数据库,后来知道在Windows 7下要以管理员身份运行SQL Server 2005才能附加和创建数据库。以及在装Oracle 11g时,系统不兼容问题,Oracle 11g的系统自检,检查出系统不兼容,就不能往下装数据库,经过自己的尝试和查找在今天下午终于成功装上了Oracle 11g企业版。其实自己觉得在错误中学到的东西远比平时学到的多得多,遇到错误可以自己去尝试着解决,这是一种学习的能力所在,非常能证明一个人的学习和排错能力的强弱,也希望今后自己在学习的道路上能够独立思考,解决问题。下面把自己在装Oracle 11g中遇到的问题和解决方法与大家一起分享。 首先在自己的Windows 7旗舰版上,Oracle 11g在“产品特定的先觉条件检查”时,提示以下错误:

在第一幅图片中,我们可以看到在Oracle在检查操作系统兼容性时,没有通过检查,此时,我们在点击“下一步”进行安装时,是不能安装的,会跳出第二幅图片中的错误提示,所以只能在解决了兼容性问题后,才能安装Oracle。这时,我们先得找到Oracle的安装文件,下面就以我的安装文件的路径进行说明,首先找到路径: ”E:\Oracle Enterprise_Standard Edition_11.1.0.7\database\stage\prereq\db\refhost.xml“。 在找到”refhost.xml“文件后,如果你没有安装XML软件,就以记事本的方式打开该文件,在打开之后我们找到如下节点: 1.{ 2. 3. 4. 5.}

Oracle数据库安装与运维工作指南

Oracle数据库安装及运维工作指南 金蝶软件(中国)有限公司 K3 CLOUD 基础系统部 2017-04-10 张华福

本文主要强调ORACLE 数据库服务器环境的安装软件及版本,以及安装完成后的后续完善工作。以确保数据库以比较完善的状态投入生产,尽可能避免已知的问题影响生产库的运营。文章不涉及到软件的安装方法步骤。 1 服务器系统软件,数据库版本安装推荐: 1 数据库服务器的操作系统,推荐使用 ORACLE LINUX6.8。 2 数据库软件版本,要求安装11204,单节点或RAC环境均可,推荐使用RAC。 2 数据库安装创建完毕后,需要进行下列的完善工作, 1 打上最新的补丁集,如:ORACLE 11204,截止至 2017年4月,ORACLE11204 数据库, 当前最新版本的补丁集为 20161018 日发布的, p2*******_112040_Linux-x86-64_GI_20161018.zip --rac 版本, p2*******_112040_Linux-x86-64_DB_20161018.zip --纯数据库版。 请按照补丁集上的 readme.html,把补丁集打到GI, 数据库上。 2 初始化参数,下面的参数值,只是通常情况下的设置(或可根据服务器的硬件条件自行修改配置),要想系统效率最优,得依据数据库实际的运行情况逐步作微调(注意,下面的命令,在RAC和单节点环境下,稍有不同)。 alter pro LIMIT PASSWORD_LIFE_TIME UNLIMITED; alter system set processes=500 scope=sp'*'; alter system set control_ scope=sp'*'; alter system set open_cursors=300 scope=sp'*'; alter system set session_cached_cursors=300 scope=sp'*'; alter system set audit_trail=NONE scope=sp'*'; alter system set recyclebin=off scope=sp'*'; alter system set log_archive_dest_1='location=use_db_recovery_' scope=both sid='*'; alter system set fast_start_mttr_target = 30 scope=both sid='*'; alter system set streams_pool_size=100m scope=sp'*'; alter system set archive_lag_target = 1200; alter system set "_optimizer_use_feedback"= false scope=sp'*'; alter system set "_optimizer_invalidation_period"=60 scope=both sid='*'; 修改结束后,需重启数据库,才能确保上述修改生效。 3 将数据库设置成归档模式,并开启最小附加日志.

oracle11g安装说明(精简版) (1)

1.Login as root以root身份登录操作系统 configure firewall and selinux 配置防火墙和selinux #iptables –F #/etc/init.d/iptables save #vim /etc/sysconfig/selinux/或vim /etc/selinux/config SELINUX=disabled 2.Check hardware requirements检查硬件需求 2.1 Memory Requirement Minimum: 1 GB of RAM Recommended: 2 GB of RAM or more # grep MemTotal /proc/meminfo Swap 4GB 以上 # grep SwapTotal /proc/meminfo Check memory usage status: # free cat /proc/meminfo grep -E 'MemTotal|SwapTotal' /proc/meminfo 3.3 Package Requirements 开发包需求 1.Configure yum 配置yum库 配置yum库之前先在系统上挂载操作系统光盘 然后执行 #mount /dev/cdrom /mnt #vim /etc/yum.repos.d/local.repo (local=新建的文件名)[base] name=local cdrom baseurl=file:///mnt enabled=1 gpgcheck=0 保存退出 #vi /etc/yum.conf Gpgcheck=0 保存退出 #yum clean all #yum list Dependencies Packages list: 关联包列表 binutils-2.17.50.0.6 compat-libstdc++-33-3.2.3 compat-libstdc++-33-3.2.3 (32 bit)

CentOS6.9安装Oracle 11g R2完整自测

Oracle.DATABASE.11g 安装 本次试用 CentOS6.5 系统,安装 Oracle 之前要注意硬件需求,内存最小为 4GB,虚拟内存为物理内存的两倍,磁盘 40G 左右前期用命令,后期安装需要使用图形化安装,为了方便,全程使用 init5 的图形化界面,需要准备[Oracle 字体库zysong]已支持中文 CentOS6.9.iso / ORACLE_DATABASE_11G.R2.X64.iso 准备阶段 1、设置ip地址: [root@oracledb ~]#vim /etc/sysconfig/network-scripts/ifcfg-eth0 2、查看操作系统版本: [root@oracledb ~]#cat /etc/redhat-release 3、查看系统内核版本信息 [root@oracledb ~]#uname-a

4、查看内存信息 [root@oracledb ~]#grepMemTotal/proc/meminfo 5、查看交换分区 [root@oracledb ~]#grepSwapTotal /proc/meminfo 6、查看磁盘空间 [root@oracledb ~]# df-Th 7、修改主机名 [root@oracledb ~]# vim /etc/sysconfig/network # shutdown -r 否w#重启生效 8、设置域名解析 (添加主机与 IP 的对应关系 )

检查/etc/hosts文件中是否有localhost的记录(指向127.0.0.1即可),若没有的话,在后面配置Oracle监听的时候会出现一些问题,导致无法启动监听。 [root@oracledb ~]# vim /etc/hosts 注意:将主机名对应到真实ip地址,否则oracle有可能将监听程序仅仅建立在127.0.0.1上。passwd:所有的身份验证令牌已经成功更新。 9、调整内核参数 [root@oracledb ~]# vim /etc/sysctl.conf#在文件末尾添加 [root@oracledb ~]# sysctl -p#使内核参数生效 10、资源限制 修改用户的SHELL 的限制,修改/etc/security/limits.conf文件[root@oracledb ~]# vim /etc/security/limits.conf //在文件末尾添加 编辑文件vim/etc/pam.d/login,添加如下行(11gR1有要求,R2没有要求):[root@oracledb ~]# vim/etc/pam.d/login ###session required pam_namespace.so #在此行下面添加

相关文档
最新文档