ORACLE DB 的學習者們

2013年12月23日 星期一

ORACLE如何新增換行至table當中

update logmnr.employees set name='david'||chr(10)||chr(13) where employee_id='001';

How to Multiplex ControlFile of ORACLE

sqlplus /nolog

conn /as sysdba;

select * from v$controlfile;

create pfile from spfile;

shutdown immediade;

到OS

cp /oracle/database/xxx/control01 /oracle_xxx/control04

cp /oracle/product/10.2.0.1/dbs/initxxx.ora

/oracle/product/10.2.0.1/dbs/initxxx.ora.bak

vi /oracle/product/10.2.0.1/dbs/initxxx.ora

修改其中的control_file参数

sqlplus /nolog

conn /as sysdba;

startup pfile=/oracle/product/10.2.0.1/dbs/initxxx.ora;

select * from v$controlfile; --已经加上了

create spfile from pfile='/oracle/product/10.2.0.1/dbs/initxxx.ora';

shutdown immediate;

sqlplus /nolog

conn /as sysdba;

startup

select * from v$controlfile; --已经加上了

2013年12月4日 星期三

運用LOGMNR處理ARCHIVED LOGFILE進行資料倒回

1.先建立專用之Tablespace與USER。

CREATE TABLESPACE TBS_LOGMNR DATAFILE 
  ' /oracle/app/oracle/oradata/testdb/TBS_LOGMNR01.dbf' SIZE 2570M AUTOEXTEND ON NEXT 10M MAXSIZE UNLIMITED
LOGGING
ONLINE
EXTENT MANAGEMENT LOCAL AUTOALLOCATE
BLOCKSIZE 8K
SEGMENT SPACE MANAGEMENT AUTO
FLASHBACK ON;

CREATE USER LOGMNR
  IDENTIFIED BY xxxx
  DEFAULT TABLESPACE TBS_LOGMNR
  TEMPORARY TABLESPACE TEMP
  PROFILE DEFAULT
  ACCOUNT UNLOCK;
  -- 2 Roles for LOGMNR 
  GRANT CONNECT TO LOGMNR;
  GRANT RESOURCE TO LOGMNR;
  ALTER USER LOGMNR DEFAULT ROLE ALL;
  -- 1 System Privilege for LOGMNR 
GRANT UNLIMITED TABLESPACE TO LOGMNR;
2.搜尋現有ARCHIVED LOG,資料字典(DICT)所在位置。

SELECT NAME FROM V$ARCHIVED_LOG WHERE DICTIONARY_BEGIN='YES';

資料字典可讓LOGMNR將交易SQL對應到正確之資料庫物件,關係後續進行資料倒回時物件之正確性。所找尋之DICT應以接近異常事件時間點之檔案為佳。以下假設所搜尋到之檔案為

1_15141_708784153.dbf。

select * from v$log;

將現有REDO LOG檔案加入LOGMNR

3.將LOGMNR工具的TABLESPACE移至新建的空間位置。(CONSOLE)

EXECUTE dbms_logmnr_d.set_tablespace('TBS_LOGMNR');

4.修改資料庫:新增額外LOG紀錄。(CONSOLE)

ALTER DATABASE ADD SUPPLEMENTAL LOG DATA;

5.LOGMNR操作:(CONSOLE)

建立LOGMNR

EXECUTE DBMS_LOGMNR_D.BUILD( OPTIONS=> DBMS_LOGMNR_D.STORE_IN_REDO_LOGS);

加入欲分析之LOGFILE(若有未加入之字典,會顯示字典不完全)

EXECUTE DBMS_LOGMNR.ADD_LOGFILE( LOGFILENAME => '/ora00/oracle/oradata/testdb/redo03.log',OPTIONS => DBMS_LOGMNR.NEW);

EXECUTE DBMS_LOGMNR.ADD_LOGFILE( LOGFILENAME => '/ora00/oracle/product/102/dbs/arch/1_15141_708784153.dbf',OPTIONS => DBMS_LOGMNR.ADDFILE);

移除不用的LOGFILE(視需求)

EXECUTE DBMS_LOGMNR.REMOVE_LOGFILE(LOGFILENAME =>'/ora00/oracle/product/102/dbs/arch/1_14980_708784153.dbf.dbf');

開始進行分析

EXECUTE dbms_logmnr.start_logmnr(options => DBMS_LOGMNR.DICT_FROM_REDO_LOGS);

匯出分析結果(由v$logmnr_contents表格匯出,可使用SQL過濾條件,表格欄位如下)。以下範例搜尋對HOSEN, WILMAR及CGBT作刪除之SQL,並將其匯出至LOGMNR的表格LOGMNR_14986

create table LOGMNR.logmnr_14986 tablespace TBS_LOGMNR as select * from v$logmnr_contents where RBASQN=14986 and operation='DELETE' and seg_owner='HCOMPANY' or seg_owner='WCOMPANY' or seg_owner='CCOMPANY';

6.運用LOGMNR進行復原操作:上述用LOGMNR所搜尋之SQL紀錄,有兩個欄位作為異常交易倒回之依據:SQL_REDO與SQL_UNDO。

SQL_REDO:異常交易之SQL指令(已被執行的SQL)(在此假設執行INSERT指令)

結論。

異常復原最花時間是能正確鎖定問題時間點,找到正確的Archived Logfile和資料字典,若未能找到正確的Logfile或無正確字典,則無法進行。

2013年3月11日 星期一

Oracle 11G Restore & Recovery

使用RMAN進行復原和還原


RMAN> startup nomount

Oracle instance started

Total System Global Area     598437888 bytes

Fixed Size                     1338140 bytes
Variable Size                457180388 bytes
Database Buffers             134217728 bytes
Redo Buffers                   5701632 bytes



RMAN> restore controlfile from autobackup;

Starting restore at 11-MAR-13
allocated channel: ORA_DISK_1
channel ORA_DISK_1: SID=19 device type=DISK

recovery area destination: /u01/app/flash_recovery_area
database name (or database unique name) used for search: JENG
channel ORA_DISK_1: AUTOBACKUP
/u01/app/flash_recovery_area/JENG/autobackup/2013_03_04/o1_mf_s_809175317_8m838pkd_.bkp
found in the recovery area
AUTOBACKUP search with format "%F" not attempted because DBID was not set
channel ORA_DISK_1: restoring control file from AUTOBACKUP
/u01/app/flash_recovery_area/JENG/autobackup/2013_03_04/o1_mf_s_809175317_8m838pkd_.bkp
channel ORA_DISK_1: control file restore from AUTOBACKUP complete
output file name=/u01/app/oradata/JENG/control01.ctl
output file name=/u01/app/flash_recovery_area/JENG/control02.ctl
Finished restore at 11-MAR-13


RMAN> mount database;

database mounted
released channel: ORA_DISK_1

RMAN> alter database open resetlogs;

RMAN-00571: ===========================================================
RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ===============
RMAN-00571: ===========================================================
RMAN-03002: failure of alter db command at 03/11/2013 10:13:43
ORA-01152: file 1 was not restored from a sufficiently old backup
ORA-01110: data file 1: '/u01/app/oradata/JENG/system01.dbf'

RMAN> quit

2013年3月4日 星期一

RMAN使用


RMAN的開始與結束
% rman
% rman TARGET /
% rman TARGET SYS/oracle@trgt NOCATALOG
% rman TARGET / CATALOG rman/cat@catdb

結束
RMAN> EXIT

設定RMAN語系及時間格式
在 .bashrc 設定檔內
NLS_LANG=american
NLS_DATE_FORMAT='Mon DD YYYY HH24:MI:SS'

若是設定為繁體中文 UTF-8
NLS_LANG="AMERICAN_AMERICA.UTF8";
export NLS_LANG

上述需配合 System $LANG environment variable

使用文字檔執行RMAN命令
先使用編輯器編輯一份RMAN命令檔,然後使用RMAN呼叫該命令檔。
假設該文字檔內有一行指令:

BACKUP DATABASE INCLUDE CURRENT CONTROLFILE;

將該檔案命名為:rman-commands
呼叫文字檔執行:
% rman TARGET / @rman-commands
或是先登入RMAN後,在RMAN的命令提示字元下:
RMAN> @rman-commands

執行完畢後,會出現下列:
RMAN> **end-of-file**

使用RMAN的文法檢查工具
RMAN的文法檢查工具:RMAN CHECKSYNTAX

[oracle@hiokbun ~]$ rman checksyntax

