This is a cheat sheet for Oracle 12C R2 workshop Part I
Will conver those topics:
- EM
- CBD
- PDB
- Network
- User Security
- Tablespaces
1 2 3 4
|
sqlplus / as sysdba SELECT dbms_xdb_config.gethttpsport() FROM dual; exec dbms_xdb_config.SetGlobalPortEnabled(TRUE);
|
CDB
1 2 3 4 5 6 7 8 9 10 11 12 13
|
SELECT name, cdb, con_id FROM v$database; SELECT name, con_id FROM v$containers ORDER BY con_id; SQL> SHOW pdbs; SELECT pdb_name, status FROM cdb_pdbs ORDER BY 1; SELECT DISTINCT username FROM cdb_users WHERE common ='YES' SELECT con_id, username FROM cdb_users;
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14
|
SELECT d.file#, ts.name, ts.ts#, ts.con_id FROM v$datafile d, v$tablespace ts WHERE d.ts#=ts.ts# AND d.con_id=ts.con_id; SELECT file_name, tablespace_name FROM cdb_data_files; SELECT file_name, tablespace_name FROM cdb_temp_files; SELECT group#, member, con_id FROM v$logfile; SELECT name, con_id FROM v$controlfile;
|
1 2 3 4 5
|
SELECT instance_name, status, con_id FROM v$instance; SELECT con_id, name FROM v$services ORDER BY 1;
|
PDB
1 2 3 4 5 6
|
SQL > ALTER SESSION SET CONTAINER = PDB1; SQL > ALTER SESSION SET CONTAINER = CDB$ROOT; ALTER PLUGGABLE DATABASE PDB1 OPEN;
|
Create
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
|
$ mkdir $ORACLE_BASE/oradata/ORCL/PDB2 $ sqlplus / as sysdba CREATE PLUGGABLE DATABASE PDB2 ADMIN USER PDB2ADMIN IDENTIFIED BY <password> ROLES=(dba) DEFAULT TABLESPACE USERS DATAFILE '/u01/app/oracle/oradata/ORCL/PDB2/users01.dbf' SIZE 250M AUTOEXTEND ON FILE_NAME_CONVERT=('/u01/app/oracle/oradata/ORCL/pdbseed/', '/u01/app/oracle/oradata/ORCL/PDB2/'); ALTER PLUGGABLE DATABASE PDB2 OPEN; SQL> SELECT name FROM v$services;
|
Clone
1 2 3 4 5
|
mkdir $ORACLE_BASE/oradata/ORCL/PDB3 sqlplus / as sysdba CREATE PLUGGABLE DATABASE PDB3 FROM PDB1 CREATE_FILE_DEST= '/u01/app/oracle/oradata/ORCL/PDB3'; ALTER PLUGGABLE DATABASE PDB3 OPEN;
|
Unplugging and Plugging a PDB
Unplugging
1 2 3 4 5
|
ALTER PLUGGABLE DATABASE PDB3 CLOSE IMMEDIATE; ALTER PLUGGABLE DATABASE PDB3 UNPLUG INTO '/u01/app/oracle/oradata/PDB3.xml'; DROP PLUGGABLE DATABASE PDB3 KEEP DATAFILES;
|
check compatiable
1 2 3 4 5 6 7 8 9 10 11 12 13
|
SQL> set serveroutput on DECLARE compatible BOOLEAN := FALSE; BEGIN compatible := DBMS_PDB.CHECK_PLUG_COMPATIBILITY( pdb_descr_file => '/u01/app/oracle/oradata/PDB3.xml'); if compatible then DBMS_OUTPUT.PUT_LINE('PDB3 is compatible'); else DBMS_OUTPUT.PUT_LINE('PDB3 is not compatible'); end if; END; /
|
Plugging
1
|
CREATE PLUGGABLE DATABASE HRPDB USING '/u01/app/oracle/oradata/PDB3.xml' NOCOPY TEMPFILE REUSE;
|
Drop
1 2
|
ALTER PLUGGABLE DATABASE HRPDB CLOSE; DROP PLUGGABLE DATABASE HRPDB INCLUDING DATAFILES;
|
Database Instance
Lifecycle
1 2 3 4 5 6 7 8
|
SHUTDOWN SHUTDOWN ABORT SHUTDOWN IMMEDIATE STARTUP NOMOUNT; ALTER DATABASE MOUNT; ALTER DATABASE OPEN; ALTER PLUGGABLE DATABASE pdb1 OPEN;
|
spfile/pfile
Load order:
- spfile
- pfile
1 2 3 4 5 6 7 8 9
|
SHOW PARAMETER spfile CREATE PFILE = 'initORCL.ora' FROM SPFILE; SHOW PARAMETER spfile
|
View parameters:
- V$PARAMETER
- V$SPPARAMETER
- V$PARAMETER2
- V$SYSTEM_PARAMETER
1 2 3 4 5 6 7 8 9 10 11 12 13 14
|
SHOW PARAMETER db_name SHOW PARAMETER db_domain SHOW PARAMETER db_recovery_file_dest SHOW PARAMETER sga SHOW PARAMETER undo_tablespace SHOW PARAMETER compatible SHOW PARAMETER control_files SHOW PARAMETER shared_pool_size SHOW PARAMETER db_block_size SHOW PARAMETER db_cache_size SHOW PARAMETER undo_management SHOW PARAMETER memory_target SHOW PARAMETER memory_max_target SHOW PARAMETER pga_aggregate_target
|
Update
1 2 3 4 5
|
ALTER SESSION SET nls_date_format = 'mon dd yyyy'; ALTER SYSTEM SET job_queue_processes=15 SCOPE=BOTH;
|
Diagnostic
1
|
SELECT name, value FROM v$diag_info;
|
adrci
1 2 3 4 5 6 7 8 9 10 11 12 13 14
|
$ adrci adrci> SHOW ALERT adrci> SET HOMEPATH diag/rdbms/orcl/ORCL adrci> SELECT sizep_policy FROM adr_control_aux; adrci> SET CONTROL (SIZEP_POLICY = 200000000) adrci> SELECT sizep_policy FROM adr_control_aux; adrci> PURGE -size 5000000
|
Log DDL
Target file: /u01/app/oracle/diag/rdbms/orcl/ORCL/log/ddl_ORCL.log
1 2 3 4 5
|
SQL> SHOW PARAMETER enable_ddl_logging SQL> ALTER SESSION SET enable_ddl_logging = TRUE;
|
Networking
Two files:
- listeners.ora: lnsrctl used
- tnsnames.ora: Network configuration file.
- /u01/app/oracle/product/12.2.0/dbhome_1/network/admin/tnsnames.ora
1 2 3 4
|
SQL> SHOW PARAMETER INSTANCE_NAME SQL> SHOW PARAMETER SERVICE_NAMES SQL> SHOW PARAMETER LOCAL_LISTENER SQL> SHOW PARAMETER REMOTE_LISTENER
|
lsnrctl
1 2 3 4 5
|
lsnrctl LSNRCTL> show current_listener LSNRCTL> status LSNRCTL> services
|
Dynamic Listener
create a listener, named LISTENER2, that listens on the non-default port 1561 for all database
services
1 2 3 4 5 6
|
LISTENER2 = (ADDRESS = (PROTOCOL = TCP)(HOST = 12cr2db.example.com)(PORT = 1561)) LISTENER_ORCL = (ADDRESS = (PROTOCOL = TCP)(HOST = 12cr2db.example.com )(PORT = 1521))
|
1 2 3 4 5 6
|
LISTENER2 = (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = 12cr2db.example.com)(PORT = 1561)) ) ADR_BASE_LISTENER2 = /u01/app/oracle
|
1 2 3 4 5 6
|
SQL> SHOW PARAMETER local_listener SQL> SELECT isses_modifiable, issys_modifiable FROM v$parameter WHERE name='local_listener'; SQL> ALTER SYSTEM SET local_listener="LISTENER_ORCL,LISTENER2" SCOPE=BOTH; LSNRCTL> start LISTENER2
|
Static Listener for a PDB
create a listener named LISTENER_PDB1 that listens on the non-default port 1562 for the
PDB1.example.com service
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
|
LISTENER_PDB1 = (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = 12cr2db.example.com)(PORT = 1562)) ) SID_LIST_LISTENER_PDB1 = (SID_LIST = (SID_DESC = (GLOBAL_DBNAME = PDB1.example.com) (SID_NAME = ORCL) (ORACLE_HOME = /u01/app/oracle/product/12.2.0/dbhome_1) ) ) lsnrctl LSNRCTL> start LISTENER_PDB1
|
TNS name
$ORACLE_HOME/network/admin/tnsnames.ora
1 2 3 4 5 6 7 8 9 10 11
|
MYPDB1 = (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = 12cr2db.example.com)(PORT = 1521)) ) (CONNECT_DATA = (SERVICE_NAME = PDB1.example.com ) ) ) tnsping MyPDB1
|
Privilege
Query
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
|
SELECT DISTINCT username FROM dba_users WHERE common='YES' SELECT DISTINCT username FROM dba_users WHERE common='NO'; select * from session_privs; SELECT * FROM session_roles; SELECT * FROM dba_sys_privs WHERE grantee='PDBADMIN'; SELECT granted_role, admin_option, default_role FROM cdb_role_privs WHERE grantee='PDBADMIN'; SELECT resource_type, resource_name, limit FROM dba_profiles WHERE profile='HRPROFILE';
|
User
1 2 3 4 5 6 7 8 9
|
CREATE USER c##CDB_ADMIN1 IDENTIFIED BY <password> CONTAINER=ALL DEFAULT TABLESPACE users TEMPORARY TABLESPACE temp ACCOUNT UNLOCK; CREATE USER INVENTORY IDENTIFIED BY <password> DEFAULT TABLESPACE users QUOTA UNLIMITED ON users; GRANT CREATE SESSION, dba, sysdba TO c##CDB_ADMIN1 CONTAINER=ALL; GRANT CREATE SESSION TO INVENTORY;
|
Role
1 2 3 4 5 6 7 8 9 10
|
GRANT DBA TO PDBADMIN; create role "HRCLERK" NOT IDENTIFIED; grant UPDATE on 'HR'.'EMPLOYEES' to 'HRCLERK'; grant SELECT on 'HR'.'EMPLOYEES' to 'HRCLERK'; ALTER USER JGOODMAN DEFAULT ROLE HRCLERK;
|
Profile
1 2 3 4 5 6 7 8 9 10 11
|
create profile 'HRPROFILE' limit cpu_per_session UNLIMITED cpu_per_call UNLIMITED connect_time UNLIMITED idle_time 60 sessions_per_user UNLIMITED password_life_time UNLIMITED ... ALTER PROFILE hrprofile LIMIT INACTIVE_ACCOUNT_TIME 10;
|
Audit Policy
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
|
SELECT * FROM v$option WHERE parameter = 'Unified Auditing'; CREATE AUDIT POLICY drop_pol PRIVILEGES DROP ANY TABLE; SELECT entity_name, entity_type, enabled_option FROM audit_unified_enabled_policies WHERE policy_name = 'DROP_POL'; SELECT dbusername, action_name, object_name FROM unified_audit_trail WHERE dbusername = 'PDBADMIN' AND action_name = 'DROP TABLE' NOAUDIT POLICY drop_pol BY USERS WITH GRANTED ROLES dba; DROP AUDIT POLICY drop_pol;
|
Tablespace
Dictionary
Tablespace information:
- DBA_TABLESPACES
- V$TABLESPACE
Data file information:
- DBA_DATA_FILES
- V$DATAFILE
Temp file information:
- DBA_TEMP_FILES
- V$TEMPFILE
Tables in a tablespace:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
|
SELECT DISTINCT tablespace_name FROM dba_tablespaces; SELECT DISTINCT tablespace_name FROM all_tables WHERE owner='HR'; SELECT table_name FROM all_tables WHERE tablespace_name='INVENTORY'; SELECT status, contents, logging, plugged_in, bigfile, extent_management, allocation_type FROM dba_tablespaces where tablespace_name='SYSAUX'; SELECT * FROM v$tablespace WHERE name='SYSAUX'; SELECT file_name, autoextensible, bytes, maxbytes, user_bytes FROM dba_data_files WHERE tablespace_name='SYSAUX'; SELECT index_name FROM all_indexes WHERE tablespace_name='SYSAUX' AND owner='HR';
|
Maintain
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
|
CREATE SMALLFILE TABLESPACE INVENTORY DATAFILE '/u01/app/oracle/oradata/ORCL/PDB1/INVENTORY01.DBF' SIZE 5242880 DEFAULT NOCOMPRESS ONLINE SEGMENT SPACE MANAGEMENT AUTO EXTENT MANAGEMENT LOCAL AUTOALLOCATE; ALTER DATABASE DATAFILE '/u01/app/oracle/oradata/ORCL/PDB1/INVENTORY01.DBF' RESIZE 40M; ALTER TABLESPACE "INVENTORY" ADD DATAFILE '/u01/app/oracle/oradata/ORCL/PDB1/INVENTORY02.DBF' SIZE 30M AUTOEXTEND OFF; ALTER DATABASE MOVE DATAFILE '/disk1/myexample01.dbf' TO '/disk2/myexample01.dbf'; ALTER DATABASE MOVE DATAFILE '/disk1/myexample01.dbf' TO '/disk1/myexample02.dbf'; DROP TABLESPACE inventory INCLUDING CONTENTS AND DATAFILES;
|
近期评论