Blog

ORACLE DATABASE TỪ A-Z: DATA DICTIONARY, VIEWS VÀ PACKAGES

6.1.DATA DICTIONARY VÀ VIEWS TRONG ORACLE DATABASE

6.1.1.  Data Dictionary (Oracle database)

Data dictionary hay từ điển dữ liệu hệ thống là phần rất quan trọng trong Oracle database. Đó là một tập hợp các table và các view sử dụng cho việc tham chiếu đến các thông tin liên quan tới database. Data dictionary được tạo bởi file script sql.bsq trong quá trình tạo database.

Data dictionary bao gồm các thông tin trung tâm của Oracle server.

Data dictionary được Oracle server tự động cập nhật mỗi khi thực hiện lệnh định nghĩa dữ liệu (Data Definition Language – DDL).

Data dictionary đặt trong tablespace SYSTEM do User SYS quản lý. Data dictionary bao gồm hai loại sau:

§  Base tabes

§  Data dictionary Views

oracle database

Hình vẽ 1.    Dictionarytrong database

Base tables

Thông tin trong data dictionary được xác định từ các thông tin có trong các base tables (bảng cơ sở). Nội dung của các bảng này do Oracle server cập nhật. User thuộc database hầu như không thể cập nhật các thông tin này do chúng là các thông tin đã được chuẩn hoá và được mã hoá. Ví dụ: ta chỉ có thể truy xuất tới các thông tin có trong bảng IND$ để biết được các thông tin về các indexes đã được định nghĩa trong database, hoặc lấy các thông tin trong bảng OBJ$ để biết được các objects đã được định nghĩa trong database.

Ta không thể sử dụng các câu lệnh thao tác dữ liệu như INSERT, UPDATE, hay DELETE để thay đổi nội dung thông tin trong các bảng cơ sở một cách trực tiếp ngoại trừ bảng AUD$ (Xem thêm phần kiểm tra – Auditing).

Data Dictionary Views

Data dictionary views được tạo ra bởi các câu lệnh có trong file script catalog.sql. Các views này giải mã và tổng hợp các thông tin có trong các base tables. Để dễ dàng truy xuất các thông tin này, các data dictionary thường được tạo các synonyms tương ứng.

Phần lớn các thông tin hệ thống được User lấy về từ các data dictionary views hơn là lấy trực tiếp từ các base tables.

6.1.2.  Data Dictionary views (Oracle database)

oracle database

Hình vẽ 2.    Dictionary views

Data dictionary views được phân ra làm ba loại chứa các thông tin tương tự nhau nhưng ở các mức độ khác nhau. Các loại data dictionary views này được phân biệt bởi các tiếp đầu ngữ khác nhau.

Tiếp đầu ngữ USER

Các views có tiếp đầu ngữ USER chứa thông tin về các objects do User hiện thời sở hữu. Ví dụ: USER_TABLES sẽ chứa thông tin về các bảng dữ liệu của User hiện thời.

Tiếp đầu ngữ ALL

Các views có tiếp đầu ngữ ALL chứa thông tin về các objects có thể truy cập bởi User hiện thời, bao gồm cả các đối tượng do User đó sở hữu và cả các đối tượng khác mà User được gán quyền truy nhập. Ví dụ: ALL_TABLES sẽ chứa thông tin về các bảng dữ liệu mà User hiện thời có thể truy nhập.

Tiếp đầu ngữ DBA

Các views có tiếp đầu ngữ DBA chứa thông tin về các objects có trong database. Các views này là cần thiết cho quản trị viên database. Một User bất kỳ cũng có thể xem được thông tin trong các views DBA nếu user đó được cấp quyền SELECT ANY TABLE.

Phân loại một số loại views

Tên ViewDiễn giải
DICTIONARYDICT_COLUMNSThông tin chung
DBA_TABLESDBA_OBJECTSDBA_LOBSDBA_TAB_COLUMNSDBA_CONSTRAINTSThông tin liên quan tới các đối tượng của User như: table, Column, Constraint,…
DBA_USERSDBA_SYS_PRIVSDBA_ROLESThông tin về mức quyền của User
Tên ViewDiễn giải
DBA_EXTENTSDBA_FREE_SPACEDBA_SEGMENTSTình hình cấp phát không gian cho các đối tượng trong database.
DBA_ROLLBACK_SEGSDBA_DATA_FILESDBA_TABLESPACESThông tin về cấu trúc database
DBA_AUDIT_TRAILDBA_AUDIT_OBJECTSDBA_AUDIT_OBJ_OPTSCác thông tin kiểm tra

Ví dụ: Để lấy các thông tin chung trong từ điển dữ liệu, ta có thể truy vấn trong Các views DICTIONARY hoặc DICT_COLUMNS.

SVRMGR>SELECT *

2> FROM dictionary

3> WHERE table_name LIKE ’%TABLE%’;

TABLE_NAME                     COMMENTS

——————–                     —————————————

ALL_ALL_TABLES             Description of all object and relational        tables accessible to the user

ALL_NESTED_TABLES      Description of nested tables in tables

                                                accessible to the user

ALL_OBJECT_TABLES       Description of all object tables

                                                accessible to the user

ALL_PART_TABLES

ALL_TABLES                       Description of relational tables accessible to the user

ALL_UPDATABLE_COLUMNS Descriptionofallupdatablecolumns

DBA_ALL_TABLES             Description of all object and relational        tables in the database

DBA_NESTED_TABLES     Description of nested tables contained in all tables

DBA_OBJECT_TABLES      Description of all object tables in the

                                                database

Xây dựng dictionary views

Sau khi tạo database, ta truy cập vào database theo user: SYS và chạy các scripts: catalog.sql và catprog.sql để tạo các dictionary views. Thông thường, các scripts này nằm trong thư mục: %ORACLE_HOME%\RDBMS80\ADMIN

Catalog.sql

