文档库 最新最全的文档下载
当前位置:文档库 › pl,sql基础

pl,sql基础

pl,sql基础
pl,sql基础

PL/SQL基础

一.PL/SQL块简介

块(Block)是PL/SQL的基本程序单元,编写PL/SQL程序实际就是编写PL/SQL块。要完成相对简单的应用功能,可能只需要编写一个PL/SQL块;而如果要实现复杂的应用功能,那么可能需要在一个PL/SQL块中嵌套其他PL/SQL块。编写PL/SQL应用模块,块的嵌套层次没有限制。

1.1 PL/SQL块结构

PL/SQL块由三个部分组成:

l 定义部分:用于定义常量、变量、游标、例外、复杂数据类型等;

l 执行部分:用于实现应用模块功能,该部分包含了要执行的PL/SQL语句和SQL语句;

l 例外处理:用于处理执行部分可能出现的运行错误;

基本结构如下:

DECLARE

/*

* 定义部分——定义常量、变量、复杂数据类型、游标、例解(可选)

*/

BEGIN

/*

* 执行部分——PL/SQL语句和SQL语句(必选)

*/

EXCEPTION

/*

* 例外处理部分——处理运行错误(可选)

*/

END; /*块结束标记*/

注意,DECLARE,BEGIN,EXCEPTION后面没有分号(;),而END后则必须要带分号(;)。

示例一:只包含执行部分的PL/SQL块

set serveroutput on

BEGIN

dbms_output.put_line('Hello,everyone!');

END;

输出结果:

Hello,everyone!

PL/SQL 过程已成功完成

其中dbms_output是Oracle所提供的系统包,put_line是该包所包含的过程,用于输出字符串信息。

注意:当使用dbms_output包输出数据或消息时,必须要将SQL*Plus的环境变量serveroutput 设置为on。

示例二:包含定义部分和执行部分的PL/SQL块

DECLARE

v_ename VARCHAR2(5);

BEGIN

SELECT ename INTO v_ename FROM emp

WHERE empno = &no;

dbms_output.put_line('雇员名:'||v_ename);

END;

输出结果:

原值5: WHERE empno = &no;

新值5: WHERE empno = 7788;

雇员名:SCOTT

PL/SQL 过程已成功完成。

其中&no为SQL*Plus的替代变量。

示例三:包含定义部分、执行部分和例外处理部分的PL/SQL块DECLARE

v_ename VARCHAR2(5);

BEGIN

SELECT ename INTO v_ename FROM emp

WHERE empno = &no;

dbms_output.put_line('雇员名:'||v_ename); EXCEPTION

WHEN NO_DATA_FOUND THEN

dbms_output.put_line('请输入正确的雇员名!');

END;

输出结果:

原值5: WHERE empno = &no;

新值5: WHERE empno = 12;

请输入正确的雇员名!

PL/SQL 过程已成功完成。

如输入了不正确的雇员名,会提示你输入正确的雇员编号,从而避免了程序运行错误。

1.2 PL/SQL块分类

根据需要实现的应用模块功能,可以将PL/SQL块划分为以下四种类型:

l 匿名块:是指没有名称的PL/SQL块,匿名块既可以内嵌到应用程序(例如Pro*C/C++)中,也可以在交互式环境(例如SQL*Plus)中直接使用。

l 命名块:是指在PL/SQL块前使用<<>>加以标记的特定名称标识的PL/SQL块。当使用嵌套块时,为了区分多级嵌套层次关系,可以使用命名块加以区分。

l 子程序:开发PL/SQL子程序时,即可以开发客户端的子程序,也可以开发服务器端的子程序。客户端子程序主要用在Developer中,而服务器端子程序可以用在任何应用程序中。通过将商业逻辑和企业规则集成到PL/SQL子程序中,可以简化客户端程序的开发和维护,并且提高应用程序的性能。

过程:用于执行特定操作。当建立过程时,既可以指定输入参数(IN),也可以指定输出参数(OUT)。通过在过程中使用输入参数,可以将应用环境的数据传递到执行部分;通过使用输出参数,可以将执行部分的数据传递到应用环境。在SQL*Plus中可以使用CREATE PROCEDURE 命令建立过程。

函数:用于返回特定数据。当建立函数时,在函数头部必须包含RETURN字句,而在函数体内必须要包含RETURN语句返回数据。在SQL*Plus中可以使用CREATE FUNCTION命令建立函数。

包:用于逻辑组合相关的过程和函数,它由包规则和包体两部分组成。包规则用于定义公用的常量、变量、过程和函数,在SQL*Plus中建立包规范可以使用CREATE PACKAGE命令。包规范只包含了过程和函数的说明,而没有过程和函数的实现代码。包体用于实现包规范中的过程和函数,在SQL*Plus中建立包体可以使用CREATE PACKAGE BODY命令。

l 触发器:是指隐含执行的存储过程。当定义触发器时,必须要指定触发事件以及触发操作,常用的触发事件包括INSERT,UPDATE和DELETE 语句,而触发操作实际是一个PL/SQL块。在SQL*Plus中建立触发器是使用CREATE TRIGGER 命令来完成的。

匿名块示例:

DECLARE

v_avgsal NUMBER(6,2);

BEGIN

SELECT avg(sal) INTO v_avgsal FROM emp

WHERE deptno = &no;

dbms_output.put_line('平均工资:'||v_avgsal);

END;

输出结果:

原值5: WHERE deptno = &no;

新值5: WHERE deptno = 10;

平均工资:2916.67

PL/SQL 过程已成功完成。

该PL/SQL块直接以DECLARE开始,没有给出任何名称,所以该PL/SQL块属于匿名块。命名块示例:

<>

DECLARE

v_deptno NUMBER(2);

v_dname VARCHAR2(10);

BEGIN

<>

BEGIN

SELECT deptno INTO v_deptno FROM emp

WHERE lower(ename) = lower('&name');

END;--<>

SELECT dname INTO v_dname FROM dept

WHERE deptno = v_deptno;

dbms_output.put_line('部门名:'||v_dname);

END;--<>

输出结果:

原值9: WHERE lower(ename) = lower('&name');

新值9: WHERE lower(ename) = lower('scott');

部门名:RESEARCH

PL/SQL 过程已成功完成。

<>和<>分别是主块(外层块)和子块(内层块)的标记,这种PL/SQL块被称为命名块。

过程示例:

CREATE PROCEDURE update_sal(name VARCHAR2,newsal NUMBER)

IS

BEGIN

UPDATE emp SET sal = newsal

WHERE lower(ename) = lower(name);

END;

输出结果:

过程已创建。

调用过程可以使用execute命令或call命令,例如:exec update_sal('scott',2000);

call update_sal('scott',3000);

输出结果:

调用完成。

函数示例:

CREATE FUNCTION annual_income(name VARCHAR2) RETURN NUMBER IS

annual_salary NUMBER(7,2);

BEGIN

SELECT sal*12+nvl(comm,0) INTO annual_salary FROM emp WHERE lower(ename) = lower(name); RETURN annual_salary;

END;

输出结果:

函数已创建。

调用过程可以使用call命令,例如:

VAR income NUMBER

CALL annual_income('scott') INTO:income;

PRINT income;

输出:

调用完成。

INCOME

36000

包示例:

建立包规范

CREATE PACKAGE emp_pkg IS

