Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- 1. Wyświetl informacje o bazie danych, do której się przyłączyłeś: nazwę, datę utworzenia oraz tryb
- otwarcia, wykorzystując perspektywę v$database. Sprawdź, jakie inne informacje można z niej
- wyciągnąć.
- SQL> desc v$database;
- Name Null? Type
- ----------------------------------------- -------- ----------------
- ------------
- DBID NUMBER
- NAME VARCHAR2(9)
- CREATED DATE
- RESETLOGS_CHANGE# NUMBER
- RESETLOGS_TIME DATE
- PRIOR_RESETLOGS_CHANGE# NUMBER
- PRIOR_RESETLOGS_TIME DATE
- LOG_MODE VARCHAR2(12)
- CHECKPOINT_CHANGE# NUMBER
- ARCHIVE_CHANGE# NUMBER
- CONTROLFILE_TYPE VARCHAR2(7)
- CONTROLFILE_CREATED DATE
- CONTROLFILE_SEQUENCE# NUMBER
- CONTROLFILE_CHANGE# NUMBER
- CONTROLFILE_TIME DATE
- OPEN_RESETLOGS VARCHAR2(11)
- VERSION_TIME DATE
- OPEN_MODE VARCHAR2(20)
- PROTECTION_MODE VARCHAR2(20)
- PROTECTION_LEVEL VARCHAR2(20)
- REMOTE_ARCHIVE VARCHAR2(8)
- ACTIVATION# NUMBER
- SWITCHOVER# NUMBER
- DATABASE_ROLE VARCHAR2(16)
- ARCHIVELOG_CHANGE# NUMBER
- ARCHIVELOG_COMPRESSION VARCHAR2(8)
- SWITCHOVER_STATUS VARCHAR2(20)
- DATAGUARD_BROKER VARCHAR2(8)
- GUARD_STATUS VARCHAR2(7)
- SUPPLEMENTAL_LOG_DATA_MIN VARCHAR2(8)
- SUPPLEMENTAL_LOG_DATA_PK VARCHAR2(3)
- SUPPLEMENTAL_LOG_DATA_UI VARCHAR2(3)
- FORCE_LOGGING VARCHAR2(3)
- PLATFORM_ID NUMBER
- PLATFORM_NAME VARCHAR2(101)
- RECOVERY_TARGET_INCARNATION# NUMBER
- LAST_OPEN_INCARNATION# NUMBER
- CURRENT_SCN NUMBER
- FLASHBACK_ON VARCHAR2(18)
- Mateusz Grzelak 180552
- SUPPLEMENTAL_LOG_DATA_FK VARCHAR2(3)
- SUPPLEMENTAL_LOG_DATA_ALL VARCHAR2(3)
- DB_UNIQUE_NAME VARCHAR2(30)
- STANDBY_BECAME_PRIMARY_SCN NUMBER
- FS_FAILOVER_STATUS VARCHAR2(22)
- FS_FAILOVER_CURRENT_TARGET VARCHAR2(30)
- FS_FAILOVER_THRESHOLD NUMBER
- FS_FAILOVER_OBSERVER_PRESENT VARCHAR2(7)
- FS_FAILOVER_OBSERVER_HOST VARCHAR2(512)
- CONTROLFILE_CONVERTED VARCHAR2(3)
- PRIMARY_DB_UNIQUE_NAME VARCHAR2(30)
- SUPPLEMENTAL_LOG_DATA_PL VARCHAR2(3)
- MIN_REQUIRED_CAPTURE_CHANGE# NUMBER
- 2. Sprawdź globalną nazwę bazy danych wykorzystując tabelę systemową global_name.
- SQL> select * from global_name;
- GLOBAL_NAME
- --------------------------------------------------------------------------------
- ORCL
- 3. Wyświetl informacje o nazwie instancji Twojej bazy danych wykorzystując perspektywę v$instance.
- SQL> select instance_name from v$instance;
- INSTANCE_NAME
- ----------------
- Orcl
- 4. Wyświetl informacje o wersji SZBD wykorzystując perspektywę v$version.
- SQL> select banner from v$version;
- BANNER
- --------------------------------------------------------------------
- ------------
- Oracle Database 11g Enterprise Edition Release 11.2.0.2.0 -
- Production
- PL/SQL Release 11.2.0.2.0 - Production
- CORE 11.2.0.2.0 Production
- TNS for Linux: Version 11.2.0.2.0 - Production
- NLSRTL Version 11.2.0.2.0 - Production
- 5. Korzystając z dynamicznej perspektywy V$SGA, podaj bieżące ustawienia SGA ( w SQL*Plus można
- również użyć polecenia show SGA)
- SQL> show sga
- Mateusz Grzelak 180552
- Total System Global Area 456146944 bytes
- Fixed Size 1344840 bytes
- Variable Size 348129976 bytes
- Database Buffers 100663296 bytes
- Redo Buffers 6008832 bytes
- 6. Wyświetl informacje o przestrzeniach tabel w Twojej bazie danych oraz o lokalizacji plików danych
- przestrzeni tabel. Skorzystaj z tabel systemowychdba_tablespaces oraz dba_data_files oraz jako
- alternatywę dla tych tabel perspektywy v$tablespace i v$datafile.
- SQL> select file_name, tablespace_name, status from dba_data_files;
- FILE_NAME
- --------------------------------------------------------------------
- ------------
- TABLESPACE_NAME STATUS
- ------------------------------ ---------
- /home/oracle/app/oracle/oradata/orcl/users01.dbf
- USERS AVAILABLE
- /home/oracle/app/oracle/oradata/orcl/undotbs01.dbf
- UNDOTBS1 AVAILABLE
- /home/oracle/app/oracle/oradata/orcl/sysaux01.dbf
- SYSAUX AVAILABLE
- FILE_NAME
- --------------------------------------------------------------------
- ------------
- TABLESPACE_NAME STATUS
- ------------------------------ ---------
- /home/oracle/app/oracle/oradata/orcl/system01.dbf
- SYSTEM AVAILABLE
- /home/oracle/app/oracle/oradata/orcl/example01.dbf
- EXAMPLE AVAILABLE
- /home/oracle/app/oracle/oradata/orcl/APEX_1930613455248703.dbf
- APEX_1930613455248703 AVAILABLE
- FILE_NAME
- --------------------------------------------------------------------
- ------------
- TABLESPACE_NAME STATUS
- ------------------------------ ---------
- /home/oracle/app/oracle/oradata/orcl/APEX_2041602962184952.dbf
- APEX_2041602962184952 AVAILABLE
- /home/oracle/app/oracle/oradata/orcl/APEX_2610402357158758.dbf
- APEX_2610402357158758 AVAILABLE
- /home/oracle/app/oracle/oradata/orcl/APEX_2611417663389985.dbf
- APEX_2611417663389985 AVAILABLE
- FILE_NAME
- --------------------------------------------------------------------
- ------------
- TABLESPACE_NAME STATUS
- ------------------------------ ---------
- /home/oracle/app/oracle/oradata/orcl/APEX_2614203650434107.dbf
- APEX_2614203650434107 AVAILABLE
- 10 rows selected.
- Mateusz Grzelak 180552
- SQL> select tablespace_name, status from dba_tablespaces;
- TABLESPACE_NAME STATUS
- ------------------------------ ---------
- SYSTEM ONLINE
- SYSAUX ONLINE
- UNDOTBS1 ONLINE
- TEMP ONLINE
- USERS ONLINE
- EXAMPLE ONLINE
- APEX_1930613455248703 ONLINE
- APEX_2041602962184952 ONLINE
- APEX_2610402357158758 ONLINE
- APEX_2611417663389985 ONLINE
- APEX_2614203650434107 ONLINE
- 11 rows selected.
- SQL> select * from v$tablespace;
- TS# NAME INC BIG FLA ENC
- ---------- ------------------------------ --- --- --- ---
- 0 SYSTEM YES NO YES
- 1 SYSAUX YES NO YES
- 2 UNDOTBS1 YES NO YES
- 4 USERS YES NO YES
- 3 TEMP NO NO YES
- 6 EXAMPLE YES NO YES
- 28 APEX_1930613455248703 YES NO YES
- 29 APEX_2041602962184952 YES NO YES
- 30 APEX_2610402357158758 YES NO YES
- 31 APEX_2611417663389985 YES NO YES
- 32 APEX_2614203650434107 YES NO YES
- 11 rows selected.
- SQL> select name, status from v$datafile;
- NAME
- --------------------------------------------------------------------
- ------------
- STATUS
- -------
- /home/oracle/app/oracle/oradata/orcl/system01.dbf
- SYSTEM
- /home/oracle/app/oracle/oradata/orcl/sysaux01.dbf
- ONLINE
- /home/oracle/app/oracle/oradata/orcl/undotbs01.dbf
- ONLINE
- NAME
- --------------------------------------------------------------------
- ------------
- STATUS
- -------
- /home/oracle/app/oracle/oradata/orcl/users01.dbf
- ONLINE
- /home/oracle/app/oracle/oradata/orcl/example01.dbf
- Mateusz Grzelak 180552
- ONLINE
- /home/oracle/app/oracle/oradata/orcl/APEX_1930613455248703.dbf
- ONLINE
- NAME
- --------------------------------------------------------------------
- ------------
- STATUS
- -------
- /home/oracle/app/oracle/oradata/orcl/APEX_2041602962184952.dbf
- ONLINE
- /home/oracle/app/oracle/oradata/orcl/APEX_2610402357158758.dbf
- ONLINE
- /home/oracle/app/oracle/oradata/orcl/APEX_2611417663389985.dbf
- ONLINE
- NAME
- --------------------------------------------------------------------
- ------------
- STATUS
- -------
- /home/oracle/app/oracle/oradata/orcl/APEX_2614203650434107.dbf
- ONLINE
- /home/oracle/app/oracle/oradata/orcl/flowers_data.dbf
- ONLINE
- /home/oracle/app/oracle/product/11.2.0/dbhome_2/dbs/flowers_indx.dbf
- ONLINE
- 12 rows selected.
- 7. Wyświetl wolny obszar z każdej przestrzeni tabel wykorzystując perspektywę dba_free_space
- SQL> select tablespace_name, sum(bytes) from dba_free_space group by tablespace_name;
- TABLESPACE_NAME SUM(BYTES)
- ------------------------------ ----------
- SYSAUX 118685696
- UNDOTBS1 159121408
- APEX_2610402357158758 1048576
- USERS 46071808
- APEX_2611417663389985 1048576
- SYSTEM 196608
- EXAMPLE 11599872
- APEX_2614203650434107 720896
- APEX_1930613455248703 1048576
- APEX_2041602962184952 1048576
- 10 rows selected.
- 8. Korzystając z perspektywy DBA_SEGMENTS, wyświetl zajęte segmenty dla przestrzeni USERS,
- których właścicielem jest jeden z użytkowników (HR / SCOTT / inny).
- SQL> select segment_name from dba_segments where owner in ('HR','SCOTT');
- SEGMENT_NAME
- Mateusz Grzelak 180552
- --------------------------------------------------------------------------------
- DATA_STAGING_OTN
- DATA_STAGING_EVO
- DATA_STAGING_PTN
- DATA_STAGING_XQY
- DATA_STAGING_REPOS
- DEPT
- EMP
- SALGRADE
- STAT_TABLE
- REGIONS
- LOCATIONS
- SEGMENT_NAME
- --------------------------------------------------------------------------------
- DEPARTMENTS
- JOBS
- EMPLOYEES
- JOB_HISTORY
- SYS_IL0000101509C00003$$
- SYS_C0024634
- SYS_IL0000101594C00003$$
- SYS_C0024645
- SYS_IL0000101603C00003$$
- SYS_C0024647
- SYS_IL0000101607C00003$$
- SEGMENT_NAME
- --------------------------------------------------------------------------------
- SYS_C0024648
- SYS_IL0000101611C00002$$
- PK_DEPT
- PK_EMP
- SYS_IL0000082748C00026$$
- STAT_TABLE
- JHIST_JOB_IX
- JHIST_EMPLOYEE_IX
- JHIST_DEPARTMENT_IX
- LOC_CITY_IX
- LOC_STATE_PROVINCE_IX
- SEGMENT_NAME
- --------------------------------------------------------------------------------
- LOC_COUNTRY_IX
- REG_ID_PK
- Mateusz Grzelak 180552
- COUNTRY_C_ID_PK
- LOC_ID_PK
- DEPT_ID_PK
- JOB_ID_PK
- EMP_EMAIL_UK
- EMP_EMP_ID_PK
- JHIST_EMP_ID_ST_DATE_PK
- EMP_DEPARTMENT_IX
- EMP_JOB_IX
- SEGMENT_NAME
- --------------------------------------------------------------------------------
- EMP_MANAGER_IX
- EMP_NAME_IX
- DEPT_LOCATION_IX
- SYS_LOB0000101509C00003$$
- SYS_LOB0000101603C00003$$
- SYS_LOB0000101607C00003$$
- SYS_LOB0000101611C00002$$
- SYS_LOB0000101594C00003$$
- SYS_LOB0000082748C00026$$
- 53 rows selected.
- 9. Wyświetl informacje o lokalizacji plików kontrolnych Twojej bazy danych korzystając z
- perspektywy v$controlfile.
- SQL> select name from v$controlfile;
- NAME
- --------------------------------------------------------------------------------
- /home/oracle/app/oracle/oradata/orcl/control01.ctl
- /home/oracle/app/oracle/flash_recovery_area/orcl/control02.c
- 10. Podaj status i lokalizację plików dziennika powtórzeń korzystając z dynamicznych
- perspektyw V$LOG oraz V$LOGFILE.
- SQL> select v$log.status, v$logfile.member from v$log, v$logfile where
- v$log.group#=v$logfile.group#;
- STATUS
- ----------------
- MEMBER
- --------------------------------------------------------------------------------
- INACTIVE
- /home/oracle/app/oracle/oradata/orcl/redo03.log
- Mateusz Grzelak 180552
- INACTIVE
- /home/oracle/app/oracle/oradata/orcl/redo02.log
- CURRENT
- /home/oracle/app/oracle/oradata/orcl/redo01.log
- 11. Sprawdź rezultaty wykonania następujących poleceń:
- select a.TABLESPACE_NAME, a.BYTES bytes_used, b.BYTES bytes_free, b.largest, round(((a.BYTES-
- b.BYTES)/a.BYTES)*100,2) percent_used
- from (select TABLESPACE_NAME, sum(BYTES) BYTES from dba_data_files group by
- TABLESPACE_NAME) a,
- (select TABLESPACE_NAME, sum(BYTES) BYTES , max(BYTES) largest from dba_free_space group
- by TABLESPACE_NAME) b
- where a.TABLESPACE_NAME=b.TABLESPACE_NAME order by ((a.BYTES-b.BYTES)/a.BYTES) desc;
- TABLESPACE_NAME BYTES_USED BYTES_FREE LARGEST
- PERCENT_USED
- ------------------------------ ---------- ---------- ---------- ----
- --------
- SYSTEM 881852416 196608 196608
- 99.98
- SYSAUX 1320157184 118685696 5242880
- 91.01
- APEX_2614203650434107 7340032 720896 720896
- 90.18
- EXAMPLE 85983232 11599872 8192000
- 86.51
- USERS 235929600 46071808 37748736
- 80.47
- APEX_2041602962184952 2097152 1048576 1048576
- 50
- APEX_2610402357158758 2097152 1048576 1048576
- 50
- APEX_2611417663389985 2097152 1048576 1048576
- 50
- APEX_1930613455248703 2097152 1048576 1048576
- 50
- UNDOTBS1 178257920 158072832 76546048
- 11.32
- 10 rows selected.
- select OWNER, SEGMENT_NAME, SEGMENT_TYPE, TABLESPACE_NAME, BYTES
- from dba_segments where TABLESPACE_NAME = 'USERS' and OWNER LIKE 'STUDENT%' order by
- OWNER, SEGMENT_NAME;
- Mateusz Grzelak 180552
- no rows selected
- 12. Sprawdź, jacy użytkownicy są założeni w bazie oraz na jakim użytkowniku obecnie pracujesz.
- SQL> select username from dba_users;
- USERNAME
- ------------------------------
- SPATIAL_WFS_ADMIN_USR
- DIP
- IX
- MDDATA
- ORACLE_OCM
- SPATIAL_CSW_ADMIN_USR
- PM
- BI
- XS$NULL
- OLAPSYS
- OWBSYS
- USERNAME
- ------------------------------
- ORDPLUGINS
- OWBSYS_AUDIT
- APPQOSSYS
- EXFSYS
- ORDSYS
- SI_INFORMTN_SCHEMA
- CTXSYS
- ORDDATA
- APEX_040200
- WMSYS
- MDSYS
- USERNAME
- ------------------------------
- FLOWS_FILES
- OUTLN
- TIMESTEN
- XDBEXT
- XDBPM
- XDB
- ANONYMOUS
- Mateusz Grzelak 180552
- OBE
- CACHEADM
- HR_TRIG
- HR
- USERNAME
- ------------------------------
- SH
- DEMO
- HR1
- OE1
- TTHR
- APEX_REST_PUBLIC_USER
- APEX_PUBLIC_USER
- OE
- PLS
- APEX_LISTENER
- SCOTT
- USERNAME
- ------------------------------
- PHPDEMO
- XFILES
- SYSMAN
- SYSTEM
- SYS
- MGMT_VIEW
- DBSNMP
- 51 rows selected.
- SQL> select user from dual;
- USER
- --1
- [oracle@localhost ~]$ sqlplus
- Enter user-name: sys /as sysdba
- --2
- SQL> create user test_a identified by test
- 2 default tablespace users
- 3 quota 10M on users;
- User created.
- SQL> create user test_b identified by test
- 2 default tablespace users
- 3 quota 10M on users;
- User created.
- --3
- SQL> grant connect, resource to test_a;
- Grant succeeded.
- SQL> grant connect, resource, restricted session to test_b;
- Grant succeeded.
- --4
- test_a:
- Enter user-name: test_a
- Enter password:
- Connected to:
- Oracle Database 11g Enterprise Edition Release 11.2.0.2.0 - Production
- With the Partitioning, OLAP, Data Mining and Real Application Testing options
- SQL> create table test (tekst varchar2(100));
- Table created.
- SQL> insert into test values ('pierwszy rekord');
- 1 row created.
- --5
- sys:
- SQL> shutdown transactional;
- Baza danych nie zosatje zamknięta z powodu nie zakończonej sesji pozostałych użytkowników. Aby zamknąć, użytkownik musi zrobić commit lub clawback.
- --6
- tets_b:
- Enter user-name: test_b
- Enter password:
- ERROR:
- ORA-01089: immediate shutdown in progress - no operations are permitted
- Process ID: 0
- Session ID: 0 Serial number: 0
- Połączenie z bazą jest niemożliwe z powodu polecenia shutdown transactional. Baza oczekuje na zakończenie transakcji użytkownika test_a.
- --7
- tets_a:
- SQL> commit;
- Commit complete.
- sys:
- Database closed.
- Database dismounted.
- ORACLE instance shut down.
- --8
- sys:
- SQL> startup
- ORACLE instance started.
- Total System Global Area 456146944 bytes
- Fixed Size 1344840 bytes
- Variable Size 348129976 bytes
- Database Buffers 100663296 bytes
- Redo Buffers 6008832 bytes
- Database mounted.
- Database opened.
- tets_a:
- Enter user-name: test_a
- Enter password:
- Connected to:
- Oracle Database 11g Enterprise Edition Release 11.2.0.2.0 - Production
- With the Partitioning, OLAP, Data Mining and Real Application Testing options
- SQL> insert into test values ('drugi rekord');
- 1 row created.
- SQL> select * from test;
- TEKST
- --------------------------------------------------------------------------------
- drugi rekord
- pierwszy rekord
- --9
- sys:
- SQL> shutdown immediate;
- Database closed.
- Database dismounted.
- ORACLE instance shut down.
- test_a:
- Sesja użytkownika test_a została przerwana.
- ORA-03135: connection lost contact
- Opcja immediate wycofuje wszystkie niezakończone transakcje i następuje natychmiastwoe zamknięcie.
- --10
- sys:
- SQL> startup
- SQL> select * from test;
- TEKST
- --------------------------------------------------------------------------------
- pierwszy rekord
- W bazie znajduje się jedynie pierwszy rekord.
- --11
- test_a:
- SQL> disconn
- sys:
- SQL> shutdown transactional
- Database closed.
- Database dismounted.
- ORACLE instance shut down.
- --12
- sys:
- SQL> startup nomount
- ORACLE instance started.
- Total System Global Area 456146944 bytes
- Fixed Size 1344840 bytes
- Variable Size 348129976 bytes
- Database Buffers 100663296 bytes
- Redo Buffers 6008832 bytes
- Przyłącznie się do bazy jako użytkownik test_a było niemożliwe z powodu trybu NOMOUNT.
- --13
- sys:
- SQL> alter database mount;
- Database altered.
- Przyłącznie się do bazy jako użytkownik test_a było niemożliwe z powodu trybu MOUNT.
- --14
- sys:
- SQL> alter database open;
- Database altered.
- Przyłączenie do bazy jako użytkownik test_a było możliwe dzięki trybowi open.
- --15
- test_a:
- SQL> disconn
- sys:
- SQL> alter system enable restricted session;
- System altered.
- --16
- test_a:
- SQL> conn
- Enter user-name: test_a
- Enter password:
- ERROR:
- ORA-01035: ORACLE only available to users with RESTRICTED SESSION privilege
- test_b:
- Enter user-name: test_b
- Enter password:
- Connected to:
- Oracle Database 11g Enterprise Edition Release 11.2.0.2.0 - Production
- With the Partitioning, OLAP, Data Mining and Real Application Testing options
- Użytkownik test_a nie może połączyć się z bazą. Użytkownik test_b może dzięki nadanemu mu wcześniej uprawnieniu "RESTRICTED SESSION"
- --17
- test_a:
- SQL> disconn
- tets_b:
- SQL> disconn
- sys:
- SQL> select username from dba_users;
- USERNAME
- ------------------------------
- SPATIAL_WFS_ADMIN_USR
- (...)
- USERNAME
- ------------------------------
- SH
- DEMO
- HR1
- OE1
- TTHR
- APEX_REST_PUBLIC_USER
- APEX_PUBLIC_USER
- OE
- TEST_A
- PLS
- TEST_B
- USERNAME
- ------------------------------
- APEX_LISTENER
- (...)
- 53 rows selected.
- SQL> DROP USER TEST_A CASCADE;
- User dropped.
- SQL> DROP USER TEST_B CASCADE;
- User dropped.
- SQL> select username from dba_users;
- USERNAME
- ------------------------------
- SPATIAL_WFS_ADMIN_USR
- DIP
- IX
- MDDATA
- ORACLE_OCM
- SPATIAL_CSW_ADMIN_USR
- PM
- BI
- XS$NULL
- OLAPSYS
- OWBSYS
- USERNAME
- ------------------------------
- ORDPLUGINS
- OWBSYS_AUDIT
- APPQOSSYS
- EXFSYS
- ORDSYS
- SI_INFORMTN_SCHEMA
- CTXSYS
- ORDDATA
- APEX_040200
- WMSYS
- MDSYS
- USERNAME
- ------------------------------
- FLOWS_FILES
- OUTLN
- TIMESTEN
- XDBEXT
- XDBPM
- XDB
- ANONYMOUS
- OBE
- CACHEADM
- HR_TRIG
- HR
- USERNAME
- ------------------------------
- SH
- DEMO
- HR1
- OE1
- TTHR
- APEX_REST_PUBLIC_USER
- APEX_PUBLIC_USER
- OE
- PLS
- APEX_LISTENER
- SCOTT
- USERNAME
- ------------------------------
- PHPDEMO
- XFILES
- SYSMAN
- SYSTEM
- SYS
- MGMT_VIEW
- DBSNMP
- 51 rows selected.
- 1. Przyłączyć się do bazy danych jako administrator.
- [oracle@localhost ~]$ sqlplus
- SQL*Plus: Release 11.2.0.2.0 Production on Mon Mar 23 00:56:48 2015
- Copyright (c) 1982, 2010, Oracle. All rights reserved.
- Enter user-name: sys /as sysdba
- Enter password:
- Connected to:
- Oracle Database 11g Enterprise Edition Release 11.2.0.2.0 - Production
- With the Partitioning, OLAP, Data Mining and Real Application Testing options
- Polecenia należy wykonywać z za pomocą SQL*Plus
- 2. Wyświetlić następujące informacje o wszystkich użytkownikach bazy:
- nazwę użytkownika,
- hasło (w postaci zakodowanej),
- datę utworzenia użytkownika,
- nazwę domyślnej przestrzeni tabel,
- nazwę tymczasowej przestrzeni tabel,
- status użytkownika,
- nazwę profilu, który przydzielono użytkownikowi.
- SQL> select username, password, created, default_tablespace, temporary_tablespace, account_status, profile from dba_users;
- USERNAME PASSWORD CREATED
- ------------------------------ ------------------------------ ---------
- DEFAULT_TABLESPACE TEMPORARY_TABLESPACE
- ------------------------------ ------------------------------
- ACCOUNT_STATUS PROFILE
- -------------------------------- ------------------------------
- SPATIAL_WFS_ADMIN_USR 13-AUG-09
- USERS TEMP
- EXPIRED & LOCKED DEFAULT
- DIP 13-AUG-09
- USERS TEMP
- EXPIRED & LOCKED DEFAULT
- USERNAME PASSWORD CREATED
- ------------------------------ ------------------------------ ---------
- DEFAULT_TABLESPACE TEMPORARY_TABLESPACE
- ------------------------------ ------------------------------
- ACCOUNT_STATUS PROFILE
- -------------------------------- ------------------------------
- IX 30-OCT-09
- USERS TEMP
- EXPIRED & LOCKED DEFAULT
- MDDATA 13-AUG-09
- USERS TEMP
- USERNAME PASSWORD CREATED
- ------------------------------ ------------------------------ ---------
- DEFAULT_TABLESPACE TEMPORARY_TABLESPACE
- ------------------------------ ------------------------------
- ACCOUNT_STATUS PROFILE
- -------------------------------- ------------------------------
- EXPIRED & LOCKED DEFAULT
- ORACLE_OCM 13-AUG-09
- USERS TEMP
- EXPIRED & LOCKED DEFAULT
- SPATIAL_CSW_ADMIN_USR 13-AUG-09
- USERNAME PASSWORD CREATED
- ------------------------------ ------------------------------ ---------
- DEFAULT_TABLESPACE TEMPORARY_TABLESPACE
- ------------------------------ ------------------------------
- ACCOUNT_STATUS PROFILE
- -------------------------------- ------------------------------
- USERS TEMP
- EXPIRED & LOCKED DEFAULT
- PM 30-OCT-09
- USERS TEMP
- EXPIRED & LOCKED DEFAULT
- USERNAME PASSWORD CREATED
- ------------------------------ ------------------------------ ---------
- DEFAULT_TABLESPACE TEMPORARY_TABLESPACE
- ------------------------------ ------------------------------
- ACCOUNT_STATUS PROFILE
- -------------------------------- ------------------------------
- BI 30-OCT-09
- USERS TEMP
- EXPIRED & LOCKED DEFAULT
- XS$NULL 13-AUG-09
- USERS TEMP
- EXPIRED & LOCKED DEFAULT
- USERNAME PASSWORD CREATED
- ------------------------------ ------------------------------ ---------
- DEFAULT_TABLESPACE TEMPORARY_TABLESPACE
- ------------------------------ ------------------------------
- ACCOUNT_STATUS PROFILE
- -------------------------------- ------------------------------
- OLAPSYS 13-AUG-09
- SYSAUX TEMP
- EXPIRED & LOCKED DEFAULT
- OWBSYS 13-AUG-09
- SYSAUX TEMP
- USERNAME PASSWORD CREATED
- ------------------------------ ------------------------------ ---------
- DEFAULT_TABLESPACE TEMPORARY_TABLESPACE
- ------------------------------ ------------------------------
- ACCOUNT_STATUS PROFILE
- -------------------------------- ------------------------------
- EXPIRED & LOCKED DEFAULT
- ORDPLUGINS 13-AUG-09
- SYSAUX TEMP
- EXPIRED & LOCKED DEFAULT
- OWBSYS_AUDIT 13-AUG-09
- USERNAME PASSWORD CREATED
- ------------------------------ ------------------------------ ---------
- DEFAULT_TABLESPACE TEMPORARY_TABLESPACE
- ------------------------------ ------------------------------
- ACCOUNT_STATUS PROFILE
- -------------------------------- ------------------------------
- SYSAUX TEMP
- EXPIRED & LOCKED DEFAULT
- APPQOSSYS 13-AUG-09
- SYSAUX TEMP
- EXPIRED & LOCKED DEFAULT
- USERNAME PASSWORD CREATED
- ------------------------------ ------------------------------ ---------
- DEFAULT_TABLESPACE TEMPORARY_TABLESPACE
- ------------------------------ ------------------------------
- ACCOUNT_STATUS PROFILE
- -------------------------------- ------------------------------
- EXFSYS 13-AUG-09
- SYSAUX TEMP
- EXPIRED & LOCKED DEFAULT
- ORDSYS 13-AUG-09
- SYSAUX TEMP
- EXPIRED & LOCKED DEFAULT
- USERNAME PASSWORD CREATED
- ------------------------------ ------------------------------ ---------
- DEFAULT_TABLESPACE TEMPORARY_TABLESPACE
- ------------------------------ ------------------------------
- ACCOUNT_STATUS PROFILE
- -------------------------------- ------------------------------
- SI_INFORMTN_SCHEMA 13-AUG-09
- SYSAUX TEMP
- EXPIRED & LOCKED DEFAULT
- CTXSYS 13-AUG-09
- SYSAUX TEMP
- USERNAME PASSWORD CREATED
- ------------------------------ ------------------------------ ---------
- DEFAULT_TABLESPACE TEMPORARY_TABLESPACE
- ------------------------------ ------------------------------
- ACCOUNT_STATUS PROFILE
- -------------------------------- ------------------------------
- EXPIRED & LOCKED DEFAULT
- ORDDATA 13-AUG-09
- SYSAUX TEMP
- EXPIRED & LOCKED DEFAULT
- APEX_040200 29-NOV-12
- USERNAME PASSWORD CREATED
- ------------------------------ ------------------------------ ---------
- DEFAULT_TABLESPACE TEMPORARY_TABLESPACE
- ------------------------------ ------------------------------
- ACCOUNT_STATUS PROFILE
- -------------------------------- ------------------------------
- SYSAUX TEMP
- EXPIRED & LOCKED DEFAULT
- WMSYS 13-AUG-09
- SYSAUX TEMP
- EXPIRED & LOCKED DEFAULT
- USERNAME PASSWORD CREATED
- ------------------------------ ------------------------------ ---------
- DEFAULT_TABLESPACE TEMPORARY_TABLESPACE
- ------------------------------ ------------------------------
- ACCOUNT_STATUS PROFILE
- -------------------------------- ------------------------------
- MDSYS 13-AUG-09
- SYSAUX TEMP
- EXPIRED & LOCKED DEFAULT
- FLOWS_FILES 07-FEB-11
- SYSAUX TEMP
- EXPIRED & LOCKED DEFAULT
- USERNAME PASSWORD CREATED
- ------------------------------ ------------------------------ ---------
- DEFAULT_TABLESPACE TEMPORARY_TABLESPACE
- ------------------------------ ------------------------------
- ACCOUNT_STATUS PROFILE
- -------------------------------- ------------------------------
- OUTLN 13-AUG-09
- SYSTEM TEMP
- EXPIRED & LOCKED DEFAULT
- TIMESTEN 23-MAY-12
- USERS TEMP
- USERNAME PASSWORD CREATED
- ------------------------------ ------------------------------ ---------
- DEFAULT_TABLESPACE TEMPORARY_TABLESPACE
- ------------------------------ ------------------------------
- ACCOUNT_STATUS PROFILE
- -------------------------------- ------------------------------
- LOCKED DEFAULT
- XDBEXT 20-OCT-11
- USERS TEMP
- LOCKED DEFAULT
- XDBPM 20-OCT-11
- USERNAME PASSWORD CREATED
- ------------------------------ ------------------------------ ---------
- DEFAULT_TABLESPACE TEMPORARY_TABLESPACE
- ------------------------------ ------------------------------
- ACCOUNT_STATUS PROFILE
- -------------------------------- ------------------------------
- USERS TEMP
- LOCKED DEFAULT
- XDB 13-AUG-09
- SYSAUX TEMP
- LOCKED DEFAULT
- USERNAME PASSWORD CREATED
- ------------------------------ ------------------------------ ---------
- DEFAULT_TABLESPACE TEMPORARY_TABLESPACE
- ------------------------------ ------------------------------
- ACCOUNT_STATUS PROFILE
- -------------------------------- ------------------------------
- ANONYMOUS 13-AUG-09
- SYSAUX TEMP
- EXPIRED DEFAULT
- OBE 29-NOV-12
- APEX_2614203650434107 TEMP
- OPEN DEFAULT
- USERNAME PASSWORD CREATED
- ------------------------------ ------------------------------ ---------
- DEFAULT_TABLESPACE TEMPORARY_TABLESPACE
- ------------------------------ ------------------------------
- ACCOUNT_STATUS PROFILE
- -------------------------------- ------------------------------
- CACHEADM 23-MAY-12
- USERS TEMP
- OPEN DEFAULT
- HR_TRIG 25-MAY-11
- USERS TEMP
- USERNAME PASSWORD CREATED
- ------------------------------ ------------------------------ ---------
- DEFAULT_TABLESPACE TEMPORARY_TABLESPACE
- ------------------------------ ------------------------------
- ACCOUNT_STATUS PROFILE
- -------------------------------- ------------------------------
- OPEN DEFAULT
- HR 23-FEB-11
- USERS TEMP
- OPEN DEFAULT
- SH 30-OCT-09
- USERNAME PASSWORD CREATED
- ------------------------------ ------------------------------ ---------
- DEFAULT_TABLESPACE TEMPORARY_TABLESPACE
- ------------------------------ ------------------------------
- ACCOUNT_STATUS PROFILE
- -------------------------------- ------------------------------
- USERS TEMP
- OPEN DEFAULT
- DEMO 30-OCT-09
- USERS TEMP
- OPEN DEFAULT
- USERNAME PASSWORD CREATED
- ------------------------------ ------------------------------ ---------
- DEFAULT_TABLESPACE TEMPORARY_TABLESPACE
- ------------------------------ ------------------------------
- ACCOUNT_STATUS PROFILE
- -------------------------------- ------------------------------
- HR1 02-FEB-10
- USERS TEMP
- OPEN DEFAULT
- OE1 02-FEB-10
- USERS TEMP
- OPEN DEFAULT
- USERNAME PASSWORD CREATED
- ------------------------------ ------------------------------ ---------
- DEFAULT_TABLESPACE TEMPORARY_TABLESPACE
- ------------------------------ ------------------------------
- ACCOUNT_STATUS PROFILE
- -------------------------------- ------------------------------
- TTHR 23-MAY-12
- USERS TEMP
- OPEN DEFAULT
- APEX_REST_PUBLIC_USER 29-NOV-12
- USERS TEMP
- USERNAME PASSWORD CREATED
- ------------------------------ ------------------------------ ---------
- DEFAULT_TABLESPACE TEMPORARY_TABLESPACE
- ------------------------------ ------------------------------
- ACCOUNT_STATUS PROFILE
- -------------------------------- ------------------------------
- OPEN DEFAULT
- APEX_PUBLIC_USER 07-FEB-11
- USERS TEMP
- OPEN DEFAULT
- OE 16-FEB-11
- USERNAME PASSWORD CREATED
- ------------------------------ ------------------------------ ---------
- DEFAULT_TABLESPACE TEMPORARY_TABLESPACE
- ------------------------------ ------------------------------
- ACCOUNT_STATUS PROFILE
- -------------------------------- ------------------------------
- USERS TEMP
- OPEN DEFAULT
- PLS 23-MAY-12
- USERS TEMP
- OPEN DEFAULT
- USERNAME PASSWORD CREATED
- ------------------------------ ------------------------------ ---------
- DEFAULT_TABLESPACE TEMPORARY_TABLESPACE
- ------------------------------ ------------------------------
- ACCOUNT_STATUS PROFILE
- -------------------------------- ------------------------------
- APEX_LISTENER 29-NOV-12
- USERS TEMP
- OPEN DEFAULT
- SCOTT 13-AUG-09
- USERS TEMP
- OPEN DEFAULT
- USERNAME PASSWORD CREATED
- ------------------------------ ------------------------------ ---------
- DEFAULT_TABLESPACE TEMPORARY_TABLESPACE
- ------------------------------ ------------------------------
- ACCOUNT_STATUS PROFILE
- -------------------------------- ------------------------------
- PHPDEMO 25-MAY-11
- USERS TEMP
- OPEN DEFAULT
- XFILES 04-OCT-10
- USERS TEMP
- USERNAME PASSWORD CREATED
- ------------------------------ ------------------------------ ---------
- DEFAULT_TABLESPACE TEMPORARY_TABLESPACE
- ------------------------------ ------------------------------
- ACCOUNT_STATUS PROFILE
- -------------------------------- ------------------------------
- OPEN DEFAULT
- SYSMAN 13-AUG-09
- SYSAUX TEMP
- OPEN DEFAULT
- SYSTEM 13-AUG-09
- USERNAME PASSWORD CREATED
- ------------------------------ ------------------------------ ---------
- DEFAULT_TABLESPACE TEMPORARY_TABLESPACE
- ------------------------------ ------------------------------
- ACCOUNT_STATUS PROFILE
- -------------------------------- ------------------------------
- SYSTEM TEMP
- OPEN DEFAULT
- SYS 13-AUG-09
- SYSTEM TEMP
- OPEN DEFAULT
- USERNAME PASSWORD CREATED
- ------------------------------ ------------------------------ ---------
- DEFAULT_TABLESPACE TEMPORARY_TABLESPACE
- ------------------------------ ------------------------------
- ACCOUNT_STATUS PROFILE
- -------------------------------- ------------------------------
- MGMT_VIEW 13-AUG-09
- SYSTEM TEMP
- OPEN DEFAULT
- DBSNMP 13-AUG-09
- SYSAUX TEMP
- OPEN MONITORING_PROFILE
- USERNAME PASSWORD CREATED
- ------------------------------ ------------------------------ ---------
- DEFAULT_TABLESPACE TEMPORARY_TABLESPACE
- ------------------------------ ------------------------------
- ACCOUNT_STATUS PROFILE
- -------------------------------- ------------------------------
- 51 rows selected.
- 3. Utworzyć dwóch nowych użytkowników o następujących parametrach:
- nazwa użytkownika: uzytk_1 | hasło: test_uzytk_1 | domyślna przestrzeń tabel: users | tymczasowa przestrzeń tabel: temp | profil: default
- nazwa użytkownika: uzytk_2 | hasło: test_uzytk_2 | domyślna przestrzeń tabel: users | tymczasowa przestrzeń tabel: temp | profil: default.
- SQL> create user uzytk_1 identified by test_uzytk_1 default tablespace users temporary tablespace temp profile default;
- User created.
- SQL> create user uzytk_2 identified by test_uzytk_2 default tablespace users temporary tablespace temp profile default;
- User created.
- 4. Sprawdzić, jakie ograniczenia na użycie miejsca w przestrzeniach tabel mają obaj użytkownicy (Podpowiedź: Widok dba_ts_quotas zawiera informacje o ograniczeniach, czyli jeśli nie ma tam wpisu dotyczącego określonego użytkownika, oznacza to, że użytkownik ten nie ma nałożonych ograniczeń). Następnie zdefiniować dla nich następujące ograniczenia: dla przestrzeni SYSTEM: 10M, dla przestrzeni USERS: 50M.
- SQL> select * from dba_ts_quotas where username='uzytk_1' or username='uzytk_2';
- no rows selected
- Użytkownicy nie mają ograniczeń.
- SQL> alter user uzytk_1 quota 10M on system quota 50M on users;
- User altered.
- SQL> alter user uzytk_2 quota 10M on system quota 50M on users;
- User altered.
- 5. Uruchomić w drugim oknie Sql*Plus i spróbować przyłączyć się do bazy danych jako użytkownik uzytk_1.
- [oracle@localhost ~]$ sqlplus
- SQL*Plus: Release 11.2.0.2.0 Production on Mon Mar 23 01:13:22 2015
- Copyright (c) 1982, 2010, Oracle. All rights reserved.
- Enter user-name: uzytk_1
- Enter password:
- ERROR:
- ORA-01045: user UZYTK_1 lacks CREATE SESSION privilege; logon denied
- 6. Z okna administratora wydać polecenie umożliwiające użytkownikowi uzytk_1 przyłączenie się do bazy danych.
- SQL> grant connect to uzytk_1;
- Grant succeeded.
- 7. Ponownie spróbować przyłączyć się do bazy jako uzytk_1.
- Enter user-name: uzytk_1
- Enter password:
- Connected to:
- Oracle Database 11g Enterprise Edition Release 11.2.0.2.0 - Production
- With the Partitioning, OLAP, Data Mining and Real Application Testing options
- 8. Ten sam przywilej nadać również użytkownikowi uzytk_2.
- SQL> grant connect to uzytk_2;
- Grant succeeded.
- 9. Jako użytk_1 spróbować utworzyć tabelę test o następującym schemacie: Id number(4), Nazwa varchar2(100)
- SQL> create table test(
- 2 Id number(4),
- 3 Nazwa varchar2(100));
- create table test(
- *
- ERROR at line 1:
- ORA-01031: insufficient privileges
- 10. Sprawdzić w odpowiednich widokach słownika danych, jakie przywileje obiektowe i systemowe posiada użytkownik uzytk_1. Podpowiedź: dba_role_privs | dba_sys_privs | dba_tab_privs
- SQL> select * from dba_role_privs where grantee='uzytk_1';
- no rows selected
- SQL> select * from dba_sys_privs where grantee='uzytk_1';
- no rows selected
- SQL> select * from dba_tab_privs where grantee='uzytk_1';
- no rows selected
- 11. Jako administrator (konsola administracyjna) nadać użytkownikowi uzytk_1 odpowiedni przywilej systemowy i spróbować ponownie z konsoli tego użytkownika utworzyć tabelę test.
- sys:
- SQL> grant resource to uzytk_1;
- Grant succeeded.
- uzytk_1:
- SQL> create table test(Id number(4), Nazwa varchar2(100));
- Table created.
- Bezpieczniejsze byłoby nadanie uprawnień tylko do tworzenia tabeli, czyli: grant create table to uzytk_1;
- 12. Jako użytkownik uzytk_1 spróbować wstawić do tabeli test dwa rekordy o wartościach: {1, pierwszy rekord} i {2, drugi rekord}. Zatwierdzić wprowadzone dane.
- SQL> insert into test(Id, Nazwa) values (1, 'pierwszy rekord');
- 1 row created.
- SQL> insert into test(Id, Nazwa) values (2, 'drugi rekord');
- 1 row created.
- SQL> commit;
- Commit complete.
- 13. W trzecim oknie przyłączyć się do bazy jako użytkownik uzytk_2 i spróbować odczytać wszystkie rekordy tabeli test użytkownika uzytk_1.
- Enter user-name: uzytk_2
- Enter password:
- Connected to:
- Oracle Database 11g Enterprise Edition Release 11.2.0.2.0 - Production
- With the Partitioning, OLAP, Data Mining and Real Application Testing options
- SQL> select * from uzytk_1.test;
- select * from uzytk_1.test
- *
- ERROR at line 1:
- ORA-00942: table or view does not exist
- 14. Jako użytkownik uzytk_1 wydać polecenie umożliwiające użytkownikowi uzytk_2 wykonać poprzednią operację.
- uzytk_1:
- SQL> grant select on test to uzytk_2;
- Grant succeeded.
- uzytk_2:
- SQL> select * from uzytk_1.test;
- ID
- ----------
- NAZWA
- --------------------------------------------------------------------------------
- 1
- pierwszy rekord
- 2
- drugi rekord
- 15. Jako użytkownik uzytk_1 nadać użytkownikowi uzytk_2 możliwość dodawania rekordów do tabeli test w schemacie użytkownika uzytk_1. Przywilej ma być nadany z opcją administracyjną (możliwość dalszego przekazania przywileju). Sprawdzić działanie poprzez wstawienie jako użytkownik uzytk_2 kolejnego rekordu {3, trzeci rekord} do tabeli test.
- uzytk_1:
- SQL> grant insert on test to uzytk_2 with grant option;
- Grant succeeded
- uzytk_2:
- SQL> insert into uzytk_1.test (Id, Nazwa) values (3, 'trzeci rekord');
- 1 row created.
- 16. Jako uzytk_2 przekazać poprzedni przywilej nowemu użytkownikowi test_a (ma już prawa do podłączenia się do bazy i tworzenia podstawowych zasobów), jednak bez opcji administracyjnej.
- sys:
- SQL> create user test_a identified by test default tablespace users quota 10M on users;
- User created.
- SQL> grant connect, resource to test_a;
- Grant succeeded.
- uzytk_2:
- SQL> grant insert on uzytk_1.test to test_a;
- Grant succeeded.
- 17. W czwartym oknie przyłączyć się do bazy jako użytkownik test_a i spróbować wstawić do tabeli test kolejny rekord {4, czwarty rekord}.
- Enter user-name: test_a
- Enter password:
- Connected to:
- Oracle Database 11g Enterprise Edition Release 11.2.0.2.0 - Production
- With the Partitioning, OLAP, Data Mining and Real Application Testing options
- SQL> insert into uzytk_1.test (Id, Nazwa) values (4, 'czwarty rekord');
- 1 row created.
- 18. Jako administrator wyświetlić informacje o wszystkich przywilejach (zarówno systemowych jak i obiektowych), posiadanych przez użytkowników: uzytk_1, uzytk_2 i test_a.
- SQL> select * from dba_role_privs where grantee='uzytk_1' or grantee='uzytk_2' or grantee='test_a';
- no rows selected
- SQL> select * from dba_sys_privs where grantee='uzytk_1' or grantee='uzytk_2' or grantee='test_a';
- no rows selected
- SQL> select * from dba_tab_privs where grantee='uzytk_1' or grantee='uzytk_2' or grantee='test_a';
- no rows selected
- 19. Jako użytkownik uzytk_1 odebrać użytkownikowi uzytk_2 prawo wstawiania rekordów do tabeli test. Sprawdzić, czy użytkownik uzytk_2 może jeszcze wstawiać rekordy do tabeli test. Sprawdzić, czy użytkownik test_a zachował prawo wstawiania rekordów do tabeli test.
- uzytk_1:
- SQL> revoke insert on test from uzytk_2;
- Revoke succeeded.
- uzytk_2:
- SQL> insert into uzytk_1.test (Id, Nazwa) values (5, 'piaty rekord');
- insert into uzytk_1.test (Id, Nazwa) values (5, 'piaty rekord')
- *
- ERROR at line 1:
- ORA-01031: insufficient privileges
- test_a:
- SQL> insert into uzytk_1.test (Id, Nazwa) values (5, 'piaty rekord');
- insert into uzytk_1.test (Id, Nazwa) values (5, 'piaty rekord')
- *
- ERROR at line 1:
- ORA-00942: table or view does not exist
- 20. Jako użytkownik uzytk_1 odebrać użytkownikowi uzytk_2 wszystkie prawa do tabeli test (jednym poleceniem).
- SQL> revoke all on test from uzytk_2;
- Revoke succeeded.
- 21. Jako administrator nadać użytkownikowi uzytk_1 prawo tworzenia ról.
- SQL> grant create role to uzytk_1;
- Grant succeeded.
- 22. Jako użytkownik uzytk_1 utworzyć rolę o następujących własnościach:
- nazwa roli: zmiana_danych | przywileje w roli: odczytywanie, wstawianie, usuwanie i modyfikowanie danych tabeli test.
- SQL> create role zmiana_danych;
- Role created.
- SQL> grant select, insert, delete, alter on test to zmiana_danych;
- Grant succeeded.
- 23. Nadać rolę użytkownikowi uzytk_2.
- SQL> grant zmiana_danych to uzytk_2;
- Grant succeeded.
- 24. Sprawdzić w oknie użytkownika uzytk_2, czy może modyfikować dane tabeli test (np. usuwać rekordy) Dlaczego operacja modyfikacji kończy się niepowodzeniem mimo tego, że uzytk_2 otrzymał rolę zmiana_danych?
- SQL> delete from uzytk_1.test where Id=4;
- delete from uzytk_1.test where Id=4
- *
- ERROR at line 1:
- ORA-00942: table or view does not exist
- Operacja nie powiodła się, ponieważ zmiany uprawnień zostaną wprowadzone po ponownym przyłączeniu do bazy użytkownika uzytk_2.
- 25. Wylogować użytkownika uzytk_2 i przyłączyć go ponownie do bazy. Sprawdzić, czy teraz przywileje, związane z rolą zmiana_danych działają.
- SQL> disconn
- Disconnected from Oracle Database 11g Enterprise Edition Release 11.2.0.2.0 - Production
- With the Partitioning, OLAP, Data Mining and Real Application Testing options
- SQL> conn
- Enter user-name: uzytk_2
- Enter password:
- Connected.
- SQL> delete from uzytk_1.test where Id=4;
- 1 row deleted.
- 26. Jako użytkownik uzytk_1 utworzyć kolejną rolę o następujących własnościach:
- nazwa roli: zmiana_struktury | przywileje w roli: zmiana struktury (alter) tabeli test | rola identyfikowana przez hasło zmiana
- SQL> create role zmiana_struktury identified by zmiana;
- Role created.
- SQL> grant alter on test to zmiana_struktury;
- Grant succeeded.
- 27. Nadać rolę użytkownikowi uzytk_2.
- SQL> grant zmiana_struktury to uzytk_2;
- Grant succeeded.
- 28. Sprawdzić, czy użytkownik uzytk_2 ma prawo modyfikowania struktury tabeli test użytkownika uzytk_1. W tym celu spróbować dodać do tabeli test nową kolumnę liczba number(5,2). Co uzytk_2 powinien zrobić, aby mógł wykonać tę operację bez konieczności ponownego przyłączenia się do bazy danych?
- SQL> alter table uzytk_1.test add liczba number(5,2);
- alter table uzytk_1.test add liczba number(5,2)
- *
- ERROR at line 1:
- ORA-00942: table or view does not exist
- Aby użytk_2 mógł wykonać tę operację musi wykonać poniższe polecenie:
- SQL> set role zmiana_struktury identified by zmiana;
- Role set.
- SQL> alter table uzytk_1.test add liczba number(5,2);
- Table altered.
- 29. Jako użytkownik uzytk_1 odebrać obie role użytkownikowi uzytk_2. Sprawdzić, czy użytk_2 ma nadal prawa zmiany danych i struktury relacji test (bez ponownego zalogowania).
- uzytk_1:
- SQL> revoke zmiana_danych from uzytk_2;
- Revoke succeeded.
- SQL> revoke zmiana_struktury from uzytk_2;
- Revoke succeeded.
- uzytk_2:
- SQL> delete from uzytk_1.test where Id=3;
- delete from uzytk_1.test where Id=3
- *
- ERROR at line 1:
- ORA-01031: insufficient privileges
- SQL> alter table uzytk_1.test drop column liczba;
- Table altered.
- 30. Jako administrator sprawdzić w widoku słownika danych, jakie profile zostały zdefiniowane w bazie.
- SQL> select * from dba_profiles;
- PROFILE RESOURCE_NAME RESOURCE
- ------------------------------ -------------------------------- --------
- LIMIT
- ----------------------------------------
- DEFAULT COMPOSITE_LIMIT KERNEL
- UNLIMITED
- DEFAULT SESSIONS_PER_USER KERNEL
- UNLIMITED
- DEFAULT CPU_PER_SESSION KERNEL
- UNLIMITED
- PROFILE RESOURCE_NAME RESOURCE
- ------------------------------ -------------------------------- --------
- LIMIT
- ----------------------------------------
- DEFAULT CPU_PER_CALL KERNEL
- UNLIMITED
- DEFAULT LOGICAL_READS_PER_SESSION KERNEL
- UNLIMITED
- DEFAULT LOGICAL_READS_PER_CALL KERNEL
- UNLIMITED
- PROFILE RESOURCE_NAME RESOURCE
- ------------------------------ -------------------------------- --------
- LIMIT
- ----------------------------------------
- DEFAULT IDLE_TIME KERNEL
- UNLIMITED
- DEFAULT CONNECT_TIME KERNEL
- UNLIMITED
- DEFAULT PRIVATE_SGA KERNEL
- UNLIMITED
- PROFILE RESOURCE_NAME RESOURCE
- ------------------------------ -------------------------------- --------
- LIMIT
- ----------------------------------------
- DEFAULT FAILED_LOGIN_ATTEMPTS PASSWORD
- UNLIMITED
- DEFAULT PASSWORD_LIFE_TIME PASSWORD
- UNLIMITED
- DEFAULT PASSWORD_REUSE_TIME PASSWORD
- UNLIMITED
- PROFILE RESOURCE_NAME RESOURCE
- ------------------------------ -------------------------------- --------
- LIMIT
- ----------------------------------------
- DEFAULT PASSWORD_REUSE_MAX PASSWORD
- UNLIMITED
- DEFAULT PASSWORD_VERIFY_FUNCTION PASSWORD
- NULL
- DEFAULT PASSWORD_LOCK_TIME PASSWORD
- 1
- PROFILE RESOURCE_NAME RESOURCE
- ------------------------------ -------------------------------- --------
- LIMIT
- ----------------------------------------
- DEFAULT PASSWORD_GRACE_TIME PASSWORD
- 7
- MONITORING_PROFILE COMPOSITE_LIMIT KERNEL
- DEFAULT
- MONITORING_PROFILE SESSIONS_PER_USER KERNEL
- DEFAULT
- PROFILE RESOURCE_NAME RESOURCE
- ------------------------------ -------------------------------- --------
- LIMIT
- ----------------------------------------
- MONITORING_PROFILE CPU_PER_SESSION KERNEL
- DEFAULT
- MONITORING_PROFILE CPU_PER_CALL KERNEL
- DEFAULT
- MONITORING_PROFILE LOGICAL_READS_PER_SESSION KERNEL
- DEFAULT
- PROFILE RESOURCE_NAME RESOURCE
- ------------------------------ -------------------------------- --------
- LIMIT
- ----------------------------------------
- MONITORING_PROFILE LOGICAL_READS_PER_CALL KERNEL
- DEFAULT
- MONITORING_PROFILE IDLE_TIME KERNEL
- DEFAULT
- MONITORING_PROFILE CONNECT_TIME KERNEL
- DEFAULT
- PROFILE RESOURCE_NAME RESOURCE
- ------------------------------ -------------------------------- --------
- LIMIT
- ----------------------------------------
- MONITORING_PROFILE PRIVATE_SGA KERNEL
- DEFAULT
- MONITORING_PROFILE FAILED_LOGIN_ATTEMPTS PASSWORD
- UNLIMITED
- MONITORING_PROFILE PASSWORD_LIFE_TIME PASSWORD
- DEFAULT
- PROFILE RESOURCE_NAME RESOURCE
- ------------------------------ -------------------------------- --------
- LIMIT
- ----------------------------------------
- MONITORING_PROFILE PASSWORD_REUSE_TIME PASSWORD
- DEFAULT
- MONITORING_PROFILE PASSWORD_REUSE_MAX PASSWORD
- DEFAULT
- MONITORING_PROFILE PASSWORD_VERIFY_FUNCTION PASSWORD
- DEFAULT
- PROFILE RESOURCE_NAME RESOURCE
- ------------------------------ -------------------------------- --------
- LIMIT
- ----------------------------------------
- MONITORING_PROFILE PASSWORD_LOCK_TIME PASSWORD
- DEFAULT
- MONITORING_PROFILE PASSWORD_GRACE_TIME PASSWORD
- DEFAULT
- 32 rows selected.
- 31. Utworzyć nowy profil o nazwie moj_profil i następujących parametrach:
- maksymalny czas trwania sesji: 15 minut | maksymalny czas bezczynności sesji: 1 minuta | maksymalna liczba równoległych sesji użytkownika: 2 | Pozostałe parametry mają zachować wartości domyślne.
- SQL> create profile moj_profil limit connect_time 15 idle_time 1 sessions_per_user 2;
- Profile created.
- 32. Sprawdzić, czy baza danych jest skonfigurowana w kierunku sprawdzania limitów zasobowych. W tym celu odczytać wartość parametru RESOURCE_LIMIT z widoku dynamicznego gv$parameter. Jeśli wartość parametru to FALSE, zmienić ją na TRUE.
- SQL> select value, type from gv$parameter where name='resource_limit';
- VALUE
- --------------------------------------------------------------------------------
- TYPE
- ----------
- FALSE
- 1
- SQL> alter SYSTEM set resource_limit=TRUE;
- System altered.
- SQL> select value, type from gv$parameter where name='resource_limit';
- VALUE
- --------------------------------------------------------------------------------
- TYPE
- ----------
- TRUE
- 1
- 33. Przydzielić nowy profil użytkownikowi uzytk_2.
- SQL> alter user uzytk_2 profile moj_profil;
- User altered.
- 34. Sprawdzić działanie nowego profilu. W tym celu spróbować uruchomić dodatkowe sesje użytkownika uzytk_2. Sprawdzić, jak długo sesja użytkownika uzytk_2 może pozostać bezczynna.
- Jedna sesja jest już aktywna z poprzednich poleceń.
- Enter user-name: uzytk_2
- Enter password:
- Connected to:
- Oracle Database 11g Enterprise Edition Release 11.2.0.2.0 - Production
- With the Partitioning, OLAP, Data Mining and Real Application Testing options
- Enter user-name: uzytk_2
- Enter password:
- ERROR:
- ORA-02391: exceeded simultaneous SESSIONS_PER_USER limit
- SQL> insert into uzytk_1.test (Id, Nazwa) values (5, 'piaty rekord');
- insert into uzytk_1.test (Id, Nazwa) values (5, 'piaty rekord')
- *
- ERROR at line 1:
- ORA-02396: exceeded maximum idle time, please connect again
- 35. Przywrócić użytkownikowi uzytk_2 profil domyślny (default).
- SQL> alter user uzytk_2 profile default;
- User altered.
- 36. Jako administrator sprawdzić, jacy użytkownicy są przyłączeni aktualnie do bazy danych. Sprawdzić statusy ich sesji. Podpowiedź: widok dynamiczny v$session
- SQL> select username, status from v$session;
- USERNAME STATUS
- ------------------------------ --------
- ACTIVE
- ACTIVE
- ACTIVE
- ACTIVE
- ACTIVE
- ACTIVE
- ACTIVE
- ACTIVE
- ACTIVE
- ACTIVE
- ACTIVE
- USERNAME STATUS
- ------------------------------ --------
- ACTIVE
- ACTIVE
- ACTIVE
- ACTIVE
- UZYTK_2 SNIPED
- ACTIVE
- ACTIVE
- ACTIVE
- ACTIVE
- ACTIVE
- UZYTK_1 INACTIVE
- USERNAME STATUS
- ------------------------------ --------
- ACTIVE
- ACTIVE
- ACTIVE
- SYS ACTIVE
- ACTIVE
- ACTIVE
- ACTIVE
- APEX_PUBLIC_USER INACTIVE
- ACTIVE
- ACTIVE
- ACTIVE
- USERNAME STATUS
- ------------------------------ --------
- TEST_A INACTIVE
- APEX_PUBLIC_USER INACTIVE
- APEX_PUBLIC_USER INACTIVE
- 36 rows selected.
- 37. Wykonać polecenia, które usuną sesję użytkownika uzytk_1.
- SQL> alter system kill session '33,7' immediate;
- System altered.
- 38. Sprawdzić, co dzieje się z sesją użytkownika uzytk_1 po jej usunięciu.
- SQL> select username, status from v$session;
- USERNAME STATUS
- ------------------------------ --------
- ACTIVE
- ACTIVE
- ACTIVE
- ACTIVE
- ACTIVE
- ACTIVE
- ACTIVE
- ACTIVE
- ACTIVE
- ACTIVE
- ACTIVE
- USERNAME STATUS
- ------------------------------ --------
- ACTIVE
- ACTIVE
- ACTIVE
- ACTIVE
- UZYTK_2 SNIPED
- ACTIVE
- ACTIVE
- ACTIVE
- ACTIVE
- ACTIVE
- ACTIVE
- USERNAME STATUS
- ------------------------------ --------
- ACTIVE
- ACTIVE
- ACTIVE
- SYS ACTIVE
- ACTIVE
- ACTIVE
- APEX_PUBLIC_USER INACTIVE
- ACTIVE
- ACTIVE
- ACTIVE
- ACTIVE
- USERNAME STATUS
- ------------------------------ --------
- TEST_A INACTIVE
- APEX_PUBLIC_USER INACTIVE
- APEX_PUBLIC_USER INACTIVE
- 36 rows selected.
- 39. Przy założeniu, że użytkownik uzytk_2 nadal pozostaje przyłączony do bazy (jeśli tak nie jest, przyłączyć go), spróbować usunąć użytkownika uzytk_2. Dlaczego operacja nie kończy się powodzeniem?
- SQL> drop user uzytk_2;
- drop user uzytk_2
- *
- ERROR at line 1:
- ORA-01940: cannot drop a user that is currently connected
- Operacja nie udała się, ponieważ użytk_2 jest podłączony do bazy.
- 40. Usunąć sesję użytkownika uzytk_2 i spróbować ponownie dokonać usunięcia użytkownika.
- SQL> alter system kill session '57,9' immediate;
- System altered.
- SQL> drop user uzytk_2;
- User dropped.
- 41. Spróbować usunąć konto użytkownika uzytk_1. Dlaczego trzeba użyć opcji CASCADE?
- SQL> drop user uzytk_1;
- drop user uzytk_1
- *
- ERROR at line 1:
- ORA-01922: CASCADE must be specified to drop 'UZYTK_1'
- SQL> drop user uzytk_1 cascade;
- User dropped.
- Opcja CASCADE jest potrzebna, ponieważ użytk_1 nadał innym użytkownikom przywileje z opcją GRANT OPTION.
- 42. Jeśli w poleceniu 32 (zmiana w RESOUCE_LIMIT) została wykonana modyfikacja, przywrócić poprzedni stan.
- SQL> alter SYSTEM set resource_limit=FALSE;
- System altered.
- 1. Podłącz się do bazy jako administrator.
- [oracle@localhost ~]$ sqlplus
- SQL*Plus: Release 11.2.0.2.0 Production on Wed Apr 15 08:15:50 2015
- Copyright (c) 1982, 2010, Oracle. All rights reserved.
- Enter user-name: sys /as sysdba
- Enter password:
- Connected to:
- Oracle Database 11g Enterprise Edition Release 11.2.0.2.0 - Production
- With the Partitioning, OLAP, Data Mining and Real Application Testing options
- 2. Sprawdź, czy w systemie istnieje rola o nazwie hremployee. Jeśli tak, to ją usuń.
- SQL> select * from dba_roles where role='HREMPLOYEE';
- no rows selected
- 3. Sprawdź, czy w systemie istnieją użytkownicy o nazwach: smavris i NGREENBERG. Jeśli tak, to ich usuń.
- SQL> select * from all_users where username = 'SMARVIS';
- no rows selected
- SQL> select * from all_users where username = 'NGREENBERG';
- no rows selected
- 4. Utwórz rolę hremployee i nadaj jej przywilej do podłączania się do bazy.
- SQL> create role hremployee;
- Role created.
- SQL> grant create session to hremployee;
- Grant succeeded.
- 5. Nadaj roli przywileje select oraz update na tabeli employees w schemacie użytkownika hr
- SQL> grant select, update on hr.employees to hremployee;
- Grant succeeded.
- 6. Nadaj rolę hremployee identyfikowaną przez hasło oracle_4U użytkownikom SMARVIS oraz NGREENBERG. Zauważ, że polecenie grant spowoduje utworzenie nowego użytkownika (!).
- Przykład: grant hremployee to smavris identified by oracle_4U;
- SQL> grant hremployee to smarvis identified by oracle_4U;
- Grant succeeded.
- SQL> grant hremployee to ngreenberg identified by oracle_4u;
- Grant succeeded.
- 7. Podłącz się do bazy jako użytkownik NGREENBERG i zaktualizuj w tabeli hr.employees numer telefonu pracownikowi o numerze 110 (John Chen). Pozostaw w tym stanie sesję otwartą.
- SQL> update hr.employees set PHONE_NUMBER='111222333' where EMPLOYEE_ID=110;
- 1 row updated.
- 8. Otwórz nowe okienko terminala SQL*Plus. Jako administrator wykonaj polecenie uśpienia (w ten sposób będziesz pewien, że sesja NGREENBERG jako pierwsza uzyskała blokadę. Kod:
- begin
- sys.dbms_lock.sleep(20);
- end;
- /
- PL/SQL procedure successfully completed.
- 9. Poczekaj na koniec uśpienia i przeloguj się na użytkownika SMARVIS. Z jego sesji wykonaj taką samą aktualizację w tabeli użytkownicy (employee_id=110). Co zauważyłeś?
- Brak odpowiedzi serwera.
- 10. Za pomocą opcji Blocking Sessions Enterprise Managera, stwierdź, która sesja powoduje konflikt blokad (opcja Performance | Additional Monitoring Links | Blocking Sessions).
- NGREENBERG blokuje
- 11. Sprawdź, jakie polecenie spowodowało konflikt blokad. W tym celu Zaznacz sesję NGREENBERG i wybierze opcję View Session. Następnie kliknij link z wartością mieszania dla Previous SQL.
- polecenie update hr.employees....
- 12. Wróć do poprzedniego widoku i zabij sesję użytkownika NGREENBERG.
- Zabito sesję.
- 13. Powróć do sesji SQL*Plus dla użytkownika SMARVIS i zaobserwuj, co się zmieniło.
- 1 row updated.
- 14. Spróbuj w oknie sesji użytkownika NGREENBERG wykonać jakiekolwiek polecenie SQL. Co widzisz?
- ERROR at line 1:
- ORA-03135: connection lost contact
- Process ID: 3419
- Session ID: 51 Serial number: 53
- 15. Zamknij wszystkie sesje.
- Część 2 - Monitoring czynności użytkowników
- Opis: Stwierdziłeś "podejrzane" zmiany w tabeli HR.JOBS - maksymalne wynagrodzenia ulegają wahaniom w dziwny sposób. Jako administrator zdecydowałeś się na włączenie standardowego monitoringu poleceń DML na tej tabeli.
- 16. Uruchom Enterprise Managera i zaloguj się jako administrator z rolą SYSDBA. W zakładce Server wybierz opcję Audit Settings z sekcji Security.
- 17. Kliknij link DB z opcji Audit Trail, następnie zakładkę SPFile.
- 18. W pole Name wpisz audit i kliknij Go
- 19. Z listy parametrów wyświetlonych jako rezultaty przeszukiwania wybierz audit_trail i zmień jego wartość na XML. Obejrzyj kod SQL odpowiadający poleceniu poprzez wybranie opcji Show SQL - powrót za pomocą przycisku Return. Na stronie z parametrami wybierz opcję Apply.
- ALTER SYSTEM SET audit_trail = "XML" SCOPE=SPFILE
- 20. Zrestartuj bazę - czynność konieczna, gdyż zmienił się parametr statyczny bazy danych. Poczekaj, aż uruchomione zostaną wszystkie procesy i jeszcze raz zaloguj się do Enterprise Managera.
- emctl stop dbconsole
- emctl start dbconsole
- 21. W Audit Settings zakładki Server wybierz opcję Audite Objects, następnie Add.
- 22. Upewnij się, że wybranym typem obiektów jest Table, następnie wprowadź w polu Table field wartość HR.JOBS (lub użyj "latarki").
- 23. Przenieś czynności DELETE, INSERT oraz UPDATE za pomocą dwukrotnego kliknięcia z panelu lewego do prawego. Sprawdź odpowiadający kod SQL za pomocą opcji Show SQL. Kliknij OK, żeby aktywować audyt.
- AUDIT DELETE, INSERT, UPDATE ON HR.JOBS BY SESSION
- 24. Wykonaj kolejne czynności, aby sprawdzić później, czy audyt zadziałał.
- 25. Sprawdź, czy użytkownik audit_user istnieje, jeśli tak, to go usuń kaskadowo (na końcu należy podać opcję cascade)
- nie istnieje
- 26. Utwórz nowego użytkownika audit_user identyfikowanego przez hasło oracle_4U
- SQL> create user audit_user identified by oracle_4U;
- User created.
- 27. Nadaj użytkownikowi rolę connect oraz wszystkie przywileje (GRANT ALL) na tabeli hr.jobs
- SQL> grant connect to audit_user;
- Grant succeeded.
- SQL> grant all on hr.jobs to audit_user;
- Grant succeeded.
- 28. Podłącz się z sesji SQL*Plus jako audit_user i wykonaj kolejno polecenia: selekcji z tabeli hr.jobs, aktualizacji kolumny max_salary poprzez pomnożenie jej przez 10 (zatwierdź transakcję) i ponownej selekcji.
- SQL> select * from hr.jobs;
- JOB_ID JOB_TITLE MIN_SALARY MAX_SALARY
- ---------- ----------------------------------- ---------- ----------
- AD_PRES President 20000 40000
- AD_VP Administration Vice President 15000 30000
- AD_ASST Administration Assistant 3000 6000
- FI_MGR Finance Manager 8200 16000
- FI_ACCOUNT Accountant 4200 9000
- AC_MGR Accounting Manager 8200 16000
- AC_ACCOUNT Public Accountant 4200 9000
- SA_MAN Sales Manager 10000 20000
- SA_REP Sales Representative 6000 12000
- PU_MAN Purchasing Manager 8000 15000
- PU_CLERK Purchasing Clerk 2500 5500
- JOB_ID JOB_TITLE MIN_SALARY MAX_SALARY
- ---------- ----------------------------------- ---------- ----------
- ST_MAN Stock Manager 5500 8500
- ST_CLERK Stock Clerk 2000 5000
- SH_CLERK Shipping Clerk 2500 5500
- IT_PROG Programmer 4000 10000
- MK_MAN Marketing Manager 9000 15000
- MK_REP Marketing Representative 4000 9000
- HR_REP Human Resources Representative 4000 9000
- PR_REP Public Relations Representative 4500 10500
- 19 rows selected.
- SQL> update HR.JOBS set MAX_SALARY = MAX_SALARY/10 where JOB_ID = 'PR_REP';
- 1 row updated.
- 29. Przełącz się na użytkownika hr i wykonaj ponowną zmianę - podziel max_salary przez 10. Zatwierdź i sprawdź rezultat zmiany.
- SQL> update HR.JOBS set MAX_SALARY = MAX_SALARY/10 where JOB_ID = 'PR_REP';
- 1 row updated.
- SQL> select * from hr.jobs where job_id = 'PR_REP';
- JOB_ID JOB_TITLE MIN_SALARY MAX_SALARY
- ---------- ----------------------------------- ---------- ----------
- PR_REP Public Relations Representative 4500 10500
- 30. Przełącz się na administratora i usuń kaskadowo użytkownika audit_user
- SQL> drop user audit_user cascade;
- User dropped.
- 31. Poprzez Enterprise Managera sprawdź informacje o obiektach poddanych audytowi - zakładka Server | Audit Settings | Audited Objects. Uwaga dodatkowa: Czy z wyświetlonych informacji można wywnioskować, który użytkownik obniżył wynagrodzenie?
- Schema Object Name User Name Action Time (In Session's Time Zone)
- HR JOBS AUDIT_USER SESSION REC 2015-04-15 09:38:33.184661
- 32. Wycofaj wszystkie zmiany związane z ustawionym wcześniej audytem: w Audited Objects wejdź w schemat HR i kliknij Search, wybierz wszystkie trzy wiersze i kliknij Remove. Na stronie z potwierdzeniem kliknij Show SQL. Potwierdź YES.
- NOAUDIT DELETE ON HR.JOBS
- NOAUDIT INSERT ON HR.JOBS
- NOAUDIT UPDATE ON HR.JOBS
- 33. Na stronie Audit Settings wybierz XML. W zakładce SPFile strony Initialization Parameters wprowadź w pole nazwy do przeszukiwania audit i kliknij Go. Zmień nazwę parametru audit_trail na DB (tak było na początku), sprawdź kod SQL i zatwierdź zmiany.
- ALTER SYSTEM SET audit_trail = "DB" SCOPE=SPFILE
- 34. Zmienił się statyczny parametr inicjalizacyjny, czyli ... zrestartuj bazę danych.
- emctl stop dbconsole
- emctl start dbconsole
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement