* [[https://oracle-base.com/articles/misc/os-authentication|Create external user (using OPS$)]]
* [[Create User like...]]
==== Users created when installing Oracle 11.2.0.4 Standard Edition ====
select username from dba_users order by 1;
USERNAME
------------------------------
ANONYMOUS
APEX_030200
APEX_PUBLIC_USER
APPQOSSYS
CTXSYS
DBSNMP
DIP
EXFSYS
FLOWS_FILES
MDSYS
MGMT_VIEW
ORACLE_OCM
ORDDATA
ORDPLUGINS
ORDSYS
OUTLN
OWBSYS
OWBSYS_AUDIT
SI_INFORMTN_SCHEMA
SYS
SYSMAN
SYSTEM
WMSYS
XDB
XS$NULL
25 rows selected.
==== Users created when installing Oracle 11.2.0.4 Enterprise Edition ====
select username from dba_users order by 1;
USERNAME
------------------------------
ANONYMOUS
APEX_030200
APEX_PUBLIC_USER
APPQOSSYS
CTXSYS
DBSNMP
DIP
EXFSYS
FLOWS_FILES
MDDATA
MDSYS
MGMT_VIEW
OLAPSYS
ORACLE_OCM
ORDDATA
ORDPLUGINS
ORDSYS
OUTLN
OWBSYS
OWBSYS_AUDIT
SI_INFORMTN_SCHEMA
SPATIAL_CSW_ADMIN_USR
SPATIAL_WFS_ADMIN_USR
SYS
SYSMAN
SYSTEM
WMSYS
XDB
XS$NULL
29 rows selected.
==== Show list of database users and their roles / privileges ====
select
lpad(' ', 2*level) || granted_role "User, his roles and privileges"
from
(
/* THE USERS */
select
null grantee,
username granted_role
from
dba_users
/* THE ROLES TO ROLES RELATIONS */
union
select
grantee,
granted_role
from
dba_role_privs
/* THE ROLES TO PRIVILEGE RELATIONS */
union
select
grantee,
privilege
from
dba_sys_privs
)
start with grantee is null
connect by grantee = prior granted_role;
==== Rename an Oracle schema without exporting and importing all schema data ====
If the user is very large, it can take a very long time to use the standard way expdp / impdp.\\
It can be done more efficiently using transportable tablespaces technique to remap the schema.
* [[https://pierreforstmanndotcom.wordpress.com/2015/02/27/how-to-rename-an-oracle-schema-without-exporting-and-importing-all-schema-data/|Rename an Oracle Schema using Transportable Tablespace]]
Basic steps
* check with DBMS_TTS.TRANSPORT_SET_CHECK that tablespace can be transported
* Make the tablespace read only
* Export tablespace metadata
* Drop the tablespace but keep its datafiles
* Create the new user account representing the renamed schema and grant needed privileges
* Import tablespace metadata and rename schema objects owner at the same time
* Make tablespce read write
* Set password for new user account and set default tablespace for this new account
* Drop old user account representing the schema before renaming
==== Rename an Oracle schema using Rodrigo Jorge's clever method ====
Essentially performs a network datapump from PL/SQL using a database link back to the same database so no intermediate dump file is necessary.
* https://www.dbarj.com.br/en/2014/11/rename-schema-oracle-11g-loopback-dblink/
=== Unsupported way (Oracle have closed this loophole as of 19.9!) ===
An unsupported workaround to rename a schema is to simply update the username in sys.user$ and restart the database.
select user# from sys.user$ where name = 'EPK';
USER_ID
----------
172
update sys.user$ set name = 'KPK' where user# = 172;
1 row updated.
==== Create external user ====
=== Check the authentification prefix ===
SQL> show parameter authent
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
os_authent_prefix string ops$
SQL>
=== On Unix... ===
create user ops$oracle identified externally;
grant create session to ops$oracle;
=== On Windows... ===
Watch out on Windows - the domain name needs to be included!
create user "ops$domainname.com\\oracle" identified externally;
grant create session to "ops$domainname.com\\oracle";
Additionally, the following option must be set in "%ORACLE_HOME%\
etwork\\admin\\sqlnet.ora"\\
If this is not present, you will not be able to connect as sysdba
SQLNET.AUTHENTICATION_SERVICES=(NTS)