状況確認
インストール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   
     , TO_CHAR(TB.USED_SIZE, 'FM9,999,999,990') AS   
     , 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に

stty erase ^H

を追加

■現在のユーザプロファイルを確認
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;

トップ   編集 添付 複製 名前変更     ヘルプ   最終更新のRSS
Last-modified: 2015-02-08 (日) 23:58:01 (921d)