CATALOG.SQL script dùng để tạo các view dựa trên các base tables (bảng cơ sở) của database. Các view này sẽ được tạo synonym (một tên khác với tên của objects được dùng để truy cập objects) tương ứng để dễ dàng truy vấn các dữ liệu từ đó hơn. Scripts này còn gọi tới các scripts khác để tạo các views và các đối tượng khác phục vụ cho các tiện ích Server Manager, cho việc kiểm tra, cho các tiện ích Export và Import dữ liệu,… Scripts STANDARD.SQL được gọi đến trong đó để tạo các môi trường PL/SQL tuân theo chuẩn.

Ví dụ: Scripts tạo mẫu giao tiếp cho 01 hàm built-in có tên BITAND:

function BITAND (LEFT binary_integer, RIGHT binary_integer)

return binary_integer;

Catproc.sql

CATPROC.SQL script dùng để tạo các hàm PL/SQL, các packages PL/SQL sử dụng trong RDBMS. Ngoài ra, CATPROC.SQL script còn tạo Các views mở rộng khác.

6.1.3.  Sripts quản trị (Oracle database)

Các scripts quản trị được đặt trong thư mục: %ORACLE_HOME%\RDBMS80\ADMIN

Các scripts này được phân nhóm và đặt trong từng file riêng biệt.

Các quy định về tên có trong Script quản trị

Quy ướcDiễn giải
Cat*.sqlCác thông tin Catalog và từ điển dữ liệu
Dbms*.sqlPhần khai báo (specification) của các packages trong database
Prvt*.plbPhần thân cua packages đã được mã hoá và đóng gói
Utl*.sqlCác views và table tiện ích trong database

6.2. STORED PROCEDURES VÀ CÁC PACKAGES CHUẨN TRONG ORACLE DATABASE

6.2.1.  Giới thiệu chung (Oracle database)

Stored procedures và các packages là các đối tượng trong database, đó là tập hợp các đoạn mã lệnh PL/SQL để thực hiện một chức năng nào đó.

Stored procedures bao gồm cả các procedures (thủ tục), functions (hàm) và các packages được viết gộp thành một program unit (đơn vị chương trình).

Stored procedures có thể được tạo và huỷ bởi các lệnh CREATE và DROP

Hình vẽ 3.    Stored procedures và các Packages chuẩn

Lợi ích của Stored procedures

§  Các Stored procedures được nạp vào shared pool, do đó có thể giảm bớt việc truy xuất đĩa khi thực hiện thủ tục.

§  Đảm bảo an toàn cho dữ liệu, ngăn không cho các users truy cập trực tiếp vào dữ liệu mà phải thông qua các thủ tục và hàm giao tiếp đã được cung cấp.

§  Cho phép nhiều users có thể cùng sử dụng các bản sao của Stored procedures để thực hiện.

6.2.2.  Stored procedures (Oracle database)

Stored procedures là các functions hay procedures được tạo lập và lưu ngay trong dictionary giống như một schema object. Đây là tập hợp các câu lệnh SQL và PL/SQL. Sau khi Stored procedures được biên dịch, nó sẽ được gán tên và có thể thực hiện trực tiếp mà không cần phải biên dịch lại thêm bất cứ một lần nào nữa.

Sử dụng Stored procedures, ta có thể nạp trực tiếp vào ngay biểu thức thuộc câu lệnh SQL giống như là các hàm built-in có sẵn của Oracle như UPPER hay SUBSTR.

Các functions và procedures cho phép sử dụng tham số dưới dạng tham số vào (IN) và tham số ra (OUT) hoặc cũng có thể sử dụng tham số vừa vào vừa ra (IN OUT). Theo mặc đinh, các tham số được xác định ở chế độ vào IN.

6.2.3.  Packages chuẩn (Oracle database)

Một packages thông thường gồm hai phần: specification (phần đặc tả hay còn gọi là phần khai báo) và body (phần thân). Chúng được lưu riêng biệt trong cùng một database.

§  Phần specification là phần giao tiếp với các ứng dụng. Phần này chứa các lời khai báo, các kiểu, biến, hằng, exceptions, cursors, và các khai báo hàm để sử dụng.

§  Phần body là phần cài đặt cụ thể (implementation) của các khai báo trong phần specification.

Chức năng của packages cũng tương tự như Stored procedures. Một khi packages được biên dịch, packages đó có thể được sử dụng bởi nhiều ứng dụng khác nhau. Tuy nhiên, có một lợi ích lớn nhất khi sử dụng packages là ngay lần đầu tiên gọi đến packages, toàn bộ packages sẽ được nạp vào trong bộ nhớ.

Hình vẽ 4.    Packages trong cơ sở dữ liệu

6.2.4.  Giới thiệu một số packages chuẩn do Oracle cung cấp

Oracle cung cấp một số packages chuẩn, ngay sau khi tạo database:

§  DBMS_LOB: cung cấp các thủ tục cho phép làm việc trên kiểu dữ liệu BLOB và CLOB, được định nghĩa trong file script catprog.sql.

§  DBMS_SESION: cung cấp các câu lệnh SQL liên quan đến session như ALTER SESSION, SET ROLE, … packages này được định nghĩa trong file dbmsutil.sql và prvtutil.sql

§  DBMS_UTILITY: chứa các thủ tục tiện ích, được đặt trong file dbmsutil.sql và prvtutil.sql

§  DBMS_SPACE: cung cấp các thông tin về khoảng trống của segment.

§  DBMS_ROWID: cung cấp các thông tin về ROWID

§  DBMS_SHARE_POOL: lưu trữ và huỷ bỏ các thông tin có trong share pool.

