tab

Vegetables that save lives

If you only owned the ground you stood on, how would you make the most out of it? A creative idea becomes a sustainable reality.




tab

Our Easter table

Easter provides an opportunity to share with a neighbour.




tab

Marriage, fish and taboos

In Tongwa village husbands and wives don't know how to love each other. A young couple is working to change that.




tab

Developing 'Tabithas'

OM Zambia develops women through skills training in sewing, cooking, embroidery and more to bring change to communities.




tab

The Lord establishes our steps

As workers wonder how to reach people with the good news, they find God has already prepared the way.




tab

Oncologist stabbed at Chennai govt hospital ‘by 26-year-old whose mother is undergoing cancer treatment’ - The Indian Express

  1. Oncologist stabbed at Chennai govt hospital ‘by 26-year-old whose mother is undergoing cancer treatment’  The Indian Express
  2. Video: Chennai man calmly walks away after stabbing doctor, wipes knife  India Today
  3. Indian Medical Association condemns brutal attack on doctor in Chennai  The New Indian Express
  4. Daylight assault on doctor inside Chennai hospital leaves medical fraternity in shock  The Hindu
  5. 'No law and order': BJP, AIADMK attack ruling DMK after government doctor stabbed in Chennai  The Times of India





tab

Some Ideas On How To Choose The Best Suitable Name Badges Depending On The Organization

 

In today's market name badges are available in varying types from which the organizations can choose the one that perfectly meets their requirement. Generally these badges are made using three basic...




tab

Patient's son stabs doctor 7 times in Chennai hospital

A medical oncologist at the Kalaignar Centenary Super Speciality Hospital in Chennai was stabbed seven times on Wednesday by the son of a patient allegedly over grievances on treatment to his mother at the same facility, a hospital official said.




tab

Lighthouse Trails Publishing - Looking Back at 2011 and Looking Ahead at 2012 - "HarperCollins Buys Thomas Nelson, Will Control 50% of Christian Publishing Market" - And many of the more established Christian publishers have been bought out by h

As Lighthouse Trails Publishing (the publishing arm of Lighthouse Trails Research Project) soon nears the end of our 10th year (10 years this coming March), we'd like to take a moment to ponder 2011, which was a busy year for us. It's not easy being a small publisher in today's western society where book reading is being slowly squeezed out of many people's lives by the Internet, television, radio, and a host of other technological inventions. Not only that, small publishing houses must compete with the large houses that seem to have marketing budgets that keep them selling thousands, if not millions, of books. And many of the more established Christian publishers have been bought out by huge secular corporations giving their marketing budgets even more clout. An article in Christianity Today this past fall titled "HarperCollins Buys Thomas Nelson, Will Control 50% of Christian Publishing Market" is a case in point. HarperCollins bought Zondervan in 1988. Thomas Nelson and Zondervan are Christian publishing's two largest publishing house. -- But in spite of the huge challenge it is for small publishers to stay in business, Lighthouse Trails is still here after nearly a decade. We believe that God has continued to provide for us; and we thank Him for giving us the wisdom to keep our overhead small, live and work as simply and frugally as we can, and never lower our standards from what we believe they should be just so we can sell more books. We'll never be a Thomas Nelson or Zondervan (we think that might be a good thing considering their move toward contemplative and emerging), but we hope and pray we can be around another ten years and represent even more authors than we already have who have biblical and personal integrity.



  • Christian Church History Study
  • 4. 1881 A.D. to Present (2012) - Corrupt modern bible translations and compromised Seminaries and Universities

tab

What's Wrong With The Church - Round Table Discussion by RemnantXRadio (Mp3)

On this episode of Remnant X Radio, Brad the Nephilimkiller will be hosting another round table discussion on "What's Wrong With The Church." He will be joined by Dana and Shawn, our friends from Ohio! Please plan to join us as we discuss the failure of the American church.




tab

New Webinar Added: Assessment of Treatment Response to Established and Novel Therapies in Glioblastoma Patients using Metabolic and Physiologic MR Imaging Techniques




tab

Tables

In the next few minutes, I will show you how to do some simple stuff with tables!

Before I explain this table to you, here's the code I wrote to give me the table:

<TABLE>
<CAPTION>Veggies!</CAPTION>

<TR>
<TD>Green Beans</TD>
<TD>Corn</TD>
<TD>Cucumber</TD>
</TR>

<TR>
<TD>Lettuce</TD>
<TD>Squash</TD>
<TD>Celery</TD>
</TR>

<TR>
<TD>Onion</TD>
<TD>Asparagus</TD>
<TD>Carrots</TD>
</TR>

</TABLE>

Now, don't be worried by this. It looks strange, but look again. There's only 4 commands being used over & over. Here's what we use:

<TABLE> starts and ends the whole thing.

<CAPTION> and </CAPTION> places a caption over your table. The caption will be bolded and centered.

<TR> is used when you want a new Table Row to start. Notice that you need to end every table row with an </TR>. See that above?

