成人午夜视频全免费观看高清-秋霞福利视频一区二区三区-国产精品久久久久电影小说-亚洲不卡区三一区三区一区

oracle怎么改字 oracle怎么改字符集

oracle安裝后怎么修改字符集

數(shù)據(jù)庫字符集在創(chuàng)建后原則上不能更改。不過有2種方法可行。

鯉城ssl適用于網(wǎng)站、小程序/APP、API接口等需要進(jìn)行數(shù)據(jù)傳輸應(yīng)用場景,ssl證書未來市場廣闊!成為成都創(chuàng)新互聯(lián)公司的ssl證書銷售渠道,可以享受市場價格4-6折優(yōu)惠!如果有意向歡迎電話聯(lián)系或者加微信:13518219792(備注:SSL證書合作)期待與您的合作!

1. 如果需要修改字符集,通常需要導(dǎo)出數(shù)據(jù)庫數(shù)據(jù),重建數(shù)據(jù)庫,再導(dǎo)入數(shù)據(jù)庫數(shù)據(jù)的方式來轉(zhuǎn)換。

2. 通過ALTER DATABASE CHARACTER SET語句修改字符集,但創(chuàng)建數(shù)據(jù)庫后修改字符集是有限制的,只有新的字符集是當(dāng)前字符集的超集時才能修改數(shù)據(jù)庫字符集,例如UTF8是US7ASCII的超集,修改數(shù)據(jù)庫字符集可使用ALTER DATABASE CHARACTER SET UTF8。

oracle中怎么更改表中字段名?

首先方法是使用RENAME關(guān)鍵字:

修改字段名:alter table 表名 rename column 現(xiàn)列名 to 新列名;

修改表名:alter table 表名 rename to 新表名

增加字段語法:alter table tablename add (column datatype [default value][null/not null],….);

說明:alter table 表名 add (字段名 字段類型 默認(rèn)值 是否為空);

例:alter table sf_users add (HeadPIC blob);

例:alter table?sf_users add (userName varchar2(30) default?'空' not null);

修改字段的語法:alter table tablename modify (column datatype [default value][null/not null],….);

說明:alter table 表名 modify (字段名 字段類型?默認(rèn)值 是否為空);

例:alter table sf_InvoiceApply modify (BILLCODE number(4));

刪除字段的語法:alter table tablename drop (column);

說明:alter table 表名 drop column 字段名;

例:alter table sf_users drop column HeadPIC;

字段的重命名:

說明:alter table 表名 rename ?column? 列名 to 新列名?? (其中:column是關(guān)鍵字)

例:alter table sf_InvoiceApply rename column PIC to NEWPIC;

表的重命名:

說明:alter table 表名 rename to? 新表名

例:alter table?sf_InvoiceApply rename to??sf_New_InvoiceApply;

oracle怎么更改分區(qū)關(guān)鍵字

默認(rèn)情況下,oracle的分區(qū)表對于分區(qū)字段是不允許進(jìn)行update操作的,如果有對分區(qū)字段行進(jìn)update,就會報錯——ORA-14402: 更新分區(qū)關(guān)鍵字列將導(dǎo)致分區(qū)的更改。但是可以通過打開表的row movement屬性來允許對分區(qū)字段的update操作。

例:創(chuàng)建分區(qū)表test_part進(jìn)行實驗

create table TEST_PART

(

A1 NUMBERnot null,

A2 DATE not null,

A3 VARCHAR2(6) not null,

A4 DATE not null,

A5 NUMBER not null,

)

partition by range (A1)

(

partition P1 values less than (1000),

partition P2 values less than (2000),

partition P3 values less than (3000),

partition P4 values less than (4000),

partition P5 values less than (5000),

partition P6 values less than (MAXVALUE)

);

插入如下的數(shù)據(jù)

SQL select * from test_part;

A1 A2 A3 A4 A5

---------- ----------- ------ ----------- ----------

123 2006-06-30 123456 2006-06-30 123

456 2006-06-30 asdfgh 2006-06-30 456

