Thứ Hai, 30 tháng 11, 2020

Chuyển dữ liệu LONG thành CLOB trong Oracle Database

CREATE TABLE SQL_COMMAND
(
  SQL_COMMAND_ID  NUMBER(10)                    NOT NULL,
  API_CODE        VARCHAR2(50 BYTE)             NOT NULL,
  API_NAME        VARCHAR2(500 BYTE)            NOT NULL,
  SQL_COMMAND     LONG,

Quản lý Index trong Oracle Database

--1.CHECK
--Check Index unusable
select owner, index_name from dba_indexes where status='UNUSABLE';
    
select 'alter index ' || owner ||'.' || index_name ||' rebuild tablespace INDX nologging parallel 8 online;' from dba_indexes where status='UNUSABLE' 
and owner='TEST_OWNER';

Thủ tục tạo lại UNDO TABLESPACE trong Oracle Database

Mục đích: Khi chúng ta tạo undo tablespace lớn quá (ví dụ 500GB), sau thời gian monitor chúng ta thấy DB chỉ cần dùng 80GB mỗi node, khi đó chúng ta cần tạo lại undo tablespace để thu hồi mỗi node là 420GB*2 = 840GB.

Thủ tục chuyển dữ liệu sang phân vùng SAN khác_file system

Mục đích: Cần chuyển các dữ liệu từ phân vùng cũ (/data) sang phân vùng mới (/u02)
- Phân vùng /data nằm trên SAN cũ, dùng > 5 năm, sắp hỏng hóc
- Phân vùng /u02 là SAN mới trang bị

-- 1.Kiểm tra dung lượng tablespace
-- 280376.95 MB
select round(sum(bytes)/1024/1024, 2) 
from dba_data_files 
where (tablespace_name like 'INDX%' or tablespace_name like 'DATA%')
and tablespace_name  in ('DATA2016','INDX2016','DATA2015','INDX2015') 
order by file_name desc;

Thủ tục add đĩa vào diskgroup RECO trong AXIX

2:52 ST9985 HLRGW 1.83 SATA /dev/rhdisk5 RECO_0002 5005076307FFD2BD0000000000000013 1.83 hdisk47 hdisk47
2:10 ST9985 HLRGW 1.83 SATA /dev/rhdisk7 RECO_0003 5005076307FFD2BD0000000000000014 1.83 hdisk48 hdisk48
4:10 ST9985 HLRGW 1.83 SATA /dev/rhdisk18 RECO_0000 5005076307FFD2BD0000000000000015 1.83 hdisk49 hdisk49
4:11 ST9985 HLRGW 1.83 SATA /dev/rhdisk19 RECO_0001 5005076307FFD2BD0000000000000110 1.83 hdisk54 hdisk54

ASM_Chuyển dữ liệu từ phân vùng DATA sang RECO, BACKUP

--1.Check dung luong: 4.825.125 GB
select round(sum(bytes)/1024/1024,2) from dba_data_files where  tablespace_name='DATA2015' and file_name not like '+BACKUP%' and file_name not like '+BACKUP%';

Tìm các câu lệnh SQL chạy lâu, chiếm IO, chiếm physical read trong Oracle Database

--SQLs with elapsed time more then 1 hour
    SELECT *
    FROM dba_hist_snapshot where end_interval_time>=to_date('03/08/2017 00:00:00','dd/mm/yyyy hh24:mi:ss')
    and end_interval_time <=to_date('04/08/2017 01:00:00','dd/mm/yyyy hh24:mi:ss')
    order by end_interval_time;

Quản lý Role trong Oracle Database

ĐN: là nhóm quyền (privilege)


DBA_ROLES DS role                            
DBA_ROLE_PRIVS - Role gán cho user
USER_ROLE_PRIVS  - Role gán cho user hiện tại
ROLE_SYS_PRIVS - DS system privileges of roles

Quản lý Profile trong Oracle Database

Mọi user đều nhìn thấy Profile

Quản lý Quyền trong Oracle Database

Mục đích: Quản lý Quyền trong Oracle Database

Quản lý User trong Oracle Database

1. Check
SELECT * FROM DBA_USERS;
select sid, serial#, username, osuser, machine from v$session where username is not NULL;
select username, account_status, expiry_date, profile from dba_users;

Kiểm tra thông tin Oracle Database

1. Check
-- Check size DB
SELECT TABLESPACE_NAME, FILE_NAME, round(BYTES/1024/1024/1024,2) GB   FROM DBA_DATA_FILES;

Thay đổi tham số memory DB RAC trong Oracle Database

Quy trình thay đổi tăng kích thước Memory lên 48GB để tăng hiệu năng của CSDL.

Thủ tục khởi động lại CSDL XXX có chạy cả Oracle GoldenGate, DataGuard

 

STT

Công việc

Thời gian

1

Restart node 1

 

1.1

Dừng tiến trình đồng bộ DataGuard

SQL> ALTER DATABASE RECOVER MANAGED STANDBY DATABASE CANCEL;

Thủ tục thay đổi tham số audit_trail CSDL XXX trong Oracle Database

STT

Nội dung

Thực hiện

Phối hợp

Thời gian

        1             

 

Thay đổi tham số process

SQL> alter system set audit=NONE scope=spfile sid='*';

Thủ tục bật chế độ supplemental logging trên CSDL Oracle


TT

Nội dung

Thời gian

Thực hiện

1

Đặt chế độ supplemental logging trên CSDL

select SUPPLEMENTAL_LOG_DATA_MIN from v$database;

ALTER DATABASE ADD SUPPLEMENTAL LOG DATA;

Quản lý Memory trong Oracle Database


1. Check



select * from v$sga_dynamic_components;
PGA usage statistics:
select * from v$pgastat;

Bật, tắt instance trong Oracle Database

--1. Check
SQL> SELECT database_status FROM v$instance;
-- 2. Startup
STARTUP [FORCE] [RESTRICT] [PFILE=filename]
[EXCLUSIVE | PARALLEL | SHARED]
[OPEN [RECOVER][database]|MOUNT |NOMOUNT]

Thủ tục cập nhật các package, table Core trong Oracle Database

Mục đích: Các package, table Core có số lượng giao dịch gọi vào rất lớn nên không làm cẩn thận sẽ bị tăng tải và TREO toàn bộ DB.

--1.Khoá các user dang open (tru SYS%, %GGATE) luu lai thành scrip lock_user.sql
select 'alter user ' || username || ' account lock;' from DBA_USERS 
where account_status='OPEN' 
and username not in ('SYS','SYSTEM','SYSMAN','GGATE','GOLDENGATE') order by username;

Thủ tục gửi email trong Oracle Database

CREATE OR REPLACE 
PROCEDURE send_email_html (str_to        IN VARCHAR2,
                      str_subject   IN VARCHAR2,
                      str_body      IN VARCHAR2)

Tăng swap trên Linux (CentOS/RHEL) sử dụng LVM logical Volume.

Mục đích

Bố rung swap cho OS CentOS/RHEL, sử dụng LVM logical Volume.

MySQL Indexing

Index là khái niệm cơ bản và vô cùng quan trọng trong MySQL. Tuy nhiên, không hiểu vì sao, với các lập trình viên mới, họ chỉ hiểu index với vai trò đánh chỉ mục, giúp phân biệt các bản ghi. Đương nhiên đó là 1 ích lợi của index, tuy nhiên phần quan trọng nhất index mang lại là tăng hiệu năng của MySQL. Ở bài viết trước, tôi đã cho bạn đọc thấy được lợi thế của việc sử dụng index bằng các phân tích câu lệnh EXPLAIN. Trong bài viết này, tôi sẽ cho bạn đọc thấy rõ hơn cách MySQL lưu trữ index như thế nào và một vài kiểu index, kỹ thuật đánh index trong MySQL.

Chỉ mục (index) trong mysql

1. Khái niệm về chỉ mục (index) trong mysql

  • Chỉ mục (Index) là bảng tra cứu đặc biệt mà Database Search Engine có thể sử dụng để tăng nhanh thời gian và hiệu suất thu thập dữ liệu. Hiểu đơn giản, một chỉ mục là một con trỏ tới dữ liệu trong một bảng. Một chỉ mục trong một Database là tương tự như một chỉ mục trong Mục lục của cuốn sách.

[Mysql] Đánh Index cho hiệu năng cao

Index còn được gọi là key trong MySQL là một dạng data structure được storage engine sử dụng để tìm kiếm cho nhanh. Chúng có còn một vài lợi ích khác chúng tôi sẽ nói về sau.

How to Optimize MySQL: Indexes, Slow Queries, Configuration

Lời nói đầu

MySQL là một hệ quản trị cơ sở dữ liệu quan hệ phổ biến nhất thế giới, nhưng vẫn chưa được tối ưu hoá - nhiều người bỏ mặc nó theo giá trị mặc định mà không mở rộng nghiên cứu thêm nữa. Trong bài này, chúng tôi sẽ giới thiệu cho các bạn một số mẹo tối ưu hoá MySQL mà chúng ta đã đề cập trước đó, và kết hợp chúng với những điều mới mẻ xuất hiện từ đó.

Giới thiệu về MySQL Replication Master-Slave

Giới thiệu về MySql Replication

Khái niệm Replication

MySQL Replication là một quá trình cho phép bạn dễ dàng duy trì nhiều bản sao của dữ liệu MySQL bằng cách cho họ sao chép tự động từ một master tạo ra một cơ sở dữ liệu slave. Điều này rất hữu ích vì nhiều lý do bao gồm việc tạo điều kiện cho sao lưu cho dữ liệu, một cách để phân tích nó mà không sử dụng các cơ sở dữ liệu chính, hoặc chỉ đơn giản là một phương tiện để mở rộng ra.

Một số điều thú vị khi làm việc với Mongodb

Mongodb là một trong những loại cơ sở dữ liệu Nosql phổ biến nhất hiện nay, thuộc kiểu document, mã nguồn mở, data được lưu dưới dạng binary json (BSON). Được viết bằng C++ nên mongodb có khả năng tính toán với tốc độ cao, hỗ trợ dynamic schema, cả vertical scaling và horizontal scaling. Xin liệt kê một số điểm thú vị khi làm quen với mongodb:

Chỉ mục (index) trong mysql

1. Khái niệm về chỉ mục (index) trong mysql

  • Chỉ mục (Index) là bảng tra cứu đặc biệt mà Database Search Engine có thể sử dụng để tăng nhanh thời gian và hiệu suất thu thập dữ liệu. Hiểu đơn giản, một chỉ mục là một con trỏ tới dữ liệu trong một bảng. Một chỉ mục trong một Database là tương tự như một chỉ mục trong Mục lục của cuốn sách.

Những câu lệnh cơ bản trong MongoDB

Giới thiệu về mongodb

MongoDB là 1 hệ thống CSDL mã nguồn mở được phát triển và hỗ trợ bởi 10gen, là CSDL NoSQL hàng đầu được hàng triệu người sử dụng. Thay vì lưu trữ dữ liệu dưới dạng bảng và các tuple như trong các CSDL quan hệ thì nó lưu trữ dữ liệu dưới dạng JSON (trong MongoDB được gọi là dạng BSON vì nó lưu trữ dưới dạng binary từ 1 JSON document).

Chủ Nhật, 29 tháng 11, 2020

Chuyển 1 schema sử dụng datapump và dbms_file_transfer trong Oracle Database

Chuyển schema test_owner bằng file_transfer


1. Export dữ liệu
SQL> SELECT * FROM dba_directories;
SQL> create or replace directory GW='+reco_gold/dbaviet/dump';
-- create or replace directory subs as '/u03/subs/';
expdp userid=\"/ as sysdba\" dumpfile=test_owner_%u.dmp schemas=test_owner parallel=16 directory=GW NOLOGFILE=y

Chuyển dữ liệu sử dụng exprort, import cũ trong Oracle Database

Help: imp help=y || exp help=y
1. IMP
Note: 
- Nếu đã có dữ liệu rồi sẽ import 1 lần nữa
- User phải có quyền DBA thì mới import được object của schema này sang schema khác

Quản lý Pfile trong Oracle Database

Là file tham số lưu trữ các tham số của Instance như memory, sga, pga, process,....

Bổ sung control file trong Oracle Database

--Kiểm tra thông tin
select * from v$parameter where name like 'control%';

--control_files    2    /data/oradata/prepaid/control01.ctl, /data/oradata/prepaid/control02.ctl, /data/oradata/prepaid/control03.ctl

--Lấy thông tin hiện tại của database
select name from v$controlfile;

Quản lý dung lượng Temp trong Oracle Database

Mục đích: Quản lý dung lượng temp trong Oracle Database 10g, 11g, 12c, 19c

Quản lý Control Files trong Oracle Database từ A-Z

1. KIỂM TRA

Script Resize datafile trong Oracle Database

declare
   cursor c1 is select tablespace_name,file_id,max(block_id) mbid from dba_extents 
--   where tablespace_name in ('DATA_GPRS')
   group by tablespace_name,file_id;

Quản lý datafile trong Oracle Database

1.CHECK

-- Kiểm tra trạng thái:

--187 11167039014814 1/20/2014 10:57:50 AM 595 187 RECOVER READ WRITE 13503656762637 5/5/2022 2:53:37 PM 13391571876700 12/16/2021 9:07:13 PM 13408963390301 13408988992234 1/4/2022 3:15:15 PM 19373490176 2364928 10737418240 8192 0 8192 NONE 0 --> Mặc dù read write nhưng là RECOVER nên phải recover datafile này

select * from v$datafile where file#=187;

-- 187 DATA AVAILABLE 187 RECOVER -> Mặc dù AVAILABLE nhưng là RECOVER nên phải recover datafile này

select * from dba_data_files where file_id=187;

select * from v$datafile where status='RECOVER';

-- Dung luợng DB tính mỗi datafile (ngoài ra còn redo log, archived log, backup, flashback log,...)
select round(sum(bytes)/1024/1024/1024,2) "GB" from dba_data_files;

Quản lý Archied Redo Log Files trong Oracle Database

Note: Khi enable chế độ archive log thì redo log sẽ không bị ghi đè khi đầy, khi đó sẽ đẩy vào archive redo logs (hay còn gọi archived logs)

[VIP5] Quản lý Online Redo Log Files trong Oracle Database từ A-Z

--1. Check
set echo off
set feedback off
set linesize 120
set pagesize 35
set trim on
set trims on
set lines 120
col group# format 999
col thread# format 999
col member format a70 wrap
col status format a10
col archived format a10
col fsize format 999 heading "Size (MB)"

select l.group#, l.thread#,
f.member,
l.archived,
l.status,
(bytes/1024/1024) fsize
from
v$log l, v$logfile f
where f.group# = l.group#
order by 1,2

SELECT * FROM V$LOG
--where status  in ('INACTIVE','ACTIVE','CURRENT')
order by group#;

SELECT thread#, count(*) FROM V$LOG group by thread#;

SELECT * FROM V$LOGFILE order by group#;

SQL> COL DAY FORMAT a15;
SQL> COL HOUR FORMAT a4;
SQL> COL TOTAL FORMAT 999;

SELECT TO_CHAR(FIRST_TIME,'YYYY-MM-DD') DAY,
    TO_CHAR(FIRST_TIME,'HH24') HOUR,
    COUNT(*) TOTAL
    FROM V$LOG_HISTORY
    WHERE first_time >= sysdate - 1
    GROUP BY TO_CHAR(FIRST_TIME,'YYYY-MM-DD'),TO_CHAR(FIRST_TIME,'HH24')
    ORDER BY TO_CHAR(FIRST_TIME,'YYYY-MM-DD'),TO_CHAR(FIRST_TIME,'HH24')
    desc;

Các câu lệnh hay sử dụng để quản trị TABLESPACE trong Oracle Database

--1. CHECK
--Hiển thị dung lượng trống của tablespace
SELECT  a.tablespace_name,100 - ROUND ( (NVL (b.bytes_free, 0) / a.bytes_alloc) * 100) "%Usage",
    ROUND (a.bytes_alloc / 1024 / 1024) "Size MB",
    ROUND (a.bytes_alloc / 1024 / 1024)- ROUND (NVL (b.bytes_free, 0) / 1024 / 1024) "Used MB",
    ROUND (NVL (b.bytes_free, 0) / 1024 / 1024) "Free MB",
    --ROUND ( (NVL (b.bytes_free, 0) / a.bytes_alloc) * 100) "%Free", 
    ROUND (maxbytes / 1048576)  "Max MB", 
    round(maxbytes/1048576-(ROUND (a.bytes_alloc / 1024 / 1024)- ROUND (NVL (b.bytes_free, 0) / 1024 / 1024)),0) "Free_MB_Max",
    ROUND (ROUND ( (a.bytes_alloc - NVL (b.bytes_free, 0)) / 1024 / 1024)/  ROUND (maxbytes / 1048576) * 100) "%Used of Max"
    FROM (SELECT f.tablespace_name, SUM (f.bytes) bytes_alloc,  SUM (DECODE (f.autoextensible, 'YES', f.maxbytes, 'NO', f.bytes)) maxbytes
            FROM dba_data_files f
            GROUP BY tablespace_name) a,
        (SELECT f.tablespace_name, SUM (f.bytes) bytes_free  FROM dba_free_space f  GROUP BY tablespace_name) b
 WHERE a.tablespace_name = b.tablespace_name(+)  and  (a.tablespace_name in ('TEMP1','DATA201511','DATA2016','INDX','INDX2016'))
 order by "%Used of Max" desc;

[VIP5]Các lệnh hay sử dụng khi chuyển dữ liệu sử dụng DataPump (expdp, impdp) từ A-Z trong Oracle Database

Mục đích: Các lệnh hay sử dụng khi chuyển dữ liệu sử dụng DataPump (expdp, impdp) trong Oracle Database

Các câu lệnh hay sử dụng trong IBM DB2


1. Help
su - db2inst2
db2
db2 ==> ? (mọi lệnh của db2)
Db2 ==> ? Get (chi tiết lệnh get)

Thứ Bảy, 28 tháng 11, 2020

FIX LỖI GỬI EMAIL ORA-24247: network access denied by access control list (ACL) trong Oracle Database


-- Gui mail bi loi
begin
    binhtv_owner.send_email_html_m('tranbinh48ca@gmail.com, binhoracle@gmail.com','Test send to 02 emails', 'Body');
end;


ORA-24247: network access denied by access control list (ACL)
ORA-06512: at "SYS.UTL_TCP", line 17
ORA-06512: at "SYS.UTL_TCP", line 267
ORA-06512: at "SYS.UTL_SMTP", line 161
ORA-06512: at "SYS.UTL_SMTP", line 197
ORA-06512: at "binhtv_owner.send_email_html_m", line 5
ORA-06512: at line 2

Thứ Sáu, 27 tháng 11, 2020

ORA-12528 TNS listener all appropriate instances are blocking new connections in Oracle Database

Error:

C:\Windows\system32>sqlplus /nolog
SQL*Plus: Release 10.2.0.3.0 – Production on Wed Oct 1 19:40:51 2008
Copyright (c) 1982, 2006, Oracle.  All Rights Reserved.
 
SQL> connect sys@dbname as sysdba
Enter password:
ERROR: ORA-12528:
TNS:listener: all appropriate instances are blocking new connection

Thứ Ba, 24 tháng 11, 2020

Các lệnh hay dùng PFile và SPFile trong Oracle Database

Các câu lện hay sử dụng với PFILE và SPFILE:

PFILE
Nằm tại: $ORACLE_HOME/dbs/pfile
SQL> CONNECT sys/password AS SYSDBA
SQL> STARTUP PFILE=Init.ora
SQL> STARTUP PFILE=InitSID1.ora

Chủ Nhật, 22 tháng 11, 2020

Top 10 Hệ Quản Trị Cơ Sở Dữ Liệu Phổ Biến Nhất

Hệ quản trị cơ sở dữ liệu là một trong những kiến thức có ứng dụng quan trọng và được sử dụng phổ biến trong hầu hết mọi lĩnh vực công nghệ, tuy nhiên khá nhiều newbie mới học hoặc chưa có nhiều kinh nghiệm thường nhầm lẫn nhất về các khái niệm, cũng như “lấn cấn” trong các thao tác kiểm soát, tạo, cập nhật hay duy trì các cơ sở dữ liệu (database) trên các hệ quản trị CSDL (DBMS).

Thứ Sáu, 20 tháng 11, 2020

Hướng dẫn tối ưu hóa cấu trúc object, tablespace CSDL Oracle

  1. Cấu trúc bảng:

Khi tạo bảng mới cần áp dụng các phương án như sau:

  • Với bảng có dữ liệu lớn (2G trở lên) phải đánh partition.

- Với dữ liệu lịch sử thì đánh theo By Range.

- Với dữ liệu xác định trước được giá trị thì đánh theo By list.

- Với dữ liệu không có quy luật thì đánh theo By Hash.

[VIP] QUY TRÌNH (CHECKLIST) KIỂM TRA TRƯỚC KHI TIẾP NHẬN, THỰC HIỆN SAU KHI TIẾP NHẬN VÀ THIẾT LẬP LẠI CÁC THAM SỐ CHUẨN CỦA ORACLE DATABASE_Full

1. Hướng dẫn kiểm tra tiếp nhận DB
  • Một số nội dung công việc cần thực hiện và kiểm tra lại trước khi tiếp nhận hoặc đưa DB mới vào môi trường hoạt động:

QUY TRÌNH (CHECKLIST) KIỂM TRA TIẾP NHẬN ORACLE DATABASE

Tag: Checklist cài đặt, cấu hình Oracle Database

 Mục đích

  • Nâng cao tính chuyên nghiệp trong quản trị CSDL

  • Đảm bảo tính thông nhất trong toàn bộ hệ thống CSDL

  • Đảm bảo an toàn, giám sát CSDL khi đưa vào khai thác

QUY ĐỊNH (CHECKLIST) CÁC THAM SỐ CẤU HÌNH TỐI ƯU ORACLE DATABASE

 Mục đích

  • Nâng cao tính chuyên nghiệp trong cài đặt, cấu hình CSDL

  • Đảm bảo tính thông nhất trong toàn bộ hệ thống CSDL

  • Đảm bảo an toàn, giám sát CSDL khi đưa vào khai thác

Chủ Nhật, 15 tháng 11, 2020

Bật, tắt DB trong Oracle Database

1. Check

SELECT database_status FROM v$instance;

2. Startup

STARTUP [FORCE] [RESTRICT] [PFILE=filename]
[EXCLUSIVE | PARALLEL | SHARED]
[OPEN [RECOVER][database]|MOUNT |NOMOUNT]

ALTER database { MOUNT | OPEN |OPEN READ ONLY | OPEN READ WRITTE}

Thứ Sáu, 13 tháng 11, 2020

XÁC ĐỊNH THÔNG TIN CÂU LỆNH SQL CHẠY TRONG QUÁ KHỨ trong Oracle Database

Cần check câu lệnh có SQL Text "SELECT   binhtv.tab_seq.NEXTVAL...." hoặc có SQL_ID chạy lúc nào, plan thế nào thì thực hiện theo các bước sau:

1. Xác định sql_Id

select sql_id from DBA_HIST_SQLTEXT where sql_text like '%SELECT   binhtv.tab_seq.NEXTVAL%';

ĐỌC NHIỀU

Trần Văn Bình - Oracle Database Master