欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

oracle笔记:查询oracle字符集

程序员文章站 2022-03-30 13:08:47
1,查询oracle字符集:select * from nls_database_parameters where parameter='NLS_CHARACTERSET&...
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 默认使用的事务隔离级别。