Create new profile P_UNLIMIT#
This profile P_UNLIMIT has all value set to unlimit and will temporary be used for account managements.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
|
CREATE PROFILE "P_UNLIMIT"
LIMIT
COMPOSITE_LIMIT UNLIMITED
SESSIONS_PER_USER UNLIMITED
CPU_PER_SESSION UNLIMITED
CPU_PER_CALL UNLIMITED
LOGICAL_READS_PER_SESSION UNLIMITED
LOGICAL_READS_PER_CALL UNLIMITED
IDLE_TIME UNLIMITED
CONNECT_TIME UNLIMITED
PRIVATE_SGA UNLIMITED
FAILED_LOGIN_ATTEMPTS UNLIMITED
PASSWORD_LIFE_TIME UNLIMITED
PASSWORD_REUSE_TIME UNLIMITED
PASSWORD_REUSE_MAX UNLIMITED
PASSWORD_VERIFY_FUNCTION NULL
PASSWORD_LOCK_TIME UNLIMITED
PASSWORD_GRACE_TIME UNLIMITED ;
|
Unlock account oradba#
Unlock account oradba and set profile to P_ADMIN.
1
2
3
4
|
alter user oradba identified by "Sky_Wa1ker"
profile P_ADMIN account unlock ;
grant sysdba to oradba container = ALL;
|
Create new user oradba in CDB#
Set profile to P_ADMIN and grant CREATE SESSION, SYSDBA.
1
2
3
4
5
6
7
8
|
CREATE USER ORADBA
PROFILE "P_ADMIN"
IDENTIFIED BY "Sky_Wa1ker"
ACCOUNT UNLOCK CONTAINER=ALL ;
GRANT CREATE SESSION TO ORADBA CONTAINER=ALL ;
GRANT SYSDBA TO ORADBA WITH ADMIN OPTION CONTAINER=ALL ;
ALTER USER ORADBA SET CONTAINER_DATA=DEFAULT CONTAINER=CURRENT ;
|
Create new user oradba in NonCDB#
Set profile to P_ADMIN and grant CONNECT, CREATE SESSION, SYSDBA and UNLIMITED TABLESPACE.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
|
CREATE USER ORADBA
IDENTIFIED BY "Sky_Wa1ker"
DEFAULT TABLESPACE USERS
TEMPORARY TABLESPACE TEMP
PROFILE DEFAULT
ACCOUNT UNLOCK;
GRANT CONNECT TO ORADBA;
GRANT CREATE SESSION TO ORADBA;
GRANT DBA TO ORADBA;
GRANT SYSDBA TO ORADBA;
ALTER USER ORADBA DEFAULT ROLE ALL;
GRANT UNLIMITED TABLESPACE TO ORADBA;
ALTER USER ORADBA PROFILE P_ADMIN;
|
Set new password for user ORADBA with profile P_ADMIN#
To be able to change password for user ORADBA the profile will be temporary change to P_UNLIMIT and back to P_ADMIN.
1
2
3
4
5
6
7
8
9
10
11
|
-- Change profile from ADMIN_USER to P_UNLIMIT
alter user oradba profile P_UNLIMIT;
-- Unlock account
alter user oradba account unlock;
-- Set new password
alter user oradba identified by "&Password" account unlock;
-- Set back profile to P_ADMIN
alter user oradba profile P_ADMIN;
|
Set account user and password#
1
|
alter user &username identified by "&passwd" account unlock;
|
Create New PDB User USR01#
This is an exampel of create new user USR01 with own tablespace USR01_TS for test.
Using server srvdb01, CDB CDB01 and PDB PDB01.
Connect to PDB PDB01#
1
2
|
sqlplus / as sysdba
alter session set container = PDB01;
|
Check existing tablespace and datafiles#
Purpose is to find datafiles storage location before creating the new tablespace.
First check if init parameter is set for db_create_file_dest.
1
2
3
|
SELECT name, value
FROM v$parameter
WHERE name IN ('db_create_file_dest', 'db_create_online_log_dest_1', 'db_recovery_file_dest');
|
If parameter db_create_file_dest is not set use SQL query below to check other tablespace and the datafiles location.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
|
set line 160 pagesize 999 tab off
col "Tablespace" format a15
col "Filename" format a60
select
TABLESPACE_NAME "Tablespace",
STATUS "Status",
BYTES/1024/1024 "Size MB",
round(MAXBYTES/1024/1024,0) "Max Size MB",
ONLINE_STATUS "Online",
AUTOEXTENSIBLE "AutoExt",
FILE_ID,
FILE_NAME "Filename"
from
dba_data_files
order by tablespace_name ;
|
Output#
The datafile storage location is /u02/oradata/CDB01/PDB01/.
1
2
3
4
5
6
|
Tablespace Status Size MB Max Size MB Online Aut FILE_ID Filename
--------------- --------- ---------- ----------- ------- --- ---------- ------------------------------------------------------------
SYSAUX AVAILABLE 235 33554432 ONLINE YES 9 /u02/oradata/CDB01/PDB01/sysaux01.dbf
SYSTEM AVAILABLE 240 33554432 SYSTEM YES 8 /u02/oradata/CDB01/PDB01/system01.dbf
UNDOTBS1 AVAILABLE 325 33554432 ONLINE YES 10 /u02/oradata/CDB01/PDB01/undotbs01.dbf
USERS AVAILABLE 5 32768 ONLINE YES 11 /u02/oradata/CDB01/PDB01/users01.dbf
|
Create new tablespace USR01_TS#
1
2
3
4
5
|
CREATE TABLESPACE USR01_TS
DATAFILE '/u02/oradata/CDB01/PDB01/USERS01.DBF' SIZE 100M
REUSE AUTOEXTEND ON NEXT 10M MAXSIZE 10G
EXTENT MANAGEMENT LOCAL
SEGMENT SPACE MANAGEMENT AUTO;
|
Re-create tablespace USR01_TS#
If you need to re-create the tablespace again use the DDL below.
1
|
drop tablespace USR01_TS including contents and datafiles;
|
Create new user USR01#
1
2
3
4
5
|
CREATE USER usr01 IDENTIFIED BY "Sky_Wa1ker"
DEFAULT TABLESPACE USR01_TS
TEMPORARY TABLESPACE temp;
ALTER USER USR01 QUOTA 10G ON USR01_TS;
|
To Drop User USR01 If Needed Use#
1
|
drop user USR01 cascade;
|
Grant necessary privileges#
Exampel of usefull privileges.
1
2
3
4
5
6
7
8
|
GRANT CREATE SESSION TO usr01;
GRANT CREATE TABLE TO usr01;
GRANT CREATE SEQUENCE TO usr01;
GRANT CREATE PROCEDURE TO usr01;
GRANT CREATE TRIGGER TO usr01;
GRANT CREATE VIEW TO usr01;
GRANT CREATE TYPE TO usr01;
GRANT CREATE SYNONYM TO usr01;
|
Create Test Table USR_TEST_TBL with data#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
|
CREATE TABLE "USR01"."USR_TEST_TBL"
(
"NAME" VARCHAR2(80 BYTE) NOT NULL ENABLE,
"CREATE_DATE" DATE NOT NULL ENABLE
)
TABLESPACE "USR01_TS" ;
COMMENT ON COLUMN "USR01"."USR_TEST_TBL"."NAME" IS 'User Name';
COMMENT ON COLUMN "USR01"."USR_TEST_TBL"."CREATE_DATE" IS 'Record Create Date';
INSERT INTO usr_test_tbl ( name, create_date ) VALUES ( 'Donald Duck', to_date('2025-04-03 19:23:22', 'YYYY-MM-DD HH24:MI:SS'));
INSERT INTO usr_test_tbl ( name, create_date ) VALUES ( 'Donald Trump', to_date('2025-04-03 19:24:24', 'YYYY-MM-DD HH24:MI:SS'));
INSERT INTO usr_test_tbl ( name, create_date ) VALUES ( 'Don Carry', to_date('2025-04-03 20:14:34', 'YYYY-MM-DD HH24:MI:SS'));
COMMIT;
|
Test connect to user usr01 from sqlplus#
Use JDBC connection string with Oracle Sqldeveloper, use custom JDBC URL.
1
|
jdbc:oracle:thin:@(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=srvdb01.home.loc)(PORT=1521))(CONNECT_DATA=(SERVER=DEDICATED)(SERVICE_NAME=PDB01)))
|
Connect to PDB01 user usr01.
Note! Run one line at time, do not copy and paste all lines since it fails.
1
2
3
4
5
6
|
$ sqlplus /nolog
connect usr01@PDB01
set line 132 pagesize 999 tab off feedback off
show con_name
show user
|
Select Test Table USR_TEST_TBL#
1
2
3
4
|
col name format a15
col create_date format a19
SELECT name, to_char(create_date, 'YYYY-MM-DD HH24:MI:SS') as create_date FROM usr_test_tbl;
|
SQL Output#
1
2
3
4
5
|
NAME CREATE_DATE
--------------- -------------------
Donald Duck 2025-04-03 19:23:22
Donald Trump 2025-04-03 19:24:24
Don Carry 2025-04-03 20:14:34
|
Get user account key value#
1
2
3
4
5
6
7
8
9
10
|
alter session set container = PDB01;
set line 300 pagesize 999 tab off
-- SQL Query 1
with t as
( select TO_CHAR(dbms_metadata.get_ddl('USER','&Username')) ddl from dual )
select replace(substr(ddl,1,instr(ddl,'DEFAULT')-1),'CREATE','ALTER') || ';' from t;
-- SQL Quert 2
select name || '=> ' || spare4 from sys.user$ where name = '&username' ;
|
SQL Output 1#
1
2
3
4
5
|
REPLACE(SUBSTR(DDL,1,INSTR(DDL,'DEFAULT')-1),'CREATE','ALTER')||';'
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
ALTER USER "SCOTT" IDENTIFIED BY VALUES 'S:E6D0625412D2CBC0F39895BAE3E42430B1216459DE6044F9F88F38187D12;T:42FDA59872753D5F9D9C5214BAC407CABB05B46E7696D3E8F73E6752B4431019D52A492B9FB0170832500482DA7C982053AAFA34B5C1DC4BD8E8211595DB4EF9AD120363491A029732485E70F83E93C8'
;
|
SQL Output 2#
1
2
3
4
|
NAME||'=>'||SPARE4
------------------------------------------------------------------------------------------------------------------------------------------------------
SCOTT=> S:E6D0625412D2CBC0F39895BAE3E42430B1216459DE6044F9F88F38187D12;T:42FDA59872753D5F9D9C5214BAC407CABB05B46E7696D3E8F73E6752B4431019D52A492B9FB01
70832500482DA7C982053AAFA34B5C1DC4BD8E8211595DB4EF9AD120363491A029732485E70F83E93C8
|