[{"data":1,"prerenderedAt":489},["ShallowReactive",2],{"projects-all":3},[4,105,185,266,341,397],{"id":5,"title":6,"body":7,"category":85,"client":6,"cover":86,"description":87,"extension":88,"featured":89,"meta":90,"navigation":89,"order":91,"path":92,"role":93,"seo":94,"stem":95,"subtitle":96,"tech":97,"year":103,"__hash__":104},"projects\u002Fprojects\u002Fjakarta-smart-city.md","Jakarta Smart City",{"type":8,"value":9,"toc":77},"minimark",[10,15,19,23,70,74],[11,12,14],"h2",{"id":13},"overview","Overview",[16,17,18],"p",{},"Jakarta Smart City runs a centralized Master Data Management (MDM) platform that ingests and reconciles data from dozens of agencies across the city government. The system needed a database backbone that could survive a node failure without downtime and act as a reliable staging ground for the MDM data integration flow.",[11,20,22],{"id":21},"approach","Approach",[24,25,26,35,42,49,56,63],"ul",{},[27,28,29,30,34],"li",{},"Implemented ",[31,32,33],"strong",{},"Oracle Real Application Cluster (RAC) 2-node"," on VM infrastructure for high availability.",[27,36,37,38,41],{},"Stood up a ",[31,39,40],{},"staging database"," as the entry point for MDM integration — designed schemas, ingestion patterns, and reconciliation rules.",[27,43,44,45,48],{},"Built and rehearsed ",[31,46,47],{},"backup and recovery procedures"," to guarantee data restoration within the agreed RTO\u002FRPO.",[27,50,51,52,55],{},"Conducted ",[31,53,54],{},"regular tuning"," (memory, I\u002FO, SQL plans) to prevent ingest-time bottlenecks.",[27,57,58,59,62],{},"Established ",[31,60,61],{},"log-based anomaly monitoring"," to surface issues before they became incidents.",[27,64,65,66,69],{},"Scheduled regular ",[31,67,68],{},"patching and security updates"," without disrupting MDM consumers.",[11,71,73],{"id":72},"outcome","Outcome",[16,75,76],{},"A production-grade Oracle RAC environment that kept Jakarta's MDM platform available throughout multi-year operation, with documented runbooks the operations team could execute independently.",{"title":78,"searchDepth":79,"depth":79,"links":80},"",4,[81,83,84],{"id":13,"depth":82,"text":14},2,{"id":21,"depth":82,"text":22},{"id":72,"depth":82,"text":73},"database",null,"Designed and operated an Oracle RAC 2-node cluster and staging database for Jakarta's Master Data Management initiative.","md",true,{},1,"\u002Fprojects\u002Fjakarta-smart-city","Database Administrator",{"title":6,"description":87},"projects\u002Fjakarta-smart-city","Implementing and Maintaining Oracle Database Solutions",[98,99,100,101,102],"Oracle","Oracle RAC","MDM","VM","Linux","2022–2024","N9C65rtDShGqMicSWcTVSOXeVNejoLDyPEJeX_ky1Ng",{"id":106,"title":107,"body":108,"category":85,"client":172,"cover":86,"description":173,"extension":88,"featured":89,"meta":174,"navigation":89,"order":82,"path":175,"role":93,"seo":176,"stem":177,"subtitle":178,"tech":179,"year":183,"__hash__":184},"projects\u002Fprojects\u002Fjne-data-center-relocation.md","JNE — Data Center Relocation",{"type":8,"value":109,"toc":167},[110,112,115,117,122,130,135,143,148,162,164],[11,111,14],{"id":13},[16,113,114],{},"JNE Express needed to relocate production database workloads from a legacy data center to a new facility. Some servers shared the same endian format as the target hardware; others required a cross-endian migration. Either way, downtime had to be kept to a tight cut-off window during low-traffic hours.",[11,116,22],{"id":21},[16,118,119],{},[31,120,121],{},"Same-endian path — Oracle Data Guard switchover",[24,123,124,127],{},[27,125,126],{},"Created Oracle Data Guard (ODG) with the old DC as primary and the new DC as standby.",[27,128,129],{},"Verified that ODG was fully synchronized and gap-free before initiating the switchover.",[16,131,132],{},[31,133,134],{},"Cross-endian path — Data Pump migration",[24,136,137,140],{},[27,138,139],{},"For databases moving from big-endian to little-endian platforms, executed migration via Data Pump export\u002Fimport.",[27,141,142],{},"Handled data lag during the export-import window with scheduled jobs and procedural catch-up.",[16,144,145],{},[31,146,147],{},"Cut-off and validation",[24,149,150,153,156,159],{},[27,151,152],{},"After confirming zero lag, performed the production cut-off and DB switchover to the new data center.",[27,154,155],{},"Verified connectivity and access from every dependent service.",[27,157,158],{},"Ran stress tests and load tests against the new environment.",[27,160,161],{},"Delivered post-migration documentation and evaluation reports.",[11,163,73],{"id":72},[16,165,166],{},"Both migration paths completed within their cut-off windows. The new data center took over production traffic without data loss, and performance benchmarks met or exceeded the baseline.",{"title":78,"searchDepth":79,"depth":79,"links":168},[169,170,171],{"id":13,"depth":82,"text":14},{"id":21,"depth":82,"text":22},{"id":72,"depth":82,"text":73},"JNE Express","Migrated production Oracle databases from an old data center to a new one using Data Guard for same-endian servers and Data Pump for cross-endian migrations.",{},"\u002Fprojects\u002Fjne-data-center-relocation",{"title":107,"description":173},"projects\u002Fjne-data-center-relocation","End-to-end database migration across data centers with mixed endian formats",[98,180,181,182],"Oracle Data Guard","Data Pump","Cross-endian","2024","SNH03XpXK58DWvp8Gf5oSf9IQzl7z3ty7rxF8Z4X_94",{"id":186,"title":187,"body":188,"category":85,"client":252,"cover":86,"description":253,"extension":88,"featured":89,"meta":254,"navigation":89,"order":255,"path":256,"role":93,"seo":257,"stem":258,"subtitle":259,"tech":260,"year":264,"__hash__":265},"projects\u002Fprojects\u002Faskrindo-database-stability.md","Asuransi Kredit Indonesia (Askrindo)",{"type":8,"value":189,"toc":247},[190,192,195,197,202,213,218,232,237,242,244],[11,191,14],{"id":13},[16,193,194],{},"Askrindo's database operations were fighting fires rather than preventing them. The engagement focused on identifying recurring issues, applying corrective actions, and building a preventive maintenance regime that left the systems calmer and more predictable.",[11,196,22],{"id":21},[16,198,199],{},[31,200,201],{},"Corrective",[24,203,204,207,210],{},[27,205,206],{},"Identified performance anomalies via log monitoring and routine reporting.",[27,208,209],{},"Applied corrective fixes for detected disruptions or failures.",[27,211,212],{},"Performed targeted tuning to relieve specific bottlenecks.",[16,214,215],{},[31,216,217],{},"Preventive",[24,219,220,223,226,229],{},[27,221,222],{},"Designed backup and recovery procedures with verified restoration paths.",[27,224,225],{},"Applied security patches and version updates on a defined cadence.",[27,227,228],{},"Scheduled and executed preventive maintenance windows.",[27,230,231],{},"Ran periodic audits to verify compliance with operating procedures.",[16,233,234],{},[31,235,236],{},"Documentation",[24,238,239],{},[27,240,241],{},"Captured every corrective action and preventive routine in evaluation-ready reports.",[11,243,73],{"id":72},[16,245,246],{},"A year of progressively fewer fire-drills, with backup, patching, and audit routines that the in-house team could carry forward without external help.",{"title":78,"searchDepth":79,"depth":79,"links":248},[249,250,251],{"id":13,"depth":82,"text":14},{"id":21,"depth":82,"text":22},{"id":72,"depth":82,"text":73},"PT Asuransi Kredit Indonesia","Year-long engagement establishing corrective and preventive routines that turned a reactive database operation into a predictable one.",{},3,"\u002Fprojects\u002Faskrindo-database-stability",{"title":187,"description":253},"projects\u002Faskrindo-database-stability","Corrective Actions & Preventive Planning for Database Stability",[98,261,262,263],"Backup & Recovery","Performance Tuning","Patching","Nov 2023 – Nov 2024","QvCbz1XMljOcAck3DAVHXJajTEHDo42dEacrqhbSUn0",{"id":267,"title":268,"body":269,"category":85,"client":268,"cover":86,"description":330,"extension":88,"featured":89,"meta":331,"navigation":89,"order":79,"path":332,"role":93,"seo":333,"stem":334,"subtitle":335,"tech":336,"year":339,"__hash__":340},"projects\u002Fprojects\u002Fbss-database-upgrade.md","Bank Sahabat Sampoerna",{"type":8,"value":270,"toc":325},[271,273,276,278,283,291,296,307,312,320,322],[11,272,14],{"id":13},[16,274,275],{},"Running production banking workloads on Oracle 11g had become a compliance and support risk. BSS needed to move to 19c while keeping the upgrade window narrow and the rollback path open.",[11,277,22],{"id":21},[16,279,280],{},[31,281,282],{},"Pre-upgrade",[24,284,285,288],{},[27,286,287],{},"Captured a full backup of the 11g database and verified its integrity end-to-end.",[27,289,290],{},"Prepared the target Oracle 19c environment — installation, configuration, parameter sizing.",[16,292,293],{},[31,294,295],{},"Migration",[24,297,298,301,304],{},[27,299,300],{},"Used Data Pump (export\u002Fimport) to move data from 11g to 19c.",[27,302,303],{},"Validated schema and object compatibility between versions before and after import.",[27,305,306],{},"Tested every dependent service against the 19c target before declaring success.",[16,308,309],{},[31,310,311],{},"Post-upgrade",[24,313,314,317],{},[27,315,316],{},"Tuned the 19c instance: memory targets, optimizer parameters, redo sizing.",[27,318,319],{},"Documented the upgrade procedure and tuning decisions for repeatability.",[11,321,73],{"id":72},[16,323,324],{},"19c took over within the planned window. The post-upgrade tuning pass cut query latency on the heavy reporting workloads, and the documentation has since been reused for similar customer engagements.",{"title":78,"searchDepth":79,"depth":79,"links":326},[327,328,329],{"id":13,"depth":82,"text":14},{"id":21,"depth":82,"text":22},{"id":72,"depth":82,"text":73},"End-to-end Oracle 11g → 19c upgrade for a production banking environment, with schema validation, tuning, and rollback safety.",{},"\u002Fprojects\u002Fbss-database-upgrade",{"title":268,"description":330},"projects\u002Fbss-database-upgrade","Upgrading Oracle from 11g to 19c without breaking the bank",[337,338,181,262],"Oracle 11g","Oracle 19c","2023","cn9lugcK8uU3FvxyzKUH-WJJzFYO2PrtKuQtlID041U",{"id":342,"title":343,"body":344,"category":85,"client":383,"cover":86,"description":384,"extension":88,"featured":385,"meta":386,"navigation":89,"order":387,"path":388,"role":93,"seo":389,"stem":390,"subtitle":391,"tech":392,"year":264,"__hash__":396},"projects\u002Fprojects\u002Fbpkd-dki-jakarta-maintenance.md","BPKD DKI Jakarta",{"type":8,"value":345,"toc":378},[346,348,351,353,373,375],[11,347,14],{"id":13},[16,349,350],{},"A managed-service style engagement: keep BPKD's databases healthy, available, and audit-ready every day, with no surprises.",[11,352,22],{"id":21},[24,354,355,358,361,364,367,370],{},[27,356,357],{},"Daily monitoring to catch anomalies before users notice them.",[27,359,360],{},"Regular performance tuning to keep workloads ahead of bottlenecks.",[27,362,363],{},"Scheduled backups, with periodic recovery drills to verify restore time.",[27,365,366],{},"Disciplined patching and upgrade cycles to maintain security posture and vendor compatibility.",[27,368,369],{},"Active maintenance of the standby database — synchronization checks and replication lag monitoring.",[27,371,372],{},"Documented monthly maintenance reports covering upgrades, corrective actions, and findings.",[11,374,73],{"id":72},[16,376,377],{},"A predictable, auditable database operation. The standby was demonstrably ready to take over, and monthly reporting gave leadership a clear picture of system health.",{"title":78,"searchDepth":79,"depth":79,"links":379},[380,381,382],{"id":13,"depth":82,"text":14},{"id":21,"depth":82,"text":22},{"id":72,"depth":82,"text":73},"BPKD Provinsi DKI Jakarta","Day-in, day-out database operations for the Jakarta provincial financial agency — monitoring, patching, standby health, and reporting.",false,{},5,"\u002Fprojects\u002Fbpkd-dki-jakarta-maintenance",{"title":343,"description":384},"projects\u002Fbpkd-dki-jakarta-maintenance","Continuous Database Support and Maintenance",[98,393,394,395],"Standby","Data Replication","Monitoring","S1NaaRggr7Uw6IXCGw0VUveaRpjiv6FwFLSIqcLWCKM",{"id":398,"title":399,"body":400,"category":471,"client":472,"cover":86,"description":473,"extension":88,"featured":385,"meta":474,"navigation":89,"order":475,"path":476,"role":477,"seo":478,"stem":479,"subtitle":480,"tech":481,"year":487,"__hash__":488},"projects\u002Fprojects\u002Fbri-anti-money-laundry.md","BRI — Anti Money Laundry",{"type":8,"value":401,"toc":466},[402,404,407,409,414,419,424,435,440,448,453,461,463],[11,403,14],{"id":13},[16,405,406],{},"BRI's Anti Money Laundry program required reliable data pipelines that could pull from many source systems, stage and reconcile, then deliver clean data to AML detection workloads. The pipelines needed to be repeatable, observable, and aligned with the regulatory data model.",[11,408,22],{"id":21},[16,410,411],{},[31,412,413],{},"Data modeling",[24,415,416],{},[27,417,418],{},"Designed staging tables in Hive to hold raw source data prior to processing.",[16,420,421],{},[31,422,423],{},"Pipelines",[24,425,426,429,432],{},[27,427,428],{},"Wrote Python scripts using Spark to integrate and transform data inside Hive.",[27,430,431],{},"Built automated ETL pipelines moving data from staging into AML target tables.",[27,433,434],{},"Tested and debugged each pipeline path end-to-end.",[16,436,437],{},[31,438,439],{},"Performance & observability",[24,441,442,445],{},[27,443,444],{},"Tuned Spark configurations and ETL stages for production throughput.",[27,446,447],{},"Implemented logging and monitoring around ETL activity so issues surfaced fast.",[16,449,450],{},[31,451,452],{},"Collaboration",[24,454,455,458],{},[27,456,457],{},"Worked alongside the AML team and stakeholders to make sure data semantics matched regulatory requirements.",[27,459,460],{},"Produced technical documentation covering processes, architecture, and configuration.",[11,462,73],{"id":72},[16,464,465],{},"Repeatable, monitored pipelines that AML analysts could trust — and that operations could troubleshoot without paging the original author.",{"title":78,"searchDepth":79,"depth":79,"links":467},[468,469,470],{"id":13,"depth":82,"text":14},{"id":21,"depth":82,"text":22},{"id":72,"depth":82,"text":73},"data","Bank Rakyat Indonesia","Built automated ETL pipelines that move raw data through Hive staging into AML-ready target tables, with monitoring and documentation.",{},6,"\u002Fprojects\u002Fbri-anti-money-laundry","Data Engineer",{"title":399,"description":473},"projects\u002Fbri-anti-money-laundry","Hive + Spark ETL pipelines for AML data integration",[482,483,484,485,486],"Hive","Apache Spark","Python","ETL","AML","2023–2024","qoXdH08FPbyYbmcoUoFzgrPIRVT4SqeV-cPfRIsa2yE",1780137747303]