PROCEDURE update_sal(name VARCHAR2,newsal NUMBER); FUNCTION annual_income(name VARCHAR2) RETURN NUMBER; END;

输出结果:

程序包已创建。

调用:

CALL emp_pkg.update_sal('scott',1500);

输出结果:

CALL emp_pkg.update_sal1('scott',1500)

*

第1 行出现错误:

ORA-04067: 未执行, package body "SCOTT.EMP_PKG" 不存在

ORA-06508: PL/SQL: 无法在调用之前找到程序单元ORA-06512: 在line 1

建立包体:

CREATE PACKAGE BODY emp_pkg IS

PROCEDURE update_sal1(name VARCHAR2,newsal NUMBER)

IS

BEGIN

UPDATE emp SET sal = newsal

WHERE lower(ename)=lower(name);

END;

FUNCTION annual_income(name VARCHAR2) RETURN NUMBER

IS

annual_salary NUMBER(7,2);

BEGIN

SELECT sal*12+nvl(comm,0) INTO annual_salary

FROM emp WHERE lower(ename)=lower(name);

RETURN annual_salary;

END;

END;

输出:

程序包体已创建。

调用包的过程和函数时,在过程和函数名之前必须要带有包名作为前缀(包名.子程序名),而如果要访问其他方案的包,还必须要加方案名作为前缀(方案名.包名.子程序名)。

CALL emp_pkg.update_sal('scott',1500);

输出:

调用完成。

VAR income NUMBER

CALL emp_pkg.annual_income('soctt') INTO:income;

PRINT income;

输出:

调用完成。

INCOME

18000

触发器示例:

CREATE TRIGGER update_cascade

AFTER UPDATE OF deptno ON dept

FOR EACH ROW

BEGIN

UPDATE emp SET deptno =: new.deptno

WHERE deptno =: old.deptno;

END;

触发器update_cascade用于实现级联更新,如果不建立该触发器,那么当更新dept表的deptno列数据就会显示错误“ORA-02292:违反完整约束条件(SCOTT.FK_DEPTNO)-已找到子

记录日志”;而在建立了该触发器之后,当更新deptno列时,就会级联更新emp表的deptno 列的相关数据。

二.定义并使用变量

编写PL/SQL程序时,若临时存储数值,必须要定义变量和常量;若在应用环境和子程序之间传递数据,必须要为子程序指定参数。而在PL/SQL程序中定义变量、常量和参数时,则必须要为它们指定PL/SQL数据类型。在编写PL/SQL程序时,可以使用以下四种变量类型:

l 标量(Scalar)类型:标量变量是指只能存放单个数值的变量。当定义标量变量时,必须要指定标量数据类型。标量数据类型包括数字类型、字符类型、日期类型和布尔类型,每种类型又包含有相应的子类型。

l 复合(Composite)类型

l 参照(Reference)类型

l LOB(Large Object)类型

2.1标量变量

1.常用标量类型

(1)VARCHAR2(n)

该数据类型用于定义可变长度的字符串,其中n用于指定字符串的最大长度,其最大值为32767字节。当使用该数据类型定义变量时,必须要指定长度。

注意:在PL/SQL块中使用该数据类型操纵VARCHAR2表列时,其数值的长度不应超过4000字节。

(2)CHAR(n)

该数据类型用于定义固定长度的字符串,其中n用于指定字符串的最大长度,其最大值为32767字节。当使用该数据类型定义变量时,如果没有指定n,则其默认值为1。

注意:在PL/SQL块中使用数据类型操纵CHAR表列时,其数值的长度不应该超过2000字节。

(3)NUMBER(p,s)

该数据类型用于定义固定长度的整数和浮点数,其中p表示精度,用于指定数字的总位数;s表示标度,用于指定小数点后的数字位数。

(4)DATE

该数据类型用于定义日期和事件数据,其数据长度为固定长度(7字节)。

注意:当给DATE变量赋值时,数据必须要与日期格式和日期语言匹配。

(5)TIMESTAMP

该数据类型是Oracle9i新增加的数据类型,它也用于定义日期和事件数据。用法和DATA变量一样,但当显示TIMESTAMP变量数据时,不仅会显示日期,而且还会显示时间和上下午标记。

(6)LONG和LONGRAW

LONG数据类型用于定义变长字符串,类似于VARCHAR2数据类型,但其字符串的最大长度为32760字节;LONGRAW数据类型用于定义变长的二进制数据,其数据最大长度为32760字节。

(7)BOOLEAN

该数据类型用于定义布尔变量,其变量的值为TRUE、FALSE或NULL。

注意:该数据类型是PL/SQL数据类型,表列不能采用该数据类型。

(8)BINARY_INTEGER

该数据类型用于定义整数,其数值范围在-2147483647和2147483647之间。在Oracle9i之前,当在PL/SQL块中定义PL/SQL表时,必须使用该数据类型作为下标的数据类型。

注意:该数据类型是PL/SQL数据类型,表列不能采用该数据类型。

(9)BINARY_FLOAT和BINARY_DOUBLE

BINARY_FLOAT和BINARY_DOUBLE是Oracle 10g新增加的数据类型,分别用于定义单精度的浮点数和双精度的浮点数。这两种数据类型主要用于高速的科学计算,当为BINARY_FLOAT 类型的变量赋值时,应该带有后缀f(例如1.5f);当为BINARY_DOUBLE类型的变量赋值时,应该带有后缀d(例如3.00095d)。

2.定义标量变量

(1)语法

identifier [CONSTANT] datatype [NOT NULL] [:= | DEFAULT expr]

l identifier:用于指定变量或常量的名称

l CONSTANT:用于指定常量。当定义常量时,必须指定它的初始值,并且其数值不能改变

l datatype:用于指定变量或常量的数据类型

l NOT NULL:用于强制初始化变量(不能为NULL)。当指定NOT NULL选项时,必须要为变量提供数值

l :=:用于为变量和常量指定初始值

l DEFAULT:用于为变量和常量指定初始值

l expr:用于指定初始值的PL/SQL表达式,可以是文本值、其他变量、函数等

(2)使用标量变量示例:

DECLARE

v_ename VARCHAR2(5);

v_sal NUMBER(6,2);

c_tax_rate CONSTANT NUMBER(3,2) := 0.03;

v_tax_sal NUMBER(6,2);

BEGIN

SELECT ename,sal INTO v_ename,v_sal

FROM emp WHERE empno = &eno;

v_tax_sal := v_sal*c_tax_rate;

dbms_output.put_line('雇员名:'||v_ename);

dbms_output.put_line('雇员工资:'||v_sal);

dbms_output.put_line('所得税:'||v_tax_sal);

END;

输出:

原值8: FROM emp WHERE empno = &eno;

新值8: FROM emp WHERE empno = 7788;

雇员名:SCOTT

雇员工资:1500

所得税:45

PL/SQL 过程已成功完成。

当在定义部分定义了标量变量之后,在执行部分和例外处理部分可以引用这些标量变量。注意:在PL/SQL块中为变量赋值不同于其他编程语言,必须要在等号前加冒号(:=)。

