大家好,欢迎来到IT知识分享网。
1.oracle的数据库和实例
数据库是物理操作系统文件或磁盘(disk)的集合,这些文件集合包括数据文件、临时文件、重做日志文件和控制文件。
实例(instance,也有叫例程的):一组Oracle后台进程/线程以及一个共享内存区,是用来管理数据库的一个实体。实例在其整个生存期中只能装载和打开一个数据库,一个数据库可以由多个实例同时访问。SID就是用于识别同一个ORACLE数据库的不同实例。
oracle数据库启动步骤是:启动实例 -》 装载数据库 -》打开数据库。oracle中打开一个数据库后执行create database语句创建数据库是不行的,它应该在启动实例后创建然后再装载打开。
2.表空间(tablespace)
表空间是一种逻辑结构,是一个或多个数据文件(物理文件)的集合,所有的数据对象都被逻辑地存放在指定的表空间中。
oracle中数据库概念有别于sql server或mysql中数据库概念,通常的做法是一个oracle中建一个数据库和一个实例,数据库下分不同的用户和表空间,用户对应不同表空间。
用户的表、视图等分属在自己的表空间内。表空间似乎倒更像mysql中的数据库概念了。
每个数据库通常包括system、sysaux和temp三个默认表空间,一个或多个临时表空间,一个撤销表空间和几个应用程序专用表空间。
表空间可以有“只读”,“读写”,“脱机”三种状态。
以下为创建名称为myts的表空间的命令示例:
create tablespace myts
datafile ‘d:\myts.dbf’ size 50m autoextend on next 10m maxsize unlimited
logging;
参数
datafile 指定数据文件,可以是多个
size 空间大小
autoextend on 表示打开自动扩展空间文件,此时需指定next值下次分配的空间大小,maxsize最大空间大小,如果是unlimited表示不限
logging 记录日志,nologging表示不记录
3.创建用户
创建用户并指定表空间
create user username identified by password
default tablespace myts;
/*给用户授予权限 */
grant connect,resource,dba to username;
4.oracle管理工具
开发时使用的是免费版oracle express,这个就没有那么多自带的管理功能了。oracle命令行工具是sqlplus,另外目前所有版本都带了一个web版的管理工具。但个人还是不喜欢web版的工具,速度和体验实在不咋滴。express版的装上后有桌面有个oracle入门的快捷方式,找开即可,这个http服务占用的是8080端,与tomcat冲突
,修改端口在打开sqlplus以sys身份登录,输入以下命令:
>begin
>dbms_xdb.sethttpport(‘8081’);
>end;
>/
修改下快捷方式对应的URL,重启下oracle服务即可;
图形界面工具最流行的是PL/SQL Developer(收费),nvaicat for oracle(收费),Oracle SQL Developer(免费),三个工具功能差不多看个人喜好了。
5.oracle数据类型
char 定长字符型,默认长度为1,最大2000,布尔型可表示为char(1);
varchar2 可变长字符串,最大长度4000;
nchar,nvarchar2 与上两个类型不同的是这两个类型使用时必须指定字符集;
numbmer(precision, scale) 数字型,precision表示数字中的有效位。如果没有指定precision的话,Oracle将使用38作为精度。 scale表示数字小数点右边的位数,scale默认设置为0;
date 日期型, Oracle标准日期格式为:DD-MON-YY HH:MI:SS 通过修改实例的参数NLS_DATE_FORMAT,函数sysdate获取当前时间;
LOB (大型对象)数据类型,可以保存4GB的信息。LOB有以下3种类型:CLOB只能存储字符数据、NCLOB保存本地语言字符集数据、BLOB以二进制信息保存数据;
RAW和LONG RAW RAW和LONG RAW数据类型主要用于对数据库进行解释。指定这两种类型时,Oracle以位的形式来存储数据。RAW数据类型一般用于存储有特定格式的对象,如位图。 RAW数据类型可占用2KB的空间,而LONG RAW数据类型则可以占用2GB大小。
ROWID 伪列(pseudocolumn),ROWID表示行的地址,ROWID与磁盘驱动的特定位置有关,因此ROWID是获得行的最快方法。ROWID伪列用ROWID数据类型定义。ROWID伪列在SQL SELECT语句中可以像普通列那样被访问。Oracle数据库中每行都有一个伪列。
6.远程连接oracle数据库
首先要确定服务器oracle开启了监听服务,在命令行下键入:“tnsping 服务端IP地址”可查看结果。oracle的监听端口默认是1521。
在企业版中可以找到”Net Configuration Assistant” 工具添加“选择ORACLE数据库或服务”,使用比较简单不详述了
在oracle express版本上比较麻烦了,找到oracle目录下的tnsnames.ora文件,该文件路径在“oracle安装目录\app\oracle\product\11.2.0\server\network\ADMIN”下。
在文件末添加以下内容:
远程数据库的名字随意取 =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = 远程ip)(PORT = 远程端口oracle的))
)
(CONNECT_DATA =
(SERVICE_NAME = 远程服务的名字)
)
)
然后再使用客户端登录
a. sqlplus中登录: sqlplus 用户名/密码@IP地址
b. 以下是使用oracle sql developer建立连接的截图:
7.Java连接oracle
使用JDBC连接(你也可以使用ODBC),驱动可以在oracle安装目录下的jdbc文件夹下找到,比如我的是:C:\oraclexe\app\oracle\product\11.2.0\server\jdbc\lib。
里面ojdbc5.jar对应jdk1.5,ojdbc6.jar对应jdk1.6的。以下是示例:
static void oracleTest() { String dbUrl = "jdbc:oracle:thin:@localhost:1521:xe"; //"jdbc:oracle:thin:@ip:端口:SID" String dbuser = "charles"; String dbpassword = "jqncc"; Connection conn = null; Statement stat = null; ResultSet rs = null; try { Class.forName("oracle.jdbc.driver.OracleDriver").newInstance(); conn = DriverManager.getConnection(dbUrl, dbuser, dbpassword); stat = conn.createStatement(); rs = stat.executeQuery("select id,username,birthday from userinfo"); while (rs.next()) { System.out.println(String.format("ID:%1$d,UserName:%2$s,Birthday:%3$tD",rs.getInt(1),rs.getString(2),rs.getDate(3))); } rs.close(); stat.close(); conn.close(); } catch (Exception e) { e.printStackTrace(); } finally { if (conn != null) conn = null; } }
免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://yundeesoft.com/21959.html