<TD> denotes Table Data. This goes in front of every piece of information you want in a cell. You need to end every one that you open with a </TD>. See how it's done above.

And finally you finish with </TABLE>.

Now some more stuff to do with tables!

Here's the same table we worked with before but with more code added.

<TABLE CELLSPACING="1" CELLPADDING="1" BORDER="3">
<CAPTION>Veggies!</CAPTION>

<TR>
<TD>Green Beans</TD>
<TD>Corn</TD>
<TD>Cucumber</TD>
</TR>

<TR>
<TD>Lettuce</TD>
<TD>Squash</TD>
<TD>Celery</TD>
</TR>

<TR>
<TD>Onion</TD>
<TD>Asparagus</TD>
<TD>Carrots</TD>
</TR>

</TABLE>

Now, you're using the 3 new commands listed below :

CELLSPACING (all one word) gives the amount of space between cells.

CELLPADDING (all one word) gives the amount of space (or padding) between the cell border and the cell contents. Note the cell border walls tend to fill out. A higher number fills out more. Try a few different settings to see what looks best.

BORDER tells the table how large the border should be. This is in terms of pixels. Try different numbers. I happen to like the look of BORDER=3. BORDER=0 gets rid of the borders altogether.

Now, we'll go into more uses for the table, including, not only entire page design/layout, but color as well.

For starters, let's take a look at a regular table:

<TABLE BORDER="0">
<TR><TD>
</TD></TR></TABLE>

Now, if you want the background color of your whole table to be the same, you'd put the code within the start tag, like so:

<TABLE BGCOLOR="#FFFFFF">

Same thing with a background image:

<TABLE BACKGROUND="image.gif">

Now, if you just want to color one cell, you'd do this:

<TABLE BORDER="0">
<TR><TD BGCOLOR="#FFFFFF">
</TD></TR></TABLE>

Or, for a one celled background image:

<TD BACKGROUND="image.gif">

With the TD attributes, you can have every cell be a different color or background image. With this in mind, you can use tables in your whole page design & layout.

I hope this tables tutorial has been helpful. Happy table building!




tab

Ancient Assyrian Tablet Reveals Biodiversity

In a groundbreaking discovery, archaeologists have unearthed an ancient relic that offers a vivid snapshot of life nearly 3,000 years ago. However, it wasn't a precious gem, intricate artifact, or a hidden scripture, but rather a seemingly mundane brick.




tab

Astrasana and Clever Leaves Partner to Establish International Supply Agreement For Medical Cannabis Extracts in Czech Republic and Switzerland




tab

Unforgettable Hotel On Karon Beach

Apex Hotel Group announces an official opening date for Phoenix Karon Beach Hotel's. The hotel is located on Patak Road (Karon Beach) which is opposite to Karon Park. And Just a minute walk to must-see attraction such as Karon Beach.




tab

NetBSD: the portable, lightweight, and robust UNIX-like operating system

NetBSD is an open-source, Unix-like operating system known for its portability, lightweight design, and robustness across a wide array of hardware platforms. Initially released in 1993, NetBSD was one of the first open-source operating systems based on the Berkeley Software Distribution (BSD) lineage, alongside FreeBSD and OpenBSD. NetBSD’s development has been led by a collaborative community and is particularly recognized for its “clean” and well-documented codebase, a factor that has made it a popular choice among users interested in systems programming and cross-platform compatibility. ↫ André Machado I’m not really sure what to make of this article, since it mostly reads like an advertisement for NetBSD, but considering NetBSD is one of the lesser-talked about variants of an operating system family that already sadly plays second fiddle to the Linux behemoth, I don’t think giving it some additional attention is really hurting anybody. The article is still gives a solid overview of the history and strengths of NetBSD, which makes it a good introduction. I have personally never tried NetBSD, but it’s on my list of systems to try out on my PA-RISC workstation since from what I’ve heard it’s the only BSD which can possibly load up X11 on the Visualize FX10pro graphics card it has (OpenBSD can only boot to a console on this GPU). While I could probably coax some cobbled-together Linux installation into booting X11 on it, where’s the fun in that? Do any of you lovely readers use NetBSD for anything? FreeBSD and even OpenBSD are quite well represented as general purpose operating systems in the kinds of circles we all frequent, but I rarely hear about people using NetBSD other than explicitly because it supports some outdated, arcane architecture in 2024.




tab

Improving Steam Client stability on Linux: setenv and multithreaded environments