Recovery Manager: Release 11.2.0.1.0 - Production on Tue Mar 5 14:50:47 2013

Copyright (c) 1982, 2009, Oracle and/or its affiliates.  All rights reserved.

RMAN> run [backup database;] (故意輸入錯誤的語法)

RMAN-00571: ===========================================================
RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ===============
RMAN-00571: ===========================================================
RMAN-00558: error encountered while parsing input commands
RMAN-01006: error signaled during parse
RMAN-02001: unrecognized punctuation symbol "["


或是使用該工具檢查文字命令檔

[oracle@hiokbun ~]$ rman checksyntax @rman-commands

Recovery Manager: Release 11.2.0.1.0 - Production on Tue Mar 5 14:53:51 2013

Copyright (c) 1982, 2009, Oracle and/or its affiliates.  All rights reserved.

RMAN> backup database include current controlfile;
2>
The cmdfile has no syntax errors

Recovery Manager complete.

使用RMAN來啟動或關閉資料庫

% rman TARGET /
RMAN> SHUTDOWN IMMEDIATE # closes database consistently
RMAN> STARTUP MOUNT
在RMAN下面使用SQL命令改變資料庫狀態

RMAN> SQL 'ALTER DATABASE OPEN';
RMAN> SQL 'ALTER DATABASE OPEN';
RMAN> SQL 'ALTER DATABASE OPEN';

從RMAN Prompt來連接資料庫

[oracle@hiokbun ~]$ rman

Recovery Manager: Release 11.2.0.1.0 - Production on Tue Mar 5 22:04:28 2013

Copyright (c) 1982, 2009, Oracle and/or its affiliates.  All rights reserved.

RMAN> connect target sys/xxxx(密碼)

connected to target database: JENG (DBID=3784953074)

RMAN>

使用show來顯示RMAN的設定值
RMAN> SHOW RETENTION POLICY;
RMAN> SHOW DEFAULT DEVICE TYPE;

RMAN> show retention policy;

using target database control file instead of recovery catalog
RMAN configuration parameters for database with db_unique_name JENG are:
CONFIGURE RETENTION POLICY TO REDUNDANCY 1; # default

RMAN> show defaulr device type;

RMAN-00571: ===========================================================
RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ===============
RMAN-00571: ===========================================================
RMAN-00558: error encountered while parsing input commands
RMAN-01009: syntax error: found "identifier": expecting one of: "all, archivelog, auxiliary, auxname, backup, channel, compression, controlfile, datafile, db_unique_name, default, device, encryption, exclude, maxsetsize, retention, snapshot"
RMAN-01008: the bad identifier was: defaulr
RMAN-01007: at line 1 column 6 file: standard input


或是使用 show all 顯示所有設定值

RMAN> show all;

RMAN configuration parameters for database with db_unique_name JENG are:
CONFIGURE RETENTION POLICY TO REDUNDANCY 1; # default
CONFIGURE BACKUP OPTIMIZATION OFF; # default
CONFIGURE DEFAULT DEVICE TYPE TO DISK; # default
CONFIGURE CONTROLFILE AUTOBACKUP ON;
CONFIGURE CONTROLFILE AUTOBACKUP FORMAT FOR DEVICE TYPE DISK TO '%F'; # default
CONFIGURE DEVICE TYPE DISK PARALLELISM 1 BACKUP TYPE TO BACKUPSET; # default
CONFIGURE DATAFILE BACKUP COPIES FOR DEVICE TYPE DISK TO 1; # default
CONFIGURE ARCHIVELOG BACKUP COPIES FOR DEVICE TYPE DISK TO 1; # default
CONFIGURE MAXSETSIZE TO UNLIMITED; # default
CONFIGURE ENCRYPTION FOR DATABASE OFF; # default
CONFIGURE ENCRYPTION ALGORITHM 'AES128'; # default
CONFIGURE COMPRESSION ALGORITHM 'BASIC' AS OF RELEASE 'DEFAULT' OPTIMIZE FOR LOAD TRUE ; # default
CONFIGURE ARCHIVELOG DELETION POLICY TO NONE; # default
CONFIGURE SNAPSHOT CONTROLFILE NAME TO '/u01/app/oracle/dbs/snapcf_JENG.f'; # default