在执行该PL/SQL块时,如果雇员名长度超过5字节,则会显示错误信息“ORA-06502:PL/SQL:数字或值错误:字符串缓冲区太小”,原因是v_ename变量的最大长度为5字节。因为ename 列的最大长度为10字节,所以只需要将v_ename变量的最大长度设置为10字节就可以了。在应用模块设计完成之后,假定将来需要输入名称超过10字节的雇员,那么就需要修改EMP 表的ENAME列数据长度,很显然还需要修改应用模块。为了提高程序的可用性,降低PL/SQL 程序的维护工作量,可以使用%TYPE属性定义变量。

(3)使用%TYPE属性

使用%TYPE属性定义变量时,它会按照数据库列或其他变量来确定新变量的类型和长度。示例:

DECLARE

v_ename emp.ename%TYPE;

v_sal emp.sal%TYPE;

c_tax_rate CONSTANT NUMBER(3,2) := 0.03;

v_tax_sal v_sal%TYPE;

BEGIN

SELECT ename,sal INTO v_ename,v_sal

FROM emp WHERE empno = &eno;

v_tax_sal := v_sal*c_tax_rate;

dbms_output.put_line('雇员名:'||v_ename);

dbms_output.put_line('雇员工资:'||v_sal);

dbms_output.put_line('所得税:'||v_tax_sal);

END;

输出:

原值8: FROM emp WHERE empno = &eno;

新值8: FROM emp WHERE empno = 7788;

雇员名:SCOTT

雇员工资:1500

所得税:45

PL/SQL 过程已成功完成。

变量v_ename,v_sal与EMP表的ename列、sal列的数据类型和长度完全一致,而变量v_tax_sal与变量v_sal的数据类型和长度完全一致。这样,当ename列和sal列的类型和长度发生改变时,该PL/SQL块将不需要进行任何修改。

2.2复合变量

复合变量是指用于存放多个值的变量。当定义复合变量时,必须要使用PL/SQL的复合数据类型。PL/SQL包括以下四种复合数据类型:

l PL/SQL记录:类似于高级语言中的结构,每个PL/SQL记录一般都包含多个成员。当使用PL/SQL记录时,首先需要在定义部分定义记录类型和记录变量,然后在执行部分引用该记录变量。引用记录成员时,必须要加记录变量作为前缀(记录变量.记录成员)。

l PL/SQL表:类似于高级语言中的数组。需要注意,PL/SQL表与高级语言的数组有所区别,高级语言数组的下标不能为负,但PL/SQL表的

下标可以为负值;高级语言数组的元素个数有限制,而PL/SQL表的元素个数没有限制,并且其下标没有上下限。当使用PL/SQL表时,必须首先在定义部分定义PL/SQL表类型和PL/SQL 表变量,然后在执行部分中引用该PL/SQL表变量。

l 嵌套表:类似于高级语言中的数组。需要注意,高级语言数组和嵌套表的下标都不能为负值;高级语言的元素个数有限制,而嵌套表的元素个数是没有限制的。嵌套表和PL/SQL表非常类似,但嵌套表可以作为表列的数据类型,而PL/SQL表不能作为表列的数据类型。当在表列中使用嵌套表时,必须首先使用CREATE TYPE 语句建立嵌套表类型。

l VARRAY:(变长数组)类似于嵌套表,它可以作为表列和对象类型属性的数据类型。但需要注意,嵌套表的元素个数没有限制,而VARRAY 的元素个数是由限制的。当使用VARRAY时,必须首先建立VARRAY类型。

PL/SQL记录示例:

DECLARE

TYPE emp_record_type IS RECORD(

name emp.ename%TYPE,

salary emp.sal%TYPE,

title emp.job%TYPE);

emp_record emp_record_type;

BEGIN

SELECT ename,sal,job INTO emp_record

FROM emp WHERE empno = 7788;