PackagesThủ tục trong packagesDiễn giải
DBMS_SESSIONSET_ROLEKích hoạt việc thực hiện Roles của user
SET_SQL_TRACEThiết lập chế độ dò tìm thực hiện lệnh
SET_NLSChọn chuẩn hỗ trợ ngôn ngữ
CLOSE_DATABASE_LINKĐóng database link. 
UNIQUE_SESSION_IDTrả về mã duy nhất cả các session hiên đang connect tới database. 
IS_ROLE_ENABLEDXác đinh xem role có được kích hoạt trong session không. 
IS_SESSION_ALIVEXác định xem session có còn hay không. 
SET_CLOSE_CACHED_OPEN_CURSORS  Bật hoặc tắt close_cached_open_cursors
FREE_UNUSED_USER_MEMORY  Giải phóng vùng bộ nhớ không còn sử dụng 
DBMS_UTILITYANALYZE_SCHEMAPhân tích các objects trong schema như: functions, procedures, packages, triggers,..
COMPILE_SCHEMABiên dịch các objects trong schema
DB_VERSIONXác định phiên bản của database
DBMS_ROWIDROWID_INFOThông tin về dòng dữ liệu
DBMS_SPACEUNUSED_SPACEVùng không gian không sử dụng
FREE_BLOCKSCác blocks rỗi
DBMS_SHARED_POOLKEEPLưu trữ các object trong shared pool
UNKEEPThôi lưu giữ các object
SIZESKích thước bộ nhớ trong shared pool
DBMS_SQLOPEN_CURSORTrả về số hiệu cursor (ID number)
PARSEPhân tích câu lệnh
BIND_VARIABLEBinds một giá trị biến. 
BIND_ARRAYBinds một giá trị biến mảng. 
EXECUTE FunctionExecutes a given cursor. 
EXECUTE_AND_FETCHThực hiện lệnh và lấy về các dòng dữ liệu. 
FETCH_ROWSLấy về các dòng dữ liệu của một cursor. 
COLUMN_VALUELấy về dữ liệu của cột  
IS_OPENXác định Cursor đã mở hay chưa.
CLOSE_CURSORĐóng cursor và giải phóng bộ nhớ. 
LAST_ERROR_POSITIONTrả về lỗi thực hiện câu lệnh SQL
LAST_ROW_COUNTTrả về số lượng dòng dữ liệu lấy về
LAST_ROW_IDTrả về mã dòng dữ liệu xử lý ROWID
LAST_SQL_FUNCTION_CODETrả về mã hàm SQL

6.2.5.  Package DBMS_METADATA

Một PL/SQL package mới, DBMS_METADATA, được đưa vào Oracle  11g cho phép ta lấy được các siêu dữ liệu (metadata) – Các thông tin tổng hợp về các schema object.

§  DBMS_METADATA là package mới bổ sung, nó cho phép thực hiện các thao tác DDL trên objects trong database.

§  Package này làm việc được với các tables, indexes, views, packages, functions, procedures, triggers, synonyms, và types.

§  DBMS_METADATA có các hàm cơ bản:

§  DBMS_METADATA.GET_DDL(object_type, name, schema)

§  DBMS_METADATA.GET_XML(object_type, name, schema)

Ví dụ:

SELECT DBMS_METADATA.GET_DDL(‘TABLE’, ‘EMP’, ‘SCOTT’) from dual;

  CREATE TABLE “SCOTT”.”EMP”

   (    “EMPNO” NUMBER(4,0),

        “ENAME” VARCHAR2(10),

        “JOB” VARCHAR2(9),

        “MGR” NUMBER(4,0),

        “HIREDATE” DATE,

        “SAL” NUMBER(7,2),

        “COMM” NUMBER(7,2),

        “DEPTNO” NUMBER(2,0),

         CONSTRAINT “PK_EMP” PRIMARY KEY (“EMPNO”)

  USING INDEX PCTFREE 10 INITRANS 2 MAXTRANS 255

  STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645 PCTINCREASE 0

  FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT) TABLESPACE “USERS”  ENABLE,

         CONSTRAINT “FK_DEPTNO” FOREIGN KEY (“DEPTNO”)

  REFERENCES “SCOTT”.”DEPT” (“DEPTNO”) ENABLE NOVALIDATE

   ) PCTFREE 10 PCTUSED 40 INITRANS 1 MAXTRANS 255 LOGGING

  STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645 PCTINCREASE 0

  FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT) TABLESPACE “USERS”

SELECT DBMS_METADATA.GET_XML(‘TABLE’, ‘EMP’, ‘SCOTT’) from dual;

<?xml version=”1.0″?>

<ROWSET>

 <ROW>

  <TABLE_T>

   <VERS_MAJOR>1</VERS_MAJOR>

   <VERS_MINOR>0</VERS_MINOR>

   <OBJ_NUM>5543</OBJ_NUM>

   <SCHEMA_OBJ>

    <OBJ_NUM>5543</OBJ_NUM>

    <DATAOBJ_NUM>5543</DATAOBJ_NUM>

    <OWNER_NUM>25</OWNER_NUM>

    <OWNER_NAME>SCOTT</OWNER_NAME>

    <NAME>EMP</NAME>

    <NAMESPACE>1</NAMESPACE>

    <MINEXTS>1</MINEXTS>

    <MAXEXTS>2147483645</MAXEXTS>

    <EXTSIZE>128</EXTSIZE>

    <EXTPCT>0</EXTPCT>

    …   

6.2.6.  Package dbms_redefinition

Package này cung cấp 05 thủ tục cho phép chỉnh sửa các objects online .

§  CAN_REDEF_TABLE

§  START_REDEF_TABLE

§  FINISH_REDEF_TABLE

§  ABORT_REDEF_TABLE

§  SYNC_INTERIM_TABLE

6.3.THÔNG TIN VỀ CÁC STORED PROCEDURES TRONG ORACLE DATABASE

Khi lưu trữ các Stored procedures hay packages, Oracle sẽ tự động lưu lại trạng thái của nó là VALID hay INVALID.

§  VALID: Stored procedures hay packages có trạng thái là VALID nếu nó đã được biên dịch và không có lỗi xảy ra. Khi này, nó sẵn sàng cho việc sử dụng.

§  INVALID: là trạng thái ngược lại với trạng thái VALID. Stored procedures hay Packages vẫn còn lỗi khi biên dịch. Khi này, ta chưa thể sử dụng được ngay.

