天使羊波波闪耀光芒 软件及互联网爱好者

137月/151

CentOS搭建Weblogic容器

Weblogic是一个Java App的容器,一般大型应用跑在Weblogic中。系统为CentOS6.2 64bit。

一、安装
这里安装的是Weblogic 11g。

1、下载地址:
http://www.oracle.com/technetwork/cn/middleware/ias/downloads/wls-main-091116-zhs.html

64位版本选择:
Oracle WebLogic Server 11gR1 (10.3.6) + Coherence - 打包安装程序
通用:1 GB File1

网盘共享地址:
wls1036_generic.jar

2、安装JDK
通用的64位Weblogic安装程序本身并未包含JDK,所以要先下载并安装JDK。
安装过程见前一篇:CentOS搭建tomcat容器

3、开始安装
控制台安装模式:

java -jar wls1036_generic.jar -mode=console

1)输入next

Extracting 0%....................................................................................................100%

< -------------------- Oracle Installer - WebLogic 10.3.6.0 ------------------->

Welcome:
--------

This installer will guide you through the installation of WebLogic 10.3.6.0. 
Type "Next" or enter to proceed to the next prompt.  If you want to change data entered previously, type "Previous".  You may quit the installer at any time by typing "Exit".

Enter [Exit][Next]> 

77月/150

CentOS搭建tomcat容器

这里我们要配置JDK1.8 + Tomcat 8的环境。Tomcat是一个web容器,里面跑的是web applaction。系统为CentOS6.2 64bit。

一、安装JDK1.8
1、下载
http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html
由于无法直接获取下载地址,只能先在本机下载再上传rpm包到服务器

网盘共享地址:
jdk-8u45-linux-x64.tar.gz
jdk-8u45-linux-x64.rpm

2、卸载OpenJDK

rpm -qa | grep java

网上说要先卸载旧版的JDK,如果有的话。

3、安装
上传之后安装:

# rpm -ivh /tmp/jdk-8u45-linux-x64.rpm

Preparing...                ########################################### [100%]
   1:jdk1.8.0_45            ########################################### [100%]
Unpacking JAR files...
	rt.jar...
	jsse.jar...
	charsets.jar...
	tools.jar...
	localedata.jar...
	jfxrt.jar...
	plugin.jar...
	javaws.jar...
	deploy.jar...


JDK安装路径为/usr/java。

17月/152

PL/SQL基础学习(4)

--1、select * into 必须只满足一条记录 没有记录或有多条记录会报异常
--只能取出一条 要取多条要用游标
--2、update和delete语句没有记录或多条记录满足都不会出现异常

3、
--select * into 如果没找到记录会出现异常

--/
DECLARE
v_emp emp%rowtype;
BEGIN
select * into v_emp from emp where empno = 9999;
dbms_output.put_line(v_emp.ename);
EXCEPTION
WHEN NO_DATA_FOUND THEN
dbms_output.put_line('未找到记录');
END;
/

4、
--select * into 如果有多行记录满足也会出现异常

--/
DECLARE
v_emp emp%rowtype;
BEGIN
select * into v_emp from emp where job = 'MANAGER';
dbms_output.put_line(v_emp.ename);
EXCEPTION
WHEN TOO_MANY_ROWS THEN
dbms_output.put_line('超过一行返回');
END;
/

17月/150

oracle数据库对象-游标

游标分为隐式游标和显示游标。

一、隐式游标
对于select * into和DML操作(update、delete、insert)都附带有一个隐式游标。

隐式游标的属性

SQL%ROWCOUNT   整型  代表DML语句成功执行的数据行数
SQL%FOUND    布尔型  值为TRUE代表插入、删除、更新或单行查询操作成功
SQL%NOTFOUND 布尔型  与SQL%FOUND属性返回值相反
SQL%ISOPEN   布尔型  DML执行过程中为真,结束后为假


当系统使用一个隐式游标时,可以通过隐式游标的属性来了解操作的状态和结果,进而控制程序的流程。隐式游标可以使用名字SQL来访问,但要注意,通过SQL游标名总是只能访问前一个DML操作或单行SELECT操作的游标属性。所以通常在刚刚执行完操作之后,立即使用SQL游标名来访问属性。

例子:

--/
DECLARE
v_emp emp%rowtype;
BEGIN
delete from emp where empno = 9999;
IF SQL%notfound THEN
  dbms_output.put_line('隐式游标 属性为notfound');
END IF;
dbms_output.put_line('delete无记录不会出现异常');
END;
/

306月/150

PL/SQL基础学习(3)

1、--helloworld程序

--/
BEGIN
  DBMS_OUTPUT.PUT_LINE('Hello World!!!');
END;
/


2、--定义变量
--变量名 类型

--/
DECLARE
  A NUMBER(5, 2) := -1;
  B NUMBER(5, 2) := 3;
  C NUMBER(5, 2);
BEGIN
  C := A * B / (A + B);
  DBMS_OUTPUT.PUT_LINE('c=' || C);
EXCEPTION
  WHEN ZERO_DIVIDE THEN
    DBMS_OUTPUT.PUT_LINE('除数不能为0!');
END;
/


3、--定义常量

--/
DECLARE
a CONSTANT NUMBER := 100;
BEGIN
DBMS_OUTPUT.PUT_LINE(a);
END;
/

296月/150

oracle数据库对象-包

程序包是ORACLE PL/SQL的一个特性,它就像是一个容器或者说是一个命名空间,可以将各种逻辑相关的类型、常量、变量、异常和子程序结合在一起。为开发人员编写大型复杂应用程序时,提供了一个良好的组织单元。