dbms_output.put_line('雇员名:'||emp_https://www.wendangku.net/doc/3f13919420.html,);

dbms_output.put_line('雇员工资:'||emp_record.salary);

END;

输出:

雇员名:SCOTT

雇员工资:1500

PL/SQL 过程已成功完成。

emp_record_type是PL/SQL记录类型,并且该PL/SQL记录类型包含了三个成员(name,salary,title);emp_record是记录变量;emp_https://www.wendangku.net/doc/3f13919420.html,则表示引用记录变量emp_record的成员name。

PL/SQL表示例:

DECLARE

TYPE ename_talbe_type IS TABLE OF emp.ename%TYPE

INDEX BY BINARY_INTEGER;

ename_table ename_talbe_type;

BEGIN

SELECT ename INTO ename_table(-1) FROM emp

WHERE empno = 7788;

dbms_output.put_line('雇员名:'||ename_table(-1));

END;

输出:

雇员名:SCOTT

PL/SQL 过程已成功完成。

ename_table_type为PL/SQL表类型;emp.ename%TYPE指定了PL/SQL表元素的数据类型和长度;ename_table为PL/SQL表变量,ename_table(-1)则表示下标为-1的元素。

嵌套表示例:

CREATE OR REPLACE TYPE emp_type AS OBJECT(

name VARCHAR2(10),

salary NUMBER(6,2),

hiredate DATE);

输出:

类型已创建。

CREATE OR REPLACE TYPE emp_array IS TABLE OF emp_type;

输出:

类型已创建。

CREATE TABLE department(

deptno NUMBER(2),

dname VARCHAR2(10),

employee emp_array

)NESTED TABLE employee STORE AS employee;

输出:

表已创建。

对象类型emp_type用于存储雇员信息,而emp_array是基于emp_type的嵌套表类型,它可以用于存储多个雇员的信息。当建立了嵌套表类型之后,就可以在表列或对象属性中将其作为用户自定义数据类型来引用。但需要注意,当使用嵌套表类型作为表列时,必须要为其指定专门的存储表。

VARRAY示例:

CREATE TYPE arricle_type AS OBJECT(

title VARCHAR2(30),

PUBDATE DATE);

输出:

类型已创建。

CREATE TYPE article_array IS VARRAY(20) OF article_type;

输出:

类型已创建。

CREATE TABLE author(

id NUMBER(6),

name VARCHAR2(10),

article article_array);

输出:

表已创建。

对象类型article_type用于存储文章信息,而article_array则用于存储多篇文章的信息,并且最多可以存储20篇文章。当建立了VARRAY类型之后,可以在表列或对象属性中将其作为用户自定义数据类型来引用。

注意,嵌套表列数据需要存储在专门的存储表中,而VARRAY数据则与其他列数据一起存放在表段中。

2.3参照变量

参照变量是指用于存放数值指针的变量。通过使用参照变量,可以使得应用程序共享相同对象,从而降低占用空间。在编写PL/SQl程序时,可以使用以下两种参照变量类型:

l 游标变量(REF CURSOR):当使用显式游标时,需要在定义显式游标时指定相应的SELECT 语句,这种显式游标称为静态游标。当使用游标变量时,在定义游标变量时不需要指定SELECT语句,而是在打开游标时指定SELECT语句,从而实现动态的游标操作。

l 对象类型变量(REF obj_type):当编写对象类型应用时,为了共享相同对象,可以使用REF引用对象类型,REF实际是指向对象实例的指针。

游标变量(REF CURSOR)示例:

DECLARE

TYPE c1 IS REF CURSOR;

emp_cursor c1;

v_ename emp.ename%TYPE;

v_sal emp.sal%TYPE;

BEGIN

OPEN emp_cursor FOR

SELECT ename,sal FROM emp WHERE deptno = 10;

LOOP

FETCH emp_cursor INTO v_ename,v_sal;

EXIT WHEN emp_cursor%NOTFOUND;

dbms_output.put_line(v_ename);

END LOOP;

CLOSE emp_cursor;

END;

PLSQL学习简易快速入门

PLSQL学习简易快速入门 课程一 PL/SQL 基本查询与排序 本课重点: 1、写SELECT语句进行数据库查询 2、进行数学运算 3、处理空值 4、使用别名ALIASES 5、连接列 6、在SQL PLUS中编辑缓冲,修改SQL SCRIPTS 7、ORDER BY进行排序输出。 8、使用WHERE 字段。 一、写SQL 命令: 不区分大小写。 SQL 语句用数字分行,在SQL PLUS中被称为缓冲区。 最后以;或 / 结束语句。 也可以用RUN来执行语句 二、例1:SQL> SELECT dept_id, last_name, manager_id FROM s_emp; 2:SQL> SELECT last_name, salary * 12, commission_pct FROM s_emp; 对于数值或日期型的字段,可以进行相应的四则运算,优先级与标准的高级语言相同。 SQL> SELECT last_name, salary, 12 * (salary + 100) FROM s_emp; 三、列的别名ALIASES: 计算的时候特别有用; 紧跟着列名,或在列名与别名之间加“AS”; 如果别名中含有SPACE,特殊字符,或大小写,要用双引号引起。 例(因字体原因,读者请记住:引号为英文双引号Double Quotation): SQL> SELECT last_name, salary, 12 * (salary + 100) ”Annual Salary” FROM s_emp;

四、连接符号:|| 连接不同的列或连接字符串 使结果成为一个有意义的短语: SQL> SELECT first_name || ’’ || last_name || ’, ’|| title ”Employees” FROM s_emp SQL> select divid ||' '|| divname from pub_t_division_test where superid='001' 效果如下图: 五、管理NULL值: SQL> SELECT last_name, title, salary * NVL(commission_pct,0)/100 COMM FROM s_emp; 此函数使NULL转化为有意义的一个值,相当于替换NULL。 select divid,divname,NVL(addr,0) from pub_t_division_test where superid='001' 效果如下图: 六、SQL PLUS的基本内容,请参考 七、ORDER BY 操作: 与其他SQL92标准数据库相似,排序如: SELECT expr FROM table[ORDER BY {column,expr} [ASC|DESC]]; 从Oracle7 release 7.0.16开始,ORDER BY 可以用别名。 另:通过位置判断排序: SQL> SELECT last_name, salary*12 FROM s_emp ORDER BY 2; select * from pub_t_division_test where superid='001'order by3 这样就避免了再写一次很长的表达式。 另:多列排序: SQL> SELECT last name, dept_id, salary FROM s_emp ORDER BY dept_id, salary DESC; SQL>select * from pub_t_division_test where superid='001' order by 1,3 desc

PLSQL developer操作入门级知识讲解

P L S Q L d e v e l o p e r操 作入门级

目录 一 .登录PL/SQL Developer (3) 二 .登录后的基本设置 (4) 2.1 过滤显示 (4) 2.2登录界面的设置 (5) 三 .基本操作 (8) 2.1表的基本操作 (8) 2.1.1 SQL语句建表 (8) 2.1.2 如何在PL\SQL Developer里执行SQL语句 (9) 2.1.3 给表设置主键 (10) 2.1.4 编辑表的字段 (14) 2.1.5 输入条件查询 (15) 2.1.6删除表 (16) 2.1.7编辑表的数据 (17) 2.2视图(View) (19) 2.2.1概念 (19) 2.2.2创建视图 (19) 2.3其它数据库对象 (19) 2.4数据库对象的导出\导入 (20) 2.4.1表的导出 (20) 2.4.2 Dmp导出参数介绍 (23) 2.4.2 表的导入 (24) 四 .其它操作 (27) 1.SQL美化 (27)

一 .登录PL/SQL Developer 1.1 登录PL/SQL Devel oper (1)登录4要素 a. 用户名(username) b. 密码(password) c. 数据库服务名(Database) d. 连接身份(Connect as) (2)要素说明 ●用户名(username)和密码(password):即数据库登录用户和登录密码,由 数据库管理员提供 ●数据库服务名(Database):数据库服务名可在下拉列表中选择(由 tnsnames.ora文件中描述的名字来确定),前提是通过Net Configuration Assistant来配置,或者直接修改tnsnames.ora文件。 ●连接身份(Connect as):若为一般用户,默认为normal即可;若为sys或

实验1 ORACLE基本操作-使用SQL DEVELOPER

实验1 ORACLE 基本操作 实验目的:掌握ORACLE的连接,了解ORACLE的数据库结构;熟悉PLSQL/Developer图形化管理工具的使用。 实验内容: 一、机房环境的准备工作(每次重新启动机器后必做的工作) 为了能启动ORACLE并利用图形化的管理工具PLSQL/Developer对ORACLE数据库进行操作,在机房的机器中要先做如下的准备工作: 1、查看自己的机器名 方法:右击“我的电脑”→“属性”,找到并记住自己的计算机名 2、修改监听程序 方法:“开始”→“所有程序”→“Oracle-OraDb11g_home1”→“配置和移植工具”→“Net Manager”,在弹出的窗口中展开目录至最后的“LISTENER”,在右侧的窗口中将主机名改成自己的主机名→单击窗口右上角的红色叉号按钮关闭→在弹出的对话框中选择“保存”。

3、启动服务 右击“我的电脑”→“管理”→“服务和应用程序”→“服务” 找到并按顺序启动如下两个服务: 。 启动顺序:先启动,再启动 启动方法:右击服务名选择“启动” 注:当在自己的机器上使用时,这两个服务若显示已启动则不用重新再启动。 二、运行SQL Developer,建立与ORACLE数据库的连接 1、运行Oracle自带的SQL Developer软件 方法:“开始”→“所有程序”→“Oracle-OraDb11g_home1”→“应用程序开发”→“SQL Developer” 2、以system用户建立与数据库的连接 在SQL Developer窗口中选中“连接”→点击“新建”按钮,

在窗口中输入以下信息,使其以system用户与数据库进行连接 注: 连接名:可以随便起 用户名:system,若以其他用户身份登录,可以在这里更改用户名 密码:123456 SID:orcl 点击“测试”按钮,若成功则在左下角显示“状态:成功”,若有错误,则会出现红色的提示信息,按信息进行问题查找。 最后点击“连接”按钮进行连接

windows 系统应用与维护

Ⅱ戊辰B:windows 系统应用与维护(5%) 4+13+7 单选; 1.Windows将整个计算机显示屏幕看作是()。C A.工作台B.窗口C.桌面D.背景 2.Excel中的工作簿是(D)。 A.一本书 B.一种记录 C.一张表 D. 由工作表组成的文档 3.下面对E-Mail的描述中,只有(d )是正确的。 (A)不能给自己发送E-Mailb (B)一封E-Mail只能发给一个人 (C)不能将E-Mail转发给他人(D)一封E-Mail能发送给多个人 4.从E-Mail服务器中取回来的邮件,通常都保存在客户机的( b)里。 (A)发件箱(B)收件箱(C)已发送邮件箱(D)已删除邮件箱 5、我行网银系统共由多少台设备组成(B) A、30 B、66 C、64 D、13 6、我行网银系统由多少种硬件设备组成(A) A、18 B、17 C、16 D、15 7、我行网银系统网络结构共分多少个区域(C) A、4 B、5 C、7 D、6 8、我行网银系统设计最大寿命为多少年(A) A、8 B、7 C、6 D、5 9、我行网银系统防止暴力破解密码的措施为(A) A、输入5次密码错误以后,系统自动冻结账号一天

B、访问控制列表 C、将账户删除 D、无保护措施 10.以下哪个软件不是信管系统日常开发维护时的常用软件( D ) A.tomcat B.plsql C.myeclipse D.ESET 11.以下哪个是信管系统的正确地址( B ) A.http://16.3.1.75:7001/console B.http://16.3.1.75/credit C.http://16.3.1.75/ICRWeb D.http://16.3.1.75/ECRWeb 12.以下哪个是企业征信系统的正确地址( D ) A.http://16.3.1.75:7001/console B.http://16.3.1.75/credit C.http://16.3.1.75/ICRWeb D.http://16.3.1.75/ECRWeb 13.以下哪个是个人征信系统的正确地址( D ) A.http://16.3.1.75:7001/console B.http://16.3.1.75/credit C.http://16.3.1.75/ICRWeb D.http://16.3.1.75/ECRWeb 14.关于信管系统浏览器配置说法错误的是( D ) A.需要安装ActiveX控件 B.启用下载未签名的ActiveX控件项 C.禁用弹出窗口阻止程序项,并要把网址添加到可信站点中 D.以上说法都是错误的 15.Windows中安装相应的应用软件,通过控制面板中的( C )控件完成。 A、系统B、添加新硬件 C、添加/删除程序D、多媒体 16.在WINDOWSXP中,若鼠标指针变成“I”形状,则表示( D ) A、当前系统正在访问磁盘B、可以改变窗口的大小 C、可以改变窗口的位置D、鼠标指针出现处可以接收键盘的输入 17.不能利用WINDOWSXP资源管理器直接完成的任务是( C ) A、删除文件B、新建文件夹C、对硬盘分区D、复制文件 18.在WINDOWS XP中,使用软键盘可以快速的输入各种特殊符号,为了撤消弹出的软键盘,正确的操作是( A ) A、用鼠标左键单击软键盘上的ESC键 B、用鼠标右键单击软键盘上的ESC键 C、用鼠标右键单击中文输入法状态窗口中的软键盘按钮

Oracle常见死锁发生的原因以及解决方法

Oracle常见死锁发生的原因以及解决方法 Oracle常见死锁发生的原因以及解决办法 一,删除和更新之间引起的死锁 造成死锁的原因就是多个线程或进程对同一个资源的争抢或相互依赖。这里列举一个对同一个资源的争抢造成死锁的实例。 Oracle 10g, PL/SQL version 9.2 CREATE TABLE testLock( ID NUMBER, test VARCHAR(100) ) COMMIT INSERT INTO testLock VALUES(1,'test1'); INSERT INTO testLock VALUES(2,'test2'); COMMIT; SELECT * FROM testLock 1. ID TEST 2.---------- ---------------------------------- 3. 1 test1 4. 2 test2 死锁现象的重现: 1)在sql 窗口执行:SELECT * FROM testLock FOR UPDATE; -- 加行级锁并对内容进行修改, 不要提交 2)另开一个command窗口,执行:delete from testLock WHERE ID=1; 此时发生死锁(注意此时要另开一个窗口,不然会提示:POST THE CHANGE RECORD TO THE DATABASE. 点yes 后强制commit):