使用 CONFIGURE  CLEAR選項清除設定值
RMAN> CONFIGURE BACKUP OPTIMIZATION CLEAR;
RMAN> CONFIGURE RETENTION POLICY CLEAR;
RMAN> CONFIGURE CONTROLFILE AUTOBACKUP FORMAT FOR DEVICE TYPE DISK CLEAR;

設定備份儲存選項,將DISK設定為預設儲存目的
使用image copies

RMAN> CONFIGURE DEVICE TYPE DISK BACKUP TYPE TO COPY; # image copies
使用未壓縮選項
RMAN> CONFIGURE DEVICE TYPE DISK BACKUP TYPE TO BACKUPSET; # uncompressed


查詢 Flash Recovery Area 的大小和剩餘空間

SQL> select * from v$recovery_file_dest;


SQL> SELECT * FROM V$RECOVERY_FILE_DEST;
NAME SPACE_LIMIT SPACE_USED SPACE_RECLAIMABLE NUMBER_OF_FILES
-------------- ----------- ---------- ----------------- ---------------
/mydisk/rcva   5368709120   109240320   256000   28

查詢 Flash Recovery Area 的空間分配使用

SQL> SELECT * FROM V$FLASH_RECOVERY_AREA_USAGE;
FILE_TYPE PERCENT_SPACE_USED PERCENT_SPACE_RECLAIMABLE NUMBER_OF_FILES
------------ ------------------ ------------------------- ---------------
CONTROLFILE 0 0 0
ONLINELOG 2 0 22
ARCHIVELOG 4.05 2.01 31
BACKUPPIECE 3.94 3.86 8
IMAGECOPY 15.64 10.43 66
FLASHBACKLOG .08 0 1



SQL> select * from v$flash_recovery_area_usage;

FILE_TYPE            PERCENT_SPACE_USED PERCENT_SPACE_RECLAIMABLE
-------------------- ------------------ -------------------------
NUMBER_OF_FILES
---------------
CONTROL FILE                          0                         0
              0

REDO LOG                              0                         0
              0

ARCHIVED LOG                      42.62                      1.18
             45


FILE_TYPE            PERCENT_SPACE_USED PERCENT_SPACE_RECLAIMABLE
-------------------- ------------------ -------------------------
NUMBER_OF_FILES
---------------
BACKUP PIECE                       47.4                         0
              6

IMAGE COPY                            0                         0
              0

FLASHBACK LOG                      5.53                       .89
             55


FILE_TYPE            PERCENT_SPACE_USED PERCENT_SPACE_RECLAIMABLE
-------------------- ------------------ -------------------------
NUMBER_OF_FILES
---------------
FOREIGN ARCHIVED LOG                  0                         0
              0


7 rows selected.




2013年2月14日 星期四

ORACLE的網路服務


ORACLE的網路服務設定檔
請查閱以下目錄的設定檔/network/admin/tnsnames.ora

如何驗證網路是否有啟動LISTENER:  tnsping ,範例如下:


C:\Documents and Settings\Administrator>tnsping localhost

TNS Ping Utility for 32-bit Windows: Version 11.2.0.2.0 - Production on 15-2月 -
2013 08:46:01

Copyright (c) 1997, 2010, Oracle.  All rights reserved.

Used parameter files:
C:\oraclexe\app\oracle\product\11.2.0\server\network\admin\sqlnet.ora

Used HOSTNAME adapter to resolve the alias
Attempting to contact (DESCRIPTION=(CONNECT_DATA=(SERVICE_NAME=))(ADDRESS=(PROTO
COL=TCP)(HOST=127.0.0.1)(PORT=1521)))
OK (40 msec)

C:\Documents and Settings\Administrator>

2013年2月6日 星期三

利用PLSQL查詢系統表格狀態資訊


重置資料庫狀態資訊

表格空間
select * from dba_tablespaces;
資料檔案
select * from dba_data_files;
更多資料檔案
select * from v$datafile;
日誌檔案
select * from v$logfile;
更多日誌檔案
select * from v$log;
控制檔案資訊
select * from v$controlfile;
有效的資料庫參數
select * from v$parameter;

取得datafile與tablespace關聯性
select * from v$backup;

有效的語言字元集
select * from v$nls_parameters;
取得三天前的日誌歷史資訊
select * from v$log_history where first_time > sysdate -3;