当定义好了程序包之后,应用程序就可以通过包来访问各种不同的功能单元,而不用担心过多零散的子程序导致程序代码的松散。

一个PL/SQL程序包包含如下两个部分组成:
·包规范:主要是包的一些定义信息,不包含具体的代码实现部分。
·包体:包体是对包规范中声明的子程序的实现部分,包体的内容对于外部应用程序来说是不可见的,包体就像是一个黑匣子一样,是对包规范的实现。

1、包规范基本语法

CREATE [OR REPLACE] PACKAGE PACKAGE_NAME
{IS | AS}
  PACKAGE_SPECIFICATION
END PACKAGE_NAME;


例子:

--/
CREATE OR REPLACE PACKAGE pack_fun IS
--定义一个函数返回两个数的和
FUNCTION fun_add(num1 IN NUMBER, num2 IN OUT NUMBER) RETURN NUMBER;
--定义一个函数返回两个数的差
FUNCTION fun_sub(num1 IN NUMBER, num2 IN OUT NUMBER) RETURN NUMBER;
--定义一个存储过程显示九九乘法表
PROCEDURE proc_1;
END;
/

286月/150

oracle数据库对象-函数

函数的作用是计算一个功能,往往是用来计算并返回一个计算结果。

1、函数和存储过程的区别:
1)函数和过程比较类似,不同的是函数必须返回一个值,而过程仅是为了执行一系列的操作。

2)在调用的时候,函数可以作为表达式的一部分进行调用,并且可以使用在SELECT中。而过程只能作为一个PL/SQL语句进行调用,且不能在SELECT语句中使用。

3)函数的语法结构和过程比较类似,除了函数使用FUNCTION进行定义之外。外一个重要的特点就是,函数具有RETURN子句,指定函数的返回类型。

4)函数和存储过程都可以使用out参数来返回内容。

2、基本语法:

CREATE [OR REPLACE] FUNCTION function_name
[(parameter_name [IN | OUT | IN OUT]  TYPE[,....])]
RETURN TYPE
{IS | AS}
BEGIN
  FUNCTION BODY
END function_name;

286月/150

oracle数据库对象-存储过程

存储过程:一段程序,用于改变数据库对象的状态,可以包含一个或多个行为,往往是将一个表的记录经过处理后放到另一个表。

1、基本语法:

CREATE [OR REPLACE] PROCEDURE procedure_name
[(parameter_name [IN | OUT | IN OUT] TYPE[,....])]
{IS | AS }
  [LOCAL declarations]
BEGIN
  executable statements;
[EXCEPTION 
  exception_statements;
END procedure_name;


例子:

--/
CREATE OR REPLACE PROCEDURE proc_1 (num number, name varchar2)
IS
BEGIN
  insert into emp(empno, ename) values (num, name);
END;
/

246月/150

oracle trunc函数

trunc函数作用是截取日期,能准确到整点。截取后得到的仍为date数据类型。

一、基本用法
1、默认截取到日,例如:

select trunc(sysdate) from dual;

结果:2015-06-24 00:00:00

2、截取年:

select trunc(sysdate,'YYYY') from dual;

结果:2015-01-01 00:00:00

3、截取月:

select trunc(sysdate,'MM') from dual;

结果:2015-06-01 00:00:00

4、截取日:

select trunc(sysdate,'DD') from dual;

结果:2015-06-24 00:00:00

5、截取小时:

select trunc(sysdate,'HH24') from dual;

结果:2015-06-24 10:00:00

246月/150

oracle数据库对象-jobs

jobs是oracle数据库对象之一,定时任务。通过调用存储过程dbms_job.submit将任务加入到任务队列中。

查看dbms_job包,它有两个存储过程:

PROCEDURE isubmit ( job IN BINARY_INTEGER,
                    what IN VARCHAR2,
                    next_date IN DATE,
                    interval IN VARCHAR2 DEFAULT 'null',
                    no_parse IN BOOLEAN DEFAULT FALSE);
-- Submit a new job with a given job number.

PROCEDURE submit ( job OUT BINARY_INTEGER,
                   what IN VARCHAR2,
                   next_date IN DATE DEFAULT sysdate,
                   interval IN VARCHAR2 DEFAULT 'null',
                   no_parse IN BOOLEAN DEFAULT FALSE,

-- Bug 1346620: replace pkg vars with constants.
-- Default for instance = dbms_job.any_instance.
                  instance IN  BINARY_INTEGER DEFAULT 0,
                  force IN  BOOLEAN DEFAULT FALSE );
-- Submit a new job.  Chooses JOB from the sequence sys.jobseq.
-- instance and force are added for jobq queue affinity
-- If FORCE is TRUE, then any positive  integer is acceptable as the job
-- instance. If FORCE is FALSE, then the specified instance must be running;
-- otherwise the routine raises an exception.
-- For example,
--   variable x number;
--   execute dbms_job.submit(:x,'pack.proc(''arg1'');',sysdate,'sysdate+1');


注意我们用的是PROCEDURE submit这个存储过程。

1、基本语法

submit ( job OUT BINARY_INTEGER,
         what IN VARCHAR2,
         next_date IN DATE DEFAULT sysdate,
         interval IN VARCHAR2 DEFAULT 'null',
          no_parse IN BOOLEAN DEFAULT FALSE,
);


说明:
job:输出变量,是此任务在任务队列中的编号
what:执行的存储过程或sql语句
next_date:任务第一次执行的时间
interval:注意不是每次执行的间隔时间,而是下一次的执行时间,在本次执行之前对这个表达式求值算出下一次执行时间,所以一般都是sysdate加多少算出来的。

一般我们只要改前4个参数就可以了,任务下一次执行时间是在,本次任务开始时计算出来的。