3)死锁查看: 1.SQL> select https://www.wendangku.net/doc/3f13919420.html,ername,l.object_id, l.session_id,s.serial#, s.lockwait,s.status,s.machine, s.program from v$session s,v$locked_object l where s.sid = l.session_id; USER NAME SESSION_ID SERIAL# LOCKWAIT STATUS MACHINE PROGRAM 2.---------- ---------- ---------- -------- -------- ---------------------- ------------ 3.SYS 146 104 INACTIVE WORKGROUP\J-THINK PLSQLDev.exe 4.SYS 144 145 20834474 ACTIVE WORKGROUP\J-THINK PLSQLDev. exe 字段说明: Username:死锁语句所用的数据库用户; SID: session identifier,session 标示符,session 是通信双方从开始通信到通信结束期间的一个上下文。 SERIAL#: sid 会重用,但是同一个sid被重用时,serial#会增加,不会重复。 Lockwait:可以通过这个字段查询出当前正在等待的锁的相关信息。 Status:用来判断session状态。Active:正执行SQL语句。Inactive:等待操作。Killed:被标注为删除。 Machine:死锁语句所在的机器。 Program:产生死锁的语句主要来自哪个应用程序。 4)查看引起死锁的语句:

Oracle PLSQL语言基础

Oracle PL/SQL语言基础 PL/SQL是ORACLE对标准数据库语言的扩展,ORACLE公司已经将PL/SQL整合到ORACLE 服务器和其他工具中了,近几年中更多的开发人员和DBA开始使用PL/SQL,本文将讲述PL/SQL基础语法,结构和组件、以及如何设计并执行一个PL/SQL程序。 PL/SQL的优点 从版本6开始PL/SQL就被可靠的整合到ORACLE中了,一旦掌握PL/SQL的优点以及其独有的数据管理的便利性,那么你很难想象ORACLE缺了PL/SQL的情形。PL/SQL 不是一个独立的产品,他是一个整合到ORACLE服务器和ORACLE工具中的技术,可以把PL/SQL看作ORACLE服务器内的一个引擎,sql语句执行者处理单个的sql语句,PL/SQL 引擎处理PL/SQL程序块。当PL/SQL程序块在PL/SQL引擎处理时,ORACLE服务器中的SQL语句执行器处理pl/sql程序块中的SQL语句。 PL/SQL的优点如下: . PL/SQL是一种高性能的基于事务处理的语言,能运行在任何ORACLE环境中,支持所有数据处理命令。通过使用PL/SQL程序单元处理SQL的数据定义和数据控制元素。 . PL/SQL支持所有SQL数据类型和所有SQL函数,同时支持所有ORACLE对象类型 . PL/SQL块可以被命名和存储在ORACLE服务器中,同时也能被其他的PL/SQL程序或SQL命令调用,任何客户/服务器工具都能访问PL/SQL程序,具有很好的可重用性。 . 可以使用ORACLE数据工具管理存储在服务器中的PL/SQL程序的安全性。可以授权或撤销数据库其他用户访问PL/SQL程序的能力。 . PL/SQL代码可以使用任何ASCII文本编辑器编写,所以对任何ORACLE能够运行的操作系统都是非常便利的 . 对于SQL,ORACLE必须在同一时间处理每一条SQL语句,在网络环境下这就意味作每一个独立的调用都必须被oracle服务器处理,这就占用大量的服务器时间,同时导致网络拥挤。而PL/SQL是以整个语句块发给服务器,这就降低了网络拥挤。 PL/SQL块结构 PL/SQL是一种块结构的语言,组成PL/SQL程序的单元是逻辑块,一个PL/SQL 程序包含了一个或多个逻辑块,每个块都可以划分为三个部分。与其他语言相同,变量在使用之前必须声明,PL/SQL提供了独立的专门用于处理异常的部分,下面描述了PL/SQL块的不同部分: 声明部分(Declaration section)