取得資料字典
select * from dictionary;
亦可使用同義字的VIEW進行查詢,該VIEW名稱為DICT_COLUMNS,用法如
select * from DICT_COLUMNS;

資料字典範例
USER_TABLES

SELECT table_name, tablespace_name FROM
user_tables;

ALL_SEQUENCES

SELECT sequence_name, min_value, max_value,
increment_by FROM all_sequences WHERE
sequence_owner IN ('MDSYS','XDB');

DBA_USERS

SELECT USERNAME, ACCOUNT_STATUS FROM
dba_users WHERE ACCOUNT_STATUS = 'OPEN';

DBA_INDEXES
DESCRIBE dba_indexes;


偵測BLOCK CORRUPTION:
查閱以下VIEW:
  V$BACKUP_CORRUPTION
  V$COPY_CORRUPTION

要讓某ID使用者可用EM,先進入SQLPLUS:
Open CMD
C:\>Set oracle_sid= SID_OF_THE_DATABASE
C:\>sqlplus
username: SYSMAN
password: ****
SQL>execute MGMT_USER.MAKE_EM_USER(‘USERNAME’);

USERNAME – the user that you use to connect to enterprise managert
don’t copy/past the command, sometimes they are some hidden characters

查詢 FLASH RECOVERY AREA使用率:
SQL> SELECT file_type,
2 percent_space_used AS used,
3 percent_space_reclaimable AS reclaimable,
4 number_of_files AS number
5 FROM v$flash_recovery_area_usage ;

查詢系統參數

SQL> desc v$system_parameter
 Name                                      Null?    Type
 ----------------------------------------- -------- ----------------------------
 NUM                                                NUMBER
 NAME                                               VARCHAR2(80)
 TYPE                                               NUMBER
 VALUE                                              VARCHAR2(512)
 DISPLAY_VALUE                                      VARCHAR2(512)
 ISDEFAULT                                          VARCHAR2(9)    --若為TRUE,表示此參數並未被明確設定參數值在parameter file內,目前所使用的參數值為預設值
 ISSES_MODIFIABLE                                   VARCHAR2(5)    --若為TRUE,表示可以使用alter session set parameter=new_value,動態修改此session的此項參數值
 ISSYS_MODIFIABLE                                   VARCHAR2(9)    --若為IMMEDIATE,表示可以使用alter system set parameter=new_value,動態修改所有session的此項參數值
 ISINSTANCE_MODIFIABLE                              VARCHAR2(5)
 ISMODIFIED                                         VARCHAR2(8)
 ISADJUSTED                                         VARCHAR2(5)
 ISDEPRECATED                                       VARCHAR2(5)
 DESCRIPTION                                        VARCHAR2(255)
 UPDATE_COMMENT                                     VARCHAR2(255)
 HASH                                               NUMBER


SQL> select name,value from v$system_parameter
  2  where isdefault='FALSE';  --isdefault='FALSE'表示此參數有明確設定其參數值放在parameter file中

SQL> show parameter spfile  --如果有資訊回傳,表示此instance使用spfile開啟
NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
spfile                               string      /u01/app/oracle/dbs/spfileJENG
                                                 .ora


SQL> show parameter control_files --sql*plus本身的功能,找出所有參數名稱中有control_files這個字串的參數

SQL> show parameter spfile;

NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
spfile                               string      /u01/app/oracle/dbs/spfileJENG
                                                 .ora
SQL> show parameter control_files

NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
control_files                        string      /u01/app/oradata/JENG/control0
                                                 1.ctl, /u01/app/flash_recovery
                                                 _area/JENG/control02.ctl

SQL> select value from v$system_parameter where name like '%control_files%';  --一般的sql command


SQL> select value from v$system_parameter where name like '%control_files%';                                  
VALUE
--------------------------------------------------------------------------------
/u01/app/oradata/JENG/control01.ctl, /u01/app/flash_recovery_area/JENG/control02
.ctl


SQL>


查詢INSTANCE目前狀態

SQL> select status from v$instance;

STATUS
------------
OPEN

開啟database的順序

1. startup listener(只需一次)   --> $ lsnrctl start
--如果有asm instance,必須在database instance啟動前先開啟.但是只須開啟一次(因為每個host最多只有一個asm instance)
   $ export ORACLE_SID=+ASM -> $ sqlplus / as sysdba -> SQL> startup
