Chuyên mục
Database PostgreSQL

Review công cụ quản trị PostgreSQL – DBeaver

Gần đây, có 1 anh em trong nhóm “Kho tài liệu kiến thức Database” có muốn tôi chia sẻ về các công cụ mà tôi thường dùng khi quản trị database. Đúng là khi tìm hiểu về quản trị Database, anh em sẽ thấy rất nhiều công cụ hỗ trợ, không biết chọn cái nào cho phù hợp với nhu cầu của mình.

Trong công việc quản trị Database PostgreSQL, thường thì tôi vẫn dùng pgadmin để monitor và quản trị thông thường. Lúc nào cần có case quan trọng cần thao tác cẩn thận hơn thì tôi dùng psql. Nói chung, combo này cũng không có gì nhiều để phàn nàn, ngoại trừ việc pgadmin quá chậm và khá nặng. Riêng việc khởi động nó lên cũng đã mất của tôi khá khá thời gian rồi.

Dạo gần đây, khi thực hiện dự án bên khách hàng, tôi đã học lỏm được 1 tool khá hay để quản trị PostgreSQL. Nó có tên là DBeaver.

Nói chung, nếu so sánh với pgadmin trên đầy đủ các khía cạnh thì tôi chưa thể, do thời gian trải nghiệm chưa đủ nhiều. Tuy nhiên, nếu chỉ xét đến vấn đề khởi động chậm thì dùng DBeaver, tôi đã không còn phải buồn phiền về chuyện đó nữa.

DBeaver rất nhẹ, chiếm khá ít tài nguyên khi hoạt động.

Giao diện thì khá rõ ràng, dễ nhìn. Nhìn cấu trúc quản lý database của nó cũng không khác pgadmin là mấy.

Tuy nhiên, nó cũng vẫn có 1 số bug. Nhiều khi database của tôi còn sống nhăn răng, mà nó cứ báo không kết nối được. Khởi động lại DBeaver thì lại kết nối được :))

À, một cái thú vị nữa, DBeaver không chỉ hỗ trợ quản lý PostgreSQL database, nó còn hỗ trợ rất nhiều RDBMS khác nữa như Oracle, MySQL, MongoDB, …Bạn có thể sử dụng DBeaver để quản lý nhiều loại database trên 1 giao diện được đấy.

Tóm lại, với đặc thù công việc của tôi là hay phải đi triển khai dự án cho khách hàng, phải kết nối với nhiều loại database,  thời gian ngồi với khách hàng khá ngắn, tôi cần ưu tiên các yếu tố nhanh, gọn, nhẹ.

Thì DBeaver là 1 công cụ khá ok.

Nếu anh em cần ưu tiên độ ổn định, thì pgadmin vẫn là giải pháp số 1.

Còn ý kiến anh em thế nào, hãy chia sẻ ở dưới bài viết hoặc tham gia nhóm “Kho tài liệu kiến thức Database” nhé.

Nguồn: https://dangxuanduy.com/

