这多出的“1秒”将加在格林尼治时间12月31日23时59分后,通过增加闰秒实现。由于北京处于东八时区,所以将在2017年1月1日7时59分59秒后面增加1秒,届时会出现7时59分60秒的特殊现象。
为什么要增加1秒?这1秒从何而来?据天文专家介绍,为了确定时间,世界上有两种时间计量系统,基于地球自转得出的“世界时”和基于原子振荡周期确定的“原子时”。由于两种时间尺度对秒的测量方法不同,随着时间的推移,这两个时间系统之间就会出现差异,所以有了“协调世界时”的概念。
“协调世界时”以原子时秒长为基础,在时刻上尽量接近于世界时。1972年,国际计量大会决定,当“世界时”与“原子时”之间时刻相差超过0.9秒时,就在协调世界时上加上或减去1秒(正闰秒或负闰秒),以尽量接近世界时,这就是闰秒。
计算机的时间只要不使用ntp就没什么大问题。
aix date -n mmddhhmmyy,mm表示月分,dd表示日期,hh表示小时,mm表示分钟,yy表示年份。
the oracle oracle.sql.blob outputstream writes the data in chunks. since autocommit defaults to true, the first chunk is committed. this results in the write operation for the next chunk of the blob to fail since it appears to be in the next transaction.
in those conditions, the ora-22990 exception will occur with any version of oracle jdbc driver.
issue the setautocommit(false) command. then, explicitly commit the transaction after all of the blob chunks have been written to the row and the stream.close() method has been executed.
if using the oracle 10g jdbc driver (or greater version), a second solution consists of using the standard jdbc api (setbinarystream method of java.sql.preparedstatement interface). and in this case, autocommit can be set to true.
here is an example:
where blobtest is a table defined as the following:
数据库版本:11.2.0
今天在使用rman备份的时候随意的查看了一下等待事件,除了了我们现在系统遇到的io瓶颈外,还额外的发了enq: tx - row lock contention该等待事件
1:查询当前系统的等待事件
select event,sid,p1,p2,p3 from v$session_wait where event not like 'sql*%' and event not like 'rdbms%';
event sid p1 p2 p3
---------------------------------- ---- ---------- ---------- ----------
enq: tx - row lock contention 4 1415053318 196638 55836
rman backup & recovery i/o 5 1 256 2147483647
enq: tx - row lock contention 12 1415053318 524293 51153
rman backup & recovery i/o 25 1 256 2147483647
db file sequential read 27 16 2876703 1
pmon timer 33 300 0 0
db file scattered read 39 33 790536 128
vktm logical idle wait 49 0 0 0
streams aq: qmn slave idle wait 50 1 0 0
asynch descriptor resize 53 1 4294967295 1237
jobq slave wait 54 0 0 0
event sid p1 p2 p3
------------------------------------------- ------- ---------- ----------
db file sequential read 170 33 1100519 1
direct path read 181 44 469892 124
enq: tx - row lock contention 212 1415053318 524293 51153
smon timer 225 300 0 0
enq: tx - row lock contention 232 1415053318 524293 51153
direct path read 234 16 1099776 128
streams aq: qmn coordinator idle wait 242 0 0 0
上面的等待事件说明session4,12,212,232想加锁,但是有别的session占着,所以等待。
enq是一种保护共享资源的锁定机制,一个排队机制,先进先出(fifo)
发生tx锁的原因一般有几个
1.不同的session更新或删除同一个记录。
2.唯一索引有重复索引
3.位图索引多次更新
4.同时对同一个数据块更新
5.等待索引块分裂
2:下面我们通过enq: tx - row lock contention来看看这些session都在等什么
select row_wait_obj#,row_wait_file#,row_wait_block#,row_wait_row# from v$session where event='enq: tx - row lock contention';
row_wait_obj# row_wait_file# row_wait_block# row_wait_row#
------------- -------------- --------------- -------------
87556 57 395 88
87564 57 435 0
87564 57 435 0
87564 57 435 0
87564 57 435 0
3:通过上面sql查找出来的对象编号找到对应的对象名称
sql> select object_name from dba_objects where object_id in (87564);
object_name
-----------
qrtz_locks
4:通过对象名称找出该对象的对应属性,对象属性为table
sql> select owner,object_name,object_id,data_object_id, object_type from all_objects where object_name='qrtz_locks';
owner object_name object_id data_object_id object_type
schedule qrtz_locks 87564 87564 table
5:通过正在等待的sid查看它们都在执行什么操作
sql> select sid,sql_text from v$session a,v$sql b where sid in(4,12,41,212,232) and (b.sql_id=a.sql_id or b.sql_id=a.prev_sql_id);
sid sql_text
---- ----------------------------------------------------------------------------------------------------
4 update qrtz_cron_triggers set cron_expression = :1 where trigger_name = :2 and trigger_group = :3
12 select * from qrtz_locks where lock_name = :1 for update
41 select * from qrtz_locks where lock_name = :1 for update
212 select * from qrtz_locks where lock_name = :1 for update
232 select * from qrtz_locks where lock_name = :1 for update
从上面的结果可以看出,schedule用户下的五个session同时在执行一条相同的sql语句,对应的对象则是qrtz_locks 这个表, 所以发生了锁,从而产生等待,通过和同事的交流,得知这个一个etl程序要访问的表,里面只有五条数据,但是却要时时调度。
6:下面我们去找一下对应sid产生的锁
sql> select sid,ty,id1,id2,lmode,request,ctime,block from v$lock where block=1 or request<>0;
sid ty id1 id2 lmode request ctime block
---------------- ---- -- ---------- ---------- ---------- ---------- ---------- ----------
41 tx 524293 51153 0 6 3846 0
12 tx 524293 51153 0 6 4190 0
232 tx 524293 51153 0 6 4626 0
212 tx 524293 51153 0 6 4749 0
4 tx 196638 55836 0 6 4755 1
44 tx 196638 55836 6 0 4765 1
由此可以查看,block=1的sid是该等待事件的根源,其他session则等待该锁被释放。
解决方法:
1:通过v$session找到block=1的用户,告知用户提交事务
2:通过sid找到pid,kill掉该进程
3:更改sql语句,select * from qrtz_locks where lock_name = :1 for update no wait
加nowait的意思是得到或者得不到,不会等待
事件起因:
incident details in: d:/app/administrator/diag/rdbms/ccxe/ccxe/incident/incdir_2570/ccxe_ora_2164_i2570.trc
aborting crash recovery due to error 600
errors in file d:/app/administrator/diag/rdbms/ccxe/ccxe/trace/ccxe_ora_2164.trc:
ora-00600: internal error code, arguments: [kcratr_nab_less_than_odr], [1], [1770], [779181], [779205], [], [], [], [], [], [], []
errors in file d:/app/administrator/diag/rdbms/ccxe/ccxe/trace/ccxe_ora_2164.trc:
ora-00600: internal error code, arguments: [kcratr_nab_less_than_odr], [1], [1770], [779181], [779205], [], [], [], [], [], [], []
ora-600 signalled during: alter database open...
tue may 10 10:13:10 2011
trace dumping is performing id=[cdmp_20110510101310]
tue may 10 10:13:11 2011
sweep [inc][2570]: completed
sweep [inc2][2570]: completed
tue may 10 10:29:52 2011
shutting down instance (immediate)
shutting down instance: further logons disabled
warning! crash recovery of thread 1 seq 1770 is
ending at redo block 779181 but should not have ended before
redo block 779205
//看,有警告了,意思是我在恢复的时候,丢失了redo日志,当时我很纳闷,怎么会丢失redo呢?最后我把这个问题定位在传输redo的时候可能造成数据块的丢失,因为我以前发生过这类事情,所以我重新拷贝redo日志,再次将数据库启动。
incident 3771 created, dump file: d:/app/administrator/diag/rdbms/ccxe/ccxe/incident/incdir_3771/ccxe_ora_2164_i3771.trc
ora-00600: internal error code, arguments: [kcratr_nab_less_than_odr], [1], [1770], [779181], [779205], [], [], [], [], [], [], []
ora-00600: internal error code, arguments: [kcratr_nab_less_than_odr], [1], [1770], [779181], [779205], [], [], [], [], [], [], []
ora-00600: internal error code, arguments: [kcratr_nab_less_than_odr], [1], [1770], [779181], [779205], [], [], [], [], [], [], []
*** 2011-05-10 10:47:11.138
stopping background process mmnl
*** 2011-05-10 10:47:12.139
stopping background process mmon
*** 2011-05-10 10:47:13.259
ksukia: starting kill, flags = 1
ksukia: killed 0 out of 0 processes.
*** 2011-05-10 10:47:14.652
*** 2011-05-10 10:47:14.652 4132 krsh.c
arch: archival disabled due to shutdown: 1089
*** 2011-05-10 10:47:15.653
*** 2011-05-10 10:47:15.653 4132 krsh.c
arch: archival disabled due to shutdown: 1089
total system global area 6413680640 bytes
fixed size 2187728 bytes
variable size 754978352 bytes
database buffers 5637144576 bytes
redo buffers 19369984 bytes
database mounted.
ora-00338: log 4 of thread 1 is more recent than control file
ora-00312: online log 4 thread 1:
'd:/app/administrator/oradata/ccxe/redo04.log'
specify log: {
d:/app/administrator/oradata/ccxe/redo04.log
ora-00279: change 128488612 generated at 05/10/2011 11:13:52 needed for thread
ora-00289: suggestion :
d:/app/administrator/flash_recovery_area/ccxe/archivelog/2011_05_10/o1_mf_1_1771_%u_.arc
ora-00280: change 128488612 for thread 1 is in sequence #1771
ora-00278: log file 'd:/app/administrator/oradata/ccxe/redo04.log' no longer
needed for this recovery
specify log: {
d:/app/administrator/oradata/ccxe/redo05.log
log applied.
media recovery complete.
sql> alter database open; -必须以resetlogs方式打开数据库
alter database open
error at line 1:
ora-01589: must use resetlogs or noresetlogs option for database open
sql> alter database open resetlogs ;
database altered.
ok,现在数据库起来了,通过这次出错我总结了几点,希望对大家有帮助
1:数据库不管是不是测试,都尽量备份,否则出问题哭都来不及。
2:数据库尽量归档,这样就可以恢复数据库在任何时刻。
3:出错时不要慌,要仔细查看报错信息,分析报错,根据自己所掌握的知识一步一步解决,当你把问题解决
时,你会发现排错的过程真的是一个非常提升自己的过程。
4:平常一定要有几个在这方面很强的朋友,因为有的时候并不是自己查资料就能查到的,更多的是需要朋友的
经验与帮助。
注:以上就是这次错误的全部过程,过段时间我会把近期所遇到的错误都整理一下,都分享给大家,通过近期的工作我感觉数据库真的是一个非常庞大的系统,每次遇到新错的时候我都会很郁闷的解决,因为我发现我的懂的还是太少了,学习毕竟是一个由点到线,由线到网的过程,一个问题由模糊到清晰,由清晰再模糊,反复来几遍最终都会很明白的。我们要有清晰的理论知识,出错的时候才会找到出题所在,作为一个dba冷静,清晰的头脑也很重要,通过dba的这个行业,也是非常锻炼自己的性格,希望大家都可以在dba的这条职场之路,越走越远,祝大家好运。
数据库版本:oracle 11.2.0
今天同事需要执行一个拥有大批量运算的存储过程,当执行的时候报错,报错信息如下:
error at line 1:
ora-01555: snapshot too old: rollback segment number 18 with name
"_syssmu18_671080725$" too small
ora-06512: at "tranuser.tran_etl_load_j2s_main", line 22
ora-06512: at "tranuser.tran_etl_load_jst_pre", line 5
ora-06512: at line 2
--精彩解释
不知道是从哪里转的了, 假设有张表,叫table1,里面有5000万行数据,假设预计全表扫描1次需要1个小时,我们从过程来看:
1、在1点钟,有个用户a发出了select * from table1;此时不管将来table1怎么变化,正确的结果应该是用户a会看到在1点钟这个时刻的内容。这个是没有疑问的。
2、在1点30分,有个用户b执行了update命令,更新了table1表中的第4000万行的这条记录,这时,用户a的全表扫描还没有到达第4000万条。毫无疑问,这个时候,第4000万行的这条记录是被写到了回滚段里去了的,我假设是回滚段rbs1,如果用户a的全表扫描到达了第4000万行,是应该会正确的从回滚段rbs1中读取出1点钟时刻的内容的。
3、这时,用户b将他刚才做的操作commit了,但是这时,系统仍然可以给用户a提供正确的数据,因为那第4000万行记录的内容仍然还在回滚段rbs1里,系统可以根据scn来到回滚段里找到正确的数据,但是大家注意到,这时记录在rbs1里的第4000万行记录已经发生了一点重大的改变:就是这个第4000万行的在回滚段rbs1里的数据有可能随时被覆盖掉,因为这条记录已经被提交了!!!
4、由于用户a的查询时间漫长,而业务在一直不断的进行,rbs1回滚段在被多个不同的tracnsaction使用着,这个回滚段里的extent循环到了第4000万行数据所在的extent,由于这条记录已经被标记提交了,所以这个extent是可以被其他transaction覆盖掉的!
5、到了1点40分,用户a的查询终于到了第4000万行,而这时已经出现了第4条说的情况,需要到回滚段rbs1去找数据,但是已经被覆盖掉了,于是01555就出现了。
--错误提示
数据库报错 ora-01555 什么回滚段 '_syssmu168' is too small.很明显 是可用的回滚段太小了 满足不了那个大事物的需要 具体的sql我就不提供了
还有一种可能,一般伴随着ora-22924出现就是lob上的问题
辨别ora-01555是不是发生在lob上的,一般来说,普通的01555错误会指明发生01555的rollback segment,而lob的则没有,而是伴随着ora-22924出现
--回滚原理
回退段中存放的信息被称为“前照”(pre-image),也就是说当一个进程对某个表进行了dml操作以后,
更改前的纪录信息被存放于回滚段,其作用有两个:
1、当进程要求回滚(rollback)的时候,使用回滚段中信息是纪录复原;
2、保持数据读的一致性,当一个进程从某个表中读纪录的时候,oracle返回的是当读开始或者进程开始时的纪录,如果在读取过程中有其他进程更改了表纪录,oracle就会从回滚段中读取当读操作开始时的数据。回滚段中信息并不是持久有效的,当进程提交(commit)或者回滚(rollback)的时候,回滚段就被释放了。当一个进程在执行一个大查询的时候,如果在查询的过程中所读取得的表被更改而且更改commit太久,那回滚段中的“前照”就有可能会被其他的进程覆盖,从而导致ora-01555错误。
--解决方法
1、增加回滚段的大小,因为oracle总是覆盖最旧的回滚段,所以大的回滚段能有效的降低数据被覆盖的可能性。
2、检查你的程序,避免在一个大查询的过程中对所查询的表执行太多更新操作。
下面回顾下关于ora-01555的解决方法 10g默认是使用aum 这里就不说了. 下面是几个解决方式来自总结的很不错 大家可用参考下:
1、扩大回滚段: 因为回滚段是循环使用的,如果回滚段足够大,那么那些被提交的数据信息就能保存足够长的时间是那些大事务完成一致性读取。
2、增加undo_retention时间:在undo_retention规定的时间内,任何其他事务都不能覆盖这些数据。
3、优化相关查询语句,减少一致性读:减少查询语句的一致性读,就降低读取不到回滚段数据的风险。这一点非常重要!
4、减少不必要的事务提交:提交的事务越少,产生的回滚段信息就越少。
5、对大事务指定回滚段,通过以下语句可以指定事务的回滚段:set transaction use rollback segment rollback_segment; 给大事务指定回滚段,即降低大事务回滚信息覆盖其他事务的回滚信息的几率,又降低了他自身的回滚信息被覆盖的几率。大事务的存在,往往是1555错误产生的诱因。
6、使用游标时尽量使用显式游标,并且只在需要的时候打开游标,同时将所有可以在游标外做的操作从游标循环中拿出。当游标打开时,查询就开始了,直到游标关闭。减少游标的打开时间,就减少了1555错误发生的几率。
--一些实例
我的回答是先看看到底是哪个sql有这个问题,再确定不是因为sql本身太糟糕导致snapshot too old。再跟他们说我不相信把undo_retention加大会有效地解决问题。最后给几个cases来支持我的观点。
(1)reduce the frequency of commit
(2)set initialization paramter undo_retention(9i)
(3)alter system set retention guarrantee (10g)
(4)increase the size of the undo tablespace
(5)assign a large rollback segment for the large transaction
(6)tuning the long run sql
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
the root cause of the error ora-01555:the long run query can not find a consistent image, because the undo blocks that used to construct the consistent image were wrapped by other active transaction.
遇到这个问题,首先可以看是维护需要执行的sql或者应用执行的sql报的
1、如果平时不报,只是维护人员执行的sql报的,一般是sql写得不好,运行执行过长,超过了参数 redo_retention所设置的时间造成的。这种情况可以协助他们进行sql分析和优化,减少运行时间,这个情况下系统不需要对系统进行调整
2、如果是应用程序报的,比如批量程序,则需要通知相关人员进行重做,否则批量运行失败,业务可能会因为数据遗漏出现问题。如果出现的频率较多,则需要在优化应用程序(优化的手段有sql优化、适当增加commit的次数等)。在应用新版本上线前,可通过调整系统配置临时解决问题方法如:
1)增大undo表空间
2)增大redo_retention
3)为此大事物指定专门的undo 段
新鲜出炉的案例:apps的人下午回馈说今天一个db的job一直报snapshot too old。这是过去几个月这个数据库第一次有这种回馈。到alert log中看看,有好多这种error:wed jul 16 10:30:44 2008 ora-01555 caused by sql statement below (query duration=884 sec, scn: 0x0018.bef62785):wed jul 16 10:30:44 2008
wed jul 16 10:57:29 2008 ora-01555 caused by sql statement below (query duration=149 sec, scn: 0x0018.bf0d3e47):wed jul 16 10:57:29 2008
嗯,884s,149s,不可能吧?看看undo settings,很大啊:
sql> show parameter undo
name type value
------------------------------------ ----------- ------------------------------
undo_management string auto
undo_retention integer 10800
undo_suppress_errors boolean false
undo_tablespace string undotbs2
sql> select sum(bytes)/(1024*1024*1024) as gbytes from dba_data_files;
gbytes
----------
300.654297
sql> select sum(bytes)/(1024*1024*1024) as gbytes from dba_data_files where tablespace_name='undotbs2';
gbytes
----------
9.765625
自己试试:
create table mytab as
16:12:14 sql> insert into mytab
*
error at line 1:
ora-01555: snapshot too old: rollback segment number 27 with name "_syssmu27$"
too small
elapsed: 00:10:08.83
奇怪了。看看今天这个untotbs2 utilization怎样。
sql> select snap_time, free_mb from tbs_usage_hist where database='
snap_time free_mb
------------------- ----------
2008-07-15 18:00:00 9172.56
2008-07-15 19:00:00 9172.56
2008-07-15 20:00:00 9156.56
2008-07-15 21:00:00 9188.56
2008-07-15 22:00:00 9204.56
2008-07-15 23:00:00 9212.56
2008-07-16 00:00:00 9228.56
2008-07-16 01:00:00 9228.56
2008-07-16 02:00:00 9236.56
2008-07-16 03:00:00 9228.56
2008-07-16 04:00:00 9252.56
2008-07-16 05:00:00 9252.56
2008-07-16 06:00:00 9252.56
2008-07-16 07:00:00 9260.56
2008-07-16 08:00:00 9244.56
2008-07-16 09:00:00 8486.56
2008-07-16 10:00:00 1683.56
2008-07-16 11:00:00 2.31
2008-07-16 12:00:00 1.94
2008-07-16 13:00:00 2.44
2008-07-16 14:00:00 2.44
2008-07-16 15:00:00 1.25
2008-07-16 16:00:00 17.75
那 问题应当是很明了了,自今天十点多undotbs2一直是highly utilized。打个电话给app owner,原来他今天早上十点左右做了一个很大的delete。即然这个报错的app只要在二十四小时内能再执行完就可以,而oltp app没报错,那就再等等吧。在四点半时,undotbs2就差不多是85% free。再试试:
16:37:49 sql> insert into mytab
182 rows created.
elapsed: 00:34:47.39
17:12:37 sql>
现在的undotbs2 utilization:
snap_time free_mb
------------------- ----------
2008-07-16 17:00:00 8523.63
问题解决。snapshot too old从来就不是一个过时的题目,也没有一个简单的答案。
os环境:windows pc
数据库版本:oracle 10.0.2.1
这是一次小打小闹的报错,原因是帮同事改他自己玩的测试库sga,原sga_max_size大小为600m,我修改为2g,重启时报错。
ora-27100 shared memory realm already exists
通过查询官方文档,解释该原因是因为windows pc 32位机最大支持分配oracle内存为1.7g,所以导致报错,这是一次缺少经验的教训。
解决案例:
1:sql> show parameter sga
name type value
------------------------------------ ----------- ------------------------------
lock_sga boolean false
pre_page_sga boolean false
sga_max_size big integer 568m
sga_target big integer 568m
2:sql> alter system set sga_max_size=2048m scope=spfile; -将sga设置为2g
sql> alter system set sga_target=2048m scope=spfile;
3:sql> shutdown immediate -重启数据库报错
sql> startup
ora-27100 shared memory realm already exists
osd-00029: ????????????
o/s-error: (os 8) ??????????????????????????????
4:sql> create pfile from spfile; -使用spfile生成pfile,修改参数文件内的以下两个参数,
将参数调小。
*.sga_max_size=600000000
*.sga_target=600000000
5:sql> startup pfile='e:/oracle/product/10.2.0/db_1/database/initorcl.ora' -这时候启动
依然报错,这是因为windows机器需要重启后台服务,否则无法生效(郁闷)
ora-27100 shared memory realm already exists
osd-00029: ????????????
o/s-error: (os 8) ??????????????????????????????
7:找到管理/服务/oracleserviceorcl 重启
8:sql> startup pfile='e:/oracle/product/10.2.0/db_1/database/initorcl.ora'
oracle 例程已经启动。
total system global area 603979776 bytes
fixed size 1250428 bytes
variable size 163580804 bytes
database buffers 432013312 bytes
redo buffers 7135232 bytes
数据库装载完毕。
数据库已经打开。
9:sql> create spfile from pfile; -根据启动的pfile生成spfile,下次启动时候则主动读取spfile
参数文件
sql> startup force
sql> show parameter spfile
name type value
------------------------------------ ----------- ------------------------------
spfile string e:/oracle/product/10.2.0/db_1/
database/spfileorcl.ora
sql> show parameter sga;
name type value
----------------------------------- ----------- ------------------------------
lock_sga boolean false
pre_page_sga boolean false
sga_max_size big integer 576m
sga_target big integer 576m
jsp字体
window-->preferences-->general-->appearance-->colors and fonts-->basic-->text font-->chang里面的“text font”。直接在jsp文件编辑器上点击右键,然后选择属性,就可以设置了
java代码字体
html xml
jsp
<%-- todo mytask -->
java javascript
//todo mytask
css
/*todo mytask */打开 (window->preferences)
选择 general->editors->structured text edit->task tags.
勾选 "enable searching for task tags" setting.
在“filters”标签页中,要保证jsp是选中的。
在任务视图里面可以看到任务的状态。
在发布项目之前,需要管伫一下这个视图防止有未完成的任务就发布了项目。
”的解决方法
1、ueditor目录jsp目录下面有一个java文件
uploader.java
2、把这个文件放到src/ueditor包里面
3、把ueditor/jsp/目录下面的两个jar包放到工程里面
4 重新编译项目ok,可以上传附件,图片了!
有点小高兴
解决办法如下:
方法一: 环境: windows 2003 server sp1企业vol版 域控环境
安装数据库: sql 2000
在给出的输入cdkey的界面中,输入你已经安装的windows server 2003 的cdkey即可以继续安装,而不是sql 2000的cdkey。
方法二: 在开始>运行>输入“regedit"; 打开注册表编辑器。
浏览到
hkey_local_machine\system\currentcontrolset\control\session manager
将safedllsearchmode的dword值并将值从 1 更改为 0。
如果safedllsearchmode值不存在, 新建一个dword类型的safedllsearchmode键值。
重新启动 sql server 2000 安装,这时就不会出现提示“无法验证产品密钥”。
应用最新 sql servicepack 然后重新启动服务器。
在rhel6.1中,gonme桌面包的名字变成了desktop,这算是rhel6.1默认的桌面了。但如果只安装这个组的话,也是不行的,他缺少了x协议的支持,在启动桌面的时候,会出现下面和x相关的错误提示。
xinit: no such file or directory (errno 2): no server "/usr/bin/x" in path xinit: no such file or directory (errno 2): unable to connect to x server xinit: no such process (errno 3): server error.
所以说,要在字符界面下安装gnome桌面,你需要安装两个组。
yum groupinstall "x window system" yum groupinstall "desktop"
如果说,你安装系统的时候,选择了中文语言包的支持的话,那么系统会以中文显示。如果在终端使用的话,有点不方便,告别是用yum group*这些命令的时候,可能无法安装。
解决的办法就是编辑
/etc/sysconfig/i18n
把zh_cn换成en_us lang="en_us.utf-8" 然后执行一次下面的命令 source /etc/sysconfig/i18n
最早的一次使用oracle 11g导出数据发现有的表丢失了,感觉莫名其妙的,后来终于找到原因了。
找到问题以后,再看看凯发天生赢家一触即发官网的解决方案。
11gr2中有个新特性,当表无数据时,不分配segment,以节省空间,可是在用export导出时,空表也不能导出,这就导致迁移时候丢失了一些表,存储过程也失效了。本以为exp能有相应的控制开关,可以切换是否导出空表,看了下帮助,没有太大的改变。有些奇怪,难道11gr2不更新exp的功能了,还看有的帖子说11gr1作为客户端去卸载11gr2的,都会出现ora-1455d的错误,得换成11gr2的exp才没事了,心中感慨阿,怎么版本间的兼容这么脆弱了!
解决方法:
该方法是在在空表中插入数据,再删除,则产生segment。导出时则可导出空表。
该参数值默认是true,当改为false时,无论是空表还是非空表,都分配segment。修改语句:
alter system set deferred_segment_creation=false scope=both;
需注意的是:该值设置后对以前导入的空表不产生作用,仍不能导出,只能对后面新增的表产生作用。如需导出之前的空表,只能用第一种方法。
select 'alter '||table_name||' allocate extent;' from user_tables where num_rows=0;
把sql查询的结果导出,然后执行导出的语句,强行为表分配空间修改segment值,然后再导出即可导出空表了。