当前位置: 数据库>其它
本页文章导读:
▪写入到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 查看评论
最新技术文章: