Oracle从10g开始,正式推出了新一代数据逻辑备份还原工具Data Pump(数据泵),以期替代ldquo;历史悠久rdquo;的Exp/Imp工具。经
Oracle从10g开始,正式推出了新一代数据逻辑备份还原工具Data Pump(数据泵),以期替代“历史悠久”的Exp/Imp工具。经过近10年的发展,依然有不少用户,特别是开发人员,对这对工具有比较强的依赖性。很多开发环境中数据传输依然是使用Exp/Imp进行。
在使用Exp/Imp工具过程中,字符集、版本兼容一致是比较困扰用户的两个重点难点。字符集决定我们导出数据能否正确的导入到目标系统,是否从根本出现乱码故障。版本兼容问题涉及到原系统、目标系统数据库版本、导入客户端和导出客户端版本四个版本问题。Oracle官方MOS上曾经对这个问题用系列的矩阵来描述之前关系和兼容性,但是能记住的朋友实际寥寥。
笔者本篇主要介绍通过Export导出的Dmp文件检查字符集的方法,同时也看出一些字符集使用过程中常见的问题。
1、环境介绍
Endian是操作系统底层技术的一个重要方面。数据传输、设备通信都伴随着源与目标系统之间字符协议的认知。Endian问题所涉及的基础问题是:当通信发生的时候,信息单元(比特、字节、字和双字)以什么样的顺序进行传输。如果双方不统一或者不兼容,根本不可能实现数据的交换解码。
在Oracle领域中,比较常见Endian讨论是在可传输表空间技术上。可传输表空间是目前普遍认为比较快速的数据移植策略,基本上近似于文件直接传输。但是,可传输表空间不能实现跨Endian操作系统的传输操作。
我们在实际中,两种常见的Endian结构,即Big-Endian和Little-Endian。Big-Endian通常为Sparc, PowerPc, PARisc, RS/6000, SGI R4000 systems,经常接触的Unix系统一般为Big-Endian操作系统。Little-Endian系统读写顺序与Big-Endian相反,代表系统为Intel/AMD x86 and Alpha。
不同Endian环境下形成的DMP文件结构是有所不同的。Oracle在操作的时候,兼容两种Endian传输模式。这也就是我们为什么可以方便的在Unix和Linux之间交换传输数据的原因。
通过对DMP文件的直接读取,我们是可以分析看出DMP文件导出过程中使用的字符集配置的。下面通过一系列实验来进行测试:
2、Big-Endian下DMP分析实验
首先我们测试Big-Endian结构。我们选择Unix系统数据库环境。
[oracle@MISDB:~]$uname -a
AIX MISDB 1 6 00F7FCC94C00
我们首先不做任何环境变量设置,观察Export工作行为。
[oracle@MISDB:~]$exp \"/ as sysdba\" owner=scott file=scott_test.dmp
Export: Release 11.2.0.3.0 - Production on Wed Jul 1 18:25:15 2015
Copyright (c) 1982, 2011, Oracle and/or its affiliates. All rights reserved.
Connected to: Oracle Database 11g Enterprise Edition Release 11.2.0.3.0 - 64bit Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options
Export done in US7ASCII character set and UTF8 NCHAR character set
server uses AL32UTF8 character set (possible charset conversion)
About to export specified users ...
. exporting pre-schema procedural objects and actions
. exporting foreign function library names for user SCOTT
. exporting PUBLIC type synonyms
. exporting private type synonyms
. exporting object type definitions for user SCOTT
About to export SCOTT's objects ...
. exporting database links
. exporting sequence numbers
. exporting cluster definitions
. about to export SCOTT's tables via Conventional Path ...
. . exporting table BONUS 0 rows exported
EXP-00091: Exporting questionable statistics.
. . exporting table DEPT 4 rows exported
EXP-00091: Exporting questionable statistics.
EXP-00091: Exporting questionable statistics.
(篇幅原因,有省略……)
. exporting statistics
Export terminated successfully with warnings.
注意标红的两个部分:其一是EXP-00091错误提示信息,之前笔者文章中已经对这个错误有过说明,主要是没有设置NLS_LANG环境变量。另一个是标记的US7ASCII字符集参数。
Oracle Export工具的特点是这样,,如果在执行前没有设置NLS_LANG环境变量,就直接取Oracle早期默认字符集US7ASCII作为导出的对象。从数据库中原有的字符集(例如AL32UTF8)都要转化为US7ASCII进行保存。
这样是潜藏着一些问题的:如果没有设置NLS_LANG环境变量,数据导出被整理为US7ASCII格式。一旦数据库中保存的是WE8DEC类型的数据,也会被强制转化为US7ASCII,所有没有对应US7ASCII的字符就会自动被破坏成乱码。
下面,我们从dmp文件中检查字符集。
[oracle@MISDB:~]$ls -l | grep dmp
-rw-r--r-- 1 oracle oinstall 20480 Jul 01 18:25 scott_test.dmp
[oracle@MISDB:~]$cat scott_test.dmp | od -x | head
0000000 0300 0145 5850 4f52 543a 5631 312e 3032
0000020 2e30 300a 4453 5953 0a52 5553 4552 530a
0000040 3430 3936 0a30 0a37 320a 300a 0001 0369
0000060 0367 0001 0000 0000 0000 0000 000e 0020
0000100 2020 2020 2020 2020 2020 2020 2020 2020
*
0000140 2020 2020 2020 2020 2057 6564 204a 756c
0000160 2031 2031 383a 3235 3a31 3520 3230 3135
0000200 7363 6f74 745f 7465 7374 2e64 6d70 0000
0000220 0000 0000 0000 0000 0000 0000 0000 0000
字符集信息通常在DMP文件头的第二和第三个字节信息进行表示。注意:这个顺序是在Big-Endian操作系统情况下。通常头位信息为:03xx(xx为任意位值)。
0x0001是可以在Oracle中找到对应的取值的。
SQL> select nls_charset_id(value) nls_charset_id, value
2 from v$nls_valid_values
3 where parameter = 'CHARACTERSET'
4 order by nls_charset_id(value);
NLS_CHARSET_ID VALUE
-------------- ----------------------------------------------------------------
1 US7ASCII
2 WE8DEC
(篇幅原因,有省略……)
1865 ZHT16BIG5FIXED
2000 AL16UTF16
247 rows selected
US7ASCII对应的为0x0001,说明导出的文件字符集为US7ASCII。下面我们设置一下NLS_LANG环境变量进行测试。
[oracle@MISDB:~]$export NLS_LANG=AMERICAN_AMERICA.AL32UTF8
[oracle@MISDB:~]$exp \"/ as sysdba\" owner=scott file=scott_test_Set.dmp
Export: Release 11.2.0.3.0 - Production on Wed Jul 1 18:29:43 2015
Copyright (c) 1982, 2011, Oracle and/or its affiliates. All rights reserved.
Connected to: Oracle Database 11g Enterprise Edition Release 11.2.0.3.0 - 64bit Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options
Export done in AL32UTF8 character set and UTF8 NCHAR character set
About to export specified users ...
(篇幅原因,有省略……)
Export terminated successfully without warnings.
查看文件头信息。
[oracle@MISDB:~]$cat scott_test_Set.dmp | od -x | head
0000000 0303 6945 5850 4f52 543a 5631 312e 3032
0000020 2e30 300a 4453 5953 0a52 5553 4552 530a
0000040 3430 3936 0a30 0a37 320a 300a 0369 0369
0000060 0367 0001 0000 0000 0000 0000 0012 0020
0000100 2020 2020 2020 2020 2020 2020 2020 2020
*
0000140 2020 2020 2020 2020 2057 6564 204a 756c
0000160 2031 2031 383a 3239 3a34 3320 3230 3135
0000200 7363 6f74 745f 7465 7374 5f53 6574 2e64
0000220 6d70 0000 0000 0000 0000 0000 0000 0000
对应位数:0x0369对应AL32UTF8。下面为一些常见字符集的16进制编码。
The values for the most commonly used character sets are below:
Name ID
----------------------
US7ASCII 0x0001
WE8DEC 0x0002
WE8ISO8859P1 0x001f
EE8ISO8859P2 0x0020
SE8ISO8859P3 0x0021
NE8ISO8850P4 0x0022
CL8ISO8859P5 0x0023
AR8ISO8859P6 0x0024
EL8ISO8859P7 0x0025
IW8ISO8859P8 0x0026
WE8ISO8859P9 0x0027
WE8ISO8859P15 0x002e
TH8TISASCII 0x0029
US8PC437 0x0004
WE8ROMAN8 0x0005
WE8PC850 0x000a
EE8PC852 0x0096
RU8PC855 0X009B
TR8PC857 0x009C
WE8PC858 0x001c
WE8PC860 0x00A0
IS8PC861 0x00A1
N8PC865 0x00BE
RU8PC866 0x0098
EE8MSWIN1250 0x00aa
CL8MSWIN1251 0x00ab
WE8MSWIN1252 0x00b2
EL8MSWIN1253 0x00ae
TR8MSWIN1254 0x00b1
IW8MSWIN1255 0x00af
AR8MSWIN1256 0x0230
BLT8MSWIN1257 0x00b3
ZHT16MSWIN950 0x0363
ZHS16GBK 0x0354
ZHT16HKSCS 0x0364
JA16EUC 0x033e
JA16SJIS 0x0340
ZHT16BIG5 0x0361
AL24UTFFSS 0x0366
UTF8 0x0367
AL32UTF8 0x0369
说明:在使用NLS_LANG显示指定字符集合之后,DMP文件中就按照这个编码方式进行组织文件。
下面我们看一下在Little-Endian下的情况是如何的。
更多详情见请继续阅读下一页的精彩内容:

MySQL adalah sistem pengurusan pangkalan data relasi sumber terbuka, terutamanya digunakan untuk menyimpan dan mengambil data dengan cepat dan boleh dipercayai. Prinsip kerjanya termasuk permintaan pelanggan, resolusi pertanyaan, pelaksanaan pertanyaan dan hasil pulangan. Contoh penggunaan termasuk membuat jadual, memasukkan dan menanyakan data, dan ciri -ciri canggih seperti Operasi Join. Kesalahan umum melibatkan sintaks SQL, jenis data, dan keizinan, dan cadangan pengoptimuman termasuk penggunaan indeks, pertanyaan yang dioptimumkan, dan pembahagian jadual.

MySQL adalah sistem pengurusan pangkalan data sumber terbuka yang sesuai untuk penyimpanan data, pengurusan, pertanyaan dan keselamatan. 1. Ia menyokong pelbagai sistem operasi dan digunakan secara meluas dalam aplikasi web dan bidang lain. 2. Melalui seni bina pelanggan-pelayan dan enjin penyimpanan yang berbeza, MySQL memproses data dengan cekap. 3. Penggunaan asas termasuk membuat pangkalan data dan jadual, memasukkan, menanyakan dan mengemas kini data. 4. Penggunaan lanjutan melibatkan pertanyaan kompleks dan prosedur yang disimpan. 5. Kesilapan umum boleh disahpepijat melalui pernyataan yang dijelaskan. 6. Pengoptimuman Prestasi termasuk penggunaan indeks rasional dan pernyataan pertanyaan yang dioptimumkan.

MySQL dipilih untuk prestasi, kebolehpercayaan, kemudahan penggunaan, dan sokongan komuniti. 1.MYSQL Menyediakan fungsi penyimpanan dan pengambilan data yang cekap, menyokong pelbagai jenis data dan operasi pertanyaan lanjutan. 2. Mengamalkan seni bina pelanggan-pelayan dan enjin penyimpanan berganda untuk menyokong urus niaga dan pengoptimuman pertanyaan. 3. Mudah digunakan, menyokong pelbagai sistem operasi dan bahasa pengaturcaraan. 4. Mempunyai sokongan komuniti yang kuat dan menyediakan sumber dan penyelesaian yang kaya.

Mekanisme kunci InnoDB termasuk kunci bersama, kunci eksklusif, kunci niat, kunci rekod, kunci jurang dan kunci utama seterusnya. 1. Kunci dikongsi membolehkan urus niaga membaca data tanpa menghalang urus niaga lain dari membaca. 2. Kunci eksklusif menghalang urus niaga lain daripada membaca dan mengubah suai data. 3. Niat Kunci mengoptimumkan kecekapan kunci. 4. Rekod Rekod Kunci Kunci Rekod. 5. Gap Lock Locks Index Rakaman Gap. 6. Kunci kunci seterusnya adalah gabungan kunci rekod dan kunci jurang untuk memastikan konsistensi data.

