{"id":13938,"date":"2020-04-22T10:34:43","date_gmt":"2020-04-22T08:34:43","guid":{"rendered":"https:\/\/www.dbi-services.com\/blog\/tibero-i\/"},"modified":"2020-04-22T10:34:43","modified_gmt":"2020-04-22T08:34:43","slug":"tibero-i","status":"publish","type":"post","link":"https:\/\/www.dbi-services.com\/blog\/tibero-i\/","title":{"rendered":"\ud2f0\ubca0\ub85c &#8211; The most compatible alternative to Oracle Database"},"content":{"rendered":"<h2>By Franck Pachot<\/h2>\n<p>.<br \/>\nDo you remember that time where we were able to buy IBM PC clones, cheaper than the IBM PC but fully compatible? I got the same impression when testing Tibero, the TmaxSoft relational database compatible with the Oracle Database. Many Oracle customers are looking for alternatives to the Oracle Database, because of unfriendly commercial and licensing practices, like forcing the usage of expensive options or not counting vCPU for licensing. Up to now, I was not really impressed by the databases that claim Oracle compatibility. You simply cannot migrate an application from Oracle to another RDBMS without having to change a lot of code. This makes it nearly impossible to move a legacy application where the business logic has been implemented during years in the database model and stored procedures. Who will take the risk to guarantee the same behavior even after very expensive UAT? Finally, with less effort, you may optimize your Oracle licenses and stay with the same database software.<\/p>\n<h3>Tibero<\/h3>\n<p>However, in Asia, some companies have another reason to move out of Oracle. Not because of Oracle, but because it is an American company. This is true especially for public government organizations for which storing data and running critical application should not depend on a US company. And once they have built their alternative, they may sell it worldwide. In this post I&#8217;m looking at Tibero, a database created by a South Korean company &#8211; TmaxSoft &#8211; with an incredible level of compatibility with Oracle.<\/p>\n<p>I&#8217;ll install and run a Tibero database to get an idea about what compatibility means.<\/p>\n<h3>Demo trial<\/h3>\n<p>After creating a login account on the TmaxSoft <a href=\"https:\/\/technet.tmaxsoft.com\/en\/front\/user\/inputUser.do\" rel=\"noopener noreferrer\" target=\"_blank\">TechNet<\/a>, I&#8217;ve requested a demo license on: <a href=\"https:\/\/technet.tmaxsoft.com\/en\/front\/common\/demoPopup.do\" target=\"_blank\" rel=\"noopener noreferrer\">https:\/\/technet.tmaxsoft.com\/en\/front\/common\/demoPopup.do<\/a><\/p>\n<p>You need to now the host where you will run this as you have to provide the result of `uname -n` to get the license key. That&#8217;s a 30 days trial (longer if you don&#8217;t restart the instance) that can run everything on this host. I&#8217;ve used an Oracle Compute instance running OEL7 for this test. I&#8217;ve downloaded the Tibero 6 software installation: tibero6-bin-FS07_CS_1902-linux64\u2013166256-opt.tar.gz from <a href=\"https:\/\/technet.tmaxsoft.com\/en\/front\/download\/findDownloadList.do?cmProductCode=0301\" rel=\"noopener noreferrer\" target=\"_blank\">TmaxSoft TechNet &gt; Downloads &gt; Database &gt; Tibero &gt; Tibero 6<\/a><\/p>\n<p>For the installation, I followed the instructions from <a href=\"https:\/\/store.dimensigon.com\/deploy-tibero-database\/\">https:\/\/store.dimensigon.com\/deploy-tibero-database\/<\/a> that I do not reproduce here. Basically, you need some packages, some sysctl.conf settings for shared memory, some limits.conf settings, a user in &#8216;dba&#8217; group,&#8230; Very similar to Oracle prerequisites. Then untar the software &#8211; this installs a $TB_HOME about 1GB.<\/p>\n<h3>Update 18-MAY-2020<\/h3>\n<p>I used the old TechNet website here. Currently, you should download the software from the support website: <a href=\"https:\/\/support.tmaxsoft.com\/s\/release\/a0j1Y00000b3GAIQA2\/tibero-6\" rel=\"noopener noreferrer\" target=\"_blank\">https:\/\/support.tmaxsoft.com\/s\/release\/a0j1Y00000b3GAIQA2\/tibero-6<\/a><\/p>\n<p>And get the license key from: <a href=\"https:\/\/support.tmaxsoft.com\/s\/createrecord\/NewTrialKeyRequest\" rel=\"noopener noreferrer\" target=\"_blank\">https:\/\/support.tmaxsoft.com\/s\/createrecord\/NewTrialKeyRequest<\/a> but you need to login first. See <a href=\"https:\/\/www.tmaxsoft.com\/feature-item\/30-day-free-trial\/\" rel=\"noopener noreferrer\" target=\"_blank\">https:\/\/www.tmaxsoft.com\/feature-item\/30-day-free-trial\/<\/a> to get one.<\/p>\n<h3>Database creation<\/h3>\n<p>The first difference with Oracle is that you cannot start an instance without a valid license file:<\/p>\n<pre><code>\n$ $TB_HOME\/bin\/tb_create_db.sh\n  ********************************************************************\n* ERROR: Can't open the license file!!\n* (1) Check the license file - \/home\/tibero\/tibero6\/license\/license.xml\n  ********************************************************************\n<\/code><\/pre>\n<p>I have my trial license file and move it to $TB_HOME\/license\/license.xml<br \/>\n<a href=\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/04\/Annotation-2020-04-19-102245.jpg\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/04\/Annotation-2020-04-19-102245.jpg\" alt=\"\" width=\"1024\" height=\"351\" class=\"aligncenter size-large wp-image-38878\" \/><\/a><\/p>\n<p>The creation of the database is ready and there&#8217;s a simple tb_create_db.sh for that. First stage is starting the instance (NOMOUNT mode):<\/p>\n<pre><code>\n$ $TB_HOME\/bin\/tb_create_db.sh\nListener port = 8629\nTibero 6\nTmaxData Corporation Copyright (c) 2008-. All rights reserved.\nTibero instance started up (NOMOUNT mode).\n<\/code><\/pre>\n<p>A few information about settings is displayed:<\/p>\n<pre><code>\n+----------------------------- size -------------------------------+\n system size = 100M (next 10M)\n syssub size = 100M (next 10M)\n   undo size = 200M (next 10M)\n   temp size = 100M (next 10M)\n    usr size = 100M (next 10M)\n    log size = 50M\n+--------------------------- directory ----------------------------+\n system directory = \/home\/tibero\/tibero6\/database\/t6a\n syssub directory = \/home\/tibero\/tibero6\/database\/t6a\n   undo directory = \/home\/tibero\/tibero6\/database\/t6a\n   temp directory = \/home\/tibero\/tibero6\/database\/t6a\n    log directory = \/home\/tibero\/tibero6\/database\/t6a\n    usr directory = \/home\/tibero\/tibero6\/database\/t6a\n<\/code><\/pre>\n<p>And the creation is going\u200a-\u200athat really looks like an Oracle Database:<\/p>\n<pre><code>\n+========================== newmount sql ==========================+\n create database \"t6a\"\n  user sys identified by tibero\n  maxinstances 8\n  maxdatafiles 100\n  character set MSWIN949\n  national character set UTF16\n  logfile\n  group 1 ('\/home\/tibero\/tibero6\/database\/t6a\/log001.log') size 50M,\n  group 2 ('\/home\/tibero\/tibero6\/database\/t6a\/log002.log') size 50M,\n  group 3 ('\/home\/tibero\/tibero6\/database\/t6a\/log003.log') size 50M\n    maxloggroups 255\n    maxlogmembers 8\n    noarchivelog\n  datafile '\/home\/tibero\/tibero6\/database\/t6a\/system001.dtf' \n    size 100M autoextend on next 10M maxsize unlimited\n  SYSSUB \n  datafile '\/home\/tibero\/tibero6\/database\/t6a\/syssub001.dtf' \n    size 10M autoextend on next 10M maxsize unlimited\n  default temporary tablespace TEMP\n    tempfile '\/home\/tibero\/tibero6\/database\/t6a\/temp001.dtf'\n    size 100M autoextend on next 10M maxsize unlimited\n    extent management local autoallocate\n  undo tablespace UNDO\n    datafile '\/home\/tibero\/tibero6\/database\/t6a\/undo001.dtf'\n    size 200M\n    autoextend on next 10M maxsize unlimited\n    extent management local autoallocate\n  default tablespace USR\n    datafile  '\/home\/tibero\/tibero6\/database\/t6a\/usr001.dtf'\n    size 100M autoextend on next 10M maxsize unlimited\n    extent management local autoallocate;\n+==================================================================+\n\nDatabase created.\nListener port = 8629\nTibero 6\nTmaxData Corporation Copyright (c) 2008-. All rights reserved.\nTibero instance started up (NORMAL mode).\n<\/code><\/pre>\n<p>Then the dictionary is loaded (equivalent to catalog\/catproc):<\/p>\n<pre><code>\n\/home\/tibero\/tibero6\/bin\/tbsvr\nDropping agent table...\nCreating text packages table ...\nCreating the role DBA...\nCreating system users &amp; roles...\nCreating example users...\nCreating virtual tables(1)...\nCreating virtual tables(2)...\nGranting public access to _VT_DUAL...\nCreating the system generated sequences...\nCreating internal dynamic performance views...\nCreating outline table...\nCreating system tables related to dbms_job...\nCreating system tables related to dbms_lock...\nCreating system tables related to scheduler...\nCreating system tables related to server_alert...\nCreating system tables related to tpm...\nCreating system tables related to tsn and timestamp...\nCreating system tables related to rsrc...\nCreating system tables related to workspacemanager...\nCreating system tables related to statistics...\nCreating system tables related to mview...\nCreating system package specifications:\n    Running \/home\/tibero\/tibero6\/scripts\/pkg\/pkg_standard.sql...\n    Running \/home\/tibero\/tibero6\/scripts\/pkg\/pkg_standard_extension.sql...\n    Running \/home\/tibero\/tibero6\/scripts\/pkg\/pkg_clobxmlinterface.sql...\n    Running \/home\/tibero\/tibero6\/scripts\/pkg\/pkg_udt_meta.sql...\n    Running \/home\/tibero\/tibero6\/scripts\/pkg\/pkg_seaf.sql...\n    Running \/home\/tibero\/tibero6\/scripts\/pkg\/anydata.sql...\n    Running \/home\/tibero\/tibero6\/scripts\/pkg\/pkg_dbms_standard.sql...\n    Running \/home\/tibero\/tibero6\/scripts\/pkg\/pkg_db2_standard.sql...\n    Running \/home\/tibero\/tibero6\/scripts\/pkg\/pkg_dbms_application_info.sql...\n    Running \/home\/tibero\/tibero6\/scripts\/pkg\/pkg_dbms_aq.sql...\n    Running \/home\/tibero\/tibero6\/scripts\/pkg\/pkg_dbms_aq_utl.sql...\n    Running \/home\/tibero\/tibero6\/scripts\/pkg\/pkg_dbms_aqadm.sql...\n    Running \/home\/tibero\/tibero6\/scripts\/pkg\/pkg_dbms_assert.sql...\n    Running \/home\/tibero\/tibero6\/scripts\/pkg\/pkg_dbms_crypto.sql...\n    Running \/home\/tibero\/tibero6\/scripts\/pkg\/pkg_dbms_db2_translator.sql...\n    Running \/home\/tibero\/tibero6\/scripts\/pkg\/pkg_dbms_db_version.sql...\n    Running \/home\/tibero\/tibero6\/scripts\/pkg\/pkg_dbms_ddl.sql...\n    Running \/home\/tibero\/tibero6\/scripts\/pkg\/pkg_dbms_debug.sql...\n    Running \/home\/tibero\/tibero6\/scripts\/pkg\/pkg_dbms_debug_jdwp.sql...\n    Running \/home\/tibero\/tibero6\/scripts\/pkg\/pkg_dbms_errlog.sql...\n    Running \/home\/tibero\/tibero6\/scripts\/pkg\/pkg_dbms_expression.sql...\n    Running \/home\/tibero\/tibero6\/scripts\/pkg\/pkg_dbms_fga.sql...\n    Running \/home\/tibero\/tibero6\/scripts\/pkg\/pkg_dbms_flashback.sql...\n    Running \/home\/tibero\/tibero6\/scripts\/pkg\/pkg_dbms_geom.sql...\n    Running \/home\/tibero\/tibero6\/scripts\/pkg\/pkg_dbms_java.sql...\n    Running \/home\/tibero\/tibero6\/scripts\/pkg\/pkg_dbms_job.sql...\n    Running \/home\/tibero\/tibero6\/scripts\/pkg\/pkg_dbms_lob.sql...\n    Running \/home\/tibero\/tibero6\/scripts\/pkg\/pkg_dbms_lock.sql...\n    Running \/home\/tibero\/tibero6\/scripts\/pkg\/pkg_dbms_metadata.sql...\n    Running \/home\/tibero\/tibero6\/scripts\/pkg\/pkg_dbms_mssql_translator.sql...\n    Running \/home\/tibero\/tibero6\/scripts\/pkg\/pkg_dbms_mview.sql...\n    Running \/home\/tibero\/tibero6\/scripts\/pkg\/pkg_dbms_mview_refresh_util.sql...\n    Running \/home\/tibero\/tibero6\/scripts\/pkg\/pkg_dbms_mview_util.sql...\n    Running \/home\/tibero\/tibero6\/scripts\/pkg\/pkg_dbms_obfuscation.sql...\n    Running \/home\/tibero\/tibero6\/scripts\/pkg\/pkg_dbms_output.sql...\n    Running \/home\/tibero\/tibero6\/scripts\/pkg\/pkg_dbms_pipe.sql...\n    Running \/home\/tibero\/tibero6\/scripts\/pkg\/pkg_dbms_random.sql...\n    Running \/home\/tibero\/tibero6\/scripts\/pkg\/pkg_dbms_redefinition.sql...\n    Running \/home\/tibero\/tibero6\/scripts\/pkg\/pkg_dbms_redefinition_stats.sql...\n    Running \/home\/tibero\/tibero6\/scripts\/pkg\/pkg_dbms_repair.sql...\n    Running \/home\/tibero\/tibero6\/scripts\/pkg\/pkg_dbms_result_cache.sql...\n    Running \/home\/tibero\/tibero6\/scripts\/pkg\/pkg_dbms_rls.sql...\n    Running \/home\/tibero\/tibero6\/scripts\/pkg\/pkg_dbms_rowid.sql...\n    Running \/home\/tibero\/tibero6\/scripts\/pkg\/pkg_dbms_rsrc.sql...\n    Running \/home\/tibero\/tibero6\/scripts\/pkg\/pkg_dbms_scheduler.sql...\n    Running \/home\/tibero\/tibero6\/scripts\/pkg\/pkg_dbms_session.sql...\n    Running \/home\/tibero\/tibero6\/scripts\/pkg\/pkg_dbms_space.sql...\n    Running \/home\/tibero\/tibero6\/scripts\/pkg\/pkg_dbms_space_admin.sql...\n    Running \/home\/tibero\/tibero6\/scripts\/pkg\/pkg_dbms_sph.sql...\n    Running \/home\/tibero\/tibero6\/scripts\/pkg\/pkg_dbms_sql.sql...\n    Running \/home\/tibero\/tibero6\/scripts\/pkg\/pkg_dbms_sql_analyze.sql...\n    Running \/home\/tibero\/tibero6\/scripts\/pkg\/pkg_dbms_sql_translator.sql...\n    Running \/home\/tibero\/tibero6\/scripts\/pkg\/pkg_dbms_sqltune.sql...\n    Running \/home\/tibero\/tibero6\/scripts\/pkg\/pkg_dbms_stats.sql...\n    Running \/home\/tibero\/tibero6\/scripts\/pkg\/pkg_dbms_stats_util.sql...\n    Running \/home\/tibero\/tibero6\/scripts\/pkg\/pkg_dbms_system.sql...\n    Running \/home\/tibero\/tibero6\/scripts\/pkg\/pkg_dbms_transaction.sql...\n    Running \/home\/tibero\/tibero6\/scripts\/pkg\/pkg_dbms_types.sql...\n    Running \/home\/tibero\/tibero6\/scripts\/pkg\/pkg_dbms_utility.sql...\n    Running \/home\/tibero\/tibero6\/scripts\/pkg\/pkg_dbms_utl_tb.sql...\n    Running \/home\/tibero\/tibero6\/scripts\/pkg\/pkg_dbms_verify.sql...\n    Running \/home\/tibero\/tibero6\/scripts\/pkg\/pkg_dbms_xmldom.sql...\n    Running \/home\/tibero\/tibero6\/scripts\/pkg\/pkg_dbms_xmlgen.sql...\n    Running \/home\/tibero\/tibero6\/scripts\/pkg\/pkg_dbms_xmlquery.sql...\n    Running \/home\/tibero\/tibero6\/scripts\/pkg\/pkg_dbms_xplan.sql...\n    Running \/home\/tibero\/tibero6\/scripts\/pkg\/pkg_dg_cipher.sql...\n    Running \/home\/tibero\/tibero6\/scripts\/pkg\/pkg_htf.sql...\n    Running \/home\/tibero\/tibero6\/scripts\/pkg\/pkg_htp.sql...\n    Running \/home\/tibero\/tibero6\/scripts\/pkg\/pkg_psm_sql_result_cache.sql...\n    Running \/home\/tibero\/tibero6\/scripts\/pkg\/pkg_sys_util.sql...\n    Running \/home\/tibero\/tibero6\/scripts\/pkg\/pkg_tb_utility.sql...\n    Running \/home\/tibero\/tibero6\/scripts\/pkg\/pkg_text.sql...\n    Running \/home\/tibero\/tibero6\/scripts\/pkg\/pkg_tudiconst.sql...\n    Running \/home\/tibero\/tibero6\/scripts\/pkg\/pkg_utl_encode.sql...\n    Running \/home\/tibero\/tibero6\/scripts\/pkg\/pkg_utl_file.sql...\n    Running \/home\/tibero\/tibero6\/scripts\/pkg\/pkg_utl_tcp.sql...\n    Running \/home\/tibero\/tibero6\/scripts\/pkg\/pkg_utl_http.sql...\n    Running \/home\/tibero\/tibero6\/scripts\/pkg\/pkg_utl_url.sql...\n    Running \/home\/tibero\/tibero6\/scripts\/pkg\/pkg_utl_i18n.sql...\n    Running \/home\/tibero\/tibero6\/scripts\/pkg\/pkg_utl_match.sql...\n    Running \/home\/tibero\/tibero6\/scripts\/pkg\/pkg_utl_raw.sql...\n    Running \/home\/tibero\/tibero6\/scripts\/pkg\/pkg_utl_smtp.sql...\n    Running \/home\/tibero\/tibero6\/scripts\/pkg\/pkg_utl_str.sql...\n    Running \/home\/tibero\/tibero6\/scripts\/pkg\/pkg_utl_compress.sql...\n    Running \/home\/tibero\/tibero6\/scripts\/pkg\/pkg_text_japanese_lexer.sql...\n    Running \/home\/tibero\/tibero6\/scripts\/pkg\/pkg_dbms_tpm.sql...\n    Running \/home\/tibero\/tibero6\/scripts\/pkg\/pkg_utl_recomp.sql...\n    Running \/home\/tibero\/tibero6\/scripts\/pkg\/pkg_dbms_monitor.sql...\n    Running \/home\/tibero\/tibero6\/scripts\/pkg\/pkg_dbms_server_alert.sql...\n    Running \/home\/tibero\/tibero6\/scripts\/pkg\/pkg_dbms_ctx_ddl.sql...\n    Running \/home\/tibero\/tibero6\/scripts\/pkg\/pkg_dbms_odci.sql...\n    Running \/home\/tibero\/tibero6\/scripts\/pkg\/pkg_utl_ref.sql...\n    Running \/home\/tibero\/tibero6\/scripts\/pkg\/pkg_owa_util.sql...\n    Running \/home\/tibero\/tibero6\/scripts\/pkg\/pkg_dbms_alert.sql...\n    Running \/home\/tibero\/tibero6\/scripts\/pkg\/pkg_client_internal.sql...\n    Running \/home\/tibero\/tibero6\/scripts\/pkg\/pkg_dbms_xslprocessor.sql...\n    Running \/home\/tibero\/tibero6\/scripts\/pkg\/uda_wm_concat.sql...\n    Running \/home\/tibero\/tibero6\/scripts\/pkg\/pkg_diutil.sql...\n    Running \/home\/tibero\/tibero6\/scripts\/pkg\/pkg_dbms_xmlsave.sql...\n    Running \/home\/tibero\/tibero6\/scripts\/pkg\/pkg_dbms_xmlparser.sql...\nCreating auxiliary tables used in static views...\nCreating system tables related to profile...\nCreating internal system tables...\nCheck TPR status..\nStop TPR\nDropping tables used in TPR...\nCreating auxiliary tables used in TPR...\nCreating static views...\nCreating static view descriptions...\nCreating objects for sph:\n    Running \/home\/tibero\/tibero6\/scripts\/iparam_desc_gen.sql...\nCreating dynamic performance views...\nCreating dynamic performance view descriptions...\nCreating package bodies:\n    Running \/home\/tibero\/tibero6\/scripts\/pkg\/_pkg_db2_standard.tbw...\n    Running \/home\/tibero\/tibero6\/scripts\/pkg\/_pkg_dbms_aq.tbw...\n    Running \/home\/tibero\/tibero6\/scripts\/pkg\/_pkg_dbms_aq_utl.tbw...\n    Running \/home\/tibero\/tibero6\/scripts\/pkg\/_pkg_dbms_aqadm.tbw...\n    Running \/home\/tibero\/tibero6\/scripts\/pkg\/_pkg_dbms_assert.tbw...\n    Running \/home\/tibero\/tibero6\/scripts\/pkg\/_pkg_dbms_db2_translator.tbw...\n    Running \/home\/tibero\/tibero6\/scripts\/pkg\/_pkg_dbms_errlog.tbw...\n    Running \/home\/tibero\/tibero6\/scripts\/pkg\/_pkg_dbms_metadata.tbw...\n    Running \/home\/tibero\/tibero6\/scripts\/pkg\/_pkg_dbms_mssql_translator.tbw...\n    Running \/home\/tibero\/tibero6\/scripts\/pkg\/_pkg_dbms_mview.tbw...\n    Running \/home\/tibero\/tibero6\/scripts\/pkg\/_pkg_dbms_mview_refresh_util.tbw...\n    Running \/home\/tibero\/tibero6\/scripts\/pkg\/_pkg_dbms_mview_util.tbw...\n    Running \/home\/tibero\/tibero6\/scripts\/pkg\/_pkg_dbms_redefinition_stats.tbw...\n    Running \/home\/tibero\/tibero6\/scripts\/pkg\/_pkg_dbms_rsrc.tbw...\n    Running \/home\/tibero\/tibero6\/scripts\/pkg\/_pkg_dbms_scheduler.tbw...\n    Running \/home\/tibero\/tibero6\/scripts\/pkg\/_pkg_dbms_session.tbw...\n    Running \/home\/tibero\/tibero6\/scripts\/pkg\/_pkg_dbms_sph.tbw...\n    Running \/home\/tibero\/tibero6\/scripts\/pkg\/_pkg_dbms_sql_analyze.tbw...\n    Running \/home\/tibero\/tibero6\/scripts\/pkg\/_pkg_dbms_sql_translator.tbw...\n    Running \/home\/tibero\/tibero6\/scripts\/pkg\/_pkg_dbms_sqltune.tbw...\n    Running \/home\/tibero\/tibero6\/scripts\/pkg\/_pkg_dbms_stats.tbw...\n    Running \/home\/tibero\/tibero6\/scripts\/pkg\/_pkg_dbms_stats_util.tbw...\n    Running \/home\/tibero\/tibero6\/scripts\/pkg\/_pkg_dbms_utility.tbw...\n    Running \/home\/tibero\/tibero6\/scripts\/pkg\/_pkg_dbms_utl_tb.tbw...\n    Running \/home\/tibero\/tibero6\/scripts\/pkg\/_pkg_dbms_verify.tbw...\n    Running \/home\/tibero\/tibero6\/scripts\/pkg\/_pkg_dbms_workspacemanager.tbw...\n    Running \/home\/tibero\/tibero6\/scripts\/pkg\/_pkg_dbms_xmlgen.tbw...\n    Running \/home\/tibero\/tibero6\/scripts\/pkg\/_pkg_dbms_xplan.tbw...\n    Running \/home\/tibero\/tibero6\/scripts\/pkg\/_pkg_dg_cipher.tbw...\n    Running \/home\/tibero\/tibero6\/scripts\/pkg\/_pkg_htf.tbw...\n    Running \/home\/tibero\/tibero6\/scripts\/pkg\/_pkg_htp.tbw...\n    Running \/home\/tibero\/tibero6\/scripts\/pkg\/_pkg_text.tbw...\n    Running \/home\/tibero\/tibero6\/scripts\/pkg\/_pkg_utl_http.tbw...\n    Running \/home\/tibero\/tibero6\/scripts\/pkg\/_pkg_utl_url.tbw...\n    Running \/home\/tibero\/tibero6\/scripts\/pkg\/_pkg_utl_i18n.tbw...\n    Running \/home\/tibero\/tibero6\/scripts\/pkg\/_pkg_utl_smtp.tbw...\n    Running \/home\/tibero\/tibero6\/scripts\/pkg\/_pkg_text_japanese_lexer.tbw...\n    Running \/home\/tibero\/tibero6\/scripts\/pkg\/_pkg_dbms_tpm.tbw...\n    Running \/home\/tibero\/tibero6\/scripts\/pkg\/_pkg_utl_recomp.tbw...\n    Running \/home\/tibero\/tibero6\/scripts\/pkg\/_pkg_dbms_server_alert.tbw...\n    Running \/home\/tibero\/tibero6\/scripts\/pkg\/_pkg_dbms_xslprocessor.tbw...\nRunning \/home\/tibero\/tibero6\/scripts\/pkg\/_uda_wm_concat.tbw...\n    Running \/home\/tibero\/tibero6\/scripts\/pkg\/_pkg_dbms_xmlparser.tbw...\nCreating public synonyms for system packages...\nCreating remaining public synonyms for system packages...\nRegistering dbms_stats job to Job Scheduler...\nCreating audit event pacakge...\n    Running \/home\/tibero\/tibero6\/scripts\/pkg\/_pkg_dbms_audit_event.tbw...\nCreating packages for TPR...\n    Running \/home\/tibero\/tibero6\/scripts\/pkg\/pkg_dbms_tpr.sql...\n    Running \/home\/tibero\/tibero6\/scripts\/pkg\/_pkg_dbms_tpr.tbw...\n    Running \/home\/tibero\/tibero6\/scripts\/pkg\/_pkg_dbms_apm.tbw...\nStart TPR\nCreate tudi interface\n    Running \/home\/tibero\/tibero6\/scripts\/odci.sql...\nCreating spatial meta tables and views ...\nCreating internal system jobs...\nCreating Japanese Lexer epa source ...\nCreating internal system notice queue ...\nCreating sql translator profiles ...\nCreating agent table...\nDone.\nFor details, check \/home\/tibero\/tibero6\/instance\/t6a\/log\/system_init.log.\n<\/code><\/pre>\n<p>From this log, you can already imagine the PL\/SQL DBMS_% packages compatibility with Oracle Database: they are all there.<br \/>\nAll seems good, I have a TB_HOME and TB_SID to identify the instance:<\/p>\n<pre><code>\n**************************************************\n* Tibero Database 't6a' is created successfully on Fri Dec  6 17:23:57 GMT 2019.\n*     Tibero home directory ($TB_HOME) =\n*         \/home\/tibero\/tibero6\n*     Tibero service ID ($TB_SID) = t6a\n*     Tibero binary path =\n*         \/home\/tibero\/tibero6\/bin:\/home\/tibero\/tibero6\/client\/bin\n*     Initialization parameter file =\n*         \/home\/tibero\/tibero6\/config\/t6a.tip\n*\n* Make sure that you always set up environment variables $TB_HOME and\n* $TB_SID properly before you run Tibero.\n**************************************************\n<\/code><\/pre>\n<p>This looks very similar to Oracle Database and here is my &#8216;init.ora&#8217; equivalent:<br \/>\n<a href=\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/04\/Annotation-2020-04-19-115125.jpg\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/04\/Annotation-2020-04-19-115125.jpg\" alt=\"\" width=\"1024\" height=\"571\" class=\"aligncenter size-large wp-image-38882\" \/><\/a><br \/>\nI should add _USE_HUGE_PAGE=Y there as I don&#8217;t like to see 3GB allocated with 4k pages.<br \/>\nLooking at the instance processes shows many background Worker Processes that have several threads:<br \/>\n<a href=\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/04\/Annotation-2020-04-19-120048.jpg\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/04\/Annotation-2020-04-19-120048.jpg\" alt=\"\" width=\"1704\" height=\"582\" class=\"aligncenter size-full wp-image-38883\" \/><\/a><br \/>\nNot going into the details there, but DBWR does more than the Oracle Database Writer as it runs treads for writing to datafiles as well as writing to redo logs. RCWP is the recovery process (also used by standby databases). PEWP runs the parallel query threads. FGWP runs the foreground (session) threads.<\/p>\n<p>Tibero is similar to Oracle but not equal. Tibero has been developed in 2003 with the goal of maximum compatibility with Oracle: SQL, PL\/SQL, MVCC compatibility for easy application migration as well as architecture compatibility for easier adoption by DBA. But it was also built from scratch for modern OS and runs processes and threads. I installed Linux x86-64 but Tibero is also available for AIX, HP-UX, Solaris, Windows.<\/p>\n<h3>Connect<\/h3>\n<p>I can connect with the SYS user by attaching to the SHM when the TB_HOME and TB_SID is set to my local instance:<\/p>\n<pre><code>\nSQL&gt; Disconnected.\n[SID=t6a u@h:w]$ TB_HOME=~\/tibero6 TB_ID=t6a tbsql sys\/tibero\n\ntbSQL 6\n\nTmaxData Corporation Copyright (c) 2008-. All rights reserved.\n\nConnected to Tibero.\n<\/code><\/pre>\n<p>I can also connect though the listener (the port was mentioned at database creation):<\/p>\n<pre><code>\n[SID=t6a u@h:w]$ TB_HOME= TB_ID= tbsql sys\/tibero@localhost:8629\/t6a\n\ntbSQL 6\n\nTmaxData Corporation Copyright (c) 2008-. All rights reserved.\n\nConnected to Tibero.\n<\/code><\/pre>\n<p>Again it is similar to Oracle (like ezconnect or full connection string) but not exactly the same:<\/p>\n<p><a href=\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/04\/Annotation-2020-04-19-124857.jpg\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/04\/Annotation-2020-04-19-124857.jpg\" alt=\"\" width=\"1024\" height=\"928\" class=\"aligncenter size-large wp-image-38888\" \/><\/a><\/p>\n<h3>Similar but not a clone<\/h3>\n<p>The first time I looked at Tibero, I was really surprised how far it goes with the compatibility with Oracle Database. I&#8217;ll probably write more blog posts about it but even complex PL\/SQL packages can run without any change. Then comes the idea: is it only an API compatibility or is this software a clone of Oracle? I&#8217;ve even heard rumours that some source code must have leaked in order to reach such compatibility. I want to make it clear here: I&#8217;m 100% convinced that this database engine was written from scratch, inspired by Oracle architecture and features, and implementing the same language, dictionary packages and views, but with completely different code and internal design. When we troubleshoot Oracle we are used to see the C function stacks in trace dumps. Let&#8217;s have a look at the C functions here.<\/p>\n<p>I&#8217;ll strace the pread64 call while running a query in order to see the stack behind. I get the PID to trace:<\/p>\n<pre><code>\nselect client_pid,pid,wthr_id,os_thr_id from v$session where sid in (select sid from v$mystat);\n<\/code><\/pre>\n<p>The process for my session is: tbsvr_FGWP000 -t NORMAL -SVR_SID t6a and the PID is the Linux PID (OS_THR_ID is the thread).<br \/>\nI strace (compiled with libunwind to show the call stack):<\/p>\n<pre><code>\nstrace -k -e trace=pread64 -y -p 7075\n<\/code><\/pre>\n<p><a href=\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/04\/Annotation-2020-04-19-131125-scaled-1.jpg\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/04\/Annotation-2020-04-19-131125-scaled-1.jpg\" alt=\"\" width=\"2560\" height=\"911\" class=\"aligncenter size-full wp-image-38890\" \/><\/a><br \/>\nHere is the first call stack for the first pread64() call:<\/p>\n<pre><code>\npread64(49, \"\\4\\0\\0\\0\\2\\0\\200\\0\\261]\\2\\0\\0\\0\\1\\0\\7\\0\\0\\0\\263\\0\\0\\0l\\2\\0\\0\\377\\377\\377\\377\"..., 8192, 16384) = 8192\n &gt; \/usr\/lib64\/libpthread-2.17.so(__pread_nocancel+0x2a) [0xefc3]\n &gt; \/home\/tibero\/tibero6\/bin\/tbsvr(read_dev_ne+0x2b2) [0x14d8cd2]\n &gt; \/home\/tibero\/tibero6\/bin\/tbsvr(read_dev+0x94) [0x14d96e4]\n &gt; \/home\/tibero\/tibero6\/bin\/tbsvr(buf_read1_internal+0x2f8) [0x14da158]\n &gt; \/home\/tibero\/tibero6\/bin\/tbsvr(tcbh_read_blks_internal+0x5d8) [0x14ccf98]\n &gt; \/home\/tibero\/tibero6\/bin\/tbsvr(tcbh_read_blk_internal+0x1d) [0x14cd2dd]\n &gt; \/home\/tibero\/tibero6\/bin\/tbsvr(tcbuf_pin_read_locked+0x39c) [0x14ec99c]\n &gt; \/home\/tibero\/tibero6\/bin\/tbsvr(tcbuf_get+0x198a) [0x14f3c9a]\n &gt; \/home\/tibero\/tibero6\/bin\/tbsvr(ts_alloc_units_internal+0x256) [0x17b0a56]\n &gt; \/home\/tibero\/tibero6\/bin\/tbsvr(ts_alloc_units_from_df+0x406) [0x17b2396]\n &gt; \/home\/tibero\/tibero6\/bin\/tbsvr(ts_alloc_ext_internal+0x2ff) [0x17b5b1f]\n &gt; \/home\/tibero\/tibero6\/bin\/tbsvr(tx_sgmt_create+0x1cb) [0x1752ffb]\n &gt; \/home\/tibero\/tibero6\/bin\/tbsvr(ddl_create_dsgmt+0xc0) [0x769260]\n &gt; \/home\/tibero\/tibero6\/bin\/tbsvr(_ddl_ctbl_internal+0x155d) [0x7f86dd]\n &gt; \/home\/tibero\/tibero6\/bin\/tbsvr(ddl_create_table+0xf9) [0x7f9dd9]\n &gt; \/home\/tibero\/tibero6\/bin\/tbsvr(ddl_execute+0xf04) [0x44aa54]\n &gt; \/home\/tibero\/tibero6\/bin\/tbsvr(ddl_process_internal+0xf6a) [0x44ed0a]\n &gt; \/home\/tibero\/tibero6\/bin\/tbsvr(tbsvr_sql_process+0x4082) [0x1def92]\n &gt; \/home\/tibero\/tibero6\/bin\/tbsvr(tbsvr_msg_sql_common+0x1518) [0x1ca718]\n &gt; \/home\/tibero\/tibero6\/bin\/tbsvr(tbsvr_handle_msg_internal+0x2225) [0x1847c5]\n &gt; \/home\/tibero\/tibero6\/bin\/tbsvr(tbsvr_wthr_request_from_cl_conn+0x70a) [0x187eea]\n &gt; \/home\/tibero\/tibero6\/bin\/tbsvr(wthr_get_new_cli_con+0xc94) [0x18fea4]\n &gt; \/home\/tibero\/tibero6\/bin\/tbsvr(thread_main_chk_bitmask+0x18d) [0x1966ed]\n &gt; \/home\/tibero\/tibero6\/bin\/tbsvr(svr_wthr_main_internal+0x1393) [0x1ab2b3]\n &gt; \/home\/tibero\/tibero6\/bin\/tbsvr(wthr_init+0x80) [0xa2a5b0]\n &gt; \/usr\/lib64\/libpthread-2.17.so(start_thread+0xc5) [0x7ea5]\n &gt; \/usr\/lib64\/libc-2.17.so(clone+0x6d) [0xfe8cd]\n<\/code><\/pre>\n<p>I don&#8217;t think there is anything in common with the Oracle software code or layer architecture here, except some well known terms (segment, extent, buffer get, buffer pin,&#8230;).<\/p>\n<p>I also show a data block dump here just to get an idea:<\/p>\n<pre><code>\nSQL&gt; select dbms_rowid.rowid_absolute_fno(rowid),dbms_rowid.rowid_block_number(rowid) from demo where rownum=1;\n\nDBMS_ROWID.ROWID_ABSOLUTE_FNO(ROWID) DBMS_ROWID.ROWID_BLOCK_NUMBER(ROWID)\n------------------------------------ ------------------------------------\n                                   2                                 2908\n\nSQL&gt; alter system dump datafile 2 block 2908;\n<\/code><\/pre>\n<p>The dump is in \/home\/tibero\/tibero6\/instance\/t6a\/dump\/tracedump\/tb_dump_7029_73_31900660.trc:<\/p>\n<pre><code>\n**Dump start at 2020-04-19 14:54:46\nDUMP of BLOCK file #2 block #2908\n\n**Dump start at 2020-04-19 14:54:46\ndata block Dump[dba=02_00002908(8391516),tsn=0000.0067cf33,type=13,seqno =1]\n--------------------------------------------------------------\n sgmt_id=3220  cleanout_tsn=0000.00000000  btxcnt=2\n l1dba=02_00002903(8391511), offset_in_l1=5\n btx      xid                undo           fl  tsn\/credit\n 00  0000.00.0000  00_00000000.00000.00000  I  0000.00000000\n 01  0000.00.0000  00_00000000.00000.00000  I  0000.00000000\n--------------------------------------------------------------\nData block dump:\n  dlhdr_size=16  freespace=7792  freepos=7892  symtab_offset=0  rowcnt=4\nRow piece dump:\n rp 0 8114:  [74] flag=--H-FL--  itlidx=255    colcnt=11\n  col 0: [6]\n   0000: 05 55 53 45 52 32                               .USER2\n  col 1: [6]\n   0000: 05 49 5F 43 46 31                               .I_CF1\n  col 2: [1]\n   0000: 00                                              .\n  col 3: [4]\n   0000: 03 C2 9F CA                                     ....\n  col 4: [6]\n   0000: 05 49 4E 44 45 58                               .INDEX\n  col 5: [2]\n   0000: 01 80                                           ..\n  col 6: [9]\n   0000: 08 78 78 01 05 13 29 15 00                      .xx...)..\n  col 7: [9]\n   0000: 08 78 78 01 05 13 29 15 00                      .xx...)..\n  col 8: [20]\n   0000: 13 32 30 32 30 2D 30 31 2D 30 35 3A 31 39 3A 34 .2020-01-05:19:4\n   0010: 31 3A 32 31                                     1:21\n  col 9: [6]\n   0000: 05 56 41 4C 49 44                               .VALID\n  col 10: [2]\n   0000: 01 4E                                           .N\n<\/code><\/pre>\n<p>Even if there are obvious differences in the implementation, this really looks similar to an Oracle block format with ITL list in the block header and row pieces with flags.<\/p>\n<p>If you look for a compatible alternative to Oracle Database, you have probably found some database which try to accept the same SQL and PL\/SQL syntax. But this is not sufficient to run an application with minimal changes. Here, with Tibero I was really surprised to see how it copies the Oracle syntax, behavior and features. The dictionary views are similar, with some differences because the implementation is different. Tibero has also an equivalent of ASM and RAC. You can expect other blog posts about it, so do not hesitate to follow the <a href=\"https:\/\/www.dbi-services.com\/blog\/author\/franckpachot\/feed\">rss<\/a> or <a href=\"https:\/\/twitter.com\/FranckPachot\" rel=\"noopener noreferrer\" target=\"_blank\">twitter<\/a> feed.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>By Franck Pachot . Do you remember that time where we were able to buy IBM PC clones, cheaper than the IBM PC but fully compatible? I got the same impression when testing Tibero, the TmaxSoft relational database compatible with the Oracle Database. Many Oracle customers are looking for alternatives to the Oracle Database, because [&hellip;]<\/p>\n","protected":false},"author":27,"featured_media":13939,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[59],"tags":[1905,96,1906,1907],"type_dbi":[],"class_list":["post-13938","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-oracle","tag-alternative","tag-oracle","tag-tibero","tag-tmaxsoft"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v27.2 (Yoast SEO v27.2) - https:\/\/yoast.com\/product\/yoast-seo-premium-wordpress\/ -->\n<title>\ud2f0\ubca0\ub85c - The most compatible alternative to Oracle Database - dbi Blog<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.dbi-services.com\/blog\/tibero-i\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"\ud2f0\ubca0\ub85c - The most compatible alternative to Oracle Database\" \/>\n<meta property=\"og:description\" content=\"By Franck Pachot . Do you remember that time where we were able to buy IBM PC clones, cheaper than the IBM PC but fully compatible? I got the same impression when testing Tibero, the TmaxSoft relational database compatible with the Oracle Database. Many Oracle customers are looking for alternatives to the Oracle Database, because [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.dbi-services.com\/blog\/tibero-i\/\" \/>\n<meta property=\"og:site_name\" content=\"dbi Blog\" \/>\n<meta property=\"article:published_time\" content=\"2020-04-22T08:34:43+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/04\/Annotation-2020-04-19-102245.jpg\" \/>\n\t<meta property=\"og:image:width\" content=\"1408\" \/>\n\t<meta property=\"og:image:height\" content=\"482\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\n<meta name=\"author\" content=\"Oracle Team\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Oracle Team\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"20 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/www.dbi-services.com\/blog\/tibero-i\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/www.dbi-services.com\/blog\/tibero-i\/\"},\"author\":{\"name\":\"Oracle Team\",\"@id\":\"https:\/\/www.dbi-services.com\/blog\/#\/schema\/person\/66ab87129f2d357f09971bc7936a77ee\"},\"headline\":\"\ud2f0\ubca0\ub85c &#8211; The most compatible alternative to Oracle Database\",\"datePublished\":\"2020-04-22T08:34:43+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/www.dbi-services.com\/blog\/tibero-i\/\"},\"wordCount\":1259,\"commentCount\":0,\"image\":{\"@id\":\"https:\/\/www.dbi-services.com\/blog\/tibero-i\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/04\/Annotation-2020-04-19-102245.jpg\",\"keywords\":[\"Alternative\",\"Oracle\",\"Tibero\",\"TmaxSoft\"],\"articleSection\":[\"Oracle\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/www.dbi-services.com\/blog\/tibero-i\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.dbi-services.com\/blog\/tibero-i\/\",\"url\":\"https:\/\/www.dbi-services.com\/blog\/tibero-i\/\",\"name\":\"\ud2f0\ubca0\ub85c - The most compatible alternative to Oracle Database - dbi Blog\",\"isPartOf\":{\"@id\":\"https:\/\/www.dbi-services.com\/blog\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/www.dbi-services.com\/blog\/tibero-i\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/www.dbi-services.com\/blog\/tibero-i\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/04\/Annotation-2020-04-19-102245.jpg\",\"datePublished\":\"2020-04-22T08:34:43+00:00\",\"author\":{\"@id\":\"https:\/\/www.dbi-services.com\/blog\/#\/schema\/person\/66ab87129f2d357f09971bc7936a77ee\"},\"breadcrumb\":{\"@id\":\"https:\/\/www.dbi-services.com\/blog\/tibero-i\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.dbi-services.com\/blog\/tibero-i\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.dbi-services.com\/blog\/tibero-i\/#primaryimage\",\"url\":\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/04\/Annotation-2020-04-19-102245.jpg\",\"contentUrl\":\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/04\/Annotation-2020-04-19-102245.jpg\",\"width\":1408,\"height\":482},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.dbi-services.com\/blog\/tibero-i\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Accueil\",\"item\":\"https:\/\/www.dbi-services.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"\ud2f0\ubca0\ub85c &#8211; The most compatible alternative to Oracle Database\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/www.dbi-services.com\/blog\/#website\",\"url\":\"https:\/\/www.dbi-services.com\/blog\/\",\"name\":\"dbi Blog\",\"description\":\"\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/www.dbi-services.com\/blog\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Person\",\"@id\":\"https:\/\/www.dbi-services.com\/blog\/#\/schema\/person\/66ab87129f2d357f09971bc7936a77ee\",\"name\":\"Oracle Team\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/secure.gravatar.com\/avatar\/f711f7cd2c9b09bf2627133755b569fb5be0694810cfd33033bdd095fedba86d?s=96&d=mm&r=g\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/f711f7cd2c9b09bf2627133755b569fb5be0694810cfd33033bdd095fedba86d?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/f711f7cd2c9b09bf2627133755b569fb5be0694810cfd33033bdd095fedba86d?s=96&d=mm&r=g\",\"caption\":\"Oracle Team\"},\"url\":\"https:\/\/www.dbi-services.com\/blog\/author\/oracle-team\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"\ud2f0\ubca0\ub85c - The most compatible alternative to Oracle Database - dbi Blog","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.dbi-services.com\/blog\/tibero-i\/","og_locale":"en_US","og_type":"article","og_title":"\ud2f0\ubca0\ub85c - The most compatible alternative to Oracle Database","og_description":"By Franck Pachot . Do you remember that time where we were able to buy IBM PC clones, cheaper than the IBM PC but fully compatible? I got the same impression when testing Tibero, the TmaxSoft relational database compatible with the Oracle Database. Many Oracle customers are looking for alternatives to the Oracle Database, because [&hellip;]","og_url":"https:\/\/www.dbi-services.com\/blog\/tibero-i\/","og_site_name":"dbi Blog","article_published_time":"2020-04-22T08:34:43+00:00","og_image":[{"width":1408,"height":482,"url":"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/04\/Annotation-2020-04-19-102245.jpg","type":"image\/jpeg"}],"author":"Oracle Team","twitter_card":"summary_large_image","twitter_misc":{"Written by":"Oracle Team","Est. reading time":"20 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.dbi-services.com\/blog\/tibero-i\/#article","isPartOf":{"@id":"https:\/\/www.dbi-services.com\/blog\/tibero-i\/"},"author":{"name":"Oracle Team","@id":"https:\/\/www.dbi-services.com\/blog\/#\/schema\/person\/66ab87129f2d357f09971bc7936a77ee"},"headline":"\ud2f0\ubca0\ub85c &#8211; The most compatible alternative to Oracle Database","datePublished":"2020-04-22T08:34:43+00:00","mainEntityOfPage":{"@id":"https:\/\/www.dbi-services.com\/blog\/tibero-i\/"},"wordCount":1259,"commentCount":0,"image":{"@id":"https:\/\/www.dbi-services.com\/blog\/tibero-i\/#primaryimage"},"thumbnailUrl":"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/04\/Annotation-2020-04-19-102245.jpg","keywords":["Alternative","Oracle","Tibero","TmaxSoft"],"articleSection":["Oracle"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.dbi-services.com\/blog\/tibero-i\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.dbi-services.com\/blog\/tibero-i\/","url":"https:\/\/www.dbi-services.com\/blog\/tibero-i\/","name":"\ud2f0\ubca0\ub85c - The most compatible alternative to Oracle Database - dbi Blog","isPartOf":{"@id":"https:\/\/www.dbi-services.com\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.dbi-services.com\/blog\/tibero-i\/#primaryimage"},"image":{"@id":"https:\/\/www.dbi-services.com\/blog\/tibero-i\/#primaryimage"},"thumbnailUrl":"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/04\/Annotation-2020-04-19-102245.jpg","datePublished":"2020-04-22T08:34:43+00:00","author":{"@id":"https:\/\/www.dbi-services.com\/blog\/#\/schema\/person\/66ab87129f2d357f09971bc7936a77ee"},"breadcrumb":{"@id":"https:\/\/www.dbi-services.com\/blog\/tibero-i\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.dbi-services.com\/blog\/tibero-i\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.dbi-services.com\/blog\/tibero-i\/#primaryimage","url":"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/04\/Annotation-2020-04-19-102245.jpg","contentUrl":"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/04\/Annotation-2020-04-19-102245.jpg","width":1408,"height":482},{"@type":"BreadcrumbList","@id":"https:\/\/www.dbi-services.com\/blog\/tibero-i\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Accueil","item":"https:\/\/www.dbi-services.com\/blog\/"},{"@type":"ListItem","position":2,"name":"\ud2f0\ubca0\ub85c &#8211; The most compatible alternative to Oracle Database"}]},{"@type":"WebSite","@id":"https:\/\/www.dbi-services.com\/blog\/#website","url":"https:\/\/www.dbi-services.com\/blog\/","name":"dbi Blog","description":"","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.dbi-services.com\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Person","@id":"https:\/\/www.dbi-services.com\/blog\/#\/schema\/person\/66ab87129f2d357f09971bc7936a77ee","name":"Oracle Team","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/secure.gravatar.com\/avatar\/f711f7cd2c9b09bf2627133755b569fb5be0694810cfd33033bdd095fedba86d?s=96&d=mm&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/f711f7cd2c9b09bf2627133755b569fb5be0694810cfd33033bdd095fedba86d?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/f711f7cd2c9b09bf2627133755b569fb5be0694810cfd33033bdd095fedba86d?s=96&d=mm&r=g","caption":"Oracle Team"},"url":"https:\/\/www.dbi-services.com\/blog\/author\/oracle-team\/"}]}},"_links":{"self":[{"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/posts\/13938","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/users\/27"}],"replies":[{"embeddable":true,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/comments?post=13938"}],"version-history":[{"count":0,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/posts\/13938\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/media\/13939"}],"wp:attachment":[{"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/media?parent=13938"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/categories?post=13938"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/tags?post=13938"},{"taxonomy":"type","embeddable":true,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/type_dbi?post=13938"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}