Speaking of Steam, the Linux version of Valve’s gaming platform has just received a pretty substantial set of fixes for crashes, and Timothee “TTimo” Besset, who works for Valve on Linux support, has published a blog post with more details about what kind of crashes they’ve been fixing. The Steam client update on November 5th mentions “Fixed some miscellaneous common crashes.” in the Linux notes, which I wanted to give a bit of background on. There’s more than one fix that made it in under the somewhat generic header, but the one change that made the most significant impact to Steam client stability on Linux has been a revamping of how we are approaching the setenv and getenv functions. One of my colleagues rightly dubbed setenv “the worst Linux API”. It’s such a simple, common API, available on all platforms that it was a little difficult to convince ourselves just how bad it is. I highly encourage anyone who writes software that will run on Linux at some point to read through “RachelByTheBay”‘s very engaging post on the subject. ↫ Timothee “TTimo” Besset This indeed seems to be a specific Linux problem, and due to the variability in Linux systems – different distributions, extensive user customisation, and so on – debugging information was more difficult to parse than on Windows and macOS. After a lot of work grouping the debug information to try and make sense of it all, it turned out that the two functions in question were causing issues in threads other than those that used them. They had to resort to several solutions, from reducing the reliance setenv and refactoring it with exevpe, to reducing the reliance on getenv through caching, to introducing “an ‘environment manager’ that pre-allocates large enough value buffers at startup for fixed environment variable names, before any threading has started”. It was especially this last one that had a major impact on reducing the number of crashes with Steam on Linux. Besset does note that these functions are still used far too often, but that at this point it’s out of their control because that usage comes from the libraries of the operating system, like x11, xcb, dbus, and so on. Besset also mentions that it would be much better if this issue can be addressed in glibc, and in the comments, a user by the name of Adhemerval reports that this is indeed something the glibc team is working on.




tab

Sales, Profitability Are Up For Small Businesses As 2016 Ends

U.S. small businesses are wrapping up 2016 with stronger sales and improved profitability.

Businesses with less than $10 million in annual revenues have experienced, on average, 7.3 percent annual sales growth during 2016, according to a financial statement analysis by Sageworks, a financial information company. That represents the fifth consecutive year that sales have grown more than 7 percent.

complete article




tab

6 Tools You Need to Make 2017 Your Most Profitable Year Ever

Getting there starts with breaking down profit into its components and using six tools to move those pieces in the right direction.

Profit is revenue minus costs. But to boost profit, it helps to break it down further into gross profit -- price times quantity minus variable costs (e.g., costs that increase with each unit of product you sell) -- minus fixed costs (e.g., salaries, benefits, rent, and utilities).

complete article




tab

The 15 Most Profitable Small-Business Industries

Thinking about launching a new business? Here is where to look to for high profit margins.

complete article




tab

Is Your Small Business Achieving Profitable Growth?

Very few entrepreneurs have an accounting or finance background. Here are four tips to ensure your small business is achieving profitable growth.

Most small business owners start their own business because they have a passion for something, a new idea, want to be their own boss or are seeking more financial stability and/or earning potential. However, very few entrepreneurs have an accounting or finance background.

complete article




tab

These Shark Tank entrepreneurs turned a class project into a profitable small business

The loyalty to the series clearly inspired a smart pitch, because it didn't take long for the Sharks to warm up to the idea. Plus, offering cold beers in customized Kanga coolers didn't hurt.

complete article




tab

Immutability and Safety

Work in clojure for any length of time, and you must get used to the idea that data structures are immutable. For programmers coming from imperative languages this can be jarring, (no loop counters? recursion? wtf?) but after a while, you start to get it, then you start to like it, then you start to rely on it - or at least I have.

To such an extent that it's jarring not to have them. After a recent javascript coding session, I tweeted: "clojure's immutability has forever spoiled me - destructive operations in other langs feel like bugs now."

This prompted Joshua Kerevsky to ask me via email to elaborate, as he has been talking about safety in programming lately. This is a revision of my answer...

