• [迁移系列] 【项目实践--迁移系列汇总】GaussDB(DWS)项目实践--迁移系列汇总贴,欢迎大家交流探讨(持续更新中)
    GaussDB(DWS)项目实践--迁移系列文章汇总,请大家阅读鉴赏,欢迎在评论区交流探讨~序号主题分类标题链接1迁移系列DWS自定义函数列表1https://bbs.huaweicloud.com/forum/thread-175508-1-1.html2迁移系列数据库迁移时数据无法访问问题处理https://bbs.huaweicloud.com/forum/thread-175020-1-1.html3迁移系列【TD自定义函数】specialdata(inputdata varchar,inputtype varchar)https://bbs.huaweicloud.com/forum/thread-174385-1-1.html4迁移系列【TD自定义函数】month1_betweenhttps://bbs.huaweicloud.com/forum/thread-174381-1-1.html5迁移系列【TD自定义函数】month_between1(p1,p2)https://bbs.huaweicloud.com/forum/thread-174380-1-1.html6迁移系列【TD自定义函数】month_between(p1,p2)https://bbs.huaweicloud.com/forum/thread-174376-1-1.html7迁移系列【TD自定义函数】min_col(p1,p2)https://bbs.huaweicloud.com/forum/thread-174369-1-1.html8迁移系列【TD自定义函数】max_col(p1,p2)https://bbs.huaweicloud.com/forum/thread-174362-1-1.html9迁移系列【TD自定义函数】edit_distance_similarity(p1,p2)https://bbs.huaweicloud.com/forum/thread-174359-1-1.html10迁移系列【TD自定义函数】DPT_MOB12(p1,p2)https://bbs.huaweicloud.com/forum/thread-174349-1-1.html11迁移系列【TD自定义函数】ADD_MONTHS3https://bbs.huaweicloud.com/forum/thread-174347-1-1.html12迁移系列【TD自定义函数】ADD_MONTHS2https://bbs.huaweicloud.com/forum/thread-174324-1-1.html13迁移系列【TD自定义函数】td_length(text)https://bbs.huaweicloud.com/forum/thread-174009-1-1.html14迁移系列【TD自定义函数】lpadhttps://bbs.huaweicloud.com/forum/thread-174007-1-1.html15迁移系列【TD自定义函数】td_lefthttps://bbs.huaweicloud.com/forum/thread-174003-1-1.html16迁移系列【TD自定义函数】td_instrhttps://bbs.huaweicloud.com/forum/thread-174000-1-1.html17迁移系列【TD自定义函数】td_day_of_year(timestamp)https://bbs.huaweicloud.com/forum/thread-173997-1-1.html18迁移系列【TD自定义函数】td_day_of_year(date)https://bbs.huaweicloud.com/forum/thread-173996-1-1.html19迁移系列【TD自定义函数】td_day_of_week(timestamp)https://bbs.huaweicloud.com/forum/thread-173994-1-1.html20迁移系列【TD自定义函数】td_day_of_week(date)https://bbs.huaweicloud.com/forum/thread-173993-1-1.html21迁移系列【TD自定义函数】td_day_of_month(timestamp)https://bbs.huaweicloud.com/forum/thread-173989-1-1.html22迁移系列【TD自定义函数】td_day_of_month(date)https://bbs.huaweicloud.com/forum/thread-173987-1-1.html23迁移系列【TD自定义函数】td_day_of_calendarhttps://bbs.huaweicloud.com/forum/thread-173986-1-1.html24迁移系列【TD自定义函数】td_character_lengthhttps://bbs.huaweicloud.com/forum/thread-173984-1-1.html25迁移系列【TD自定义函数】td_characterhttps://bbs.huaweicloud.com/forum/thread-173983-1-1.html26迁移系列【TD自定义函数】td_substr(text,integer,integer)https://bbs.huaweicloud.com/forum/thread-173959-1-1.html27迁移系列【TD自定义函数】td_substrhttps://bbs.huaweicloud.com/forum/thread-173954-1-1.html28迁移系列【TD自定义函数】td_righthttps://bbs.huaweicloud.com/forum/thread-173946-1-1.html29迁移系列【TD自定义函数】td_regexp_replace(text,text,text,integer,integer,text)https://bbs.huaweicloud.com/forum/thread-173945-1-1.html30迁移系列【TD自定义函数】td_regexp_replacehttps://bbs.huaweicloud.com/forum/thread-173944-1-1.html31迁移系列【TD自定义函数】td_quarter_of_yearhttps://bbs.huaweicloud.com/forum/thread-173943-1-1.html32迁移系列【TD自定义函数】td_month_end(timestamp)https://bbs.huaweicloud.com/forum/thread-173942-1-1.html33迁移系列【TD自定义函数】td_month_end(date)https://bbs.huaweicloud.com/forum/thread-173941-1-1.html34迁移系列【TD自定义函数】td_month_begin(timestamp)https://bbs.huaweicloud.com/forum/thread-173939-1-1.html35迁移系列【TD自定义函数】td_month_beginhttps://bbs.huaweicloud.com/forum/thread-173937-1-1.html36迁移系列【TD自定义函数】months_between_double(date,date)https://bbs.huaweicloud.com/forum/thread-173936-1-1.html37迁移系列【TD自定义函数】months_between(date,date)https://bbs.huaweicloud.com/forum/thread-173935-1-1.html38迁移系列【TD自定义函数】monthnumber_of_year(date)https://bbs.huaweicloud.com/forum/thread-173927-1-1.html39迁移系列【TD自定义函数】daynumber_of_year(date)https://bbs.huaweicloud.com/forum/thread-173911-1-1.html40迁移系列【TD自定义函数】daynumber_of_week(date)https://bbs.huaweicloud.com/forum/thread-173909-1-1.html41迁移系列【TD自定义函数】td_char_lengthhttps://bbs.huaweicloud.com/forum/thread-173904-1-1.html42迁移系列【TD自定义函数】td_charhttps://bbs.huaweicloud.com/forum/thread-173902-1-1.html43迁移系列【TD自定义函数】daynumber_of_month(date)https://bbs.huaweicloud.com/forum/thread-173900-1-1.html44迁移系列【TD自定义函数】strtokhttps://bbs.huaweicloud.com/forum/thread-173899-1-1.html45迁移系列【TD自定义函数】daynumber_of_calendar(date)https://bbs.huaweicloud.com/forum/thread-173897-1-1.html46迁移系列【TD自定义函数】round2https://bbs.huaweicloud.com/forum/thread-173896-1-1.html47迁移系列【TD自定义函数】regexp_substr(text,text,text)https://bbs.huaweicloud.com/forum/thread-173895-1-1.html48迁移系列【TD自定义函数】regexp_substrhttps://bbs.huaweicloud.com/forum/thread-173894-1-1.html49迁移系列【TD自定义函数】chars(text)https://bbs.huaweicloud.com/forum/thread-173892-1-1.html50迁移系列【TD自定义函数】zeroifnullhttps://bbs.huaweicloud.com/forum/thread-173891-1-1.html51迁移系列【TD自定义函数】regexp_substrhttps://bbs.huaweicloud.com/forum/thread-173890-1-1.html52迁移系列【TD自定义函数】regexp_similarhttps://bbs.huaweicloud.com/forum/thread-173888-1-1.html53迁移系列【TD自定义函数】yearnumber_of_yearhttps://bbs.huaweicloud.com/forum/thread-173887-1-1.html54迁移系列【TD自定义函数】char2hexint(text)https://bbs.huaweicloud.com/forum/thread-173886-1-1.html55迁移系列【TD自定义函数】regexp_instrhttps://bbs.huaweicloud.com/forum/thread-173885-1-1.html56迁移系列【TD自定义函数】regexp_instrhttps://bbs.huaweicloud.com/forum/thread-173884-1-1.html57迁移系列【TD自定义函数】weeknumber_of_yearhttps://bbs.huaweicloud.com/forum/thread-173883-1-1.html58迁移系列【TD自定义函数】substring_index(str,delim,count)https://bbs.huaweicloud.com/forum/thread-173882-1-1.html59迁移系列【TD自定义函数】quarternumber_of_yearhttps://bbs.huaweicloud.com/forum/thread-173879-1-1.html60迁移系列【TD自定义函数】weeknumber_of_calendarhttps://bbs.huaweicloud.com/forum/thread-173877-1-1.html61迁移系列【TD自定义函数】oadd_monthshttps://bbs.huaweicloud.com/forum/thread-173876-1-1.html62迁移系列【TD自定义函数】trunchttps://bbs.huaweicloud.com/forum/thread-173875-1-1.html63迁移系列【TD自定义函数】numtoymintervalhttps://bbs.huaweicloud.com/forum/thread-173872-1-1.html64迁移系列【TD自定义函数】ADD_MONTHS2https://bbs.huaweicloud.com/forum/thread-173862-1-1.html65迁移系列GaussDB(DWS)实践系列-MySQL->GaussDB(DWS)常用语法对照表https://bbs.huaweicloud.com/forum/thread-146647-1-1.html66迁移系列数据校验https://bbs.huaweicloud.com/forum/thread-141185-1-1.html67迁移系列【MySQL语法迁移】str_to_date()迁移https://bbs.huaweicloud.com/forum/thread-136679-1-1.html68迁移系列【MySQL语法迁移】date_format()语法迁移https://bbs.huaweicloud.com/forum/thread-136677-1-1.html69迁移系列【MySQL语法迁移】分页查询https://bbs.huaweicloud.com/forum/thread-136674-1-1.html70迁移系列【MySQL语法迁移】double类型迁移https://bbs.huaweicloud.com/forum/thread-136673-1-1.html71迁移系列【MySQL语法迁移】AUTO_INCREMENT自增列迁移https://bbs.huaweicloud.com/forum/thread-136672-1-1.html72迁移系列【MySQL语法迁移】Datetime类型https://bbs.huaweicloud.com/forum/thread-136671-1-1.html73迁移系列【MySQL语法迁移】表注释迁移https://bbs.huaweicloud.com/forum/thread-136669-1-1.html74迁移系列【MySQL语法迁移】列注释迁移https://bbs.huaweicloud.com/forum/thread-136668-1-1.html75迁移系列RDS-DRS-DWS数据复制链路优化方案比对https://bbs.huaweicloud.com/forum/thread-134266-1-1.html76迁移系列oracle列转行unpivot函数语法转换https://bbs.huaweicloud.com/forum/thread-133591-1-1.html77迁移系列【Oracle语法迁移】存储过程中table%Rowtype语法改写https://bbs.huaweicloud.com/forum/thread-132423-1-1.html78迁移系列【Oracle语法迁移】pivot语法https://bbs.huaweicloud.com/forum/thread-123046-1-1.html79迁移系列【Oracle语法迁移】Max/Min...keep语法https://bbs.huaweicloud.com/forum/thread-123044-1-1.html80迁移系列 Oracle 分析函数 keep改造方案https://bbs.huaweicloud.com/forum/thread-122150-1-1.html81迁移系列Gauss 子查询性能调优https://bbs.huaweicloud.com/forum/thread-122147-1-1.html82迁移系列 Oralce  in相关子查询中包含distinct Gauss适配改造https://bbs.huaweicloud.com/forum/thread-122146-1-1.html83迁移系列 Oralce listagg/stragg/WM_CONCAT 迁移改造方案https://bbs.huaweicloud.com/forum/thread-122145-1-1.html84迁移系列oracle 递归改造案例https://bbs.huaweicloud.com/forum/thread-122143-1-1.html85迁移系列GaussDB 中实现current_user下推的方法https://bbs.huaweicloud.com/forum/thread-122131-1-1.html86迁移系列Oracle package 在gauss中的替换方法https://bbs.huaweicloud.com/forum/thread-122103-1-1.html87迁移系列gauss与oracle存储过程差异和改写方法https://bbs.huaweicloud.com/forum/thread-122102-1-1.html88迁移系列GaussDB和Oracle DDL的差异和替换示例https://bbs.huaweicloud.com/forum/thread-122101-1-1.html89迁移系列Gauss 和 Oracle DML的差异和规避方案https://bbs.huaweicloud.com/forum/thread-122100-1-1.html90迁移系列Gauss DB(DWS)迁移系列-Oracle 函数转换差异(四)https://bbs.huaweicloud.com/forum/thread-122099-1-1.html91迁移系列Gauss DB(DWS)迁移系列-Oracle 函数转换差异(二)https://bbs.huaweicloud.com/forum/thread-122098-1-1.html92迁移系列Gauss DB(DWS)迁移系列-Oracle 函数转换差异(一)https://bbs.huaweicloud.com/forum/thread-122097-1-1.html93迁移系列Gauss DB(DWS)迁移系列-Oracle 数据类型差异https://bbs.huaweicloud.com/forum/thread-122096-1-1.html94迁移系列[项目实践-迁移系列] Gauss DB(DWS)迁移系列-Oracle迁移分析函数https://bbs.huaweicloud.com/forum/thread-122095-1-1.html95迁移系列Oracle + APEX 迁移至 DWS + 帆软https://bbs.huaweicloud.com/forum/thread-120739-1-1.html96迁移系列使用Python连接GaussDB(DWS)https://bbs.huaweicloud.com/forum/thread-119609-1-1.html97迁移系列DWS perl通过ODBC连接GaussDB(DWS)https://bbs.huaweicloud.com/forum/thread-119608-1-1.html98迁移系列Gauss DB(DWS) DWS与OBS数据互导https://bbs.huaweicloud.com/forum/thread-119433-1-1.html99迁移系列Gauss DB(DWS)迁移系列-TD迁移DDL差异-分区定义设置Partition by https://bbs.huaweicloud.com/forum/thread-117993-1-1.html100迁移系列Gauss DB(DWS)迁移系列-TD迁移DDL差异-字段字符集设置Character set Latinhttps://bbs.huaweicloud.com/forum/thread-117990-1-1.html101迁移系列Gauss DB(DWS)迁移系列-TD迁移DDL差异-字段多值压缩属性compresshttps://bbs.huaweicloud.com/forum/thread-117989-1-1.html102迁移系列Gauss DB(DWS)迁移系列-TD迁移DDL差异-字段数据格式化显式属性formathttps://bbs.huaweicloud.com/forum/thread-117988-1-1.html103迁移系列Gauss DB(DWS)迁移系列-TD迁移DDL差异-视图迁移差异https://bbs.huaweicloud.com/forum/thread-117985-1-1.html104迁移系列Gauss DB(DWS)迁移系列-TD迁移DDL差异-大小写敏感CASESPECIFIC/NOT CASESPECIFIChttps://bbs.huaweicloud.com/forum/thread-117982-1-1.html105迁移系列Gauss DB(DWS)迁移系列-TD迁移DDL差异-行列存存储格式https://bbs.huaweicloud.com/forum/thread-117981-1-1.html106迁移系列TD常用字典视图在GaussDB(DWS)上实现https://bbs.huaweicloud.com/forum/thread-117977-1-1.html107迁移系列ORACLE 触发器在GaussDB(DWS)上的实现https://bbs.huaweicloud.com/forum/thread-117970-1-1.html108迁移系列oracle CONNECT_BY_ROOT,CONNECT_BY_ISLEAF等在GaussDB(DWS)实现https://bbs.huaweicloud.com/forum/thread-117964-1-1.html109迁移系列Gauss DB(DWS)迁移系列-TD迁移DDL差异-是否允许重复记录Set/MultiSethttps://bbs.huaweicloud.com/forum/thread-117955-1-1.html110迁移系列Gauss DB(DWS)迁移系列-TD迁移DDL差异-可变临时表Volatilehttps://bbs.huaweicloud.com/forum/thread-117952-1-1.html111迁移系列Gauss DB(DWS)迁移系列-TD的日期类型和数值型互转操作差异https://bbs.huaweicloud.com/forum/thread-117946-1-1.html112迁移系列【Teradata语法迁移】VOLATILE表语法迁移改写https://bbs.huaweicloud.com/forum/thread-117690-1-1.html113迁移系列【Teradata语法迁移】Teradata set语法迁移案例https://bbs.huaweicloud.com/forum/thread-117686-1-1.html114迁移系列【Oracle语法迁移】Rownum语法迁移案例https://bbs.huaweicloud.com/forum/thread-114322-1-1.html115迁移系列【Oracle语法迁移】connect_by_root语法迁移案例https://bbs.huaweicloud.com/forum/thread-114317-1-1.html116迁移系列【Oracle语法迁移】order siblings by语法迁移案例https://bbs.huaweicloud.com/forum/thread-114312-1-1.html117迁移系列【Oracle语法迁移】sys_connect_by_path语法迁移案例https://bbs.huaweicloud.com/forum/thread-114307-1-1.html118迁移系列【Oracle语法迁移】单表递归语法迁移案例https://bbs.huaweicloud.com/forum/thread-114304-1-1.html119迁移系列GaussBD A 8.0.0.3 从Oracle往GaussDB数据库迁移数据https://bbs.huaweicloud.com/forum/thread-114280-1-1.html120迁移系列Gauss DB(DWS)迁移系列-TD迁移函数之next函数https://bbs.huaweicloud.com/forum/thread-114003-1-1.html121迁移系列GaussDB(DWS) encode函数base64转码后存在换行https://bbs.huaweicloud.com/forum/thread-113489-1-1.html122迁移系列Gauss DB(DWS)迁移系列-Teradata迁移PIVOT/UNPIVOT 语法转换对照https://bbs.huaweicloud.com/forum/thread-113049-1-1.html123迁移系列ADB for mysql 【INSERT [IGNORE] INTO table_name】迁移 DWS 改写方法https://bbs.huaweicloud.com/forum/thread-111391-1-1.html124迁移系列数据仓库,数据脱敏、and,or,in处置方案https://bbs.huaweicloud.com/forum/thread-99866-1-1.html125迁移系列ADB for mysql  【INSERT [IGNORE] INTO table_name】迁移 DWS 改写方法https://bbs.huaweicloud.com/forum/thread-93001-1-1.html126迁移系列GDS实践指南https://bbs.huaweicloud.com/forum/thread-90062-1-1.html127迁移系列查询GDS外表时报错:connect failedhttps://bbs.huaweicloud.com/forum/thread-85894-1-1.html128迁移系列GaussDB A使用本地模式外表导出和导入数据https://bbs.huaweicloud.com/forum/thread-84489-1-1.html129迁移系列Roach基于NAS的备份https://bbs.huaweicloud.com/forum/thread-81751-1-1.html130迁移系列Oracle数据通过sqluldr导出然后通过gds导入到GaussDB实例https://bbs.huaweicloud.com/forum/thread-71300-1-1.html131迁移系列ORACLE使用GDS导入因数据中含有单字节,使部分行导入失败https://bbs.huaweicloud.com/forum/thread-71109-1-1.html132迁移系列GDS外表导入导出的那些事。https://bbs.huaweicloud.com/forum/thread-70824-1-1.html133迁移系列gds导入导出text格式https://bbs.huaweicloud.com/forum/thread-70756-1-1.html134迁移系列自己编写的数据一致性校验函数https://bbs.huaweicloud.com/forum/thread-59893-1-1.html
  • [技术干货] openGauss数据库安全指导手册
    简介本实验适用于 openGauss数据库,通过该实验可以顺利完成对数据库用户权限的控制及各种审计。内容描述本实验主要内容为用户权限控制(包括用户、角色、权限的授予、权限的回收)和各审计。前置条件openGauss数据库安全实验需要掌握openGauss数据库的基本操作和SQL语法,openGauss数据库支持SQL2003标准语法,数据库基本操作参见附录一。实验环境说明●组网说明本实验环境为华为云 ECS 服务器 + openGauss数据库。● 设备介绍为了满足数据库原理与实践课程实验需要,建议每套实验环境采用以下配置:设备名称、型号与版本的对应关系如下:设备明细表设备名称设备型号软件版本数据库openGaussopenGauss 1.1.0操作系统openEuleropenEuler 20.3LTS实验概览1 用户权限控制1.1 实验介绍1.1.1 关于本实验本实验主要描述用户的创建管理、角色的创建管理、Schema的创建管理、用户权限设置、用户安全策略设置。1.1.2 实验目的●掌握用户、角色、Schema的创建及管理;●掌握用户权限的授予各回收;● 掌握用户安全策略如何设置。1.2 用户通过CREATE USER创建的用户,默认具有LOGIN权限;通过CREATE USER创建用户的同时系统会在执行该命令的数据库中,为该用户创建一个同名的SCHEMA;其他数据库中,则不自动创建同名的SCHEMA;用户可使用CREATE SCHEMA命令,分别在其他数据库中,为该用户创建同名SCHEMA。1.2.1 创建、修改、删除用户步骤 1 启动服务器,再使用gsql客户端以管理员用户身份连接postgres数据库,假设端口号为26000。gsql -d postgres -p 26000 -r步骤 2 连接数据库后,进入SQL命令界面。创建用户jim,登录密码为Bigdata@123。postgres=# CREATE USER jim PASSWORD 'Bigdata@123'; CREATE ROLE说明:密码规则如下:● 密码默认不少于8个字符;● 不能与用户名及用户名倒序相同;● 至少包含大写字母(A-Z),小写字母(a-z),数字(0-9),非字母数字字符(限定为~!@#$%^&*()-_=+|[{}];:,<.>/?)四类字符中的三类字符;● 创建用户时,应当使用双引号或单引号将用户密码括起来。步骤 3 查看用户列表。postgres=# SELECT * FROM pg_user; usename | usesysid | usecreatedb | usesuper | usecatupd | userepl | passwd | valbegin | valuntil | respool | parent | spacelimit | useconfig | nodegroup | tempspacelimit | spillspacelimit ---------+----------+-------------+----------+-----------+---------+----------+--- omm | 10 | t | t | t | t | ******** | | | default_pool | 0 | | | | | jim | 16389 | f | f | f | f | ******** | | | default_pool | 0 | | | | | (2 rows)步骤 4 创建有“创建数据库”权限的用户,则需要加CREATEDB关键字。postgres=# CREATE USER dim CREATEDB PASSWORD 'Bigdata@123'; CREATE ROLE步骤 5 将用户jim的登录密码由Bigdata@123修改为Abcd@123。postgres=# ALTER USER jim IDENTIFIED BY 'Abcd@123' REPLACE 'Bigdata@123'; ALTER ROLE步骤 6 为用户jim追加有创建角色的CREATEROLE权限。postgres=# ALTER USER jim CREATEROLE; ALTER ROLE步骤 7 锁定jim帐户。postgres=# ALTER USER jim ACCOUNT LOCK; ALTER ROLE步骤 8 解锁jim帐户。postgres=# ALTER USER jim ACCOUNT UNLOCK; ALTER ROLE步骤 9 删除用户。postgres=# DROP USER jim CASCADE; DROP ROLE步骤 10 退出数据库。postgres=# \q1.3 角色角色是拥有数据库对象和权限的实体。在不同的环境中角色可以认为是一个用户,一个组或者兼顾两者。在数据库中添加一个新角色,角色无登录权限。创建角色的用户必须具备CREATE ROLE的权限或者是系统管理员。1.3.1 创建、修改、删除角色步骤 1 启动服务器,再使用gsql客户端以管理员用户身份连接postgres数据库,假设端口号为26000。gsql -d postgres -p 26000 -r步骤 2 创建一个角色,名为manager,密码为Bigdata@123。postgres=# CREATE ROLE manager IDENTIFIED BY 'Bigdata@123'; CREATE ROLE步骤 3 创建一个角色,从2021年1月1日开始生效,到2021年6月1日失效。postgres=# CREATE ROLE miriam WITH LOGIN PASSWORD 'Bigdata@123' VALID BEGIN '2021-01-01' VALID UNTIL '2021-06-01'; CREATE ROLE步骤 4 修改角色manager的密码为abcd@123。postgres=# ALTER ROLE manager IDENTIFIED BY 'abcd@123' REPLACE 'Bigdata@123'; ALTER ROLE步骤 5 修改角色manager为系统管理员。postgres=# ALTER ROLE manager SYSADMIN; ALTER ROLE步骤 6 删除角色manager。postgres=# DROP ROLE manager; DROP ROLE步骤 7 查看角色。postgres=# SELECT * FROM PG_ROLES; rolname | rolsuper | rolinherit | rolcreaterole | rolcreatedb | rolcatupdate | rolcanlogin | rolreplication | rolauditadmin | rolsystemadmin | rolconnlimit | rol password | rolvalidbegin | rolvaliduntil | rolrespool | rolparentid | roltabspace | rolconfig | oid | roluseft | rolkind | nodegroup | rolte mpspace | rolspillspace ---------+----------+------------+---------------+-------------+--------------+-------------+----------------+--------------- omm | t | t | t | t | t | t | t | t | t | -1 | *** ***** | | | default_pool | 0 | | | 10 | t | n | | | dim | f | t | f | t | f | t | f | f | f | -1 | *** ***** | | | default_pool | 0 | | | 16393 | f | n | | | miriam | f | t | f | f | f | t | f | f | f | -1 | *** ***** | 2020-07-01 00:00:00+08 | 2020-12-01 00:00:00+08 | default_pool | 0 | | | 16401 | f | n | | | (3 rows)步骤 8 退出数据库postgres=# \q1.4 SchemaSchema又称作模式。通过管理Schema,允许多个用户使用同一数据库而不相互干扰。每个数据库包含一个或多个Schema。在数据库创建用户时,系统会自动帮助用户创建一个同名Schema。1.4.1 创建、修改、删除Schema步骤 1 启动服务器,再使用gsql客户端以管理员用户身份连接postgres数据库,假设端口号为26000。gsql -d postgres -p 26000 -r步骤 2 创建模式ds。postgres=# CREATE SCHEMA ds; CREATE SCHEMA步骤 3 将当前模式ds更名为ds_new。postgres=# ALTER SCHEMA ds RENAME TO ds_new; ALTER SCHEMA步骤 4 创建用户jack。postgres=# CREATE USER jack PASSWORD 'Bigdata@123'; CREATE ROLE步骤 5 将DS_NEW的所有者修改为jack。postgres=# ALTER SCHEMA ds_new OWNER TO jack; ALTER SCHEMA步骤 6 查看Schema所有者。postgres=# SELECT s.nspname,u.usename AS nspowner FROM pg_namespace s, pg_user u WHERE s.nspowner = u.usesysid; nspname | nspowner --------------------+---------- pg_toast | omm cstore | omm dbe_perf | omm snapshot | omm pg_catalog | omm public | omm information_schema | omm dim | dim jack | jack ds_new | jack (10 rows)步骤 7 删除用户jack和模式ds_new。postgres=# DROP SCHEMA ds_new; DROP SCHEMA postgres=# DROP USER jack; DROP ROLE步骤 8 退出数据库postgres=# \q1.5 用户权限设置及回收使用GRANT命令进行用户授权包括以下三种场景:● 将系统权限授权给角色或用户。● 将数据库对象授权给角色或用户。● 将角色或用户的权限授权给其他角色或用户。1.5.1 将系统权限授权给用户或者角色步骤 1 启动服务器,再使用gsql客户端以管理员用户身份连接postgres数据库,假设端口号为26000。gsql -d postgres -p 26000 -r步骤 2 创建名为joe的用户,并将sysadmin权限授权给joe。postgres=# CREATE USER joe PASSWORD 'Bigdata@123'; CREATE ROLE postgres=# GRANT ALL PRIVILEGES TO joe; ALTER ROLE1.5.2 将数据库对象授权给角色或用户步骤 1 撤销joe用户的sysadmin权限,然后创建tpcds模式,并给tpcds模式下创建一张reason表。postgres=# REVOKE ALL PRIVILEGES FROM joe; ALTER ROLE postgres=# CREATE SCHEMA tpcds; CREATE SCHEMA postgres=# CREATE TABLE tpcds.reason ( r_reason_sk INTEGER NOT NULL, r_reason_id CHAR(16) NOT NULL, r_reason_desc VARCHAR(20) ); CREATE TABLE步骤 2 将模式tpcds的使用权限和表tpcds.reason的所有权限授权给用户joe。postgres=# GRANT USAGE ON SCHEMA tpcds TO joe; GRANT postgres=# GRANT ALL PRIVILEGES ON tpcds.reason TO joe; GRANT授权成功后,joe用户就拥有了tpcds.reason表的所有权限,包括增删改查等权限。步骤 3 将tpcds.reason表中r_reason_sk、r_reason_id、r_reason_desc列的查询权限,r_reason_desc的更新权限授权给joe。postgres=# GRANT select (r_reason_sk,r_reason_id,r_reason_desc),update (r_reason_desc) ON tpcds.reason TO joe; GRANT步骤 4 将数据库postgres的连接权限授权给用户joe,并给予其在postgres中创建schema的权限,而且允许joe将此权限授权给其他用户。postgres=# GRANT create,connect on database postgres TO joe WITH GRANT OPTION; GRANT步骤 5 创建角色tpcds_manager,将模式tpcds的访问权限授权给角色tpcds_manager,并授予该角色在tpcds下创建对象的权限,不允许该角色中的用户将权限授权给其人。postgres=# CREATE ROLE tpcds_manager PASSWORD 'Bigdata@123'; CREATE ROLE postgres=# GRANT USAGE,CREATE ON SCHEMA tpcds TO tpcds_manager; GRANT1.5.3 将用户或者角色的权限授权给其他用户或角色步骤 1 创建角色manager,将joe的权限授权给manager,并允许该角色将权限授权给其他人。postgres=# CREATE ROLE manager PASSWORD 'Bigdata@123'; CREATE ROLE postgres=# GRANT joe TO manager WITH ADMIN OPTION; GRANT ROLE步骤 2 创建用户senior_manager,将用户manager的权限授权给该用户。postgres=# CREATE ROLE senior_manager PASSWORD 'Bigdata@123'; CREATE ROLE postgres=# GRANT manager TO senior_manager; GRANT ROLE1.5.4 权限回收步骤 1 撤销权限,并清理用户。postgres=# REVOKE joe FROM manager; REVOKE ROLE postgres=# REVOKE manager FROM senior_manager; REVOKE ROLE postgres=# DROP USER manager; DROP ROLE postgres=# REVOKE ALL PRIVILEGES ON tpcds.reason FROM joe; REVOKE postgres=# REVOKE ALL PRIVILEGES ON SCHEMA tpcds FROM joe; REVOKE postgres=# REVOKE USAGE,CREATE ON SCHEMA tpcds FROM tpcds_manager; REVOKE postgres=# DROP ROLE tpcds_manager; DROP ROLE postgres=# DROP ROLE senior_manager; DROP ROLE postgres=# DROP USER joe CASCADE; DROP ROLE步骤 2 退出数据库postgres=# \q注意:实验完成后请尽量清理本实验的对象,以免影响与其它实验产生冲突。1.6 安全策略设置为了保证帐户安全,如果用户输入密码次数超过一定次数(failed_login_attempts),系统将自动锁定该帐户,默认值为10。次数设置越小越安全,但是在使用过程中会带来不便。当帐户被锁定时间超过设定值(password_lock_time),则当前帐户自动解锁,默认值为1天。时间设置越长越安全,但是在使用过程中会带来不便。1.6.1 设置账户安全策略步骤 1 启动服务器,再使用gsql客户端以管理员用户身份连接postgres数据库,假设端口号为26000。gsql -d postgres -p 26000 -r步骤 2 配置failed_login_attempts参数。查看已配置的参数。postgres=# SHOW failed_login_attempts; failed_login_attempts ----------------------- 10 (1 row)如果显示结果不为10,执行“\q”命令退出数据库。然后在操作系统 omm 用户下执行如下命令设置成默认值10。gs_guc reload -D /gaussdb/data/dbnode -c "failed_login_attempts=10"注意:/gaussdb/data/dbnode 指的是数据目录,要根据自己实际情况调整。比如数据目录/gaussdb/data/db1,执行结果如下。[omm@ecs-700c ~]$ gs_guc reload -D /gaussdb/data/db1 -c "failed_login_attempts=9" expected instance path: [/gaussdb/data/db1/postgresql.conf] gs_guc reload: failed_login_attempts=9: [/gaussdb/data/ecs-700c/postgresql.conf] server signaled Total instances: 1. Failed instances: 0. Success to perform gs_guc!步骤 3 配置password_lock_time参数。查看已配置的参数。[omm@ecs-c2f0 ~]$ gsql -d postgres -p 26000 -r gsql ((openGauss 1.0.0 build 0bd0ce80) compiled at 2020-06-30 18:19:23 commit 0 last mr ) Non-SSL connection (SSL connection is recommended when requiring high-security) Type "help" for help. postgres=# SHOW password_lock_time; password_lock_time -------------------- 1 (1 row)如果显示结果不为1,执行“\q”命令退出数据库。然后在操作系统 omm 用户下执行如下命令设置成默认值1。gs_guc reload -N all -I all -c "password_lock_time=1"执行结果如下:[omm@ecs-700c ~]$ gs_guc reload -N all -I all -c "password_lock_time=1" NOTICE: password_lock_time and failed_login_attempts must have positive for lock and unlock functions to work as. Begin to perform gs_guc for all datanodes. Total instances: 1. Failed instances: 0. Success to perform gs_guc!1.6.2 设置账号有效期创建新用户时,需要限制用户的操作期限(有效开始时间和有效结束时间)。不在有效操作期内的用户需要重新设定帐号的有效操作期。步骤 1 启动服务器,再使用gsql客户端以管理员用户身份连接postgres数据库,假设端口号为26000。gsql -d postgres -p 26000 -r步骤 2 创建用户并制定用户的有效开始时间和有效结束时间。postgres=# CREATE USER joe WITH PASSWORD 'Bigdata@123' VALID BEGIN '2020-07-10 08:00:00' VALID UNTIL '2022-10-10 08:00:00'; CREATE ROLE步骤 3 重新设定帐号的有效期。postgres=# ALTER USER joe WITH VALID BEGIN '2020-11-10 08:00:00' VALID UNTIL '2021-11-10 08:00:00'; ALTER ROLE步骤 4 退出数据库。postgres=# \q1.6.3 设置密码安全策略用户密码存储在系统表pg_authid中,为防止用户密码泄露,openGauss对用户密码可进行加密存储、密码复杂度设置、密码重用天数设置、密码有效期限设置等。步骤 1 启动服务器,再使用gsql客户端以管理员用户身份连接postgres数据库,假设端口号为26000。gsql -d postgres -p 26000 -r 步骤 2 配置的加密算法。查看已配置的参数。postgres=# SHOW password_encryption_type; password_encryption_type -------------------------- 2 (1 row)如果显示结果为0或1,执行“\q”命令退出数据库。然后在操作系统 omm 用户下执行如下命令将其设置为安全的加密算法。gs_guc reload -N all -I all -c "password_encryption_type=2"注意说明:● 当参数password_encryption_type设置为0时,表示采用md5方式对密码加密。md5为不安全的加密算法,不建议使用。● 当参数password_encryption_type设置为1时,表示采用sha256和md5方式对密码加密。其中包含md5为不安全的加密算法,不建议使用。● 当参数password_encryption_type设置为2时,表示采用sha256方式对密码加密,为默认配置。步骤 3 配置密码安全参数。查看已配置的参数。postgres=# SHOW password_policy; password_policy ----------------- 1 (1 row)如果显示结果不为1,执行“\q”命令退出数据库。然后在操作系统 omm下执行如下命令设置成默认值1。gs_guc reload -N all -I all -c "password_policy=1"注意说明:● 参数password_policy设置为1时表示采用密码复杂度校验,默认值;● 参数password_policy设置为0时表示不采用任何密码复杂度校验,设置为0会存在安全风险,不建议设置为0,即使需要设置也要将所有openGauss节点中的password_policy都设置为0才能生效。步骤 4 配置密码重用。查看不可重用天数已配置的参数。postgres=# SHOW password_reuse_time; password_reuse_time --------------------- 60 (1 row)如果显示结果不为60,执行“\q”命令退出数据库。然后在操作系统 omm下执行如下命令设置成默认值60。gs_guc reload -N all -I all -c "password_reuse_time=60"查看不可重用次数已配置的参数。postgres=# SHOW password_reuse_max; password_reuse_max 0 (1 row)如果显示结果不为0,执行“\q”命令退出数据库。然后在操作系统 omm下执行如下命令设置成默认值0。gs_guc reload -N all -I all -c "password_reuse_max = 0"注意说明:● 不可重用天数默认值为60天,不可重用次数默认值是0;● 这两个参数值越大越安全,但是在使用过程中会带来不便,其默认值符合安全标准,用户可以根据需要重新设置参数,提高安全等级。步骤 5 配置密码有效期限。数据库用户的密码都有密码有效期(password_effect_time),当达到密码到期提醒天数(password_notify_time)时,系统会在用户登录数据库时提示用户修改密码。配置password_effect_time参数。查看已配置的参数。postgres=# SHOW password_effect_time; password_effect_time ---------------------- 90 (1 row)如果显示结果不为90,执行“\q”命令退出数据库。然后在操作系统 omm下执行如下命令设置成默认值90(不建议设置为0)。gs_guc reload -N all -I all -c "password_effect_time = 90"● 配置password_notify_time参数。查看已配置的参数。postgres=# SHOW password_notify_time; password_notify_time ---------------------- 7 (1 row)如果显示结果不为7,执行“\q”命令退出数据库。然后在操作系统 omm下执行如下命令设置成默认值7(不建议设置为0)。gs_guc reload -N all -I all -c "password_notify_time = 7"用户权限控制实验结束。2 审计2.1 实验介绍2.1.1 关于本实验数据库安全对数据库系统来说至关重要,openGauss将用户对数据库的所有操作写入审计日志,数据库安全管理员可以利用这些日志信息,重现导致数据库现状的一系列事件,找出非法操作的用户、时间和内容等。本实验主要描述如何来设置数据库审计,主要包括审计开关、查看审计结果、维护审计日志。2.1.2 实验目的掌握如何设置数据库审计及审计日志的查看。2.2 审计开、关审计总开关audit_enabled支持动态加载。在数据库运行期间修改该配置项的值会立即生效,无需重启数据库。默认值为on,表示开启审计功能。除了审计总开关,各个审计项也有对应的开关。只有开关开启,对应的审计功能才能生效。各审计项的开关支持动态加载。在数据库运行期间修改审计开关的值,不需要重启数据库便可生效。步骤 1 审计总开关设置。启动服务器,再使用gsql客户端以管理员用户身份连接postgres数据库,假设端口号为26000。gsql -d postgres -p 26000 -r 查看已配置审计总开关参数。 postgres=# show audit_enabled; audit_enabled --------------- on (1 row)如果显示结果不为on,执行“\q”命令退出数据库。然后在操作系统 omm下执行如下命令设置成默认值on(不建议设置为off)。gs_guc reload -N all -I all -c "audit_enabled = on"步骤 2 审计项开关设置。查看已配置审计项参数。以下以数据库启动、停止、恢复和切换审计项为例。postgres=# show audit_database_process; audit_database_process ------------------------ 1 (1 row)如果显示结果不为1,执行“\q”命令退出数据库。然后在操作系统 omm下执行如下命令设置成默认值1。gs_guc reload -N all -I all -c " audit_database_process = 1"注意说明:● 用户登录、注销审计 。参数:audit_login_logout。默认值为7,表示开启用户登录、退出的审计功能。设置为0表示关闭用户登录、退出的审计功能。不推荐设置除0和7之外的值。● 数据库启动、停止、恢复和切换审计。参数:audit_database_process。默认值为1,表示开启数据库启动、停止、恢复和切换的审计功能。● 用户锁定和解锁审计 。参数:audit_user_locked。默认值为1,表示开启审计用户锁定和解锁功能。● 用户访问越权审计。参数:audit_user_violation。默认值为0,表示关闭用户越权操作审计功能。● 授权和回收权限审计 。参数:audit_grant_revoke。默认值为1,表示开启审计用户权限授予和回收功能。● 数据库对象的CREATE,ALTER,DROP操作审计。参数:audit_system_object。默认值为12295,表示只对DATABASE、SCHEMA、USER、DATA SOURCE这四类数据库对象的CREATE、ALTER、DROP操作进行审计。● 具体表的INSERT、UPDATE和DELETE操作审计。参数:audit_dml_state。默认值为0,表示关闭具体表的DML操作(SELECT除外)审计功能。● SELECT操作审计。参数:audit_dml_state_select。默认值为0,表示关闭SELECT操作审计功能。● COPY审计。参数:audit_copy_exec。默认值为0,表示关闭copy操作审计功能。● 存储过程和自定义函数的执行审计 。参数:audit_function_exec。默认值为0,表示不记录存储过程和自定义函数的执行审计日志。● SET审计 参数:audit_set_parameter。默认值为1,表示记录set操作审计日志。2.3 查看审计结果步骤 1 启动服务器,再使用gsql客户端以管理员用户身份连接postgres数据库,假设端口号为26000。gsql -d postgres -p 26000 -r步骤 2 查询审计记录。postgres=# SELECT time,type,result,username,object_name FROM pg_query_audit('2021-01-01 10:00:00','2021-08-15 09:47:33'); time | type | result | username | object_name ------------------------+---------------+--------+----------+----------------- 2020-07-10 10:00:59+08 | user_logout | ok | omm | postgres 2020-07-10 10:02:39+08 | user_logout | ok | omm | postgres 2020-07-10 10:08:35+08 | login_success | ok | omm | postgres 2020-07-10 10:08:35+08 | set_parameter | ok | omm | connection_info 2020-07-10 10:08:40+08 | user_logout | ok | omm | postgres 2020-07-10 10:08:42+08 | login_success | ok | omm | postgres 2020-07-10 10:08:42+08 | set_parameter | ok | omm | connection_info 2020-07-10 10:14:56+08 | login_success | ok | omm | postgres 2020-07-10 10:14:56+08 | set_parameter | ok | omm | connection_info 2020-07-10 10:16:33+08 | ddl_database | ok | omm | mydb 2020-07-10 10:22:42+08 | user_logout | ok | omm | postgres 2020-07-10 10:26:51+08 | user_logout | ok | omm | postgres 2020-07-10 10:29:08+08 | login_success | ok | omm | postgres 2020-07-10 10:29:08+08 | set_parameter | ok | omm | connection_info 2020-07-10 10:48:23+08 | user_logout | ok | omm | postgres 2020-07-10 10:55:02+08 | login_success | ok | omm | postgres 2020-07-10 10:55:02+08 | set_parameter | ok | omm | connection_info 2020-07-10 10:55:48+08 | login_success | ok | omm | postgres 2020-07-10 10:55:48+08 | set_parameter | ok | omm | connection_info 2020-07-10 11:17:25+08 | login_success | ok | omm | postgres 2020-07-10 11:17:25+08 | set_parameter | ok | omm | connection_info 2020-07-10 11:31:06+08 | user_logout | ok | omm | postgres 2020-07-10 11:34:05+08 | login_success | ok | omm | postgres 2020-07-10 11:34:05+08 | set_parameter | ok | omm | connection_info 2020-07-10 11:40:11+08 | login_success | ok | omm | postgres 2020-07-10 11:40:11+08 | set_parameter | ok | omm | connection_info步骤 3 退出数据库postgres=# \q2.4 维护审计日志设置自动删除审计日志。步骤 1 启动服务器,再使用gsql客户端以管理员用户身份连接postgres数据库,假设端口号为26000。gsql -d postgres -p 26000 -r步骤 2 配置审计文件占用磁盘空间的大小(audit_space_limit)。查看已配置的参数。postgres=# SHOW audit_space_limit; audit_space_limit ------------------- 1GB (1 row)如果显示结果不为1GB(1024MB),执行“\q”命令退出数据库。然后在操作系统 omm用户下执行如下命令设置成默认值1024MB。gs_guc reload -N all -I all -c "audit_space_limit=1024MB"步骤 3 配置审计文件个数的最大值(audit_file_remain_threshold)。查看已配置的参数。postgres=# SHOW audit_file_remain_threshold; audit_file_remain_threshold ----------------------------- 1048576 (1 row)如果显示结果不为1048576,执行“\q”命令退出数据库。然后在操作系统 omm用户执行如下命令设置成默认值1048576。gs_guc reload -N all -I all -c "audit_file_remain_threshold=1048576"审计实验结束。openGauss数据库安全指导手册就介绍到这里了,感谢您的阅读。
  • [问题求助] 【MRS】【CDL组件】从Oracle抓取数据到HDFS失败
    【功能模块】从Oracle抓取数据到HDFS【操作步骤&问题现象】按照产品文档的“常见CDL作业示例”-“从Oracle抓取数据到HDFS”章节,不能实现数据抓取。【截图信息】【日志信息】(可选,上传日志内容或者附件)
  • [运维管理] 关于获取元数据的一些疑问,schema
    【操作步骤&问题现象】1、官网文档上的schema中并没有找到一个叫oracle的schema,这个oracle的schema是什么2、这个oracle schema中的一些视图统计的值并不会更新,例如dba_tables里面的row_num【截图信息】
  • [技术干货] ZGC的现状和未来以及毕昇JDK对ZGC的支持
    Z Garbage Collect,简称ZGC,早期是Oracle的一个内部项目,在2017年Oracle公司决定将ZGC进行开源。在JDK11(JDK在本文中特指Oracle公司发布的JDK,下同)时,ZGC代码正式合入到主干分支,成为一款标准的官方垃圾回收器。ZGC发布时,由于功能、性能等方面均不完全成熟,所以是一款“实验性质”的垃圾回收器。在经过了JDK的4个迭代开发之后,在JDK15中,ZGC正式升级为一款可用于生产环境的垃圾回收器。JDK中已经包含了不少的垃圾回收器实现,例如Parallel Scavenge(简称PS), Concurrent-Mark-Sweep(简称CMS), Garbage First(简称G1)等。为什么ZGC能够被引入到JDK中?ZGC的定位是一款可扩展性、低时延的垃圾回收器,它的主要目标有3个,分别是:1. 支持超大堆内存(TB级别),目前ZGC可以支持堆内存的范围在8MB到16TB之间;2. 最大停顿时间在毫秒级,即不超过10毫秒;3. 停顿时间不会随着堆内存的增加而增加。注:垃圾回收执行时,需要识别垃圾对象,并将活跃对象进行移动。为了防止垃圾回收器和应用程序同时访问内存,造成内存访问的不一致性,在垃圾回收过程需要应用暂停运行,应用程序暂停运行的时间被称为停顿时间。1 ZGC算法介绍对于一款垃圾回收器来说支持TB级别内存也许并不困难,但是要想在TB级别的内存空间中,在毫秒级别停顿时间完成垃圾回收则是不可想象的。例如在一台配置一般的机器上,通常直接通过memcpy这样的函数进行内存复制的速度大概在GB/sec这样的水平。而垃圾回收过程需要大量的复制内存,在TB级别的堆空间完成数百GB或者几TB的内存复制,但把停顿时间控制在毫秒级别,听起来完全不可能。那么ZGC是怎么做到的呢?最关键的一点就是并发处理。并发处理贯穿在整个垃圾回收的全过程,ZGC的垃圾回收分为3个阶段:标记(Mark)、转移(Relocate)、重定位(Remap)。ZGC对这个3个阶段都采用了并发处理,只有在必须暂停的地方才会暂停应用的执行。这3个阶段完成的主要功能分别是:• 标记:识别堆内存空间中的活跃对象• 转移:将内存空间中的活跃对象转移到一块新的内存空间中,对象原来的空间已被回收• 重定位:对象的位置发生了变化,对象的引用关系应该更新,确保对象之间的引用都指向对象新的位置另外在算法实现中,标记阶段和重定位阶段都是针对活跃对象进行的。当活跃对象转移完成以后,当在对活跃对象进行重定位的同时标记活跃对象。这样就把上一次垃圾回收阶段的重定位和本次垃圾回收的标记进行合并,从而优化了垃圾回收的执行过程。ZGC中3个阶段执行示意图如下所示:要完美的支持并发的标记和转移并非易事,为了方便的支持并发,ZGC中引入了Colored Pointer和Load Barrier技术。所谓的Colored Pointer机制指的是ZGC将不同阶段的对象放在地址空间中,通过地址位来标记对象所处的空间,然后不同的地址空间映射到同一物理空间中。以16TB的堆在aarch64系统为例,地址空间划分如下:地址空间的区分通过地址位实现,如下所示:3个逻辑视图对应同一物理视图在ZGC中是一个非常巧妙的设计。这里通过一个例子介绍一下这3个视图的作用,如下图所示:假定在初始阶段地址视图为Remapped,此时产生的对象都位于Remapped空间,按照图3的介绍,第46地址位会被设置为1.当ZGC执行垃圾回收时,此时将进入标记阶段,假设标记阶段地址视图为Marked0,即第44地址位为1.这意味在标记阶段完成后,所以活跃对象的地址的第44位都被设置1.假设一个对象在Remapped视图产生,在标记完成地址视图变成Marked0,一般的做法是将Remapped视图中的对象复制到Marked0,而复制是非常耗时的,所以ZGC不希望发生真实的对象复制,而是把不同的地址视图映射到同一物理空间,当需要从Remapped到Marked0复制是,仅仅把地址位的第46设置0,同时把第44位设置为1,这就和对象真的复制一样的结果,从而大大的节约了时间。ZGC里面有两个标记视图Marked0和Marked1是为了区别上一次标记和本次标记对象是否仍然存活。具体不进一步展开,可以参考相关书籍和文献。在垃圾回收(也称为Collector)和应用线程(也称为Mutator)并发访问同一对象时,为了正确处理一致性,ZGC采用了“目标空间”一致性的做法。即当Collector和Mutator访问对象时,都保证它们访问的是对象的目标空间的对象,也就是说当对象的发生空间变化时,首先进行空间变化然后再访问对象。这里就用到了Load Barrier技术,Load Barrier会执行额外的动作确保对象都位于目标空间,Load Barrier是否执行额外动作的前提是访问对象的视图是否符合预期。当对象的视图符合预期时,Load Barrier不会执行额外的动作,这也称为Good Path;当对象的视图不符合预期时才会执行额外的动作,也称为Slow Path。对于Slow Path来说不同阶段执行的动作不同,在标记/重定位阶段,Load Barrier可能会执行标记/重定位的动作,在转移阶段,Load Barrier可能会执行转移的动作。关于Load Barrier更详细的介绍,可以参考相关书籍和文献。除了并发执行这个特点之外,ZGC在内存管理时采用了分区的管理形式,使得内存的管理更为灵活。同时完善了NUMA-Aware的功能,在NUMA系统中能取得更好的性能。2 ZGC发展历程的关键里程从2018年9月JDK11发布到2020年9月JDK15发布,ZGC是整个JDK中合入功能最多的特性。社区对于ZGC的认可度也越来越高,部分公司已经开始在生产环境尝试使用ZGC,并且取得不错的效果。下面稍微梳理一下ZGC在过去2年的5个版本中发布的重要功能。1. JDK11:在该版本中,ZGC作为实验性中的垃圾回收器引入。在初始发布中,ZGC仅支持Linux平台,且仅仅支持运行在64位系统之上。但在该版本中ZGC的整体框架已经全部实现,包括Colored Pointer,Load Barrier, NUMA-Aware等重要功能。2. JDK12:ZGC引入了一个最主要的功能,并发类卸载。从而大大降低了停顿时间。3. JDK13:引入了aarch64的支持,此时ZGC可以运行在x64和ARM平台的Linux之上。另外ZGC为了迎合现代云场景的诉求,加入了内存释放(归还给操作系统)的功能。4. JDK14:该版本最终的功能就是支持在x64平台的Windows和MacOS系统,从而使得多个平台可以使用ZGC。5. JDK15:该版本中ZGC成为一个生产可用的垃圾回收器。在该版本中增加了通用功能的支持,例如支持压缩指针(在小内存下性能更优),支持Class Data Sharing,支持堆空间使用NVRAM等。使得ZGC功能完备。在将于2021年3月发布的JDK16中,ZGC还将增加一个功能:并发线程栈扫描。这个特性将进一步的减少停顿时间。3 华为公司产品毕昇JDK对ZGC的支持由于Oracle公司对于JDK发布策略的变化,目前JDK11是一个长期支持版本(Long Term Support,简称LTS),而JDK12、13、14、15都是功能特性合入的开发版本,这些开发版本在新的版本发布之后都不在继续维护。下一个LTS的版本是2021年月的JDK17。由于JDK发布策略的变化,在JDK的升级和使用方面,大家趋向于使用LTS版本,而非开发版本。目前JDK存在两个LTS:JDK8和JDK11。另外Oracle公司对于JDK的使用策略也发生了变化,对于商业环境中使用JDK8U202之后的版本都需要购买Oracle的License(Oracle的云产品或者Oracle授权产品除外),目前License的价格大概是25美金/processor。如果在商业环境中使用JDK8U202之后的版本,但并未付费,是违反Oracle公司对于JDK的商业协议,可能会收到来自Oracle公司的诉求。JDK的开发是以OpenJDK项目为基础,而OpenJDK项目是完全开源的(许可证是 GPLv2+CE,也就是说使用者可以根据OpenJDK的源码开发自己的JDK,并开源自研的JDK)。基于上述原因以及其他外部原因,华为公司也基于OpenJDK开发了自己的产品:毕昇JDK,目前毕昇JDK已经在码云上开源。毕昇JDK致力于维护安全、稳定、高效的JDK。目前对于LTS的JDK8和JDK11都进行投入了大量的人力和物力。毕昇JDK全部通过JCK、FUZZ,JTreg等测试套。毕昇JDK运行在华为内部500多个产品上,积累了大量使用场景和Java开发者反馈的问题和诉求,解决了业务实际运行中遇到的多个问题,并在ARM架构上进行了性能优化,毕昇JDK运行在大数据等场景下可以获得更好的性能。这里以ZGC为例,稍微介绍几个毕昇JDK11相对于JDK11做了哪些工作。• 支持aarch64。在JDK11中ZGC仅支持x64平台,毕昇JDK11是目前所有开源JDK中唯一支持x64和aarch64的产品。• Bug修复。在整个运行和维护过程中,修复了一些bug,这些bug有些是社区在JDK14或者JDK15进行修复,有些我们是将社区的修复方案回合到毕昇JDK11,有些是我们在毕昇JDK11重新做了实现。举一个简单的例子,在我们的测试中发现,对于某些测试用例对于G1 GC和ZGC运行结果不一致,经过案例分析,对汇编代码进行跟踪,最终发现在ZGC的C1支持中对于浮点数寄存器使用有误,据此进行了修复。在毕昇JDK11上ZGC稳定性远远超过JDK11,可以在生产环境中使用。4 ZGC的未来发展点ZGC作为低时延垃圾回收器的杰出代表,正在努力将停顿时间减少到几毫秒。目前正在开发的是并发栈扫描。在当前的实现中栈作为垃圾回收的根集合之一,在扫描时需要暂停Mutator的执行。并发栈扫描是指Collector和Mutator都可以扫描栈,从而完成根集合处理,这将大大减少因为线程过多、调用栈复杂导致过长的停顿时间。由于Collector和Mutator并发访问栈,为了保持栈访问的一致性,引入了所谓watermark机制,该机制本质上也是一种barrier,ZGC的barrier通过记录SP的地址来判断操作运行栈是否发生变化。当然在并发处理中还需要考虑栈对象的完整性,比如参数、异常处理都会影响扫描栈的对象。并发栈扫描可以简单的总结为,当Mutator在接受到暂停请求后,会将栈顶的栈帧进行遍历,并设置watermark。当暂停结束后,如果Mutator访问栈帧,根据栈帧的SP和watermark进行比较,根据栈的增长方向可以判断栈帧是新栈帧(以及扫描或者新创建的栈帧)还是老栈帧(尚未扫描的栈帧),对于老栈帧Mutator会扫描“当前”正在栈帧(为了保证Mutator的正常运行,Mutator仅仅扫描“当前”栈帧,这里当前是指当前运行的完整的栈帧,为了便于处理参数和异常可能会额外扫描调用者的栈帧),扫描完成后Mutator继续执行,而把栈帧继续扫描的任务留给Collector。ZGC非常完美的实现了低时延的需求,把尽可能的工作并发执行,在并发执行的时候,通常需要Mutator“帮助”Collector,完成本应该由Collector完成的工作,也就说Mutator除了完成应用代码的执行还需要做一些额外的辅助工作,由于Mutator不能专心执行应用代码,这会造成ZGC在吞吐率方面的不足。另外目前ZGC是单代回收,更加放大了ZGC的吞吐率不足的缺点。要解决吞吐率的问题,通常的是方法是实现分代回收。另外一种方法是线程局部回收(即Thread Local Garbage Collection,简称为TLGC),TLGC来说天然对于多核的系统更为友善。TLGC的核心思想是:每个Mutator在发现内存不足时,优先回收Mutator自己分配的内存。TLGC的另一个好处是不需要全局的暂停,故不会增加停顿时间。在实际应用中,Mutator分配的对象可能被另外一个Mutator使用,这就所谓的逃逸对象,对于逃逸对象在TLGC中不能回收。这里逃逸分析还会涉及到真逃逸、假逃逸,所谓假逃逸指的是对象可以被另外一个Mutator看到,但是在实际运行过程中并未访问。所以TLGC的核心是一套高效的逃逸分析技术,包含准确的识别假逃逸。目前华为毕昇JDK团队正在设计和实现ZGC的分代和TLGC。期望不久的将来大家可以在毕昇JDK中看到这些特性。5 参考文献%4. ZGC官网信息,https://wiki.openjdk.java.net/display/zgc/ %4. 毕昇JDK11码云地址,https://gitee.com/openeuler/bishengjdk-11 %4. 图书《新一代垃圾回收器ZGC设计与实现》
  • [生态空间] 【DWS产品】【统计信息收集功能】DWS是否有类似Oracle的DML/TRUNCATE监控以便获取数据变化情况
    Oracle的监控方式: DBA_TAB_MODIFICATIONS视图(基表为SYS.MON_MODS_ALL$)记录了从上次收集统计信息以来表中DML操作变化的数据量,包括执行INSERT、UPDATE和DELETE影响的行数,以及是否执行过TRUNCATE操作。另外,DBMS_STATS.FLUSH_DATABASE_MONITORING_INFO可以将内存(SGA)中的数据快速刷新到数据字典SYS.MON_MODS_ALL$中。SYS.MON_MODS_ALL$只是最终表,中间还有一个过渡表SYS.MON_MODS$,这两个表的结构是完全相同的。从Oracle 10g开始,当初始化参数STATISTICS_LEVEL的值被设置为TYPICAL或ALL时,默认会启用Oracle中表监控的特性,此时,Oracle会默认监控表上的自上一次分析(Last Analyzed)之后发生的INSERT、UPDATE、DELETE以及表是否被TRUNCATE截断操作,并且Oracle数据库的SMON后台进程每15分钟会将这些操作数量的近似值(内存SGA中记录的DML操作)写入到数据字典基表MON_MODS$中(从SGA中写入到MON_MOD$),但是这个写入过程只持续1分钟,因此,可能不是所有DML操作都会记录到MON_MODS$表中。在默认情况下,数据库每天会将SGA中表的DML操作和MON_MODS$表的数据合并(MERGE)到MON_MODS_ALL$中,也可以通过DBMS_STATS.FLUSH_DATABASE_MONITORING_INFO来手动写入到MON_MODS_ALL$中。在收集统计信息后,MON_MODS_ALL$表中信息将被清空。 问题: DWS中也可以开启 autoanalyze ,它们是基于什么数据来做的,也有monitor DML/TRUNCATE的功能 ? 什么时候触发写入类似的monitor表 ?
  • [生态空间] 【DWS产品】【统计信息收集功能】DWS是否有类似Oracle的DML/TRUNCATE监控以便获取数据变化情况
    Oracle的监控方式:            DBA_TAB_MODIFICATIONS视图(基表为SYS.MON_MODS_ALL$)记录了从上次收集统计信息以来表中DML操作变化的数据量,包括执行INSERT、UPDATE和DELETE影响的行数,以及是否执行过TRUNCATE操作。另外,DBMS_STATS.FLUSH_DATABASE_MONITORING_INFO可以将内存(SGA)中的数据快速刷新到数据字典SYS.MON_MODS_ALL$中。        SYS.MON_MODS_ALL$只是最终表,中间还有一个过渡表SYS.MON_MODS$,这两个表的结构是完全相同的。从Oracle 10g开始,当初始化参数STATISTICS_LEVEL的值被设置为TYPICAL或ALL时,默认会启用Oracle中表监控的特性,此时,Oracle会默认监控表上的自上一次分析(Last Analyzed)之后发生的INSERT、UPDATE、DELETE以及表是否被TRUNCATE截断操作,并且Oracle数据库的SMON后台进程每15分钟会将这些操作数量的近似值(内存SGA中记录的DML操作)写入到数据字典基表MON_MODS$中(从SGA中写入到MON_MOD$),但是这个写入过程只持续1分钟,因此,可能不是所有DML操作都会记录到MON_MODS$表中。在默认情况下,数据库每天会将SGA中表的DML操作和MON_MODS$表的数据合并(MERGE)到MON_MODS_ALL$中,也可以通过DBMS_STATS.FLUSH_DATABASE_MONITORING_INFO来手动写入到MON_MODS_ALL$中。在收集统计信息后,MON_MODS_ALL$表中信息将被清空。  问题: DWS中也可以开启 autoanalyze ,它们是基于什么数据来做的,也有monitor DML/TRUNCATE的功能 ? 什么时候触发写入类似的monitor表   ?     
  • [技术干货] Oracle常见错误代码及解决方法
    1、ORA-12571、ORA-03113、ORA-03114、ORA-01041  特征:客户端(代理或应用服务器)有时报这类断连错误  原因:如果偶尔出现一次,则可能为网络原因或用户异常中止,如果经常出现则为客户端与服务端的字符集不一致。  措施:如果偶尔出现,可在服务端的协议配置文件PROTOCOL.ORA中增加一行  TCP.NODELAY=YES;  如果经常出现,则为客户端与服务端字符集不一致或网络原因。  客户端的字符集在注册表里定义:    HKEY__LOCAL__MACHINE/SOFTWARE/ORACLE/NLS__LANG  在客户端注册表中的TCP参数项中设置   TCPMAXDATARETRANSMITIONS=20。  2、ORA-01000  特征:达到会话允许的最大游标数  原因:达到会话允许的最大游标数  措施:有两种解决方法:  (1)在初始化文件INIT.ORA文件中增加OPEN_CURSORS的数量,一般要求大于200。  (2)在应用级,与开发工具有关,例如设置MAXOPEN_CURSORS等。  3、ORA-01545  特征:某个回滚段不可用  原因:(1)当使回滚段ONLINE时,但回滚段不可用,例如回滚段所在表空间OFFLINE;  (2) 当使回滚段ONLINE时,但回滚段已ONLINE,例如回滚段被使用两次,典型的案例如OPS方式时,回滚段不能公有;  (3)删除回滚段时,回滚段中有活动的事务;  措施:(1)确保回滚段可  (2)从初始化文件INIT.ORA的参数ROLLBACK)SEGMENTS中删除指定的回滚段。  (3)可以将回滚段所在表空间删除,取消UNDO事务  4、ORA-0165x  特征:表空间没有足够的空间供分配  原因:表空间已满;存储参数不合理,NEXT太小;没有连续的区间  措施:如果表空间已满,则需为表空间增加文件;如果存储参数不合理,则需增加INITIAL和NEXT;如果没有连续的区间,需要合并空闲的表空间。  查看空间碎片用DBA_FREE_SPACE  5、ORA-01555  特征:当前会话无法读到以前版本的数据  原因:原因很多,主要原因有下列:回滚段太小、太少;回滚段冲突;交叉提交(FETCH_ACROSS)  措施:增加回滚段数量;  6、ORA-04031  特征:共享池内存区内存不够,或产生内存碎片  原因:当试图装载一个大包时或执行一个较大的存储过程时,而共享池没有连续的内存空间。  措施:如果是内存不够,则增加SHARE)POOL_SIZE;  如果是内存碎片,执行alter system flush share_pool  7、ORA-04091  特征:触发器工作不正常  原因:一个行触发读取或修改变化的表(正在修改、插入)时,产生这种错误。  措施:检查触发器脚本,保证引用完整性  8、ORA-01242、ORA-01113  特征:介质故障导致数据库宕机  原因:介质故障。  措施:检查硬件故障;修改dbshut脚本,将其中的STARTUP命令修改为:  Startup open recover  Alter database open
  • [行业资讯] 2022年物联网发展趋势:麦肯锡、Forrester、Oracle做了这些分析和判断
    2022年即将到来,在充满不确定性的时代,我想大家也都会关心物联网市场的下一步将会如何发展。虽然我们身处物联网圈内,但面对异常碎片与广袤的物联网市场,仍然难以把握她的全貌。因此最近这两周,我们密集访谈了物联网行业内的领军人物,并且阅读和汇总了各大研究机构发布的最新研究报告。这篇文章,先让我们通过各大权威报告的研究,来一起揭示,立足全球视野的机构们如何看待物联网的未来。随后,物联网领军人物的访谈内容将陆续通过物联网智库的文章推出。本文呈现的5份报告和预测分别是:麦肯锡在2021年11月发布的《物联网:抓住加速机遇》IoT Analytics在2021年11月发布的《2021年物联网应用报告》Oracle联合Transforma Insights在2021年10月发布的《物联网先行者们的5个最佳实践》Inmarsat在2021年10月发布的《新冠时代的工业物联网》Forrester在2021年11月对2022年物联网、边缘计算和网络市场的五项最新预测01 时隔六年,麦肯锡揭示如何抓住物联网机遇你是否还有印象,在2015年麦肯锡曾经发布了一篇圈内知名的研究报告《物联网:超越市场炒作之外的价值》?在报告中,麦肯锡研究了物联网技术是如何创造真正的经济价值的。时隔六年,麦肯锡在最新报告《物联网:抓住加速机遇》中更新了对市场的认知,同时承认过去几年虽然物联网市场增长迅速,但未能实现2015年的发展预测。如今物联网在企业的应用,面临着管理、成本、人才、网络安全等因素的挑战。麦肯锡的报告相当严谨,对物联网进行了界定:报告中所提到的物联网是指,通过网络连接到计算系统的传感器与执行器,这些设备所构成的系统可以监控或管理连接对象和机器的健康状态和运行状况。互联的传感器还可以监控自然世界、人类和动物的行为。在这个界定中,麦肯锡排除了一大类系统,这类系统的所有传感器都以接收人为输入为主要目的(例如智能手机和个人电脑)。全篇报告有90页,咱们直接提炼结论,其中的重点包括:麦肯锡虽然对物联网的发展速度进行了重新评估,但始终认为物联网可以释放的潜在经济价值巨大,且不断增长。到2030年,预计物联网将在全球创造5.5万亿至12.6万亿美元的经济价值,包括B2C消费物联网和B2B物联网产品与服务所获得的价值。物联网的经济价值潜力集中在某些垂直行业与场景。到2030年,工厂生产场景将在物联网的潜在经济价值中占比最大,约为26%。在工厂生产场景中,发展潜力最大的是优化制造运营的系统与方案。预计到2030年,制造业中的运营管理应用程序,可能占工厂生产场景中经济总价值的32%至39%。另一个值得关注的场景是车联网与自动驾驶,这将是物联网增长速度最快的价值集群,其2020年至2030年的预期复合年增长率为37%。麦肯锡调整了在物联网市场中B2B与B2C的占比。2015年的预测中,麦肯锡认为B2B物联网解决方案将占比70%左右。六年后,虽然B2B仍占据物联网的大部分经济价值,但由于物联网在B2C个人与家庭中的应用速度快于预期,其价值占比得到了提升。因此,麦肯锡预计到2030年,B2B应用将占物联网总价值的62%至65%。从地理角度来看,物联网增长的故事来自中国。中国已经成为全球物联网市场中一股不容小觑的力量。预计到2030年,中国将占全球物联网经济价值的26%左右(如上图所示)。虽然物联网的潜在经济价值相当可观,但事实证明,运用物联网充满了挑战,尤其是在B2B企业应用场景中。许多企业一直在努力将物联网的试点,过渡到获取规模价值。麦肯锡承认2020年物联网所创造的总价值处于其2015年预测范畴的下限。那么下一步物联网将如何发展?麦肯锡认为自2015年以来,物联网发展的轨迹以及内外部环境都发生了巨大变化,因此详细分析了顺风与逆风因素,并给出了发展建议。顺风因素主要有3个,这些因素正在推动物联网市场的实质性加速:价值感知:做过物联网项目的客户渐渐看到了应用价值,这点与麦肯锡在2015年的研究相比,取得了实质性的进展。技术进步:由于技术的演进,如今对于大规模部署的物联网系统来说,技术不再是瓶颈。计算速度的提升、存储成本的降低、电池电量的改善、机器学习的发展…都对物联网产生推动。网络效应:从4G到5G,联网设备数量飞速发展,各种网络协议的速度、容量和延迟都在不断提升。逆风因素主要有5个,这些因素是物联网发展普遍需要面对的挑战和问题。管理层的认知:企业一般将物联网视为技术,而非运营模式的改革。因此如果一个物联网项目由IT部门领导,很难产生行为、流程、管理、运营方面的必要变化。互操作性:物联网并非无处不在、无时不在,她还有很远的路要走,但目前物联网市场存在很多“烟囱式”的生态系统。安装成本:大部分企业用户和消费者都将物联网解决方案的安装视为最大的成本问题之一。这与上一个逆风因素,互操作性的问题相关,互操作性的确实提升了安装难度。网络安全:越来越多的政府、企业和用户开始关注物联网安全,物联网遍布全球的节点为黑客提供了更多的可乘之机。数据隐私:随着各国对数据保护法案的加强,隐私成为很多企业与消费者关注的首要问题。面对各种逆风与顺风因素,麦肯锡给出了大规模部署物联网项目取得成功的7个步骤:1.明确物联网项目的决策链和决策者。目前很多企业的物联网项目都没有明确的决策人,决策权分散在各个职能、业务部门。明确的决策者是物联网项目成功的关键。2.从一开始就考虑规模化应用。很多时候企业被某些新技术所吸引,将注意力放在试点,最终的结果是陷入了不断做试点的“试点炼狱”。3.勇于躬身入局。没有银弹,也就是没有任何一种技术或方法可以产生颠覆式的效果,同时部署与应用多种物联网解决方案,更容易迫使企业转变运营模式和工作流程,以获取更多价值。4.投资技术型人才。物联网的技术人才紧缺,解决这个问题的关键并不在于应聘者,而是在于招聘到会说技术语言具备技术商业的招聘者。虽然数据工程师和首席科学家非常关键,但组织能力的升级要靠全员数据素养的持续提升。5.重新设计核心运营模式与流程。物联网项目的实施并不仅仅是IT部门的事情,仅靠技术并不能释放物联网的潜力并创造价值,只有重新设计业务的运营模式与流程,才能让数字化改革产生效果。6.促进互可操作性。物联网目前的格局由碎片的、专用的、供应商意愿强植入的生态系统主导,这种格局限制了物联网的扩展和集成能力,影响了物联网的部署并推高了成本。企业用户可以将互可操作性作为采购标准,从某种程度上推进物联网系统与平台的互联互通。7.前瞻性的塑造企业环境。企业应该努力构建自己的物联网生态。比如从第一天就优先考虑网络安全的问题,选择值得信赖的供应商,从技术解决方案和公司治理两个方面入手,构建网络安全风险管理框架,保障端到端的物联网安全。总体上,麦肯锡认为物联网的增长虽然比预期的慢,但仍将创造巨大的经济与社会价值。减缓和阻碍物联网发展的因素,并非来自于技术本身或是信心的缺失,而是来自于运营与生态方面的问题。物联网下一步的发展能否如期推进,取决于物联网企业和用户们如何解决这些不利因素。02 IoT Analytics认为2022物联网应用将会加速IoT Analytics深入研究物联网市场多年,发布的数据具有较高的准确性。根据IoT Analytics的统计,疫情对物联网市场的发展产生了一定的影响,使得2020年增速放缓,增长率为12%,是2019年增速的一半。但是在2021年,物联网企业普遍迎来了强势反弹,平均增长率预计可以达到24%。很多企业在财报中都发布了物联网业务的增速,高通在财报中提到其物联网部门2021年第三季度同比增长83%,Silicon Labs的物联网业务同比增长39%,恩智浦的工业和物联网终端市场增长18%,PTC也在报告中提到其增长的动力主要来自于物联网业务,同比增长50%。因此IoT Analytics认为物联网市场的高速增长在2022仍将延续,并就此提炼了6点趋势。趋势1:物联网正在加速发展。根据IoT Analytics的调研,79%的企业计划未来两年内,至少启动一个物联网项目。实际上,很多大型企业计划在未来两年内,平均投资多达九种不同的物联网应用。42%的企业表示将会大量投资能够提升工厂效率的物联网应用,超过五分之一的企业计划投资运营中的增强现实AR应用。97%的企业在尝试过了工厂效率改善的物联网应用之后,反馈其投资回报率为正。趋势2:应用聚焦于设备与运营效率提升。从需求的角度分析,企业对于提升设备和工厂运营效率的物联网应用需求最为迫切。除此以外,基于物联网的工作流程自动化应用、预测性维护的应用,也有可能在未来两年取得不错的增长。推动这些应用部署的底层逻辑是“升级改造”,企业正在不断连接、优化和改造自己的各种设施。趋势3:摘到物联网果实的企业越来越多。2017年思科曾经在报告中提到,60%的物联网项目均以失败告终。IoT Analytics分析认为目前情况已经发生了反转,通过对1,600个物联网项目的跟踪分析,其中79%的投资回报率为正,98%的企业得到了积极的投资回报,摘到了物联网的成功之果。企业关心的问题已从“物联网能够带来好的投资回报吗?”变成“哪个物联网方案将提供最高的投资回报率?”趋势4:领先者和后来者之间的差距正在扩大。在人们的潜意识中可能会认为,后来者可以通过快速复制前人的成功模式,并缩小企业之间的差距。但IoT Analytics的数据证明恰恰相反,已经在物联网投入巨资的企业仍在不断增加投资额度,而后来者却不为所动。领先者与后来者之间的差距不是缩小了,而是扩大了。趋势5:亚太地区增速最快。虽然北美和欧洲的物联网采用率高于亚太地区,但是情况正在发生变化,亚太地区,尤其是中国,正在迎头赶超。中国、韩国和越南的企业越来越关注其商业模式的数字化,并从劳动密集型产业跨越到高端装备制造,中国在其中处于领先地位。趋势6:物联网项目的复杂性仍未攻克。物联网项目的复杂性仍然是物联网广泛应用的主要挑战。虽然近年来,各种供应商为简化物联网应用做出了很多努力,包括开发即用型的应用模板、模块化组件、零配置设备连接工具,以及软件和硬件的按需付费模式等,但是用户对于物联网系统复杂性的痛点仍然存在。总体上而言,在2022年我们将看到那些已经投入建设物联网项目的企业仍会加大投资,不断优化和改造各种基础设施,尤其是聚焦于设备与运营效率的提升。整个物联网市场将会加速发展,尤其是中国的增速令人瞩目。03 物联网获得的投资很可能会超越云计算Forrester、Oracle以及Inmarsat的最新报告和预测我们放到一起来说。Inmarsat是全球移动卫星通信领域的知名企业,根据其在《新冠时代的工业物联网》调研中的发现,企业对物联网的投资将会超越云计算、网络安全和大数据分析等数字化转型技术,很多受访者表示他们计划在未来三年内,将最大比例的IT预算投资于物联网项目。调研结果还显示,疫情让企业意识到了物联网应用的重要性,物联网的应用对许多企业的成本节约期待了积极的效果。平均而言,受访者表示物联网为他们的企业每年节约9%的成本,预计未来12个月可实现成本节约15%。市场咨询公司Forrester发布了2022年关于物联网、边缘计算和网络技术的5项预测:预测1:边缘和物联网将被更多用于减少排放。越来越多的企业开始重视减轻碳排放,而边缘计算和联网设备的应用可以有效起到监测环境、资产管理和供应链效率提升的效果,让生产过程更具可持续性。预测2:卫星物联网将成为对5G的挑战。Forrester预测85%的卫星物联网用户将在农村地区,并且成为对5G网络的有效补充。预测3:芯片短缺将减缓物联网增速。Forrester预测芯片短缺的问题将长期存在,有可能一直持续到2023年中期,这将导致物联网的增速比预期的要慢,大约会降低10%~15%。预测4:智能基础设施的投资将增加。Forrester预计2022年智能基础设施的投资将出现空前繁荣,投资预计将增长40%,主要受中国、欧盟和美国投资的推动。预测5:一个全新的庞大物联网僵尸网络将会浮现。Forrester认为由于物联网设备的潜在安全风险,2022年可能会出现一个全新的庞大的僵尸网络,企业应提前做好准备。简而言之,这5项预测不是确定发生,但在一定程度上阐明了提升供应链的可持续性、卫星物联网与5G的互补关系、各国对智能基础设施的加大投资是趋势所在。至于芯片短缺是否仍将持续,大规模僵尸网络能否出现,还需要根据内外部环境的变化及时调整判断。最后一份报告《物联网先行者们的5个最佳实践》来自Oracle,通过对800名企业用户的调研,他们发现了一些有意思的情况。64%的企业物联网决策者会优先选择“现成的”解决方案,而不是定制化的产品。企业对于快速交付、简单易用的物联网方案需求越来越大。42%的受访者预计物联网项目在6个月之内完成,88%的项目在12个月内完成。受访者对物联网项目的重视度很高,将近90%的项目被描述为对企业的核心业务“至关重要”或“非常关键”,这个结果表明物联网应用正在从外围向核心业务和关键场景渗透。结果同样呈现了物联网市场尚未成熟和稳定,企业客户对供应商的态度非常开放,供应商的格局仍在不断变化,新平台、新连接、新硬件的供应商不断涌现。好消息是企业用户很乐意接触新的供应商,但另一方面也表明供应商与客户维护好关系不一定就能得到下一个项目的订单。报告的亮点是呈现了企业物联网应用正在进入一个新的阶段。企业用户并不在意物联网项目的独特性和定制化,而是需要快速部署、切实好用的物联网方案,并且愿意将物联网方案应用于核心业务和关键场景的改造。基于此,报告提炼了物联网先行者们的5个最佳实践建议:建议1:不要停留于非核心业务。物联网的先行者们积极将物联网用于关键业务,很多时候这些企业将物联网技术用于客户的交互“界面”。虽然物联网的部署应当谨慎行事,但是先行者们并没有将视野局限于对非核心业务的改进,而是将注意力转移到关键业务的提升。建议2:连接是基本能力。连接是物联网解决方案的基本能力,而连接只是一个开端。在过去的物联网项目中,企业很重视连接能力,但如今连接不再是整个物联网方案中的挑战所在,连接变成了一项非常基本的功能。建议3:明确数据的作用。先行者们正在将实现从连接转移到数据,更多的思考数据的价值。如果一个物联网项目仅仅实现连接,而并没有挖掘数据的价值,那么这个项目在某种程度上将是一种浪费。建议4:从现成的方案开始。企业用户在过去往往热衷于部署定制化的物联网解决方案,但是现在大多数企业首选的是“现成的”方案,这些方案中沉淀了物联网平台服务商和供应商们的智慧,聪明的企业可以将这些智慧为其所用。建议5:专注于商业模式。企业用户将视线从连接能力,转移到挖掘数据价值,是否足够?答案是否定的,一些先行者认为真正拥抱物联网的方法是重塑商业模式。很多企业正在积极思考如何释放数据的全部价值,将物联网渗透到整个企业的管理流程之中。总之,从报告中可以看出,先行者们不再满足于只摘取“低垂的果实”,而是已经在考虑如何将物联网运用于提升和改进核心业务流程,他们不再只关注连接和获取数据,而是更关注挖掘价值和商业模式的转型。写在最后看完了这五份报告和预测,谈谈我的感受:第一,B2B企业物联网应用正在进入一个新的阶段,这与我们在2021年初的判断非常符合,国内的物联网的发展阶段已经由蓄力期进入增长期。在这个阶段,企业用户对物联网的认知高度飞速提升,先行者们愈发脚踏实地,他们并不在意物联网项目的独特性和定制化,而是需要快速部署、切实好用的物联网方案,并且愿意将物联网方案应用于核心业务和关键场景的改造。第二,自从1999年物联网被提出以来,物联网的发展历程不断被分析和复盘,尤其是“物联网的发展为什么比想象中慢?”这个问题,时隔六年被麦肯锡提出,各方均指出了问题并给出了解决方案,无论是决策链条、人才储备还是互联互通,我们已经没有理由不去共同解决这些挑战。第三,疫情为企业的数字化转型按下了加速键,如果企业对物联网的投资将会超越云计算、网络安全和大数据分析等数字化转型技术,势必会吸引更多企业纷纷布局。当我们将视野从连接能力转向挖掘数据价值的能力和商业模式重塑时,物联网需要与5G、AI、区块链等技术相融合,才能更好的满足用户的期待。
  • [行业资讯] 2022年物联网发展趋势:麦肯锡、Forrester、Oracle做了这些分析和判断
    2022年即将到来,在充满不确定性的时代,我想大家也都会关心物联网市场的下一步将会如何发展。虽然我们身处物联网圈内,但面对异常碎片与广袤的物联网市场,仍然难以把握她的全貌。因此最近这两周,我们密集访谈了物联网行业内的领军人物,并且阅读和汇总了各大研究机构发布的最新研究报告。这篇文章,先让我们通过各大权威报告的研究,来一起揭示,立足全球视野的机构们如何看待物联网的未来。随后,物联网领军人物的访谈内容将陆续通过物联网智库的文章推出。本文呈现的5份报告和预测分别是:麦肯锡在2021年11月发布的《物联网:抓住加速机遇》IoT Analytics在2021年11月发布的《2021年物联网应用报告》Oracle联合Transforma Insights在2021年10月发布的《物联网先行者们的5个最佳实践》Inmarsat在2021年10月发布的《新冠时代的工业物联网》Forrester在2021年11月对2022年物联网、边缘计算和网络市场的五项最新预测01 时隔六年,麦肯锡揭示如何抓住物联网机遇你是否还有印象,在2015年麦肯锡曾经发布了一篇圈内知名的研究报告《物联网:超越市场炒作之外的价值》?在报告中,麦肯锡研究了物联网技术是如何创造真正的经济价值的。时隔六年,麦肯锡在最新报告《物联网:抓住加速机遇》中更新了对市场的认知,同时承认过去几年虽然物联网市场增长迅速,但未能实现2015年的发展预测。如今物联网在企业的应用,面临着管理、成本、人才、网络安全等因素的挑战。麦肯锡的报告相当严谨,对物联网进行了界定:报告中所提到的物联网是指,通过网络连接到计算系统的传感器与执行器,这些设备所构成的系统可以监控或管理连接对象和机器的健康状态和运行状况。互联的传感器还可以监控自然世界、人类和动物的行为。在这个界定中,麦肯锡排除了一大类系统,这类系统的所有传感器都以接收人为输入为主要目的(例如智能手机和个人电脑)。全篇报告有90页,咱们直接提炼结论,其中的重点包括:麦肯锡虽然对物联网的发展速度进行了重新评估,但始终认为物联网可以释放的潜在经济价值巨大,且不断增长。到2030年,预计物联网将在全球创造5.5万亿至12.6万亿美元的经济价值,包括B2C消费物联网和B2B物联网产品与服务所获得的价值。物联网的经济价值潜力集中在某些垂直行业与场景。到2030年,工厂生产场景将在物联网的潜在经济价值中占比最大,约为26%。在工厂生产场景中,发展潜力最大的是优化制造运营的系统与方案。预计到2030年,制造业中的运营管理应用程序,可能占工厂生产场景中经济总价值的32%至39%。另一个值得关注的场景是车联网与自动驾驶,这将是物联网增长速度最快的价值集群,其2020年至2030年的预期复合年增长率为37%。麦肯锡调整了在物联网市场中B2B与B2C的占比。2015年的预测中,麦肯锡认为B2B物联网解决方案将占比70%左右。六年后,虽然B2B仍占据物联网的大部分经济价值,但由于物联网在B2C个人与家庭中的应用速度快于预期,其价值占比得到了提升。因此,麦肯锡预计到2030年,B2B应用将占物联网总价值的62%至65%。从地理角度来看,物联网增长的故事来自中国。中国已经成为全球物联网市场中一股不容小觑的力量。预计到2030年,中国将占全球物联网经济价值的26%左右(如上图所示)。虽然物联网的潜在经济价值相当可观,但事实证明,运用物联网充满了挑战,尤其是在B2B企业应用场景中。许多企业一直在努力将物联网的试点,过渡到获取规模价值。麦肯锡承认2020年物联网所创造的总价值处于其2015年预测范畴的下限。那么下一步物联网将如何发展?麦肯锡认为自2015年以来,物联网发展的轨迹以及内外部环境都发生了巨大变化,因此详细分析了顺风与逆风因素,并给出了发展建议。顺风因素主要有3个,这些因素正在推动物联网市场的实质性加速:价值感知:做过物联网项目的客户渐渐看到了应用价值,这点与麦肯锡在2015年的研究相比,取得了实质性的进展。技术进步:由于技术的演进,如今对于大规模部署的物联网系统来说,技术不再是瓶颈。计算速度的提升、存储成本的降低、电池电量的改善、机器学习的发展…都对物联网产生推动。网络效应:从4G到5G,联网设备数量飞速发展,各种网络协议的速度、容量和延迟都在不断提升。逆风因素主要有5个,这些因素是物联网发展普遍需要面对的挑战和问题。管理层的认知:企业一般将物联网视为技术,而非运营模式的改革。因此如果一个物联网项目由IT部门领导,很难产生行为、流程、管理、运营方面的必要变化。互操作性:物联网并非无处不在、无时不在,她还有很远的路要走,但目前物联网市场存在很多“烟囱式”的生态系统。安装成本:大部分企业用户和消费者都将物联网解决方案的安装视为最大的成本问题之一。这与上一个逆风因素,互操作性的问题相关,互操作性的确实提升了安装难度。网络安全:越来越多的政府、企业和用户开始关注物联网安全,物联网遍布全球的节点为黑客提供了更多的可乘之机。数据隐私:随着各国对数据保护法案的加强,隐私成为很多企业与消费者关注的首要问题。面对各种逆风与顺风因素,麦肯锡给出了大规模部署物联网项目取得成功的7个步骤:1.明确物联网项目的决策链和决策者。目前很多企业的物联网项目都没有明确的决策人,决策权分散在各个职能、业务部门。明确的决策者是物联网项目成功的关键。2.从一开始就考虑规模化应用。很多时候企业被某些新技术所吸引,将注意力放在试点,最终的结果是陷入了不断做试点的“试点炼狱”。3.勇于躬身入局。没有银弹,也就是没有任何一种技术或方法可以产生颠覆式的效果,同时部署与应用多种物联网解决方案,更容易迫使企业转变运营模式和工作流程,以获取更多价值。4.投资技术型人才。物联网的技术人才紧缺,解决这个问题的关键并不在于应聘者,而是在于招聘到会说技术语言具备技术商业的招聘者。虽然数据工程师和首席科学家非常关键,但组织能力的升级要靠全员数据素养的持续提升。5.重新设计核心运营模式与流程。物联网项目的实施并不仅仅是IT部门的事情,仅靠技术并不能释放物联网的潜力并创造价值,只有重新设计业务的运营模式与流程,才能让数字化改革产生效果。6.促进互可操作性。物联网目前的格局由碎片的、专用的、供应商意愿强植入的生态系统主导,这种格局限制了物联网的扩展和集成能力,影响了物联网的部署并推高了成本。企业用户可以将互可操作性作为采购标准,从某种程度上推进物联网系统与平台的互联互通。7.前瞻性的塑造企业环境。企业应该努力构建自己的物联网生态。比如从第一天就优先考虑网络安全的问题,选择值得信赖的供应商,从技术解决方案和公司治理两个方面入手,构建网络安全风险管理框架,保障端到端的物联网安全。总体上,麦肯锡认为物联网的增长虽然比预期的慢,但仍将创造巨大的经济与社会价值。减缓和阻碍物联网发展的因素,并非来自于技术本身或是信心的缺失,而是来自于运营与生态方面的问题。物联网下一步的发展能否如期推进,取决于物联网企业和用户们如何解决这些不利因素。02 IoT Analytics认为2022物联网应用将会加速IoT Analytics深入研究物联网市场多年,发布的数据具有较高的准确性。根据IoT Analytics的统计,疫情对物联网市场的发展产生了一定的影响,使得2020年增速放缓,增长率为12%,是2019年增速的一半。但是在2021年,物联网企业普遍迎来了强势反弹,平均增长率预计可以达到24%。很多企业在财报中都发布了物联网业务的增速,高通在财报中提到其物联网部门2021年第三季度同比增长83%,Silicon Labs的物联网业务同比增长39%,恩智浦的工业和物联网终端市场增长18%,PTC也在报告中提到其增长的动力主要来自于物联网业务,同比增长50%。因此IoT Analytics认为物联网市场的高速增长在2022仍将延续,并就此提炼了6点趋势。趋势1:物联网正在加速发展。根据IoT Analytics的调研,79%的企业计划未来两年内,至少启动一个物联网项目。实际上,很多大型企业计划在未来两年内,平均投资多达九种不同的物联网应用。42%的企业表示将会大量投资能够提升工厂效率的物联网应用,超过五分之一的企业计划投资运营中的增强现实AR应用。97%的企业在尝试过了工厂效率改善的物联网应用之后,反馈其投资回报率为正。趋势2:应用聚焦于设备与运营效率提升。从需求的角度分析,企业对于提升设备和工厂运营效率的物联网应用需求最为迫切。除此以外,基于物联网的工作流程自动化应用、预测性维护的应用,也有可能在未来两年取得不错的增长。推动这些应用部署的底层逻辑是“升级改造”,企业正在不断连接、优化和改造自己的各种设施。趋势3:摘到物联网果实的企业越来越多。2017年思科曾经在报告中提到,60%的物联网项目均以失败告终。IoT Analytics分析认为目前情况已经发生了反转,通过对1,600个物联网项目的跟踪分析,其中79%的投资回报率为正,98%的企业得到了积极的投资回报,摘到了物联网的成功之果。企业关心的问题已从“物联网能够带来好的投资回报吗?”变成“哪个物联网方案将提供最高的投资回报率?”趋势4:领先者和后来者之间的差距正在扩大。在人们的潜意识中可能会认为,后来者可以通过快速复制前人的成功模式,并缩小企业之间的差距。但IoT Analytics的数据证明恰恰相反,已经在物联网投入巨资的企业仍在不断增加投资额度,而后来者却不为所动。领先者与后来者之间的差距不是缩小了,而是扩大了。趋势5:亚太地区增速最快。虽然北美和欧洲的物联网采用率高于亚太地区,但是情况正在发生变化,亚太地区,尤其是中国,正在迎头赶超。中国、韩国和越南的企业越来越关注其商业模式的数字化,并从劳动密集型产业跨越到高端装备制造,中国在其中处于领先地位。趋势6:物联网项目的复杂性仍未攻克。物联网项目的复杂性仍然是物联网广泛应用的主要挑战。虽然近年来,各种供应商为简化物联网应用做出了很多努力,包括开发即用型的应用模板、模块化组件、零配置设备连接工具,以及软件和硬件的按需付费模式等,但是用户对于物联网系统复杂性的痛点仍然存在。总体上而言,在2022年我们将看到那些已经投入建设物联网项目的企业仍会加大投资,不断优化和改造各种基础设施,尤其是聚焦于设备与运营效率的提升。整个物联网市场将会加速发展,尤其是中国的增速令人瞩目。03 物联网获得的投资很可能会超越云计算Forrester、Oracle以及Inmarsat的最新报告和预测我们放到一起来说。Inmarsat是全球移动卫星通信领域的知名企业,根据其在《新冠时代的工业物联网》调研中的发现,企业对物联网的投资将会超越云计算、网络安全和大数据分析等数字化转型技术,很多受访者表示他们计划在未来三年内,将最大比例的IT预算投资于物联网项目。调研结果还显示,疫情让企业意识到了物联网应用的重要性,物联网的应用对许多企业的成本节约期待了积极的效果。平均而言,受访者表示物联网为他们的企业每年节约9%的成本,预计未来12个月可实现成本节约15%。市场咨询公司Forrester发布了2022年关于物联网、边缘计算和网络技术的5项预测:预测1:边缘和物联网将被更多用于减少排放。越来越多的企业开始重视减轻碳排放,而边缘计算和联网设备的应用可以有效起到监测环境、资产管理和供应链效率提升的效果,让生产过程更具可持续性。预测2:卫星物联网将成为对5G的挑战。Forrester预测85%的卫星物联网用户将在农村地区,并且成为对5G网络的有效补充。预测3:芯片短缺将减缓物联网增速。Forrester预测芯片短缺的问题将长期存在,有可能一直持续到2023年中期,这将导致物联网的增速比预期的要慢,大约会降低10%~15%。预测4:智能基础设施的投资将增加。Forrester预计2022年智能基础设施的投资将出现空前繁荣,投资预计将增长40%,主要受中国、欧盟和美国投资的推动。预测5:一个全新的庞大物联网僵尸网络将会浮现。Forrester认为由于物联网设备的潜在安全风险,2022年可能会出现一个全新的庞大的僵尸网络,企业应提前做好准备。简而言之,这5项预测不是确定发生,但在一定程度上阐明了提升供应链的可持续性、卫星物联网与5G的互补关系、各国对智能基础设施的加大投资是趋势所在。至于芯片短缺是否仍将持续,大规模僵尸网络能否出现,还需要根据内外部环境的变化及时调整判断。最后一份报告《物联网先行者们的5个最佳实践》来自Oracle,通过对800名企业用户的调研,他们发现了一些有意思的情况。64%的企业物联网决策者会优先选择“现成的”解决方案,而不是定制化的产品。企业对于快速交付、简单易用的物联网方案需求越来越大。42%的受访者预计物联网项目在6个月之内完成,88%的项目在12个月内完成。受访者对物联网项目的重视度很高,将近90%的项目被描述为对企业的核心业务“至关重要”或“非常关键”,这个结果表明物联网应用正在从外围向核心业务和关键场景渗透。结果同样呈现了物联网市场尚未成熟和稳定,企业客户对供应商的态度非常开放,供应商的格局仍在不断变化,新平台、新连接、新硬件的供应商不断涌现。好消息是企业用户很乐意接触新的供应商,但另一方面也表明供应商与客户维护好关系不一定就能得到下一个项目的订单。报告的亮点是呈现了企业物联网应用正在进入一个新的阶段。企业用户并不在意物联网项目的独特性和定制化,而是需要快速部署、切实好用的物联网方案,并且愿意将物联网方案应用于核心业务和关键场景的改造。基于此,报告提炼了物联网先行者们的5个最佳实践建议:建议1:不要停留于非核心业务。物联网的先行者们积极将物联网用于关键业务,很多时候这些企业将物联网技术用于客户的交互“界面”。虽然物联网的部署应当谨慎行事,但是先行者们并没有将视野局限于对非核心业务的改进,而是将注意力转移到关键业务的提升。建议2:连接是基本能力。连接是物联网解决方案的基本能力,而连接只是一个开端。在过去的物联网项目中,企业很重视连接能力,但如今连接不再是整个物联网方案中的挑战所在,连接变成了一项非常基本的功能。建议3:明确数据的作用。先行者们正在将实现从连接转移到数据,更多的思考数据的价值。如果一个物联网项目仅仅实现连接,而并没有挖掘数据的价值,那么这个项目在某种程度上将是一种浪费。建议4:从现成的方案开始。企业用户在过去往往热衷于部署定制化的物联网解决方案,但是现在大多数企业首选的是“现成的”方案,这些方案中沉淀了物联网平台服务商和供应商们的智慧,聪明的企业可以将这些智慧为其所用。建议5:专注于商业模式。企业用户将视线从连接能力,转移到挖掘数据价值,是否足够?答案是否定的,一些先行者认为真正拥抱物联网的方法是重塑商业模式。很多企业正在积极思考如何释放数据的全部价值,将物联网渗透到整个企业的管理流程之中。总之,从报告中可以看出,先行者们不再满足于只摘取“低垂的果实”,而是已经在考虑如何将物联网运用于提升和改进核心业务流程,他们不再只关注连接和获取数据,而是更关注挖掘价值和商业模式的转型。写在最后看完了这五份报告和预测,谈谈我的感受:第一,B2B企业物联网应用正在进入一个新的阶段,这与我们在2021年初的判断非常符合,国内的物联网的发展阶段已经由蓄力期进入增长期。在这个阶段,企业用户对物联网的认知高度飞速提升,先行者们愈发脚踏实地,他们并不在意物联网项目的独特性和定制化,而是需要快速部署、切实好用的物联网方案,并且愿意将物联网方案应用于核心业务和关键场景的改造。第二,自从1999年物联网被提出以来,物联网的发展历程不断被分析和复盘,尤其是“物联网的发展为什么比想象中慢?”这个问题,时隔六年被麦肯锡提出,各方均指出了问题并给出了解决方案,无论是决策链条、人才储备还是互联互通,我们已经没有理由不去共同解决这些挑战。第三,疫情为企业的数字化转型按下了加速键,如果企业对物联网的投资将会超越云计算、网络安全和大数据分析等数字化转型技术,势必会吸引更多企业纷纷布局。当我们将视野从连接能力转向挖掘数据价值的能力和商业模式重塑时,物联网需要与5G、AI、区块链等技术相融合,才能更好的满足用户的期待。文中提到的报告中,有三份可供公开下载,分别是:麦肯锡的《物联网:抓住加速机遇》Oracle的《物联网先行者们的5个最佳实践》Inmarsat的《新冠时代的工业物联网》本文来自微信公众号 “物联网智库”(ID:iot101),作者:彭昭
  • [问题求助] 鲲鹏服务器上能否安装Oracle 19c
    业务数据库Oracle 19c 能否安装在国产化的鲲鹏服务器 上,欧拉系统上,如果能,需要的服务器信息和欧拉系统版本分别是多少。
  • [应用安全] 【安全公告】Oracle WebLogic Server 十月安全更新通告
    漏洞名称 : Oracle WebLogic Server 十月安全更新漏洞编号 :CVE-2021-35617CVE-2021-35620CVE-2021-29425CVE-2021-35552组件名称 : Oracle WebLogic Server安全公告链接 : https://www.oracle.com/security-alerts/cpuoct2021.html漏洞分析:1、组件介绍    WebLogic是美国Oracle公司出品的一个Application Server,确切的说是一个基于Java EE架构的中间件,WebLogic是用于开发、集成、部署和管理大型分布式Web应用、网络应用和数据库应用的Java应用服务器。    WebLogic将Java的动态功能和Java Enterprise标准的安全性引入大型网络应用的开发、集成、部署和管理之中,是商业市场上主要的Java(J2EE)应用服务器软件(Application Server)之一,是世界上第一个成功商业化的J2EE应用服务器,具有可扩展性,快速开发,灵活,可靠性等优势。2、漏洞简介    2021年10月20日,安全团队监测到一则Oracle官方发布安全补丁的通告,共修复了38个中间件漏洞,其中重点关注的漏洞信息如下表。序号漏洞编号严重等级影响版本1CVE-2021-35617严重Oracle WebLogic 12.1.3.0.0Oracle WebLogic 12.2.1.3.0Oracle WebLogic 12.2.1.4.0Oracle WebLogic 14.1.1.0.02CVE-2021-35620高危Oracle WebLogic 10.3.6.0.0Oracle WebLogic 12.1.3.0.0Oracle WebLogic 12.2.1.3.0Oracle WebLogic 12.2.1.4.0Oracle WebLogic 14.1.1.0.03CVE-2021-29425中危Oracle WebLogic 12.2.1.3.0Oracle WebLogic 12.2.1.4.0Oracle WebLogic 14.1.1.0.04CVE-2021-35552中危3、严重漏洞描述CVE-2021-35617        攻击者可以在未授权的情况下通过IIOP协议对存在漏洞的WebLogic Server组件进行攻击。成功利用该漏洞的攻击者可以接管WebLogic Server。影响范围:    WebLogic是用于开发、集成、部署和管理大型分布式Web应用、网络应用和数据库应用的Java应用服务器。可能受漏洞影响的资产广泛分布于世界各地,国内省份中受影响资产分布于北京、广东、上海等省市。解决方案:1、如何检测组件系统版本    用户可以通过进入WebLogic安装主目录下的OPatch目录,在此处打开命令行,输入.\opatch lspatches命令,结果如下:    如上图试验设备补丁号为31656851。2、官方修复建议    当前官方已发布受影响版本的对应补丁,建议受影响的用户及时更新官方的安全补丁。链接如下:https://www.oracle.com/security-alerts/cpuoct2021.html打补丁方法:用户可以使用Opatch进行补丁安装,具体安装步骤如下:(1)进入Oracle\Middleware\Oracle_Home\OPatch路径下,运行opatch.bat脚本(2)运行opatch apply {WebLogic补丁文件夹}命令进行补丁安装,如下图:(3)再运行opatch lspatches命令,查看补丁号,确认是否成功安装最新补丁。注:用户需要使用Oracle官方更新的最新补丁,并且结合自己实际使用的WebLogic Server版本号,选择对应的补丁进行安装。3、临时修复建议    该临时修复建议存在一定风险,建议用户可根据业务系统特性审慎选择采用临时修复方案:1.可通过关闭IIOP协议对此漏洞进行临时防御。操作如下:    在Weblogic控制台中,选择“服务”->“AdminServer”->“协议”,取消“启用IIOP”的勾选。并重启Weblogic项目,使配置生效。2.对T3服务进行控制    控制T3服务的方法:    在上图这个WebLogic界面中选择安全-筛选器,在下方出现的界面中找到“连接筛选器”,在里面输入security.net.ConnectionFilterImpl    然后在连接筛选器规则中输入127.0.0.1 * * allow t3 t3s,0.0.0.0/0 * * deny t3 t3s    最后保存并重启服务器即可生效。参考链接:https://www.oracle.com/security-alerts/cpuoct2021.html
  • [应用安全] 【漏洞通告】Oracle MySQL JDBC XML外部实体注入漏洞 CVE-2021-2471
    漏洞名称 : Oracle MySQL JDBC XML外部实体注入漏洞 CVE-2021-2471组件名称 : Oracle MySQL影响范围 : Oracle MySQL < 8.0.27漏洞类型 : XML外部实体注入利用条件 : 未知综合评价 : <综合评定利用难度>:未知。<综合评定威胁等级>:高危,能获取敏感信息。漏洞分析:1、组件介绍MySQL是一个关系型数据库管理系统,由瑞典MySQL AB 公司开发,目前属于Oracle旗下产品。MySQL 是当前流行的关系型数据库管理系统之一。2、漏洞描述2021年10月21日,监测到一则Oracle MySQL组件在JDBC过程中存在XML外部实体注入漏洞的信息,漏洞编号:CVE-2021-2471,漏洞威胁等级:高危。攻击者可以利用该漏洞获取服务器敏感信息,最终导致信息泄露。影响范围:MySQL 是当前流行的关系型数据库管理系统之一,所提供的服务和产品众多且应用广泛。此次可能受漏洞影响的资产也分布于世界各地,中国地区也使用广泛。目前受影响的Oracle MySQL版本:Oracle MySQL < 8.0.27解决方案:1、官方修复建议当前官方已发布对应安全补丁,建议受影响用户及时更新。参考链接如下:https://www.oracle.com/security-alerts/cpuoct2021.html
  • [技术干货] 通过JDBC连接oracle数据库的十大技巧
    Java数据库连接(JDBC)API是一系列能够让Java编程人员访问数据库的接口,各个开发商的接口并不完全相同。在使用多年的Oracle公司的JDBC后,我积累了许多技巧,这些技巧能够使我们更好地发挥系统的性能和实现更多的功能。   1、在客户端软件开发中使用Thin驱动程序   在开发Java软件方面,Oracle的数据库提供了四种类型的驱动程序,二种用于应用软件、applets、servlets等客户端软件,另外二种用于数据库中的Java存储过程等服务器端软件。在客户机端软件的开发中,我们可以选择OCI驱动程序或Thin驱动程序。OCI驱动程序利用Java本地化接口(JNI),通过Oracle客户端软件与数据库进行通讯。Thin驱动程序是纯Java驱动程序,它直接与数据库进行通讯。为了获得最高的性能,Oracle建议在客户端软件的开发中使用OCI驱动程序,这似乎是正确的。但我建议使用Thin驱动程序,因为通过多次测试发现,在通常情况下,Thin驱动程序的性能都超过了OCI驱动程序。   2、关闭自动提交功能,提高系统性能   在第一次建立与数据库的连接时,在缺省情况下,连接是在自动提交模式下的。为了获得更好的性能,可以通过调用带布尔值false参数的Connection类的setAutoCommit()方法关闭自动提交功能,如下所示:  conn.setAutoCommit(false);值得注意的是,一旦关闭了自动提交功能,我们就需要通过调用Connection类的commit()和rollback()方法来人工的方式对事务进行管理。   3、在动态SQL或有时间限制的命令中使用Statement对象   在执行SQL命令时,我们有二种选择:可以使用PreparedStatement对象,也可以使用Statement对象。无论多少次地使用同一个SQL命令,PreparedStatement都只对它解析和编译一次。当使用Statement对象时,每次执行一个SQL命令时,都会对它进行解析和编译。这可能会使你认为,使用PreparedStatement对象比使用Statement对象的速度更快。然而,我进行的测试表明,在客户端软件中,情况并非如此。因此,在有时间限制的SQL操作中,除非成批地处理SQL命令,我们应当考虑使用Statement对象。   此外,使用Statement对象也使得编写动态SQL命令更加简单,因为我们可以将字符串连接在一起,建立一个有效的SQL命令。因此,我认为,Statement对象可以使动态SQL命令的创建和执行变得更加简单。   4、利用helper函数对动态SQL命令进行格式化   在创建使用Statement对象执行的动态SQL命令时,我们需要处理一些格式化方面的问题。例如,如果我们想创建一个将名字O'Reilly插入表中的SQL命令,则必须使用二个相连的“''”号替换O'Reilly中的“'”号。完成这些工作的最好的方法是创建一个完成替换操作的helper方法,然后在连接字符串心服用公式表达一个SQL命令时,使用创建的helper方法。与此类似的是,我们可以让helper方法接受一个Date型的值,然后让它输出基于Oracle的to_date()函数的字符串表达式。   5、利用PreparedStatement对象提高数据库的总体效率   在使用PreparedStatement对象执行SQL命令时,命令被数据库进行解析和编译,然后被放到命令缓冲区。然后,每当执行同一个PreparedStatement对象时,它就会被再解析一次,但不会被再次编译。在缓冲区中可以发现预编译的命令,并且可以重新使用。在有大量用户的企业级应用软件中,经常会重复执行相同的SQL命令,使用PreparedStatement对象带来的编译次数的减少能够提高数据库的总体性能。如果不是在客户端创建、预备、执行PreparedStatement任务需要的时间长于Statement任务,我会建议在除动态SQL命令之外的所有情况下使用PreparedStatement对象。  6、在成批处理重复的插入或更新操作中使用PreparedStatement对象     如果成批地处理插入和更新操作,就能够显著地减少它们所需要的时间。Oracle提供的Statement和 CallableStatement并不真正地支持批处理,只有PreparedStatement对象才真正地支持批处理。我们可以使用addBatch()和executeBatch()方法选择标准的JDBC批处理,或者通过利用PreparedStatement对象的setExecuteBatch()方法和标准的executeUpdate()方法选择速度更快的Oracle专有的方法。要使用Oracle专有的批处理机制,可以以如下所示的方式调用setExecuteBatch():
  • [问题求助] 【鲲鹏云】【CentOs7.6 (aarch64)安装oracle】 安装报错
    【功能模块】 arm 架构  CentOS 7.6 安装 oracle【操作步骤&问题现象】1、上传linux版本 oracle 安装包2、使用unzip 解压到当前目录下面3.  设置该文件夹为 oracle 用户所有,设置权限为7774.  执行./runInstallar   报错!如截图【截图信息】【日志信息】(可选,上传日志内容或者附件)
总条数:180 到第
上滑加载中