当前位置: 数据库>其它
本页文章导读:
▪写入到blob字段的存储过程 create or replace procedure write2blob(directions blob,
v_blob blob,
v_pos integer
)is
.........
▪关于JDBC中ResultSet接口的一点细节探究 1、rs = stmt.exeQuery(sql)后,rs肯定不会为null,注意,是rs对象不会为null,而不是其包含的result
2、既然rs不会为null,所以在rs = stmt.exeQuery(sql)后,使用while(rs.next())或者if(rs.next())时就不用判断rs != .........
▪Data Guard 配置 Standby Redo Log Data Guard在最大保护和最高可用性模式下,Standby数据库必须配置 Standby Redo Log 备库创建并配置 Standby Redo Log 是为了能够接收到主库.........
[1]写入到blob字段的存储过程
来源: 互联网 发布时间: 2013-11-07
create or replace procedure write2blob(directions blob, v_blob blob, v_pos integer )is v_1time_maxlength integer; --一次读取的最大长度 amount integer; --总长度 v_blob_sub blob; --一次读取的长度 v_index integer; ---索引 v_sub_count integer; offset integer; directions2 blob; begin v_1time_maxlength := 32767; --允许的长度 amount := length(v_blob); --blob的总长度 v_sub_count := amount / v_1time_maxlength + 1; --分成子串的个数 v_index := 1; --索引从1开始 offset := v_pos; directions2 := directions; loop dbms_output.put_line(length(v_blob)); DBMS_LOB.read(v_blob, v_1time_maxlength, offset, v_blob_sub); --读至v_blob_sub中 dbms_lob.writeappend(directions2, length(v_blob_sub), v_blob_sub); --将v_blob_sub中的内容写到字段中 v_index := v_index + 1; offset := v_index * v_1time_maxlength + 1; exit when v_index > v_sub_count; end loop; dbms_lob.close(directions2); exception when no_data_found then dbms_output.put_line('找不到数据'); end;
测试代码:
-- Created on 2013-3-8 by ZHANGXL declare -- Local variables here i integer; v_blob blob; directions blob; v_post_id number(18):=8814; begin select pt.post_text into v_blob from jforum_posts_text pt where pt.post_id=8817; -- Test statements here --execute updateblob(jforum_posts_text,post_id,post_text,8817,0,v_blob); --update jforum_posts_text pt -- set pt.post_text = EMPTY_BLOB() -- where pt.post_id = v_post_id; select pt.post_text into directions from jforum_posts_text pt where pt.post_id=v_post_id for update; --锁住 dbms_lob.open(directions, dbms_lob.lob_readwrite);--打开读写流 write2blob(directions,v_blob,1); commit; end;表结构:
-- Create table create table JFORUM_POSTS_TEXT ( POST_ID NUMBER(18) not null, POST_TEXT BLOB, POST_SUBJECT VARCHAR2(200), ISDELETED NUMBER(1) default 0 ) tablespace XZFY pctfree 10 initrans 1 maxtrans 255 storage ( initial 128 minextents 1 maxextents unlimited ); -- Create/Recreate primary, unique and foreign key constraints alter table JFORUM_POSTS_TEXT add primary key (POST_ID) using index tablespace XZFY pctfree 10 initrans 2 maxtrans 255 storage ( initial 64K minextents 1 maxextents unlimited );
作者:xinfei0803 发表于2013-3-8 18:07:44 原文链接
阅读:0 评论:0 查看评论
[2]关于JDBC中ResultSet接口的一点细节探究
来源: 互联网 发布时间: 2013-11-07
1、rs = stmt.exeQuery(sql)后,rs肯定不会为null,注意,是rs对象不会为null,而不是其包含的result
2、既然rs不会为null,所以在rs = stmt.exeQuery(sql)后,使用while(rs.next())或者if(rs.next())时就不用判断rs != null;
3、rs.next时,游标最先是指向第一条记录前的位置,所以第一次rs.next后,游标指向的正好是第一条记录(如果有的话)
4、要判断rs的结果是否为空,只要使用一次rs.next方法就行了,如果它返回为false,则证明rs的结果为null
所以最终的代码可以写为:
public void run() {
/** 读取数据库** */
DbTestConn conn = new DbTestConn();
String sql = "select * from mo_info where mo_state = '1'";
ResultSet rs = conn.exeQuery(sql);
//while (!isNull) {
try {
while (rs.next()) {
tr.setId(rs.getInt(1));
tr.setUser(rs.getString(2));
tr.setPwd(rs.getString(3));
//isNull = false;
}
} catch (SQLException e) {
//isNull = true;
e.printStackTrace();
}
//}
}
2、既然rs不会为null,所以在rs = stmt.exeQuery(sql)后,使用while(rs.next())或者if(rs.next())时就不用判断rs != null;
3、rs.next时,游标最先是指向第一条记录前的位置,所以第一次rs.next后,游标指向的正好是第一条记录(如果有的话)
4、要判断rs的结果是否为空,只要使用一次rs.next方法就行了,如果它返回为false,则证明rs的结果为null
所以最终的代码可以写为:
public void run() {
/** 读取数据库** */
DbTestConn conn = new DbTestConn();
String sql = "select * from mo_info where mo_state = '1'";
ResultSet rs = conn.exeQuery(sql);
//while (!isNull) {
try {
while (rs.next()) {
tr.setId(rs.getInt(1));
tr.setUser(rs.getString(2));
tr.setPwd(rs.getString(3));
//isNull = false;
}
} catch (SQLException e) {
//isNull = true;
e.printStackTrace();
}
//}
}
作者:communicate_ 发表于2013-3-9 10:45:25 原文链接
阅读:0 评论:0 查看评论
[3]Data Guard 配置 Standby Redo Log
来源: 互联网 发布时间: 2013-11-07
Data Guard在最大保护和最高可用性模式下,Standby数据库必须配置 Standby Redo Log
备库创建并配置 Standby Redo Log 是为了能够接收到主库传过来的日志,用作恢复
主库创建并配置 Standby Redo Log 是为了在主备切换之后,能够接收到原备库(切换之后的主库)传过来的日志
㈠ 创建 Standby Redo Log
创建的原则:
① Standby Redo Log 的文件大小与主库 online redo log 文件大小相同
② Standby Redo Log 日志文件组的个数依照下面的原则进行计算:
Standby redo log组数公式 >= (每个instance日志组个数+1)*instance个数
例如在我的环境中,只有一个节点,这个节点有三组redo,所以
Standby redo log组数公式>=(3+1)*1 == 4
所以需要创建4组Standby redo log
④ 每一日志组为了安全起见,可以包含多个成员文件
备库创建并配置 Standby Redo Log 是为了能够接收到主库传过来的日志,用作恢复
主库创建并配置 Standby Redo Log 是为了在主备切换之后,能够接收到原备库(切换之后的主库)传过来的日志
㈠ 创建 Standby Redo Log
创建的原则:
① Standby Redo Log 的文件大小与主库 online redo log 文件大小相同
② Standby Redo Log 日志文件组的个数依照下面的原则进行计算:
Standby redo log组数公式 >= (每个instance日志组个数+1)*instance个数
例如在我的环境中,只有一个节点,这个节点有三组redo,所以
Standby redo log组数公式>=(3+1)*1 == 4
所以需要创建4组Standby redo log
④ 每一日志组为了安全起见,可以包含多个成员文件
下面以主库配置 Standby Redo Log 为例:
sys@ORCL> alter database add standby logfile group 4 ('/u01/app/oracle/oradata/ORCL/stdredo001.log') size 50M; Database altered. sys@ORCL> alter database add standby logfile group 5 ('/u01/app/oracle/oradata/ORCL/stdredo002.log') size 50M; Database altered. sys@ORCL> alter database add standby logfile group 6 ('/u01/app/oracle/oradata/ORCL/stdredo003.log') size 50M; Database altered. sys@ORCL> alter database add standby logfile group 7 ('/u01/app/oracle/oradata/ORCL/stdredo004.log') size 50M; Database altered.
㈡ 删除 Standby Redo Log
Standby redo log删除方法:
sys@ORCL> alter database drop standby logfile group 8; Database altered.
㈢ 查询 Standby Redo Log
通过V$STANDBY_LOG视图查看standby redo log文件组:
sys@ORCL> select group#,thread#,sequence#,archived,status from v$standby_log; GROUP# THREAD# SEQUENCE# ARC STATUS ---------- ---------- ---------- --- ---------- 4 0 0 YES UNASSIGNED 5 0 0 YES UNASSIGNED 6 0 0 YES UNASSIGNED 7 0 0 YES UNASSIGNED
作者:linwaterbin 发表于2013-3-9 12:23:25 原文链接
阅读:0 评论:0 查看评论
最新技术文章: