2021/12/27

oracleメモ

## 動作確認
```
# # ネットワークレベルでの疎通確認
tnsping [接続識別子(SIDやサービス名)]

# リスナーの状態確認
lsnrctl status
```

## 環境変数
```
$ env | grep -E "ORA|NLS"
NLS_LANG=Japanese_Japan.AL32UTF8
ORACLE_SID=ORCLCDB
ORACLE_HOME=/u01/app/oracle/product/12.2.0/dbhome_1
```

## 主な設定ファイル
* tnsnames.ora
* sqlnet.ora
* listener.ora

## 主なログファイル
* listener.log
* alert_[SID].log

## sqlplus関連
### ログイン
#### 1. OS認証
```
$ sqlplus / as sysdba
又は
$ sqlplus /nolog
SQL> conn / as sysdba
```

#### 2. パスワード認証
※PDBにはリスナー経由でログインしないといけない
```
sqlplus aaa/secret@ORCLPDB1
```

### CDB,PDB関連(oracle 12c~)
[マルチテナント・アーキテクチャの紹介](https://docs.oracle.com/cd/F19136_01/multi/introduction-to-the-multitenant-architecture.html)
```
SQL> show con_name
SQL> show pdbs
SQL> alter session set container=[PDB名]
```

### 表示幅
```
SQL> show linesize
linesize 80
SQL> set linesize 500
```

### 外部ファイル実行
```
SQL> @[ファイル]
```

## ユーザ関連
### ユーザ作成
```
SQL> create user [ユーザ名] identified by [パスワード];
```

## 権限付与
### 1. システム権限
[ユーザー権限およびロールについて](https://docs.oracle.com/cd/E57425_01/121/ADMQS/GUID-289A4BF6-F703-4ED5-8357-89F651A6D1DE.htm)
```
GRANT システム権限 TO (ユーザー名 | ロール名 | PUBLIC) [WITH ADMIN OPTION]

> 事前定義ロールの付与
SQL> grant connect, resource, dba to [ユーザ名];
```

### 2. オブジェクト権限
```
GRANT オブジェクト権限 ON (オブジェクト名) TO (ユーザー名 | ロール名 | PUBLIC) [WITH GRANT OPTION]
GRANT SELECT,UPDATE,DELETE,INSERT ON aaa.test TO bbb;
```

## テーブル関連
### 表領域作成
```
CREATE BIGFILE TABLESPACE TS1 DATAFILE '/ORCL/test/TEST1.DBF' SIZE 10G;
```

### 表作成
```
CREATE TABLE aaa.TEST (COLUMN1 CHAR(10) NOT NULL, COLUMN2 VARCHAR2(60), COLUMN3 TIMESTAMP CONSTRAINT pk1 PRIMARY KEY(COLUMN1)) TABLESPACE TS1;
```

## SQL*loader関連
### SQL*loaderの方式
[従来型パス・ロードおよびダイレクト・パス・ロード](https://docs.oracle.com/cd/E57425_01/121/SUTIL/GUID-321928FB-C86C-4F1F-9250-05111A988B7B.htm)

* 従来型パス・ロード
* ダイレクト・パス・ロード

### sqlldr
```
-- 制御ファイル
LOAD DATA
CHARACTERSET AL32UTF8
INSERT
INTO TABLE aaa.TEST
FIELDS TERMINATED BY "," OPTIONALLY ENCLOSED BY '"'
TRAILING NULLCOLS
(COLUMN1,
COLUMN2,
COLUMN3
)

$ sqlldr [ユーザ名]/[パスワード]@[PDB名] control=[制御ファイル] data=[データファイル] log=[ログファイル] SILENT=ALL DIRECT=YES
```

## インデックスの確認
[索引の管理](https://docs.oracle.com/cd/E57425_01/121/ADMIN/indexes.htm)
> 主キーには自動的に索引が作成される
```
SQL> set autotrace on
SQL> [実行SQL]
SQL> set autotrace off 

又は

SQL> set serveroutput off
SQL> [実行SQL]
SQL> select * from table(DBMS_XPLAN.DISPLAY_CURSOR());
```

### 実行計画
[実行計画の表示方法](https://use-the-index-luke.com/ja/sql/explain-plan/oracle/operations)
* INDEX UNIQUE SCAN(主キーを全て検索条件指定し、ユニーク検索を行う場合)
* INDEX RANGE SCAN(主キーの一部を検索条件指定し、範囲指定を行う場合)
* TABLE ACCESS FULL(テーブル全体が読まれる場合) 

0 件のコメント:

コメントを投稿

人気の投稿