绪论:
1、Oracle,甲骨文,1977年开始研发,总部位于美国加州红木滩市,创始人为Larry Ellison(埃里森) 、
Bob Miner、Ed Oates
2、Oracle服务器=实例+数据库;Oracle实例=内存+后台进程;
第四章:表空间的创建与删除
例4.1 建立名称为data_ts1的数据表空间,大小为50M,区间统一为128KB大小。
SQL> conn system/systempwd@orcl
SQL> drop tablespace data _ts1 including conntents;
SQL> create tablespace data _ts1
2 tempfile ‘ %oracle_home%\database\data_ts1.dbf ’ SIZE 50M REUSE
3 uniform size 128K;
例4.2 建立名称为temp_ts1的临时表空间,使用temp_ts1.dbf文件存放临时数据。
SQL> conn system/systempwd@orcl
SQL> drop tablespace temp_ts1 including conntents;
SQL> create temporary tablespace temp_ts1
2 tempfile ‘ %oracle_home%\database\temp_ts1.dbf ’ size 20M reuse
3 uniform size 128k;
例4.3创建10号部门经理用户EMP_MGR10,指定该用户的数据表空间为data_ts1,临时表空间为temp_ts1。授权该用户可以查看SCOTT用户下雇员表中的记录。
SQL> conn system/systempwd@orcl
SQL> drop user emp_mgr10 cascade;
SQL> create user emp_mgr10 identified by emp_mgr10pwd
2 default tablespace data_ts1 temporary tablespace temp_ts1;
SQL> grant connect to emp_mgr10;
SQL> conn scott/tiger@orcl
4 tempfile ‘ %oracle_home%\database\temp_ts1.dbf ’ size 20M reuse
5 uniform size 128k;
例4.4 创建和应用撤销表空间。
SQL> conn system/systempwd@orcl
SQL> drop tablespace undo_ts1 including conntents;
SQL> create undo tablespace undo_ts1
2 datafile ‘ %oracle_home%\database\undo_ts1.dbf ’ size 50M reuse;
例4.5 创建大文件表空间,并指定为SCOTT用户的默认数据表空间。
SQL> conn system/systempwd@orcl
SQL> drop tablespace bigfile_ts1 including conntents;
SQL> create bigfile tablespace bigfile_ts1
2 datafile ‘ %oracle_home%\database\bigfile_ts1.dbf ’ size 50M reuse;
SQL> alter user scott default tablespace bigfile_ts1;
需要注意的是,大文件表空间的段空间管理不能为手工(MANUAL),只能为自动(AUTO)。
例4.6调整数据表空间data_ts1的大小。
SQL> conn system/systempwd@orcl
--为表空间data_ts1增加一数据文件,大小为1M。
SQL> alter tablespace data_ts1
2 add datafile ‘ %oracle_home%\database\ data _ts2.dbf ’ size 1M;
--重置该数据文件大小为2M。
SQL> alter tablespace
2 datafile ‘ %oracle_home%\database\ data _ts2.dbf ’ siz e 2M;
--修改该数据库,允许该文件自动扩展,每次扩展1M,文件最大扩展到10M。
SQL> alter database datafile ‘ %oracle_home%\database\data_ts2.dbf ’
2 autoextend on next 1M maxsize 10M;
例4.7 删除temp_ts1表空间。
SQL> conn system/systempwd@orcl
SQL > drop tablespace temp_ts1
2 including contents and datafiles
3 cascade constraints ;
例
第5章:常用方案对象类型:
表:table 索引:index 视图:view 序列:sequence 用户:user
约束:constraint 表空间:tablespace 回退段:rollback segment
同义词:synonym 数据库链接:database link 聚簇:cluster
分区:partition 函数/过程/包:func tion/procedure/package
触发器:trigger 类型:type
约束的类型:
NOT NULL:非空约束
check :检查约束,用于限制该列的取值范围
Unique :唯一性约束,指定某列值不能重复
primary key :主键约束
Foreign key :外键约束,也叫参照完整性约束
Ref :定义列对象的参照关系
References :参照完整性约束
例5.1 创建采用系统默认存储参数值的关系表。EXA_05_01.SQL
例5.2 为SCOTT的雇员表emp创建一个备份表emp_bak。
SQL> conn scott/tiger@emp_orcl
SQL> dorp table emp_bak;
SQL> create table emp_bak
SQL> as select * from emp;
SQL> desc emp_bak
SQL> select * from emp_bak;
例5.3 创建表stu2,并指定它的存储参数。EXA_05_03.SQL
例5.4 创建学生相关表,在列中定义约束。EXA_05_04.SQL
例5.5 创建学生相关表,在列之外定义约束。EXA_05_05.SQL
例5.6 创建学生相关表,在列之外定义约束。EXA_05_06.SQL
例7.1某电子商务网站估计每月产生近千万条订单记录。该网站采用年YYYY+月MM+当月流水号nnnnnnnn的形式标识和区分每一份订单。当有用户提交一份订单时,系统自动生成该订单的编号并告
知用户这个唯一的订单号。创建一序列,用于生成每月的订单流水号。(老师要求例子) conn scott/tiger@orcl
drop sequence order_seq;
create sequence order_seq
increment by 1
start with 10000000
cache 500
nocycle;
col sequence_name format a13
select sequence_name, min_value, max_value,
increment_by, last_number
from user_sequences;
select order_seq.currval from dual;
select order_seq.nextval from dual;
select order_seq.currval from dual;
select order_seq.nextval from dual;
select order_seq.currval from dual;
--函数案例:案例1.返回工人年工资。
create or replace function xxc_fun1(newname varchar2)
return number is yearSal number(10,2);
begin
select sal*12+nvl(comm,0)*12 into yearSal from emp where ename=newname; return yearSal;
end;
例9.编写函数按YYYY-MM-DD HH24:MI:SS格式以字符串形式返回当前系统时间。
connect scott/tiger@orcl
create or replace function current_time return varchar2
as
begin
return to_char(sysdate,'yyyy-mm-dd hh24')||':'
|| to_char(sysdate,'mi')||':'||to_char(sysdate,'ss');
end;
/
select current_time from dual;
例9.21 查询指定编号雇员的名字、工资和佣金。存储过程
conn scott/tiger@orcl
create or replace procedure query_emp
(p_no in emp.empno%type,
p_name out emp.ename%type,
p_sal out emp.sal%type,
p_comm out https://www.doczj.com/doc/6716412860.html,m%type)
is
begin
select ename,sal,comm
into p_name,p_sal,p_comm
from emp
where empno = p_no;
end query_emp;
/
variable g_name varchar2(25)
variable g_sal number
variable g_comm number
execute query_emp(7369,:g_name,:g_sal,:g_comm)
print g_name
例9.39创建触发器:
1.在scott的emp表上建立语句前触发器emp_permit_changes。
Create or replace trigger scott.emp_hello
Before D elete or insert or update On scott.emp Begin
raise_application_error(-20001,'how are you!'); End;
2.修改触发器
使emp_hello触发器不能触发:
alter trigger scott.emp_hello disable;
3.删除触发器
drop trigger scott.emp_hello;
end;
/
update emp set sal=100 where empno=7369;
例9.37 为雇员表emp创建一触发器,确保插入记录的工资列sal不小于0,同时新记录的sal列值不能高于已有记录最高工资的2倍。
conn scott/tiger@orcl
create or replace trigger check_sal_emp
before insert or update on emp
referencing old as old new as new
for each row
begin
if :new.sal < 0 then
raise_application_error (-20501,'雇员工资不能为负数');
end if;
if :new.sal > 2 * wage_package3.g_sal then
raise_application_error(-20502,'雇员工资超过现有最高工资2倍');
end if;
end;
/
insert into emp (empno, ename, hiredate,job, sal, deptno)
values (300, 'jordan', sysdate,'it_prog', -3, 10);
insert into emp (empno, ename, hiredate,job, sal, deptno)
values (300, 'tracyzhou', sysdate,'acc.offi.', 16000, 10);
Oracle实例有两种类:单进程实例和多进程实例。
多进程系统中,进程分为两类:用户进程和Oracle进程。
Oracle进程又分为两类:服务器进程(server process)和后台进程(background process)。Oracle数据库的索引模式:
(1) B-树索引(2) B-树簇索引(3) 散列簇索引(4) 全局和本地索引
(5) 反序索引(6) 位图索引(7) 基于函数的索引(8) 域索引
创建视图:
1、生成一个部门号是10的视图:
create view d10emp as select empno, ename, sal from emp where deptno = 10;
2、删除视图:drop view d10emp;
3、创建索引:
create index i_ename on emp(ename);
create unique index i_empno on emp(empno);
索引应用
如果查询语句如下则没有用到索引i_ename:select ename,job,sal from emp;
如果查询语句如下则用到索引i_ename:selct * from emp where ename = ‘jones’;
4、删除索引:drop index i_ename;
5、创建一个用户:create user myself identified by my;
6、修改用户口令:alter user myself identified by me;
7、对象权限授权:把dept 的select对象权限授给myself用户:
grant select on dept to myself;
把emp的select权限授给所有用户:grant select on emp to public;
8、收回对象权限:
从myself收回所有dept的对象权限:revoke all on dept from myself;
收回所有用户对emp的select权限:revoke select on emp from public;
9、删除用户:drop user myself;
实验三:数据插入(insert)、修改update和删除delete
1.用Insert在基本表customer中插入数据
SQL>insert into customer values (‘nicholson’,’ca’,6989.99);
2.在表STATE中插入指定的字段
SQL>insert into state (state_name,state_cd)
2 values (‘massachusetttes’,’MA’);
1 row created.
3.修改数据
把state表中newyork改为florida,ny改为fd:
update state set state_name = ‘florida’, state_cd = ‘fd’
where state_name = ‘newyork’ and state_cd = ‘ny’;
4.删除数据
从state表删除state_name为Florida和state_cd为fd的记录:
delete from state wher e state_name = ‘florida’ and state_cd = ‘fd’;
删除表全部数据:delete from hzx.sc
2、对s、c、sc表进行操作:
s (s#,sname,age,sex) 对应的中文为:(学号,姓名,年龄,性别)]
sc (s#,c#,grade) 对应的中文为:[学习(学号,课程号,成绩)]
c(c#,cname,teacher) 对应的中文为:[课程(课程号,课程名,任课教师)] 1)、把c2课程的非空成绩提高10%。
update stu.sc set grade = grade*1.1 where c# = 'c2' and c# is not null;
2)、在sc表中删除课程名为physics的成绩的元组。
delete from stu.sc where c#='physisc';
3)、在s和sc表中删除学号为s8的所有数据。
delete from stu.sc where s#='s8'; delete from stu.s where s#='s8';
实验四:索引、视图
1.建立男学生的视图,属性包括学号、姓名、选修课程和成绩。
create view man as select s.s#,sname ,cname ,grade from c,s,sc
where sex='m' and s.s#=sc.s# and c.c#=sc.c#;
2.在男学生视图中查询平均成绩大于80分的学生学号和姓名。
select distinct s#,sname from man w here sname in (
select sname from man group by sname having avg(grade)>80);
3.撤消生成的视图。SQL> drop view man;
4.创建一个新用户newuser。执行语句:create user newuser identified by my; 5.使用grant语句,把对基本表s、c、sc的使用权限授给newuser用户。
grant all on s to newuser ; grant all on c to newuser ;
grant all on sc to newuser ;
6.使用revoke语句从newuser手中收回基本表s、c、sc的使用权。
revoke all on s from newuser ; revoke all on c from newuser ;
revoke all on sc rom newuser ;
7.删除用户newuser。执行语句:drop user newuser;
8.对基本表S按照S#生成一个索引。执行语句:CREATE INDEX ss ON S(S#); 9.对基本表C按照C#生成一个索引。执行语句:CREATE INDEX cc ON C(C#); 10. 删除基本表C建立的索引。执行语句:DROP INDEX ss;
Oracle中分析函数用法小结 一.分析函数适用场景: ○1需要对同样的数据进行不同级别的聚合操作 ○2需要在表内将多条数据和同一条数据进行多次的比较 ○3需要在排序完的结果集上进行额外的过滤操作 二.分析函数语法: FUNCTION_NAME(
chapter 7 1.Oracle数据库物理存储结构的组成及各个部分的功能、性质。 数据文件:用于存储数据库中的所有数据 控制文件:用于记录和描述数据库的物理存储结构信息 重做日志文件:用于记录外部程序(用户)对数据库的改变操作 归档文件:用于保存已经写满的重做日志文件 初始化参数文件:用于设置数据库启动时的参数初始化值 跟踪文件:用于记录用户进程、数据库后台进程等的运行情况 口令文件:用于保存具有SYSDBA,SYSOPER权限的用户名和SYS用户口令; 警告文件:用于记录数据库的重要活动以及发生的错误; 备份文件:用于存放数据库备份所产生的文件。 2.数据文件管理: (1)数据文件与表空间的关系 从物理角度看,数据库由数据文件构成,数据存储在数据文件中;从逻辑角度看,数据库是由表空间构成的,数据存储在表空间中。一个表空间包含多个数据文件,但一个数据文件只能属于一个表空间。 在oracle数据库中,数据文件是依附于表空间而存在。一个表空间可以包含多个数据文件,但一个数据文件只能从属于一个表空间。在逻辑上,数据库对象都存放在表空间中,实质上是存放在表空间所对应的数据文件中。 (2)数据文件的添加、数据文件大小的修改autoextend on 、resize(操作)、数据文件的移植 添加: 向表空间添加一个大小为xMB的数据文件: alter tablespace 表空间名add datafile ‘路径\*.dbf’ size xMB; 向表空间添加一个自动增长的数据文件: alter tablespace 表空间名add datafile ‘路径\*.dbf’ size xMB autoextend on next 1M maxsize 50MB; 向临时表空间添加一个大小为xMB的数据文件: alter tablespace 表空间名 add tempfile‘路径\*.dbf’ size xMB; 修改: ①修改大小 修改数据文件大小为yMB: Alter database datafile ‘路径\*.dbf’ resize yMB; 修改文件的自动增长方式: Alter database datafile ‘路径\*.dbf’ autoextend on next 1M maxsize unlimited;
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)
1、数据库基本语句 (1)表结构处理 创建一个表:cteate table 表名(列1 类型,列2 类型); 修改表的名字 alter table 旧表名 rename to 新表名 查看表结构 desc 表名(cmd) 添加一个字段 alter table 表名 add(列类型); 修改字段类型 alter table 表名 modify(列类型); 删除一个字段 alter table 表名 drop column列名; 删除表 drop table 表名 修改列名 alter table 表名 rename column 旧列名 to 新列名; (2)表数据处理 增加数据:insert into 表名 values(所有列的值); insert into 表名(列)values(对应的值); 更新语句:update 表 set 列=新的值,…[where 条件] 删除数据:delete from 表名 where 条件 删除所有数据,不会影响表结构,不会记录日志, 数据不能恢复--》删除很快: truncate table 表名 删除所有数据,包括表结构一并删除: drop table 表名 去除重复的显示:select distinct 列 from 表名 日期类型:to_date(字符串1,字符串2)字符串1是日期的字 符串,字符串2是格式 to_date('1990-1-1','yyyy-mm-dd')-->返回日期的 类型是1990-1-1 (3)查询语句 1)内连接 select a.*,b.* from a inner join b on a.id=b.parent_id
1、在开发环境中连接到数据库,进行基本的select查询操作; 2、熟悉plsql的使用; 3、熟悉sqlplus相关命令(登录、查询、导入导出等) 登录sqlplus: 第一:使用dos窗口登录sqlplus Sqlplus 用户名/密码@数据库实例名 Sqlplus system/密码@数据库实例名as sysdba 第二:使用oracle自带的一个sqlplus登录,提供界面,显得更简单一些。 显示当前用户名:show user; 创建一个用户:create user 用户名identified by 密码; 给用户赋予登录的权限:grant connect to 用户名;(此时才可以使用这个用户来登录这个数据库。)给其赋予dba的权限。 修改用户的密码:alter user 用户名identified by 新密码; 查询: Select * from t_user; Select id from t_user; Select name from t_user; Select birthday from t_user; Select id,name from t_user; 导入导出: 导出表: (注意,导出表的exp命令不是在sqlplus下使用的,是在dos窗口下使用的命令。) exp userid=test/sa@test tables=(qx) file=d:\e1223.dmp exp userid=test/sa@test tables=(t_user,qx) file=f:\test.dmp 导出方案: Exp userid=test/sa@test owner=test file=f:\test2.dmp 导出数据库: Exp userid=test/sa@test full=y inctype=complete file=f:\all.dmp 导入表: 下面以一个例子来说明: 看下面的图,我的用户名test,密码sa,数据库实例名test,所有的表都在这里 现在我执行导出表JD的操作:exp userid=test/sa@test tables=(jd) file=f:\jd.dmp 在我的f盘下就出现了这么一个.dmp文件
一.创建用户 在YGGL数据库中创建一个用户MANAGER,授予DBA角色和SYSDBA系统权限,它可以替代system系统用户。 CONNECT SYSTEM/123456 AS SYSDAB CREATE USER MANAGER PROFILE "DEFAULT" IDENTIFIED BY manager DEFAULT TABLESPACE "USERS" TEMPORARY TABLESPACE "TEMP" ACCOUNT UNLOCK; GRANT SYSDBA TO "MANAGER"; GRANT "COUNTNECT" TO "MANAGER"; GRANT "DBA" TO "MANAGER"; ALTER user MANGER GRANT CONNECT THROUGH SYSTEM; 二:创建角色 在YGGL数据库中创建一个角色ADMIN,授予DBA角色和SYSDBA系统权限。CREATE ROLE ADMIN IDENTIFILED BY "manager"; GRANT SYSDAB TO ADMIN ; GRANT SYSOPER TO ADMIN; GRANT "CONNECT" TO ADMIN; GRANT "DBA" TO "ADMIN"; 一.创建概要文件 在YGGL数据库中创建概要文件YGGL_PROFILE并分配给用户MANAGER。CREATE PROFILE "XSCJ _PROFILE"LIMIT COMPOSITE_LIMIT DEFAULT FAILED_LOGIN_ATTEMPTS 3 PASSWORD_LOCK_TIME 20 PASSWORD_GRACE_TIME 60 PASSWORD_LIFE_TIME 30 PASSWORD_REUSE_MAX UNLIMITED PASSWORD_REUSE_TIME 120 PASSWORD_VERIFY_FUNCTION DEFAULT (1)使用命令方式分别向YGGL数据库个表中插入一行记录 INSERT INTO ZPEMPLOYEES V ALUES('011112','罗林 ',TO_DATE('26-06-1973','DD-MM-YYYY'),1,'解放路100 ',210002,4055663,5); INSERT INTO ZPDEPARTMENTS V ALUES('6','人力资源',NULL); INSERT INTO ZPSALARY V ALUES ('011112',1200.09,50) (2)修改表salry的记录值 UPDATE ZPSALARY SET InCome=2890 WHERE EmployeeID='011112'; (3)删除Salary中的一行记录 DELETE FROM ZPSALARY WHERE EmployeeID='01112'; 3.索引和完整性 (1).对YGGL数据库中的Employees表的DepartmentID列建立索引 CREATE INDEX PK_XS_BAK ON ZPEMPLOYEES(DepartmentID) TABLESPACE USERS PCTFREE 48 INITRANS 10 MAXTRANS 100 STORAGE (INITIAL 64K NEXT 64K MINEXTENTS 5 MAXEXTENTS 20
Oracle实验总结 Oracle实验总结 Oracle实验总结 近日做了基于ORACLE的数据库安全、对象sql数据库,XML数据库的实验,其中遇到很多问题,先总结如下。 1、安装Oracle的过程中可以‘选择建立数据库’,也可以选择‘只安装软件’,后者可在安装好软件后,建立数据库,可参考网上的很多安装步骤。 2、Oracle的默认用户有sys和system,在命令行或者sQl*plus中登陆时,写法如下: Connectsys/123456assysdba;其中123456是密码,在创建数据库的时候设置的。 普通用户登录,connectzhangsan/123456; 3、grantselect不支持对表中选定的几列授权,只能将整个表的select权限授权出去。所以实验中先建立了基于选课信息表的视图SelectiveInfo1,视图中包含成绩列,学号列以及班级列(不包含其他的列),再将对视图SelectiveInfo1的select权限授予角色teacher。 4、创建用户的时候,一定要说明该用户对表空间的权限即(quotaunlimitedontablespace或者具体限定大小的句子),否则该用户即使被授予了建表权限,也不能建表。 创建用户的时候必须给用户授予createsession的权限,这是最基本的权限。 5、不同的用户可以创建相同的表格,例如,teacher用户创建了table1,student 用户也创建了table1,且这两个表格式完全相同的,那么其他用户需要用这两个表格时,可以用teacher.table1和student.table1加以区分。系统用户创建的
oracle的sqlldr的使用总结 part i一:sql loader 的特点 oracle自己带了很多的工具可以用来进行数据的迁移、备份和恢复等工作。但是每个工具都有自己的特点。比如说exp和imp可以对数据库中的数据进行导出和导出的工作,是一种很好的数据库备份和恢复的工具,因此主要用在数据库的热备份和恢复方面。有着速度快,使用简单,快捷的优点;同时也有一些缺点,比如在不同版本数据库之间的导出、导入的过程之中,总会出现这样或者那样的问题,这个也许是oracle 公司自己产品的兼容性的问题吧。 sql loader 工具却没有这方面的问题,它可以把一些以文本格式存放的数据顺利的导入到oracle数据库中,是一种在不同数据库之间进行数据迁移的非常方便而且通用的工具。缺点就速度比较慢,另外对blob 等类型的数据就有点麻烦了。 二:sql loader 的帮助 C:\>sqlldr SQL*Loader: Release 9.2.0.1.0 - Production on 星期六10月9 14:48:12 2004 Copyright (c) 1982, 2002, Oracle Corporation. All rights reserved. 用法: SQLLDR keyword=value [,keyword=value,...] 有效的关键字: userid -- ORACLE username/password control -- Control file name log -- Log file name bad -- Bad file name data -- Data file name discard -- Discard file name discardmax -- Number of discards to allow (全部默认) skip -- Number of logical records to skip (默认0) load -- Number of logical records to load (全部默认) errors -- Number of errors to allow (默认50) rows -- Number of rows in conventional path bind array or between direct p ath data saves (默认: 常规路径64, 所有直接路径) bindsize -- Size of conventional path bind array in bytes(默认256000) silent -- Suppress messages during run (header,feedback,errors,discards,part itions) direct -- use direct path (默认FALSE) parfile -- parameter file: name of file that contains parameter specification s parallel -- do parallel load (默认FALSE) file -- File to allocate extents from skip_unusable_indexes -- disallow/allow unusable indexes or index partitions(默 认FALSE) skip_index_maintenance -- do not maintain indexes, mark affected indexes as unus
基础知识 表3.2 Oracle数据类型
表3.3 XSB的表结构
操作表 创建表 CREATE TABLE [schema.] table_name ( column_namedatatype [DEFAULT expression] [column_constraint][,…n]
oracle体系结构总结 传统上Oracle体系结构由内存结构、进程结构、存储结构组成。其中,内存结构由SGA、PGA组成;进程结构由用户进程和Oracle进程组成;存储结构由逻辑存储、物理存储组成。 通过数据库的启动过程和一条sql的执行过程可以将oracle的内存结构、进程结构、存储结构串起来。 一、内存结构 (1)SGA(System Global Area):一个包含实例数据和控制信息的共享内存区域 (2)PGA(Program Global Area):一个包含服务器进程和后台进程的数据和控制信息的共享内存区域 1.1系统全局区SGA 系统全局区,是DB Server 中实例的必要组成部分,由很多小内存区共同构成,各个小内存区存放不同的信息,系统全局区用于暂存可以被所有进程(包括server process 以及background process)共享的信息,对系统的运行性能有好处,SGA 在实例启动的时候自动分配,实例关闭时自动释放。 SGA 暂存系统的大量共享数据,对系统有相当的性能影响,所以需要为SGA 选择适当的管理方式,根据所使用的数据库版本不同,SGA 的管理有三种方式:1)8i:SGA 的大小由所有内存组件大小之和决定,不能直接定义SGA 大小,对内存组件的大小可后台进行修改,但只能通过直接修改参数文件的内存参数大小,而且修改完数据库必须重起后才能生效,所以这种内存管理方法叫做SGA 的静态管理。 2)9i:SGA 的大小由初始化参数SGA_MAX_SIZ E 确定,各个内存组件大小之和不能超过这个参数。可以直接通过命令进行修改内存组件大小而不用重启,这种叫做SGA 的动态管理
高级查询总结 A.层次查询:start with……connec by prior…….. select lpad(' ',3*level)||ename,job,level from emp start with mgr is null connect by prior empno=mgr; 从根结点向下查,lpad()为左添加,level为第几层,prior为查找的方向;此句若省掉start with….则表示要遍历整个树型结构;若出现level,则后面一定要跟connect by B.交叉报表(case when then end 与decode()) select ename,case when sal>=1500then sal*1.01 else sal*1.1 end工资 from emp; select姓名, max(case课程when'语文'then分数end) 语文, max(case课程when'数学'then分数end) 数学, max(case课程when'历史'then分数end) 历史 from学生group by姓名;------(交叉报表与函数一起使用) select ename,sum(decode(sal,'sal',comm,null)) 奖金from emp group by ename;--可实现分支 decode(条件,(值),(返回值),…………,(默认值)) 部门 select sal,decode(sign(sal-1500),-1,1.1*sal,0,1.1*sal,1,1.05*sal) from emp; C.连接查询 1.等值: select * from emp,dept where emp.deptno(+)=dept.deptno; ‘+’在左则以右表为主,反之亦然 2.非等值:where的运算符不是等号 3.自然连接: select * from emp natural join dept 4.99乘法: select * from emp e full join dept d using (deptno) where deptno=10; --where必须放在using(on)的后面 D集合查询: 1.A Union B:消除重复行,有all则可以重复,默认第一列升序select ename,sal from deptno=20 union select ename,sal from job=’CLERK’; 2.A intersect B:A与B的交集 select ename,sal from deptno=20 intersect select ename,sal from job=’CLERK’; 3.A minus B:在A中减去既属于A又属于B的一部分
个人声明:本文档所有代码并没有经过上机验证,仅供参考,另外,因为只是自己总结的关于最基本的知识点,所以难免遗漏,所以请参阅相关材料观看,最后,版权所有,翻版没事!哈哈~~~~ 1,关系模型的数据结构非常简单,它只含有单一的数据结构——关系,在用户看来就是一张二维表,关系数据库就是用二维表表示关系以及他们之间的联系。 2.关于数据库的操作主要就是增删改查,其中尤其以查最重要,下面正对这几种数据库操作做一些sql语句方面的简单整理,以用来加强印象: 由于今天使用了mysql数据库,所以呢,先将一些使用的必须基本命令总结一些: 首先是安装了mysql数据库之后,进入dos命令提示窗口, 接下来我们要进入我们的数据库,那么要先进入mysql的bin路径下, 然后输入mysql -u root -p,然后会提示输入密码,然后进入, 进入后的命令提示符是mysql> 在mysql新建表之间和使用oracle 10g还是不一样的,先新建数据库, Create database 数据库名字; 增 A.首先是新建表:create table table_name(
一、Oracle RAC原理 ORACLE RAC原理在一个应用环境当中,所有的服务器使用和管理同一个数据库,目的是为了分散每一台服务器的工作量,硬件上至少需要两台以上的服务器,而且还需要一个共享存储设备。同时还需要两类软件,一个是集群软件,另外一个就是Oracle数据库中的RAC组件。同时所有服务器上的OS都应该是同一类OS,根据负载均衡的配置策略,当一个客户端发送请求到某一台服务的listener后,这台服务器根据我们的负载均衡策略,会把请求发送给本机的RAC组件处理也可能会发送给另外一台服务器的RAC组件处理,处理完请求后,RAC会通过集群软件来访问我们的共享存储设备。 逻辑结构上看,每一个参加集群的节点有一个独立的instance,这些instance访问同一个数据库。节点之间通过集群软件的通讯层(communication layer)来进行通讯。同时为了减少IO的消耗,存在了一个全局缓存服务,因此每一个数据库的instance,都保留了一份相同的数据库cache。 二、RAC中的特点是: 每一个节点的instance都有自己的SGA 每一个节点的instance都有自己的background process 每一个节点的instance都有自己的redo logs 每一个节点的instance都有自己的undo表空间 所有节点都共享一份datafiles和controlfiles Oracle还提出了一个缓存融合的技术(Cache fusion) 目的有两个 1.保证缓存的一致性 2.减少共享磁盘IO的消耗 因此在RAC环境中多个节点保留了同一份的DB CACHE 缓存融合(Cache fusion)工作原理: -**************************************** 1.其中一个节点会从共享数据库中读取一个block到db cache中 2.这个节点会在所有的节点进行交叉db block copy 3.当任何一个节点缓存被修改的时候,就会在节点之间进行缓存修改 4.为了达到存储的一致最终修改的结果也会写到磁盘上 三、ClusterWare组件 ******************* 有四种Service Crsd - 集群资源服务 Cssd - 集群同步服务 Evmd - 事件管理服务 oprocd - 节点检测监控 有三类Resource VIP - 虚拟IP地址(Virtual IP) OCR - Oracle Cluster Registry(集群注册文件),记录每个节点的相关信息
学习Oracle数据库的心得体会 对于学习Oracle数据库,应该先要了解Oracle的框架。它有物理结构(由控制文件、数据文件、重做日志文件、参数文件、归档文件、密码文件组成),逻辑结构(表空间、段、区、块),内存分配(SGA和PGA)算机的实际内存中得以分配,如果实际内存不够再往虚拟内存中写,后台进程(数据写进程、日志写进程、系统监控、进程监控、检查点进程、归档进程、服务进程、用户进程),SCN(System Change Number)。这些东西感觉都比较专业,我对它们也就是个知道,想要真真去认识我还得努力去做。虽然懂得还不是很多,起码会了基本的软件操作,老师说我们用的都是客户端,服务端看不到,也不知道服务端是什么样的,只知道客户端就挺多东西的,没有真正的去学习利用是很难掌握的。 Oracle数据库的学习使我对数据库的有了新的进步,以后再看到也就不至于什么也不懂,其实那么多数据库我觉得学好一门就行,只是他们的语言可能不大一样,学好一门后就可去认识其它的,这样应该有事半功倍的效果。就像我学习C语言,当时不能说是学习的棒,但不算差。所以我对以后的语言感觉都不是很困难,了解了https://www.doczj.com/doc/6716412860.html,、C++还有网页中用的Html 语言、asp语言都能看懂,起码可以对别人的东西进行了一下修改。因此,我感谢Oracle数据库老师给了我有用的知识,以便我在以后学习或认识更多的内容能有新的方法和思维,也能更加有效和快速的去消化吸收新的东西。希望在今后中,Oracle能给我更多帮助,让我在我熟悉的https://www.doczj.com/doc/6716412860.html,中运用上去,我以前的一个目标是要为学校的选课做一个选课助手来帮助大学。不过因为种种原因一直没有完成,也包括我对数据库的不了解,因为学了Oracle以后知道第一项内容是通过SQL查询后得到的,如果去把它们联系起来还不是真正明白,不过我相信我的目标能在学习Oracle后得到进展。
Oracle知识点总结 根据阎赫老师讲义整理Zealjiang 1、Oracle数据库的安装和配置 ⑴Oracle Internet级数据库 SQLServer 中小企业级数据库 Access 桌面级数据库 ⑵Oracle的安装 注意:来源和目标的目录不允许有中文或空格 ⑶Oracle数据库启动时必需开启的后台服务 ①OracleOrahome90TNSListener 使第三方的软件或语言访问 ②OracleServiceETC Oracle的实例 CRUD 增删改查 注意:②中的ETC是你起的实例的名字 ⑷Oracle的开发工具 ①DOS界面的开发平台 -> 运行->sqlplus ②Oracle本身基于DOS的平台 ->运行-> sqlplusw ③Oracle Enterprise Manager Console ④PL/SQL Developer7.1.5 ⑸创建一个表的完整流程 ①创建一个数数库 例子:创建一个数据库 ETC , 物理文件放在F:\ ,初始化1m ,自增长开启 create tablespace etc
datafile 'f:\etc.dbf' size 1m autoextend on; 删除表空间 drop tablespace 数据库名称; ②为该数据库创建一个帐号和密码 语法: create user 用户名称 identified by 密码 default tablespace 数据库名称 注意:1、在Oracle中账号和数据库one2one绑定 2、Oracle的密码不允许为纯数字或空 3、需要在system账号完成动作 修改Oracle的账号密码 语法:alter user 用户 identified by 新密码 ③用grant 权限 to 用户为该帐户授权 语法: grant 权限名称 to 用户; 撤销权限 语法:revoke 权限名称 from 用户名; ④在该帐号下创建表
Oracle数据库复习提纲 一、Oracle10g简介 1、Oracle10g一共有哪几个版本? Oracle数据库10g标准版1,Oracle数据库10g标准版,Oracle数据库10g企业版,Oracle数据库10g个人版. 2、 Oracle10g中的g是什么含义? Oracle 10g的g就代表grid computing。 3、理解Oracle数据库中的方案、数据块、区间、段、表、表空间之间的关系。 Oracle 数据库的逻辑结构包括方案(schema)对象、数据块(data block)、区间(extent)、段(segment)和表空间(tablespace)等。数据库由若干个表空间组成,表空间由表组成,表由段组成,段由区间组成,区间则由数据块组成 4、标准数据块大小由初始参数(DB_BLOCK_SIZE)指定。 5、理解数据库、表空间、数据文件之间的关系。 每个表空间由一个或多个数据文件组成。数据文件用于在物理上存储表空间中所有逻辑结构的数据。 表空间中数据文件的大小之和就是表空间的存储容量(图中系统表空间存储容量为2MB,用户表空间的存储容量为4MB)。 数据库中表空间的存储容量之和就是数据库的存储容量。 6、叙述Oracle数据库的物理结构。(每个Oracle数据库都由3类文件组成:数据文件、日志文件、控制文件,……) Oracle数据库有一个或多个物理的数据文件。数据库的数据文件包含全部数据库数据。逻辑数据物理地存储在数据文件中。数据文件有下列特征: 一个数据文件仅与一个数据库联系。 当数据库容量越界时,数据文件能够自动扩展。 一个或多个数据文件组成一个表空间。 每个数据库有两个或多个日志文件组,日志文件组用于收集数据库日志。 日志的主要功能是记录对数据所作的修改,所有对数据库作的全部修改记录在日志中。 每个Oracle数据库有一个控制文件,记录数据库的物理结构。 控制文件包含数据库名、数据库数据文件和日志文件的名字、位置和数
AD1. 执行一个SQL脚本文件 SQL>start file_name SQL>@ file_name 我们可以将多条sql语句保存在一个文本文件中,这样当要执行这个文件中的所有的sql语句时,用上面的任一命令即可,这类似于dos中的批处理。 4. 将显示的内容输出到指定文件 SQL> SPOOL file_name 在屏幕上的所有内容都包含在该文件中,包括你输入的sql语句。 5. 关闭spool输出 SQL> SPOOL OFF 只有关闭spool输出,才会在输出文件中看到输出的内容。 7. COL命令: 主要格式化列的显示形式。 1). 改变缺省的列标题 COLUMN column_name HEADING column_heading For example: Sql>select * from dept; DEPTNO DNAME LOC ---------- ---------------------------- --------- 10 ACCOUNTING NEW YORK sql>col LOC heading location sql>select * from dept; DEPTNO DNAME location --------- ---------------------------- ----------- 10 ACCOUNTING NEW YORK 2). 将列名ENAME改为新列名EMPLOYEE NAME并将新列名放在两行上: Sql>select * from emp Department name Salary ---------- ---------- ---------- 10 aaa 11 SQL> COLUMN ENAME HEADING ’Employee|Name’ Sql>select * from emp Employee Department name Salary ---------- ---------- ---------- 10 aaa 11 note: the col heading turn into two lines from one line. 3). 改变列的显示长度: FOR[MAT] format Sql>select empno,ename,job from emp; EMPNO ENAME JOB ---------- ---------- --------- 7369 SMITH CLERK
Oracle数据库开发指南 前言 参考 第一部分基础 一、数据库对象 表空间Tablespace:存储数据库对象的容器 模式Schema 表Table 表名最长为30个字符,不能以数字开头。一个表最多254个列。 CREATE TABLE tablename AS select_statement,通过子查询建立新表 DESC tablename,查看表或其它数据库对象的定义 ALTER TABLE tablename RENAME new_tablename,修改表名 RENAME tablename TO new_tablename,修改表名,注意修改表名后,视图必须重建。 索引Index 保证表中数据的唯一性;减少定位和检索数据所需要的I/O操作 Oracle允许对列值创建索引,也可对表达式创建索引。所以既可是UNIQUE,也可是UNIQUE Oracle对DESC(降序)索引认为是基于函数的索引。 序列Sequence 使用序列为表的码值生成唯一的序列值 聚簇Cluster 视图View 由一个预定义的查询构成,可看作为数据库的逻辑表。 SELECT text_length FROM user_views WHERE view_name = …viewname? Set long 5000 SELECT text FROM user_views WHERE view_name = …viewname? 快照Snapshot 快照与视图都是基于查询结果的。但快照使用物理的存储空间,快照中的数据一般都是静态的,只有刷新时才改变。 快照的目的是提供某个时间点的数据。 二、数据类型 CHAR(n),255字符 V ARCHAR2(n):2000字符 LONG,2G字符,只能用在列SELECT列表,UPDATE语句的SET子句或INSERT语句的V ALUES子句中,一个表中只能有一个LONG列,LONG列不能建索引,也不能有完整性约束,不能用于表达式。DATE