- 浏览: 82187 次
- 性别:
- 来自: 北京
最新评论
-
streamsong:
王雨尘 写道
的确是说索引是排序的,我漏掉啦
我们为什么要用索引,用索引为什么比不用索引快 -
heerwa:
...
我们为什么要用索引,用索引为什么比不用索引快 -
liulanghan110:
那么用索引为什么会提高性能呢?因为索引(以B树索引为例)是树状 ...
我们为什么要用索引,用索引为什么比不用索引快 -
王雨尘:
我们为什么要用索引,用索引为什么比不用索引快 -
pangpang514:
居然和强哥合影过。。。。佩服!
我们为什么要用索引,用索引为什么比不用索引快
我们在创建数据库的时候,通常会把字符集设置为ZHS16GBK,有些时候,ZHS16GBK字符集满足不了业务的需求,会更换字符集,以AL32UTF8为例,ZHS16GBK字符集每个汉字以2个字符存放,而AL32UTF8字符集每个汉字是以3个自己存放,这样,有可能就要增大某些表的字段长度。ORACLE提供了CSSCAN工具来查看字符集转换的时候哪些字段需要增大到多大的长度。(当然,也可以写PL/SQL将所有的表为CHAR,VARCHAR2的字段都增大1.5倍),既然ORACLE提供了CSSCAN工具,我们就要学着使用。
在我们创建数据库的时候,CSSCAN工具一般不会被安装,我们需要手动执行$ORACLE_HOME/rdbms/admin/csminst.sql手动创建,这个操作很简单:
SQL> @?/rdbms/admin/csminst.sql
用户已创建。
授权成功。
…
…
有可能会遇到如下的错误
drop public synonym csm$parameters
*
第 1 行出现错误:
ORA-01432: 要删除的公用同义词不存在
查看csminst.sql文件,您会发现
drop public synonym csm$parameters
/
create public synonym csm$parameters for csmig.csm$parameters
/
这个错误是由于csminst.sql这个脚本在创建同义词csm$parameters之前,会先删除这个同义词,然后在创建,也就是如果这个同义词存在,先删除,然后再创建,这个错误可以忽略。
CSSCAN工具安装完后,就可以使用CSSCAN工具查看字符集转换之后,哪些字段需要增大长度。操作也很简单,我们拿T_FONDS_INFO表为例:
SQL> desc T_FONDS_INFO
名称 是否为空? 类型
----------------------------------------- -------- -------------------
FOND_CODE VARCHAR2(2)
FOND_NAME VARCHAR2(33)
FONDS_NUMBER VARCHAR2(40)
ADMITER VARCHAR2(3)
TERM VARCHAR2(35)
FILE_SUM NUMBER
PRINCIPLE VARCHAR2(315)
FOND_INTRO CLOB
REMARK VARCHAR2(70)
利用CSSCAN查看哪些字段需要增大
C:\Documents and Settings\Administrator>csscan system/oracle table= T_FONDS_INFO tochar= al32utf8 log=d:\css.log
Character Set Scanner v2.2 : Release 11.2.0.1.0 - Production on 星期五 9月 23 16:36:01 2011
Copyright (c) 1982, 2009, Oracle and/or its affiliates. All rights reserved.
Connected to:
Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 – Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options
Enter array fetch buffer size: 1024000 >--默认为1M,可根据实际情况输入大一点的值
Enter number of scan processes to utilize(1..64): 1 >--多少个进程来检查
Enumerating tables to scan...
. process 1 scanning STREAM.T_FONDS_INFO[AAASgRAAEAAAADwAAA]
Creating Database Scan Summary Report...
Creating Individual Exception Report...
Scanner terminated successfully.
执行完之后会在D:\下看到css.log.err、css.log1.out和css.log1.txt文件,检查css.log1.err文件可以看到哪些字段需要修改到多大。例如:
User : STREAM
Table : T_FONDS_INFO
Column: TERM
Type : VARCHAR2(35)
Number of Exceptions : 3
Max Post Conversion Data Size: 46
此部分说明STREAM下的T_FONDS_INFO表的TERM字段更改为AL32UTF8字符集之后,有3条数据需要增大字段长度,需要从原长度35增大到46,下面是数据在AL32UTF8字符集下的实际长度:
ROWID Exception Type Size Cell Data(first 30 bytes)
------------------ ------------------ ----- ------------------------------
AAASgRAAEAAAAD0AAB exceed column size 46 光绪二十七年1901--光绪二十八年
AAASgRAAEAAAAD1AAB exceed column size 40 光绪二十八年1902--宣统三年1911
AAASgRAAEAAAAD1AAC exceed column size 40 光绪二十一年1895--宣统四年1912
------------------ ------------------ ----- ------------------------------
可以通过csscan help=y查看CSSCAN的各个参数
C:\Documents and Settings\Administrator>csscan help=y
You can let Scanner prompt you for parameters by entering the CSSCAN
command followed by your username/password:
Example: CSSCAN \"SYSTEM/MANAGER AS SYSDBA\"
Or, you can control how Scanner runs by entering the CSSCAN command
followed by various parameters. To specify parameters, you use keywords:
Example: CSSCAN \"SYSTEM/MANAGER AS SYSDBA\" FULL=y TOCHAR=utf8 ARRAY=1024000 PROCESS=3
Keyword Default Prompt Description
---------- ------- ------ -------------------------------------------------
USERID yes username/password
FULL N yes scan entire database
USER yes owner of tables to be scanned
TABLE yes list of tables to scan
COLUMN yes list of columns to scan
EXCLUDE list of tables to exclude from scan
TOCHAR yes new database character set name
FROMCHAR current database character set name
TONCHAR new national character set name
FROMNCHAR current national character set name
ARRAY 1024000 yes size of array fetch buffer
PROCESS 1 yes number of concurrent scan process
MAXBLOCKS split table if block size exceed MAXBLOCKS
CAPTURE N capture convertible data
SUPPRESS maximum number of exceptions logged for each table
FEEDBACK report progress every N rows
BOUNDARIES list of column size boundaries for summary report
LASTRPT N generate report of the last database scan
LOG scan base file name of report files
PARFILE parameter file name
PRESERVE N preserve existing scan results
LCSD N no enable language and character set detection
LCSDDATA LOSSY no define the scope of the detection
HELP N show help screen (this screen)
QUERY N select clause to scan subset of tables or columns
Scanner terminated successfully.
Linux系统下运行CSSCAN工具可能会遇到csscan: error while loading shared libraries: libclntsh.so.11.1: cannot open shared object file: No such file or directory错误,可以用下面的方法解决:
[oracle@dbserver2 bin]$ env|grep LD_LIB
LD_LIBRARY_PATH=/etc/emc/rsa/cst/lib
[oracle@dbserver2 bin]$ export LD_LIBRARY_PATH=$ORACLE_HOME/lib:$LD_LIBRARY_PATH
当然,也可以利用数据字典生成脚本直接修改所有表的CHAR类型的字段长度为原值的1.5倍,例如:
创建spool.sql文件,内容如下:
set heading off
set feedback OFF
set echo off
set pages 1000 lines 120
spool d:\length.sql
select 'alter table '||table_name||' modify'||'('||COLUMN_NAME||' '||data_type||'('||round(DATA_LENGTH*1.5)||'));' from user_tab_columns where data_type like '%CHAR%';
spool off
在SQL*PLUS里执行
@d:\spool.sql
这样生成的length.sql文件内容如下:
alter table T_SPECIAL modify(CLASS_NUM VARCHAR2(45));
alter table T_SPECIAL modify(CLASS_NUM_A VARCHAR2(45));
alter table T_FONDS_INFO_RAW modify(FOND_ID VARCHAR2(15));
alter table T_FONDS_INFO_RAW modify(FOND_CODE VARCHAR2(60));
直接在SQL*PLUS里面运行D:\length.sql即可讲所有表的%CHAR%类型的字段长度都增大1.5倍。
发表评论
-
将博客搬至CSDN
2013-12-06 15:49 56将博客搬至CSDN -
博客地址更换通知
2012-09-29 09:23 633自2011年8月,博客使用新地址www.dbdream.org ... -
如何追踪其他SESSION会话信息
2012-02-21 20:35 1357今天测试说在加载条目数据、校验数据和质检数据的时候很慢, ... -
SHM不足导致导致数据库宕机
2012-02-21 20:17 1284今天早上到办公室,开发说测试环境应用程序挂掉,看日志说是连接不 ... -
PCTFREE和PCTUSED及将LOB存到行外
2012-02-17 11:14 1481今天的ADDM报告建议重建存放图片的表并增大PCTFREE,这 ... -
SGA_TARGET大于SGA_MAX_SIZE的真实案例
2012-02-17 11:05 1401今天在给库户数据库健康检查的时候,发现个很奇怪的问题,S ... -
利用闪回、logmnr找回误删除的数据
2011-10-25 23:54 1283朋友遇到了非常经典的ORACLE事故——误删除,开发人员告诉他 ... -
ORACLE随机取数据
2011-10-25 23:53 956目前负责的这个数字化项目,需要开发个质检工具,实现每次随机取2 ... -
oracle将一行拆分为多行
2011-10-12 00:51 2193客户的业务涉及大量的图片信息,之前这些图片信息只在数据库里存着 ... -
ORA-01034、ORA-27101和ORA-28056错误解决方法
2011-10-11 00:40 2278今天登录数据库的时候遇到了ORA-01034和ORA-2710 ... -
查看某个用户下的所有空表
2011-10-09 15:01 1094今天在群里有人问如何 ... -
SQL*LOADER加载图片、TXT
2011-10-09 15:02 1142朋友打电话问我如何利 ... -
oracle10gR2新特性--透明加密(TDE)
2011-10-09 15:02 2009从10gR2开始,oracle推出了透明数据加密技术(Tran ... -
NAMES.DIRECTORY_PATH客户端连接参数
2011-10-08 22:38 3911今天在做oracle10gR2新特性透明加密(TDE)的时候, ... -
tnsping通却连接不上数据库
2011-10-08 22:26 2499今天在Windows XP上装可个11gR2数据库,却出现个很 ... -
SQL*LOADER和外部表加载
2011-10-08 22:17 1364最近一直在用SQL*LOADER加载数据,用外部表也可以实现, ... -
创建本地Duplicate数据库
2011-10-08 22:14 1072Duplicate是RMAN的一个组成部分,利用Duplica ... -
由ACOUG、云和恩墨主办的”Oracle技术嘉年华(OTN China Tour 2011)“活动已经正式拉开帷幕。
2011-09-01 12:00 822由ACOUG、云和恩墨主办的”Oracle技术嘉年华(OTN ... -
enq: TX - row lock contention
2011-07-19 17:52 1161今天,收到客户的邮件说上周每天早上10点多,数据库都会有很多锁 ... -
ORA-600汇总(上)
2011-07-04 15:28 1314此文转载 http://space.itpub.net/135 ...
相关推荐
Oracle字符集扫描工具是Oracle数据库管理系统提供的一种实用工具,用于检查和评估字符数据在不同字符集之间的转换过程。字符集是Oracle数据库支持多种语言的基础,它定义了如何存储和显示字符。在实际操作中,当需要...
Oracle字符集的更改是一个复杂的过程,涉及到数据库的底层结构和数据的编码方式。在Oracle数据库中,字符集用于定义字符的表示方式,不同的字符集对不同语言的支持程度和存储效率也不同。在本文中,我们将讨论如何...
Oracle字符集更改是一个复杂的过程,尤其涉及到从超集字符集如UTF8转换为子集字符集如ZHS16GBK。在本文中,我们将探讨如何处理这个问题,以及更改字符集可能涉及的风险和步骤。 首先,Oracle数据库的字符集选择在...
CSscan(Character Set Scanner)是一款由Oracle提供的工具,主要用于检查数据库字符集设置的影响或帮助用户纠正不正确的`NLS_CHARACTERSET`配置。通过CSscan,用户可以更深入地了解数据库字符集更改对现有数据可能...
CSscan(Character Set Scanner)是一款由Oracle提供的工具,用于分析数据库中的字符集兼容性问题。它可以帮助用户识别数据库中的数据是否与目标字符集兼容,从而为数据库字符集转换提供必要的信息。 #### 二、...
Oracle9i 9.2.0 Character set scanner for Linux 应用Linux系统
Oracle还提供了语言和字符集检测技术,如LCSSCAN和CSSCAN,用于检测文档或字节字符串的字符集编码和语言。这些工具基于统计分析,但其准确性受文本纯度影响,单一语言的书面文本通常能获得更准确的结果。 全球化...
语言和字符集检测工具LCSSCAN和CSSCAN用于分析文本,但其准确性受文本纯度影响,如单一语言的书面文本检测效果更佳。 GDK是Oracle为中间层提供的全球化开发框架,简化了全球化的Java中间层应用程序的开发。它隐藏了...
32位oracle11.2.0.1 BIN文件夹,数据库管理员版,包含sqlplus,imp,exp,impdp,expdp等完整工具。exe列表:adrci、agtctl、amdu、asmtool、asmtoolg、CreatDep、csscan、dbv、dg4odbc、dg4pwd、dgmgrl、diskmon、...
5. **调试与测试**:为了验证代码的正确性,通常需要一个实际的CAN网络环境,或者使用仿真工具进行模拟测试。确保发送和接收的数据符合预期,并能正确处理不同类型的CAN消息。 6. **文档与注释**:良好的源代码应该...