ape安装配置手册

A P E X安装简单的说,共分四步:1、安装O r a c l e D B APEX2.2要求Oracle DB版本为9.2.0.3或更高。注意APEX2.2不支持Oracle DB XE,如果你的数据库是Oracle DB XE,就要选用APEX2.1。我这里选用的数据库是Oracle 10.2.0.1,虽然不是目前最高的版本(最高的版本是10.2.0.1的patchset),但是已经包含了很多令人振奋的新特性了。建议 C S D N的朋友们也多使用一些O r a c l e产品的新版本,时刻保持对新技术的敏感度。 O r a c l e D B的免费下载网址为:h t t p://w w w.o r a c l e.c o m/t e c h n o l o g y...r a c l e10g/i n d e x.h t m l 注意:不要用下载的软件从事有任何商业目的的活动。 下载之后开始安装,步骤非常简单。你可以选择在安装的同时创建一个数据库,或者在安装结束后用DBCA 创建一个数据库,最好将数据库的字符集设为AL32UTF8(如果你想让你的数据库支持多种语言,请选用AL32UTF8;否则可以考虑使用一种native本地的字符集,比如ZHS16GBK)。这里我创建了一个service n a m e为t i n a03.c n.o r a c l e.c o m(S I D为t i n a03)的数据库。安装结束后,打开services(服务)窗口,你可以看到里面多了数个oracle的服务,其中包括我们需要的OracleServiceTINA03和OracleOraDb10gTNSListener,其他的服务都可以停掉且设为手动启动。 2、安装O r a c l e H t t p S e r v e r APEX2.2是需要部署到Oracle Http Server上的,它所以能运行主要是依赖于mod_plsql这个模块。下面这三个系列的产品可以满足需要:

PLSQL编程基础

淮海工学院计算机工程学院实验报告书 课程名:《大型数据库概论》 题目:PL/SQL编程基础 班级:********* 学号:*********** 姓名:**********

实验2 PL/SQL编程基础 实验目的 1.掌握PL/SQL基础,包括PL/SQL语句块、变量、常用数据类型、运算符和表达式。 2. 掌握PL/SQL控制结构,包括顺序、选择、NULL和循环四种结构及GOTO语句。 3. 掌握PL/SQL中游标的使用方法。 4. 掌握SQL *Plus和Worksheet开发环境的使用方法。 实验环境 局域网,windows 2003 实验学时 2学时,必做实验。 实验内容 1. 编写一个PL/SQL程序块,计算100以内的奇数和。 2. 编写PL/SQL块计算并输出S=1!+2!+…+10!。 3.编写一个PL/SQL块用于计算两个正整数的最大公约数。 4.编写一个PL/SQL程序块,使用游标对一个数据库表中的数据进行查询。 实验步骤 1、选择“开始”→“所有程序”→Oracle-OraHome92→Application Development→SQL Plus 2、系统出现“登录”对话框。输入用户名为“scott”、口令为“tiger”、主机字符串 为“school”。 3、单击“确定”按钮,出现“SQL *Plus的工作窗口”。 4、编写PL/SQL程序。 4.1、编写一个PL/SQL程序块,计算100以内的奇数和。 set serveroutput on; declare p integer; m integer; n integer; begin m:=2; n:=0; for p in 1..100 loop if p mod m<>0 then n:=n+p; end if; end loop;

PLSQL学习(一) 基础知识

PLSQL学习(一) 基础知识 很久以前自己整理的PLSQL一些基础知识,翻出来看看都是比较基础的内容,还是放上来好了。参考的资料是《PL/SQL用户指南与参考》中译版,觉得这是一部很不错的入门书,感谢把这本书翻译出来的网友。 1、乘方的不同应用: 在SQL中乘方只能使用函数Power(a,b)来计算 但在PLSQL中可直接使用a**b表示 2、赋值语句Returning: insert into t1 values(90,'SERVICE','BEIJING') Returning rowid,name into row_id,info; 注:只限insert、update、delete一条记录时进行赋值 3、自定义参数——&: 可SQL和PLSQL中均可使用自定义参数,即需要自己输入值的参数 select * from ldcom where comcode=&a andname=&b; PLSQL: declare i int := &a; n int := &b; 4、绑定变量的使用: 可使用绑定变量的办法提高SQL效率 SQL> variable x number ; SQL> exec :x := 8600 ; SQL> select * from ldcom where comcode= :x ; 注:PLSQL中的declare即隐士绑定,无需再申明

可用Print查看绑定变量 SQL> print x; 也可使用查询SQL> select :x from dual; 实际的简单应用: variable x number; declare v_date date; begin for i in1.. 10loop :x := i; select sysdate+:x into v_date from dual; dbms_output.put_line(v_date); end loop; end; / 在execute immediate中的应用: declare v_x t1.num%type; begin execute immediate'update t1 set num=8888 where id=:a returning num into :b' using2returning into v_x; dbms_output.put_line(v_x); end; 注意returning的返回值在动态SQL中的操作格式 5、%TYPE和%ROWTYPE的区别: %TYPE针对某一字段类型(数组也是单一的类型) %ROWTYPE针对某一整表的类型(游标也是整表)

Oracle11g自带的SQL developer无法打开解决方案

在安装完Oracle Database 11g Release 2数据库,想试一下Oracle自带的SQL Developer 工具,在操作系统菜单的所有程序中找到SQL Developer如下所示,并单击: 结果却提示缺少快捷方式,没找到“SQLDEVELOPER.BAT”,如下所示:

在Oracle的安装目录 D:\DataBaseInstall\Oralce_11g_r2\product\11.2.0\dbhome_1\sqldeveloper\sqldeveloper\ bin下的确也没找到sqldeveloper.bat文件。网上很多人都说重新下载SQL Developer替换掉安装Oracle时自带的那个。 重新到Oracle官网下载SQL Developer,当前最新版下载地址: https://www.wendangku.net/doc/3f13919420.html,/otn/java/sqldeveloper/sqldeveloper64-3.2.20.09.87-no-jre.zip 将下载下来的sqldeveloper64-3.2.20.09.87-no-jre.zip解压到Oracle安装目录下

这时重新单击操作系统菜单中的“SQL Developer”,看到命令窗口闪一下就消失了。看了一下SQL Developer的“readme.html”文档知道了SQL Developer 3.2支持的Java版本至少要1.6.0_04。

那就下载当前最新JDK安装,在这里我下载的是 jrockit-jdk1.6.0_37-R28.2.5-4.1.0-windows-x64.exe。下载完成后双击出现如下安装界面:

最新PLSQL+Developer工具的使用(非常详细)

PLSQL Developer工具的使用 1 2 PLSQL Developer的安装十分简单,先安装PL.SQL.Developer.exe文件,3 然后安装chinese.exe文件进行汉化。安装成功后在桌面点击PLSQL Developer 4 的快捷方式进入登录页面(如图1)。 5 6 图1 7 输入用户名和口令,选择好要连接的数据库,点击“确定”登录成功(如8 图2)。

9 10 图2 11 在成功登录后会进入到PLSQL Developer的操作界面(如图3)。 12 13 图3 14 用户可以在左边下拉菜单中选择“我的对象”,然后点击“Table”可以

