oracle笔记

来源:互联网 发布:java面试题下载 编辑:程序博客网 时间:2024/06/16 18:36
1,查询oracle字符集:select * from nls_database_parameters where parameter='NLS_CHARACTERSET'
2,查找某个汉字的编码:select dump('一',1016) from dual; ---1016指的是16进制 UTF-8编码:e4,b8,80
3,查找转码后的编码: select dump(convert('一' ,'ZHS16GBK'),1016) from dual; ---GBK编码:d2,bb
4,数据库中出现乱码的原因是:客户端编码-->客户端的环境变量NLS_LANG的编码设置------>数据库编码, 注意数据库编码是保持不变的
 例如:1,客户端是GBK,环境变量是GBK,数据库是UTF-8, 客户端插入的数据会根据环境变量与数据库编码不一致,会将数据转码为UTF-8再保存数据库中。 2,客户端是GBK,环境变量是UTF-8,数据库是UTF-8, 客户端插入的数据,由于环境变量与数据库编码一致,客户端插入的数据不会转码直接保存数据库中,保存的是GBK编码数据,会出现乱码。 3,客户端是UTF-8,环境变量是UTF-8数据库是UTF-8, 客户端插入的数据, 由于环境变量与数据库编码一致,会将数据直接保存数据库中。 4,客户端是UTF-8,环境变量是GBK,数据库是UTF-8, 客户端插入的数据, 由于环境变量与数据库编码不一致,会将数据转码为UTF-8再保存数据库中。客户端与环境变量之间是不会转化的,环境变量与数据库字符集不一致的时候会自动转化。

设置客户端环境变量: export  NLS_LANG=.AL32UTF8   或者 export NLS_LANG=.ZHS16GBK
查看文件的字符集:lcsscan format=html file=sina.html

6,查看执行计划:
 1)先执行 EXPLAIN PLAN FOR   select * from tableA where paraA=1,再 select * from table(DBMS_XPLAN.DISPLAY)
 2)通过sqlplus

Sql> set autotrace on

Sql> select * from dual;


7,事务隔离

需要防止的现象和事务隔离级别

ANSI/ISO SQL 标准(SQL92)定义了四种事务隔离级别(transaction isolation level),这四种隔离级别所能提供的事务处理能力各不相同。这些事务隔离级别是针对三种现象定义的,在并发事务执行时,需要阻止这三种现象 中的一种或多种发生。

三种需要阻止的现象(preventable phenomena)是:

1、脏读取(dirty read):一个事务读取了被其他事务写入但还未提交的数据。

2、不可重复读取(nonrepeatable read):一个事务再次读取其之前曾经读取过的数据时,发现数据已被其他已提交的事务修改或删除

3、不存在读取(phantom read):事务按照之前的条件重新查询时,返回的结果集中包含其他已提交事务插入的满足条件的新数据

SQL92 标准中定义了四个隔离级别,在各隔离级别中,允许发生上述三种需要阻止的现象中的一种或多种。详情见下表

   现象\隔离级别脏读取不可重复读取不存在读取未提交读取(read uncommitted)允许允许允许已提交读取(read committed)
不允许
允许允许可重复读取(repeatable read)
不允许
不允许允许串行化(rerializable)
不允许
不允许不允许

Oracle 支持三种事务隔离级别:已提交读取,串行化,以及 SQL92 中没有包含的只读模式(read-only mode)。已提交读取是 Oracle 默认使用的事务隔离级别。