1 2006-06-30 234123 2006-06-30 1

2 2006-06-30 234234 2006-06-30 2

1234 2006-06-30 456789 2006-06-30 1234

1111 2006-06-30 ewrqwe 2006-06-30 1111

2222 2006-06-30 fdafda 2006-06-30 2222

3333 2006-06-30 342342 2006-06-30 3333

5678 2006-06-30 qwerty 2006-06-30 5678

9 rows selected

分區(qū)P1、P2的數(shù)據(jù)分別為:

SQL select rowid,t.* from test_part partition(p1) t;

ROWID A1 A2 A3 A4 A5

------------------ ---------- ----------- ------ ----------- ----------

AAAGLoAAGAAAtsEAAB 456 2006-06-30 asdfgh 2006-06-30 456

AAAGLoAAGAAAtsEAAC 1 2006-06-30 234123 2006-06-30 1

AAAGLoAAGAAAtsEAAD 2 2006-06-30 234234 2006-06-30 2

AAAGLoAAGAAAtsEAAE 123 2006-06-30 123456 2006-06-30 123

SQL select rowid,t.* from test_part partition(p2) t;

ROWID A1 A2 A3 A4 A5

------------------ ---------- ----------- ------ ----------- ----------

AAAGLwAAGAAA+8MAAC 1234 2006-06-30 456789 2006-06-30 1234

AAAGLwAAGAAA+8MAAD 1111 2006-06-30 ewrqwe 2006-06-30 1111

直接update提示錯誤

SQL update test_part set a1=1123 where a1=123;

update test_part set a1=1123 where a1=123

ORA-14402: 更新分區(qū)關(guān)鍵字列將導(dǎo)致分區(qū)的更改

打開row movement屬性

SQL alter table test_part enable row movement;

Table altered

再次執(zhí)行update操作

SQL update test_part set a1=1123 where a1=123;

1 row updated

執(zhí)行是成功的并遷移到分區(qū)P2上了,且這時候rowid也發(fā)生了變化

SQL select rowid,t.* from test_part partition(p2) t;

ROWID A1 A2 A3 A4 A5

------------------ ---------- ----------- ------ ----------- ----------

AAAGLwAAGAAA+8MAAC 1234 2006-06-30 456789 2006-06-30 1234

AAAGLwAAGAAA+8MAAD 1111 2006-06-30 ewrqwe 2006-06-30 1111

AAAGLwAAGAAA+8PAAB 1123 2006-06-30 123456 2006-06-30 123

SQL

enable row movement可以允許數(shù)據(jù)段的壓縮、update分區(qū)字段的數(shù)據(jù)(跨分區(qū)的)

如何更改Oracle字符集

轉(zhuǎn)載自寒思國內(nèi)最常用的Oracle字符集ZHS16GBK(GBK

16-bit

Simplified

Chinese)能夠支持繁體中文,并且按照2個字符長度存儲一個漢字。UTF8字符集是多字節(jié)存儲,1個漢字(簡體、繁體)有時采用3個字符長度存儲。

Oracle支持字符集的更改,但是UTF8是Oracle中最大的字符集,也就是說UTF8是ZHS16GBK的嚴(yán)格超集。

對于子集到超集的轉(zhuǎn)換,Oracle是允許的,但是對于超集到子集的轉(zhuǎn)換是不允許的。一般對于超集到子集的轉(zhuǎn)換,建議是通過dbca刪除原來的數(shù)據(jù)庫,重新再建庫,選擇正確的字符集,然后導(dǎo)入備份。

我的方案是:先備份數(shù)據(jù),然后強(qiáng)制轉(zhuǎn)換字符集從UTF8到ZHS16GBK,然后導(dǎo)入備份數(shù)據(jù)。如果不行,才來重新建庫,設(shè)置字符集ZHS16GBK,導(dǎo)入備份數(shù)據(jù)。如果這還不行,就把更改字符集從ZHS16GBK到UTF8(這是安全的),再導(dǎo)入備份數(shù)據(jù),恢復(fù)到原始狀況。這樣就有可能避開重新建庫的麻煩。

