重庆分公司,新征程启航

为企业提供网站建设、域名注册、服务器等服务

oracle怎么改装,oracle怎么修改

ORACLE 更改主键怎么改?

1、首先应该删除已有的主键约束

让客户满意是我们工作的目标,不断超越客户的期望值来自于我们对这个行业的热爱。我们立志把好的技术通过有效、简单的方式提供给客户,将通过不懈努力成为客户在信息化领域值得信任、有价值的长期合作伙伴,公司提供的服务项目有:域名与空间、虚拟空间、营销软件、网站建设、淇滨网站维护、网站推广。

①若已知道该主键命名

alter table 表名 drop constraint 主键名;

②若不知道朱建命名

SELECT * from user_cons_columns c where c.table_name = '表名';

找到主键字段column对应的主键名,再执行①

2、增加新的主键约束

alter table 表名 add constraint 主键名 primary key(字段名);

oracle数据库表的性别怎么修改

1、首先打开电脑,进入到电脑桌面中。

2、其次点击桌面中的oracle数据库软件,进入到软件界面中,点击其设置,进入到设置界面中。

3、最后点击数据库表的性质,点击其性别,即可进行修改。

oracle怎么修改用户默认表空间?

1.设置默认表空间:

在Oracle数据库中创建用户(使用CREATE USER语句)时,如果不指定表空间,则默认的临时表空间时TEMP,默认的永久表空间时SYSTEM,这样旧导致应用系统与Oracle系统竞争使用SYSTEM表空间,会极大的影响Oracle系统的执行效率。为此,Oracle建议将非SYSTEM表空间设置为应用系统的默认永久表空间,并且将非TEMP临时表空间设置为应用系统的临时表空间。这样有利于数据库管理员根据应用系统的运行情况适时调整默认表空间和临时表空间。

更改默认临时表空间需要使用ALTER DATABASE DEFAULT TEMPRORY TABLESPACE语句,更改默认永久表空间需要使用ALTER DATABASE DEFAULT TABLESPACE语句。

2.例如:将临时表空间temp_1设置为默认的临时表空间。

3.例如:将表空间tbs_example设置为默认的永久表空间。

4.更改表空间的状态:

表空间有只读和可读写两种状态,若设置某个表空间为只读状态,则用户就不能够对该表空间的数据进行DML操作(INSERT、UPDATE和DELETE),但对某些对象的删除操作还是可以进行的,比如,索引和目录就可以被删除掉;若设置某个表空间为可读写状态,则用户旧可以对表空间的数据进行任何正常的操作,这也是表空间的默认状态。

设置表空间为只读状态,可以保证表空间数据的完整性。通常在进行数据库的备份、恢复及历史数据的完整性保护时,可将指定的表空间设置成只读状态。但设置表空间为只读并不是可以随意进行的,必须满足三个条件:

1、该表必须为ONLINE状态。

2、该表空间不能包含任何回滚段。

3、改表空间不能在归档模式下。

更改表空间的读写状态需要使用ALTER TABLESPACE...READ|ONLY READ WRITE语句

5.例如:修改tbs_test_3 表空间为只读状态。

6.例如:修改tbs_test_3 表空间为可读写状态。

怎样修改 oracle

IMP 可以导入不同用户,但是表空间名称是要一样。

如果是oracle 10g或以上可以用数据泵

1、expdp 导出文件

2、impdp 用户名/密码 directory='您创建的目录的名称' dumpfile='导出的文件名称' remap_schema=导出的用户名称:要导入的用户名称 remap_tablespace=导出的表空间名称:要导入的表空间名称

怎样更改oracle的编码方式

如何更改Oracle字符集

国内最常用的Oracle字符集ZHS16GBK(GBK 16-bit Simplified Chinese)能够支持繁体中文,并且按照2个字符长度存储一个汉字。UTF8字符集是多字节存储,1个汉字(简体、繁体)有时采用3个字符长度存储。

Oracle支持字符集的更改,但是UTF8是Oracle中最大的字符集,也就是说UTF8是ZHS16GBK的严格超集。

