MySQL列挙型について少し読んで、最も近いものは単純なチェック制約になると思います
CREATE TABLE sizes (
name VARCHAR2(10) CHECK( name IN ('small','medium','large') )
);
ただし、インデックスで値を参照することはできません。より複雑な外部キー関係も可能です
CREATE TABLE valid_names (
name_id NUMBER PRIMARY KEY,
name_str VARCHAR2(10)
);
INSERT INTO valid_sizes VALUES( 1, 'small' );
INSERT INTO valid_sizes VALUES( 2, 'medium' );
INSERT INTO valid_sizes VALUES( 3, 'large' );
CREATE TABLE sizes (
name_id NUMBER REFERENCES valid_names( name_id )
);
CREATE VIEW vw_sizes
AS
SELECT a.name_id name, <<other columns from the sizes table>>
FROM valid_sizes a,
sizes b
WHERE a.name_id = b.name_id
ビューを操作している限り、機能を適切に複製できるように思われます。
これで、PL / SQLソリューションを認める場合、保持できる値のセットを制限したり、IDを取得したり値を取得したりするメソッドを持つロジックを含むカスタムオブジェクトタイプを作成できます。