2. startup database(每個database一次) $ export ORACLE_SID=orcl -> $ sqlplus / as sysdba -> SQL> startup
3. startup dbconsole(每個console一次) $ export ORACLE_SID=orcl -> $ emctl start dbconsole

關閉database的順序
1. shutdown dbconsole(每個console一次)  $ export ORACLE_SID=orcl -> $ emctl stop dbconsole
2. shutdown database(每個database一次)  $ export ORACLE_SID=orcl -> $ sqlplus / as sysdba -> SQL> shutdown immediate
--關閉asm instance $ export ORACLE_SID=+ASM -> $ sqlplus / as sysdba -> SQL> shutdown immediate
3. stop listener(只需一次) --> $ lsnrctl stop

顯示所有的 ROLES

SQL> select role from dba_roles;

ROLE
------------------------------
CONNECT
RESOURCE
DBA
SELECT_CATALOG_ROLE
EXECUTE_CATALOG_ROLE
DELETE_CATALOG_ROLE
EXP_FULL_DATABASE
IMP_FULL_DATABASE
LOGSTDBY_ADMINISTRATOR
DBFS_ROLE
AQ_ADMINISTRATOR_ROLE

ROLE
------------------------------
AQ_USER_ROLE
DATAPUMP_EXP_FULL_DATABASE
DATAPUMP_IMP_FULL_DATABASE
ADM_PARALLEL_EXECUTE_TASK
GATHER_SYSTEM_STATISTICS
JAVA_DEPLOY
RECOVERY_CATALOG_OWNER
SCHEDULER_ADMIN
HS_ADMIN_SELECT_ROLE
HS_ADMIN_EXECUTE_ROLE
HS_ADMIN_ROLE

ROLE
------------------------------
GLOBAL_AQ_USER_ROLE
OEM_ADVISOR
OEM_MONITOR
WM_ADMIN_ROLE
JAVAUSERPRIV
JAVAIDPRIV
JAVASYSPRIV
JAVADEBUGPRIV
EJBCLIENT
JMXSERVER
JAVA_ADMIN

ROLE
------------------------------
CTXAPP
XDBADMIN
XDB_SET_INVOKER
AUTHENTICATEDUSER
XDB_WEBSERVICES
XDB_WEBSERVICES_WITH_PUBLIC
XDB_WEBSERVICES_OVER_HTTP
ORDADMIN
OLAPI_TRACE_USER
OLAP_XS_ADMIN
OWB_USER

ROLE
------------------------------
OLAP_DBA
CWM_USER
OLAP_USER
SPATIAL_WFS_ADMIN
WFS_USR_ROLE
SPATIAL_CSW_ADMIN
CSW_USR_ROLE
MGMT_USER
APEX_ADMINISTRATOR_ROLE
OWB$CLIENT
OWB_DESIGNCENTER_VIEW

55 rows selected.


顯示所有 GRANTEE

SQL> select distinct grantee from dba_sys_privs;

GRANTEE
------------------------------
EXP_FULL_DATABASE
AQ_ADMINISTRATOR_ROLE
OWBSYS_AUDIT
MDSYS
DIP
DBA
OEM_ADVISOR
SPATIAL_WFS_ADMIN_USR
RECOVERY_CATALOG_OWNER
SCHEDULER_ADMIN
OLAPSYS

GRANTEE
------------------------------
SPATIAL_CSW_ADMIN_USR
OWBSYS
HR
OLAP_USER
FLOWS_FILES
RESOURCE
CTXSYS
OUTLN
MYDBA
IMP_FULL_DATABASE
EXFSYS

GRANTEE
------------------------------
OWB$CLIENT
APEX_030200
DATAPUMP_EXP_FULL_DATABASE
SCOTT
SYSTEM
CONNECT
ORACLE_OCM
DBSNMP
OE
SH
SYSMAN

GRANTEE
------------------------------
ORDSYS
MDDATA
APEX_PUBLIC_USER
PM
XDB
OLAP_DBA
IX
BI
JAVADEBUGPRIV
ORDDATA
APPQOSSYS

GRANTEE
------------------------------
SYS
DATAPUMP_IMP_FULL_DATABASE
OEM_MONITOR
WMSYS
MGMT_USER
LOGSTDBY_ADMINISTRATOR
SI_INFORMTN_SCHEMA
ANONYMOUS

