sqlplusとかoracleで使うsqlとか

スプール

sqlplus /nolog
spool hoge.txt
spool off

テーブル削除

drop table GVIS_EMP
drop table GVIS_EMPLOY

テーブル作成

CREATE TABLE GVIS_EMP
  (
    no    VARCHAR2(6) NOT NULL,
    name  VARCHAR2(60) ,
    age   NUMBER(3,0),
    created DATE DEFAULT SYSDATE,
    modified DATE,
    CONSTRAINT pk1 PRIMARY KEY(no)
  ) ;

テーブル一覧

select table_name from user_tables order by 1;

テスト用項目挿入

insert into GVIS_EMP (no,name,age) values ('0001','dummy1',31) ;
insert into GVIS_EMP (no,name,age) values ('0002','dummy2',32) ;
insert into GVIS_EMP (no,name,age) values ('0003','dummy3',33) ;
insert into GVIS_EMP (no,name,age) values ('0004','dummy4',34) ;
insert into GVIS_EMP (no,name,age) values ('0005','dummy5',35) ;

テーブル内容表示

select * from GVIS_EMP ;

テーブル定義参照

SELECT 
  DBMS_METADATA.GET_DDL('TABLE', USER_TABLES.TABLE_NAME ),
  DBMS_METADATA.GET_DEPENDENT_DDL('INDEX', USER_TABLES.TABLE_NAME )
FROM USER_TABLES ;

プライマリキー削除

ALTER TABLE GVIS_EMP DROP CONSTRAINT pk1 ;

プライマリキー追加

ALTER TABLE GVIS_EMP ADD CONSTRAINT pk1 PRIMARY KEY (no,name) ;

カラム追加と全レコードへ初期値設定

ALTER TABLE GVIS_EMP ADD (ITEM_FOO char(6)) ;
UPDATE GVIS_EMP SET ITEM_FOO = 'FOOFOO' ;

カラム名変更

ALTER TABLE GVIS_EMP RENAME column ITEM_FOO to ITEM_BOO ;

カラム属性変更

ALTER TABLE GVIS_EMP MODIFY ITEM_BOO char(10) ;

テーブルのコピー

CREATE TABLE GVIS_EMPLOY as select * from GVIS_EMP ;

テーブルの内容比較

差異があると違いのある箇所がselect結果に出力される。

select * from GVIS_EMP    minus select * from GVIS_EMPLOY ;
select * from GVIS_EMPLOY minus select * from GVIS_EMP ;

テーブルのディスク使用率の参照

select 
  a.tablespace_name "(表領域全体)"
 ,a.file_name
 ,sum(a.bytes)/1024/1024 bytes_mb
 ,round(sum(bytes-nvl(b.c3,0))/1024/1024,2) "使用量MB"
 ,round(sum(nvl(b.c3,0))/1024/1024,2) "空き容量MB"
 ,round((sum(bytes-nvl(b.c3,0))/1024/1024)/(sum(a.bytes)/1024/1024)*100,2) "全体使用量(%)"
from dba_data_files a,
  (select tablespace_name c1, file_id c2, sum(bytes) c3
   from dba_free_space
   group by tablespace_name, file_id
  ) b
where a.tablespace_name=b.c1(+)
  and a.file_id=b.c2(+)
group by tablespace_name,a.file_name

view削除

drop view GVIS_VIEW_EMP

view作成

create view GVIS_VIEW_EMP as (
  select
     no   "社員番号"
    ,name "氏名"
    ,age  "年齢"
  from GVIS_EMP
) ;

view一覧

select owner,object_type,object_name from dba_objects
where object_type = 'VIEW' order by 1,2,3 ;

viewでinvalidがある一覧

select owner,object_type,object_name from dba_objects
where object_type = 'VIEW' and STATUS <> 'VALID'
order by 1,2,3 ;

view定義参照

select TEXT from user_views ;

viewをリコンパイル

alter view GVIS_VIEW_EMP compile;

権限一覧

select * from user_tab_privs ;
select * from all_tab_privs ;

viewから参照しているテーブル一覧

select 
  OWNER, NAME, TYPE,
  REFERENCED_OWNER,
  REFERENCED_NAME,
  REFERENCED_TYPE
from dbs_dependencies
order by 1,2,3

権限付与

grant select on gvis.ほげ to user ;

viewと権限一覧

select grantee, owner, table_name, grantor, privilege 
from user_tab_privs 
where type = 'VIEW' order by table_name,grantee ;

select table_name,grantee,privilege from all_tab_privs
 where table_schema = 'gvis'
   and table_name in (select view_name from user_views )
order by talbe_name, grantee ;

ユーザIDのパスワード有効期限確認

set linesize 200
set tab off
col profile format a32
col limit   format a32
select * from dba_profiles where resource_name = 'PASSWORD_LIFE_TIME';
select s.username, t.resource_name, t.limit
  from dba_users s,dba_profiles t
where s.profile = t.profile and s.username = 'xxx'

ユーザパスワード変更

alter user xxx identified by yyy ;

パスワード有効期限設定

alter profile userprofile limit password_life_time 180 ;
alter profile userprofile limit password_max unlimited ;

ユーザロック状態確認

select user name, account_staus, profile
from dba_users
where username = 'xxx' ;

ユーザロック解除

alter user xxx account unlock ;

ユーザ利用プロファイル変更

alter user xxx PROFILE DEFAULT ;

sqlplusの引数実行

sqlplus xxx/yyy @c:\test.sql
echo %errorlevel%
タイトルとURLをコピーしました