Cú pháp lệnh yêu cầu biên dịch lại Stored procedures:

            ALTER PROCEDURE [schema_name].<procedure_name> COMPILE [DEBUG];

Với:

schema_name              tên schema chứa procedure cần biên dịch lại

            procedure_name          tên của procedure biên dịch lại.

            COMPILE                   chỉ định yêu cầu biên dịch lại procedure

DEBUG                      chỉ định chương trình biên dịch mã lệnh PL/SQl của procedure sẽ sinh mã lệnh phù hợp để chương trình PL/SQL debugger có thể đọc. User có thể sử dụng chương trình này để dò tìm và gỡ lỗi cho procedure.

Ví dụ:

ALTER PROCEDURE henry.close_acct  COMPILE;

Tương tự như đối với procedure, cú pháp lệnh yêu cầu biên dịch lại Stored function có dạng:

            ALTER FUNCTION [schema_name].<function_name> COMPILE [DEBUG];

Ví dụ:

            ALTER FUNCTION merriweather.get_bal COMPILE;

Đối với package, lệnh yêu cầu biên dịch lại cũng tương tự nhưng có thêm một bổ sung là user phải khai báo rõ từng phần của package sẽ được biên dịch lại.

Cú pháp:

            ALTER PACKAGE [schema_name].<package_name>                                                                    COMPILE [DEBUG] <PACKAGE | SPECIFICATION | BODY>;

Các khai báo bổ sung cho phép user yêu cầu biên dịch lại phần SPECIFICATION hay phần BODY hoặc là biên dịch lại cả hai phần trên.

Ví dụ:

ALTER PACKAGE blair.accounting

   COMPILE PACKAGE;

Hoặc:

ALTER PACKAGE blair.accounting

   COMPILE BODY;

Để xác định được trạng thái của các Stored procedures, ta có thể thực hiện truy vấn dựa trên dictionary DBA_OBJECTS.

SVRMGR> SELECT object_name, object_type, status

2> FROM dba_objects WHERE object_name like ’DBMS_%’

OBJECT_NAME                 OBJECT_TYPE       STATUS

——————– ————— ——–

DBMS_ALERT                    PACKAGES             VALID

DBMS_ALERT                    PACKAGES             BODY VALID

DBMS_ALERT_INFO        TABLE                     VALID

DBMS_APPLICATION_INF PACKAGES         VALID

DBMS_APPLICATION_INF PACKAGES         BODY VALID

DBMS_AQ                           PACKAGES             VALID

DBMS_AQ                           PACKAGES             BODY VALID

Hoặc ta cũng có thể sử dụng lệnh DESCRIBE để lấy thông tin

SVRMGR> DESCRIBE dbms_session.set_role

procedure SET_ROLE (ROLE_CMD VARCHAR2);

svrmgr> describe dbms_session

packages dbms_session is

————

— OVERVIEW

— This packages provides access to SQL “alter session”

— statements, and other session information from, stored

— procedures.

—————————-

— PROCEDURES AND FUNCTIONS

procedure set_role(role_cmd varchar2);

— Equivalent to SQL “SET ROLE …”.

— Input arguments:

— role_cmd

— This text is appended to “set role ” and then executed as

— SQL.

procedure set_sql_trace(sql_trace boolean);

— Equivalent to SQL “ALTER SESSION SET SQL_TRACE …”

— Input arguments:

— sql_trace

— TRUE or FALSE. Turns tracing on or off.

procedure set_nls(param varchar2, value varchar2);

Stored procedures hay Packages nhận trạng thái INVALID khi các câu lệnh trong Stored procedures hay Packages bị lỗi.

Nguồn: Internet

Leave a Reply

Your email address will not be published. Required fields are marked *

suarairama pestanada beritabandar rumahjurnal podiumnews dailyinfo wikiberita zonamusiktop musicpromote bengkelpintar liburanyuk jelajahhijau carimobilindonesia jalanjalan-indonesia otomotifmotorindo ngobrol olahraga mabar dapurkuliner radarbandung indosiar radarjawa medianews infowarkop kalbarnews ketapangnews beritabumi kabarsantai outfit faktagosip beritagram lagupopuler seputardigital updatecepat marihidupsehat baliutama hotviralnews cctvjalanan beritajalan beritapembangunan pontianaknews monitorberita koronovirus museros iklanjualbeli festajunina capoeiravadiacao georgegordonfirstnation 1reservoir revisednews