对于子集到超集的转换,Oracle是允许的,但是对于超集到子集的转换是不允许的。一般对于超集到子集的转换,建议是通过dbca删除原来的数据库,重新再建库,选择正确的字符集,然后导入备份。

我的方案是:先备份数据,然后强制转换字符集从UTF8到ZHS16GBK,然后导入备份数据。如果不行,才来重新建库,设置字符集ZHS16GBK,导入备份数据。如果这还不行,就把更改字符集从ZHS16GBK到UTF8(这是安全的),再导入备份数据,恢复到原始状况。这样就有可能避开重新建库的麻烦。

1. 备份数据库中所有用户的数据

以oracle用户登陆,执行以下命令

# export NLS_LANG = “SIMPLIFIED CHINESE_CHINA.UTF8”

保持与数据库服务器端一致,这样在exp导出时,就不会存在字符的转换了,备份最原始的数据。

2. 评估UTF8转换成ZHS16GBK的风险

转换之前,要使用Oracle的csscan工具对数据库扫描,评估字符集转换前后,数据有可能的损坏情况。如果评估情况糟糕,那就绝对要放弃了。

先安装属于 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中的所有数据,从字符集UTF8更改为ZHS16GBK的转换情况。然后得到三个文件:scan.txt、scan.out、scan.err。

查看scan.out,scan.err,可以看出mmsc用户下的所有的数据都是可以转换的,并且没有出现转换“Exceptional”的情况,因此可以更放心一点。

3. 更改数据库的字符集为ZHS16GBK

前面说过,通过命令“Alter Database Characeter Set XXXX”,实现从超集到子集的转换,在Oracle是不允许的。但是该命令,提供这样的命令方式:

Alter Database Character Set INTERNAL_CONVERT/ INTERNAL_USE XXXX

这是Oracle的非公开命令。“在使用这个命令时,Oracle会跳过所有子集及超集的检查,在任意字符集之间进行强制转换,所以,使用这个命令时你必须十分小心,你必须清楚这一操作会带来的风险”。

以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”参数,系统会提示出错:

//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;

此时,检查一下数据库的字符集是否更改过来

SQL select value$ from props$ where name=’NLS_CHARACTERSET’;

VALUE$

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

ZHS16GBK

紧接着检查一下数据库中简体中文、繁体中文是否正常,不会出现乱码。

SQLselect spid,spname,spshortname from spinfovisual_hk

…...

非常不幸,我看到了一堆乱码,这也证明了Oracle不支持字符集从超集到子集的更改,当时心里很紧张,很怕失败,从而恢复到原样。

但是根据以前的验证,把UTF8下的备份导入到ZHS16GBK中去,是OK的,所以继续尝试。

4. 导入备份的用户数据

还是以oracle用户登陆UNIX, 先删除库中的用户mmsc:

#sqlplus “/ as sysdba”

SQLdrop user mmsc cascade;

SQLexit

再运行createuser.sql,生成mmsc用户。

然后使用原来的备份文件,导入到mmsc用户中:

注意:先设置NLS_LANG要与当前数据库的一致:ZHS16GBK。这样,导出时用户会话的NLS_LANG为UTF8,与原先的数据库字符集一致;现在为ZHS16GBK,与此时的数据库字符集一致。这样,导入时,就会进行字符转换。

# export NLS_LANG = “SIMPLIFIED CHINESE_CHINA.ZHS16GBK”

#imp mmsc/mmsc@mdspdb file=DSMPD113_user_mmsc.dmp ignore=y fromuser=mmsc touser=mmsc

马上查看数据库中简体、繁体中文,哈哈,没有乱码了,一切显示正常。

紧接着进行验证,也证明了:1个汉字此时只占用2个字符长度。问题解决了!


文章题目:oracle怎么改装,oracle怎么修改
网站网址:http://cqcxhl.com/article/dsgshpd.html

其他资讯

在线咨询
服务热线
服务热线:028-86922220
TOP