1.

備份數(shù)據(jù)庫中所有用戶的數(shù)據(jù)

以oracle用戶登陸,執(zhí)行以下命令

#

export

NLS_LANG

=

“SIMPLIFIED

CHINESE_CHINA.UTF8”

保持與數(shù)據(jù)庫服務(wù)器端一致,這樣在exp導(dǎo)出時,就不會存在字符的轉(zhuǎn)換了,備份最原始的數(shù)據(jù)。

2.

評估UTF8轉(zhuǎn)換成ZHS16GBK的風(fēng)險

轉(zhuǎn)換之前,要使用Oracle的csscan工具對數(shù)據(jù)庫掃描,評估字符集轉(zhuǎn)換前后,數(shù)據(jù)有可能的損壞情況。如果評估情況糟糕,那就絕對要放棄了。

先安裝屬于

CSMIG

用戶的一套表和過程。以oracle用戶登陸UNIX,

#sqlplus

“/

as

sysdab”

SQL@$ORACLE_HOME/

rdbms/admin/csminst.sql

SQLexit

#

$ORACLE_HOME\bin\csscan

-help

可以更清楚如何使用csscan。

#

$ORACLE_HOME/bin/csscan

system/sunday

user=mmsc

FROMCHAR=UTF8

TOCHAR=ZHS16GBK

ARRAY=102400

PROCESS=3

csscan.log

以上命令意思是掃描用戶:mmsc中的所有數(shù)據(jù),從字符集UTF8更改為ZHS16GBK的轉(zhuǎn)換情況。然后得到三個文件:scan.txt、scan.out、scan.err。

查看scan.out,scan.err,可以看出mmsc用戶下的所有的數(shù)據(jù)都是可以轉(zhuǎn)換的,并且沒有出現(xiàn)轉(zhuǎn)換“Exceptional”的情況,因此可以更放心一點。

3.

更改數(shù)據(jù)庫的字符集為ZHS16GBK

前面說過,通過命令“Alter

Database

Characeter

Set

XXXX”,實現(xiàn)從超集到子集的轉(zhuǎn)換,在Oracle是不允許的。但是該命令,提供這樣的命令方式:

Alter

Database

Character

Set

INTERNAL_CONVERT/

INTERNAL_USE

XXXX

這是Oracle的非公開命令?!霸谑褂眠@個命令時,Oracle會跳過所有子集及超集的檢查,在任意字符集之間進(jìn)行強(qiáng)制轉(zhuǎn)換,所以,使用這個命令時你必須十分小心,你必須清楚這一操作會帶來的風(fēng)險”。

以oracle用戶登陸UNIX,

#sqlplus

“/

as

sysdba”

SQL

SHUTDOWN

IMMEDIATE;

SQL

STARTUP

MOUNT;

SQL

ALTER

SESSION

SET

SQL_TRACE=TRUE;

SQL

ALTER

SYSTEM

ENABLE

RESTRICTED

SESSION;

SQL

ALTER

SYSTEM

SET

JOB_QUEUE_PROCESSES=0;

SQL

ALTER

SYSTEM

SET

AQ_TM_PROCESSES=0;

SQL

ALTER

DATABASE

OPEN;

SQL

ALTER

DATABASE

CHARACTER

SET

ZHS16GBK;

//如果不使用“INTERNAL_USE”參數(shù),系統(tǒng)會提示出錯:

//ERROR

at

line

1:

//ORA-12712:

new

character

set

must

be

a

superset

of

old

character

set

SQL

ALTER

SESSION

SET

SQL_TRACE=FALSE;

SQL

SHUTDOWN

IMMEDIATE;

SQL

STARTUP;

此時,檢查一下數(shù)據(jù)庫的字符集是否更改過來

SQL

select

value$

from

props$

where

name=’NLS_CHARACTERSET’;

VALUE$

-----------------

ZHS16GBK

