QuânSysAd's Blog: oracle
Hiển thị các bài đăng có nhãn oracle. Hiển thị tất cả bài đăng
Hiển thị các bài đăng có nhãn oracle. Hiển thị tất cả bài đăng

15 tháng 7 2019

SQL: Query không phân biệt chữ thường chữ hoa đối với Oracle

Cách 1 là hãy ép data thành một kiểu chũ thường hoặc chữ HOA bằng UPPER() hoặc LOWER() :
select * from my_table where upper(column_1) = upper('my_string');
HOẶC
select * from my_table where lower(column_1) = lower('my_string');
Nếu sử dụng LIKE thì bạn phải nối dấu % xung quanh chuỗi (string) mà bạn tìm kiếm
select * from my_table where lower(column_1) LIKE lower('my_string') || '%';
Cách 2:
Từ bản Oracle 10g trở đi thì đã có hàm REGEXP_LIKE(). Ta có thể chỉ ra _match_parameter_'i' để thực hiện tìm kiếm không phân biệt chữ thường chữ HOA (case-insensitive)
select * from my_table where regexp_like(column_1, '^my_string$', 'i');

25 tháng 10 2017

Oracle SQLPLUS không xóa được lệnh

Khi sử dụng sqlplus trên linux, thật khó chịu khi cần chạy lại hoặc chỉnh sửa lệnh khi bấm backspace đều không được. Để dễ sử dụng hơn ta nên cài chương trình rlwrap

yum install -y rlwrap

sau đó sử dụng lệnh sau để vào sqlplus

rlwrap sqlplus / as sysdba

Lúc này việc sử dụng sẽ ok hơn

13 tháng 9 2017

Oracle RMAN-06023 : no backup or copy of datafile 6 found to restore

Bạn cần restore RMAN, nhưng sau khi chạy restore thì báo thiếu file. Mặc dù bạn đã trỏ vào thư mục chứa file backup rồi.

Lỗi hiện lên đại loại như sau:

```
RMAN-06023: no backup or copy of datafile 6 found to restore
RMAN-06023: no backup or copy of datafile 4 found to restore
RMAN-06023: no backup or copy of datafile 3 found to restore
RMAN-06023: no backup or copy of datafile 1 found to restore
```

Nguyên nhân là bạn bật chết độ archive log và nó sẽ tạo một bản sao của control file ở phân vùng dự phòng. Và khi restore lại control file nó vẫn đọc thông tin cũ (đang chạy) thay vì thông tin trong control file mới (control file của bản backup).

Để xử lý Bạn cần shutdown database. Sau đó tìm các khu vực mà chứa control file cũ xóa hết đi sau đó thực hiện restore lại.

Chúc các bạn thành công.

Oracle RMAN 06558 archived log size of kb is bigger than available space

Nguyên nhân là ta đang cấp vùng archive log trong thiết lập oracle hơi ít. Ta cần tăng nó lên:
Lưu ý đây không phải là dung lượng ổ cứng thực của HĐH, mà đây là thông tin metadata nằm trong oracle ấn định oracle chỉ được dùng bao nhiêu trong tổng dung lượng lưu trữ.

```
alter system set db_recovery_file_dest_size=4096m scope=both;
shutdown immediate;
startup mount;
```

Hoặc có thể xóa bớt đi

DELETE ARCHIVELOG ALL;

Chúc các bạn thành công.

10 tháng 8 2017

Oracle Database: Không đăng nhập tài khoản sys trong Enterprise Manager và SQLDeveloper.

Bạn cài database, database startup bình thường. Tài khoản system có thể đăng nhập ok trên SQLDeveloper. Nhưng tài khoản sys không thể đăng nhập với quyền sysdba.
Kết nối bằng sqlplus / as sysdba không thể grant role sysdba cho tài khoản sys. Và oracle báo lỗi: ORA-01994: GRANT failed: password file missing or disabled
Nguyên nhân là do password file bị mất hoặc bị sai lệch tên. Bạn cần vào đường dẫn /u01/app/oracle/product/12.1.0/dbhome_1/dbs/ và tìm file orapw cộng với tên ORACLE_SID. Nếu ORACLE_SID khác, bạn hãy nhân đôi file đó lên và đổi tên lại theo cấu trúc orapwORACLE_SID tương ứng. Sau đó đăng nhập hoặc đổi mật khẩu lại.
Chúc các bạn thành công.

03 tháng 7 2017

Oracle: Restore RMAN gặp lỗi "ACDRROWTSINTCOL#"