52 rows selected.



SQL> select privilege from dba_sys_privs where grantee='RESOURCE'; -->當被授與resource角色時,Oracle server自動授與unlimited tablespace權限

PRIVILEGE
----------------------------------------
CREATE TRIGGER
CREATE SEQUENCE
CREATE TYPE
CREATE PROCEDURE
CREATE CLUSTER
CREATE OPERATOR
CREATE INDEXTYPE
CREATE TABLE

已選取 8 個資料列.

顯示目前此session可使用的system privilege
SQL> select * from session_privs;  --目前此session可使用的system privilege

PRIVILEGE
----------------------------------------
CREATE SESSION
UNLIMITED TABLESPACE  -->當被授與resource角色時,Oracle server自動授與unlimited tablespace權限.擁有此權限將不受到tablespace quota的限制
CREATE TABLE
CREATE ANY TABLE
SELECT ANY TABLE
CREATE CLUSTER
CREATE SEQUENCE
CREATE PROCEDURE
CREATE TRIGGER
CREATE TYPE
CREATE OPERATOR
CREATE INDEXTYPE

已選取 12 個資料列.

顯示目前生效的角色
SQL> select * from session_roles;  --顯示目前生效的角色

ROLE
------------------------------
RESOURCE
APP_USER1

只要生效app_user1某個角色
SQL> set role app_user1; --只要生效app_user1這個角色,所以resource角色的權限將無法使用
SQL> select * from session_roles;

ROLE
------------------------------
APP_USER1

把角色生效或不生效
SQL> set role all; --生效所有授與給frank的角色
SQL> set role app_user1,resource;  --只生效app_user1與resource
SQL> set role none; --讓所有角色都不生效

不可以把 unlimited tablespace 從某個 GRANTEE拿掉,只可以把它從某USER拿掉

SQL> revoke unlimited tablespace from resource;
revoke unlimited tablespace from resource
*
ERROR at line 1:
ORA-01931: cannot grant UNLIMITED TABLESPACE to a role

SQL> revoke unlimited tablespace from frank;

Revoke succeeded.

Oracle 11g安裝紀錄


作業系統設定

先選定安裝WWW 、 FTPD 等伺服器

關閉SeLinux、防火牆

手動設定PPPOE / 固定IP

手動設定環境變數

建立 dba. oinstall等群組及帳號 oracle

手動更新所有軟體

在$oracle帳號目錄下,執行 runinstall

2013年1月29日 星期二

CentOS FTP SERVER 的設定


vsftpd軟體安裝與設定

FTP Server設定,要把設定檔寫對,然後要把Selinux關閉就可以成功。
安裝:yum install vsftpd
設定檔:  /etc/vsftpd/vsftpd.conf


# A. 與匿名者有關的資訊:
anonymous_enable=YES        =>支援匿名者的登入使用 FTP 功能
anon_upload_enable=YES     => 匿名者可上傳檔案
anon_mkdir_write_enable=YES =>匿名者可寫入檔案

# B. 與用戶有關的設定
local_enable=YES                  =>支援本地端用戶登入
write_enable=YES                 =>允許使用者上傳資料 (檔案與目錄)
local_umask=022                   =>建立新目錄 (755) 與檔案 (644) 的權限

# C. 伺服器環境設定
dirmessage_enable=YES        =>若目錄下有 .message 則會顯示該檔案的內容
xferlog_enable=YES              =>登錄檔記錄,記錄在 /var/log/xferlog
connect_from_port_20=YES =>主動式連線功能
xferlog_std_format=YES       =>支援 WuFTP 的登錄檔格式
listen=YES                            =>以 stand alone 方式啟動 vsftpd
pam_service_name=vsftpd    => PAM 模組管理
userlist_enable=YES             =>支援 /etc/vsftpd/user_list 檔案內的帳號登入管控!
tcp_wrappers=YES              =>支援 TCP Wrappers 的防火牆機制

關閉 Selinux

  • 暫時關閉或開啟 Selinux 的方法:在命令列下指令: setenforce 0 (關閉),setenforce 1 (開啟)
  • 系統關閉或開啟Selinux的方法:
        vi /etc/sysconfig/selinux
        SELINUX=enforcing 改成--> SELINUX=disabled
        重新開機  就可以把selinux關掉