Clojure1 is safer (in this sense) because there are never any side-effects when working with data. Languages with side-effects on data (i.e. pretty much every other language I've used) require the programmer to keep a mental model of application state and/or adopt defensive programming styles to avoid bugs caused by them.

The idea is illustrated by these two examples (I used chrome console and the leiningen repl to run them):

javascript:

clojure:

Javascript arrays are mostly (but not always) manipulated via destructive operations such as sort(), while in clojure, the js array's closest analogue (a vector) is never changed by functions that consume it. It's this "mostly" vs "never" distinction that gives rise to a paranoid feeling that I might be breaking things if I forget something in javascript. I also need to learn more "tricks" to get things to work as I expect. To get the javascript version to behave like the clojure one, we must explicitly copy the array e.g. like this:

(bonus: try leaving the var off in front of the concat expression and see how "safe" this version is)

One could argue that it is simply bad form to write javascript and expect it to behave like clojure, but entire books have been written to explain to programmers how to avoid side-effect pitfalls in javascript - and the language is almost unusable without them.

In clojure, there's much less need2 for this kind of "meta language documentation" - and none for protecting data. It's guaranteed not to change. In the example above, the most likely thing to trip up a programmer new to clojure is the need for doall (leave it out and nothing prints since map is lazy - in the repl you'll need to assign the output to see the difference - e.g. (def foo (listFruits fruits)). This is still a bug, but it's one limited to the function in question, not the entire code base.

So my conclusion is that clojure is safer because it has fewer (and much less dangerous) gotchas, the impact of mistakes is limited to the scope of the offending line of code (which will likely be a function or even a let block) and you never3 have to keep a mental model of how state is changing as the instruction pointer advances. It's all right there in front of you.

We all make mistakes, but in clojure, mistakes are limited to the context of the function and never due to implicitly mucking about with application state. This adds confidence when making changes, that is simply not there in languages that cannot make such guarantees.


[1]Clojure is not the only language that features immutability of course - it just happens to be one I use a lot, and like programming in; nor is js alone in having side-effects; i.e. this isn't about championing clojure (or bashing js) it's about immutability, so feel free to substitute your [least] favorite languages as you see fit.

[2] So far at least. Clojure is still young yet, but I don't expect it'll gain this kind of cruft, if for no other reason than because it won't share javascript's experience of being in the front-line of the browser wars.

[3] Wanton use of clojure constructs such as ref, atoms & agents can of course lead to such an environment; however even so, clojure provides well-defined protocols for managing change. If the programmer still creates a state-management hell, that's on the coder - as are most problems in coding; no language can enforce safety, only make it easier or harder.




tab

Google Chrome Portable 130.0.6778.70

Google Chrome Portable is a web browser that runs web pages and applications with lightning speed. It's designed to be simple and stylish. It's packaged as a portable app, so you can take yo... [License: Freeware | Requires: 11|10 | Size: 2 MB ]




tab

Mozilla Firefox Portable 132.0.2

Mozilla Firefox Portable is the portable version of Mozilla Firefox so you can take your Firefox anywhere you go preserving all your settings, add-ons and more. [License: Freeware | Requires: 11|10 | Size: 138 MB ]




tab

Izquierda Unida C-LM Establece Abril de 2026 Como Fecha Límite para Definir su Estrategia Electoral para los Comicios Autonómicos y Municipales

Izquierda Unida de Castilla-La Mancha ha fijado abril de 2026 como la fecha límite para presentar sus candidaturas para las elecciones autonómicas y regionales de mayo de 2027. Así lo ha anunciado Pedro Mellado, el coordinador general de la formación, en una reciente entrevista. Mellado destacó el compromiso de IU de informar con un año […]

Artículo publicado en : Izquierda Unida C-LM Establece Abril de 2026 Como Fecha Límite para Definir su Estrategia Electoral para los Comicios Autonómicos y Municipales




tab

12C: IN DATABASE ARCHIVING

In this post, I will demonstrate a new feature introduced in 12c : In database archiving. It enables you to archive rows within a table by marking them as invisible. This is accomplshed  by means of a hidden column ORA_ARCHIVE_STATE. These invisible rows are not visible to the queries but if needed, can be viewed , by setting a session parameter ROW ARCHIVAL VISIBILITY.

Overview:

-- Create test user uilm, tablespace ilmtbs
-- Connect as user uilm
-- create and populate test table (5 rows) ilmtab with row archival clause
-- Note that the table has an additional column ORA_ARCHIVE_STATE automatically created   and has the default value of 0 (indicates that row is active)
-- Note that this column is not visible when we describe the table or simply issue select * from ...
-- We need to access data dictionary to view the column
-- Make two  rows in the table inactive by setting ORA_ARCHIVE_STATE column to a non zero value.
-- Check that inactive rows are not visible to query
-- Set the parameter ROW ARCHIVAL VISIBILITY  = all to see inactive rows also
-- Set the parameter ROW ARCHIVAL VISIBILITY  = active to hide inactive rows
-- Issue an insert into ... select * and check that only 3 visible rows are inserted
-- Set the parameter ROW ARCHIVAL VISIBILITY  = all to see inactive rows also
-- Issue an insert into ... select * and check that all the rows are inserted but ORA_ARCHIVE_STATE    is not propagated in inserted rows
-- Disable row archiving in the table and check that column ORA_ARCHIVE_STATE is automatically dropped
-- drop tablespace ilmtbs and user uilm

Implementation :

-- Create test user, tablespace and test table
SQL> conn sys/oracle@em12c:1523/pdb1 as sysdba
sho con_name

CON_NAME
------------------------------
PDB1

SQL> set sqlprompt PDB1>

PDB1>create tablespace ilmtbs datafile '/u02/app/oracle/oradata/cdb1/pdb1/ilmtbs01.dbf' size 1m;
grant connect, resource, dba  to uilm identified by oracle;
alter user uilm default tablespace ilmtbs;

conn uilm/oracle@em12c:1523/pdb1
sho con_name

CON_NAME
------------------------------
PDB1
-- create table with "row archival clause"
PDB1>drop table ilmtab purge;
create table ilmtab (id number, txt char(15)) row archival;
insert into ilmtab values (1, 'one');
insert into ilmtab values (2, 'two');
insert into ilmtab values (3, 'three');
insert into ilmtab values (4, 'four');
insert into ilmtab values (5, 'five');
commit;
-- Note that the table has an additional column ORA_ARCHIVE_STATE automatically created    and has the default value of 0 (indicates that row is active)
PDB1>col ora_archive_state for a20
select id, txt, ora_archive_state from ilmtab;

ID TXT             ORA_ARCHIVE_STATE
---------- --------------- --------------------
1 one             0
2 two             0
3 three           0
4 four            0
5 five            0
-- Note that this column is not visible when we describe the table or simply issue select * from ...
PDB1>desc ilmtab
Name                                      Null?    Type
----------------------------------------- -------- ----------------------------
ID                                                 NUMBER
TXT                                                CHAR(15)

PDB1>select * from ilmtab;

ID TXT
---------- ---------------
1 one
2 two
3 three
4 four
5 five
-- Since the column is invisible, let me try and make it visible
-- Note that Since the column is maintained by oracle itself, user can't modify its attributes
PDB1>alter table ilmtab modify (ora_archive_state visible);
alter table ilmtab modify (ora_archive_state visible)
*
ERROR at line 1:
ORA-38398: DDL not allowed on the system ILM column
-- We need to access data dictionary to view the column
-- Note that this column is shown as hidden and has not been generated by user
PDB1>col hidden for a7
col USER_GENERATED for 20
col USER_GENERATED for a20

select TABLE_NAME, COLUMN_NAME, HIDDEN_COLUMN, USER_GENERATED
from user_tab_cols where table_name='ILMTAB';

TABLE_NAME  COLUMN_NAME          HID USER_GENERATED
----------- -------------------- --- --------------------
ILMTAB      ORA_ARCHIVE_STATE    YES NO
ILMTAB      ID                   NO  YES
ILMTAB      TXT                  NO  YES
-- We can make selected rows in the table inactive by setting ORA_ARCHIVE_STATE column to a non zero value.
This can be accomplished using update table... set ORA_ACRHIVE_STATE =
. <non-zero value>
. dbms_ilm.archivestatename(1)

-- Let's update row with id =1 with ORA_ARCHIVE_STATE=2
     and update row with id =2 with dbms_ilm.archivestatename(2)
PDB1>update ilmtab set ora_archive_state=2 where id=1;

update ilmtab set ora_archive_state= dbms_ilm.archivestatename(2) where id=2;
-- Let's check whether updates have been successful and hidden rows are not visible
PDB1>select id, txt, ORA_ARCHIVE_STATE from ilmtab;

ID TXT             ORA_ARCHIVE_STATE
---------- --------------- --------------------
3 three           0
4 four            0
5 five            0
-- The updated rows are not visible!!
-- Quite logical since we have made the rows active and by default only active rows are visible

-- To see inactive rows also, we need to set the parameter ROW ARCHIVAL VISIBILITY  = all at session level
-- Note that the column ORA_ARCHIVE_STATE has been set to 1 for id =2 although we had set it to 2 using
dbms_ilm.archivestatename(2)
PDB1>alter session set ROW ARCHIVAL VISIBILITY  = all;
select id, txt, ORA_ARCHIVE_STATE from ilmtab;

ID TXT             ORA_ARCHIVE_STATE
---------- --------------- --------------------
1 one             2
2 two             1
3 three           0
4 four            0
5 five            0
-- Note that the column ORA_ARCHIVE_STATE has been set to 1 for id =2 although we had set it to 2 using    dbms_ilm.archivestatename(2)

-- Let's find out why
-- Note that The function dbms_ilm.archivestatename(n) returns only two values    0 for n=0 and 1 for  n <> 0
PDB1>col state0 for a8
col state1 for a8
col state2 for a8
col state3 for a8

select dbms_ilm.archivestatename(0) state0 ,dbms_ilm.archivestatename(1) state1,
dbms_ilm.archivestatename(2) state2,dbms_ilm.archivestatename(3) state3  from dual;

STATE0   STATE1   STATE2   STATE3
-------- -------- -------- --------
0        1        1        1
-- In order to make the inactive rows (id=1,2) hidden again, we need to set the parameter ROW ARCHIVAL VISIBILITY  = Active
PDB1>alter session set row archival visibility = active;
select id, txt, ORA_ARCHIVE_STATE from ilmtab;

ID TXT             ORA_ARCHIVE_STATE
---------- --------------- --------------------
3 three           0
4 four            0
5 five            0
-- Let's issue an insert into ... select *
-- Note that only 3 new rows are visible
PDB1>insert into ilmtab select * from ilmtab;

select id, txt, ora_archive_state from ilmtab;

ID TXT             ORA_ARCHIVE_STATE
---------- --------------- --------------------
3 three           0
4 four            0
5 five            0
3 three           0
4 four            0
5 five            0

6 rows selected.
-- I want to check if hidden rows were also inserted
-- Let's check by making  hidden rows visible again
-- Note that only visible rows(id=3,4,5) were inserted
PDB1>alter session set row archival visibility=all;
select id, txt, ora_archive_state from ilmtab;

ID TXT             ORA_ARCHIVE_STATE
---------- --------------- --------------------
1 one             2
2 two             1
3 three           0
4 four            0
5 five            0
3 three           0
4 four            0
5 five            0

8 rows selected.
-- Let's set row archival visibility = all and then again insert rows from ilmtab
-- Note that all the 8 rows are inserted but ORA_ARCHIVE_STATE ha not been copied    ORA_ARCHIVE_STATE <> 0 in only 2 records (id = 1,2) even now.
PDB1>alter session set row archival visibility=all;
insert into ilmtab select * from ilmtab;
select id, txt, ora_archive_state from ilmtab order by id;

ID TXT             ORA_ARCHIVE_STATE
---------- --------------- --------------------
1 one             0
1 one             2
2 two             0
2 two             1
3 three           0
3 three           0
3 three           0
3 three           0
4 four            0
4 four            0
4 four            0
4 four            0
5 five            0
5 five            0
5 five            0
5 five            0

16 rows selected.
-- Disable row level archiving for the table
-- Note that as soon as row archiving is disabled, pseudo column ora_archive_state is dropped automatically
PDB1>alter table ilmtab no row archival;
select id, txt, ORA_ARCHIVE_STATE from ilmtab;

ERROR at line 1:
ORA-00904: "ORA_ARCHIVE_STATE": invalid identifier

PDB1>col hidden for a7
col USER_GENERATED for 20
col USER_GENERATED for a20

select TABLE_NAME, COLUMN_NAME, HIDDEN_COLUMN, USER_GENERATED
from user_tab_cols where table_name='ILMTAB';

TABLE_NAME  COLUMN_NAME          HID USER_GENERATED
----------- -------------------- --- --------------------
ILMTAB      ID                   NO  YES
ILMTAB      TXT                  NO  YES
Note : Had we created this table using sys, we could not have disabled row archiving .

-- cleanup --
PDB1>conn sys/oracle@em12c:1523/pdb1 as sysdba
drop tablespace ilmtbs including contents and datafiles;
drop user uilm cascade;
References:

http://docs.oracle.com/cd/E16655_01/server.121/e17613/part_lifecycle.htm#VLDBG14154

----------------------------------------------------------------------------------------------------

Oracle 12c Index

----------------------------------------------------------------------------------------------

 




tab

Are older releases of the database really unsupported?

articles: 

I see posts on Oracle related forums about various releases (anything that isn't 11.x or 12.x) being "unsupported". This is wrong. Of course you should upgrade any 9i or 10g databases, but you don't have to.

Oracle Corporation's lifetime support policy is documented here,
Lifetime Support Policy
take a look, and you'll see that release 10.2 was in premier support until end July 2010 when it went into extended support. At end July 2013, it goes into sustaining support. Sustaining support will continue indefinitely. Even release 8.1.7 will have sustaining support indefinitely.
So what is sustaining support? That is documented here,
Lifetime support benefits
To summarize, extended support gives you everything you are likely to need. What you do not get is certification against new Oracle products or new third party products (principally, operating systems). But does that matter? I don't think so. For example, release 11.2.0.3 (still in premier support) is not certified against Windows 8, but it works fine.
Sustaining support has a more significant problem: no more patches. Not even patches for security holes, or changes in regulatory requirements. The security patch issue may of course be serious, but regulatory issues are unlikely to matter (this is a database, not a tax management system.) Think about it: 10g has been around for many years. It is pretty well de-bugged by now. If you hit a problem with no work around, you are pretty unlucky. Sustaining support gives you access to technical support, available patches, software, and documentation. That is all most sites will ever need.
Right now, I am working on a 9.2.0.8 database. It cannot be upgraded because the application software is written by a company that does not permit a database upgrade. Why not? Well, the reason may be commercial: they have a replacement product that is supported on newer databases. But that is nothing to do with me. The database works, the software works. Making it work better is a challenge - but that is what a DBA is paid to do. Don't just write it off as "unsupported".
Of course I am not suggesting that users should not upgrade to current releases - but upgrades are a huge project, and can have major implications. Running out dated software is silly, unless you have an irrefutable reason for so doing. The lack of security patches make you vulnerable to data loss. The lack of regulatory patches may make it illegal. The lack of newer facilities will be restricting the utility of the system. You may be losing money by not taking of advantage of changes of newer technology that can better exploit your hardware.
If anyone is looking for consulting support to upgrade their database - my boss will be happy to give you a quote. But I won't refuse to support you in the meantime.
--
John Watson
Oracle Certified Master DBA
http://skillbuilders.com




tab

Inverted tables: an alternative to relational structures

articles: 

The inverted table format can deliver fast and flexible query capabilities, but is not widely used. ADABAS is probably the most successful implementation, but how often do you see that nowadays? Following is a description of how to implement inverted structures within a relational database. All code run on Oracle Database 12c, release 12.1.0.1.

Consider this table and a few rows, that describe the contents of my larder:

create table food(id number,capacity varchar2(10),container varchar2(10),item varchar2(10));
insert into food values(1,'large','bag','potatoes');
insert into food values(2,'small','box','carrots');
insert into food values(3,'medium','tin','peas');
insert into food values(4,'large','box','potatoes');
insert into food values(5,'small','tin','carrots');
insert into food values(6,'medium','bag','peas');
insert into food values(7,'large','tin','potatoes');
insert into food values(8,'small','bag','carrots');
insert into food values(9,'medium','box','peas');

The queries I run against the table might be "how many large boxes have I?" or "give me all the potatoes, I don't care about how they are packed". The idea is that I do not know in advance what columns I will be using in my predicate: it could be any combination. This is a common issue in a data warehouse.
So how do I index the table to satisfy any possible query? Two obvious possibilities:
First, build an index on each column, and the optimizer can perform an index_combine operation on whatever columns happen to be listed in the predicate. But that means indexing every column - and the table might have hundreds of columns. No way can I do that.
Second, build a concatenated index across all the columns: in effect, use an IOT. That will give me range scan access if any of the predicated columns are in the leading edge of the index key followed by filtering on the rest of the predicate. Or if the predicate does not include the leading column(s), I can get skip scan access and filter. But this is pretty useless, too: there will be wildly divergent performance depending on the predicate.
The answer is to invert the table:
create table inverted(colname varchar2(10),colvalue varchar2(10),id number);
insert into inverted select 'capacity',capacity,id from food;
insert into inverted select 'container',container,id from food;
insert into inverted select 'item',item,id from food;

Now just one index on each table can satisfy all queries:
create index food_i on food(id);
create index inverted_i on inverted(colname,colvalue);

To retrieve all the large boxes:
orclz> set autotrace on explain
orclz> select * from food where id in
  2  (select id from inverted where colname='capacity' and colvalue='large'
  3  intersect
  4  select id from inverted where colname='container' and colvalue='box');

        ID CAPACITY   CONTAINER  ITEM
---------- ---------- ---------- ----------
         4 large      box        potatoes


Execution Plan
----------------------------------------------------------
Plan hash value: 1945359172

---------------------------------------------------------------------------------
| Id  | Operation                                | Name       | Rows  | Bytes | C
---------------------------------------------------------------------------------
|   0 | SELECT STATEMENT                         |            |     3 |   141 |
|   1 |  MERGE JOIN                              |            |     3 |   141 |
|   2 |   TABLE ACCESS BY INDEX ROWID            | FOOD       |     9 |   306 |
|   3 |    INDEX FULL SCAN                       | FOOD_I     |     9 |       |
|*  4 |   SORT JOIN                              |            |     3 |    39 |
|   5 |    VIEW                                  | VW_NSO_1   |     3 |    39 |
|   6 |     INTERSECTION                         |            |       |       |
|   7 |      SORT UNIQUE                         |            |     3 |    81 |
|   8 |       TABLE ACCESS BY INDEX ROWID BATCHED| INVERTED   |     3 |    81 |
|*  9 |        INDEX RANGE SCAN                  | INVERTED_I |     3 |       |
|  10 |      SORT UNIQUE                         |            |     3 |    81 |
|  11 |       TABLE ACCESS BY INDEX ROWID BATCHED| INVERTED   |     3 |    81 |
|* 12 |        INDEX RANGE SCAN                  | INVERTED_I |     3 |       |
---------------------------------------------------------------------------------

Predicate Information (identified by operation id):
---------------------------------------------------

   4 - access("ID"="ID")
       filter("ID"="ID")
   9 - access("COLNAME"='capacity' AND "COLVALUE"='large')
  12 - access("COLNAME"='container' AND "COLVALUE"='box')

Note
-----
   - dynamic statistics used: dynamic sampling (level=2)

orclz>

Or all the potatoes:
orclz> select * from food where id in
  2  (select id from inverted where colname='item' and colvalue='potatoes');

        ID CAPACITY   CONTAINER  ITEM
---------- ---------- ---------- ----------
         1 large      bag        potatoes
         4 large      box        potatoes
         7 large      tin        potatoes


Execution Plan
----------------------------------------------------------
Plan hash value: 762525239

---------------------------------------------------------------------------------
| Id  | Operation                              | Name       | Rows  | Bytes | Cos
---------------------------------------------------------------------------------
|   0 | SELECT STATEMENT                       |            |     3 |   183 |
|   1 |  NESTED LOOPS                          |            |       |       |
|   2 |   NESTED LOOPS                         |            |     3 |   183 |
|   3 |    SORT UNIQUE                         |            |     3 |    81 |
|   4 |     TABLE ACCESS BY INDEX ROWID BATCHED| INVERTED   |     3 |    81 |
|*  5 |      INDEX RANGE SCAN                  | INVERTED_I |     3 |       |
|*  6 |    INDEX RANGE SCAN                    | FOOD_I     |     1 |       |
|   7 |   TABLE ACCESS BY INDEX ROWID          | FOOD       |     1 |    34 |
---------------------------------------------------------------------------------

Predicate Information (identified by operation id):
---------------------------------------------------

   5 - access("COLNAME"='item' AND "COLVALUE"='potatoes')
   6 - access("ID"="ID")

Note
-----
   - dynamic statistics used: dynamic sampling (level=2)
   - this is an adaptive plan

orclz>

Of course, consideration needs to be given to handling more complex boolean expressions; maintaining the inversion is going to take resources; and a query generator has to construct the inversion code and re-write the queries. But In principle, this structure can deliver indexed access for unpredictable predicates of any number of any columns, with no separate filtering operation. Can you do that with a normalized star schema? I don't think so.
I hope this little thought experiment has stimulated the little grey cells, and made the point that relational structures are not always optimal for all problems.
--
John Watson
Oracle Certified Master DBA
http://skillbuilders.com




tab

Kommentar zum Wahltermin: Zeichen der Stabilität in unruhigen Zeiten

Deutschland steckt in einer Regierungskrise, die schnell beendet werden sollte, meint Mario Kubina. Der parteiübergreifend gefundene Termin sorgt nun für Klarheit und bevorteilt weder SPD noch Union.




tab

Another 3 towns in Leyte declares Stable Internal Peace and Security Condition

On June 12, the towns of Hilongos, Isabel, and Merida in the Province of Leyte announced that their towns are already in a state of Stable Internal Peace and Security Condition (SIPSC).




tab

21 municipalities in Eastern Visayas attains Stable Peace and Security Status

A total of 21 Local Government Units in Eastern Visayas have been declared with a Stable Internal Peace and Security (SIPS) status, showcasing significant advancements in the region's anti-insurgency efforts.




tab

LXer: GParted Live 1.6.0-10: Enhanced Stability and Updated Features

Published at LXer: GParted Live's latest release removes cpufrequtils, adds pm-utils, and updates the Linux kernel to v6.10.11. Read More... (https://linuxiac.com/gparted-live-1-6-0-10-released/)



  • Syndicated Linux News

tab

LXer: How to Attach an Executable File to Your Email (Works on Gmail)

Published at LXer: Find out the File Smuggling technique to secretly share the executable file from an email provider, such as Gmail, without getting blocked. Read More......



  • Syndicated Linux News

tab

How Can I Set Up an Executable Script in Linux?

I try to pre-process pdf files so that they load faster, and so they won't crash kindles or tablets. In MacOS, I could use Automator to run a bash shell script. In Fedora w/ Cinnamon, I tried to...



  • Linux - Software

tab

It's Taboo, Prabhu

ISKCON enforces taboo restriction on discussion of guru tattva.




tab

It's Taboo - Part II

A continuation of the previous Sun Blog thread, "It's Taboo, Prabhu".




tab

It's Taboo - Part III

A continuation of the previous Sun Blog thread, "It's Taboo, Prabhu".




tab

May 19 2009 Radio Station History Australia - 2MG Mudgee - "The Voice of the Tablelands"

Station 2MG, Mudgee, "The Voice of the Tablelands," owned and operated by the Mudgee Broadcasting Company Pty. Limited, is situated a mile from the chief commercial town of a very rich inner-western district of New South Wales...




tab

Jeremy Brandt Podcast – Predictable Profits

Jeremy recently appeared on the Predictable Profits Podcast with Charles Gaudet. Ep #54 – Jeremy Brandt, the founder of WeBuyHouses.com and the creator of five separate companies, joins the show this week to specifically discuss how to maintain productivity as an entrepreneur. Jeremy Brandt is a serial entrepreneur that has founded, funded, and run multiple […]

The post Jeremy Brandt Podcast – Predictable Profits appeared first on Jeremy Brandt.




tab

[$2 Discount] Create Your Profitable Newsletter – No Tech Experience Needed!

Are you thinking about starting a side hustle or growing your online business, but feel held back by a lack of tech skills? That’s exactly where the “5-Day Profitable Newsletter Challenge” comes in—it’s a game-changer, especially for those who aren’t tech-savvy. This challenge is meticulously designed to take you from beginner to pro in the […]



  • E-Zine/Newsletter Marketing
  • 5-Day Profitable Newsletter Challenge
  • online business

tab

Portable Media Expo - final thoughts

Its 5am here in California and I’m awake. It’s either the excitement around the Portable Media Expo or the fact that my body still hasn’t adjusted to the time difference. It’s a good job I’ve been waking early because there...




tab

7-Zip Portable v24.08 [Win 7/8/10/11]

Categoría: Compresores
El afamado administrador de archivos comprimidos, ahora en formato portable.




tab

¿Qué es un Protoboard? (Tableta de experimentación)

Categoría: Electrónica y Electricidad:Electrónica:Componentes
Aprende a utilizar la tableta de experimentación protoboard o breadboard.




tab

e-business - Amazon establecera un centro de Logistica en Irlanda




tab

Tuna and Garden Vegetable Salad

Recipe for a garden vegetable salad with tuna that is exceptionally high in vitamins and nutrients and protein.




tab

Purslane Vegetable Brown Rice Recipe

How to freeze purslane and cook with thawed purslane in a vegetable brown rice recipe.




tab

Tuna and Fresh Vegetable Salad

Fresh vegetable salad with tune and side of brown lentils recipe..




tab

Barbecued Chicken Breast with Vegetables

Barbecued chicken breast dinner with fresh and cooked vegetables recipe.