状況確認
インストールOracle11g 11.2.0.1(w)(ASM) アンインストール
インストールOracle11g 11.2.0.1SE(w)(liunx)
バックアップ リストア(データベースファイル,制御ファイル,初期化ファイル,REDOログファイル,全損)
コントロールファイルの移動
OracleEnterpriseManager
表領域作成
ユーザ作成
redoログ変更
InstantClient
OracleSQLDeveloper
■表領域を増やす
データベースファイルを追加するのもあるが、単純に今あるデータベースファイルを拡張する
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
| | select USERNAME,DEFAULT_TABLESPACE,TEMPORARY_TABLESPACE from dba_users;
ALTER DATABASE DATAFILE 'D:\ORACLE\ORADATA\AERS\USERS01.DBF' RESIZE 10M;
ALTER DATABASE DATAFILE 'D:\ORACLE\ORADATA\AERS\USERS01.DBF' AUTOEXTEND ON NEXT 10M;
ALTER DATABASE TEMPFILE 'D:\ORACLE\ORADATA\AERS\TEMP01.DBF' RESIZE 200M;
ALTER DATABASE TEMPFILE 'D:\ORACLE\ORADATA\AERS\TEMP01.DBF' AUTOEXTEND ON NEXT 1M;
alter database datafile 'ファイル名(フルパス)' resize ファイルサイズ;
SELECT TB.TABLESPACE_NAME AS "表領域"
, TO_CHAR(TB.NOW_SIZE, 'FM9,999,999,990') AS "現在のサイズ(MB)"
, TO_CHAR(TB.USED_SIZE, 'FM9,999,999,990') AS "使用量(MB)"
, TO_CHAR(
ROUND(TB.USED_SIZE / TB.NOW_SIZE * 100, 2)
, 'FM9,999,999,990.00'
) AS "使用率(%)"
FROM (
SELECT FL.TABLESPACE_NAME AS TABLESPACE_NAME
, ROUND(MIN(FL.BYTES) / (1024 * 1024), 2) AS NOW_SIZE
, ROUND(
MIN(FL.BYTES) / (1024 * 1024)
- SUM(SP.BYTES) / (1024 * 1024)
, 2) AS USED_SIZE
FROM DBA_DATA_FILES FL
, DBA_FREE_SPACE SP
WHERE FL.FILE_ID = SP.FILE_ID
GROUP BY FL.TABLESPACE_NAME
) TB
|
■BackSpaceキーを押すと^Hと表記されて、文字が消えない(linux)。
.bashrcに
を追加
■現在のユーザプロファイルを確認
select username,profile from dba_users;
■プロファイル名:defaultのパスワード期限を無期限に変更
alter profile default limit password_life_time unlimited;
■既に有効期限切れになってしまったユーザーは、ロックされているので、
alter user aers identified by 'xxxxx';
alter user aers account unlock;
■特殊文字のエスケープ
'_'アンダースコアをテーブル名に記述した場合、'_'は一文字の任意を表すのでそれを回避するために
select table_name from user_tables where table_name like 'T#_%' escape '#';
とする
■複数テーブルの一括削除
SQL文がないようなので、PL/SQLにて対処
| DECLARE
CURSOR C IS SELECT TABLE_NAME FROM USER_TABLES WHERE TABLE_NAME LIKE 'T#_%' ESCAPE '#';
begin
FOR CUR_RECORD IN C LOOP
EXECUTE IMMEDIATE 'DROP TABLE "'||CUR_RECORD.TABLE_NAME||'" PURGE';
END LOOP;
end;
|
パブリック・シノニム†
あるテーブルを特定のユーザではなく、今後先の不特定のユーザにも参照可能にさせたい。AERSで言う所のDEMO、DRUG、INDI、REACとかのテーブルは四半期ごとに更新されるが、それ以外は皆に見てもらいたいテーブルなわけで、作成・構築は特定のユーザであろうが、最終的には皆が閲覧可能で、今後追加されるであろう新規ユーザにも標準で見られるのが望ましい。
なのでパブリック・シノニム
関連テーブルを持つユーザにはシステム権限が必要。
CREATE PUBLIC SYNONYM
と
DROP PUBLIC SYNONYM
作れるものは削除もできる。その姿勢でこの2つをテーブル作成者(AERS)には与える
っで、こんな感じかな
1
2
3
4
5
6
7
| | CREATE PUBLIC SYNONYM DEMO FOR AERS.DEMO;
CREATE PUBLIC SYNONYM DRUG FOR AERS.DRUG;
CREATE PUBLIC SYNONYM INDI FOR AERS.INDI;
CREATE PUBLIC SYNONYM OUTC FOR AERS.OUTC;
CREATE PUBLIC SYNONYM REAC FOR AERS.REAC;
CREATE PUBLIC SYNONYM RPSR FOR AERS.RPSR;
CREATE PUBLIC SYNONYM THER FOR AERS.THER;
|
その後、パブリック・シノニムを作っても参照(SELECT)できないと意味がないので、PUBLICにSELECT権限を渡す。
1
2
3
4
5
6
7
| | GRANT SELECT ON DEMO TO PUBLIC;
GRANT SELECT ON DRUG TO PUBLIC;
GRANT SELECT ON INDI TO PUBLIC;
GRANT SELECT ON OUTC TO PUBLIC;
GRANT SELECT ON REAC TO PUBLIC;
GRANT SELECT ON RPSR TO PUBLIC;
GRANT SELECT ON THER TO PUBLIC;
|