15 显示出项目所涉及的数据库中所有表(如图4)。 16 17 图4 18 新建表,点击Table文件夹,然后点击鼠标右键在列表中选择“新建” 19 选项进入到创建新表的页面(如图5),用户可以根据自己的需要来创建新表,20 但一定要遵循Oracle规范 21 信息填写完毕后点击“应用”按钮创建成功。

22 23 图5 24 修改表结构,可以选中要该表后点击鼠标右键在列表中选择“编辑”选项25 进入到修改表结构的页面(如图6),这里显示的都是该表的结构信息,如要进26 行修改操作请根据实际情况慎重修改,修改后点击“应用”按钮提交修改内容。 27 28 图6

29 修改表名,可以选中要该表后点击鼠标右键在列表中选择“重新命名” 30 选项进入到重新命名的页面(如图7),这里需要注意的是表名起的一定要有意31 义。 32 33 图7 34 查询表结构,可以选中要该表后点击鼠标右键在列表中选择“查看”选项35 进入到查看表结构的页面(如图8)。

查询oracle表空间路径

ORACLE查看表空间路径、当前用户的表空间等 查看当前用户每个表占用空间的大小: Select Segment_Name,Sum(bytes)/1024/1024 From User_Extents Group By Segment_Name 查看每个表空间占用空间的大小: Select Tablespace_Name,Sum(bytes)/1024/1024 From Dba_Segments Group By Tablespace_Name 查看Oracle当前用户下的信息(用户,表视图,索引,表空间,同义词,存储过程函数,约束条件)0、表空间 SQL>select username,default_tablespace from user_users; 查看当前用户的角色 SQL>select * from user_role_privs; 查看当前用户的系统权限和表级权限 SQL>select * from user_sys_privs; SQL>select * from user_tab_privs; 查看用户下所有的表 SQL>select * from user_tables; 1、用户 查看当前用户的缺省表空间 SQL>select username,default_tablespace from user_users; 查看当前用户的角色 SQL>select * from user_role_privs; 查看当前用户的系统权限和表级权限 SQL>select * from user_sys_privs; SQL>select * from user_tab_privs; 显示当前会话所具有的权限 SQL>select * from session_privs; 显示指定用户所具有的系统权限

PLSQL 快捷键设计以及添加快捷键

PL/SQL 快捷键 1 修改Code assistant快捷键 tools->preferences->User Interface -> Key Configuration -> tools/ code assistant 改为自己想要的快捷键 tools -> code assistant 可以查看帮助的快捷键 2 修改Sql 语句大小写 默认pl/sql 没有提供快捷键 选中sql,点击edit --> selection --> Uppercase 当然了也可以按照1来增加快捷键 tools->preferences->User Interface -> Key Configuration --> edit/selection/Uppercase 改为自己想要的快捷键 使用PL/SQL中经常性需要输入select * from 这样类似的语句。能不能配置一个快捷键,比如输入s,直接就显示select * from 呢?显然PL/SQL是支持该功能的。 在PL/SQL的安装目录下面:$:\Program Files\PLSQL Developer\PlugIns 中添加一个文本文件,比如命名为:shortcuts.txt。文本文件中填写如下内容: s = select * from 打开PL/SQL,在Tools->Perferences->Editor中Autoreplaces选择配置的shortcuts文件。如下图:

确定后重启PL/SQL就可以了。在编辑页面,输入s 就会显示select * from 附录:个人编写文件内容: s=select * from ; st = select t.* ,t.rowid from t ; sf = select a.* from a ; d = delet e from where ; u = update a set a. where a. ; w = where ; dbs=dbms_output.put_line('); 应用时,快捷键+回车就可以出现了!

oracle的TM锁、TX锁知识完全普及

oracle的TM锁、TX锁知识完全普及 锁概念基础 数据库是一个多用户使用的共享资源。当多个用户并发地存取数据时,在数据库中就会产生多个事务同时存取同一数据的情况。若对并发操作不加控制就可能会读取和存储不正确的数据,破坏数据库的一致性。 加锁是实现数据库并发控制的一个非常重要的技术。当事务在对某个数据对象进行操作前,先向系统发出请求,对其加锁。加锁后事务就对该数据对象有了一定的控制,在该事务释放锁之前,其他的事务不能对此数据对象进行更新操作。 在数据库中有两种基本的锁类型:排它锁(Exclusive Locks,即X 锁)和共享锁(Share Locks,即S锁)。当数据对象被加上排它锁时,其他的事务不能对它读取和修改。加了共享锁的数据对象可以被其他事务读取,但不能修改。数据库利用这两种基本的锁类型来对数据库的事务进行并发控制。 Oracle数据库的锁类型 根据保护的对象不同,Oracle数据库锁可以分为以下几大类:DML锁(data locks,数据锁),用于保护数据的完整性;DDL锁(dictionary

locks,字典锁),用于保护数据库对象的结构,如表、索引等的结构定义;内部锁和闩(internal locks and latches),保护数据库的内部结构。 DML锁的目的在于保证并发情况下的数据完整性,。在Oracle数据库中,DML锁主要包括TM锁和TX锁,其中TM锁称为表级锁,TX锁称为事务锁或行级锁。 当Oracle 执行DML语句时,系统自动在所要操作的表上申请TM类型的锁。当TM锁获得后,系统再自动申请TX类型的锁,并将实际锁定的数据行的锁标志位进行置位。这样在事务加锁前检查TX锁相容性时就不用再逐行检查锁标志,而只需检查TM锁模式的相容性即可,大大提高了系统的效率。TM锁包括了SS、SX、S、X 等多种模式,在数据库中用0-6来表示。不同的SQL操作产生不同类型的TM锁。 在数据行上只有X锁(排他锁)。在 Oracle数据库中,当一个事务首次发起一个DML语句时就获得一个TX锁,该锁保持到事务被提交或回滚。当两个或多个会话在表的同一条记录上执行 DML语句时,第一个会话在该条记录上加锁,其他的会话处于等待状态。当第一个会话提交后,TX锁被释放,其他会话才可以加锁。 当Oracle数据库发生TX锁等待时,如果不及时处理常常会引起Oracle数据库挂起,或导致死锁的发生,产生ORA-60的错误。这些现象都会对实际应用产生极大的危害,如长时间未响应,大量事务失

一个ORACLE被重启后报ora-12514的问题

首先,也没什么,主要写给广大在现场当炮灰的实施同事们。希望有意见的提意见,有想法的提想法。ORACLE的问题,一向都是我们的弱项,希望我们一同努力,分享所知,所学,所经验…… 下面正式 --------------------------分割线---------------------------------- 问题来源:泰州惩防平台 问题描述:就在前天小季遇到了这个样的一个问题: ORACLE 服务正常重启后,发现登录不进去了,重启之前十分健康,也没做什么多余的操作,具体如图。 通过services控制台重启ORACLE 重启正常。 但是PLSQL不能登录了。报错:12514。

解决过程: 其实小季求助于我的时候,已经百度谷歌了12514的解决办法,尝试了网上的解决方案,是没有效果的。 Iteye上有报错的几个原因:Oracle-12514错误发生的几种原因 都是没有效果。 问我,也不知道该怎么办,我能先想到的是,重启服务器。心里想:既然没有动什么,是不是系统环境改了什么导致的。结果重启服务器后还是不行。 然后确定是不是客户端配置的问题,直接上服务器SQLPLUS。 结果也是12514。 该死。果真是ORACLE服务出问题了。 怎么办,既然监听有问题,就卸载了重装监听吧。我老是觉得重装比什么都好,不要管这么多了。其实我是在逃避问题。

重新配置完成。 擦!还是12514。 没办法了。难道不是监听的问题,那就是ORACLE服务的问题了。服务没有起出来吗?来吧用SQLPLUS重启下看看。 ORACLE not available是什么意思。服务没有起出来?

PLSQL语言基础

上机4 PL/SQL语言基础 上机内容 1. 程序结构 2. 流程控制 3. 异常处理 4. 开发动态SQL 上机目标 1. 掌握PL/SQL程序结构 2. 掌握PL/SQL流程控制 3. 掌握PL/SQL异常处理 4. 掌握PL/SQL中开发动态SQL的方法 阶段1 指导部分 训练内容 PL/SQL块程序结构中的数据类型 需求说明 在VALUES子句中使用记录变量插入数据是Oracle 9i新增的特征。在VALUES子句中使用记录变量插入数据时,列的顺序、个数、类型必须与记录成员的顺序、个数、类型完全匹配,如图2.4.1所示。

在VALUES子句 中使用记录变量 图2.4.1 在VALUES子句中使用记录变量 另外,从Oracle 9i开始,在SET子句中不仅可以使用记录成员,而且还可以直接使用记录变量。当在SET子句中使用记录变量更新数据时,列的顺序、个数、类型必须与记录成员的顺序、个数、类型完全匹配。现要求实现:由用户输入部门编号,通过在SET子句中使用记录变量的方式来修改指定部门信息。 实现思路 定义一个关于DEPT部门表的%ROWTYPE变量,让用户通过替换变量给其中的deptno部门编号赋值,通过UPDATE语句进行更新,如图2.4.2所示。

注意使用 ROW关键字 图2.4.2 在SET子句中使用记录变量 练习部分(一) 需求说明 索引表(TABLE)类型不仅可以在PL/SQL中直接使用,也可以作为表列的数据类型使用。在表列中使用索引表类型时,必须首先使用CREATE TYPE命令创建索引表类型。需要注意的是,当使用索引表类型作为列的数据类型时,必须为索引表列指定专用的存储表。例如,需要存储一个会员(TB_VIPInfo)信息时,需要记录该会员的联系方式,但该会员的联系方式可能有多个,因此可以考虑在记录会员联系方式的列上使用索引表。创建一个关于会员信息表,并使用索引表类型作为该表中的某列,如图2.4.3所示。

PLSQL使用方法

1.1PLSQl远程连接oracle数据库 1.1.1配置tnsnames.ora 路径:X:\XXX\PLSQL Developer 9.0.0.1601\orcl_client\tnsnames.ora tnsnames.ora配置: orcl = (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.1)(PORT = 1521)) ) (CONNECT_DATA = (SID = orcl) ) ) 其中HOST为主机IP地址,红色字体处 PORT为oracle开放端口号 SERVICE_NAME为连接数据库名字,蓝色字体处 *此配置参数可以配置多个,也就是可以配置多个连接字符串(全局名称) 1.1.2添加连接环境变量 变量名:TNS_ADMIN 变量值:X:\XXX\PLSQL Developer 9.0.0.1601\orcl_client 1.1.3添加ORACLE的语言环境变量: 变量名:NLS_LANG 变量值:AMERICAN_AMERICA.ZHS16GBK(设置ORACLE的语言) 重新连接,即可正常显示中文。 如果想转换为UTF8字符集,可以赋予"NLS_LANG"为"AMERICAN_AMERICA.UTF8",其他编码同上