Sebab -sebab utama prestasi pertanyaan MySQL yang lemah termasuk tidak menggunakan indeks, pemilihan pelan pelaksanaan yang salah oleh pengoptimasi pertanyaan, reka bentuk jadual yang tidak munasabah, jumlah data yang berlebihan dan persaingan kunci. 1. Tiada indeks menyebabkan pertanyaan perlahan, dan menambah indeks dapat meningkatkan prestasi dengan ketara. 2. Gunakan perintah Jelaskan untuk menganalisis pelan pertanyaan dan cari ralat pengoptimuman. 3. Membina semula struktur meja dan mengoptimumkan keadaan gabungan dapat meningkatkan masalah reka bentuk jadual. 4. Apabila jumlah data adalah besar, pembahagian dan strategi bahagian meja diterima pakai. 5. Dalam persekitaran konkurensi yang tinggi, mengoptimumkan urus niaga dan strategi mengunci dapat mengurangkan persaingan kunci.

Dalam pengoptimuman pangkalan data, strategi pengindeksan hendaklah dipilih mengikut keperluan pertanyaan: 1. Apabila pertanyaan melibatkan pelbagai lajur dan urutan syarat ditetapkan, gunakan indeks komposit; 2. Apabila pertanyaan melibatkan pelbagai lajur tetapi urutan syarat tidak ditetapkan, gunakan pelbagai indeks lajur tunggal. Indeks komposit sesuai untuk mengoptimumkan pertanyaan berbilang lajur, manakala indeks lajur tunggal sesuai untuk pertanyaan tunggal lajur.

Untuk mengoptimumkan pertanyaan perlahan MySQL, SlowQuerylog dan Performance_Schema perlu digunakan: 1. Dayakan SlowQueryLog dan tetapkan ambang untuk merakam pertanyaan perlahan; 2. Gunakan Performance_Schema untuk menganalisis butiran pelaksanaan pertanyaan, cari kesesakan prestasi dan mengoptimumkan.

MySQL dan SQL adalah kemahiran penting untuk pemaju. 1.MYSQL adalah sistem pengurusan pangkalan data sumber terbuka, dan SQL adalah bahasa standard yang digunakan untuk mengurus dan mengendalikan pangkalan data. 2.MYSQL menyokong pelbagai enjin penyimpanan melalui penyimpanan data yang cekap dan fungsi pengambilan semula, dan SQL melengkapkan operasi data yang kompleks melalui pernyataan mudah. 3. Contoh penggunaan termasuk pertanyaan asas dan pertanyaan lanjutan, seperti penapisan dan penyortiran mengikut keadaan. 4. Kesilapan umum termasuk kesilapan sintaks dan isu -isu prestasi, yang boleh dioptimumkan dengan memeriksa penyataan SQL dan menggunakan perintah menjelaskan. 5. Teknik pengoptimuman prestasi termasuk menggunakan indeks, mengelakkan pengimbasan jadual penuh, mengoptimumkan operasi menyertai dan meningkatkan kebolehbacaan kod.


Alat AI Hot

Undresser.AI Undress
Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool
Gambar buka pakaian secara percuma

Clothoff.io
Penyingkiran pakaian AI

AI Hentai Generator
Menjana ai hentai secara percuma.

Artikel Panas

Alat panas

Muat turun versi mac editor Atom
Editor sumber terbuka yang paling popular

MantisBT
Mantis ialah alat pengesan kecacatan berasaskan web yang mudah digunakan yang direka untuk membantu dalam pengesanan kecacatan produk. Ia memerlukan PHP, MySQL dan pelayan web. Lihat perkhidmatan demo dan pengehosan kami.

ZendStudio 13.5.1 Mac
Persekitaran pembangunan bersepadu PHP yang berkuasa

EditPlus versi Cina retak
Saiz kecil, penyerlahan sintaks, tidak menyokong fungsi gesaan kod

SecLists
SecLists ialah rakan penguji keselamatan muktamad. Ia ialah koleksi pelbagai jenis senarai yang kerap digunakan semasa penilaian keselamatan, semuanya di satu tempat. SecLists membantu menjadikan ujian keselamatan lebih cekap dan produktif dengan menyediakan semua senarai yang mungkin diperlukan oleh penguji keselamatan dengan mudah. Jenis senarai termasuk nama pengguna, kata laluan, URL, muatan kabur, corak data sensitif, cangkerang web dan banyak lagi. Penguji hanya boleh menarik repositori ini ke mesin ujian baharu dan dia akan mempunyai akses kepada setiap jenis senarai yang dia perlukan.