Xin cho tôi được biết, bạn cảm thấy bài viết này như thế nào? Ý kiến của bạn sẽ giúp tôi nâng cao chất lượng bài viết của mình.

    Hãy chia sẻ bài viết này nếu bạn thấy có ích nhé
    Chuyên mục
    Database Oracle

    12c New Features – So sánh Local Undo và Shared Undo

    Ở một số bài viết trước, tôi có đề cập đến khái niệm Local Undo, và có nói đó là 1 tính năng mới có trong bản Oracle Database 12.2. Vậy chi tiết hơn, Local Undo, hay mở rộng ra cùng với nó là khái niệm Shared Undo là gì, hãy cũng tìm hiểu trong bài viết này nhé.


       Giới thiệu về Shared Undo và Local Undo

       Shared Undo là gì

    Ở phiên bản Oracle Database 12c release 1 (hay 12.1.x), Undo data của tất cả các PDB trong CDB đều lưu chung trong 1 UNDO tablespace. Chế độ này gọi là Shared Undo.

    Trong chế độ Shared Undo, chỉ có 1 UNDO tablespace được active cho mỗi instance (Trong mô hình RAC, mỗi instance sẽ có 1 tablespace UNDO active).

    Khi bạn muốn thực hiện 1 số thao tác bảo trì trên PDB như clone hay unplug PDB, Oracle sẽ yêu cầu đóng PDB lại, để trong UNDO tablespace không còn bất cứ 1 giao dịch chưa commit nào nữa.

    Để kiểm tra xem database của bạn đang cấu hình Shared Undo hay không, hãy sử dụng câu lệnh sau:

    SQL> select * from database_properties where property_name='LOCAL_UNDO_ENABLED';

    Kết quả như sau tức là chế độ Shared Undo đang được kích hoạt.

    PROPERTY_NAME        PROPERTY_VALUE       DESCRIPTION
    -------------------- -------------------- --------------------------------------------------
    LOCAL_UNDO_ENABLED   FALSE                true if local undo is enabled
    

       Local Undo là gì

    Như các bạn thấy, trong chế độ Shared Undo, tất cả các PDB đều sử dụng chung 1 Undo tablespace. Mà ở trên đời này, phàm cái gì là của chung thì sẽ đến lúc có mâu thuẫn, trong Oracle Database cũng y như vậy.

    Kể từ bản Oracle Database 12c release 2 (hay 12.2.x), Oracle đưa thêm cho chúng ta một lựa chọn nữa, đó là: Cho phép mỗi 1 PDB có một UNDO tablespace riêng để lưu trữ  UNDO data của nó.

    Mặc định từ bản Oracle Database 12.2 trở đi, chế độ Local Undo sẽ được enable theo mặc định. Bạn cũng hoàn toàn có thể chuyển sang chế độ Shared Undo nếu muốn. Tuy nhiên, Oracle khuyến nghị chúng ta nên sử dụng chế độ Local Undo để tối ưu hóa được hiệu năng.

    Ngoài ra, khi bạn muốn sử dụng các tính năng sau, điều kiện cần là chế độ Local Undo phải được kích hoạt:

       Hot clone

       Refreshable PDB

       PDB Relocate

       Flashback PDB

    Chạy câu lệnh kiểm tra bên trên để xem chế độ Local Undo đã được kích hoạt hay chưa

    PROPERTY_NAME        PROPERTY_VALUE       DESCRIPTION
    -------------------- -------------------- --------------------------------------------------
    LOCAL_UNDO_ENABLED   TRUE                 true if local undo is enabled
    

    Như vậy các bạn đã hiểu Local Undo và Shared Undo rồi chứ. Ở phần tiếp theo của bài viết, tôi sẽ hướng dẫn các bạn cấu hình qua lại giữa 2 chế độ này.


       Chuyển database về Shared Undo mode

       Kiểm tra lại các tablespace UNDO

    Đầu tiên, các bạn kiểm tra các tablespace UNDO trong toàn bộ CDB nhé

    SQL> select tablespace_name, con_id from cdb_tablespaces;
    

    Các bạn thấy không, mỗi PDB (hay container) đang có 1 Undo tablespace riêng và đều có tên là UNDOTBS1.

       Khởi động lại database ở chế độ upgrade.

    Chế độ này thông thường chỉ áp dụng khi các bạn thực hiện nâng cấp database hay các tính năng mới.

    SQL> shutdown immediate
    SQL> startup upgrade

       Tắt chế độ Local Undo

    alter database local undo off;

       Khởi động lại database

    SQL> shutdown immediate
    SQL> startup

       Khởi động các PDB

    SQL> alter pluggable database pdb3 open;

       Kiểm tra lại:

    SQL> select * from database_properties where property_name='LOCAL_UNDO_ENABLED';

    Chú ý: Các bạn đã tắt chế độ Local Undo, tuy nhiên, các undo tablespace của các PDB vẫn tồn tại, mặc dù không còn được sử dụng. Chúng ta nên xóa các tablespace này đi để tránh nhầm lẫn cũng như tiết kiệm dung lượng.

    SQL> alter session set container=pdb3;
    SQL> drop tablespace UNDOTBS1 including contents and datafiles;

       Chuyển database về Local Undo mode

    Quy trình chuyển database từ Shared Undo mode sang Local Undo mode cũng rất đơn giản, các bạn làm theo các bước sau nhé

       Khởi động database ở chế độ Upgrade

    SQL> shutdown immediate 
    SQL> startup upgrade

       Kích hoạt chế độ Local Undo

    alter database local undo on;

       Khởi động lại database

    SQL> shutdown immediate
    SQL> startup
    SQL> alter pluggable database pdb3 open;

    Như vậy là xong rồi đó. Các bạn chú ý là khi chuyển database về từ Shared Undo mode sang Local Undo mode, các PDB sẽ tự động tạo ra các Undo tablespace của riêng mình mà không cần các bạn phải can thiệp đâu.

       Kiểm tra lại

    Sử dụng lệnh sau:

    select con_id, tablespace_name
    from   cdb_tablespaces
    where  tablespace_name LIKE 'UNDO%'
    order by con_id;

    Kết quả như sau:

        CON_ID TABLESPACE_NAME
    ---------- ------------------------------
             1 UNDOTBS1
             7 UNDO_1
    

    Các bạn sẽ thấy UNDO_1 chính là Undo tablespace mới được tạo ra khi bạn kích hoạt chế độ Local Undo đấy.

    Như vậy là tôi đã giới thiệu đến các bạn 2 chế độ mới rất thú vị trong phiên bản Oracle database 12c, nếu các bạn có câu hỏi nào, hãy để lại comment ở dưới bài viết này, hoặc tham gia vào nhóm “Kho tài liệu kiến thức về Database” để yêu cầu tôi demo 1 tính năng hay sản phẩm về database nào đó nhé.

    Nguồn: https://dangxuanduy.com/

    Xin cho tôi được biết, bạn cảm thấy bài viết này như thế nào? Ý kiến của bạn sẽ giúp tôi nâng cao chất lượng bài viết của mình.

      Hãy chia sẻ bài viết này nếu bạn thấy có ích nhé

       

      Chuyên mục
      Database Oracle Tính năng hay

      12c New Features – Hướng dẫn kỹ thuật Hot clone PDB

      Trong bài viết “12c New Features – Remote Clone PDB“, tôi đã giới thiệu đến các bạn kỹ thuật remote clone PDB khá tiện lợi đã có trên bản 12.1.0.2. Tuy nhiên, nó vẫn còn 1 số hạn chế, trong đó có việc: Trong quá trình clone, PDB phải ở trong trạng thái readonly, tức là không thể chỉnh sửa, thay đổi gì được.

      Tin vui là từ bản 12.2.0.1 trở đi, Oracle đã bổ sung 1 kỹ thuật Hot clone để khắc phục hạn chế này. Trong bài viết này tôi sẽ hướng dẫn các bạn cách thực hiện nhé

         Chuẩn bị môi trường

      Trong bài lab này, tôi có 2 CDB nằm trên 2 máy chủ khác nhau:

         Thông tin Server 1:

      IP: 192.168.50.34

      OS: Oracle Linux 7

      Phiên bản Oracle Database 12.2.0.1

      Tên CDB: orcl12c

      Các PDB thuộc CDB:

      SQL> show pdbs
      
          CON_ID CON_NAME                       OPEN MODE  RESTRICTED
      ---------- ------------------------------ ---------- ----------
               2 PDB$SEED                       READ ONLY  NO
               3 PDB1                           READ WRITE NO
               5 PDB2                           READ WRITE NO
               7 PDB3                           READ ONLY  NO
      

         Server 2: 

      IP: 192.168.50.35

      OS: Oracle Linux 7

      Oracle Database 12.2.0.1

      Tên CDB: prod

      Nhiệm vụ của tôi bây giờ là tạo ra 1 PDB khác nằm trên CDB prod với cấu trúc và dữ liệu giống hệt với PDB3 trên CDB orcl12 (thao tác này còn gọi là clone). Việc này để tạo ra 1 môi trường kiểm thử để cho team phát triển làm việc. Tuy nhiên, điều kiện yêu cầu ở đây là:

      “Trong quá trình thực hiện Clone, không được làm ảnh hưởng đến hoạt động của PDB3.”


         Các bước thực hiện:

      Đầu tiên, tôi cần tạo ra 1 user trên CDB nguồn, tức là CDB chứa PDB mà tôi cần clone (trong tình huống này CDB đó là orcl12c)

         Kết nối vào CDB orcl12c

      $ sqlplus / as sysdba
      
      SQL*Plus: Release 12.2.0.1.0 Production on Mon Jul 19 23:49:49 2021
      
      Copyright (c) 1982, 2016, Oracle.  All rights reserved.
      
      
      Connected to:
      Oracle Database 12c Enterprise Edition Release 12.2.0.1.0 - 64bit Production
      
      
      SQL>
      

         Tạo global user

      SQL> CREATE USER c##clone_user IDENTIFIED BY oracle CONTAINER=ALL;
      SQL> GRANT CREATE SESSION, CREATE PLUGGABLE DATABASE TO c##clone_user CONTAINER=ALL;

      Câu lệnh trên sẽ tạo ra 1 global user có tên c##clone_user với password là oracle. User này tôi sẽ sử dụng ở bước sau để kết nối vào CDB orcl12c từ CDB prod và copy PDB3 về.

      Ở đây, các bạn đã thấy có 1 thay đổi so với cách remote clone ở phiên bản 12.1.0.2 rồi, đúng không? Đó là bạn sẽ dùng global user để kết nối, chứ không phải là local user nữa.

         Kiểm tra xem CDB orcl12c đã chạy ở chế độ ARCHIVE LOG hay chưa

      Lại thêm 1 điểm khác nữa, với cách remote clone, nó không yêu cầu database của bạn phải ở chế độ archive log. Tuy nhiên để sử dụng kỹ thuật hot clone, archive log mode cần được cấu hình.

      Để kiểm tra xem archive log đã được cấu hình hay chưa, bạn thực hiện câu lệnh như sau:

      SQL> archive log list
      Database log mode              Archive Mode
      Automatic archival             Enabled
      Archive destination            USE_DB_RECOVERY_FILE_DEST
      Oldest online log sequence     473
      Next log sequence to archive   475
      Current log sequence           475
      

      Kết quả như bên dưới, có nghĩa là archive log mode đã được cấu hình.

      Còn nếu kết quả khác, bạn thực hiện theo các bước trong bài viết này, để cấu hình ARCHIVE LOG cho database của mình nhé.

         Kiểm tra xem CDB orcl12c đã chạy ở chế độ LOCAL UNDO hay chưa

      Tiếp tục là 1 điểm khác. LOCAL UNDO là 1 cải tiến mới trong bản 12.2.0.1, và để sử dụng được hot clone, bạn cũng phải enable nó lên.

      SELECT property_name, property_value FROM database_properties WHERE property_name = 'LOCAL_UNDO_ENABLED';

      Kết quả như sau là OK nhé.

      PROPERTY_NAME                  PROPERTY_VALUE
      ------------------------------ ------------------------------
      LOCAL_UNDO_ENABLED             TRUE
      

      OK, như vậy các bước cần thực hiện trên PDB3 đã xong rồi đó. Bây giờ chúng ta chuyển sang CDB prod, nơi mà chúng ta muốn copy PDB3 về.

         Tạo database link trên CDB prod

      Đầu tiên, chúng ta cần tạo 1 TNS name để kết nối với CDB orcl12c từ CDB prod nhé.

      ORCL12C =
        (DESCRIPTION =
          (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.50.34)(PORT = 1521))
          (CONNECT_DATA =
            (SERVER = DEDICATED)
            (SERVICE_NAME = orcl12c)
          )
        )

      Sau đó, tôi kết nối vào CDB prod và tạo database link đến CDB orcl12c

      SQL> CREATE DATABASE LINK clone_link CONNECT TO c##clone_user IDENTIFIED BY oracle USING 'orcl12c';

         Thực hiện clone PDB

      Tiếp theo, tôi thực hiện copy PDB3 về CDB prod bằng lệnh sau:

      SQL> CREATE PLUGGABLE DATABASE pdb3prod FROM pdb3@clone_link;
      
      Pluggable database created.

      Và cuối cùng, tôi sẽ open PDB3PROD mới được clone lên:

      SQL> alter pluggable database pdb3prod open;
      
      Pluggable database altered.

      Nguồn: https://dangxuanduy.com/

      Xin cho tôi được biết, bạn cảm thấy bài viết này như thế nào? Ý kiến của bạn sẽ giúp tôi nâng cao chất lượng bài viết của mình.

        Hãy chia sẻ bài viết này nếu bạn thấy có ích nhé
        Chuyên mục
        Database Oracle Tính năng hay

        12c New Features – Hướng dẫn kỹ thuật Remote Clone PDB

        Bắt đầu từ bản 12.1.0.2 trở đi, bạn có thể tạo ra PDB là bản copy từ 1 PDB ở xa. Tính năng này rất hữu dụng trong các bài toán như:

           Di chuyển PDB từ nơi này đến nơi khác

           Tạo các môi trường test/dev cho team phát triển một cách nhanh chóng

        Trong bài viết này, tôi sẽ hướng dẫn các bạn các bước chi tiết và đầy đủ để thực hiện việc clone 1 PDB từ CDB này sang CDB khác bằng kỹ thuật remote clone nhé.


           Chuẩn bị môi trường

        Trong bài lab này, tôi có 2 CDB nằm trên 2 máy chủ khác nhau:

           Thông tin Server 1:

        IP: 192.168.50.34

        OS: Oracle Linux 7

        Phiên bản Oracle Database 12.2.0.1

        Tên CDB: orcl12c

        Các PDB thuộc CDB:

        SQL> show pdbs
        
            CON_ID CON_NAME                       OPEN MODE  RESTRICTED
        ---------- ------------------------------ ---------- ----------
                 2 PDB$SEED                       READ ONLY  NO
                 3 PDB1                           READ WRITE NO
                 5 PDB2                           READ WRITE NO
                 7 PDB3                           READ ONLY  NO
        

           Server 2: 

        IP: 192.168.50.35

        OS: Oracle Linux 7

        Oracle Database 12.2.0.1

        Tên CDB: prod

        Nhiệm vụ của tôi bây giờ là tạo ra 1 PDB khác nằm trên CDB prod với cấu trúc và dữ liệu giống hệt với PDB3 trên CDB orcl12 (thao tác này còn gọi là clone). Việc này để tạo ra 1 môi trường kiểm thử để cho team phát triển làm việc.

           Chú ý: Bài lab này có thể thực hiện được với phiên bản Oracle database 12.1.0.2, chứ không nhất thiết phải là 12.2.0.1 như trên


           Các bước thực hiện:

        Đầu tiên, tôi cần tạo ra 1 user trên PDB mà tôi cần clone (ở đây là PDB3 trên CDB orcl12)

           Kết nối vào PDB3

        $ sqlplus / as sysdba
        
        SQL*Plus: Release 12.2.0.1.0 Production on Mon Jul 19 23:49:49 2021
        
        Copyright (c) 1982, 2016, Oracle.  All rights reserved.
        
        
        Connected to:
        Oracle Database 12c Enterprise Edition Release 12.2.0.1.0 - 64bit Production
        
        SQL> alter session set container=pdb3;
        
        Session altered.
        
        SQL>
        

           Tạo user

        SQL> CREATE USER clone_user IDENTIFIED BY oracle;
        SQL> GRANT CREATE SESSION, CREATE PLUGGABLE DATABASE TO clone_user;

        Câu lệnh trên sẽ tạo ra 1 user có tên clone_user với password là oracle. User này tôi sẽ sử dụng ở bước sau để kết nối vào PDB3 từ CDB prod và copy PDB3 về.

           Đưa database PDB3 về chế độ READ ONLY

        SQL> conn / as sysdba
        SQL> ALTER PLUGGABLE DATABASE pdb3 CLOSE;
        SQL> ALTER PLUGGABLE DATABASE pdb3 OPEN READ ONLY;

        OK, như vậy các bước cần thực hiện trên PDB3 đã xong rồi đó. Bây giờ chúng ta chuyển sang CDB prod, nơi mà chúng ta muốn copy PDB3 về.

           Tạo database link trên CDB prod

        Đầu tiên, chúng ta cần tạo 1 TNS name để kết nối với PDB3 từ CDB prod nhé

        PDB3 =
          (DESCRIPTION =
            (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.50.34)(PORT = 1521))
            (CONNECT_DATA =
              (SERVER = DEDICATED)
              (SERVICE_NAME = pdb3)
            )
          )

        Sau đó, tôi kết nối vào CDB prod và tạo database link đến PDB3

        SQL> CREATE DATABASE LINK clone_link CONNECT TO clone_user IDENTIFIED BY oracle USING 'pdb3';

           Thực hiện clone PDB

        Tiếp theo, tôi thực hiện copy PDB3 về CDB prod bằng lệnh sau:

        SQL> CREATE PLUGGABLE DATABASE pdb3prod FROM pdb3@clone_link;
        
        Pluggable database created.

        Và cuối cùng, tôi sẽ open PDB3PROD mới được clone lên:

        SQL> alter pluggable database pdb3prod open;
        
        Pluggable database altered.

        Các bạn có thấy đơn giản và tiện lợi không? Ở bản 11g, để di chuyển 1 database từ nơi này sang nơi khác, tôi phải làm rất nhiều bước phức tạp, bây giờ thì chỉ cần vài thao tác đơn giản thế này thôi là xong.

        Tuy nhiên, không hẳn phương pháp này không có khuyết điểm, bạn sẽ nhận thấy các vấn đề sau, khi áp dụng nó trong thực tế:

           Trong quá trình clone, PDB3 phải đưa về trạng thái read only, tức là database sẽ không thể thay đổi gì được trong thời gian clone. Ở bản 12.2.0.1 trở đi, Oracle mới cho phép bạn có thể không cần đưa PDB3 về read only mà vẫn clone được. Kỹ thuật này gọi là hot clone    Do cơ chế clone là copy dữ liệu qua db link, do đó, chúng ta sẽ cần 1 đường truyền network giữa 2 server phải ổn định, không bị gián đoạn giữa chừng.    Thời gian clone phụ thuộc vào tốc độ đường truyền và kích thước của database. Thông thường tôi chỉ áp dụng phương pháp này với các database nhỏ nhỏ xinh xinh thôi.

        Nguồn: https://dangxuanduy.com/

        Xin cho tôi được biết, bạn cảm thấy bài viết này như thế nào? Ý kiến của bạn sẽ giúp tôi nâng cao chất lượng bài viết của mình.

          Hãy chia sẻ bài viết này nếu bạn thấy có ích nhé

           

          Chuyên mục
          Database Oracle

          Oracle 12c – Quản lý Tablespace

          Trong kiến trúc Multitenant được Oracle đưa vào từ bản 12c, có rất nhiều thứ đã thay đổi, trong đó có cả Tablespace.

          Cũng như user, giờ đây, tablespace cũng tồn tại ở 2 cấp độ: CDBPDB


             Kiểm tra thông tin tablespace

          Đầu tiên, bạn kết nối vào CDB bằng sqlplus

          sqlplus / as sysdba

          Bạn kiểm tra các PDB đang hoạt đông bằng câu lệnh sau:

          show pdbs
              CON_ID CON_NAME			  OPEN MODE  RESTRICTED
          ---------- ------------------------------ ---------- ----------
               2 PDB$SEED			  READ ONLY  NO
               3 PDB1 			  READ WRITE NO
               5 PDB2 			  READ WRITE NO
               7 PDB3 			  READ WRITE NO

          Bạn kiểm tra các tablespace hiện đang có bằng câu lệnh sau:

          select tablespace_name, con_id from cdb_tablespaces;

          Ở đây tôi dùng view có tiền tố cdb_* để lấy được thông tin trong toàn bộ CDB.

          Như các bạn thấy, CDB$ROOT cũng có tablespace, mà các PDB cũng có tablespace của riêng nó. Các bạn chú ý 1 điều này, bạn thấy tablespace UNDOTBS1 đều xuất hiện trong tất cả database không? Đó là tính năng mới trong phiên bản 12.2 đó, nó gọi là LOCAL UNDO, còn ở bản 12.1, chỉ có 1 tablespace UNDO cho tất cả thôi nhé.


             Quản lý tablespace ở CDB

          Quản lý tablespace ở mức CDB không có gì khác so với các phiên bản trước (non Multitenant).

             Tạo tablespace mới

          SQL> create tablespace data2022 datafile '/u01/app/oradata/CDB1/data2022_1.dbf' size 10G;
          
          Tablespace created.
          

             Add thêm datafile mới:

          SQL> alter tablespace data2022 add datafile '/u01/app/oradata/CDB1/data2022_2.dbf' size 10G;
          
          Tablespace altered.

             Drop tablespace

          SQL> drop tablespace data2022 including contents and datafiles;
          
          Tablespace dropped.

             Quản lý tablespace ở mức PDB

          Cơ bản là cũng không có gì khác đâu, chỉ lưu ý bạn 1 điều là bạn muốn tạo tablespace trong PDB nào bạn phải kết nối đúng với PDB đấy nhé.

          SQL> alter session set container=pdb1;
          
          Session altered.

             Tạo mới tablespace

          SQL> create tablespace pdb1_data2022 datafile '/u01/app/oradata/CDB1/pdb1/data2022_1.dbf' size 10G; 
          
          Tablespace created.

             Add thêm datafile

          SQL> alter tablespace pdb1_data2022 add datafile '/u01/app/oradata/CDB1/pdb1/data2022_2.dbf' size 10G;
          
          Tablespace altered.

          Kiểm tra lại:

          SQL> select tablespace_name from dba_tablespaces;
          
          TABLESPACE_NAME
          ------------------------------
          SYSTEM
          SYSAUX
          UNDOTBS1
          TEMP
          USERS
          PDB1_DATA2022
          
          6 rows selected.

          Ở đây, tôi dùng view có tiền tố dba_* để xem các thông tin của PDB.

             Drop tablespace 

          Và cuối cùng là drop tablespace bằng lệnh sau

          SQL> drop tablespace pdb1_data2022 including contents and datafiles;  
          
          Tablespace dropped.

          Nguồn: https://dangxuanduy.com/

          Xin cho tôi được biết, bạn cảm thấy bài viết này như thế nào? Ý kiến của bạn sẽ giúp tôi nâng cao chất lượng bài viết của mình.

            Hãy chia sẻ bài viết này nếu bạn thấy có ích nhé

             

             

            Chuyên mục
            Database Oracle

            Case study: Khôi phục Oracle database khi server bị hỏng hoàn toàn

            Bài viết này tôi thực hiện theo yêu cầu của 2 bạn Nguyen Trung và  Maxo Mac trong nhóm “Kho tài liệu kiến thức Database”.

            Bài toán đặt ra là: Giả sử database server bị hỏng hoàn toàn, nhưng thật may mắn chúng ta đã có trong tay bản backup và database đã cấu hình Archive log mode. Vậy các bước để khôi phục bản backup này lên 1 server mới như thế nào?

            Hãy thực hiện cùng tôi nhé.

            À trước khi đi vào các bước để restore database từ bản backup, chúng ta cần review lại quy trình backup xem có đủ điều kiện để khôi phục lại không đã.


               Quy trình backup

            Đây là một quy trình backup cơ bản mà tôi khuyến nghị. Nó vừa đủ để khôi phục lại dữ liệu tại thời điểm gần nhất, tuy nhiên tùy vào hoàn cảnh cụ thể, các bạn có thể đưa vào các tham số để tối ưu thời gian backup, hoặc tối ưu dung lượng lưu trữ backup.

               Bước 1:  Đặt chế độ autobackup cho control file và spfile

            RMAN> CONFIGURE CONTROLFILE AUTOBACKUP ON;
            
            new RMAN configuration parameters:
            CONFIGURE CONTROLFILE AUTOBACKUP ON;
            new RMAN configuration parameters are successfully stored
            

               Bước 2: Backup full database

            RMAN> backup as compressed backupset database;

            Kết quả:

            Starting backup at 12-JUL-21
            allocated channel: ORA_DISK_1
            channel ORA_DISK_1: SID=62 device type=DISK
            channel ORA_DISK_1: starting compressed full datafile backup set
            channel ORA_DISK_1: specifying datafile(s) in backup set
            input datafile file number=00001 name=/u01/app/oradata/PROD/datafile/o1_mf_system_jgqs2yvr_.dbf
            input datafile file number=00003 name=/u01/app/oradata/PROD/datafile/o1_mf_sysaux_jgqs4dg4_.dbf
            input datafile file number=00004 name=/u01/app/oradata/PROD/datafile/o1_mf_undotbs1_jgqs55l6_.dbf
            input datafile file number=00007 name=/u01/app/oradata/PROD/datafile/o1_mf_users_jgqs56np_.dbf
            channel ORA_DISK_1: starting piece 1 at 12-JUL-21
            channel ORA_DISK_1: finished piece 1 at 12-JUL-21
            piece handle=/u01/app/fra/PROD/backupset/2021_07_12/o1_mf_nnndf_TAG20210712T145640_jgqxfshr_.bkp tag=TAG20210712T145640 comment=NONE
            channel ORA_DISK_1: backup set complete, elapsed time: 00:00:55
            Finished backup at 12-JUL-21
            
            Starting Control File and SPFILE Autobackup at 12-JUL-21
            piece handle=/u01/app/fra/PROD/autobackup/2021_07_12/o1_mf_s_1077721056_jgqxhjz6_.bkp comment=NONE
            Finished Control File and SPFILE Autobackup at 12-JUL-21

            Sau khi backup database xong, tôi sẽ có bản backup được lưu tại thư mục Fast Recovery Area với cấu trúc như sau:

               Bước 3: Archiving current redo log

            RMAN> sql 'alter system archive log current';

            Kết quả:

            using target database control file instead of recovery catalog
            sql statement: alter system archive log current

               Bước 4: Backup archive log

            RMAN> backup as compressed backupset archivelog all;

             

            Starting backup at 12-JUL-21
            current log archived
            using channel ORA_DISK_1
            channel ORA_DISK_1: starting compressed archived log backup set
            channel ORA_DISK_1: specifying archived log(s) in backup set
            input archived log thread=1 sequence=1 RECID=1 STAMP=1077720688
            input archived log thread=1 sequence=2 RECID=2 STAMP=1077721073
            channel ORA_DISK_1: starting piece 1 at 12-JUL-21
            channel ORA_DISK_1: finished piece 1 at 12-JUL-21
            piece handle=/u01/app/fra/PROD/backupset/2021_07_12/o1_mf_annnn_TAG20210712T145753_jgqxj17g_.bkp tag=TAG20210712T145753 comment=NONE
            channel ORA_DISK_1: backup set complete, elapsed time: 00:00:07
            Finished backup at 12-JUL-21
            
            Starting Control File and SPFILE Autobackup at 12-JUL-21
            piece handle=/u01/app/fra/PROD/autobackup/2021_07_12/o1_mf_s_1077721080_jgqxj8bg_.bkp comment=NONE
            Finished Control File and SPFILE Autobackup at 12-JUL-21

            Các bạn có nhìn thấy đoạn cuối cùng không, sau mỗi lần backup, RMAN sẽ tự động backup cả control file và spfile vào trong thư mục autobackup nữa.


               Quy trình Restore

               Tạo cấu trúc thư mục giống với server cũ

            mkdir -p /u01/app/oradata/PROD
            mkdir -p /u01/app/fra/PROD
            mkdir -p /u01/app/oracle/admin/prod/adump

               Chuyển bản backup sang server mới

            Bạn chuyển thư mục backupset và autobackup sang server mới và giải nén chúng ra

            mv autobackup.tar backupset.tar /u01/app/fra/PROD/
            cd /u01/app/fra/PROD/
            tar -xvf autobackup.tar
            tar -xvf backupset.tar

               Startup nomount với dummy spfile

            export ORACLE_HOME=/u01/app/oracle/product/12.2/db_1
            export ORACLE_SID=prod
            $ rman target /
            Recovery Manager: Release 12.2.0.1.0 - Production on Mon Jul 12 15:25:36 2021
            
            Copyright (c) 1982, 2017, Oracle and/or its affiliates. All rights reserved.
            
            connected to target database (not started)
            
            RMAN>

            Sau đó bạn gõ lệnh startup nomount, Oracle sẽ khởi động một dummy instance (instance giả).

            RMAN> startup nomount

            Kết quả:

               Restore spfile

            Sau đó, chúng ta sẽ tiến hành khôi phục lại spfile từ bản autobackup

            cd /u01/app/fra/PROD/autobackup/2021_07_12
            
            restore spfile from '/u01/app/fra/PROD/autobackup/2021_07_12/o1_mf_s_1077721080_jgqxj8bg_.bkp';

            Kết quả:

            Starting restore at 12-JUL-21
            using target database control file instead of recovery catalog
            allocated channel: ORA_DISK_1
            channel ORA_DISK_1: SID=37 device type=DISK
            
            channel ORA_DISK_1: restoring spfile from AUTOBACKUP /u01/app/fra/PROD/autobackup/2021_07_12/o1_mf_s_1077721080_jgqxj8bg_.bkp
            channel ORA_DISK_1: SPFILE restore from AUTOBACKUP complete
            Finished restore at 12-JUL-21

            Sau khi restore spfile thành công, các bạn sẽ thấy 1 spfile xuất hiện trong $ORACLE_HOME/dbs/

            Tôi restart lại instance để spfile mới được đọc.

            RMAN> startup force nomount

               Restore Controlfile

            RMAN> restore controlfile from '/u01/app/fra/PROD/autobackup/2021_07_12/o1_mf_s_1077721080_jgqxj8bg_.bkp';

            Sau khi restore control file thành công, tôi đưa database về trạng thái mount

            RMAN> alter database mount;
            Statement processed
            released channel: ORA_DISK_1

               Restore database

            Bạn gõ lệnh sau để restore database:

            RMAN> restore database;

               Recover database

            Tiếp theo bạn tiến hành recover database theo các bước sau

            Bạn kiểm tra lại archive log hoặc các bản backup của archive log xem sequence cuối cùng của nó là bao nhiêu.

            RMAN> list backup of archivelog all;

            Kết quả:

            List of Backup Sets
            ===================
            
            BS Key Size Device Type Elapsed Time Completion Time
            ------- ---------- ----------- ------------ ---------------
            5 44.94M DISK 00:00:06 12-JUL-21
            BP Key: 7 Status: AVAILABLE Compressed: YES Tag: TAG20210712T160121
            Piece Name: /u01/app/fra/PROD/backupset/2021_07_12/o1_mf_annnn_TAG20210712T160121_jgr171op_.bkp
            
            List of Archived Logs in backup set 5
            Thrd Seq Low SCN Low Time Next SCN Next Time
            ---- ------- ---------- --------- ---------- ---------
            1 1 1408558 12-JUL-21 1425948 12-JUL-21
            1 2 1425948 12-JUL-21 1426176 12-JUL-21
            1 3 1426176 12-JUL-21 1429548 12-JUL-21
            1 4 1429548 12-JUL-21 1429567 12-JUL-21

            Theo như kết quả bên trên, tôi có thể recover được dữ liệu cho đến hết sequence archive log thứ 4 của thread 1. Do đó tôi thực hiện câu lênh tiếp theo như sau để recover được tối đa dữ liệu

            run
            {
            SET UNTIL SEQUENCE 5 THREAD 1;
            RECOVER DATABASE;
            }

            Chú ý: SET UNTIL SEQUENCE=5 sẽ làm cho RMAN recover dữ liệu đến hết sequence 4 và dừng lại ở ngay sequence 5.

               Open resetlogs

            Và bước cuối cùng, tôi thực hiện open database với tùy chọn resetlogs (để bắt đầu 1 cuộc đời mới cho database)

            RMAN> alter database open resetlogs;

            Bạn có thể kiểm tra lại kết quả sau khi đã open resetlogs xong

            Như vậy là tôi đã restore thành công 1 database sang server mới rồi đó. Nếu các bạn còn câu hỏi gì khác, có thể để lại comment dưới bài viết này hoặc trong group “Kho tài liệu kiến thức Database” nhé.

            Nguồn: https://dangxuanduy.com/

            Xin cho tôi được biết, bạn cảm thấy bài viết này như thế nào? Ý kiến của bạn sẽ giúp tôi nâng cao chất lượng bài viết của mình.

              Hãy chia sẻ bài viết này nếu bạn thấy có ích nhé

               

               

              Chuyên mục
              Database Oracle

              Oracle 12c – Quản lý User trong CDB và PDB

              Kiến trúc Multitenant được giới thiệu trong phiên bản Oracle Database 12c cho phép 1 CDB có thể quản lý nhiều PDB.

              Bài viết này sẽ hướng dẫn bạn cách quản lý user và quyền trong CDB và PDB.


                 Giới thiệu

              Kiến trúc Multitenant database có cách quản lý user mở rộng hơn 1 chút so với kiến trúc truyền thống. Ở trong kiến trúc này, user chia làm 2 loại:

                 Common user: User cho toàn bộ CDB và PDB. Bạn có thể sử dụng user này để kết nối vào cả CDB và PDB

                 Tên của Common User phải có tiền tố C## hoặc c## và là duy nhất trong tất cả các container.

                 Default tablespace, temporary tablespace, profile được gán cho Common User phải tồn tại trong tất cả container.

                 Local User: User của từng PDB. Bạn chỉ có thể dùng user này để kết nối vào PDB mà nó được tạo ra.

                 Ngược lại với Common User, tên của Local user không được chứa tiền tố C## hoặc c##, và chỉ cần duy nhất trong PDB.

              Tương tự như vậy chúng ta cũng có 2 khái niệm Common Role và Local Role, hiểu đơn giản là áp dụng ở mức CDB hay PDB.


                 Tạo Common User

                 Kết nối vào Root Container

              Common user là user cho toàn bộ CDB và PDB, do đó, để tạo Common user, trước tiên bạn cần phải kết nối vào CDB đã

              sqlplus / as sysdba

                 Tạo Common User:

              CREATE USER c##duydx IDENTIFIED BY oracle CONTAINER=ALL;
              GRANT CREATE SESSION TO c##duydx CONTAINER=ALL;

                 Chú ý: Khi bạn đã kết nối vào root container (hay CDB), bạn có thể không cần chỉ ra mệnh đề CONTAINER=ALL, vì nó sẽ tự động được thêm vào câu lệnh.

                 Kết nối thử

               

              Kết nối vào CDB

              sqlplus c##duydx/oracle

              Kết nối vào PDB

              sqlplus c##duydx/oracle@pdb1


                 Tạo Local User

                 Tạo Local User bằng cách kết nối vào CDB

              sqlplus / as sysdba

              Bạn sử dụng mệnh đề CONTAINER=CURRENT để chỉ ra user này sẽ được tạo cho PDB hiện bạn đang kết nối đến.

              ALTER SESSION SET CONTAINER = pdb1;
              CREATE USER duydx IDENTIFIED BY oracle CONTAINER=CURRENT;
              GRANT CREATE SESSION TO duydx CONTAINER=CURRENT;

                 Tạo Local User bằng cách kết nối thẳng vào PDB

              sqlplus sys/oracle@pdb1 as sysdba

              Bạn có thể tạo Local User cho PDB mà không khác gì so với database theo kiến trúc cũ.

              CREATE USER duydx IDENTIFIED BY oracle;
              GRANT CREATE SESSION TO duydx;

                 Kiểm tra

               

              Kết nối vào PDB

              Kết nối vào CDB

                 Kết luận: Như vậy Local User có thể kết nối vào PDB nhưng không thể kết nối đến CDB.

              Nguồn: https://dangxuanduy.com/

              Xin cho tôi được biết, bạn cảm thấy bài viết này như thế nào? Ý kiến của bạn sẽ giúp tôi nâng cao chất lượng bài viết của mình.

                Hãy chia sẻ bài viết này nếu bạn thấy có ích nhé
                Chuyên mục
                Database Oracle

                Oracle 12c – Hướng dẫn thêm service name cho PDB

                Ở phiên bản 11g và các phiên bản trước đó, bạn có thể tạo nhiều service name cho database của mình.

                Ví dụ: Database orcl có 2 service name là orclprod và orcldb, cho phép người dùng sử dụng cả 2 service name đó để kết nối vào database.

                Để làm được điều đó, bạn chỉ cần chỉnh sửa lại tham số khởi tạo service_names như sau

                ALTER SYSTEM SET SERVICE_NAMES = 'orclprod, orcldb';

                và đăng ký với listener lại là xong

                ALTER SYSTEM REGISTER;

                Bắt đầu từ phiên bản Oracle Database 12c, do phát triển thành mô hình Multitenant, nên có thể bạn sẽ thấy hơi lạ lẫm một chút.

                Với CDB, để thay đổi hay thêm service name, bạn có thể làm tương tự như ở phiên bản trước. Nhưng với PDB, để làm được điều này, bạn sẽ cần một quy trình rất khác.

                Trong bài viết này tôi sẽ hướng dẫn các bạn thực hiện việc thêm mới 1 service name cho PDB nhé.


                   Kiểm tra

                Mặc định khi mới tạo PDB, Oracle sẽ tạo ra 1 service name có tên trùng với tên của PDB, như sau:

                   Kiểm tra các service name đang có

                select service_id, name, pdb from cdb_services;

                 

                SERVICE_ID NAME 		PDB
                ---------- -------------------- --------------------
                     1 SYS$BACKGROUND	CDB$ROOT
                     2 SYS$USERS		CDB$ROOT
                     5 orcl12cXDB		CDB$ROOT
                     6 orcl12c		CDB$ROOT
                     9 pdb1 		PDB1
                     9 pdb3 		PDB3

                   Kết nối với service name

                Tôi sẽ kết nối đến PDB bằng phương thức Local Naming. Ở đây TNS Name mà tôi sử dụng như sau:

                PDB1 =
                  (DESCRIPTION =
                    (ADDRESS = (PROTOCOL = TCP)(HOST = 10.239.42.105)(PORT = 1521))
                    (CONNECT_DATA =
                      (SERVER = DEDICATED)
                      (SERVICE_NAME = pdb1)
                    )
                  )

                Bạn có thể kết nối vào PDB bằng TNS Name này

                $ sqlplus duydx/oracle@pdb1
                
                SQL*Plus: Release 12.2.0.1.0 Production on Fri Jul 9 14:25:01 2021
                
                Copyright (c) 1982, 2016, Oracle.  All rights reserved.
                
                Last Successful login time: Fri Jul 09 2021 14:04:24 +07:00
                
                Connected to:
                Oracle Database 12c Enterprise Edition Release 12.2.0.1.0 - 64bit Production
                
                SQL>

                   Tạo service name mới cho PDB

                Bài toán đặt ra là: Bây giờ làm thế nào để tôi có thể kết nối vào PDB1 với 1 service name khác, không phải là service name PDB1 nữa.

                Đầu tiên, bạn hãy tạo 1 tnsnames mới bằng cách chỉnh sửa file tnsnames.ora tại $ORACLE_HOME/network/admin (Chú ý: Biến môi trường $ORACLE_HOME là đường dẫn cài đặt Oracle Software)

                vi tnsnames.ora

                Bạn thêm 1 TNS Name mới vào như sau:

                MYPDB =
                  (DESCRIPTION =
                    (ADDRESS = (PROTOCOL = TCP)(HOST = 10.239.42.105)(PORT = 1521))
                    (CONNECT_DATA =
                      (SERVER = DEDICATED)
                      (SERVICE_NAME = mypdb)
                    )
                  )

                Trong đó tham số SERVICE_NAME chỉ ra service name mà bạn muốn tạo mới cho PDB

                Tiếp theo, bạn kết nối vào CDB sau đó chuyển sang PDB nhé

                $ sqlplus / as sysdba
                
                SQL*Plus: Release 12.2.0.1.0 Production on Sat Jul 10 14:47:50 2021
                
                Copyright (c) 1982, 2016, Oracle.  All rights reserved.
                
                
                Connected to:
                Oracle Database 12c Enterprise Edition Release 12.2.0.1.0 - 64bit Production
                
                SQL> alter session set container=pdb1;
                
                Session altered.
                
                SQL>

                Sau đó, chạy câu lệnh sau:

                BEGIN  
                  DBMS_SERVICE.create_service(  
                   service_name => 'mypdb',  
                   network_name => 'MYPDB'  
                  );  
                END;  
                /

                Câu lệnh trên sẽ tạo ra 1 service name mới có tên là “mydb”, và sử dụng thông tin trong TNS name MYPDB đã được khai báo ở bước trước.

                Bạn thử connect bằng service name này xem sao:

                $  sqlplus duydx/oracle@mypdb
                
                SQL*Plus: Release 12.2.0.1.0 Production on Sat Jul 10 14:51:48 2021
                
                Copyright (c) 1982, 2016, Oracle.  All rights reserved.
                
                Last Successful login time: Fri Jul 09 2021 14:25:06 +07:00
                
                Connected to:
                Oracle Database 12c Enterprise Edition Release 12.2.0.1.0 - 64bit Production
                
                SQL> show con_name
                
                CON_NAME
                ------------------------------
                PDB1

                Như vậy tôi đã cấu hình thêm 1 service name nữa cho PDB1 rồi đấy.

                Nếu bạn muốn tôi demo thêm những chức năng gì trong các Database, hãy comment bên dưới bài viết này hoặc tham gia group “Kho tài liệu kiến thức database” nhé.

                Nguồn: https://dangxuanduy.com/

                Xin cho tôi được biết, bạn cảm thấy bài viết này như thế nào? Ý kiến của bạn sẽ giúp tôi nâng cao chất lượng bài viết của mình.

                  Hãy chia sẻ bài viết này nếu bạn thấy có ích nhé
                  Chuyên mục
                  Database Oracle

                  Oracle 12c – Kết nối với CDB và PDB

                  Ở phiên bản 12c, Oracle chia ra 2 loại database: CDB và PDB. Điều này có thể làm cho bạn có đôi chút bỡ ngỡ lúc mới tiếp xúc.

                  Trong bài viết này tôi sẽ hướng dẫn các bạn cách kết nối vào CDB, PDB và biết được database mà các bạn kết nối vào là CDB hay PDB.


                     Môi trường thực hiện bài lab

                     Hệ điều hành: Oracle Linux 7.4    Phiên bản Oracle Database: 12.2.0.1.0

                     Kết nối vào CDB

                  Kết nối với CDB cũng giống như kết nối với bất kỳ database thông thường nào trước đây.

                     Kết nối từ máy chủ cài đặt database

                  $ export ORACLE_SID=orcl
                  $ sqlplus / as sysdba
                  SQL*Plus: Release 12.2.0.1.0 Production on Wed Jul 7 11:47:46 2021
                  
                  Copyright (c) 1982, 2016, Oracle. All rights reserved.
                  
                  Connected to:
                  Oracle Database 12c Enterprise Edition Release 12.2.0.1.0 - 64bit Production
                  
                  SQL>

                   

                  Bạn có thể kiểm tra database mình đang kết nối đến là CDB hay PDB bằng câu lệnh sau:

                  SQL> show con_name
                  
                  CON_NAME
                  ------------------------------
                  CDB$ROOT

                  Kết quả như ở trên có nghĩa là bạn đang kết nối vào CDB, còn không phải thì tức là bạn đang kết nối vào PDB.

                  Ở tại mức CDB, bạn có thể kiểm tra các PDB mà CDB đó đang quản lý

                  SQL> show pdbs
                  
                  CON_ID CON_NAME OPEN MODE RESTRICTED
                  ---------- ------------------------------ ---------- ----------
                  2 PDB$SEED READ ONLY NO
                  3 PDB1     MOUNTED
                  4 PDB4     MOUNTED
                  7 PDB3     MOUNTED

                     Kết nối theo kiểu Easy Connect

                  Để kết nối vào database theo hình thức EZ Connect hoặc Local Naming thì đều phải có username và password. Cụ thể cách tạo user trong CDB hay PDB tôi sẽ hướng dẫn các bạn ở bài viết khác nhé. Ở trong bài này, coi như các bạn đã được cung cấp username và password để kết nối rồi.

                  $ sqlplus c##duydx/oracle@10.239.42.105:1521/orcl
                  SQL*Plus: Release 12.2.0.1.0 Production on Wed Jul 7 15:52:37 2021
                  
                  Copyright (c) 1982, 2016, Oracle. All rights reserved.
                  
                  Connected to:
                  Oracle Database 12c Enterprise Edition Release 12.2.0.1.0 - 64bit Production
                  
                  SQL>

                  Trong đó, c##duydxoracle tương ứng là username và password của CDB orcl

                     Kết nối theo kiểu Local naming hay kết nối qua tnsnames

                  ORCL =
                  (DESCRIPTION =
                  (ADDRESS = (PROTOCOL = TCP)(HOST = 10.239.42.105)(PORT = 1521))
                  (CONNECT_DATA =
                  (SERVER = DEDICATED)
                  (SERVICE_NAME = orcl)
                  )
                  )

                   

                  $ sqlplus c##duydx/oracle@orcl
                  
                  SQL*Plus: Release 12.2.0.1.0 Production on Wed Jul 7 15:59:15 2021
                  
                  Copyright (c) 1982, 2016, Oracle. All rights reserved.
                  
                  Last Successful login time: Wed Jul 07 2021 15:52:38 +07:00
                  
                  Connected to:
                  Oracle Database 12c Enterprise Edition Release 12.2.0.1.0 - 64bit Production
                  
                  SQL>

                     Kết nối vào PDB

                   

                     Kết nối từ CDB rồi chuyển sang PDB

                  Đầu tiên bạn kết nối đến CDB như hướng dẫn ở trên, sau đó gõ lệnh

                  ALTER SESSION SET CONTAINER=pdb1;

                   

                  Kiểm tra lại

                  SQL> show con_name
                  
                  CON_NAME
                  ------------------------------
                  PDB1

                   

                     Kết nối theo kiểu EZ Connect

                   

                  $ sqlplus duydx/oracle@10.239.42.105:1521/pdb1
                  
                  SQL*Plus: Release 12.2.0.1.0 Production on Wed Jul 7 16:16:36 2021
                  
                  Copyright (c) 1982, 2016, Oracle. All rights reserved.
                  
                  Connected to:
                  Oracle Database 12c Enterprise Edition Release 12.2.0.1.0 - 64bit Production
                  
                  SQL>

                     Kết nối theo kiểu Local Naming

                   

                  PDB1 =
                  (DESCRIPTION =
                  (ADDRESS = (PROTOCOL = TCP)(HOST = werac3)(PORT = 1521))
                  (CONNECT_DATA =
                  (SERVER = DEDICATED)
                  (SERVICE_NAME = pdb1)
                  )
                  )

                   

                  $ sqlplus duydx/oracle@pdb1
                  
                  SQL*Plus: Release 12.2.0.1.0 Production on Wed Jul 7 16:17:28 2021
                  
                  Copyright (c) 1982, 2016, Oracle. All rights reserved.
                  
                  Last Successful login time: Wed Jul 07 2021 16:16:36 +07:00
                  
                  Connected to:
                  Oracle Database 12c Enterprise Edition Release 12.2.0.1.0 - 64bit Production
                  
                  SQL>

                  Như vậy là tôi đã demo xong các cách kết nối đến CDB và PDB mà bạn có thể sử dụng trong Oracle Database 12c. Nếu bạn muốn tôi demo thêm những chức năng gì trong các Database, hãy comment bên dưới bài viết này hoặc tham gia group “Kho tài liệu kiến thức database” nhé.

                  Nguồn: https://dangxuanduy.com/

                  Xin cho tôi được biết, bạn cảm thấy bài viết này như thế nào? Ý kiến của bạn sẽ giúp tôi nâng cao chất lượng bài viết của mình.

                    Hãy chia sẻ bài viết này nếu bạn thấy có ích nhé
                    Chuyên mục
                    Database Oracle

                    Hướng dẫn tạo mới PDB trong Oracle Database 12c

                    Trong Oracle Database phiên bản 12c, bạn có thể tạo mới PDB một cách rất dễ dàng đơn giản với chỉ 1 câu lệnh.

                       Môi trường hiện có

                    Phiên bản Oracle Database: 12.2.0.1.0

                    Hệ điều hành: CentOS 7

                       Hướng dẫn tạo PDB

                    Đầu tiên tôi sẽ kết nối vào CDB

                    $ sqlplus / as sysdba
                    SQL*Plus: Release 12.2.0.1.0 Production on Fri Jul 2 15:21:40 2021
                    
                    Copyright (c) 1982, 2016, Oracle.  All rights reserved.
                    
                    
                    Connected to:
                    Oracle Database 12c Enterprise Edition Release 12.2.0.1.0 - 64bit Production
                    
                    SQL>

                    Để biết được hiện đang có bao nhiêu PDB đang chạy ở trên CDB này, tôi dùng câu lệnh:

                    SQL> show pdbs
                    
                        CON_ID CON_NAME			  OPEN MODE  RESTRICTED
                    ---------- ------------------------------ ---------- ----------
                         2 PDB$SEED			  READ ONLY  NO
                         3 PDB1 			  READ WRITE NO
                         7 PDB3 			  READ WRITE NO
                    SQL>

                    Như các bạn thấy CDB hiện đang có 3 PDB, trong đó PDB$SEED là PDB hạt giống được tạo ra trong lúc tạo CDB. Mỗi khi tạo 1 PDB mới, Oracle sẽ sử dụng PDB$SEED để làm template.

                    Tiếp theo, bạn thực hiện tạo mới 1 PDB bằng câu lệnh sau:

                    SQL> create pluggable database PDB4 admin user pdb4dba identified by oracle;
                    Pluggable database created.

                    Như vậy là tôi đã tạo xong 1 PDB có tên là PDB4, với user quản trị là pdb4dba, password là oracle.

                    Tôi thử kiểm tra lại trạng thái của PDB mới này xem sao nhé

                    SQL> show pdbs
                    
                        CON_ID CON_NAME			  OPEN MODE  RESTRICTED
                    ---------- ------------------------------ ---------- ----------
                         2 PDB$SEED			  READ ONLY  NO
                         3 PDB1 			  READ WRITE NO
                         4 PDB4 			  MOUNTED
                         7 PDB3 			  READ WRITE NO
                    SQL>

                    Như các bạn thấy, khi mới tạo ra, PDB4 đang ở trạng thái MOUNTED. Lúc này ứng dụng vẫn chưa thể kết nối vào được. Tôi sẽ OPEN PDB bằng lệnh như sau:

                    SQL> ALTER PLUGGABLE DATABASE PDB4 OPEN;
                    Pluggable database altered.
                    

                    Bây giờ bạn có thể kết nối vào PDB được rồi đó.

                    Một mẹo vặt nữa, nếu bạn muốn sau này, mỗi khi CDB khởi động, các PDB cũng tự động được khởi động theo, bạn thực hiện câu lệnh sau khi các PDB đều đang OPEN.

                    SQL> alter pluggable database pdb4 save state;

                    Nếu còn câu hỏi nào khác, các bạn có thể để lại comment bên dưới bài viết này hoặc vào trong group “Kho tài liệu kiến thức Database” nhé. Hẹn gặp lại các bạn ở các bài viết sau.

                    Nguồn: https://dangxuanduy.com/

                    Xin cho tôi được biết, bạn cảm thấy bài viết này như thế nào? Ý kiến của bạn sẽ giúp tôi nâng cao chất lượng bài viết của mình.

                      Hãy chia sẻ bài viết này nếu bạn thấy có ích nhé