Historia Mahjong Ways 3 Sukses Ciptakan Bentuk Pola Sempurna Setelah Kemenangan Pertama Cara Pahami Pola Rahasia Trik Kemenangan Bonanza dengan Rtp Premium Menang Optimal Perubahan Rtp Mencatat Analisis Baru Mahjong Wins 3 Temukan Waktu Main Terbaik Teknik Fokus Memahami Kecepatan Pola Baccarat Online Lewat Materi Unggulan Sumber Digital Trik Positif Rahasia yang Mampu Merubah Tingkat Kemenangan Sugar Rush Secara Signifikan Memahami Cepat Pola Sederhana Baccarat Online Lewat Pendalaman Jati Diri Pola Baru Mahjong Ways 3 Disusun Secara Kronologis Menciptakan Nuansa Menang Makin Segar Pro Kontra Bonanza dengan Rtp Premium Membantu Adaptasi Cerah Pemain Baru Teknik Mudah Membaca Alur Spin Sugar Rush Menjadi Harmoni Kemenangan yang Bersahabat Cara Membaca Algoritma Sebagai Langkah Menang Konsisten di Spin Perdana Mahjong Wins 3 Kronologi Sugar Rush Merubah Inovasi Teknologi Digital dan Finansial Lebih Baik Pahami Formasi Parkir Bus Terinspirasi Taktik Baccarat Online Dengan Format Kemenangan Penjelajah Lautan Dapat Harta Karun Emas Bonanza Ungkap Warna Kehidupan Dasar Laut Teknik Penguasaan Pola Original Mahjong Ways 3 Bikin Cepat Raih Kejayaan Sempurna Diagnosis Pola Premium Dengan Menyusun Aturan Berlapis Mahjong Wins 3 Menafsirkan Dimensi Baru Mahjong Wins 3 Menggali Peluang Epik Dalam Ekspansi Setiap Putaran Menapaki Jejak Baccarat Online dengan Menghidupkan Rangkaian Pola Frekuensi Keberuntungan Baru Pelajari Warisan Dewa Kuno Menciptakan Pola Sempurna Gates of Olympus Hasilkan Cuan Berlimpah Bongkar Fakta Lukisan Leang Karampuang yang Sembunyikan Simbol Scatter Mahjong Ways 3 Cara Menyalakan Warna Sugar Rush Bikin Spin Makin Spesial dengan Kejutan Energi Menyelami Eksperimen Bonanza dengan Rtp Premium Menemukan Jejak Keberuntungan yang Sempurna Rahasia Baru Cara Sugar Rush Menarik Cepat Kemenangan Total dengan Taktik Positif Ilmuwan Mengintegrasikan Paradigma Baccarat Online yang Bisa Mengubah Cara Menang Buku Emas Etruria Menyimpan Pola Kuno Mahjong Ways Tingkatkan Kemenangan Malam Hari Mengubah Algoritma Spin Mahjong Ways 3 Mampu Hubungkan Keberuntungan jadi Kemenangan Sempurna Tukang Parkir di Semarang Temukan Pola Mahjong Wins 3 Saat Tunggu Pelanggan Keluar dari Indomaret Bu RT Asal Bandung Klaim Dapat Ilham Pola Mahjong Ways 2 Saat Nyapu Halaman Waktu Subuh Satpam Malam Dapat Ide Pola Mahjong Wins 3 Saat Dengarkan Radio Lama di Pos Jaga Ibu Rumah Tangga Dapat Pola Mahjong Wins 3 Saat Anak Minta Uang Jajan di Tengah Masak Sayur Asem Kuli Bangunan Asal Bogor Temukan Pola Mahjong Ways 2 Saat Adu Cepat Ngaduk Semen di Tengah Hujan Mahasiswi Arsitektur Ungkap Pola Mahjong Ways 2 Setelah Gambar Denah yang Bentuknya Mirip Scatter Pedagang Buah Pahami Pola Mahjong Wins 3 Setelah Tahu Pisang Matang Selalu Datang di Hari Jumat Barista Asal Malang Temukan Pola Baccarat Setelah Cappuccino-nya Tumpah Dua Kali Berturut-turut Penjual Cilok Temukan Pola Baccarat Setelah Iseng Catat Nomor Struk Pelanggannya Selama Seminggu Penjual Nasi Uduk Dapati Pola Mahjong Ways 2 Saat Uap Kukusannya Naik Turun Seperti Irama Scatter Cara Evaluasi Sederhana Cepat Kuasai Trik Baccarat Online Secara Tepat dan Terarah Teknik Presisi Mengatur Kecepatan Spin Mahjong Ways 3 Untuk Kenaikan Hasil yang Ideal Cara Intuisi Bekerja Mencatat Pola Baccarat Online Melalui Skema yang Sempurna Langkah Terukur Dalam Mengatur Waktu Baccarat Online Berbalut Mantra Menjemput Kemenangan Terungkap! Pola RTP Stabil yang Sering Dipakai Pemain Lama untuk Mengunci Kemenangan Sedikit Orang Tahu, Inilah Pola Rotasi yang Selalu Dipakai Para Profesional Rahasia Timing Putaran yang Sering Diabaikan, Padahal Ini Kunci Menang Pola Perputaran Sunyi: Cara Tenang Tapi Konsisten Bikin Hasil Naik Bukan Sekadar Spin, Ini Cara Baca Momentum RTP Sampai Ketemu Peluang Strategi Rotasi 25-50-10 yang Lagi Ramai Dibahas, Banyak yang Bilang Efektif Metode Pengaturan Bakiak dan Nafas Putaran yang Sering Dipakai Player Cerdas Pahami Pola Naik-Turun RTP, Jangan Asal Tekan Ada Waktunya Bocoran Baru dari Komunitas Pemain Hening, Fokus Pola Tanpa Tergesa Kaget! Ternyata Pola Ini Bisa Bikin Kemenangan Datang Tanpa Disangka Baru Terungkap! Pola Rahasia yang Selama Ini Disembunyikan Para Player Senior Jangan Mulai Sebelum Baca Ini! Pola Kemenangan Cepat yang Lagi Viral Hampir Tidak Ada yang Tahu, Pola Ini Diam-Diam Dipakai Para Pemain Diam Modal Biasa Bisa Jadi Fantastis! Pola Putaran Ini Bikin Banyak Orang Takjub Sudah Banyak yang Coba dan Berhasil! Pola Perputaran Ini Bikin Hasil Naik Cepat Pola yang Katanya Tidak Masuk Akal, Tapi Banyak yang Buktiin Sendiri Dari RTP Mahjong Ini Viral di Komunitas Tertutup! Pola Putaran Ini Bikin Momentum Berjalan Mulus Bukan Klikbait! Pola Ini Benar-Benar Mengubah Cara Orang Bermain Mahjong Pahami RTP Ini Terbongkar! Cara Mengatur Ritme Putaran Supaya Peluang Menang Mahjong Lebih Terbuka Gila! Pola Ini Baru Muncul 3 Hari Terakhir dan Banyak yang Langsung Dapat Hasil Mereka Tidak Mau Kamu Tahu Pola Ini Tapi Sudah Terlambat! Pahami Putaran RTP Terbaru Yang Lain Masih Bingung? Pemain Mahjong Diam-Diam Sudah Pakai Pola Ini dan Senyum STOP Main Dengan Cara Lama! Pahami Sekarang Pola Baru Ini Lebih Cepat Dapetin Hasil Pola Ini Awalnya Disebar Cuma di Grup Mahjong Tertutup Sekarang Sudah Bocor di Sosial Media Jangan Kecewa! Ternyata Pola Mahjong Ini yang Bikin Banyak Orang Tiba-Tiba Naik Taktik Baru SUHUBET Terungkap! Pahami Pola RTP Ini Sebelum Terlambat Terbukti Ampuh! Pola Ini Dipakai Pemain Top Sampai Admin Pun Ngakak Info Terkini! RTP Sedang Naik, Pahami Taktik ini Dan Wajib Dicoba Sekarang Juga di SUHUBET SUHUBET Bocorkan Pola Rahasia: Pahami Taktik RTP Untuk Hasil Maksimal Dan Permainan Yang Memukau Pahami Dulu Pola RTP Ini! Banyak yang Gagal Karena Salah Baca Momentum RTP Ini Banyak yang Rugi Karena Tidak Paham! Taktik RTP SUHUBET yang Sebenarnya RTP Hari Ini Lagi Bagus! Taktik Ini Cuma Dipakai Orang Dalam SUHUBET SUHUBET Kembali Ramai! Info Terkini Soal Pola RTP yang Baru Muncul Pada Permainan Viral Mahjong Info Panas dari SUHUBET! Taktik Perputaran 30-60-15 Makin Banyak Dipakai Pemain Legend Jangan Asal Tekan! Pahami Dulu Taktik Baca Nafas RTP Ini Bikin Perputaran Lebih Nyambung Semarang Menjadi Kota Fantasi Mahjong, Tukang Edit Foto Mengunggah Permainan Pola Mahjong Terbaru Peneliti Visual SUHUBET Ungkap Sinkronisasi Pola Mahjong dan Musik, Disebut Harmoni Terserasi Tahun Ini Pengembangan Mahjong Dengan Teknologi Ai Menghadirkan Pola Jackpot Dengan Market Cap Hijau Shin Tae-Yong Sudah Fix Tidak Melatih Timnas Cek Juga Tempat Jadwal Nonton Bola Harian di SLOTSENSA Sangat Optimis Hanto Dengan Perputaran Menarik Melawan Mahjong Menggunakan Pola Hasil Analisis Data Spirit Perjuangan Hilman Bertambah Besar Setelah Memenangkan Rp 410.000.000 dari Pertarungan Mahjong Sinopsis Penulis Mengungkap Pertarungan Dengan Naga Mahjong Menggunakan Teknik Praktis dan Pola Visual Edukasi Taktik Perputaran Mahjong Anti Boncos Dengan Spin Hati-Hati Tips Strategi Efektif dan Sangat Efisien Pada Perputaran Gates Of Olympus Dari Kilua Terkaget-kaget Karena Jatuhnya Naga Hitam di Halaman Permainan Mahjong di Sukabumi El Clásico Malam Ini: Real Madrid vs Barcelona Persiapan, Statistik & Tempat Nonton Seru di SUHUBET Kisah Joko, Pemuda Asal Bandung yang Membagikan Pengalaman Tentang Ritme dan Perputaran Mahjong Rahasia Dari Negeri Tirai Bambu Mengalahkan Mahjong, Pahami Pola RTP ini Untuk Melawan Naga Hitam Ajaib Sekalai Strategi Yang Selalu di Gunakan Oleh Penantang Mahjong Karena Tidak Pernah Kalah, Pahami Pola Putaran RTP Ini Kisah Santo Anak Kampung Yang Membeli Mobil Baru Dengan Dimodali Oleh Kakek Petir Biru PragmaticPlay Game Yang Lagi Heboh Zeus vs Hades - Gods of War Menghadirkan Perturangan Yang Menegangkan di PragmaticPlay 6 Tanda Tanda Turunya Pola Simbol WIld Mahjong Pada Perputaran Yang Tak Diduga duga di SUHUBET Pahami Pola RTP Lagi Stabil! Ini Taktik yang Lagi Viral di Komunitas SUHUBET RTP Sedang Fluktuatif, Pahami Taktik Adaptasi Ini Biar Tetap Terkendali Pada Saat Spin Mahjong RTP Hari Ini Lagi Bagus Pahami Taktik Ini Cuma Dipakai Orang Dalam SUHUBET Pada Permainan Mahjong Info Panas dari Orang Dalam! Taktik Perputaran 30-60-15 Makin Banyak Dipakai di SUHUBET Dengan Fluktuatif Persentase Tinggi Taktik Sederhana Tapi Sadis! Pahami Cara Atur Permainan Putaran di RTP Mahjong Yang Sedang Naik Pak Toni Meraih Penghargaan King Of Mahjong, Simak dan Pahami Tips dan Trick Yang Sering Digunakan Untuk Mengalahkan Mahjong Ilmu Pembelajaran Taktik Mahjong Sangat Menggemparkan Dunia, Banyak Peminat Yang Berbondong Bondong Mencari Tau Ilmu Penting Ini Paduan Terbaru Fusion Antara Majong Dengan Kakek Petir Biru Menghadirkan Permainan Unik Dan Sangat Menggugah Experience Jangan Sampai Kelewatan Kuasai dan Pahami Taktik Licik Mahjong di Sebarkan Oleh Admin Suhubet Program Studi Putaran Mahjong Berbasis Data 1 Tahun Yang Sudah Di Kumpulkan Untuk Memecahkan Pola Terbaru Resmi Mengaspal, Motor NMAX Baru Milik Pencuci Motor Ternyata Berasal dari Rezeki Tak Terduga Cara Paling Efektif Memahami dan Membaca Pola Data Analisis Mahjong Ways Dengan Taktik Lincah Resmi Meluncur di October Ini, Mahjong Menghadirkan Berbagai Pecahan Besar Dengan Hadiah Rp750.000.000 Zona Nyaman Perputaran Mahjong: Bersenang-senang dengan Pecahan yang Terasa Stabil Penyerapan Media Game di Dunia Digital Menghadirkan Berbagai Bakat Desainer Game Muda Demi Membeli Motor Vario, Hartono Memberanikan Diri Melawan Mahjong Dan Berhasil Mencapai Impiannya Mbak Mbak Penjual Minuman Menemukan Kenaikan Fluktuatif Pada RTP Mahjong, Simak Dan Pahami Data Analsis Polanya Champion Game Mahjong Sedang Turun Tangan Membagikan Pola Pola Yang Ia Gunakan, Simak Wawancaranya di SUHUBET Spirit Perjuangan Wild Mahjong Dan Info Panas dari SUHUBET, Kemakmuran Game Digital Di Era AI Ini Sangat Berkembang Pesat BREAKING! Info RTP Naga Hitam Hari Ini di SUHUBET Bikin Banyak Orang Kaget Dan Langsung Mencobanya Konvoi Truck Tanki Menghadiri Event Tahunan Sembari Membawa Banner Pola Mahjong Yang Akan di Gunakan Pada Event Terbesar Tersebut Dari Jalan Kaki Sekarang Sudah Mengendarai Motor Vario, Mendapatkan Modal Dari Mahjong Sebesar: Rp15.000.000 Sehingga bisa Membeli Motor Baru Jalan Perputaran Progresif Dapat Memecahkan Pola Mahjong Dengan Fungsi RTP Yang Sangat Membantu Tanpa Mengambil Langkah Dengan Resiko Tinggi, Ahmed Membawakan Taktik Supremasi Dengan Pola Simpel di Mahjong Tanpa Rugi Salah Satu Definisi Cuan Dengan Pola Mahjong Yang di Bocorkan Orang Dalam Mengenai Nilai Pemasangan Perputaran Bermodal Receh Visi Misi Mahjong 2025 Membantu Pemain Memahami Pola Kehidupan dan Ketenangan Digital Taktik Menentukan Pola dan Ritme Perputaran Mahjong Menggunakan RTP dari SUHUBET, Simak dan Pahami Selengkapnya Demi Mengubah Cara Hidup, Jose Berhasil Membawakan Pola Mahjong Dari Data Yang Ia Peroleh Dari Orang Dalam Menguasai Pola Terbaik dan Teruji Sangat Jitu Merupakan Taktik dan Langkah yang Cemerlang Data Akurat Bocoran Analisis Pola Mahjong yang Dibagikan Cuma-Cuma, Pahami Sekarang Sebelum Terlambat Bos Barang Bekas Menemukan Hp Yang Sedang Menjalankan Perputaran Auto Pada Mahjong Yang Mendapati Pecahan Maxwin Bukan Hanya Cerdas Tetapi Sangat Irit, Taktik Perputaran Mahjong Dengan Modal Kecil Tanpa Rugi Taktik 10-20-30 Yang Di Gunakan Home Untuk Melawan Away, Simak Selengkapnya Yang Digunakan Mahjong Digital Ungkapan Jupanji Mengenai Taktik Terlarang Yang Ia Pakai Karena Ampuh Memenangkan Mahjong Ways 3 Bermain Secara Kepala Dingin Dan Tidak Terbawa Emosi, Salah Satu Trick Mahjong Yang Selalu di Pakai Orang Dalam Jutawan Terkenal Melakukan Live Streaming Dengan Taktik Perputaran Yang Ia Gunakan Pada Mahjong Ways 2 Penelitian Data Perputaran Energi Mahjong Dengan Membawakan Pola 20-80-50 Berhasil Mencatat Sejarah Terbaru Metode Dewa Naga Hitam: Strategi Mudah dan Pola Mahjong dalam Mencapai Keseimbangan Perputaran Receh Dari Kreativitas Berujung Cuan, Pola Kreatif Dari RTP SUHUBET Membawa Kedamaian Perputaran Dengan Tenang Taktik Jitu dan Sangat Mudah Dipahami pada Mahjong, Cek Sekarang Jangan Sampai Ketinggalan RTP SUHUBET 99% Cerita Menginspirasi Yamal Dengan Perjuangan Tanpa Lelah di Mahjong Dengan Menghasilkan Rp850.000.000 Setelah Kemenangannya Berawal Dari Meja Mahjong Menjadi Toko Bangunan, Kisah Inspirasi Samson Mencari Modal Bisnis Ritme Perputaran dan Pola Paling Sering Digunakan Pemain Mahjong Ceria Seru dan Tetap Aman Hasil Data Analisis dari Observasi Perputaran Mahjong dengan Peluang Turun Wild Tinggi Menghebohkan Terinspirasi dari Sniper: Abdul Menikmati Mahjong dengan Taktik Diam dan Tenang Eksperimen Membaca RTP Mahjong Ways 2 dan Penggunaan Putaran Auto Pengali 1000 di SUHUBET Tidak Sengaja Menekan Tombol Maksimal di Mahjong Ways 2 Berubah Menjadi Hasil Memukau Rp 460.000.000 Data Analisis Terbesar Bocor, Panduan Pola Mahjong Ways 3 Mendapatkan Rp225.000.000 Tukang Pengantar Makanan Mendapatkan Berkat Dari Mahjong Sebesar Rp110.000.000 Pada Saat Istirahat Cuan Dengan Modal Kecil, Pengaduk Semen Mendapatkan Rp35.000.000 Saat Istirahat Cara Cepat Dan Mudah Untuk Pahami Pola Rtp Terbaru Dan Bocoran Dari Orang Dalam Takti Tanpa Bermain Panas Dan Ego, Tips Memahami Pola Permainan Yang Stabil Dari Admin SUHUBET Perkembangan AI Dalam Membantu Analisis RTP Mahjong Mencapai 99% Di Suhubet Strategy Mahjong Ways 3 Dalam Pergerakan Ekonomi Maju Sangat Menguntungkan Banyak UMKM Tips Dan Trick Jitu Paling Sering Digunakan Oleh Pemain Mahjong Berpadu Dengan Pola Wild Anti Boncos Rahasia Pengolahan Tektik Safety Spin pada Permainan Mahjong di Claim Selalu Take Profit Pendekatan Mengamati Pola Seperti Mahjong Ways Disebut Efektif Bantu Pelaku UMKM Mengatur Fokus dan Produktivitas Resmi Membeli Mobil Honda, Juna Hanya Bermodalkan Mahjong Berhasil Membeli Mobil Honda Brio Jangan Sampai Terlambat, Kuasai Pola Dan Taktik Simpel Dan Cuan Ala Husmita di Mahjong Ways Akhirnya Bocor, Data Yang Terlarang di Simpan Oleh Majong Statistika Perputaran Yang Sesuai Dengan Algoritma Terbaru Angin Sepoy Sepoy di Teras Rumah, Warga Mulai Paham Ritme Tenang Ala Mahjong Ways Dari Bali Hingga Seoul, Tren Spa Ramah Lingkungan dan Filosofi Mahjong Ways Mulai Jadi Gaya Hidup Baru Di Balik Hening dan Aroma Kayu Manis: Pola Ketenangan yang Sama Seperti Saat Menemukan Irama di Mahjong Wins Gelombang Baru Wellness di Asia Pasifik: Saat Spa dan Pola Mahjong Wins Sama-Sama Bicara Tentang Kesabaran dan Irama Rahasia Di Balik Senyum Para Penerima APSWC 2025 Awards: Dari Pola Hidup Seimbang Hingga Filosofi Mahjong Ways Wellness Tak Lagi Sekadar Tren: Data Menunjukkan Pola Mahjong Ways dan Mindfulness Kini Jadi Arah Baru Dunia Guru Matematika di Medan Temukan Pola Baccarat Saat Ngoreksi Jawaban Murid yang Selalu Salah di Nomor Ganjil Anak Kos di Depok Pelajari Pola Baccarat dari Jadwal Listrik Padam yang Selalu Tepat Jam 8 Malam Satpam Perkantoran Temukan Pola Baccarat Saat Lihat CCTV yang Sering Berhenti di Detik yang Sama Barista di Jakarta Temukan Pola Baccarat dari Urutan Pelanggan yang Pesan Kopi Sama Setiap Pagi Anak Penjual Es Dawet Temukan Pola Mahjong Wins 3 Saat Lihat Gula Cair yang Mengalir Tak Berhenti Nelayan Asal Lamongan Temukan Pola Baccarat Saat Jaringnya Selalu Penuh di Jam 3 Pagi Guru SD di Banyumas Kaitkan Pola Mahjong Wins 3 dengan Jadwal Murid yang Selalu Minta Izin di Jam Sama Mahasiswa DKV Asal Bandung Temukan Pola Baccarat dari Gradasi Warna yang Tak Sengaja Terbentuk di Layar Laptop Pegawai Kantoran di Jakarta Temukan Pola Baccarat Saat Printer Kantornya Selalu Macet di Dokumen Nomor Genap Petugas Parkir Mall di Medan Temukan Pola Mahjong Ways 2 Saat Tiket Parkir Sering Berulang di Angka Sama Penjahit di Bogor Temukan Pola Baccarat Saat Benangnya Putus Tepat Setelah Jahitan ke-12 Tukang Cukur Asal Solo Dapati Pola Baccarat Saat Mesin Cukur Macet Tepat di Huruf “S” di Kepala Pelanggan Montir di Bekasi Temukan Pola Mahjong Wins 3 Setelah Baut Mobil Sering Jatuh di Tempat Sama Tukang Becak di Cirebon Temukan Pola Mahjong Ways 3 Saat Ban Depannya Selalu Kempis di Hari Rabu Petugas Kebersihan di Tangerang Temukan Pola Baccarat Saat Sapu yang Dipakai Selalu Patah di Minggu Kedua Tips Pemain Baru Baccarat Kenali Pola dan Waktu Terbaik untuk Bertaruh Analisis Strategi Dua Langkah Baccarat Saat Harus Bertahan dan Saat Harus Berhenti Pola RTP Gate of Olympus Cenderung Naik di Malam Hari Sudah di Buktikan Langsung Cara Mengenali Pola Scatter Princess Starlight Tanpa Mengandalkan Keberuntungan Strategi Mahjong Ways 2 yang Fokus pada Ritme dan Transisi Pola Scatter Kenali 3 Pola Baccarat yang Sering Dianggap Mitos Padahal Terbukti Efektif Tips Mengatur Modal Baccarat Agar Tidak Habis Sebelum Pola Terbentuk Mahjong Ways 2: Cara Memanfaatkan Momentum Setelah Pola Gagal Berturut-turut Baccarat dan Pola Sirkulasi Waktu: Saat Keberuntungan Ternyata Bisa Dihitung Princess Starlight Rahasia di Balik Pola Cahaya yang Bikin Scatter Muncul Strategi Pemain Harian Untuk Cegah Penurunan RTP Saat Pola Spin Bergeser Strategi Jitu Pemain Baccarat Dalam Menjaga Irama Pola Spin Berlanjut Kombinasi Gate of Olympus dan Baccarat Jadi Tren Baru Para Pemain Analitik Analisis Komunitas Pola Lama Mulai Muncul Lagi Setelah Pembaruan RTP Global Irama Spin Mahjong Wins 3 Tampilkan Pola Naik Turun Unik di Fase Scatter Awal Cara Baru Mahjong Wins 3 Tunjukkan Pola Baru Dengan Kombinasi Naik-Turun RTP Unik Strategi Gabungan Baccarat dan Gate of Olympus Jadi Tren Baru Pemain Profesional Analisis Pola Baccarat Modern Antara Logika dan Intuisi Dalam Membaca Meja Strategi Pemain Harian Untuk Cegah Penurunan RTP Saat Pola Spin Bergeser Analisis Baru Ungkap Pola Kemenangan Baccarat Terbentuk Dari Lima Putaran Awal repository.tdjpublisher.com