Selinux 的設定、查詢與改變

  • 常用的指令
    1. sestatus                          ==> 看Selinux的狀態
    2. sestatus -b                     ==> 看application管理狀態
    3. getenforce                      ==> 顯示Selinux模式
    4. setenforce 0                    ==> 暫時將Selinux模式設為寬容模式
    5. setenforce 1                    ==> 暫時將Selinux模式設為強制模式
      註:setenforce 必需在selinux enable狀態才有用
    6. ls -Z 檔名                      ==> 看SELinux對檔案管理狀態
    7. ls -dZ 資料匣                ==> 看SELinux對資料匣管理狀態
    8. chcon                             ==> 改變檔案、資料匣管理
    9. getsebool                        ==> 看application管理狀態
    10. setsebool                        ==> 變更application管理 
    11. restorecon                      ==> 復原成原有的 SELinux type
    12. semanage                        ==> 安全性本文的查詢與修改
      註:必需安裝policycoreutils-phython套件
    13. seinfo ==> 查看政策中規則數量
      註:必需安裝setools-console套件
    14. sealert -l ** ==> selinux 錯誤訊息詳細列出
      註1:必需安裝setroubleshoot及setroubleshoot-server
      註2:安裝完後需重開系統
    Selinux的範例

                                      [root@114-34-42-14 dljeng]# sestatus -b | grep ftp
                                      allow_ftpd_anon_write                       off
                                      allow_ftpd_full_access                       off
                                      allow_ftpd_use_cifs                           off
                                      allow_ftpd_use_nfs                            off
                                      ftp_home_dir                                     off
                                      ftpd_connect_db                               off
                                      ftpd_use_passive_mode                    off
                                      httpd_enable_ftp_server                    off
                                      tftp_anon_write                                 off

                                      查看目錄的狀態

                                      [root@114-34-42-14 home]# ls -dZ dljeng

                                      改變使得使用者可以登入個人家目錄

                                      drwx------. dljeng dljeng unconfined_u:object_r:user_home_dir_t:s0 dljeng
                                      [root@114-34-42-14 home]# setsebool -P allow_ftpd_full_access=1


                                      檢查selinux的錯誤
                                      log檔 /var/log/messages
                                      關鍵字 setroubleshoot
                                      cat /var/log/messages | grep setroubleshoot ==> 查尋錯誤
                                      依錯誤敘述找問題
                                      sealert -l xx(xx 錯誤代碼)

                                      開機時啟動FTPD等服務
                                      1. ntsysv
                                      2. chkconfig --level 5 vsftpd on
                                          chkconfig --list | grep vsftpd




                                      2013年1月23日 星期三

                                      耶和華如此說:在拉瑪聽見號咷痛哭的聲音,是拉結哭他兒女,不肯受安慰,因為他們都不在了。

                                      聽見,...安慰

                                      耶利米書31:15:耶和華如此說:在拉瑪聽見號咷痛哭的聲音,是拉結哭他兒女,不肯受安慰,因為他們都不在了。

                                      上週去參加弟兄的公子因車禍驟逝的告別式,年輕的生命就這樣如曇花一般的凋零了,今天讀經的時候讀到這一段經文。主很清楚說:祂已經聽見了他父母痛哭的聲音。願神的安慰更多臨到這個家庭。

                                      太陽出來,熱風颳起,草就枯乾,花也凋謝,美容就消沒了;那富足的人,在他所行的事上也要這樣衰殘。



                                      雅各書:1:9~11

                                      9 卑微的弟兄升高,就該喜樂;
                                      10 富足的降卑,也該如此;因為他必要過去,如同草上的花一樣。
                                      11 太陽出來,熱風颳起,草就枯乾,花也凋謝,美容就消沒了;那富足的人,在他所行的事上也要這樣衰殘。

                                      溪邊的樹和草上的花有什麼不一樣?溪邊的樹木也會遇見太陽和熱風,太陽和熱風是我們日常生活的考驗,正如人生面對的苦難和試探。面對生命的考驗,有上帝生命內住的我們,能安然依靠上帝的力量勝過一切還站立得住。草上的花的特色就是成長快速,就如世界上所追求的事,快速的成功、速成的愛情、快速的致富。這些在永恆的上帝眼中就如同草上的花一樣,快速成長,但是也快速凋零。