linux derby path,试用开源数据库ApacheDerby

2022-04-08 00:00:00 数据库 版本 服务器 启动 窗口

0,版本

在下载,要求JRE版本不低于1.5.

1,设置环境

假设:

DERBY安装路径:D:\dev\db-derby-10.8.2.2-bin

用户环境变量设置如下:

myenv.bat:

set JAVA_HOME=C:\Program Files\Java\jdk1.6.0_04

set PATH=%JAVA_HOME%\bin;%PATH%

set DERBY_INSTALL=D:\dev\db-derby-10.8.2.2-bin

set CLASSPATH=%DERBY_INSTALL%\lib\derby.jar;%DERBY_INSTALL%\lib\derbytools.jar;%DERBY_INSTALL%\lib\derbynet.jar;%DERBY_INSTALL%\lib\derbyclient.jar;.

2,验证Derby

java org.apache.derby.tools.sysinfo

------------------ Java 信息 ------------------

Java 版本:        1.6.0_04

Java 供应商:      Sun Microsystems Inc.

Java 主目录:      C:\Program Files\Java\jdk1.6.0_04\jre

Java 类路径:      D:\dev\db-derby-10.8.2.2-bin\lib\derby.jar;D:\dev\db-derby-10

.8.2.2-bin\lib\derbytools.jar;.

OS 名:            Windows XP

OS 体系结构:      x86

OS 版本:          5.1

Java 用户名:      mahong

Java 用户主目录:C:\Documents and Settings\mahong

Java 用户目录:    D:\dev\db-derby-10.8.2.2-bin

java.specification.name: Java Platform. API Specification

java.specification.version: 1.6

java.runtime.version: 1.6.0_04-b12

--------- Derby 信息 --------

JRE - JDBC: Java SE 6 - JDBC 4.0

[D:\dev\db-derby-10.8.2.2-bin\lib\derby.jar] 10.8.2.2 - (1181258)

[D:\dev\db-derby-10.8.2.2-bin\lib\derbytools.jar] 10.8.2.2 - (1181258)

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

----------------- 语言环境信息 -----------------

当前语言环境:  [中文/中国 [zh_CN]]

找到支持的语言环境:[cs]

版本:10.8.2.2 - (1181258)

3,访问嵌入式数据库

窗口1:

启动数据库实例。

D:\dev\derby_db>java org.apache.derby.drda.NetworkServerControl start

窗口2:

D:\dev\java org.apache.derby.tools.ij

ij 版本 10.8

ij>connect 'jdbc:derby:MyDbTest;create=true';

lj>exit;

在当前路径下生成MyDbTest目录,并产生Derby.log日志文件.

这种方式下,数据库实例与应用程序在同一个JVM内.

4,访问服务器数据库

--窗口1:

--启动网络服务器

D:\dev\derby-db>java -jar %DERBY_INSTALL%\lib\derbyrun.jar server start

Wed Jun 06 19:34:35 CST 2012 : 已使用基本服务器安全策略安装了安全管理程序。

Wed Jun 06 19:34:35 CST 2012 : Apache Derby 网络服务器 - 10.8.2.2 - (1181258)

已启动并准备接受端口 1527 上的连接

--窗口2:

--以客户端方式连接:

D:\dev\java org.apache.derby.tools.ij

ij 版本 10.8

ij> connect 'jdbc:derby://localhost:1527/MyDbTest;create=true';

==>创建了数据库MyDbTest,在启动server的目录下.

ij> create table dept(deptno int not null,name varchar(30));

已插入/更新/删除 0 行

ij> alter table dept add constraint pk_dept primary key(deptno);

已插入/更新/删除 0 行

ij> create table emp(empno int,name varchar(40),addr varchar(40),deptno int);

已插入/更新/删除 0 行

ij> alter table emp add constraint fk_emp_r_dept foreign key(deptno) references

dept(deptno);

已插入/更新/删除 0 行

ij> insert into emp values(1,'name1','addr1',1);

错误 23503:表“EMP”上的 INSERT 导致违反键 (1) 的外键约束“FK_EMP_R_DEPT”。语

句已回滚。

==>外键约束

ij> insert into dept values(1,'deptname1');

已插入/更新/删除 1 行

ij> insert into emp values(1,'name1','addr1',1);

已插入/更新/删除 1 行

ij> commit;

ij> insert into emp values(2,'name2','addr2',1);

已插入/更新/删除 1 行

ij> rollback;

ij>exit;

--关闭服务器:

D:\dev\java -jar %DERBY_INSTALL%\lib\derbyrun.jar server shutdown

--窗口1:

--重新启动服务器

D:\dev\derby_db>java -jar %DERBY_INSTALL%\lib\derbyrun.jar server start

Wed Jun 06 20:20:32 CST 2012 : 已使用基本服务器安全策略安装了安全管理程序。

Wed Jun 06 20:20:32 CST 2012 : Apache Derby 网络服务器 - 10.8.2.2 - (1181258)

已启动并准备接受端口 1527 上的连接

--窗口2:

--启动客户端查询结果

D:\dev>java org.apache.derby.tools.ij

ij 版本 10.8

ij> connect 'jdbc:derby://localhost:1527/MyDbTest';

ij> select * from emp;

EMPNO      |NAME                                    |ADDR

|DEPTNO

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

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

1          |name1                                   |addr1

|1

2          |name2                                   |addr2

|1

已选择 2 行

==>通过测试表明:服务器启动时,并没有检查并打开数据库;只有在客户端访问时,在启动服务器的目录下创建或查找指定数据库;

启动一个服务器,可以同时支持客户端对多个数据库的访问.

5,测试java程序

窗口1:

启动数据库实例。

D:\dev\derby_db>java org.apache.derby.drda.NetworkServerControl start

窗口2:

D:\dev\db-derby-10.8.2.2-bin\demo\programs\simple>javac SimpleApp.java

注意:SimpleApp.java 使用了未经检查或不安全的操作。

注意:要了解详细信息,请使用 -Xlint:unchecked 重新编译。

D:\dev\db-derby-10.8.2.2-bin\demo\programs\simple>java SimpleApp derbyclient

SimpleApp starting in derbyclient mode

Loaded the appropriate driver

Connected to and created database derbyDB

Created table location

Inserted 1956 Webster

Inserted 1910 Union

Updated 1956 Webster to 180 Grand

Updated 180 Grand to 300 Lakeshore

Verified the rows

Dropped table location

Committed the transaction

SimpleApp finished

关于如何与其他产品配合,分别参考:

Eclipse:

iBatis:

Tomcat:

6,导入/导出

在当前目录准备myfile.txt:

3,name3,addr3,1

4,name4,addr4,1

5,name5,addr5,1

6,name6,addr6,1

窗口1:

启动数据库实例。

D:\dev\derby_db>java org.apache.derby.drda.NetworkServerControl start

窗口2:

D:\dev\derby_db>java org.apache.derby.tools.ij

ij> connect 'jdbc:derby://localhost:1527/MyDbTest';

ij> CALL SYSCS_UTIL.SYSCS_IMPORT_TABLE(

null,'EMP','myfile.txt',',',null,null,0);

ij> select * from emp;

EMPNO      |NAME                                    |ADDR

|DEPTNO

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

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

1          |name1                                   |addr1

|1

2          |name2                                   |addr2

|1

已选择 2 行

ij> CALL SYSCS_UTIL.SYSCS_IMPORT_TABLE(

null,'EMP','myfile.txt',',',null,null,0);

> 错误 XIE0R:文件 myfile.txt 中的第 4 行发生导入错误:在行 4 上的意外位置中读取

到 endOfFile。

错误 XIE0E:在行 4 上的意外位置中读取到 endOfFile。

==>后以行需要换行

ij> CALL SYSCS_UTIL.SYSCS_IMPORT_TABLE(

>     null,'EMP','myfile.txt',',',null,null,0);

已执行语句。

ij> select * from emp;

EMPNO      |NAME                                    |ADDR

|DEPTNO

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

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

1          |name1                                   |addr1

|1

2          |name2                                   |addr2

|1

3          |name3                                   |addr3

|1

4          |name4                                   |addr4

|1

5          |name5                                   |addr5

|1

6          |name6                                   |addr6

|1

已选择 6 行

ij>CALL SYSCS_UTIL.SYSCS_EXPORT_TABLE(

null,'EMP','myfile.out',null,null,null);

==>在当前路径下生成文件myfile.out

1,"name1","addr1",1

2,"name2","addr2",1

3,"name3","addr3",1

4,"name4","addr4",1

5,"name5","addr5",1

6,"name6","addr6",1

--根据文档说明,还支持LOB字段的导入/导出。

7 备份恢复

7.1备份

窗口1:

启动数据库实例。

D:\dev\derby_db>java org.apache.derby.drda.NetworkServerControl start

窗口2:

D:\dev\derby_db>java org.apache.derby.tools.ij

ij> connect 'jdbc:derby://localhost:1527/MyDbTest';

ij> CALL SYSCS_UTIL.SYSCS_BACKUP_DATABASE('d:/dev/backup/2012-06-07');

==>会自动创建目录2012-06-07,将数据备份到该目录下。

ij> exit;

D:\dev\derby_db>java org.apache.derby.drda.NetworkServerControl shutdown

Thu Jun 07 08:13:25 CST 2012 : Apache Derby 网络服务器 - 10.8.2.2 - (1181258)

关闭

D:\dev\derby_db>rmdir /S Mydbtest

Mydbtest, 是否确认(Y/N)? y

D:\dev\derby_db>dir

驱动器 D 中的卷是 work

卷的序列号是 2044-0107

D:\dev\derby_db 的目录

2012-06-07  08:14.

2012-06-07  08:14    ..

2012-06-07  08:13             1,047 derby.log

2012-06-07  08:05               126 myfile.out

2012-06-07  08:02                68 myfile.txt

3 个文件          1,241 字节

2 个目录  8,345,808,896 可用字节

7.2恢复

窗口1:

D:\dev\derby_db>java org.apache.derby.drda.NetworkServerControl start

窗口2:

D:\dev\derby_db>java org.apache.derby.tools.ij

ij 版本 10.8

ij> connect 'jdbc:derby://localhost:1527/MyDbTest';

错误 08004:由于找不到数据库 MyDbTest,已拒绝连接。

ij> connect 'jdbc:derby://localhost:1527/MyDbTest;restoreFrom=d:/dev/backup/2012

-06-07';

错误 XJ040:DERBY SQL error: SQLCODE: -1, SQLSTATE: XJ040, SQLERRMC: 无法使用类

加载器 启动数据库 'MyDbTest',请参阅下一

个异常,以了解详细信息。::SQLSTATE: XBM0Q未找到文件 d:\dev\backup\2012-06-07\ser

vice.properties。请确保备份副本正确而且未损坏。

ij> connect 'jdbc:derby://localhost:1527/MyDbTest;restoreFrom=d:/dev/backup/2012

-06-07/MyDbTest';

ij> select count(*) from emp;

1

-----------

6

已选择 1 行

8 复制

Derby支持的复制有如下特点:

*基于事务日志

*只有主库处理事务,备库不支持事务,也不支持只读打开

*异步,主库提交事务与日志传送/应用无关(可能导致切换时丢失部分数据)

*一个实例可以同时充当多个角色(数据库D1的主库角色,数据库D2的从库角色,非复制数据库D3)

相关文章