緊接著檢查一下數(shù)據(jù)庫中簡體中文、繁體中文是否正常,不會出現(xiàn)亂碼。

SQLselect

spid,spname,spshortname

from

spinfovisual_hk

…...

非常不幸,我看到了一堆亂碼,這也證明了Oracle不支持字符集從超集到子集的更改,當(dāng)時心里很緊張,很怕失敗,從而恢復(fù)到原樣。

但是根據(jù)以前的驗證,把UTF8下的備份導(dǎo)入到ZHS16GBK中去,是OK的,所以繼續(xù)嘗試。

4.

導(dǎo)入備份的用戶數(shù)據(jù)

還是以oracle用戶登陸UNIX,

先刪除庫中的用戶mmsc:

#sqlplus

“/

as

sysdba”

SQLdrop

user

mmsc

cascade;

SQLexit

再運行createuser.sql,生成mmsc用戶。

然后使用原來的備份文件,導(dǎo)入到mmsc用戶中:

注意:先設(shè)置NLS_LANG要與當(dāng)前數(shù)據(jù)庫的一致:ZHS16GBK。這樣,導(dǎo)出時用戶會話的NLS_LANG為UTF8,與原先的數(shù)據(jù)庫字符集一致;現(xiàn)在為ZHS16GBK,與此時的數(shù)據(jù)庫字符集一致。這樣,導(dǎo)入時,就會進(jìn)行字符轉(zhuǎn)換。

#

export

NLS_LANG

=

“SIMPLIFIED

CHINESE_CHINA.ZHS16GBK”

#imp

mmsc/mmsc@mdspdb

file=DSMPD113_user_mmsc.dmp

ignore=y

fromuser=mmsc

touser=mmsc

馬上查看數(shù)據(jù)庫中簡體、繁體中文,哈哈,沒有亂碼了,一切顯示正常。

緊接著進(jìn)行驗證,也證明了:1個漢字此時只占用2個字符長度。問題解決了!

oracle 10如何修改字符集?

1.修改服務(wù)器端oracle默認(rèn)字符集:打開“開始菜單”,在“運行”里輸入“cmd”,回車,進(jìn)入命令行編

輯模式。輸入“sqlplus /nolog”,回車。修改默認(rèn)字符集,以sysdba的身份執(zhí)行SQL語句。輸入“conn

sys/password@orcl as sysdba;”,回車。輸入“select name,value$ from props$ where

name like

’%NLS%’;”,查看默認(rèn)字符集。找到“NLS_CHARACTERSET”,其值為“WE8ISO8859P1”。

2.修改客戶端sqlplus默認(rèn)字符集:打開“開始菜單”,

在“運行”里輸入“regedit”,回車,進(jìn)入注冊表編輯器。按CTRL+F,輸入“NLS_LANG”,回車,找到sqlplus軟件目錄下的

NLS_LANG,其鍵值為“WE8ISO8859P1”。雙擊“NLS_LANG”,輸入“ZHS16GBK”,點擊“確定”按鈕保存重啟計算

機(jī)。

文章題目:oracle怎么改字 oracle怎么改字符集
當(dāng)前地址:http://jinyejixie.com/article8/hepiop.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供軟件開發(fā)、品牌網(wǎng)站建設(shè)網(wǎng)站營銷、網(wǎng)頁設(shè)計公司、用戶體驗電子商務(wù)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

成都定制網(wǎng)站網(wǎng)頁設(shè)計
黄石市| 高安市| 丹江口市| 沂源县| 拉萨市| 深水埗区| 桦川县| 阜新市| 依兰县| 五台县| 班玛县| 新邵县| 武城县| 抚顺县| 工布江达县| 九寨沟县| 武宣县| 杭州市| 罗平县| 仙桃市| 会昌县| 萨嘎县| 凌海市| 龙州县| 双江| 公主岭市| 隆昌县| 桐乡市| 上杭县| 商河县| 巴中市| 新兴县| 布尔津县| 鸡东县| 建宁县| 光泽县| 榆树市| 城市| 综艺| 蓝田县| 长泰县|