Khi bạn restore RMAN gặp lỗi "ACDRROWTSINTCOL#". Rất có thể bạn đã lấy bản RMAN backup của phiên bản Oracle instance cũ và restore trên bản Oracle instance mới hơn (VD 21.2.0.1 restore trên bản 12.2.0.2)

Cách xử lý. Nên thử restore lại đúng phiên bản Oracle cũ.

09 tháng 6 2017

SQL Developer Connect DB

Đối với user system, cần kết nối với role default.

Khi đổi password system của PDB, cần chuyển tới container CDB$ROOT trước.

alter session set container=CDB$ROOT;

Đối password user system sử dụng:

ALTER USER system IDENTIFIED BY oracle;

Oracle: DATA_PUMP_DIR trong PDB

Thư mục Data Pump mặc định không hoạt động với PDB. Ta sẽ phải định nghĩa một đối tượng thư mục rõ ràng bên trong PDB để thực hiện export và import.
Lưu ý là không được tạo thư mục mà trùng tên với DATA_PUMP_DIR.


SQL> alter session set container=PDB;
SQL> create or replace directory IMPORTFOLDER as 'E:\Backup\DHSC 240417';
C:\> impdp system/oracle@PDB schemas=PDB directory=IMPORTFOLDER dumpfile=PDB.dmp logfile=PDB_IMP.log

07 tháng 6 2017

ORA-19809: limit exceeded for recovery files

Kiểm tra dung lượng phân vùng recovery

SQL> select name, (space_limit/1024/1024) ||'MB' as Space_Limit, (space_used/1024/1024)||'MB' as Space_Used from v$recovery_file_dest;

Nếu bị quá dung lượng cần nới rộng bằng lệnh:

SQL> alter system set db_recovery_file_dest_size=4096m scope=both;
SQL> shutdown immediate;
SQL> startup mount.

Hoặc phương pháp 2 là xóa hết archivelog bằng RMAN:

$ rman target /
RMAN> DELETE ARCHIVELOG ALL;

ORA-65093: multitenant container database not set up properly

shutdown immediate;
startup nomount;
ALTER SYSTEM SET "enable_pluggable_database"= TRUE SCOPE = SPFILE;
shutdown immediate;
startup mount;

05 tháng 6 2017

RMAN Oracle ORA-01194: file 1 needs more recovery to be consistent

Khi restore từ bản hot backup của Oracle thông qua RMAN, bạn sẽ gặp rất nhiều trường hợp hiển thị lỗi sau khi thực hiện restore và recover database bằng RMAN. Nhất là khi bạn restore ở một máy khác.
Nguyên nhân việc sinh lỗi này là do bạn tạo RMAN backup trong khi Database ở trong trạng thái OPEN (tức là DB vẫn đang hoạt động và cho phép ghi vào datafile). Và SCN của datafile header so với nội dung trong controlfile có thể lệch nhau. Lúc này ngoài các bản Backup RMAN của datafile. Bạn sẽ cần thêm bản backup của Archive log được tạo ra sau khi bạn backup data file database. 
Các thay đổi sẽ được ghi lại vào Archive log trong quá trình backup Datafile. Vì thế sau khi restore datafile xong, bạn cần apply thêm archived log để đồng bộ lại các thay đổi datafile so với controlfile.

Backup của Archived Log có 2 dạng. Dạng 1 là các file có đuôi .ARC nằm trong khu vực FAST RECOVERY AREA (FRA) và Dạng 2 là dạng Backup set chứa 1 tập hợp các file .ARC này.
Đối với các file Backup ở Dạng 1 thì bạn có thể apply trực tiếp bằng cách trỏ đường dẫn tới file này khi Oracle hỏi.
Đối với backup set thìbạn phải làm thêm 1 bước để giải nén các file .ARC từ backup set này để có thể sử dụng. Mặc định sau khi restore Archived log bằng RMAN thì các file ARC tạo ra sẽ tự động chuyển vào khu vực FRA và có thể dùng tùy chọn AUTO để recover khi Oracle hỏi.

Sau màn Giải thích hơi dài dòng thì bước tiếp theo là bạn phải xác định được ta cần apply thêm archive log. Để xác định cần apply archived log nào bạn dùng lệnh sau:

SQL> recover database using backup controlfile until cancel;

Lức này trên màn hình sẽ hiện ra bạn cần apply redo log nào (Ví dụ: O1_MF_1_415179_%U_.ARC).

Nếu bạn có backup các file có đuôi .ARC thì chỉ cần lần lượt chỉ đường dẫn tới các file này là OK.

Nếu bạn dùng RMAN để tạo backup set cho các archived này thì trong RMAN cần làm 1 bước để bung các file .ARC này ra.

Ví dụ

