“OK—我来了!深圳浪潮K-DB初体验”小记


早在八月,就听说过“OK我来了”:浪潮K-DB PK OracleDB。
十位数据库业界大牛抽签分成两组,分别对KDB和OracleDB进行性能优化,盖国强老师也表示对K-DB感到惊喜。

2015年12月10日,“OK我来了”走进深圳,怀着疑问、期待,我走进了浪潮。

先对K-DB的基本信息进行扫盲:
----------------------------------------------------------------------------
------------------------ 浪潮K-DB是怎么来的? ---------------------
----------------------------------------------------------------------------
      浪潮高端计算机产品部张经理向我们介绍,K-DB由1997年创立的韩国TMAXSOFT公司开发,目前在韩国和日本已经有较成熟的应用。现在,浪潮和TMAX公司合资,由浪潮全权负责K-DB在中国的发展。
     K-DB的开发工作主要由TMAX公司负责,浪潮公司掌握100%K-DB的产品源代码。同时,K-DB只是功能和使用方法与Oracle DB相似,源代码不同,并不存在法律问题。
     我的理解 (也结合参会当日各位大牛的观点
     浪潮K-DB11g的功能基本都是照着Oracle11g复制过来的,增加了一些细节方面的功能,另外主要基于浪潮天梭K1上使用K-DB做了优化。
     优势:
        
- 成熟的Oracle DBA不需要花太多功夫去学习新的知识就可以很快上手,企业不需要花太多金钱精力培养运维人员
        
- 最大程度兼容Oracle,从Oracle到K-DB迁移很方便
     弊端:
         - 一定程度上缺乏产品的生命力
        
- 产品使用范围受到限制
----------------------------------------------------------------------------
------------- 为什么选择浪潮K-DB数据库解决方案 --------------
----------------------------------------------------------------------------
    数据库作为企业信息系统的根基,支撑着整个应用系统的运行。目前中国绝大多数关键行业用户的数据库都被国外厂商所垄断,其中国外的主流数据库更是占据着庞大的市场份额,垄断的市场造成了选择权和议价权的受限以及高昂的维保费用。中国关键用户正在被国外数据库捆绑,大大增加了信息化建设成本。
  浪潮K-DB数据库是面向关键行业应用的大型数据库产品,适合大规模事务处理、联机数据分析处理等业务场景,是国外主流数据库的理想替代产品。浪潮公司拥有K-DB数据库源代码,在中国设有研发中心,拥有完善的产品研发、技术支持、销售和市场体系。浪潮K-DB与K-UX、K-HA一起组成K1系统的基础软件体系。
  相比Oracle等国外数据库,采用浪潮K-DB数据库解决方案可有效帮助客户解决以下困扰:
      信息系统的发展受到国外产品发展路线的制约
      国外软、硬件产品带给国内企业的信息安全威胁
      国外软、硬件产品高昂的采购和维护成本
      国外厂商技术支持时效性差,用户利益难以保障
      详见: http://www.inspur.com/lcjtww/443012/444624/444865/444657/2221454/index.html
      
      我的理解是这样的(也结合参会当日各位技术大牛的观点):
     1.大势所趋:在很多机构和部门,避免国外产品垄断化,国产化是必然的趋势。就好像近几年网络方面,华为渐渐取代思科是一个道理。反观K-DB,虽然没有做到完完全全的国有化且规模等暂不可与华为同日而语,但在Oracle“横行”了这么多年的情况下,还是大有前途的
     2.在国内缺乏成熟案例:在日本和韩国,K-DB已经有比较成熟的应用,而在国内,K-DB作为新兴数据库产品,还缺乏比较成熟的应用案例。很多企业,尤其是银行、金融和通信行业,对数据的安全是极为看重的,在没有较为成熟的应用的情况下,不太可能轻易使用K-DB。因此,K-DB在发展壮大的道路上,任重而道远。
----------------------------------------------------------------------------
--------------------浪潮K-DB数据库解决方案- ---------------------
----------------------------------------------------------------------------
      浪潮K-DB是目前和Oracle兼容性最好的数据库产品,并已在各行业推广使用。
     之前听说的99%倒也不是,因该说是一款功能几乎一样,操作方式几乎一样的新产品,哈,就好像“最熟悉的陌生人”。

    ----体系架构示意图
    
    Oracle DB、K-DB,傻傻分不清楚。

    ----逻辑结构
    
     逻辑结构也是和Oracle DB类似的。
     数据类型等等的支持神马的这里就不贴了,详见: http://server.it168.com/a2015/1123/1779/000001779314.shtml

      另外,K-DB有一套和Oracle RAC相似的KRAC:

     
      和Oracle ADG类似的双机热备系统:
     
     和Oracle 11g ADG类似,备库也可以在Open的时候进行恢复,对外提供查询服务。
     详见:http://www.inspur.com/lcjtww/443009/443411/447503/448483/2221427/index.html
     浅谈KRAC内存融合技术: http://server.it168.com/a2015/1209/1791/000001791787.shtml
 
     另外,K-DB还提供了可视化监控工具,下次有机会再贴。

----------------------------------------------------------------------------
--------------------浪潮K-DB一键迁移体验- ------------------------
----------------------------------------------------------------------------
    目标:
     将名为ORCL的K-DB数据库的BASE用户下的所有对象迁移至同一台主机名为KDB的K-DB库下。
     1.打开迁移工具,长这样:

    看到这个界面感觉还是不错的,不管怎么说,比辛辛苦苦写parfile做导入导出,还要时不时看看进度担心挂掉要来的直观得多了。不过,许多资深DBA对图形化工具往往没有好感,会觉得缺乏安全感,有种似乎不在掌握之中的感觉。
    但是,不得不说,这个工具很大程度上减少了数据迁移的工作量。

    2.连接两台数据库



    3.设置迁移选项


    多种迁移选项选择,贴心。



    由于数据量比较大,可以调整并行度


    4.开始迁移

    可以查看迁移报告:

    
   报告详细内容


查看迁移进度:


    5.迁移完成


----------------------------------------------------------------------------
-------------------------一些简单的操作- -----------------------------
----------------------------------------------------------------------------
   1.连接到K-DB

  1. [u2@host3 ~]$ kdsql sys/kdb

  2. kdSQL 11

  3. Connected to Inspur K-DB.

  4. SQL> conn base/base
  5. Connected to Inspur K-DB.

  6. SQL> select count(*) from tab;

  7.   COUNT(*)
  8. ----------
  9.        190

  10. 1 row selected.

  11. [u2@host3 ~]$ kdsql sys/kdb@127.0.0.1:5200/kdb as sysdba

  12. kdSQL 11

  13. TBS-70059: Invalid option 'as'.

  14. Usage: kdsql [options] [logon] [script]

  15. options
  16. -------
  17.   -h,--help Displays this information
  18.   -v,--version Displays version information
  19.   -s,--silent Enables silent mode. Does not display the start-up message,
  20.                    prompts and commands
  21.   -i,--ignore Ignore the logon script (eg, kdsql.login)

  22. logon
  23. -----
  24.   [username[/password[@connect_identifier]]]

  25. script
  26. ------
  27.   @filename[.ext] [parameter ...]

  28. [u2@host3 ~]$ kdsql sys/kdb@127.0.0.1:5200/kdb

  29. kdSQL 11

  30. Connected to Inspur K-DB.


  1. SQL> help

  2.  HELP
  3.  ----
  4.  Displays the Help.

  5.  {H[ELP]|?} topic

  6.  where topic is
  7.     ! {exclamation} % {percent} @ {at} @@ {double at}
  8.     / {slash} ACCEPT APPEND ARCHIVE LOG
  9.     CHANGE CLEAR COLUMN CONNECT
  10.     DEFINE DEL DESCRIBE DISCONNECT
  11.     EDIT EXECUTE EXIT EXPORT
  12.     HELP HISTORY HOST INPUT
  13.     LIST LOADFILE LOOP LS
  14.     PASSWORD PAUSE PING PRINT
  15.     PROMPT QUIT RUN SAVE CREDENTIAL
  16.     SET SHOW KDDOWN SPOOL
  17.     START UNDEFINE VARIABLE WHENEVER

  连接K-DB的SYS用户时不需要使用AS SYSDBA选项,sqlplus变为了kdsql,但是语法很接近,包括简易连接也一样。

   2.创建和授权用户

  1. SQL> drop user base cascade;
  2. TBR-7069: Specified user 'BASE' was not found.

  3. SQL> clear scr

  4. SQL> create user base identified by base;

  5. User 'BASE' created.

  6. SQL> grant dba to base;

  7. Granted.

    clear scr 指令一样可以用来清屏

   3.看看数据字典

  1. SQL> desc v$database;

  2. COLUMN_NAME TYPE CONSTRAINT
  3. ---------------------------------------- ------------------ --------------------
  4. DBID NUMBER
  5. NAME VARCHAR(40)
  6. CREATE_DATE DATE
  7. CURRENT_TSN NUMBER
  8. OPEN_MODE VARCHAR(10)
  9. RESETLOG_TSN NUMBER
  10. RESETLOG_DATE DATE
  11. PREV_RESETLOG_TSN NUMBER
  12. PREV_RESETLOG_DATE DATE
  13. LOG_MODE VARCHAR(12)
  14. CKPT_TSN NUMBER
  15. CKPT_DATE DATE

  16. SQL> desc v$instance;

  17. COLUMN_NAME TYPE CONSTRAINT
  18. ---------------------------------------- ------------------ --------------------
  19. INSTANCE_NUMBER NUMBER
  20. INSTANCE_NAME VARCHAR(40)
  21. DB_NAME VARCHAR(40)
  22. HOST_NAME VARCHAR(63)
  23. PARALLEL VARCHAR(3)
  24. THREAD# NUMBER
  25. VERSION VARCHAR(8)
  26. STARTUP_TIME DATE
  27. STATUS VARCHAR(16)
  28. SHUTDOWN_PENDING VARCHAR(4)
  29. TIP_FILE VARCHAR(256)

  30. SQL> select status from v$instance;

  31. STATUS
  32. ----------------
  33. NORMAL

  34. 1 row selected.


  1. SQL> desc dba_users;

  2. COLUMN_NAME TYPE CONSTRAINT
  3. ---------------------------------------- ------------------ --------------------
  4. USERNAME VARCHAR(128)
  5. USER_ID NUMBER
  6. PASSWORD VARCHAR(24)
  7. ACCOUNT_STATUS VARCHAR(30)
  8. LOCK_DATE DATE
  9. EXPIRY_DATE DATE
  10. DEFAULT_TABLESPACE VARCHAR(128)
  11. CREATED DATE
  12. PROFILE VARCHAR(255)
  13. DEFAULT_TEMP_TABLESPACE VARCHAR(128)
  14. AUTHENTICATION_TYPE VARCHAR(8)

  15. SQL> desc dba_tables;

  16. COLUMN_NAME TYPE CONSTRAINT
  17. ---------------------------------------- ------------------ --------------------
  18. OWNER VARCHAR(128)
  19. TABLE_NAME VARCHAR(128)
  20. TABLESPACE_NAME VARCHAR(128)
  21. PCT_FREE NUMBER
  22. INI_TRANS NUMBER
  23. LOGGING VARCHAR(3)
  24. NUM_ROWS NUMBER
  25. BLOCKS NUMBER
  26. AVG_ROW_LEN NUMBER
  27. DEGREE NUMBER
  28. SAMPLE_SIZE NUMBER
  29. LAST_ANALYZED DATE
  30. PARTITIONED VARCHAR(3)
  31. BUFFER_POOL VARCHAR(7)
  32. ROW_MOVEMENT VARCHAR(8)
  33. DURATION VARCHAR(11)
  34. COMPRESSION VARCHAR(3)
  35. DROPPED VARCHAR(3)
  36. READ_ONLY VARCHAR(3)
  37. TEMPORARY VARCHAR(3)
  38. MAX_EXTENTS NUMBER
  39. IOT_TYPE VARCHAR(12)
  40. INITIAL_EXTENT NUMBER
  41. NEXT_EXTENT NUMBER
  42. MIN_EXTENTS NUMBER
  43. IS_VIRTUAL VARCHAR(1)


  1. SQL> desc dba_tablespaces;

  2. COLUMN_NAME TYPE CONSTRAINT
  3. ---------------------------------------- ------------------ --------------------
  4. TABLESPACE_NAME VARCHAR(128)
  5. TS_ID NUMBER
  6. DATAFILE_COUNT NUMBER
  7. BLOCK_SIZE NUMBER
  8. NEXT_EXTENT NUMBER
  9. STATUS VARCHAR(9)
  10. CONTENTS VARCHAR(9)
  11. LOGGING VARCHAR(9)
  12. FORCE_LOGGING VARCHAR(3)
  13. ALLOCATION_TYPE VARCHAR(7)
  14. ENCRYPTED VARCHAR(3)
  15. INITIAL_EXTENT NUMBER
  16. MIN_EXTENTS NUMBER
  17. MAX_EXTENTS NUMBER
  18. EXTENT_MANAGEMENT VARCHAR(5)
  19. SEGMENT_SPACE_MANAGEMENT VARCHAR(4)

还是有一些区别的。

   4.查查参数

  1. SQL> show parameter name

  2. NAME TYPE VALUE
  3. ---------------------------- -------- ----------------------------------------
  4. CM_COORDINATOR_NAME STRING
  5. CM_FILE_NAME STRING
  6. CM_GROUP_NAME STRING
  7. CM_NAME STRING
  8. DB_NAME STRING kdb
  9. NAMED_PIPE_DIR DIRNAME /home/u2/kdb11/instance/kdb/path/
  10. STANDBY_FILE_NAME_CONVERT STRING

  11. SQL> show parameter

  12. NAME TYPE VALUE
  13. ---------------------------- -------- ----------------------------------------
  14. ACF_CMPT_CNT INT32 132
  15. ACTIVE_SESSION_HISTORY Y_N NO
  16. ACTIVE_SESSION_TIMEOUT INT32 0
  17. ACT_LOG_DEST DIRNAME /home/u2/kdb11/instance/kdb/dump/act/
  18. ACT_LOG_FILE_SIZE INT32 104857600
  19. AUDIT_FILE_DEST DIRNAME /home/u2/kdb11/instance/kdb/audit/
  20. AUDIT_FILE_SIZE INT32 104857600
  21. AUDIT_LOG_TOTAL_SIZE_LIMIT INT64 314572800
  22. AUDIT_SYS_OPERATIONS Y_N NO
  23. AUDIT_TRAIL STRING NONE
  24. AUTHENTICATION_TIMEOUT INT32 10
  25. AUTO_COALESCE INT32 2
  26. ...

    5.根据参数找到警告日志文件,看看

  1. [u5@host3 tracelog]$ tail -200f trace.log
  2. 12/10 15:34:57.469088 [DDL] 59(59) ddl_inde:2730 create index build (non_partitioned) start
  3. 12/10 15:34:57.469198 [DDL] 59(59) td_ifbui:107 Build sgmt id : 3469;
  4. 12/10 15:34:57.469207 [DDL] 59(59) ddl_inde:1613 ddl_index_build_insert building_index on
  5. 12/10 15:34:57.469398 [DDL] 59(59) secu_aut:154 secu_check building_index on
  6. 12/10 15:34:57.528528 [FRM] 59(59) tbsvr_er:066 THROW. ec=ERROR_TD_IFBUILD_UNIQ_VIOLATION(-4004) [ Duplicate unique key found during index fast build. ] (csr_id:4294967295) [td_ifbuild.c:739:td_ifbuild_insert_shortcut]
  7. 12/10 15:34:57.528543 [DDL] 59(59) ddl_inde:1847 building_index off
  8. 12/10 15:34:57.528872 [DDL] 59(59) ddl_fram:352 DDL execution failed (ec = -4004): CREATE UNIQUE INDEX "BASE"."SYS_C005666" ON "BASE"."TAB_CARINFO" (
  9.         "CAR_ID" ASC
  10. )
  11. LOGGING
  12. TABLESPACE "USERS"
  13. PCTFREE 10
  14. INITRANS 3
  15. 12/10 15:34:57.530972 [DDL] 59(59) ddl_fram:205 Executing DDL: CREATE UNIQUE INDEX "BASE"."SYS_C005668" ON "BASE"."TAB_DEVGROUPS" (
  16.         "GROUP_ID" ASC
  17. )
  18. LOGGING
  19. TABLESPACE "USERS"
  20. PCTFREE 10
  21. INITRANS 3
  22. 12/10 15:34:57.531903 [DDL] 59(59) ddl_inde:471 create isgmt(idx) obj_id:3470, sgmt_id:3470
  23. 12/10 15:34:57.532387 [DDL] 59(59) ddl_inde:1323 index build SQL: SELECT /*+ no_tde */ to_srowid(ROWID),("GROUP_ID") FROM "BASE"."TAB_DEVGROUPS" WHERE (("GROUP_ID") IS NOT NULL) ORDER BY ("GROUP_ID") ASC NULLS LAST, 1 ASC
  24. 12/10 15:34:57.532399 [DDL] 59(59) ddl_inde:2730 create index build (non_partitioned) start
  25. 12/10 15:34:57.532509 [DDL] 59(59) td_ifbui:107 Build sgmt id : 3470;
  26. 12/10 15:34:57.532518 [DDL] 59(59) ddl_inde:1613 ddl_index_build_insert building_index on
  27. 12/10 15:34:57.532709 [DDL] 59(59) secu_aut:154 secu_check building_index on
  28. 12/10 15:34:57.534918 [FRM] 59(59) tbsvr_er:066 THROW. ec=ERROR_TD_IFBUILD_UNIQ_VIOLATION(-4004) [ Duplicate unique key found during index fast build. ] (csr_id:4294967295) [td_ifbuild.c:739:td_ifbuild_insert_shortcut]
  29. 12/10 15:34:57.534933 [DDL] 59(59) ddl_inde:1847 building_index off
  30. 12/10 15:34:57.535217 [DDL] 59(59) ddl_fram:352 DDL execution failed (ec = -4004): CREATE UNIQUE INDEX "BASE"."SYS_C005668" ON "BASE"."TAB_DEVGROUPS" (
  31.         "GROUP_ID" ASC
  32. )
  33. LOGGING
  34. TABLESPACE "USERS"
  35. PCTFREE 10
  36. INITRANS 3
  37. 12/10 15:34:57.537753 [DDL] 59(59) ddl_fram:205 Executing DDL: CREATE UNIQUE INDEX "BASE"."SYS_C005670" ON "BASE"."TAB_DRIVERS" (
  38.         "DRIVER_ID" ASC
  39. )
  40. LOGGING
  41. TABLESPACE "USERS"
  42. PCTFREE 10
  43. INITRANS 3
  44. 12/10 15:34:57.538681 [DDL] 59(59) ddl_inde:471 create isgmt(idx) obj_id:3471, sgmt_id:3471
  45. 12/10 15:34:57.539187 [DDL] 59(59) ddl_inde:1323 index build SQL: SELECT /*+ no_tde */ to_srowid(ROWID),("DRIVER_ID") FROM "BASE"."TAB_DRIVERS" WHERE (("DRIVER_ID") IS NOT NULL) ORDER BY ("DRIVER_ID") ASC NULLS LAST, 1 ASC
  46. 12/10 15:34:57.539200 [DDL] 59(59) ddl_inde:2730 create index build (non_partitioned) start
  47. 12/10 15:34:57.539309 [DDL] 59(59) td_ifbui:107 Build sgmt id : 3471;
  48. 12/10 15:34:57.539318 [DDL] 59(59) ddl_inde:1613 ddl_index_build_insert building_index on
  49. 12/10 15:34:57.539509 [DDL] 59(59) secu_aut:154 secu_check building_index on
  50. 12/10 15:34:57.580333 [FRM] 59(59) tbsvr_er:066 THROW. ec=ERROR_TD_IFBUILD_UNIQ_VIOLATION(-4004) [ Duplicate unique key found during index fast build. ] (csr_id:4294967295) [td_ifbuild.c:739:td_ifbuild_insert_shortcut]
  51. 12/10 15:34:57.580348 [DDL] 59(59) ddl_inde:1847 building_index off

    6.查看进程

  1. [u5@host3 kdb]$ ps -ef|grep u5
  2. root 4668 4398 0 15:02 pts/9 00:00:00 su - u5
  3. u5 4669 4668 0 15:02 pts/9 00:00:00 -bash
  4. root 5196 5127 0 15:04 pts/20 00:00:00 su - u5
  5. u5 5197 5196 0 15:04 pts/20 00:00:00 -bash
  6. u5 7935 5197 0 15:52 pts/20 00:00:00 ps -ef
  7. u5 7936 5197 0 15:52 pts/20 00:00:00 grep u5
  8. u5 18029 1 0 Dec09 ? 00:00:00 kdsvr -t NORMAL -SVR_SID kdb
  9. u5 18030 18029 0 Dec09 ? 00:00:00 /home/u5/kdb11/bin/kdlistener -n 10 -t NORMAL -SVR_SID kdb
  10. u5 18031 18029 0 Dec09 ? 00:00:00 kdsvr_TBMP -t NORMAL -SVR_SID kdb
  11. u5 18032 18029 0 Dec09 ? 00:01:16 kdsvr_WP000 -t NORMAL -SVR_SID kdb
  12. u5 18033 18029 0 Dec09 ? 00:12:05 kdsvr_WP001 -t NORMAL -SVR_SID kdb
  13. u5 18034 18029 0 Dec09 ? 00:00:19 kdsvr_AGNT -t NORMAL -SVR_SID kdb
  14. u5 18035 18029 0 Dec09 ? 00:00:04 kdsvr_DBWR -t NORMAL -SVR_SID kdb
  15. u5 18036 18029 0 Dec09 ? 00:00:00 kdsvr_RECO -t NORMAL -SVR_SID kdb

    7.疑似参数文件

  1. [u2@host3 bin]$ more /home/u2/kdb11/config/tip.template
  2. #-------------------------------------------------------------------------------
  3. #
  4. # RDBMS initialization parameter
  5. #
  6. #-------------------------------------------------------------------------------

  7. DB_NAME=@SID@
  8. LISTENER_PORT=@PORT@
  9. CONTROL_FILES="@HOME@/database/@SID@/c1.ctl"
  10. #CERTIFICATE_FILE="@HOME@/config/svr_wallet/@SID@.crt"
  11. #PRIVKEY_FILE="@HOME@/config/svr_wallet/@SID@.key"
  12. #WALLET_FILE="@HOME@/config/svr_wallet/WALLET"

  13. MAX_SESSION_COUNT=20

  14. TOTAL_SHM_SIZE=512M
  15. MEMORY_TARGET=1G


  1. ...
  2. 11/27 18:07:29.058185 [FRM] 00(00) tbsvr_ma:3261 show tip [kdb.tip]
  3. -----------------------------------------------------------------------------
  4. # tip file generated from /home/u2/kdb11/config/tip.template (Fri Nov 27 17:45:07 CST 2015)
  5. #-------------------------------------------------------------------------------
  6. #
  7. # RDBMS initialization parameter
  8. #
  9. #-------------------------------------------------------------------------------

  10. DB_NAME=kdb
  11. LISTENER_PORT=5200
  12. CONTROL_FILES="/home/u2/kdb11/database/kdb/c1.ctl"
  13. #CERTIFICATE_FILE="/home/u2/kdb11/config/svr_wallet/kdb.crt"
  14. #PRIVKEY_FILE="/home/u2/kdb11/config/svr_wallet/kdb.key"
  15. #WALLET_FILE="/home/u2/kdb11/config/svr_wallet/WALLET"

  16. MAX_SESSION_COUNT=20

  17. TOTAL_SHM_SIZE=512M
  18. MEMORY_TARGET=1G


  19. -----------------------------------------------------------------------------
  20. 11/27 18:07:29.072801 [FRM] 00(00) tbsvr_os:128 [OS Stat] clock tick: 100
  21. 11/27 18:07:29.235782 [CLC] 00(00) tc_mcrt.:041 set MCRT dirty block count by target io: 0
  22. 11/27 18:07:29.239815 [CLL] 00(00) tc_lgwr.:100 log writer system call type: 0
  23. 11/27 18:07:29.239973 [CLC] 00(00) tc_mcrt.:041 set MCRT dirty block count by target io: 0
  24. 11/27 18:07:29.241912 [TXS] 00(00) tx_l1c.c:149 init l1cache: bucket_size=1024/1024
  25. 11/27 18:07:29.247386 [FRM] 00(00) tbsvr_ma:1626 Server is running at NOMOUNT mode (bootmode : NOMOUNT)
  26. 11/27 18:07:29.247421 [FRM] 00(00) body.c :216
  27. Inspur K-DB 11 (Build 111557, DB 6.0) (FS02)
  28. Patch files (FS02_100096b FS02_100570a FS02_100715a FS02_99172c FS02_99340a FS02_99892a )
  29. Patches applied:
  30. ...

    8.类似oerr的kderr工具

  1. [u2@host3 bin]$ kderr
  2. USAGE: kderr [error code]... [error name]...

  3. describe error description(s)
  4. input(s) can be positive/negative error number

  5. EXAMPLE:
  6. $ kderr 50001 ERROR_TEST
  7. /*
  8.  * err: -50001
  9.  * name: ERROR_TEST
  10.  * desc: error_test
  11.  * cause:
  12.  * action:
  13.  */

  14. /*
  15.  * err: -50001
  16.  * name: ERROR_TEST
  17.  * desc: error_test
  18.  * cause:
  19.  * action:
  20.  */

    9.一些指令


---------------------------------------------------------------------------------------------------------------------------------------------------------------------
一句话总结:
在国产化政策的支持下,相信K-DB在积累更多成功案例和推出更稳定的版本后,会越来越广泛地应用在企业中。

至此,我的深圳的K-DB开放日体验之行告一段落,在数据库和其他技术学习的道路上仍然任重而道远……







来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/29781254/viewspace-1874865/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/29781254/viewspace-1874865/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值