1.oracle字符集问题:
数据库字符集为ZHS16BGK,汉字在数据库存放的时候占用两个字节
数据库字符集为UTF8,汉字在数据库里存放的时候占用三个字节
由于字符集不同,导致现在数据库IMP的时候有些表的字段长度不够,出现ORA-12899: value too large for column的错误。
通过修改字符集可以解决这种问题。
2.utf-8和unicode的区别:
首先UTF8编码后的大小是不一定,不像Unicode编码后的大小是一样的!
我们先来看Unicode的编码:一个英文字母 “a” 和 一个汉字 “好”,编码后都是占用的空间大小是一样的,都是两个字节!
而UTF8编码:一个英文字母“a” 和 一个汉字 “好”,编码后占用的空间大小就不样了,前者是一个字节,后者是三个字节!
现在就让我们来看看UTF8编码的原理吧:
因为一个字母还有一些键盘上的符号加起来只用二进制七位就可以表示出来,而一个字节就是八位,所以UTF8就用一个字节来表式字母和一些键盘上的符号。然而当我们拿到被编码后的一个字节后怎么知道它的组成?它有可能是英文字母的一个字节,也有可能是汉字的三个字节中的一个字节!所以,UTF8是有标志位的!
当要表示的内容是 ......
Oracle 9i共提供了16种标量数据类型,如表7.4所示。
表7.4 Oracle 9i的标量数据类型
名称
含义
Char
用于描述定长的字符型数据,长度<=2000字节
varchar2
用于描述变长的字符型数据,长度<=4000字节
nchar
用来存储Unicode字符集的定长字符型数据,长度<=1000字节
nvarchar2
用来存储Unicode字符集的变长字符型数据,长度<=1000字节
number
用来存储整型或者浮点型数值
Date
用来存储日期数据
Long
用来存储最大长度为2GB的变长字符数据
Raw
用来存储非结构化数据的变长字符数据,长度<=2000字节
Long raw
用来存储非结构化数据的变长字符数据,长度<=2GB
rowid
用来存储表中列的物理地址的二进制数据,占用固定的10个字节
Blob
用来存储多达4GB的非结构化的二进制数据
Clob
用来存储多达4GB的字符数据
nclob
用来存储多达4GB的Unicode字符数据
Bfile
用来把非结构化的二进制数据存储在数据库以外的操作系统文件中
urowid
用来存储表示任何类型列地址的二进制数据
float
用来存储浮点数
......
Oracle存储过程功能强大,他主要的作用有以下几点:
1.可以批量执行sql语句,提供内置的事务支持,同时能够提高数据库操作的效率。
2.客户端程序依据存储过程名来调用,提供程序的可移植性。
3.提供复杂的SQL语句逻辑支持。
语法结构包括过程声明,执行过程部分,存储过程异常
1)不带参数:
Create or replace procedure NoparProcedureName
is
begin
delete from tablename a where a.id='';
delete from tablename b where b.id='';
exception
end;
2)带参数:
Create or replace procedure ParProcedureName(key_id in char)
is
begin
delete from tablename a where a.id=key_id;
update tablename b set b.name='测试' where b.id=key_id;
exception
end;
3)带参数含赋值
Create or replace procedure MyProcedureName(key_id in char,isal out varchar)
is icount number ;
begin
select count(*) into icount from emp where sal>isal ;
if icount==1 then ...
esle
...
end if ;
end ......
原文传送门:http://www.itpub.net/viewthread.php?tid=1099090
向jidongzheng 致敬
oracle 10g 配置 snmp 监控
oracle 10g 的snmp监控配置,同oracle 9i及以前的配置差别很大。主要是由于enterprise management gric control server的引用。
使得oracle 对它的产品进行了整合。
在配置过程中,在网上也看到N多人配置不成功的帖子。 经过不断尝试,完成了oracle 10g的snmp的监控配置。
环境:
Solaris 9 sparc 64bit
oracle 10.2.01
enterprise management agent 10.2.0.4
配置手册:
使用snmp 监控 Oracle 10g(10.2.0.4) 时oracle 10g snmp的配置
Ø 目的:
使用标准的snmp协议,采集oracle 10g database的性能指标值。
Ø 安装说明:
在oracle 9i(含)之前,在数据库安装完成后,在ORACLE_HOME/network/snmp/。就有现成的脚本。按照oracle的文档,start_peer –a 后,再加上agentctl start后,就可以了。
......
死锁的原因
1。模拟死锁
1。1。主表
-- Create table
create table WDZ1
(
WDZ1ID NUMBER not null,
MEMO VARCHAR2(20)
)
;
alter table WDZ1
add constraint XXXXXX primary key (WDZ1ID);
1。2。从表(没有外健的索引)
-- Create table
create table WDZ2
(
WDZ2ID NUMBER not null,
WDZ1ID NUMBER,
MEMO VARCHAR2(20)
)
;
-- Create/Recreate primary, unique and foreign key constraints
alter table WDZ2
add constraint XXXXX primary key (WDZ2ID)
;
alter table WDZ2
add constraint XXX foreign key (WDZ1ID)
references WDZ1 (WDZ1ID);
1。3。插入数据表到住表
begin
insert into wdz1 values (1,'aa');
insert into wdz1 values(2,'aa2');
insert into wdz1 values (3,'aa3');
insert into wdz2 values(10,3,'wdz3--1');
commit;
end;
1。4。在一个数据库seeesion里面插入数到从表,但是不提交事务
begin
update wdz2 set memo='update wdz2 momo'
where wdz2id=10;
insert into wdz2 values(20,2,'wdz2--1');
end;
对从表进行插入/修改记录,施加的锁也就是行级锁
1。5。在另外一个数据库seeesion里面删除 主表数 ......
(1)以SYS身份登陆
conn sys/sysem_pwd as sysdba;
(2)创建amly用户
create user amly identified by 9imly;
(3)创建表空间
create tablespace ts_amly datafile 'd:\amlyfile\test.dbf' size 100M;
(4)将表空间分配给用户
alter user amly default tablespace ts_amly;
(5)给用户授权
grant create session,create table,create view,unlimited tablespace to amly;
(6)以amly身份登陆创建表(执行SQL脚本)
create table tt_amly(in number(10));
@e:\test.sql; ......