Contrary to wild rumours on the internet, it was not a fear of the number 13 that led to a numbering jump from version 12c to version 18c. The jump was part of our new, more flexible release mechanism so that we can get fixes and enhancements to customers on a more frequent and predictable schedule. In a nutshell, smaller bundles of features and fixes, more frequently.
I won’t dwell on that – if you’re unfamiliar with the new strategy, the best place to start is MOS Note 2285040.1, which has a description and a FAQ. But in terms of (as the saying goes) eating one’s own dog food, I downloaded the 18.5 release update which came out this week, and applied it to my 18.3 installation and I thought I’d share the process.
You might be wondering: “Why am I skipping 18.4?” Well that can be summarised simply as ignorance on my part – I missed the email a couple of few months back that told me 18.4 was available You might also be wondering: “I read that there were 4 release updates per year, how come there is an 18.5?” That is a common misinterpretation. We aim to provide a release update each quarter, but we never said that this means there would only ever be 4.
Now I stress – I’m just sharing my experiences here, not claiming that this is your go-to guide for applying the release update. I was just updating 18c on a Windows laptop, not a server. You should always follow the installation documents that come with the release update. For example, I had to reboot my Windows machine a couple of times, because it had transpired that some webcam software I’d installed had opted to use the Microsoft C++ shared libraries in my 18c Oracle Home! I think we can safely assume your servers probably don’t have webcams on them!
Step 1: Download a fresh OPatch
Seriously…just do this every time. As it turned out, my OPatch was already at a high enough level to apply the release update, but for me, years ago I adopted the mindset: “If I am going to apply a patch, then download a new OPatch“. It just makes it a no-brainer.
Step 2: Shut everything down.
I am running single instance, no “rolling” patching for me.
Step 3: Unzip the patch, set the environment, and patch
C:\>set ORACLE_HOME=C:\oracle\product\18
C:\>set PATH=%ORACLE_HOME%\OPatch;%ORACLE_HOME%\perl\bin;%PATH%
C:\>set PERL5LIB=
C:\>cd \oracle\stage\29124511
C:\oracle\stage\29124511>opatch apply
Oracle Interim Patch Installer version 12.2.0.1.14
Copyright (c) 2019, Oracle Corporation. All rights reserved.
Oracle Home : C:\oracle\product\18
Central Inventory : C:\Program Files\Oracle\Inventory
from :
OPatch version : 12.2.0.1.14
OUI version : 12.2.0.4.0
Log file location : C:\oracle\product\18\cfgtoollogs\opatch\opatch2019-01-18_09-36-46AM_1.log
Verifying environment and performing prerequisite checks...
Conflicts/Supersets for each patch are:
Patch : 29124511
Conflict with 28267731
Conflict details:
C:\oracle\product\18\javavm\admin\classes.bin
C:\oracle\product\18\javavm\admin\lfclasses.bin
C:\oracle\product\18\javavm\jdk\jdk8\admin\classes.bin
C:\oracle\product\18\javavm\jdk\jdk8\admin\lfclasses.bin
C:\oracle\product\18\rdbms\admin\oracle.sym
C:\oracle\product\18\bin\oracle.exe
Bug Superset of 27783303
Super set bugs are:
27748954, 27604293, 27747869, 27984028, 27550341, 27389352, 27433163, 27538461, 27341181,....
Well…that didn’t go so well Now the first thing confused me was: “How could there be any pre-existing patch to conflict with?”. After all, this was a complete 18c installation that I had downloaded from OTN when it first became available. But then I remembered, this is 18.3. So while it’s true that I download it as a standalone complete piece of software, it is still a patched release of the database. This is so much better than the old days where if you wanted (say) version 9.2.0.8, you had to download 9.2.0.1 and then apply the patch on top of it before using the software. A listing of the patch inventory showed that I already had some patches installed with my initial fresh download.
C:\oracle\stage\29124511>opatch lsinventory
Oracle Interim Patch Installer version 12.2.0.1.14
Copyright (c) 2019, Oracle Corporation. All rights reserved.
Oracle Home : C:\oracle\product\18
Central Inventory : C:\Program Files\Oracle\Inventory
from :
OPatch version : 12.2.0.1.14
OUI version : 12.2.0.4.0
Log file location : C:\oracle\product\18\cfgtoollogs\opatch\opatch2019-01-18_09-39-23AM_1.log
Lsinventory Output file location : C:\oracle\product\18\cfgtoollogs\opatch\lsinv\lsinventory2019-01-18_09-39-23AM.txt
--------------------------------------------------------------------------------
Local Machine Information::
Hostname: gtx
ARU platform id: 233
ARU platform description:: Microsoft Windows (64-bit AMD)
Installed Top-level Products (1):
Oracle Database 18c 18.0.0.0.0
There are 1 products installed in this Oracle Home.
Interim patches (3) :
Patch 28267731 : applied on Sat Aug 18 17:34:22 AWST 2018
Unique Patch ID: 22301563
Patch description: "WINDOWS OJVM BUNDLE PATCH : 18.3.0.0.180717 (28267731)"
Created on 8 Jul 2018, 06:48:38 hrs PST8PDT
Bugs fixed:
27642235, 27952586, 27304131, 27461740, 27636900, 27539876
This patch overlays patches:
27783303
This patch needs patches:
27783303
as prerequisites
Patch 27908644 : applied on Sat Aug 18 17:31:26 AWST 2018
Unique Patch ID: 22299245
Patch description: "UPDATE 18.3 DATABASE CLIENT JDK IN ORACLE HOME TO JDK8U171"
Created on 29 Jun 2018, 02:51:19 hrs PST8PDT
Bugs fixed:
27908644
Patch 27783303 : applied on Sat Aug 18 17:25:42 AWST 2018
Unique Patch ID: 22238986
Patch description: "Windows Database Bundle Patch : 18.3.0.0.180717 (27783303)"
Created on 16 Aug 2018, 07:58:43 hrs PST8PDT
Bugs fixed:
27026401, 27994333, 27680509, 27314206, 27345231, 24925863, 27447452
26792891, 27236110, 27608669, 27670484, 27421101, 27240246, 27213140
27740844, 27616657, 18701017, 27177852, 27697092, 27379956, 26598422
27688099, 27580996, 27534509, 27602488, 27333978, 27098733, 27163313
27551855, 27012915, 27603841, 27224987, 28165545, 27259983, 27919283
28039953, 27357773, 27302730, 27263996, 27345498, 27517818, 27377219
26882126, 27396377, 27701279, 27285557, 27779886, 27739006, 27585755
27321834, 27748954, 27950708, 26646549, 26961415, 27061736, 27066519
27498477, 28174926, 21806121, 24489904, 27570318, 27365139, 27028251
27435537, 27869339, 27226913, 27192754, 27038986, 27537472, 27483974
27329812, 27356373, 27714373, 27422874, 27334648, 27339115, 25035594
27128580, 27952762, 27691717, 27534289, 27425622, 27434974, 27518227
27426363, 27352600, 26450454, 27631506, 27143882, 27346949, 27181521
27199245, 27252023, 27911160, 27365702, 27497950, 26586174, 12816839
27389352, 25287072, 27215007, 27345190, 27475272, 25634405, 27813267
27726269, 27463879, 27086406, 27283029, 27850736, 27338838, 27428790
27395404, 27924147, 27284286, 27430254, 27262945, 27250547, 27346329
27693713, 27347126, 27745220, 27341036, 27481765, 28174827, 27450355
27214085, 27503413, 27451182, 27359178, 27625274, 27587672, 28320117
27367194, 27782464, 27735534, 27396365, 27210872, 27501327, 27984028
27309182, 27520070, 27999597, 27381383, 27302415, 27378103, 27861909
27782339, 27254851, 27086821, 27101273, 27465480, 27232983, 27941514
27486253, 27489719, 27222626, 27560562, 27244785, 27458829, 27262650
27155549, 25743479, 27897639, 27615608, 27459909, 27267992, 27304936
27663370, 27602091, 27448162, 27434486, 26933599, 26928317, 27586810
27153755, 27348081, 27314390, 27786669, 27573408, 27532375, 26818960
25824236, 27563767, 27060859, 27126666, 27284499, 27210038, 25726981
9062315, 27301308, 27725967, 27452760, 28188330, 27834984, 27748321
26990202, 27811439, 27376871, 27654039, 27080748, 27333664, 28059199
27420715, 27315159, 27331374, 27398660, 27680162, 25035599, 27718914
27599689, 27595801, 26615291, 27040560, 26476244, 27801774, 27450783
27066451, 27935826, 28098865, 26226953, 27501465, 27558559, 27496806
27381656, 27299455, 27124867, 27496224, 27707544, 27163928, 27147979
27395416, 27532009, 21766220, 27727843, 27607805, 27271876, 26860285
27997875, 28204423, 27204133, 27627992, 27592466, 27395794, 27430802
27511196, 27302800, 27204476, 27941896, 27560702, 27053044, 24689376
27447687, 27451049, 27302695, 26843664, 27181537, 27744211, 27445462
26427905, 27106915, 27896388, 27812593, 27926113, 27487795, 27135647
27496308, 28239335, 27452897, 26986173, 27434050, 27513114, 27114112
27265816, 27274536, 27396624, 28090453, 27396666, 27573409, 27331069
27379846, 27270197, 27016503, 27934468, 27595973, 27410595, 27833369
27577758, 26966120, 27757979, 27434193, 27393421, 27032726, 27613080
27208953, 27538461, 27581484, 27321179, 27263677, 26898279, 27573154
27492916, 27961746, 27591842, 27868727, 27047831, 27783289, 27405242
27970265, 27333693, 27506774, 27112686, 27379233, 27471876, 27425507
28205874, 27544030, 27401637, 27740854, 27993298, 27193810, 27212208
27184253, 27288230, 27399499, 27786772, 27978668, 26423085, 27873643
27481406, 27182006, 27547732, 27889841, 27169796, 27501413, 27679488
27518310, 27545630, 27346644, 27625010, 27360126, 27378959, 27772815
27525909, 27945870, 27275136, 27321575, 28182503, 26336101, 27216224
27375260, 27249544, 27174948, 27294480, 27957892, 27774539, 27664702
27839732, 27166715, 27432355, 27257509, 27657920, 27190851, 27773602
27774320, 27508936, 27457666, 27330161, 27339396, 27092991, 27101652
27803665, 27396672, 27472969, 27579969, 27610269, 27302594, 27778433
27339495, 25724089, 27739957, 28023410, 27433163, 27222121, 27851757
28109698, 27732323, 27691809, 27503208, 26822620, 28264172, 26846077
27189611, 27222423, 28132287, 27121566, 27282707, 27133637, 27451531
27613247, 27560735, 27702244, 27341181, 28240153, 27479358, 27370933
27396357, 27153641, 26827699, 27238258, 27364916, 27307868, 27791223
27041253, 27090765, 27892488, 27034318, 27349393, 27412805, 27399762
27302960, 27679664, 27815347, 27399985, 27241247, 26654411, 27077948
26987877, 27354783, 27701795, 27304410, 27882176, 27119621, 26956033
27300007, 27339165, 28106402, 27451187, 27058530, 21547051, 28025398
27682288, 27398080, 27586895, 27679806, 27164122, 27243810, 13554903
27993289, 27504190, 26587652, 27212837, 27274143, 27768034, 27550341
27558861, 27060167, 27600706, 28022847, 27241221, 27131377, 26992964
27690578, 27747407, 27305318, 27230645, 27818871, 27346709, 28057267
27405696, 27523368, 27574335, 27526362, 27174938, 27931506, 27392187
27221900, 27797290, 28184554, 27401618, 27410300, 26313403, 27864737
27362190, 27439835, 24737581, 27368850, 27593587, 27751006, 23840305
26996813, 27625050, 27657467, 27073066, 27302711, 27453225, 27984314
27274456, 27522245, 27417186, 27469329, 27338946, 27396813, 27786699
27285244, 27692215, 27519708, 23003564, 27339483, 27783059, 26882316
27757567, 26527054, 27862636, 27563629, 27635508, 27508985, 26785169
27472898, 27971575, 28413955, 27302681, 27609819, 27345450, 27788520
27018734, 27766679, 27101527, 27906509, 27593389, 27625620, 27036408
27358232, 27335682, 23698980, 27144533, 27585800, 27458164, 22734786
27523800, 28169711, 27384222, 27723002, 27473800, 27310092, 27604293
27731346, 27365993, 27005278, 27320985, 27445330, 27649707, 27709046
27313687, 27249215, 25348956, 27065091, 26433972, 27339654, 27318988
27333658, 27533819, 27403244, 27520900, 27534651, 27030974, 27427805
27359368, 23310101, 27644757, 27314512, 27044575, 27223171, 27240570
27156355, 27528204, 27989849, 27143756, 27679961, 27110878, 25943740
27747869, 27734470, 27283960, 27682151, 27719187, 26894737, 27869283
27652302, 27182064, 27467543, 27334353, 26843558, 27840386, 27457891
27334316, 27372756, 27705761, 27484556, 27708711, 27753336, 27364891
27964051, 27503318, 27423251, 27865439, 27780562, 26731697, 27358241
27634676, 27726780, 27444727, 27441326, 27326204, 27812560, 27432338
27577122, 27177551, 27275776, 27558557, 27375542, 26299684, 27301568
27593263, 27258578, 27222938, 27703242, 27512439, 27508984, 27398223
27330158, 27807441, 27079545, 27404599, 27259386, 27688692, 28039471
27292213, 27392256, 27307934, 27617522, 27505603, 27450400, 27348707
27460675, 27238077, 27346984, 27364947, 26943660, 27236052, 27338912
27244337, 28021205, 28032758, 28033429, 27263276, 27579353, 27233563
27220610, 28099592, 27433870, 27426277, 26647619, 27847259, 25929650
27738679, 27502420, 25709124, 28045209, 27668379, 27318869, 27832643
27302777, 28072130, 27442041, 27430219, 27614272, 27930478
--------------------------------------------------------------------------------
OPatch succeeded.
The conflict was with 28267731, which is the OJVM patch. I remembered from older 12c versions that the remedy to this was to rollback the older JVM patch before applying the new one. So I ran
C:\oracle\stage\29124511>opatch rollback -id 28267731
and then downloaded the 18.5 OJVM patch (28790647) as well in readiness.
After that, everything went as planned. I applied the DB patch and then applied the 18.5 OJVM patch. The final step was to open my database (and all of the pluggable database) and run in the database-level patch changes using datapatch
Microsoft Windows [Version 10.0.17134.523]
(c) 2018 Microsoft Corporation. All rights reserved.
C:\>set ORACLE_HOME=C:\oracle\product\18
C:\>set PATH=%ORACLE_HOME%\OPatch;%ORACLE_HOME%\perl\bin;%PATH%
C:\>set PERL5LIB=
C:\>cd C:\oracle\product\18\bin
C:\oracle\product\18\bin>sqlplus / as sysdba
SQL*Plus: Release 18.0.0.0.0 - Production on Fri Jan 18 12:33:19 2019
Version 18.5.0.0.0
Copyright (c) 1982, 2018, Oracle. All rights reserved.
Connected to:
Oracle Database 18c Enterprise Edition Release 18.0.0.0.0 - Production
Version 18.5.0.0.0
SQL> alter pluggable database all open;
Pluggable database altered.
SQL> exit
Disconnected from Oracle Database 18c Enterprise Edition Release 18.0.0.0.0 - Production
Version 18.5.0.0.0
C:\oracle\product\18\bin>cd %ORACLE_HOME%/OPatch
C:\oracle\product\18\OPatch>datapatch -verbose
SQL Patching tool version 18.0.0.0.0 Production on Fri Jan 18 12:33:32 2019
Copyright (c) 2012, 2019, Oracle. All rights reserved.
Log file for this invocation: C:\oracle\cfgtoollogs\sqlpatch\sqlpatch_16792_2019_01_18_12_33_32\sqlpatch_invocation.log
Connecting to database...OK
Gathering database info...done
Note: Datapatch will only apply or rollback SQL fixes for PDBs
that are in an open state, no patches will be applied to closed PDBs.
Please refer to Note: Datapatch: Database 12c Post Patch SQL Automation
(Doc ID 1585822.1)
Bootstrapping registry and package to current versions...done
Determining current state...done
Current state of interim SQL patches:
Interim patch 28267731 (WINDOWS OJVM BUNDLE PATCH : 18.3.0.0.180717 (28267731)):
Binary registry: Not installed
PDB CDB$ROOT: Applied successfully on 23-AUG-18 10.31.18.372000 AM
PDB PDB$SEED: Applied successfully on 23-AUG-18 10.36.41.858000 AM
PDB PDB1: Applied successfully on 23-AUG-18 10.36.41.858000 AM
Interim patch 28790647 (OJVM RELEASE UPDATE: 18.5.0.0.190115 (28790647)):
Binary registry: Installed
PDB CDB$ROOT: Not installed
PDB PDB$SEED: Not installed
PDB PDB1: Not installed
Current state of release update SQL patches:
Binary registry:
18.5.0.0.0 Release_Update 1812202039: Installed
PDB CDB$ROOT:
Applied 18.3.0.0.0 Release_Update 1808132056 successfully on 23-AUG-18 10.31.18.366000 AM
PDB PDB$SEED:
Applied 18.3.0.0.0 Release_Update 1808132056 successfully on 23-AUG-18 10.36.41.852000 AM
PDB PDB1:
Applied 18.3.0.0.0 Release_Update 1808132056 successfully on 23-AUG-18 10.36.41.852000 AM
Adding patches to installation queue and performing prereq checks...done
Installation queue:
For the following PDBs: CDB$ROOT PDB$SEED PDB1
The following interim patches will be rolled back:
28267731 (WINDOWS OJVM BUNDLE PATCH : 18.3.0.0.180717 (28267731))
Patch 29124511 (Windows Database Bundle Patch : 18.5.0.0.190115 (29124511)):
Apply from 18.3.0.0.0 Release_Update 1808132056 to 18.5.0.0.0 Release_Update 1812202039
The following interim patches will be applied:
28790647 (OJVM RELEASE UPDATE: 18.5.0.0.190115 (28790647))
Installing patches...
Patch installation complete. Total patches installed: 9
Validating logfiles...done
Patch 28267731 rollback (pdb CDB$ROOT): SUCCESS
logfile: C:\oracle\cfgtoollogs\sqlpatch\28267731\22301563/28267731_rollback_DB18_CDBROOT_2019Jan18_12_34_14.log (no errors)
Patch 29124511 apply (pdb CDB$ROOT): SUCCESS
logfile: C:\oracle\cfgtoollogs\sqlpatch\29124511\22646084/29124511_apply_DB18_CDBROOT_2019Jan18_12_34_47.log (no errors)
Patch 28790647 apply (pdb CDB$ROOT): SUCCESS
logfile: C:\oracle\cfgtoollogs\sqlpatch\28790647\22646085/28790647_apply_DB18_CDBROOT_2019Jan18_12_35_21.log (no errors)
Patch 28267731 rollback (pdb PDB$SEED): SUCCESS
logfile: C:\oracle\cfgtoollogs\sqlpatch\28267731\22301563/28267731_rollback_DB18_PDBSEED_2019Jan18_12_35_23.log (no errors)
Patch 29124511 apply (pdb PDB$SEED): SUCCESS
logfile: C:\oracle\cfgtoollogs\sqlpatch\29124511\22646084/29124511_apply_DB18_PDBSEED_2019Jan18_12_35_37.log (no errors)
Patch 28790647 apply (pdb PDB$SEED): SUCCESS
logfile: C:\oracle\cfgtoollogs\sqlpatch\28790647\22646085/28790647_apply_DB18_PDBSEED_2019Jan18_12_36_07.log (no errors)
Patch 28267731 rollback (pdb PDB1): SUCCESS
logfile: C:\oracle\cfgtoollogs\sqlpatch\28267731\22301563/28267731_rollback_DB18_PDB1_2019Jan18_12_35_24.log (no errors)
Patch 29124511 apply (pdb PDB1): SUCCESS
logfile: C:\oracle\cfgtoollogs\sqlpatch\29124511\22646084/29124511_apply_DB18_PDB1_2019Jan18_12_35_41.log (no errors)
Patch 28790647 apply (pdb PDB1): SUCCESS
logfile: C:\oracle\cfgtoollogs\sqlpatch\28790647\22646085/28790647_apply_DB18_PDB1_2019Jan18_12_36_12.log (no errors)
SQL Patching tool complete on Fri Jan 18 12:36:17 2019
C:\oracle\product\18\OPatch>
C:\oracle\product\18\OPatch>
C:\oracle\product\18\OPatch>sqlplus / as sysdba
SQL*Plus: Release 18.0.0.0.0 - Production on Fri Jan 18 12:36:28 2019
Version 18.5.0.0.0
Copyright (c) 1982, 2018, Oracle. All rights reserved.
Connected to:
Oracle Database 18c Enterprise Edition Release 18.0.0.0.0 - Production
Version 18.5.0.0.0
SQL> shutdown
Database closed.
Database dismounted.
ORACLE instance shut down.
SQL> startup
ORACLE instance started.
Total System Global Area 2936010432 bytes
Fixed Size 9033408 bytes
Variable Size 1023410176 bytes
Database Buffers 1895825408 bytes
Redo Buffers 7741440 bytes
Database mounted.
Database opened.
SQL> alter pluggable database all open;
Pluggable database altered.
SQL> @?/rdbms/admin/utlrp.sql
Session altered.
TIMESTAMP
----------------------------------------------------------------------------------------------------------------------------------
COMP_TIMESTAMP UTLRP_BGN 2019-01-18 12:37:58
DOC> The following PL/SQL block invokes UTL_RECOMP to recompile invalid
DOC> objects in the database. Recompilation time is proportional to the
DOC> number of invalid objects in the database, so this command may take
DOC> a long time to execute on a database with a large number of invalid
DOC> objects.
DOC>
DOC> Use the following queries to track recompilation progress:
DOC>
DOC> 1. Query returning the number of invalid objects remaining. This
DOC> number should decrease with time.
DOC> SELECT COUNT(*) FROM obj$ WHERE status IN (4, 5, 6);
DOC>
DOC> 2. Query returning the number of objects compiled so far. This number
DOC> should increase with time.
DOC> SELECT COUNT(*) FROM UTL_RECOMP_COMPILED;
DOC>
DOC> This script automatically chooses serial or parallel recompilation
DOC> based on the number of CPUs available (parameter cpu_count) multiplied
DOC> by the number of threads per CPU (parameter parallel_threads_per_cpu).
DOC> On RAC, this number is added across all RAC nodes.
DOC>
DOC> UTL_RECOMP uses DBMS_SCHEDULER to create jobs for parallel
DOC> recompilation. Jobs are created without instance affinity so that they
DOC> can migrate across RAC nodes. Use the following queries to verify
DOC> whether UTL_RECOMP jobs are being created and run correctly:
DOC>
DOC> 1. Query showing jobs created by UTL_RECOMP
DOC> SELECT job_name FROM dba_scheduler_jobs
DOC> WHERE job_name like 'UTL_RECOMP_SLAVE_%';
DOC>
DOC> 2. Query showing UTL_RECOMP jobs that are running
DOC> SELECT job_name FROM dba_scheduler_running_jobs
DOC> WHERE job_name like 'UTL_RECOMP_SLAVE_%';
DOC>#
PL/SQL procedure successfully completed.
TIMESTAMP
----------------------------------------------------------------------------------------------------------------------------------
COMP_TIMESTAMP UTLRP_END 2019-01-18 12:38:01
DOC> The following query reports the number of invalid objects.
DOC>
DOC> If the number is higher than expected, please examine the error
DOC> messages reported with each object (using SHOW ERRORS) to see if they
DOC> point to system misconfiguration or resource constraints that must be
DOC> fixed before attempting to recompile these objects.
DOC>#
OBJECTS WITH ERRORS
-------------------
0
DOC> The following query reports the number of exceptions caught during
DOC> recompilation. If this number is non-zero, please query the error
DOC> messages in the table UTL_RECOMP_ERRORS to see if any of these errors
DOC> are due to misconfiguration or resource constraints that must be
DOC> fixed before objects can compile successfully.
DOC> Note: Typical compilation errors (due to coding errors) are not
DOC> logged into this table: they go into DBA_ERRORS instead.
DOC>#
ERRORS DURING RECOMPILATION
---------------------------
0
Function created.
PL/SQL procedure successfully completed.
Function dropped.
PL/SQL procedure successfully completed.
SQL>
================================
And that was all there was to it. I’ve now picked up over a 1000 fixes and improvements to the software. If you are one of those people who likes to patch rarely, I strongly recommend you have a re-think and take a closer look at the release update cycle. We want to get you better software, faster.
Enjoy your 18.5 release!
Recent comments
1 year 3 weeks ago
1 year 15 weeks ago
1 year 20 weeks ago
1 year 20 weeks ago
1 year 25 weeks ago
1 year 46 weeks ago
2 years 14 weeks ago
2 years 44 weeks ago
3 years 28 weeks ago
3 years 29 weeks ago