Oracle
 sql >> Teknologi Basis Data >  >> RDS >> Oracle

12c VARCHAR2(32767)

Saya selalu bertanya-tanya mengapa tipe data VARCHAR2 terbatas pada begitu sedikit karakter. Untuk sebagian besar atribut, Anda tidak memerlukan lebih dari 2.000 byte. Saya ingat ketika Oracle menaikkan batas dari 2.000 byte menjadi 4.000. Tapi SQL Server 2008R2 memungkinkan Anda menggunakan 8.000. Kita berbicara tentang data karakter dan batas 2.000 atau 4.000 byte tampak agak sewenang-wenang bagi saya. Sekarang di Oracle 12c, Anda dapat menggunakan VARCHAR2(32767) untuk maksimum 32KB. Tetapi sebelum Anda dapat menggunakan fitur baru ini, Anda perlu melakukan sedikit pekerjaan. Di luar kotak, Anda akan mendapatkan kesalahan.

SQL> create table test_tab (val varchar2(32000));create table test_tab (val varchar2(32000))                                    *ERROR pada baris 1:ORA-00910:panjang yang ditentukan terlalu panjang untuk tipe datanya

Oracle 12c menyertakan parameter baru, MAX_STRING_SIZE yang mengontrol seberapa besar tipe data VARCHAR2 Anda. Parameter ini dapat diatur ke STANDAR atau DIPERPANJANG. Standarnya adalah STANDAR yang membatasi VARCHAR2 hingga 4000 byte. Mengubah parameter ini ke standar menjadi EXTENDED adalah perjalanan satu arah. Anda tidak dapat kembali. Untuk melakukan perubahan, Anda perlu MEMULAI UPGRADE instance, memodifikasi parameter, dan menjalankan skrip.

SQL> SQL> SUMENDDOW IMMEDIATIATEDatabase ditutup.Database DROWKOUNTED.ORACLE CONTOM TUJUAN DOWN.SQL> Startup Upgradeoracle instance dimulai. set sistem max_string_size=EXTENDED scope=both;Sistem diubah.SQL> @?/rdbms/admin/utl32k.sql

Ini mungkin memerlukan beberapa saat untuk dijalankan. Setelah selesai, pantulkan instance agar terbuka seperti biasa.

Sekarang saya dapat membuat tabel dengan tipe data yang lebih besar ini.

SQL> buat tabel test_tab (val varchar2(32000));Tabel dibuat.

  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Data dari Oracle di utf-8 dengan php

  2. TNS-12519 tanpa Proses Maksimum Tercapai

  3. Apakah ada cara terbaik untuk menghindari eksekusi proses lebih dari sekali di Oracle?

  4. Apa tabel ganda di Oracle?

  5. Subquery Oracle tidak melihat variabel dari blok luar 2 level ke atas