用户登录
用户注册

分享至

oracle笔记:查询oracle字符集

  • 作者: 隔壁老痒
  • 来源: 51数据库
  • 2021-11-04
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 默认使用的事务隔离级别。

软件
前端设计
程序设计
Java相关