My開発メモ

Sqlplusを操作する(覚え書き)

Sqlplusでの操作の覚書

ログイン

$ sqlplus system@localhost:1521
$ sqlplus sys@localhost:1521 as sysdba
$ sqlplus sys@localhost as sysdba
$ sqlplus sys@XE as sysdba

ローカル・ログイン

今までのはネットワーク越しの接続。 ローカルで接続する場合は、rootユーザーから oracleユーザーになる必要がある。

$ docker exec -it docker-oracle11 /bin/bash     <== コンテナにログイン
bash-4.2# su oracle                             <== oracleユーザーになる
bash-4.2$ sqlplus sys as sysdba                 <== ログイン

実は、これがわかるまで、だいぶ苦労した。 このページを見てわかった。

Oracle 18c XE・Dockerコンテナ作成

シャットダウン

SQL> shutdown immediate

これでシャットダウンできる。

しかし、STARTUPができない。

スタート

STARTUP するためには、oracleユーザーでないとできない。

bash-4.2# su oracle
bash-4.2$ sqlplus / as sysdba
SQL> startup

パスワードの変更

systemユーザーのパスワードを変更してみる。

SQL> ALTER USER system IDENTIFIED BY "Pass123";

ユーザの作成

SQL> CREATE USER test IDENTIFIED BY Pass123;

これでユーザーの作成とパスワードの設定ができた。

他に以下のように各種権限を付与することもできる。

SQL> GRANT CREATE SESSION TO test;
SQL> GRANT CREATE TABLE TO test;
SQL> GRANT RESOURCE TO test;
SQL> GRANT UNLIMITED TABLESPACE TO test;

この権限はテーブルを作成して運用する権限である。

テーブルを作成する

create table emp ( empno number(4),
                 ename varchar2(4 char),
                 job varchar2(2 char),
                 sal number(6),
                 age number(3),
                 deptno number(4));

create table dept ( deptno number(4),
                  dname varchar2(3 char),1
                  telno varchar2(10));

自分(test)の作成したテーブルを一覧する

SQL> select table_name from user_tables;

テーブル定義を確認する(表emp)

SQL> describe emp

 Name					   Null?    Type
 ----------------------------------------- -------- ----------------------------
 EMPNO						    NUMBER(4)
 ENAME						    VARCHAR2(4 CHAR)
 JOB						    VARCHAR2(2 CHAR)
 SAL						    NUMBER(6)
 AGE						    NUMBER(3)
 DEPTNO 					    NUMBER(4)

テーブル定義を変更

SQL> alter table emp modify(
  2  ename varchar2(12 char),
  3  job varchar2(8 char));

SQL> describe emp
 Name					   Null?    Type
 ----------------------------------------- -------- ----------------------------
 EMPNO						    NUMBER(4)
 ENAME						    VARCHAR2(12 CHAR)
 JOB						    VARCHAR2(8 CHAR)
 SAL						    NUMBER(6)
 AGE						    NUMBER(3)
 DEPTNO 					    NUMBER(4)

データベースの文字コードの確認

SQL> select * from v$nls_parameters where parameter = 'NLS_CHARACTERSET';

PARAMETER
----------------------------------------------------------------
VALUE
----------------------------------------------------------------
NLS_CHARACTERSET
AL32UTF8

以下を .bashrc に追加。

export NLS_LANG=Japanese_Japan.AL32UTF8

これを設定しておくと、Sqlplusでのメッセージが日本語になる。

アカウントのロックと解除

アカウントのロック

ALTER USER <ユーザ名> ACCOUNT LOCK;

アカウントのロック解除

ALTER USER <ユーザ名> ACCOUNT UNLOCK;

列データの表示幅を調整する

SQL> COL[UMN] <列名> FORMAT A<バイト数>

行折返しの桁数を変更する

SQL> SET LINESIZE <桁数>

カテゴリー: memo, OracleDB

タグ: oracle, sqlplus

カウント: 204