1.1.4下载并安装PL.SQL.Developer,配置应用: 配置tools->preferences->connection PLSQL 设置 Oracle Home=X:\XXX\PLSQL Developer 9.0.0.1601\orcl_client OCI library=X:\XXX\PLSQL Developer 9.0.0.1601\orcl_client\oci.dll 1.1.5重启plsql 再次打开plsql则会在database中有oracledata选项输入用户名密码就可以登陆。 1.2导入基础数据 1.2.1输入用户名密码登录plsql

oracle知识点整理

╔---------------------------╗ ☆2.用户管理:☆ ╚---------------------------╝ 用dos命令打开或关闭监听服务: 启动监听:lsnrctl start 停止监听:lsnrctl stop 查看监听:lsnrctl status 创建用户(create):create user用户名identified by密码;例:create user zhangsan indentified by zhangsan 修改用户密码(alter):alter user用户名identified by密码;例:alter user zhangsan identified by zhangsan1 删除用户(drop):Drop user用户名cascade例:drop user zhangsan cascade(带cascade 的删除语句可以不管用户是否拥有模式对象,连同一起删除) 用户状态管理(alter):锁定用户:alter user用户名account lock;例:alter user zhangsan account lock 解锁用户:alter user用户名account unlock;例:alter user zhangsan account unlock 权限管理 (grand,revoke): DBA: 拥有全部特权,是系统最高权限,只有DBA才可以创建数据库 结构。 RESOURCE:拥有Resource权限的用户只可以创建实体,不可以创建数 据库结构。 CONNECT:拥有Connect权限的用户只可以登录Oracle,不可以创建 实体,不可以创建数据库结构 对于普通用户:授予connect, resource权限即可。 对于DBA管理用户:授予connect,resource, dba权限 权限授予:grant connect, resource, dba to用户名1 [,用户名2]... 权限回收:Revoke connect, resource from用户名 实体权限分类:select, update, insert, alter, index, delete, all //all包括 所有权限 execute//执行存储过程权限 例:grant select, update, insert on product to 用户名; 例:grant all(所有权限) on product to 用户名; 更多见(Oracle用户、权限、角色管理.txt)文本 ╔---------------------------╗ ☆3.空间管理:☆ ╚---------------------------╝ 创建表空间(tablesapce): 表空间: Create tablesapce表空间名(rb_开头)datafile地址(如‘d:datafiles.dbf’) size 50M; size:表空间大小

系统的安装与配置说明书

HH-IVMSR型铁路综合视频监控系统安装与配置说明书 河南辉煌科技股份有限公司 2011年09月

目录 1文档介绍 (1) 2数据库与HH-IVMSR软件安装要求 (1) 2.1操作系统要求 (1) 2.2安装位置要求 (1) 2.3空间配置要求 (1) 2.4网络要求 (1) 3数据库安装与配置 (1) 3.1数据库简介 (1) 3.2数据库安装 (1) 3.2.1客户端安装 (1) 3.2.2服务端安装 (2) 3.3数据库配置 (4) 3.4导入数据模板............................................................ 错误!未定义书签。4HH-IVMSR软件安装与配置.. (9) 4.1HH-IVMSR软件简介 (9) 4.2管理终端配置 (9) 4.2.1系统管理 (10) 4.2.2设备管理 (12) 4.2.3绑定管理 (14) 4.2.4用户管理 (18) 4.2.5权限管理 (19) 4.3服务器配置 (20) 4.3.1管控服务器配置.............................................. 错误!未定义书签。 4.3.2应用服务器配置 (21) 4.3.3存储服务器配置.............................................. 错误!未定义书签。 4.3.4转发服务器配置.............................................. 错误!未定义书签。 4.3.5监控终端配置 (23) 5服务器运行 (24)

相关文档