Đầu tiên ta cần xác định các SCN có trong từng backup set của archive log bằng lệnh:

RMAN> LIST BACKUP OF ARCHIVELOG ALL;

Tiếp theo là ta sẽ chỉ rõ ta cần restore từ SCN nào tới SCN nào.

RMAN> restore archivelog from logseq 415153 until logseq 415178;

Các lệnh trên thực hiện khi DB ở trạng thái MOUNT.

Một khuyến nghị khi tạo hot backup bằng RMAN là nên backup cả Archive log sau khi backup các data file của Oracle. Sau khi backup xong data file nên khởi tạo lệnh 'alter system archive log current'
để ghi hết các archive log ở thời điểm backup xong data file. Sau đó mới backup archive log vào backup set.



Chúc các bạn thành công




27 tháng 4 2017

Tăng tốc độ import file DUMP trong Oracle

Bạn cần import file dump để kiểm tra, nhưng thấy tốc độ khá chậm. Để tăng tốc độ nên tắt chế độ ARCHIVE LOG đi.

17 tháng 2 2017

Cài lại Oracle

Bạn cài sai, bạn muốn cài lại Oracle trên Linux nhưng không muốn cài lại Oracle Linux.
Bước 1: Stop các listener đi.
Bước 2: Thực hiện xóa folder /u01
Bước 3: Xóa 2 file trong /etc (liên quan đến oracle).

Thực hiện chạy lại bộ cài

[Solved] ins-20802 The plug-in failed in its perform method oracle database

Bạn phải đặt đúng các mục này trước khi chạy setup oracle.
Nếu không bạn phải reinstall OS.

/etc/hosts

127.0.0.1 localhost
192.168.1.25 example example.localhost


/home/oracle/.bash_profile

export ORACLE_HOSTNAME=example.localhost

27 tháng 3 2015

Sửa lỗi không Truy vấn được unicode sử dụng Oracle SQL Developer

Bạn sử dụng Oracle SQL Developer (như tôi sử dụng phiên bản 3.2.10.09) để truy vấn dữ liệu trong bảng. Tuy nhiên khi bạn đánh câu lệnh:

select * from sinh_vien

Thì ở trong bảng sinh_viên, dữ liệu ra đầy đủ, hiển thị rõ tiếng Việt unicode, giả sử có cột ten với bản ghi là 'Nguyễn Văn A'.

Khi bạn đánh tiếp câu lệnh

select * from sinh_vien where ten like N'Nguyễn Văn A'

Thì lại không ra kết quả.

Vấn đề đã được giải quyết theo cách như sau:

Vào thư mục cài đặt của Oracle SQL Developer \sqldeveloper\sqldeveloper\bin tìm file sqldeveloper.conf sau đó mở file đó bằng trình soạn văn bản. Trong đó có một loạt các dòng mở đầu bằng AddVMOption. Thêm một dòng nữa với nội dung như sau:

AddVMOption -Doracle.jdbc.convertNcharLiterals=true

Trong trường hợp của tôi, file sqldeveloper.conf sau khi sửa sẽ có nội dung như sau:

IncludeConfFile ../../ide/bin/ide.conf

SetJavaHome ../../jdk

AddVMOption -Doracle.ide.util.AddinPolicyUtils.OVERRIDE_FLAG=true

AddVMOption -Dsun.java2d.ddoffscreen=false

AddVMOption -Dwindows.shell.font.languages=

AddVMOption -XX:MaxPermSize=256M

AddVMOption -Doracle.jdbc.mapDateToTimestamp=false

AddVMOption -Doracle.jdbc.convertNcharLiterals=true

IncludeConfFile sqldeveloper-nondebug.conf

Sau đó bạn mở Oracle SQL Developer thực hiện lại truy vấn với câu lệnh có Unicode (tiếng Việt) trong cửa sổ soạn thảo SQL. Lưu ý chuỗi Unicode phải bắt đầu bằng chữ N.

select * from sinh_vien where ten like N'Nguyễn Văn A'

Bạn sẽ thấy bản ghi xuất hiện ở khung kết quả.

26 tháng 3 2015

Không đăng nhập được Oracle Enterprise Manager 10g web ?

Bạn thực hiện đăng nhập Oracle Enterprise Manager 10g bằng Internet Explorer 7 tuy nhiên khi đăng nhập bằng tài khoản SYS, nhập đúng mật khẩu, chọn đúng Connect As: SYSDBA khi login thì màn hình không báo gì cả. Cũng không vào được bên trong giao diện quản lý.

Cách xử lý:
- Thực hiện cài lại IE bản khác (bản mới hơn), như tôi sử dụng IE 11 và đã đăng nhập thành công.